openwebwork / webwork2

Course management front end for WeBWorK
http://webwork.maa.org/wiki/Main_Page
Other
144 stars 165 forks source link

utf-8 issues with sendXMLRPC.pl #1107

Closed mgage closed 8 months ago

mgage commented 4 years ago

some of the changes which encode utf8 strings as bytes (and then decode them) seem to have left sendXMLRPC behind. Here is the issue:

I believe the basic issue is that in the upgrade that handled wide characters the corresponding fixes to sendXMLRPC.pl were not made. I’m having trouble getting the right fix (just the right amount of encoding/decoding). There is a slightly larger issue that if I’m having trouble keeping things balanced perhaps the basic scheme can be rethought so that it is less fragile. Let’s put that thought on hold for now and just deal with the immediate problem. Here it is:


experiment 1

DOCUMENT();        # This should be the first executable line in the problem.

loadMacros(
  "PGstandard.pl",
  "MathObjects.pl",
  "parserPopUp.pl"
);

SET_PROBLEM_TEXTDIRECTION("rtl");
SET_PROBLEM_LANGUAGE("he-IL");

TEXT(beginproblem());

Context("Numeric");

$popup1 = PopUp(['נכון', 'לא נכון','foobar' ], 'נכון');

BEGIN_TEXT
This is a test popup menu. \(\int x^2 dx \)$PAR
\{$popup1->menu\}

END_TEXT

ANS($popup1->cmp);

ENDDOCUMENT();        # This should be the last executable line in the problem.

perl sendXMLRPC -bB t/xmlrpc_utf8_fix.pg you get two reponses in the browser window -- the first is the rendering of the original problem and the second is the problem with answers supplied by mining the 'correct answers' returned by the original rendering.

————————

can you verify this with this version of the repos (or any other)?

taniwallach commented 4 years ago

Summary

I did some pretty careful (but not exhaustive) testing.

I think the only issue causing the errors you encountered are related to having an unpatched (standard) version of Lite.pm in the two places it is used from in these tests using sendXMLRPC.pl:

  1. The version inside your docker container - used by the server processing the call, which is the cause of the trouble in the "first" rendering when answers are submitted.
  2. The version on your local hard disk. When you run sendXMLRPC.pl -B from the local command line - it will make use of the local version of Lite.pm to create the XML structure being send to the server for processing. When there is Hebrew in the answers thr -B switch forces the code to process - the bug hits.

As discussed in https://github.com/openwebwork/webwork2/issues/967#issuecomment-523941959 the solution to these issues is to locally patch Lite.pm so it treats UTF-8 encoded text as text (and not as binary data to be base64 encoded). Unfortunately, the underlying Perl XMLRPC packages is not being maintained (for quite a long time) so this patch is apparently not going to get into the default package on OSes or CPAN in the foreseeable future.


Conclusions

Based on the results of the tests below, I think that at present, we do not need to change any WW code. What is needed is for suitable instructions:

  1. The WW install instructions should instruct admins to patch Lite.pm on their servers (or inside their Docker image or mount the fixed file into their Docker container)
  2. The documentation about using sendXMLRPC.pl and about setting up the deamon_course should explain that local use of sendXMLRPC.pl requires patching the local copy of Lite.pm.

We also should probably provide the patched Lite.pm inside webwork2/docker-config/ and mount it automatically using the standard docker-compose.yml provided. I had suggested that already in https://github.com/openwebwork/webwork2/issues/967#issuecomment-523942985 .


Test with patched Lite.pm only on the server side (test 1)

I already had the modified version of Lite.pm mounted via docker-compose.yml as suggested in https://github.com/openwebwork/webwork2/issues/967#issuecomment-523941959 so I first tested running the first part of the experiment using just the patched Lite.pm inside Docker and while the PC version (/usr/share/perl5/XMLRPC/Lite.pm) is not patched:

Note: Since https://github.com/openwebwork/webwork2/issues/967 is an issue and not a pull request, making the patch needed to Lite.pm is something to be done by hand.

experiment 1

  • Using develop branch on origin

    • sha: a4f0a6a just after merge of new spanish .po. May 7, 2020 at 9:09 AM
    • Includes PR #967 which modified Soaplite to not encode into base64 (line 55 of XMLRPC/Lite.pm
    • The test file I use is this one (less t/xmlrpc_utf8_fix.pg):
  • with the command

perl sendXMLRPC -bB t/xmlrpc_utf8_fix.pg you get two reponses in the browser window -- the first is the rendering of the original problem and the second is the problem with answers supplied by mining the 'correct answers' returned by the original rendering.

  • the first rendering appears fine.

    • submitting the first rendering (with one of the hebrew answers)using the browser "show correct answer" button returns Wide character in subroutine entry at /Volumes/WW_test/opt/local/lib/perl5/vendor_perl/5.12.3/XMLRPC/Lite.pm line 181.

so I ran

perl clients/sendXMLRPC.pl -b t/xmlrpc_utf8_fix.pg

from my webwork2/clients directory. There is a pink warning sections shown but no real warnings are there.

I then submitted an answer, and did not get any error about a Wide character in subroutine.

This seems to indicate that patching the version of Lite.pm in the Docker container should prevent the error you saw when submitting an answer in the -b first rendering. Moreover, using the unpatched version of Lite.pm instead was tested and shown to trigger that warning message.

@mgage - on your PC the file used inside Docker seems to be at /Volumes/WW_test/opt/local/lib/perl5/vendor_perl/5.12.3/XMLRPC/Lite.pm


Test with patched Lite.pm only on the server side (test 2)

Next I ran the second part (alone) still when the local PC version of Lite.pm is unpatched.

On the command line, I get an error response:

perl sendXMLRPC.pl -B t/xmlrpc_utf8_fix.pg 

home directory .
There were a lot of errors
Errors: 
 Wide character in subroutine entry at /usr/share/perl5/XMLRPC/Lite.pm line 181.

 End Errors
<h2>WebworkClient Errors</h2><p>Errors: <br /> <blockquote style="color:red"><code>Wide character in subroutine entry at /usr/share/perl5/XMLRPC/Lite.pm line 181.
xmlrpcCall to renderProblem returned no result for /data2/webwork_docker_clean_for_PR/webwork2/clients/t/xmlrpc_utf8_fix.pg

and the browser did not display the problem text and showed

Unable to decode problem text
xmlrpcCall to renderProblem returned no result for /data2/webwork_docker_clean_for_PR/webwork2/clients/t/xmlrpc_utf8_fix.pg 

which is the same error you reported.


Test with patched Lite.pm on both the server side and the client side (test 2 only)

Next I patch the version of Lite.pm on my local PC to match what is being used in Docker (the fix from https://github.com/openwebwork/webwork2/issues/967#issuecomment-523941959)

Then I ran the second part (alone) with the patched local PC version of Lite.pm (still with the patched version in use inside Docker):

perl sendXMLRPC.pl -B t/xmlrpc_utf8_fix.pg 

Results:


Test with unpatched Lite.pm on the server side (test 1)

Finally, I temporarily dropped the use of the patched version of Lite.pm in the Docker container, and ran the "first" -b test again. As expected, when a Hebrew answer was submitted, the browser failed to display any lines in the results table and failed to show the problem text, and instead showed:

WebworkClient Errors

Errors:

    Wide character in subroutine entry at /usr/share/perl5/XMLRPC/Lite.pm line 181. 

End Errors

WeBWorK using host: http://localhost:8080, course: daemon_course format: standard
Results for this submission

# | Entered | Answer Preview | Result
-- | -- | -- | --

and the below the table

All of the answers above are correct.
Unable to decode problem text
xmlrpcCall to renderProblem returned no result for /data2/webwork_docker_clean_for_PR/webwork2/clients/t/xmlrpc_utf8_fix.pg 

Aside: The pink warnings sections seems to be due to the the code roughly at https://github.com/openwebwork/webwork2/blob/develop/lib/WebworkWebservice/RenderProblem.pm#L482 which creates a non-empty value for WARNINGS regardless of whether or not there is anything to be reported. However, it seems that the empty warnings section can be ignored.

mgage commented 4 years ago

Thanks Tani. I'm glad I checked before I went further with my own checks. The setup I'm using for these tests is not in docker (it's an old development set up using macports that I've been using for years) so the server (on my laptop) and the sendXMLRPC.pl file, both on the laptop are using the same XMLRPC/Lite.pm file. I have patched this as per the instructions in PR#967. (I've also searched my laptop to make sure that there is no other XMLRPC/Lite.pm file -- there is another perl installation used by the mac operating system but it does not have XMLRPC modules installed. )

The pink warning sections are normal and are caused by the 'standard' format which includes lots of space for debugging results. The 'sticky' format is actually the format usually used -- the standard format was the first one created. Some relabeling and vetting of formats is probably in order.

As to the tests. I can duplicate all of your results except for the first one -- in particular sendXMLRPC.pl -B t/xmlrpc_utf8_fix.pg works exactly as expected with the patch.

However while sendXMLRPC.pl -b t/xmlrpc_utf8_fix.pg displays the problem correctly submitting the answers via "check answer" or "show correct answers" gives no error, but also does not display the submitted hebrew text (and also marks it incorrect). If I submit the "foobar" english answer there is no problem. Can you duplicate this? image

taniwallach commented 4 years ago

For me it works fine. I'm running the test on an almost pristine clone of develop, with some Docker config tweaks. Images of my output are below.

git status
On branch develop
Your branch is up to date with 'origin/develop'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   docker-compose.yml
    modified:   docker-config/docker-entrypoint.sh
    modified:   htdocs/js/apps/MathQuill/mqeditor.css

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    clients/t/xmlrpc_utf8_fix.pg
    t/xmlrpc_utf8_fix.pg

One thing to consider is the setting of ww_display_mode in the credential file. I have

        ww_display_mode   => "MathJax", 

My local notes are that images mode does not work well with sendXMLRPC on my system (the database is in the Docker container, and if I try to use images mode - I get many errors.

Wide character in print at /data2/webwork_docker_clean_for_PR/webwork2/../pg//lib/WeBWorK/PG/ImageGenerator.pm line 378.
Could not make directory /data2/webwork_docker_clean_for_PR/webwork2/htdocs/tmp/equations/dc at /data2/webwork_docker_clean_for_PR/webwork2/../pg//lib/WeBWorK/PG/ImageGenerator.pm line 452.
/bin/mv: cannot move '/data2/webwork_docker_clean_for_PR/webwork2/tmp/ImageGenerator.GmjyPZBk/equation1.png' to '/data2/webwork_docker_clean_for_PR/webwork2/htdocs/tmp/equations/dc/8e03876da86642deefe46a81ef1d141.png': No such file or directory
cd /data2/webwork_docker_clean_for_PR/webwork2/tmp/ImageGenerator.GmjyPZBk && /bin/mv /data2/webwork_docker_clean_for_PR/webwork2/tmp/ImageGenerator.GmjyPZBk/equation1.png /data2/webwork_docker_clean_for_PR/webwork2/htdocs/tmp/equations/dc/8e03876da86642deefe46a81ef1d141.png returned non-zero status 256: No such file or directory at /data2/webwork_docker_clean_for_PR/webwork2/../pg//lib/WeBWorK/PG/ImageGenerator.pm line 457.
Can't write to tmp/equations directory /data2/webwork_docker_clean_for_PR/webwork2/htdocs/tmp/equations at /data2/webwork_docker_clean_for_PR/webwork2/../pg//lib/WeBWorK/PG/ImageGenerator.pm line 458.
Can't connect to data source '' because I can't work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DBI_DRIVER env var is not set) at /usr/lib/x86_64-linux-gnu/perl5/5.28/DBI.pm line 623.
    DBI::connect("DBI", undef, undef, undef, HASH(0x558392f8cb08)) called at /usr/lib/x86_64-linux-gnu/perl5/5.28/DBI.pm line 587
    DBI::connect_cached("DBI", undef, undef, undef) called at /data2/webwork_docker_clean_for_PR/webwork2/../pg//lib/WeBWorK/PG/ImageGenerator.pm line 486
    WeBWorK::PG::ImageGenerator::update_depth_cache(WeBWorK::PG::ImageGenerator=HASH(0x558396152a18)) called at /data2/webwork_docker_clean_for_PR/webwork2/../pg//lib/WeBWorK/PG/ImageGenerator.pm line 474
    WeBWorK::PG::ImageGenerator::render(WeBWorK::PG::ImageGenerator=HASH(0x558396152a18), "refresh", 1) called at /data2/webwork_docker_clean_for_PR/webwork2/lib/FormatRenderedProblem.pm line 305
    FormatRenderedProblem::formatRenderedProblem(WebworkClient=HASH(0x558396238088)) called at /data2/webwork_docker_clean_for_PR/webwork2/lib/WebworkClient.pm line 698
    WebworkClient::formatRenderedProblem(WebworkClient=HASH(0x558396238088)) called at clients/sendXMLRPC.pl line 1172
    main::display_html_output("/data2/webwork_docker_clean_for_PR/webwork2/t/xmlrpc_utf8_fix.pg", WebworkClient=HASH(0x558396238088)) called at clients/sendXMLRPC.pl line 758
    main::process_pg_file("/data2/webwork_docker_clean_for_PR/webwork2/t/xmlrpc_utf8_fix.pg") called at clients/sendXMLRPC.pl line 686

sendXMLRPC-graded-1 sendXMLRPC-graded-2

Here is the raw HTML from the incorrect answer (copied from "view source"):

<html lang="en-US"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<!-- base href="http://localhost:8080/" -->
<link rel="shortcut icon" href="http://localhost:8080/webwork2_files/images/favicon.ico">
<!-- CSS Loads -->
<link rel="stylesheet" type="text/css" href="html2xml-graded-2_files/bootstrap.css">
<link rel="stylesheet" type="text/css" href="html2xml-graded-2_files/bootstrap-responsive.css">
<link rel="stylesheet" type="text/css" href="html2xml-graded-2_files/jquery-ui-1.css">
<link rel="stylesheet" type="text/css" href="html2xml-graded-2_files/font-awesome.css">
<link rel="stylesheet" type="text/css" href="html2xml-graded-2_files/math4.css">
<link rel="stylesheet" type="text/css" href="html2xml-graded-2_files/knowlstyle.css">

<!-- JS Loads -->
<script type="text/javascript" src="html2xml-graded-2_files/jquery.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/MathJax.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/jquery-ui-1.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/bootstrap.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/addOnLoadEvent.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/java_init.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/color.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/Base64.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/underscore.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/knowl.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/problem.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/math4.js"></script>
<script type="text/javascript" src="html2xml-graded-2_files/iframeResizer.js"></script>

<title>WeBWorK using host: http://localhost:8080, format: standard seed: 987654321 course: daemon_course</title>
<style type="text/css">.MathJax_Hover_Frame {border-radius: .25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0px 0px 15px #83A; -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; border: 1px solid #A6D ! important; display: inline-block; position: absolute}
.MathJax_Menu_Button .MathJax_Hover_Arrow {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font-family: 'Courier New',Courier; font-size: 9px; color: #F0F0F0}
.MathJax_Menu_Button .MathJax_Hover_Arrow span {display: block; background-color: #AAA; border: 1px solid; border-radius: 3px; line-height: 0; padding: 4px}
.MathJax_Hover_Arrow:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_Hover_Arrow:hover span {background-color: #CCC!important}
</style><style type="text/css">#MathJax_About {position: fixed; left: 50%; width: auto; text-align: center; border: 3px outset; padding: 1em 2em; background-color: #DDDDDD; color: black; cursor: default; font-family: message-box; font-size: 120%; font-style: normal; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 15px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -khtml-border-radius: 15px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_About.MathJax_MousePost {outline: none}
.MathJax_Menu {position: absolute; background-color: white; color: black; width: auto; padding: 5px 0px; border: 1px solid #CCCCCC; margin: 0; cursor: default; font: menu; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; -khtml-border-radius: 5px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
.MathJax_MenuItem {padding: 1px 2em; background: transparent}
.MathJax_MenuArrow {position: absolute; right: .5em; padding-top: .25em; color: #666666; font-size: .75em}
.MathJax_MenuActive .MathJax_MenuArrow {color: white}
.MathJax_MenuArrow.RTL {left: .5em; right: auto}
.MathJax_MenuCheck {position: absolute; left: .7em}
.MathJax_MenuCheck.RTL {right: .7em; left: auto}
.MathJax_MenuRadioCheck {position: absolute; left: .7em}
.MathJax_MenuRadioCheck.RTL {right: .7em; left: auto}
.MathJax_MenuLabel {padding: 1px 2em 3px 1.33em; font-style: italic}
.MathJax_MenuRule {border-top: 1px solid #DDDDDD; margin: 4px 3px}
.MathJax_MenuDisabled {color: GrayText}
.MathJax_MenuActive {background-color: #606872; color: white}
.MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus {background-color: #E8E8E8}
.MathJax_ContextMenu:focus {outline: none}
.MathJax_ContextMenu .MathJax_MenuItem:focus {outline: none}
#MathJax_AboutClose {top: .2em; right: .2em}
.MathJax_Menu .MathJax_MenuClose {top: -10px; left: -10px}
.MathJax_MenuClose {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; font-family: 'Courier New',Courier; font-size: 24px; color: #F0F0F0}
.MathJax_MenuClose span {display: block; background-color: #AAA; border: 1.5px solid; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; line-height: 0; padding: 8px 0 6px}
.MathJax_MenuClose:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_MenuClose:hover span {background-color: #CCC!important}
.MathJax_MenuClose:hover:focus {outline: none}
</style><style type="text/css">.MathJax_Preview .MJXf-math {color: inherit!important}
</style><style type="text/css">.MJX_Assistive_MathML {position: absolute!important; top: 0; left: 0; clip: rect(1px, 1px, 1px, 1px); padding: 1px 0 0 0!important; border: 0!important; height: 1px!important; width: 1px!important; overflow: hidden!important; display: block!important; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none}
.MJX_Assistive_MathML.MJX_Assistive_MathML_Block {width: 100%!important}
</style><style type="text/css">#MathJax_Zoom {position: absolute; background-color: #F0F0F0; overflow: auto; display: block; z-index: 301; padding: .5em; border: 1px solid black; margin: 0; font-weight: normal; font-style: normal; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; box-shadow: 5px 5px 15px #AAAAAA; -webkit-box-shadow: 5px 5px 15px #AAAAAA; -moz-box-shadow: 5px 5px 15px #AAAAAA; -khtml-box-shadow: 5px 5px 15px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_ZoomOverlay {position: absolute; left: 0; top: 0; z-index: 300; display: inline-block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
#MathJax_ZoomFrame {position: relative; display: inline-block; height: 0; width: 0}
#MathJax_ZoomEventTrap {position: absolute; left: 0; top: 0; z-index: 302; display: inline-block; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
</style><style type="text/css">.MathJax_Preview {color: #888}
#MathJax_Message {position: fixed; left: 1px; bottom: 2px; background-color: #E6E6E6; border: 1px solid #959595; margin: 0px; padding: 2px 8px; z-index: 102; color: black; font-size: 80%; width: auto; white-space: nowrap}
#MathJax_MSIE_Frame {position: absolute; top: 0; left: 0; width: 0px; z-index: 101; border: 0px; margin: 0px; padding: 0px}
.MathJax_Error {color: #CC0000; font-style: italic}
</style><style type="text/css">div.MathJax_MathML {text-align: center; margin: .75em 0px; display: block!important}
.MathJax_MathML {font-style: normal; font-weight: normal; line-height: normal; font-size: 100%; font-size-adjust: none; text-indent: 0; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0; min-height: 0; border: 0; padding: 0; margin: 0}
span.MathJax_MathML {display: inline!important}
.MathJax_mmlExBox {display: block!important; overflow: hidden; height: 1px; width: 60ex; min-height: 0; max-height: none; padding: 0; border: 0; margin: 0}
[class="MJX-tex-oldstyle"] {font-family: MathJax_Caligraphic, MathJax_Caligraphic-WEB}
[class="MJX-tex-oldstyle-bold"] {font-family: MathJax_Caligraphic, MathJax_Caligraphic-WEB; font-weight: bold}
[class="MJX-tex-caligraphic"] {font-family: MathJax_Caligraphic, MathJax_Caligraphic-WEB}
[class="MJX-tex-caligraphic-bold"] {font-family: MathJax_Caligraphic, MathJax_Caligraphic-WEB; font-weight: bold}
@font-face /*1*/ {font-family: MathJax_Caligraphic-WEB; src: url('http://localhost:8080/webwork2_files/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Regular.otf')}
@font-face /*2*/ {font-family: MathJax_Caligraphic-WEB; font-weight: bold; src: url('http://localhost:8080/webwork2_files/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Bold.otf')}
[mathvariant="double-struck"] {font-family: MathJax_AMS, MathJax_AMS-WEB}
[mathvariant="script"] {font-family: MathJax_Script, MathJax_Script-WEB}
[mathvariant="fraktur"] {font-family: MathJax_Fraktur, MathJax_Fraktur-WEB}
[mathvariant="bold-script"] {font-family: MathJax_Script, MathJax_Caligraphic-WEB; font-weight: bold}
[mathvariant="bold-fraktur"] {font-family: MathJax_Fraktur, MathJax_Fraktur-WEB; font-weight: bold}
[mathvariant="monospace"] {font-family: monospace}
[mathvariant="sans-serif"] {font-family: sans-serif}
[mathvariant="bold-sans-serif"] {font-family: sans-serif; font-weight: bold}
[mathvariant="sans-serif-italic"] {font-family: sans-serif; font-style: italic}
[mathvariant="sans-serif-bold-italic"] {font-family: sans-serif; font-style: italic; font-weight: bold}
@font-face /*3*/ {font-family: MathJax_AMS-WEB; src: url('http://localhost:8080/webwork2_files/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_AMS-Regular.otf')}
@font-face /*4*/ {font-family: MathJax_Script-WEB; src: url('http://localhost:8080/webwork2_files/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Script-Regular.otf')}
@font-face /*5*/ {font-family: MathJax_Fraktur-WEB; src: url('http://localhost:8080/webwork2_files/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Regular.otf')}
@font-face /*6*/ {font-family: MathJax_Fraktur-WEB; font-weight: bold; src: url('http://localhost:8080/webwork2_files/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Bold.otf')}
</style><style type="text/css">.MJXp-script {font-size: .8em}
.MJXp-right {-webkit-transform-origin: right; -moz-transform-origin: right; -ms-transform-origin: right; -o-transform-origin: right; transform-origin: right}
.MJXp-bold {font-weight: bold}
.MJXp-italic {font-style: italic}
.MJXp-scr {font-family: MathJax_Script,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-frak {font-family: MathJax_Fraktur,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-sf {font-family: MathJax_SansSerif,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-cal {font-family: MathJax_Caligraphic,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-mono {font-family: MathJax_Typewriter,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-largeop {font-size: 150%}
.MJXp-largeop.MJXp-int {vertical-align: -.2em}
.MJXp-math {display: inline-block; line-height: 1.2; text-indent: 0; font-family: 'Times New Roman',Times,STIXGeneral,serif; white-space: nowrap; border-collapse: collapse}
.MJXp-display {display: block; text-align: center; margin: 1em 0}
.MJXp-math span {display: inline-block}
.MJXp-box {display: block!important; text-align: center}
.MJXp-box:after {content: " "}
.MJXp-rule {display: block!important; margin-top: .1em}
.MJXp-char {display: block!important}
.MJXp-mo {margin: 0 .15em}
.MJXp-mfrac {margin: 0 .125em; vertical-align: .25em}
.MJXp-denom {display: inline-table!important; width: 100%}
.MJXp-denom > * {display: table-row!important}
.MJXp-surd {vertical-align: top}
.MJXp-surd > * {display: block!important}
.MJXp-script-box > *  {display: table!important; height: 50%}
.MJXp-script-box > * > * {display: table-cell!important; vertical-align: top}
.MJXp-script-box > *:last-child > * {vertical-align: bottom}
.MJXp-script-box > * > * > * {display: block!important}
.MJXp-mphantom {visibility: hidden}
.MJXp-munderover, .MJXp-munder {display: inline-table!important}
.MJXp-over {display: inline-block!important; text-align: center}
.MJXp-over > * {display: block!important}
.MJXp-munderover > *, .MJXp-munder > * {display: table-row!important}
.MJXp-mtable {vertical-align: .25em; margin: 0 .125em}
.MJXp-mtable > * {display: inline-table!important; vertical-align: middle}
.MJXp-mtr {display: table-row!important}
.MJXp-mtd {display: table-cell!important; text-align: center; padding: .5em 0 0 .5em}
.MJXp-mtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-mlabeledtr {display: table-row!important}
.MJXp-mlabeledtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mlabeledtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MJXp-scale0 {-webkit-transform: scaleX(.0); -moz-transform: scaleX(.0); -ms-transform: scaleX(.0); -o-transform: scaleX(.0); transform: scaleX(.0)}
.MJXp-scale1 {-webkit-transform: scaleX(.1); -moz-transform: scaleX(.1); -ms-transform: scaleX(.1); -o-transform: scaleX(.1); transform: scaleX(.1)}
.MJXp-scale2 {-webkit-transform: scaleX(.2); -moz-transform: scaleX(.2); -ms-transform: scaleX(.2); -o-transform: scaleX(.2); transform: scaleX(.2)}
.MJXp-scale3 {-webkit-transform: scaleX(.3); -moz-transform: scaleX(.3); -ms-transform: scaleX(.3); -o-transform: scaleX(.3); transform: scaleX(.3)}
.MJXp-scale4 {-webkit-transform: scaleX(.4); -moz-transform: scaleX(.4); -ms-transform: scaleX(.4); -o-transform: scaleX(.4); transform: scaleX(.4)}
.MJXp-scale5 {-webkit-transform: scaleX(.5); -moz-transform: scaleX(.5); -ms-transform: scaleX(.5); -o-transform: scaleX(.5); transform: scaleX(.5)}
.MJXp-scale6 {-webkit-transform: scaleX(.6); -moz-transform: scaleX(.6); -ms-transform: scaleX(.6); -o-transform: scaleX(.6); transform: scaleX(.6)}
.MJXp-scale7 {-webkit-transform: scaleX(.7); -moz-transform: scaleX(.7); -ms-transform: scaleX(.7); -o-transform: scaleX(.7); transform: scaleX(.7)}
.MJXp-scale8 {-webkit-transform: scaleX(.8); -moz-transform: scaleX(.8); -ms-transform: scaleX(.8); -o-transform: scaleX(.8); transform: scaleX(.8)}
.MJXp-scale9 {-webkit-transform: scaleX(.9); -moz-transform: scaleX(.9); -ms-transform: scaleX(.9); -o-transform: scaleX(.9); transform: scaleX(.9)}
.MathJax_PHTML .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
</style><style type="text/css">.MathJax_Display {text-align: center; margin: 1em 0em; position: relative; display: block!important; text-indent: 0; max-width: none; max-height: none; min-width: 0; min-height: 0; width: 100%}
.MathJax .merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MathJax .MJX-monospace {font-family: monospace}
.MathJax .MJX-sans-serif {font-family: sans-serif}
#MathJax_Tooltip {background-color: InfoBackground; color: InfoText; border: 1px solid black; box-shadow: 2px 2px 5px #AAAAAA; -webkit-box-shadow: 2px 2px 5px #AAAAAA; -moz-box-shadow: 2px 2px 5px #AAAAAA; -khtml-box-shadow: 2px 2px 5px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true'); padding: 3px 4px; z-index: 401; position: absolute; left: 0; top: 0; width: auto; height: auto; display: none}
.MathJax {display: inline; font-style: normal; font-weight: normal; line-height: normal; font-size: 100%; font-size-adjust: none; text-indent: 0; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0; min-height: 0; border: 0; padding: 0; margin: 0}
.MathJax:focus, body :focus .MathJax {display: inline-table}
.MathJax.MathJax_FullWidth {text-align: center; display: table-cell!important; width: 10000em!important}
.MathJax img, .MathJax nobr, .MathJax a {border: 0; padding: 0; margin: 0; max-width: none; max-height: none; min-width: 0; min-height: 0; vertical-align: 0; line-height: normal; text-decoration: none}
img.MathJax_strut {border: 0!important; padding: 0!important; margin: 0!important; vertical-align: 0!important}
.MathJax span {display: inline; position: static; border: 0; padding: 0; margin: 0; vertical-align: 0; line-height: normal; text-decoration: none; box-sizing: content-box}
.MathJax nobr {white-space: nowrap!important}
.MathJax img {display: inline!important; float: none!important}
.MathJax * {transition: none; -webkit-transition: none; -moz-transition: none; -ms-transition: none; -o-transition: none}
.MathJax_Processing {visibility: hidden; position: fixed; width: 0; height: 0; overflow: hidden}
.MathJax_Processed {display: none!important}
.MathJax_test {font-style: normal; font-weight: normal; font-size: 100%; font-size-adjust: none; text-indent: 0; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow: hidden; height: 1px}
.MathJax_test.mjx-test-display {display: table!important}
.MathJax_test.mjx-test-inline {display: inline!important; margin-right: -1px}
.MathJax_test.mjx-test-default {display: block!important; clear: both}
.MathJax_ex_box {display: inline-block!important; position: absolute; overflow: hidden; min-height: 0; max-height: none; padding: 0; border: 0; margin: 0; width: 1px; height: 60ex}
.MathJax_em_box {display: inline-block!important; position: absolute; overflow: hidden; min-height: 0; max-height: none; padding: 0; border: 0; margin: 0; width: 1px; height: 60em}
.mjx-test-inline .MathJax_left_box {display: inline-block; width: 0; float: left}
.mjx-test-inline .MathJax_right_box {display: inline-block; width: 0; float: right}
.mjx-test-display .MathJax_right_box {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}
.MathJax .MathJax_HitBox {cursor: text; background: white; opacity: 0; filter: alpha(opacity=0)}
.MathJax .MathJax_HitBox * {filter: none; opacity: 1; background: transparent}
#MathJax_Tooltip * {filter: none; opacity: 1; background: transparent}
@font-face {font-family: MathJax_Blank; src: url('about:blank')}
.MathJax .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
</style></head>
<body><div style="visibility: hidden; overflow: hidden; position: absolute; top: 0px; height: 1px; width: auto; padding: 0px; border: 0px none; margin: 0px; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal;"><div id="MathJax_Hidden"></div></div><div id="MathJax_Message" style="display: none;"></div>

<h2> WeBWorK using host: http://localhost:8080, course: daemon_course format: standard</h2>
            <h3>Results for this submission</h3><table class="attemptResults table table-condensed table-bordered"><tbody><tr><th>#</th> <th>Entered</th> <th>Answer Preview</th> <th>Result</th>  </tr> <tr><td>1</td><td dir="auto">לא נכון</td><td onmouseover=""><div class="results-popover" data-original-title="" title=""><span class="MathJax_Preview" style="color: inherit;"></span><div class="MathJax_Display" style="text-align: center;"><span class="MathJax" id="MathJax-Element-1-Frame" tabindex="0" style="text-align: center; position: relative;" data-mathml="&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;mrow class=&quot;MJX-TeXAtom-ORD&quot;&gt;&lt;mtext mathvariant=&quot;monospace&quot;&gt;&amp;#x5DC;&amp;#x5D0;&amp;#xA0;&amp;#x5E0;&amp;#x5DB;&amp;#x5D5;&amp;#x5DF;&lt;/mtext&gt;&lt;/mrow&gt;&lt;/math&gt;" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-1" style="width: 3.416em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.836em; height: 0px; font-size: 119%;"><span style="position: absolute; clip: rect(1.353em, 1002.84em, 2.668em, -1000em); top: -2.311em; left: 0em;"><span class="mrow" id="MathJax-Span-2"><span class="texatom" id="MathJax-Span-3"><span class="mrow" id="MathJax-Span-4"><span class="mtext" id="MathJax-Span-5"><span style="font-family: STIXGeneral, &quot;Arial Unicode MS&quot;, serif; font-size: 84%; font-style: normal; font-weight: normal;">ל</span><span style="font-family: STIXGeneral, &quot;Arial Unicode MS&quot;, serif; font-size: 84%; font-style: normal; font-weight: normal;">א</span><span style="font-family: MathJax_Typewriter; font-style: normal; font-weight: normal;">&nbsp;<span style="margin-left: 0.275em;"></span></span><span style="font-family: STIXGeneral, &quot;Arial Unicode MS&quot;, serif; font-size: 84%; font-style: normal; font-weight: normal;">נ</span><span style="font-family: STIXGeneral, &quot;Arial Unicode MS&quot;, serif; font-size: 84%; font-style: normal; font-weight: normal;">כ</span><span style="font-family: STIXGeneral, &quot;Arial Unicode MS&quot;, serif; font-size: 84%; font-style: normal; font-weight: normal;">ו</span><span style="font-family: STIXGeneral, &quot;Arial Unicode MS&quot;, serif; font-size: 84%; font-style: normal; font-weight: normal;">ן</span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.311em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.3em; border-left: 0px solid; width: 0px; height: 1.315em;"></span></span></nobr><span class="MJX_Assistive_MathML MJX_Assistive_MathML_Block" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mrow class="MJX-TeXAtom-ORD"><mtext mathvariant="monospace">לא&nbsp;נכון</mtext></mrow></math></span></span></div><script type="math/tex; mode=display" id="MathJax-Element-1">{\verbלא נכון}</script></div></td><td class="ResultsWithError"><a href='javascript:document.getElementById("AnSwEr0001").focus()'><span class="ResultsWithError ResultsWithErrorInResultsTable">incorrect</span></a></td>
</tr></tbody></table><div class="attemptResultsSummary" role="alert"><div class="ResultsWithError">The answer above is NOT correct.</div></div>
            <script type="text/javascript">addOnLoadEvent(function () {color_inputs([

],[
  'AnSwEr0001']
)});</script>
    <form id="problemMainForm" class="problem-main-form form-inline" name="problemMainForm" action="http://localhost:8080/webwork2/html2xml" method="post">
<div id="problem_body" class="problem-content" dir="rtl" lang="he-il">
            <script type="text/x-mathjax-config;executed=true">
                  MathJax.Hub.Config({
                     MathMenu: {showContext: true}
                  });
                  </script>
                  <script type="text/javascript"> 
                  if(!window.MathJax) 
                  (function () {
                    var script = document.createElement("script");
                    script.type = "text/javascript";
                    script.src  = "/webwork2_files/mathjax/MathJax.js?config=TeX-MML-AM_HTMLorMML-full";
                    document.getElementsByTagName("head")[0].appendChild(script);
                    })();                
                  </script>
<p style="margin: 0">This is a test popup menu. <span class="MathJax_Preview" style="color: inherit;"></span><span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style="position: relative;" data-mathml="&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;mo&gt;&amp;#x222B;&lt;/mo&gt;&lt;msup&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/math&gt;" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-6" style="width: 3.604em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.952em; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(1.586em, 1002.9em, 3.08em, -1000em); top: -2.597em; left: 0em;"><span class="mrow" id="MathJax-Span-7"><span class="mo" id="MathJax-Span-8" style="font-family: MathJax_Size1; text-rendering: optimizelegibility; vertical-align: 0em;">∫<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.138em;"></span></span><span class="msubsup" id="MathJax-Span-9" style="padding-left: 0.167em;"><span style="display: inline-block; position: relative; width: 1.001em; height: 0px;"><span style="position: absolute; clip: rect(3.395em, 1000.52em, 4.202em, -1000em); top: -4.014em; left: 0em;"><span class="mi" id="MathJax-Span-10" style="font-family: MathJax_Math; font-style: italic;">x</span><span style="display: inline-block; width: 0px; height: 4.014em;"></span></span><span style="position: absolute; top: -4.377em; left: 0.572em;"><span class="mn" id="MathJax-Span-11" style="font-size: 70.7%; font-family: MathJax_Main;">2</span><span style="display: inline-block; width: 0px; height: 4.014em;"></span></span></span></span><span class="mi" id="MathJax-Span-12" style="font-family: MathJax_Math; font-style: italic;">d<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mi" id="MathJax-Span-13" style="font-family: MathJax_Math; font-style: italic;">x</span></span><span style="display: inline-block; width: 0px; height: 2.597em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.441em; border-left: 0px solid; width: 0px; height: 1.521em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo>∫</mo><msup><mi>x</mi><mn>2</mn></msup><mi>d</mi><mi>x</mi></math></span></span><script type="math/tex" id="MathJax-Element-2">\int x^2 dx</script></p><p>
<select class="pg-select incorrect" name="AnSwEr0001" id="AnSwEr0001" aria-label="answer 1 " size="1">
<option value="נכון" class="tex2jax_ignore">נכון</option>
<option selected="selected" value="לא נכון" class="tex2jax_ignore">לא נכון</option>
<option value="foobar" class="tex2jax_ignore">foobar</option>
</select>

</p></div>
<p>You received a score of 0% for this attempt.</p><p>Your score was not recorded.</p><input type="hidden" name="problem-result-score" value="0" id="problem-result-score">

           <input type="hidden" name="answersSubmitted" value="1"> 
           <input type="hidden" name="sourceFilePath" value="/data2/webwork_docker_clean_for_PR/webwork2/t/xmlrpc_utf8_fix.pg">
           <input type="hidden" name="problemSource" value="RE9DVU1FTlQoKTsgICAgICAgICMgVGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0IGV4ZWN1dGFibGUg
bGluZSBpbiB0aGUgcHJvYmxlbS4KCmxvYWRNYWNyb3MoCiAgIlBHc3RhbmRhcmQucGwiLAogICJN
YXRoT2JqZWN0cy5wbCIsCiAgInBhcnNlclBvcFVwLnBsIgopOwoKU0VUX1BST0JMRU1fVEVYVERJ
UkVDVElPTigicnRsIik7ClNFVF9QUk9CTEVNX0xBTkdVQUdFKCJoZS1JTCIpOwoKVEVYVChiZWdp
bnByb2JsZW0oKSk7CgpDb250ZXh0KCJOdW1lcmljIik7CgokcG9wdXAxID0gUG9wVXAoWyfXoNeb
15XXnycsICfXnNeQINeg15vXldefJywnZm9vYmFyJyBdLCAn16DXm9eV158nKTsKCgpCRUdJTl9U
RVhUClRoaXMgaXMgYSB0ZXN0IHBvcHVwIG1lbnUuIFwoXGludCB4XjIgZHggXCkkUEFSClx7JHBv
cHVwMS0+bWVudVx9CgpFTkRfVEVYVAoKQU5TKCRwb3B1cDEtPmNtcCk7CgpFTkRET0NVTUVOVCgp
OyAgICAgICAgIyBUaGlzIHNob3VsZCBiZSB0aGUgbGFzdCBleGVjdXRhYmxlIGxpbmUgaW4gdGhl
IHByb2JsZW0uCgo=
"> 
           <input type="hidden" name="problemSeed" value="987654321">
           <input type="hidden" name="problemUUID" value="0"> 
           <input type="hidden" name="psvn" value="23456">
           <input type="hidden" name="pathToProblemFile" value="">
           <input type="hidden" name="courseName" value="daemon_course">
           <input type="hidden" name="courseID" value="daemon_course">
           <input type="hidden" name="userID" value="daemon">
           <input type="hidden" name="course_password" value="">
           <input type="hidden" name="displayMode" value="MathJax">
           <input type="hidden" name="session_key" value="Qwjp0qb3cJN0OEAn3gQw147Fum3Jcym3">
           <input type="hidden" name="outputformat" value="standard">
           <input type="hidden" name="language" value="en">
           <input type="hidden" name="showSummary" value="1">
           <input type="hidden" name="forcePortNumber" value="8080">

           <p>
            <input type="submit" name="preview" value="Preview My Answers" class="btn btn-primary">
            <input type="submit" name="WWsubmit" value="Check Answers" class="btn btn-primary">
            <input type="submit" name="WWcorrectAns" value="Show correct answers" class="btn btn-primary">
           </p>
    </form>
<hr>

<h3> Perl warning section </h3>
<div style="background-color:pink">
                     <p>WARNINGS</p><p>WARNINGS

<br>More<br>
</p></div>
<h3> PG Warning section </h3>
;
<h3> Debug message section </h3>

<h3> internal errors </h3>

<div id="footer">
WeBWorK © 1996-2019 | host: http://localhost:8080 | course: daemon_course | format: standard | theme: math4
</div>

<div style="position: absolute; width: 0px; height: 0px; overflow: hidden; padding: 0px; border: 0px none; margin: 0px;"><div id="MathJax_Font_Test" style="position: absolute; visibility: hidden; top: 0px; left: 0px; width: auto; min-width: 0px; max-width: none; padding: 0px; border: 0px none; margin: 0px; white-space: nowrap; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; font-size: 40px; font-weight: normal; font-style: normal; font-size-adjust: none; font-family: MathJax_AMS, sans-serif;"></div></div></body></html>
taniwallach commented 4 years ago

Please check that you are also running a clean copy of develop, without any hacked code which might tamper with the data somewhere,

One other thing to possible check - have a look at the format the browser is using to submit the answer. Maybe it is not using the expected UTF-8 encoding for the submitted data.

taniwallach commented 4 years ago

Some technical details from the POST and response, from FireFox's inspection tools.

Headers:

Request URL:http://localhost:8080/webwork2/html2xml
Request method:POST
Remote address:[::1]:8080
Status code:
200
Version:HTTP/1.1
Referrer Policy:no-referrer-when-downgrade

Raw response headers:

HTTP/1.1 200 OK
Date: Mon, 11 May 2020 18:11:31 GMT
Server: Apache/2.4.29 (Ubuntu)
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 2693
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8

Raw request headers:

Host: localhost:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,en-US;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 1225
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Form data - from "Copy All" :

{"Form data":{"AnSwEr0001":"נכון","answersSubmitted":"1","sourceFilePath":"/data2/webwork_docker_clean_for_PR/webwork2/t/xmlrpc_utf8_fix.pg","problemSource":"RE9DVU1FTlQoKTsgICAgICAgICMgVGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0IGV4ZWN1dGFibGUg\r\nbGluZSBpbiB0aGUgcHJvYmxlbS4KCmxvYWRNYWNyb3MoCiAgIlBHc3RhbmRhcmQucGwiLAogICJN\r\nYXRoT2JqZWN0cy5wbCIsCiAgInBhcnNlclBvcFVwLnBsIgopOwoKU0VUX1BST0JMRU1fVEVYVERJ\r\nUkVDVElPTigicnRsIik7ClNFVF9QUk9CTEVNX0xBTkdVQUdFKCJoZS1JTCIpOwoKVEVYVChiZWdp\r\nbnByb2JsZW0oKSk7CgpDb250ZXh0KCJOdW1lcmljIik7CgokcG9wdXAxID0gUG9wVXAoWyfXoNeb\r\n15XXnycsICfXnNeQINeg15vXldefJywnZm9vYmFyJyBdLCAn16DXm9eV158nKTsKCgpCRUdJTl9U\r\nRVhUClRoaXMgaXMgYSB0ZXN0IHBvcHVwIG1lbnUuIFwoXGludCB4XjIgZHggXCkkUEFSClx7JHBv\r\ncHVwMS0+bWVudVx9CgpFTkRfVEVYVAoKQU5TKCRwb3B1cDEtPmNtcCk7CgpFTkRET0NVTUVOVCgp\r\nOyAgICAgICAgIyBUaGlzIHNob3VsZCBiZSB0aGUgbGFzdCBleGVjdXRhYmxlIGxpbmUgaW4gdGhl\r\nIHByb2JsZW0uCgo=\r\n","problemSeed":"987654321","problemUUID":"0","psvn":"23456","pathToProblemFile":"","courseName":"daemon_course","courseID":"daemon_course","userID":"daemon","course_password":"","displayMode":"MathJax","session_key":"ITf5cKRcXR4HcLyfx5JiZ4gGhRPtKkob","outputformat":"standard","language":"en","showSummary":"1","forcePortNumber":"8080","WWsubmit":"Check+Answers"}}
drgrice1 commented 8 months ago

This issue is no longer valid since XMLRPC is no longer used. So I am closing this issue.