Installation

Embedding single WeBWorK problems in HTML pages - Error 404

Embedding single WeBWorK problems in HTML pages - Error 404

by Julie Tremblay -
Number of replies: 1

Hi, i spent a couple of hours trying to find the solution to my problem. I'm trying to embed a WeBWorK problem to an html page in Moodle. I activated $UNIT_TESTS_ON in WebworkWebService.pm, RenderProblem.pm and instructorXMLHandler.pm and here's what a get in my apache log :

WebworkClient.pm 284 xmlrpcCall sent to https://webwork.ccdmd.qc.ca
WebworkClient.pm 285 xmlrpcCall issued with command renderProblem
[Wed Jun 03 17:33:34.214105 2020] [perl:warn] [pid 18713] [client 104.163.157.160:55415] [/webwork2/html2xml] Use of uninitialized value in join or string at /opt/webwork/webwork2/lib/WebworkClient.pm line 286., referer: https://moodle.cegepsherbrooke.qc.ca/mod/page/view.php?id=36403&forceview=1
[Wed Jun 03 17:33:34.214145 2020] [perl:warn] [pid 18713] [client 104.163.157.160:55415] [/webwork2/html2xml] Use of uninitialized value in join or string at /opt/webwork/webwork2/lib/WebworkClient.pm line 286., referer: https://moodle.cegepsherbrooke.qc.ca/mod/page/view.php?id=36403&forceview=1
WebworkClient.pm 286 input is: mode  userID ebidon language fr course  problemSeed 1234 problem_state HASH(0x5578d58c0bc0) answersSubmitted 0 envir HASH(0x5578ce7f7f50) command renderProblem outputformat simple displayMode MathJax extra_packages_to_load ARRAY(0x5578ce34c868) courseID test_JTremblay library_name Library modules_to_evaluate ARRAY(0x5578d4d48580) source  sourceFilePath BPL/BdeB/CDI-Notions_prealables-03Factorisation/3-1-01_MES.pg course_password ebidon answer_form_submitted 1
WebworkClient.pm 287 xmlrpcCall renderProblem initiated webwork webservice object XMLRPC::Lite=HASH(0x5578cf502d40)
WebworkWebservice.pl 233 site_password  is Use of uninitialized value in print at /opt/webwork/webwork2/lib/WebworkWebservice.pm line 233.

WebworkWebservice.pl 234 course_password  is ebidon
WebworkWebservice.pl 235 courseID  is test_JTremblay
WebworkWebservice.pl 236 userID  is ebidon
WebworkWebservice.pl 237 session_key  is Use of uninitialized value in print at /opt/webwork/webwork2/lib/WebworkWebservice.pm line 237.

WebworkWebservice.pm 262 initiate data:
  class type is WebworkXMLRPC
Self has type WebworkXMLRPC
self has data:
 courseName=>test_JTremblay  fake_r=>WeBWorK::FakeRequest=HASH(0x5578d5b7c668)  password=>ebidon  session_key=>--
   user_id=>ebidon
authen has type WeBWorK::Authen::XMLRPC
authz  has type WeBWorK::Authz
Error message for command: renderProblem
<br/>faultcode: 404
<br/>faultstring: WebworkWebservice: Can't authenticate -- session may have timed out.
<br/>End error message<br/

Here's what I have done and check so far :
  • My server_root_url is set to  https://webwork.ccdmd.qc.ca
  • I'm running on WeBWorK 2.13 version
  • I copied a session_key in the html code that was active for my ebidon user and everything work correctly. So the problem seems to be that my server cannot add a session key with xmlrpc.
  • I checked my perl modules and everything seems to be installed correctly when I run the script check_module.
  • But, i suspect something is wrong with my Apache::XMLRPC::Lite module. I tried to install it using CPAN and it failed to install or update? It say's "skipped: 500 Can't connect to localhost:443" in a couple of lines.
  • My version of perl is 5.18.2
Any idea to what is the problem?

Thank you! 
In reply to Julie Tremblay

Re: Embedding single WeBWorK problems in HTML pages - Error 404

by Nathan Wallach -
It would help to see the HTML code you are using to try to do the embedding.

I do not think that the regular embedding method makes use of a provided session key (though it should apparently be creating a session_key after the course_password authentication worked). It is intended to work using the fixed user/password provided in the settings, and all users of the HTML page would be treated as the same "daemon" user. See: http://michaelgage.blogspot.com/2015/06/whether-writing-full-text-book-or-just.html

I have beta code for using embedding together with LTI (and grade pass-back) in a PR to make the code public. https://github.com/openwebwork/webwork2/pull/1090 That approach links the connection to the specific user of the LMS, will create a session key, and has a very initial method of recording answers in the WW database. You can take a look and experiment with it.

Some notes about html2xml + UTF-8