public function __construct() { $this->server = xmlrpc_server_create(); //http://www.hixie.ch/specs/pingback/pingback //https://github.com/tedeh/pingback-php xmlrpc_server_register_method($this->server, 'pingback.ping', [$this, 'pingback_ping']); }
/** * XMLRPC server constructor * * @access private */ public function __construct($request, $params = array()) { parent::__construct($request, $params); $this->_server = xmlrpc_server_create(); foreach ($GLOBALS['registry']->listMethods() as $method) { xmlrpc_server_register_method($this->_server, str_replace('/', '.', $method), array('Horde_Rpc_Xmlrpc', '_dispatcher')); } }
function handlePost() { $server = xmlrpc_server_create(); xmlrpc_server_register_method($server, 'pingback.ping', array($this, 'ping')); echo xmlrpc_server_call_method($server, file_get_contents('php://input'), null, array('encoding' => 'utf-8')); xmlrpc_server_destroy($server); return true; }
public function __construct($options = array()) { $this->_server = xmlrpc_server_create(); $this->setOptions($options); if (!xmlrpc_server_register_method($this->_server, 'pingback.ping', array($this, '_ping'))) { throw new PingbackException('Failed to register method to server'); } }
/** * Initialize the XMLRPC server * * @return void */ protected function init() { $this->XmlRpcServer = xmlrpc_server_create(); xmlrpc_server_register_method($this->XmlRpcServer, 'ns1.doSomething', array($this, '_xmlrpc_ns1_doSomething')); xmlrpc_server_register_method($this->XmlRpcServer, 'ns2.getServerTime', array($this, '_xmlrpc_ns2_getServerTime')); xmlrpc_server_register_method($this->XmlRpcServer, 'sayHello', array($this, '_xmlrpc_sayHello')); // TODO how does this work? //xmlrpc_server_register_introspection_callback($this->XmlRpcServer, array($this, '_xmlrpc_introspection')); }
function __construct($payload, $payload_signed, $payload_encrypted) { $this->payload = $payload; // xmlrpc_decode_request is defined such that the '$method' string is // passed in by reference. $this->params = xmlrpc_decode_request($this->payload, $this->method, 'UTF-8'); // The method name is not allowed to have a dot, except for a single dot // which preceeds the php extension. It can have slashes but it cannot // begin with a slash. We specifically don't want .. to be possible. if (0 == preg_match("@^[A-Za-z0-9]+/[A-Za-z0-9/_-]+(\\.php/)?[A-Za-z0-9_-]+\$@", $this->method)) { throw new XmlrpcServerException('The function does not exist', 6010); } if ($payload_signed && $payload_encrypted || $this->method == 'system/keyswap') { // The remote server's credentials checked out. // You might want to enable some methods for unsigned/unencrypted // transport } else { // For now, we throw an exception throw new XmlrpcServerException('The signature on your message was not valid', 6005); } // The system methods are treated differently. if (array_key_exists($this->method, $this->system_methods)) { $xmlrpcserver = xmlrpc_server_create(); xmlrpc_server_register_method($xmlrpcserver, $this->method, array(&$this, $this->system_methods[$this->method])); } else { // Security: I'm thinking that we should not return separate errors for // the file not existing, the file not being readable, etc. as // it might provide an opportunity for outsiders to scan the // server for random files. So just a single message/code for // all failures here kthxbye. if (strpos($this->method, '/') !== false) { $this->callstack = explode('/', $this->method); } else { throw new XmlrpcServerException('The function does not exist', 6011); } // Read custom xmlrpc functions from local if (function_exists('local_xmlrpc_services')) { foreach (local_xmlrpc_services() as $name => $localservices) { $this->services[$name] = array_merge($this->services[$name], $localservices); } } foreach ($this->services as $container) { if (array_key_exists($this->method, $container)) { $xmlrpcserver = xmlrpc_server_create(); $bool = xmlrpc_server_register_method($xmlrpcserver, $this->method, 'api_dummy_method'); $this->response = xmlrpc_server_call_method($xmlrpcserver, $payload, $container[$this->method], array("encoding" => "utf-8")); $bool = xmlrpc_server_destroy($xmlrpcserver); return $this->response; } } throw new XmlrpcServerException('No such method: ' . $this->method); } $temp = ''; $this->response = xmlrpc_server_call_method($xmlrpcserver, $payload, $temp, array("encoding" => "utf-8")); return $this->response; }
/** * Processes an incoming request, executes it and builds a response. * * @since 5.1 * @param ModuleServerRequest $request Incoming request. * @param ModuleServerResponse $response Outcoming response. * @return void */ public function process(ModuleServerRequest $request, ModuleServerResponse $response) { $command = explode(' ', $request->getCommand()); $module_location = $command[1]; if (!strlen($module_location)) { $response->sendWarning(ModuleServerResponse::SC_NOT_FOUND, 'Module location not defined.', ModuleServerRsponse::ERROR_CLASSNAME_MISSING); return; } try { $locator = new ModuleLocator('module://' . $request->getHeader('User') . ':' . $request->getHeader('Password') . '@/' . $module_location); $sessionId = $request->getHeader('Session'); if ($sessionId) { $this->module = ModuleFactory::getSessionModule($locator, $sessionId); } else { $this->module = ModuleFactory::getModule($locator); } } catch (ModuleException $e) { $response->sendWarning(ModuleServerResponse::SC_INTERNAL_SERVER_ERROR, $e->__toString()); return; } catch (\Exception $e) { $response->sendWarning(ModuleServerResponse::SC_INTERNAL_SERVER_ERROR, $e->__toString()); return; } if (!($xmlrpc_server = xmlrpc_server_create())) { $response->sendWarning(ModuleServerResponse::SC_INTERNAL_SERVER_ERROR, 'Internal error: Could not create an XML-RPC server.', ModuleServerResponse::ERROR_XMLRPC_ERROR); return; } $theClass = new \ReflectionObject($this->module); $methods = $theClass->getMethods(); foreach ($methods as $method) { // Ignore private methods $theMethod = new \ReflectionMethod($theClass->getName(), $method->getName()); if (!$theMethod->isPublic()) { continue; } // Expose only methods beginning with "module" prefix if (!(substr($method->getName(), 0, 6) == 'module')) { continue; } xmlrpc_server_register_method($xmlrpc_server, strtolower($method->getName()), array($this, 'xmlrpcGateway')); } xmlrpc_server_register_introspection_callback($xmlrpc_server, array($this, 'introspectionGateway')); try { $buffer = xmlrpc_server_call_method($xmlrpc_server, $request->getPayload(), '', array('output_type' => 'xml')); $response->addHeader('Module/1.0 ' . ModuleServerResponse::SC_OK); $response->setBuffer($buffer); } catch (\Exception $e) { $response->addHeader('Module/1.0 ' . ModuleServerResponse::SC_INTERNAL_ERROR); $response->setBuffer($buffer); } xmlrpc_server_destroy($xmlrpc_server); $context = new ModuleContext($module_location); $session = new \Innomatic\Module\Session\ModuleSession($context, $sessionId); $session->save($this->module); $response->addHeader('Session: ' . $session->getId()); }
function xmlrpc_server($dispMap = '', $serviceNow = 0) { $this->server = xmlrpc_server_create(); if ($dispMap) { $this->dmap = $dispMap; if ($serviceNow) { $this->service(); } } }
/** * Create a new XML-RPC Server. * * The constructor receives a mandatory parameter: the Call Handler. The call handler executes the actual * method call. XML_RPC2 server acts as a protocol decoder/encoder between the call handler and the client * * @param object $callHandler * @param array $options associative array of options */ function __construct($callHandler, $options = array()) { parent::__construct($callHandler, $options); $this->_xmlrpcextServer = xmlrpc_server_create(); foreach ($callHandler->getMethods() as $method) { if (xmlrpc_server_register_method($this->_xmlrpcextServer, $method->getName(), array($this, 'epiFunctionHandlerAdapter')) !== true) { throw new XML_RPC2_Exception('Unable to setup XMLRPCext server. xmlrpc_server_register_method returned non-true.'); } } }
/** * Constructeur. * * @access protected */ function __construct() { $this->_server = xmlrpc_server_create(); $this->auth = false; $this->_logger = Tools::loggerFactory(); $this->registerMethod('test'); $this->registerMethod('auth.login'); $this->registerMethod('i18n.setLocale'); $this->registerMethod('i18n.getSupportedLocales'); $this->registerMethod('session.register'); }
/** * XMLRPC server constructor. */ function __construct($request, $params = array()) { parent::__construct($request, $params); $this->_server = xmlrpc_server_create(); // Register only phpgw services. foreach ($GLOBALS['registry']->listMethods('phpgw') as $method) { $methods = explode('/', $method); array_shift($methods); $method = implode('.', $methods); xmlrpc_server_register_method($this->_server, $method, array('Horde_Rpc_Phpgw', '_dispatcher')); } }
/** * This won't ever be called unless there is an error */ function serializationAction(&$body) { $request_xml = $body->getValue(); $toSerialize = $body->getResults(); $lambdaFunc = 'return $userData;'; $func = create_function('$a,$b,$userData', $lambdaFunc); $xmlrpc_server = xmlrpc_server_create(); $request_xml = $body->getValue(); xmlrpc_server_register_method($xmlrpc_server, $body->packageClassMethodName, $func); $response = xmlrpc_server_call_method($xmlrpc_server, $request_xml, $toSerialize); $body->setResults($response); }
public function __construct() { $this->director = Director::getInstance(); if (!function_exists("xmlrpc_server_create")) { require_once "xmlrpc/xmlrpc.inc"; require_once "xmlrpc/xmlrpcs.inc"; require_once "xmlrpc/xmlrpc_wrappers.inc"; require_once "xmlrpc/xmlrpc_extension_api.inc"; } $this->server = xmlrpc_server_create(); $this->log = Logger::getInstance(); }
/** * Request processor * @param object $handler * @param array|bool $methodsList If omitted, handler should contain getMethods() method * @return string */ public function processRequest($handler, $methodsList = false) { $server = xmlrpc_server_create(); if (!$methodsList) { $methodsList = $handler->getMethods(); } foreach ($methodsList as $method) { xmlrpc_server_register_method($server, $method, [$handler, $method]); } $request = (isset($HTTP_RAW_POST_DATA) and $HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : file_get_contents('php://input'); $response = xmlrpc_server_call_method($server, $request, null); xmlrpc_server_destroy($server); return $response; }
private function setUpXmlRpcTypes($xmlrpc_das) { $typeList = <<<END <introspection> <typeList> <typeDescription name='SimpleType' basetype='struct' desc='Simple type'> <value type='int' name='intValue'></value> <value type='double' name='doubleValue'></value> <value type='string' name='strValue'></value> </typeDescription> <typeDescription name='ComplexType' basetype='struct' desc='Complex type'> <value type='SimpleType []' name='objArrValue'></value> <value type='int []' name='intArrValue'></value> <value type='int' name='intValue'></value> <value type='double' name='doubleValue'></value> <value type='string' name='strValue'></value> <value type='SimpleType' name='objValue'></value> </typeDescription> </typeList> </introspection> END; $call = <<<END <?xml version="1.0" encoding="iso-8859-1"?> <methodCall> <methodName>system.describeMethods</methodName> <params/> </methodCall> END; $xmlrpc_server = xmlrpc_server_create(); $descArray = xmlrpc_parse_method_descriptions($typeList); xmlrpc_server_add_introspection_data($xmlrpc_server, $descArray); $response = xmlrpc_server_call_method($xmlrpc_server, $call, null); xmlrpc_server_destroy($xmlrpc_server); $methodDesc = xmlrpc_decode_request($response, $method); $this->xmlrpc_das->addTypesXmlRpc($methodDesc["typeList"]); }
/** * Generate * * @param string $service_description Service Description * * @return null */ public function generate($service_description) { SCA::$logger->log("Entering"); try { $xmlrpc_server = xmlrpc_server_create(); $aliases = array(); $this->addIntrospectionData($xmlrpc_server, $service_description, $aliases); $describeMethods = <<<END <?xml version="1.0" ?> <methodCall> <methodName>system.describeMethods</methodName> <params/> </methodCall> END; $desc = xmlrpc_server_call_method($xmlrpc_server, $describeMethods, null); xmlrpc_server_destroy($xmlrpc_server); header('Content-type: text/xml'); echo $desc; } catch (Exception $se) { echo $se->exceptionString() . "\n"; } }
/** * Create the service wrapper for a SCA Component. * * @param object $instance Instance * @param string $class_name Class * @param string $wsdl_filename WSDL */ public function __construct($instance, $class_name, $wsdl_filename) { SCA::$logger->log("Wrapper {$class_name}"); $this->class_name = $class_name; $this->instance_of_the_base_class = $instance; SCA::fillInReferences($this->instance_of_the_base_class); $this->annotations = new SCA_AnnotationReader($this->instance_of_the_base_class); // create an XML-RPC DAS and populate it with the valid types // that this service can create. $xsds = SCA_Helper::getAllXsds($class_name); $this->xmlrpc_das = new SCA_Bindings_Xmlrpc_DAS(); foreach ($xsds as $index => $xsds) { list($namespace, $xsdfile) = $xsds; if (SCA_Helper::isARelativePath($xsdfile)) { $xsd = SCA_Helper::constructAbsolutePath($xsdfile, $class_name); $this->xmlrpc_das->addTypesXsdFile($xsd); } } $this->xmlrpc_server = xmlrpc_server_create(); $service_description = $this->annotations->reflectService(); $serviceDescGen = new SCA_Bindings_Xmlrpc_ServiceDescriptionGenerator(); $serviceDescGen->addIntrospectionData($this->xmlrpc_server, $service_description, $this->method_aliases, $this->xmlrpc_das); }
/** * Creates a new instance of the Ripcord server. * * @param mixed $services . Optional. An object or array of objects. * The public methods in these objects will be exposed through the RPC server. * If the services array has non-numeric keys, the key for each object will define its namespace. * @param array $options . Optional. Allows you to override the default server settings. Accepted key names are: * - 'documentor': allows you to specify an alternative HTML documentor class, no HTML documentor. * - 'name' : The name of the server, used by the default HTML documentor. * - 'css' : An url of a css file to link to in the HTML documentation. * - 'wsdl' : The wsdl 1.0 description of this service ('soap 1.1' version, or the 'auto' version * - 'wsdl2' : The wsdl 2.0 description of this service * In addition you can set any of the outputOptions for the xmlrpc server. * @param null $documentor * * @throws ConfigurationException when the xmlrpc extension in not available. * * @see Ripcord_Server::setOutputOption() */ public function __construct($services = null, $options = null, $documentor = null) { if (!function_exists('xmlrpc_server_create')) { throw new ConfigurationException('PHP XMLRPC library is not installed', Ripcord::XMLRPC_NOT_INSTALLED); } $this->xmlrpc = xmlrpc_server_create(); if (isset($services)) { if (is_array($services)) { foreach ($services as $serviceName => $service) { $this->addService($service, $serviceName); } } else { $this->addService($services); } } if (isset($documentor) && is_object($documentor)) { $this->documentor = $documentor; xmlrpc_server_register_introspection_callback($this->xmlrpc, [$this->documentor, 'getIntrospectionXML']); } if (isset($options)) { $this->outputOptions = array_merge($this->outputOptions, $options); } }
function processRequest(&$request_xml) { // define XML-RPC server $server = xmlrpc_server_create(); // log for debuggin $fp = fopen("/var/tmp/ws_request.log", "a"); fwrite($fp, date("H:i") . "\n"); fwrite($fp, $request_xml); fwrite($fp, "\n\n"); fclose($fp); // register methods xmlrpc_server_register_method($server, "getQueueValues", "rpc_get_queue_values"); xmlrpc_server_register_method($server, "pushValue", "rpc_push_value"); xmlrpc_server_register_method($server, "getStateData", "rpc_get_state_data"); xmlrpc_server_register_method($server, "setStateData", "rpc_set_state_data"); xmlrpc_server_register_method($server, "helloWorld", "rpc_hello_world"); xmlrpc_server_register_method($server, "noop", "rpc_hello_world"); // call the method $response =& xmlrpc_server_call_method($server, $request_xml, ''); // send back the respond print $response; // release resources xmlrpc_server_destroy($server); }
/** * Creates a class instance. */ protected function __construct() { parent::__construct(); $this->server = xmlrpc_server_create(); }
<?php class SOAP_Array { public function get($id) { return $this->add($id); } } $xml = xmlrpc_server_create(); $Myrequest = '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>GetProducts</methodName><params><param><value><dateTime.iso8601>20060922T14:26:19</dateTime.iso8601></value></param></params></methodCall>'; class MyClass { function GetProducts($dummy, $time) { return array('faultString' => $time); } } $myclass = new MyClass(); xmlrpc_server_register_method($xml, 'GetProducts', array($myclass, 'GetProducts')); $response = xmlrpc_server_call_method($xml, $Myrequest, null); var_dump($response); echo "Done\n";
/* * This handler takes one parameter, and returns a struct containing three * elements, times10, times100 and times1000, the result of multiplying the * number by 10, 100 and 1000. */ function validator1_simpleStructReturnTest($method_name, $params, $app_data) { $xStruct = array(); $iIncoming = array_pop($params); $xStruct["times10"] = $iIncoming * 10; $xStruct["times100"] = $iIncoming * 100; $xStruct["times1000"] = $iIncoming * 1000; return $xStruct; } /* create a new server object */ $server = xmlrpc_server_create(); xmlrpc_server_register_method($server, "validator1.arrayOfStructsTest", "validator1_arrayOfStructsTest"); xmlrpc_server_register_method($server, "validator1.countTheEntities", "validator1_countTheEntities"); xmlrpc_server_register_method($server, "validator1.easyStructTest", "validator1_easyStructTest"); xmlrpc_server_register_method($server, "validator1.echoStructTest", "validator1_echoStructTest"); xmlrpc_server_register_method($server, "validator1.manyTypesTest", "validator1_manyTypesTest"); xmlrpc_server_register_method($server, "validator1.moderateSizeArrayCheck", "validator1_moderateSizeArrayCheck"); xmlrpc_server_register_method($server, "validator1.nestedStructTest", "validator1_nestedStructTest"); xmlrpc_server_register_method($server, "validator1.simpleStructReturnTest", "validator1_simpleStructReturnTest"); // name differently for soap. xmlrpc_server_register_method($server, "arrayOfStructsTest", "validator1_arrayOfStructsTest"); xmlrpc_server_register_method($server, "countTheEntities", "validator1_countTheEntities"); xmlrpc_server_register_method($server, "easyStructTest", "validator1_easyStructTest"); xmlrpc_server_register_method($server, "echoStructTest", "validator1_echoStructTest"); xmlrpc_server_register_method($server, "manyTypesTest", "validator1_manyTypesTest"); xmlrpc_server_register_method($server, "moderateSizeArrayCheck", "validator1_moderateSizeArrayCheck");
/** * フレームワークの処理を実行する(XMLRPC) * * @access private * @param mixed $action_name 指定のアクション名 * @return mixed 0:正常終了 Ethna_Error:エラー */ function _trigger_XMLRPC($action_name = "") { // prepare xmlrpc server $xmlrpc_gateway_method_name = "_Ethna_XmlrpcGateway"; $xmlrpc_server = xmlrpc_server_create(); $method = null; $param = xmlrpc_decode_request(file_get_contents('php://input'), $method); $this->xmlrpc_method_name = $method; $request = xmlrpc_encode_request($xmlrpc_gateway_method_name, $param, array('output_type' => 'xml', 'verbosity' => 'pretty', 'escaping' => array('markup'), 'version' => 'xmlrpc', 'encoding' => 'utf-8')); xmlrpc_server_register_method($xmlrpc_server, $xmlrpc_gateway_method_name, $xmlrpc_gateway_method_name); // send request $r = xmlrpc_server_call_method($xmlrpc_server, $request, null, array('output_type' => 'xml', 'verbosity' => 'pretty', 'escaping' => array('markup'), 'version' => 'xmlrpc', 'encoding' => 'utf-8')); header('Content-Length: ' . strlen($r)); header('Content-Type: text/xml; charset=UTF-8'); print $r; }
private static function initialize($server = true, $data = false) { if ($data) { if (!self::$xmlreq && !(self::$xmlreq = http_get_request_body())) { throw new Exception("Failed to fetch XMLRPC request body"); } } if ($server) { if (!self::$xmlrpc && !(self::$xmlrpc = xmlrpc_server_create())) { throw new Exception("Failed to initialize XMLRPC server"); } ++self::$refcnt; } }
/** * Initialize the object (if necessary), execute the method or function, and * return the response * * @param string $includefile The file that contains the object definition * @param string $methodname The name of the method to execute * @param string $method The full path to the method * @param string $payload The XML-RPC request payload * @param string $class The name of the class to instantiate (or false) * * @throws mnet_server_exception * * @return string The XML-RPC response */ function mnet_server_invoke_dangerous_method($includefile, $methodname, $method, $payload) { if (file_exists($CFG->dirroot . $includefile)) { require_once $CFG->dirroot . $includefile; // $callprefix matches the rpc convention // of not having a leading slash $callprefix = preg_replace('!^/!', '', $includefile); } else { throw new mnet_server_exception(705, "nosuchfile"); } if ($functionname != clean_param($functionname, PARAM_PATH)) { throw new mnet_server_exception(7012, "nosuchfunction"); } if (!function_exists($functionname)) { throw new mnet_server_exception(7012, "nosuchfunction"); } $xmlrpcserver = xmlrpc_server_create(); xmlrpc_server_register_method($xmlrpcserver, $method, 'mnet_server_dummy_method'); $response = xmlrpc_server_call_method($xmlrpcserver, $payload, $methodname, array("encoding" => "utf-8")); xmlrpc_server_destroy($xmlrpcserver); return $response; }
public function __construct() { $this->server = xmlrpc_server_create(); }
function RPCServer() { $this->_server = xmlrpc_server_create(); $this->methods = array(); $this->services = array(); }
/** * Creates a new instance of the Ripcord server. * @param mixed $services. Optional. An object or array of objects. The public methods in these objects will be exposed * through the RPC server. If the services array has non-numeric keys, the key for each object will define its namespace. * @param array $options. Optional. Allows you to override the default server settings. Accepted key names are: * - 'documentor': allows you to specify an alternative HTML documentor class, or if set to false, no HTML documentor. * - 'name' : The name of the server, used by the default HTML documentor. * - 'css' : An url of a css file to link to in the HTML documentation. * - 'wsdl' : The wsdl 1.0 description of this service (only usefull if you run the 'soap 1.1' version, or the 'auto' version * - 'wsdl2' : The wsdl 2.0 description of this service * In addition you can set any of the outputOptions for the xmlrpc server. * @see Ripcord_Server::setOutputOption() * @throws Ripcord_InvalidArgumentException (ripcord::unknownServiceType) when passed an incorrect service * @throws Ripcord_ConfigurationException (ripcord::xmlrpcNotInstalled) when the xmlrpc extension in not available. */ function __construct($services = null, $options = null, $documentor = null) { if (!function_exists('xmlrpc_server_create')) { throw new Ripcord_ConfigurationException('PHP XMLRPC library is not installed', ripcord::xmlrpcNotInstalled); } libxml_disable_entity_loader(); // prevents XXE attacks $this->xmlrpc = xmlrpc_server_create(); if (isset($services)) { if (is_array($services)) { foreach ($services as $serviceName => $service) { $this->addService($service, $serviceName); } } else { $this->addService($services); } } if (isset($documentor) && is_object($documentor)) { $this->documentor = $documentor; xmlrpc_server_register_introspection_callback($this->xmlrpc, array($this->documentor, 'getIntrospectionXML')); } if (isset($options)) { $this->outputOptions = array_merge($this->outputOptions, $options); } }
/** * Initialize the object (if necessary), execute the method or function, and * return the response * * @param string $includefile The file that contains the object definition * @param string $methodname The name of the method to execute * @param string $method The full path to the method * @param string $payload The XML-RPC request payload * @param string $class The name of the class to instantiate (or false) * @return string The XML-RPC response */ function mnet_server_invoke_method($includefile, $methodname, $method, $payload, $class = false) { $permission = mnet_permit_rpc_call($includefile, $methodname, $class); if (RPC_NOSUCHFILE == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(705, 'nosuchfile', $includefile)); } if (RPC_NOSUCHFUNCTION == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(706, 'nosuchfunction')); } if (RPC_FORBIDDENFUNCTION == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(707, 'forbidden-function')); } if (RPC_NOSUCHCLASS == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(7013, 'nosuchfunction')); } if (RPC_NOSUCHMETHOD == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(7014, 'nosuchmethod')); } if (RPC_NOSUCHFUNCTION == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(7014, 'nosuchmethod')); } if (RPC_FORBIDDENMETHOD == $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(7015, 'nosuchfunction')); } if (0 < $permission) { // Generate error response - unable to locate function exit(mnet_server_fault(7019, 'unknownerror')); } if (RPC_OK == $permission) { $xmlrpcserver = xmlrpc_server_create(); $bool = xmlrpc_server_register_method($xmlrpcserver, $method, 'mnet_server_dummy_method'); $response = xmlrpc_server_call_method($xmlrpcserver, $payload, $methodname, array("encoding" => "utf-8")); $bool = xmlrpc_server_destroy($xmlrpcserver); return $response; } }
function xmlrpcgetaffiliations() { global $xmlrpc_handle, $HTTP_RAW_POST_DATA; # create xmlrpc handle $xmlrpc_handle = xmlrpc_server_create(); # register functions available via rpc calls xmlrpc_server_register_method($xmlrpc_handle, "XMLRPCaffiliations", "xmlRPChandler"); print xmlrpc_server_call_method($xmlrpc_handle, $HTTP_RAW_POST_DATA, ''); xmlrpc_server_destroy($xmlrpc_handle); semUnlock(); dbDisconnect(); exit; }