getNumParams(); $i++) { $value = $params->getParam($i); $array[] = XML_RPC_decode($value); } return $array; } /* * xmlrpc_value_to_php: Convert an XMLRPC value into a PHP scalar/array and return it. */ function xmlrpc_value_to_php($raw_value) { return XML_RPC_decode($raw_value); } /* * php_value_to_xmlrpc: Convert a PHP scalar or array into its XMLRPC equivalent. */ function php_value_to_xmlrpc($value, $force_array = false) { $toreturn = XML_RPC_encode($value); return $force_array ? array($toreturn) : $toreturn; } /* * xmlrpc_auth: Handle basic crypt() authentication of an XMLRPC request. This function assumes that * $params[0] contains the local system's plaintext password and removes the password from * the array before returning it. */ function xmlrpc_auth(&$params) { global $config, $_SERVER; /* XXX: Should teach caller to pass username and use it here. */ /* XXX: Should clarify from old behaviour what is in params[0] that differs from params['xmlrpcauth'] */ if (isset($config['system']['webgui']['authmode'])) { $authcfg = auth_get_authserver($config['system']['webgui']['authmode']); if (authenticate_user("admin", $params[0], $authcfg) || authenticate_user("admin", $params[0])) { array_shift($params); unset($params['xmlrpcauth']); return true; } else if (!empty($params['xmlrpcauth']) && (authenticate_user("admin", $params['xmlrpcauth'], $authcfg) || authenticate_user("admin", $params['xmlrpcauth']))) { array_shift($params); unset($params['xmlrpcauth']); return true; } } else if (authenticate_user("admin", $params[0])) { array_shift($params); unset($params['xmlrpcauth']); return true; } else if (!empty($params['xmlrpcauth']) && authenticate_user("admin", $params['xmlrpcauth'])) { array_shift($params); unset($params['xmlrpcauth']); return true; } array_shift($params); unset($params['xmlrpcauth']); log_error(sprintf(gettext("webConfigurator authentication error for 'admin' from %s during sync settings."), $_SERVER['REMOTE_ADDR'])); return false; } ?>