GIF89a;
| Direktori : /home/serb/public_html/chat/bot/programe/src/ |
| Current File : /home/serb/public_html/chat/bot/programe/src/xmlrpcserver.php |
<?php
/*
XML-RPC Server for Program E
Copyright 2002, Chris Jackson
Modified by Paul Rydell
This file is part of Program E.
Program E is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Program E is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Program E; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* XML-RPC Server for Program E
*
* XML-RPC Server for Program E
* @author Chris Jackson
* @copyright 2002
* @version 0.0.8
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @package Program_E
*/
include "respond.php";
// a function to ensure the xmlrpc extension is loaded.
// xmlrpc_epi_dir = directory where libxmlrpc.so.0 is located
// xmlrpc_php_dir = directory where xmlrpc-epi-php.so is located
function xu_load_extension($xmlrpc_php_dir="no-debug-non-zts-20001222/xmlrpc") {
$bSuccess = true;
putenv("LD_LIBRARY_PATH=/usr/lib/php4/apache/xmlrpc/");
if ($xmlrpc_php_dir) {
$xmlrpc_php_dir .= '/';
}
if (!extension_loaded("xmlrpc")) {
$bSuccess = dl($xmlrpc_php_dir . "xmlrpc-epi-php.so");
}
return $bSuccess;
}
function xmlrespondepi($method_name, $params, $app_data) {
$input=$params[0];
$myid=$params[1];
$botname=$params[2];
$response = replybotname(stripslashes($input),$myid,$botname);
return($response);
}
function xmlrespondul($m)
{
global $xmlrpcerruser;
$err="";
$input=$m->getParam(0);
$myid=$m->getParam(1);
$botname=$m->getParam(2);
if ((isset($input) && ($input->scalartyp()=="string")) && (isset($myid) && ($myid->scalartyp()=="string")) && && (isset($botname) && ($botname->scalartyp()=="string"))) {
$response = replybotname($input->scalarval(), $myid->scalarval(), $botname->scalarval());
} else {
$err="Two string parameters required";
}
if ($err) {
return new xmlrpcresp(0, $xmlrpcerruser, $err);
} else {
$arrpatternsmatched=new xmlrpcval(array(),"array");
$arrinputs=new xmlrpcval(array(),"array");
for ($x=0;$x<sizeof($response->inputs);$x++){
$ok=$arrinputs->addScalar($response->inputs[$x]);
}
for ($x=0;$x<sizeof($response->patternsmatched);$x++){
$ok=$arrpatternsmatched->addScalar($response->patternsmatched[$x]);
}
return new xmlrpcresp(new xmlrpcval(array(
"errors" => new xmlrpcval($response->errors),
"timer" => new xmlrpcval($response->timer, "double"),
"response" => new xmlrpcval($response->response),
"patternsmatched" => $arrpatternsmatched,
"inputs" => $arrinputs
), "struct"));
}
}
// Check if they have xmlrpc-epi or if they will have to use include stuff.
if (xu_load_extension()){
include "xmlrpc/xmlrpc_utils.php";
$request_xml = $_RAW_POST_DATA;
$server = xmlrpc_server_create();
xmlrpc_server_register_method($server,'programe.getResponse', 'xmlrespondepi');
$response = xmlrpc_server_call_method($server, $request_xml, null);
xu_server_send_http_response($response);
} else {
include "xmlrpc/xmlrpc.inc";
include "xmlrpc/xmlrpcs.inc";
// build a signature
$programeresponse_sig=array(array("struct", $xmlrpcString, $xmlrpcString));
// and the doc
$programeresponse_doc='When passed a query as a string and a unique ID as a string, Program E returns a response.';
$server = new xmlrpc_server(array("programe.getResponse" => array("function" => "xmlrespondul", "signature" => $programeresponse_sig, "docstring" => $programeresponse_doc)));
}
?>