From e5d48aad44ea043b280084ea1ff010ccd3d104d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0koda?= Date: Wed, 19 Mar 2014 14:19:08 +0800 Subject: [PATCH] MDL-44106 add WS_SERVER constant to all web service calls This will help us hack around some nasty webservice problems, such as require_login() and it will be used to set proper 'ws' origin in logged events. --- lib/setup.php | 9 +++++++++ webservice/amf/server.php | 5 +---- webservice/amf/simpleserver.php | 5 +---- webservice/rest/server.php | 5 +---- webservice/rest/simpleserver.php | 5 +---- webservice/soap/server.php | 5 +---- webservice/soap/simpleserver.php | 5 +---- webservice/upgrade.txt | 6 ++++++ webservice/xmlrpc/server.php | 5 +---- webservice/xmlrpc/simpleserver.php | 5 +---- 10 files changed, 23 insertions(+), 32 deletions(-) diff --git a/lib/setup.php b/lib/setup.php index 3e0316c28b7..845e6bddb0a 100644 --- a/lib/setup.php +++ b/lib/setup.php @@ -304,6 +304,11 @@ if (defined('WEB_CRON_EMULATED_CLI')) { } } +// All web service requests have WS_SERVER == true. +if (!defined('WS_SERVER')) { + define('WS_SERVER', false); +} + // Detect CLI maintenance mode - this is useful when you need to mess with database, such as during upgrades if (file_exists("$CFG->dataroot/climaintenance.html")) { if (!CLI_SCRIPT) { @@ -745,6 +750,10 @@ if (CLI_SCRIPT) { // no sessions in CLI scripts possible define('NO_MOODLE_COOKIES', true); +} else if (WS_SERVER) { + // No sessions possible in web services. + define('NO_MOODLE_COOKIES', true); + } else if (!defined('NO_MOODLE_COOKIES')) { if (empty($CFG->version) or $CFG->version < 2009011900) { // no session before sessions table gets created diff --git a/webservice/amf/server.php b/webservice/amf/server.php index a91fd59bb39..909742df5b8 100644 --- a/webservice/amf/server.php +++ b/webservice/amf/server.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); // Make sure OPcache does not strip comments, we need them for Zend! if (ini_get('opcache.enable') and strtolower(ini_get('opcache.enable')) !== 'off') { diff --git a/webservice/amf/simpleserver.php b/webservice/amf/simpleserver.php index 9a12c29b397..7a516851241 100644 --- a/webservice/amf/simpleserver.php +++ b/webservice/amf/simpleserver.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); // Make sure OPcache does not strip comments, we need them for Zend! if (ini_get('opcache.enable') and strtolower(ini_get('opcache.enable')) !== 'off') { diff --git a/webservice/rest/server.php b/webservice/rest/server.php index 56d39e270cc..f5ef73b9729 100644 --- a/webservice/rest/server.php +++ b/webservice/rest/server.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); require('../../config.php'); require_once("$CFG->dirroot/webservice/rest/locallib.php"); diff --git a/webservice/rest/simpleserver.php b/webservice/rest/simpleserver.php index 1bf062b171c..f49e2bb9cce 100644 --- a/webservice/rest/simpleserver.php +++ b/webservice/rest/simpleserver.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); require('../../config.php'); require_once("$CFG->dirroot/webservice/rest/locallib.php"); diff --git a/webservice/soap/server.php b/webservice/soap/server.php index 0c34b9ddbd1..70097e08f37 100644 --- a/webservice/soap/server.php +++ b/webservice/soap/server.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); // Make sure OPcache does not strip comments, we need them for Zend! if (ini_get('opcache.enable') and strtolower(ini_get('opcache.enable')) !== 'off') { diff --git a/webservice/soap/simpleserver.php b/webservice/soap/simpleserver.php index 26c5ddf592b..45f1029e9f2 100644 --- a/webservice/soap/simpleserver.php +++ b/webservice/soap/simpleserver.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); // Make sure OPcache does not strip comments, we need them for Zend! if (ini_get('opcache.enable') and strtolower(ini_get('opcache.enable')) !== 'off') { diff --git a/webservice/upgrade.txt b/webservice/upgrade.txt index 4f797431d70..32af7f4d84e 100644 --- a/webservice/upgrade.txt +++ b/webservice/upgrade.txt @@ -3,6 +3,12 @@ information provided here is intended especially for developers. This information is intended for authors of webservices, not people writing webservice clients. +=== 2.7 === + +* All webservice server.php and simpleserver.php scripts must define('WS_SERVER', true) + before including config.php file. + + === 2.6 === * webservice/upload.php diff --git a/webservice/xmlrpc/server.php b/webservice/xmlrpc/server.php index 6e13b65c102..d4ea1b67021 100644 --- a/webservice/xmlrpc/server.php +++ b/webservice/xmlrpc/server.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); // Make sure OPcache does not strip comments, we need them for Zend! if (ini_get('opcache.enable') and strtolower(ini_get('opcache.enable')) !== 'off') { diff --git a/webservice/xmlrpc/simpleserver.php b/webservice/xmlrpc/simpleserver.php index 27df8398a5e..93f4957027d 100644 --- a/webservice/xmlrpc/simpleserver.php +++ b/webservice/xmlrpc/simpleserver.php @@ -28,10 +28,7 @@ */ define('NO_DEBUG_DISPLAY', true); -/** - * NO_MOODLE_COOKIES - no cookies with web service - */ -define('NO_MOODLE_COOKIES', true); +define('WS_SERVER', true); // Make sure OPcache does not strip comments, we need them for Zend! if (ini_get('opcache.enable') and strtolower(ini_get('opcache.enable')) !== 'off') {