mahara-contributors team mailing list archive
-
mahara-contributors team
-
Mailing list archive
-
Message #24288
[Bug 1422837] Re: XML RPC simpleXML limits payload size
Full instructions
Enable networking in Mahara
[mahara]/admin/site/networking.php
Create a new institution for your moodle in mahara
[mahara]/admin/users/institutions.php
Add an XML-RPC authentication instance
Copy the certificate from moodle into Mahara
[moodle]/admin/mnet/index.php (copy certificate from here)
(NOTE - your front page settings short site name has to be your host
name for the certificate to be correct - if its not correct then change
the front page settings and then recreated (delete) the noodle
certificate ([moodle]/admin/settings.php?section=frontpagesettings)
Add mahara as a host to moodle
[moodle]/admin/mnet/peers.php
(set hostname to mahara host name and application type to mahara then
save)
enable all services by clicking the services tab (publish and subscribe)
and then save
Add the networking block to your moodle front page - it will probably complain with “MNet authentication plugin must be enabled to see the list of MNet network servers”
Enable MNet authentication in
[moodle]/admin/settings.php?section=manageauths
The networking block will probably now complain with “Users need the
capability 'Roam to a remote application via MNet' to see the list of
MNet network servers”
Add the capability ‘Roam to a remote application’ to the ‘authenticated
user’ role [moodle]/admin/roles/manage.php
Save the role definition
Sometimes saving the role definition does not save the capability you
just checked, so check the front page block again.
All being good you should now see your mahara server as an option under
the network servers block on your moodle front page.
Make sure portfolios are switched on in moodle
[moodle]/admin/settings.php
Make sure that mahara eportfolios are switched on in moodle
http://joule2.dev/admin/portfolio.php
Create a test course in moodle
Create a test forum
Add discussion and replies with a few small attachments
Next to the attachments you will see an icon with an up arrow (yes, its
really that bad)
Click this arrow to export to Mahara
Now add some big attachments (7mb +)
Try exporting these files and it will fail
--
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1422837
Title:
XML RPC simpleXML limits payload size
Status in Mahara ePortfolio:
Incomplete
Bug description:
Operating System: Ubuntu 14.04.1 LTS
Mahara version: 1.9.3
Database: mysql
Browser: chrome 40.0.2214.111
------------------------------
Steps to reproduce - you need a system capable of XMLRPC communication
with Mahara (e.g. Moodle)
1) With Moodle - set up mahara networking / portfolios.
2) Open a course with a forum
3) Add 2 entries. One with an attachment under 5 MB. One with an attachment over 5 MB. On Each click "Export to portfolio" in the bottom. 4) Go through the screens to start export - ask it to do it now (i.e. not wait for cron).
5) Check the Mahara site to see what made it through successfully.
------------------------------
simpleXML may not be the best parser for XMLRPC payloads
in api/xmlrpc/lib.php
function parse_payload($payload) {
try {
$xml = new SimpleXMLElement($payload);
return $xml;
} catch (Exception $e) {
throw new MaharaException('Encrypted payload is not a valid XML document', 6002);
}
}
This means if you send a large file (in our tests greater than approx 7mb) base 64 encoded over XMLRPC it will fail to parse.
It didn't seem to make any difference if we increased the memory limit to 800M in php.ini or even by setting the php memory limit to 800M via PHP ini_set in function parse_payload - this suggests that there is a limit to what SimpleXML can handle regardless of the PHP memory limit.
Note - 932 in my source code is the 'throw new exception' following
$xml = new SimpleXMLElement($payload);
called at [/vagrant/www/maharadev/mahara/lib/errors.php:465] #1 exception(MaharaException Object ([] => 1,[] => Encrypted payload is not a valid XML document,[] => ,[] => 6002,[] => /vagrant/www/maharadev/mahara/api/xmlrpc/lib.php,[] => 932,[] => Array ([0] => Array ([file] => /vagrant/www/maharadev/mahara/api/xmlrpc/lib.php,[line] => 921,[function] => parse_payload,[args] => Array ([0] =>ERROR 4:
4: remote server error: code: , message: A nonrecoverable error occurred. This probably means you have encountered a bug in the system #0 MaharaException->handle_exception() called at [/vagrant/www/maharadev/mahara/lib/errors.php:465] #1 exception(MaharaException Object ([] => 1,[] => Encrypted payload is not a valid XML document,[] => ,[] => 6002,[] => /vagrant/www/maharadev/mahara/api/xmlrpc/lib.php,[] => 932,[] => Array ([0] => Array ([file] => /vagrant/www/maharadev/mahara/api/xmlrpc/lib.php,[line] => 921,[function] => parse_payload,[args] => Array ([0] =>
To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1422837/+subscriptions
References