cvs: pearweb /include pear-database.php pear-format-xmlrpc.php xmlrpc.inc xmlrpcs.inc /public_html index.php test.php xmlrpc.php
| From: | Stig Bakken | Date: | Sat, 21 Apr 2001 06:40:03 +0000 |
| Subject: | cvs: pearweb /include pear-database.php pear-format-xmlrpc.php xmlrpc.inc xmlrpcs.inc /public_html index.php test.php xmlrpc.php | ||
| Groups: | php.pear.cvs | ||
| Request: | Send a blank email to pear-cvs+get-70@lists.php.net to get a copy of this message | ||
ssb Fri Apr 20 23:40:03 2001 EDT
Removed files:
/pearweb/include xmlrpc.inc xmlrpcs.inc
Modified files:
/pearweb/include pear-database.php pear-format-xmlrpc.php
/pearweb/public_html index.php test.php xmlrpc.php
Log:
* now using the PEAR XML-RPC classes
Index: pearweb/include/pear-database.php diff -u pearweb/include/pear-database.php:1.3 pearweb/include/pear-database.php:1.4 --- pearweb/include/pear-database.php:1.3 Wed Apr 18 17:59:05 2001 +++ pearweb/include/pear-database.php Fri Apr 20 23:40:03 2001 @@ -94,6 +94,63 @@ return $recent; } + +function release_upload($package, $version, $relnotes, &$tarball, $md5sum) +{ + global $_return_value; // used by XML-RPC backend + global $dbh, $auth_user; + + // (2) verify that package exists + $test = $dbh->getOne("SELECT name FROM packages WHERE name = ?", + array($package)); + if (isset($_return_value)) return $_return_value; + if (empty($test)) { + return "no such package: $package"; + } + + // (3) verify that version does not exist + $test = $dbh->getOne("SELECT version FROM releases ". + "WHERE package = ? AND version = ?", + array($package, $version)); + if (isset($_return_value)) return $_return_value; + if ($test) { + return "already exists: $package $version"; + } + + // (4) store tar ball to temp file + $tempfile = sprintf("%s/%s%s-%s.tgz", + PEAR_TARBALL_DIR, ".new.", $package, $version); + $file = sprintf("%s/%s-%s.tgz", PEAR_TARBALL_DIR, $package, $version); + $fp = @fopen($tempfile, "w"); + if (!$fp) { + return "fopen failed: $php_errormsg"; + } + fwrite($fp, $distfile); + fclose($fp); + // later: do lots of integrity checks on the tarball + if (!@rename($tempfile, $file)) { + return "rename failed: $php_errormsg"; + } + + // (5) verify MD5 checksum + ob_start(); + readfile($file); + $data = ob_get_contents(); + ob_end_clean(); + if (md5($data) != $md5sum) { + return "bad md5 checksum"; + } + + // Update releases table + $query = "INSERT INTO releases VALUES(?,?,?,?,?,?,?)"; + $sth = $dbh->prepare($query); + $dbh->execute($sth, array($package, $version, $auth_user->handle, + gmdate('Y-m-d H:i'), $relnotes, $md5sum, + $file)); + if (isset($_return_value)) return $_return_value; + +} + function invalidHandle($handle) { if (preg_match('/^[a-z]+-?[a-z]+$/i', $handle)) { return false; Index: pearweb/include/pear-format-xmlrpc.php diff -u pearweb/include/pear-format-xmlrpc.php:1.1 pearweb/include/pear-format-xmlrpc.php:1.2 --- pearweb/include/pear-format-xmlrpc.php:1.1 Fri Apr 20 03:31:36 2001 +++ pearweb/include/pear-format-xmlrpc.php Fri Apr 20 23:40:03 2001 @@ -1,7 +1,7 @@ <?php -require_once "xmlrpc.inc"; -require_once "xmlrpcs.inc"; +require_once "XML/RPC.php"; +require_once "XML/RPC/Server.php"; $GLOBALS['_return_value'] = null; @@ -28,23 +28,23 @@ } function &xmlrpc_error($str) { - global $xmlrpcerruser; - $error = new xmlrpcresp(0, $xmlrpcerruser, $str); + global $XML_RPC_erruser; + $error = new XML_RPC_Response(0, $XML_RPC_erruser, $str); return $error; } function report_error($error) { - global $_return_value, $xmlrpcerruser; + global $_return_value, $XML_RPC_erruser; if (PEAR::isError($error)) { $error = $error->getMessage(); } - $_return_value = new xmlrpcresp(0, $xmlrpcerruser, $error); + $_return_value = new XML_RPC_Response(0, $XML_RPC_erruser, $error); } function error_handler($errobj) { - global $_return_value, $xmlrpcerruser; + global $_return_value, $XML_RPC_erruser; if (PEAR::isError($errobj)) { $msg = $errobj->getMessage(); $info = $errobj->getUserInfo(); Index: pearweb/public_html/index.php diff -u pearweb/public_html/index.php:1.11 pearweb/public_html/index.php:1.12 --- pearweb/public_html/index.php:1.11 Fri Apr 20 18:43:50 2001 +++ pearweb/public_html/index.php Fri Apr 20 23:40:03 2001 @@ -4,14 +4,12 @@ print "<!-- $REMOTE_ADDR -->\n"; -if ($SERVER_NAME != "pear.php.net" || $REMOTE_ADDR == '213.188.9.2') { +menu_link("Documentation", "http://php.net/manual/en/pear.php"); + +if ($SERVER_NAME != "pear.php.net") { menu_link("Browse Packages", "packages.php"); menu_link("Want to contribute?", "signup.php"); menu_link("Upload Release", "release-upload.php"); -} -menu_link("Documentation", "http://php.net/manual/en/pear.php"); - -if ($SERVER_NAME != "pear.php.net" || $REMOTE_ADDR == '213.188.9.2') { print "<B>Recent Releases</B>\n"; $recent = get_recent_releases(); print "<TABLE>"; Index: pearweb/public_html/test.php diff -u pearweb/public_html/test.php:1.1 pearweb/public_html/test.php:1.2 --- pearweb/public_html/test.php:1.1 Fri Apr 20 03:31:36 2001 +++ pearweb/public_html/test.php Fri Apr 20 23:40:03 2001 @@ -1,6 +1,6 @@ <?php -require_once "xmlrpc.inc"; +require_once "XML/RPC.php"; response_header("XML-RPC test"); @@ -9,13 +9,18 @@ $data = ob_get_contents(); ob_end_clean(); -$f = new xmlrpcmsg('release.upload', - array(new xmlrpcval("HTTP", $xmlrpcString), - new xmlrpcval("1.0", $xmlrpcString), - new xmlrpcval("Initial release", $xmlrpcString), - new xmlrpcval($data, $xmlrpcBase64), - new xmlrpcval(md5($data), $xmlrpcString))); -$c = new xmlrpc_client("/xmlrpc.php", "pear.localdomain", 80); +$f = new XML_RPC_Message('release.upload', + array(new XML_RPC_Value("HTTP", + $XML_RPC_String), + new XML_RPC_Value("1.0", + $XML_RPC_String), + new XML_RPC_Value("Initial release", + $XML_RPC_String), + new XML_RPC_Value($data, + $XML_RPC_Base64), + new XML_RPC_Value(md5($data), + $XML_RPC_String))); +$c = new XML_RPC_Client("/xmlrpc.php", "pear.localdomain", 80); $c->setCredentials("ssb", "bing"); $c->setDebug(1); $r=$c->send($f); Index: pearweb/public_html/xmlrpc.php diff -u pearweb/public_html/xmlrpc.php:1.2 pearweb/public_html/xmlrpc.php:1.3 --- pearweb/public_html/xmlrpc.php:1.2 Fri Apr 20 03:31:36 2001 +++ pearweb/public_html/xmlrpc.php Fri Apr 20 23:40:03 2001 @@ -1,35 +1,25 @@ <?php // -*- C++ -*- -require_once "xmlrpc.inc"; -require_once "xmlrpcs.inc"; +require_once "XML/RPC/Server.php"; ini_set("track_errors", true); $GLOBALS['release_upload_sig'] = -array( - array($GLOBALS['xmlrpcString'], // return type - $GLOBALS['xmlrpcString'], // package - $GLOBALS['xmlrpcString'], // version - $GLOBALS['xmlrpcString'], // release notes - $GLOBALS['xmlrpcBase64'], // tar ball - $GLOBALS['xmlrpcString']),// md5sum - ); +array(array('string', // return type + 'string', // package + 'string', // version + 'string', // release notes + 'base64', // tar ball + 'string'),// md5sum + ); $GLOBALS['release_upload_doc'] = "Upload a new release for a package."; -function release_upload($m) +function xmlrpc_release_upload($m) { - global $_return_value, $xmlrpcerruser, $xmlrpcBoolean, $dbh, $auth_user; + global $_return_value; // parameters: package, version, releasenotes, tarball, md5sum // implicit: doneby, releasedate - // 1. verify that user has access - // 2. verify that package exists - // 3. verify that version does not exist - // 4. store tar ball to temp file - // 5. verify md5 checksum - - // later: do lots of integrity checks on the tarball - $mpackage = $m->getParam(0); $mversion = $m->getParam(1); $mrelnotes = $m->getParam(2); @@ -46,63 +36,19 @@ auth_require(0); if (isset($_return_value)) return $_return_value; // XXX FIXME check acl table - - // (2) verify that package exists - $test = $dbh->getOne("SELECT name FROM packages WHERE name = ?", - array($package)); - if (isset($_return_value)) return $_return_value; - if (empty($test)) { - return xmlrpc_error("nonexistant package: $package"); - } - - // (3) verify that version does not exist - $test = $dbh->getOne("SELECT version FROM releases ". - "WHERE package = ? AND version = ?", - array($package, $version)); - if (isset($_return_value)) return $_return_value; - if ($test) { - return xmlrpc_error("already exists: $package $version"); - } - - // (4) store tar ball to temp file - $tempfile = sprintf("%s/%s%s-%s.tgz", - PEAR_TARBALL_DIR, ".new.", $package,$version); - $file = sprintf("%s/%s-%s.tgz", PEAR_TARBALL_DIR, $package,$version); - $fp = @fopen($tempfile, "w"); - if (!$fp) { - return xmlrpc_error($php_errormsg); - } - fwrite($fp, $distfile); - fclose($fp); - if (!@rename($tempfile, $file)) { - return xmlrpc_error("rename failed: $php_errormsg"); - } - // (5) verify MD5 checksum - ob_start(); - readfile($file); - $data = ob_get_contents(); - ob_end_clean(); - if (md5($data) != $md5sum) { - return xmlrpc_error("bad md5 checksum"); + $ret = release_upload($package, $version, $relnotes, $distfile, $md5sum); + if ($ret === true) { + return new XML_RPC_Response(new xmlrpcval(1, $XML_RPC_Boolean)); + } else { + return xmlrpc_error($ret); } - - // Update releases table - $query = "INSERT INTO releases VALUES(?,?,?,?,?,?,?)"; - $sth = $dbh->prepare($query); - $dbh->execute($sth, array($package, $version, $auth_user->handle, - gmdate('Y-m-d H:i'), $relnotes, $md5sum, - $file)); - if (isset($_return_value)) return $_return_value; - - // success - return new xmlrpcresp(new xmlrpcval(1, $xmlrpcBoolean)); } -$s = new xmlrpc_server(array("release.upload" => - array("function" => "release_upload", - "signature" => $release_upload_sig, - "docstring" => $release_upload_doc), - )); +$s = new XML_RPC_Server(array("release.upload" => + array("function" => "xmlrpc_release_upload", + "signature" => $release_upload_sig, + "docstring" => $release_upload_doc), + )); ?>
Index: pearweb/include/pear-database.php diff -u pearweb/include/pear-database.php:1.3 pearweb/include/pear-database.php:1.4 --- pearweb/include/pear-database.php:1.3 Wed Apr 18 17:59:05 2001 +++ pearweb/include/pear-database.php Fri Apr 20 23:40:03 2001 @@ -94,6 +94,63 @@ return $recent; } + +function release_upload($package, $version, $relnotes, &$tarball, $md5sum) +{ + global $_return_value; // used by XML-RPC backend + global $dbh, $auth_user; + + // (2) verify that package exists + $test = $dbh->getOne("SELECT name FROM packages WHERE name = ?", + array($package)); + if (isset($_return_value)) return $_return_value; + if (empty($test)) { + return "no such package: $package"; + } + + // (3) verify that version does not exist + $test = $dbh->getOne("SELECT version FROM releases ". + "WHERE package = ? AND version = ?", + array($package, $version)); + if (isset($_return_value)) return $_return_value; + if ($test) { + return "already exists: $package $version"; + } + + // (4) store tar ball to temp file + $tempfile = sprintf("%s/%s%s-%s.tgz", + PEAR_TARBALL_DIR, ".new.", $package, $version); + $file = sprintf("%s/%s-%s.tgz", PEAR_TARBALL_DIR, $package, $version); + $fp = @fopen($tempfile, "w"); + if (!$fp) { + return "fopen failed: $php_errormsg"; + } + fwrite($fp, $distfile); + fclose($fp); + // later: do lots of integrity checks on the tarball + if (!@rename($tempfile, $file)) { + return "rename failed: $php_errormsg"; + } + + // (5) verify MD5 checksum + ob_start(); + readfile($file); + $data = ob_get_contents(); + ob_end_clean(); + if (md5($data) != $md5sum) { + return "bad md5 checksum"; + } + + // Update releases table + $query = "INSERT INTO releases VALUES(?,?,?,?,?,?,?)"; + $sth = $dbh->prepare($query); + $dbh->execute($sth, array($package, $version, $auth_user->handle, + gmdate('Y-m-d H:i'), $relnotes, $md5sum, + $file)); + if (isset($_return_value)) return $_return_value; + +} + function invalidHandle($handle) { if (preg_match('/^[a-z]+-?[a-z]+$/i', $handle)) { return false; Index: pearweb/include/pear-format-xmlrpc.php diff -u pearweb/include/pear-format-xmlrpc.php:1.1 pearweb/include/pear-format-xmlrpc.php:1.2 --- pearweb/include/pear-format-xmlrpc.php:1.1 Fri Apr 20 03:31:36 2001 +++ pearweb/include/pear-format-xmlrpc.php Fri Apr 20 23:40:03 2001 @@ -1,7 +1,7 @@ <?php -require_once "xmlrpc.inc"; -require_once "xmlrpcs.inc"; +require_once "XML/RPC.php"; +require_once "XML/RPC/Server.php"; $GLOBALS['_return_value'] = null; @@ -28,23 +28,23 @@ } function &xmlrpc_error($str) { - global $xmlrpcerruser; - $error = new xmlrpcresp(0, $xmlrpcerruser, $str); + global $XML_RPC_erruser; + $error = new XML_RPC_Response(0, $XML_RPC_erruser, $str); return $error; } function report_error($error) { - global $_return_value, $xmlrpcerruser; + global $_return_value, $XML_RPC_erruser; if (PEAR::isError($error)) { $error = $error->getMessage(); } - $_return_value = new xmlrpcresp(0, $xmlrpcerruser, $error); + $_return_value = new XML_RPC_Response(0, $XML_RPC_erruser, $error); } function error_handler($errobj) { - global $_return_value, $xmlrpcerruser; + global $_return_value, $XML_RPC_erruser; if (PEAR::isError($errobj)) { $msg = $errobj->getMessage(); $info = $errobj->getUserInfo(); Index: pearweb/public_html/index.php diff -u pearweb/public_html/index.php:1.11 pearweb/public_html/index.php:1.12 --- pearweb/public_html/index.php:1.11 Fri Apr 20 18:43:50 2001 +++ pearweb/public_html/index.php Fri Apr 20 23:40:03 2001 @@ -4,14 +4,12 @@ print "<!-- $REMOTE_ADDR -->\n"; -if ($SERVER_NAME != "pear.php.net" || $REMOTE_ADDR == '213.188.9.2') { +menu_link("Documentation", "http://php.net/manual/en/pear.php"); + +if ($SERVER_NAME != "pear.php.net") { menu_link("Browse Packages", "packages.php"); menu_link("Want to contribute?", "signup.php"); menu_link("Upload Release", "release-upload.php"); -} -menu_link("Documentation", "http://php.net/manual/en/pear.php"); - -if ($SERVER_NAME != "pear.php.net" || $REMOTE_ADDR == '213.188.9.2') { print "<B>Recent Releases</B>\n"; $recent = get_recent_releases(); print "<TABLE>"; Index: pearweb/public_html/test.php diff -u pearweb/public_html/test.php:1.1 pearweb/public_html/test.php:1.2 --- pearweb/public_html/test.php:1.1 Fri Apr 20 03:31:36 2001 +++ pearweb/public_html/test.php Fri Apr 20 23:40:03 2001 @@ -1,6 +1,6 @@ <?php -require_once "xmlrpc.inc"; +require_once "XML/RPC.php"; response_header("XML-RPC test"); @@ -9,13 +9,18 @@ $data = ob_get_contents(); ob_end_clean(); -$f = new xmlrpcmsg('release.upload', - array(new xmlrpcval("HTTP", $xmlrpcString), - new xmlrpcval("1.0", $xmlrpcString), - new xmlrpcval("Initial release", $xmlrpcString), - new xmlrpcval($data, $xmlrpcBase64), - new xmlrpcval(md5($data), $xmlrpcString))); -$c = new xmlrpc_client("/xmlrpc.php", "pear.localdomain", 80); +$f = new XML_RPC_Message('release.upload', + array(new XML_RPC_Value("HTTP", + $XML_RPC_String), + new XML_RPC_Value("1.0", + $XML_RPC_String), + new XML_RPC_Value("Initial release", + $XML_RPC_String), + new XML_RPC_Value($data, + $XML_RPC_Base64), + new XML_RPC_Value(md5($data), + $XML_RPC_String))); +$c = new XML_RPC_Client("/xmlrpc.php", "pear.localdomain", 80); $c->setCredentials("ssb", "bing"); $c->setDebug(1); $r=$c->send($f); Index: pearweb/public_html/xmlrpc.php diff -u pearweb/public_html/xmlrpc.php:1.2 pearweb/public_html/xmlrpc.php:1.3 --- pearweb/public_html/xmlrpc.php:1.2 Fri Apr 20 03:31:36 2001 +++ pearweb/public_html/xmlrpc.php Fri Apr 20 23:40:03 2001 @@ -1,35 +1,25 @@ <?php // -*- C++ -*- -require_once "xmlrpc.inc"; -require_once "xmlrpcs.inc"; +require_once "XML/RPC/Server.php"; ini_set("track_errors", true); $GLOBALS['release_upload_sig'] = -array( - array($GLOBALS['xmlrpcString'], // return type - $GLOBALS['xmlrpcString'], // package - $GLOBALS['xmlrpcString'], // version - $GLOBALS['xmlrpcString'], // release notes - $GLOBALS['xmlrpcBase64'], // tar ball - $GLOBALS['xmlrpcString']),// md5sum - ); +array(array('string', // return type + 'string', // package + 'string', // version + 'string', // release notes + 'base64', // tar ball + 'string'),// md5sum + ); $GLOBALS['release_upload_doc'] = "Upload a new release for a package."; -function release_upload($m) +function xmlrpc_release_upload($m) { - global $_return_value, $xmlrpcerruser, $xmlrpcBoolean, $dbh, $auth_user; + global $_return_value; // parameters: package, version, releasenotes, tarball, md5sum // implicit: doneby, releasedate - // 1. verify that user has access - // 2. verify that package exists - // 3. verify that version does not exist - // 4. store tar ball to temp file - // 5. verify md5 checksum - - // later: do lots of integrity checks on the tarball - $mpackage = $m->getParam(0); $mversion = $m->getParam(1); $mrelnotes = $m->getParam(2); @@ -46,63 +36,19 @@ auth_require(0); if (isset($_return_value)) return $_return_value; // XXX FIXME check acl table - - // (2) verify that package exists - $test = $dbh->getOne("SELECT name FROM packages WHERE name = ?", - array($package)); - if (isset($_return_value)) return $_return_value; - if (empty($test)) { - return xmlrpc_error("nonexistant package: $package"); - } - - // (3) verify that version does not exist - $test = $dbh->getOne("SELECT version FROM releases ". - "WHERE package = ? AND version = ?", - array($package, $version)); - if (isset($_return_value)) return $_return_value; - if ($test) { - return xmlrpc_error("already exists: $package $version"); - } - - // (4) store tar ball to temp file - $tempfile = sprintf("%s/%s%s-%s.tgz", - PEAR_TARBALL_DIR, ".new.", $package,$version); - $file = sprintf("%s/%s-%s.tgz", PEAR_TARBALL_DIR, $package,$version); - $fp = @fopen($tempfile, "w"); - if (!$fp) { - return xmlrpc_error($php_errormsg); - } - fwrite($fp, $distfile); - fclose($fp); - if (!@rename($tempfile, $file)) { - return xmlrpc_error("rename failed: $php_errormsg"); - } - // (5) verify MD5 checksum - ob_start(); - readfile($file); - $data = ob_get_contents(); - ob_end_clean(); - if (md5($data) != $md5sum) { - return xmlrpc_error("bad md5 checksum"); + $ret = release_upload($package, $version, $relnotes, $distfile, $md5sum); + if ($ret === true) { + return new XML_RPC_Response(new xmlrpcval(1, $XML_RPC_Boolean)); + } else { + return xmlrpc_error($ret); } - - // Update releases table - $query = "INSERT INTO releases VALUES(?,?,?,?,?,?,?)"; - $sth = $dbh->prepare($query); - $dbh->execute($sth, array($package, $version, $auth_user->handle, - gmdate('Y-m-d H:i'), $relnotes, $md5sum, - $file)); - if (isset($_return_value)) return $_return_value; - - // success - return new xmlrpcresp(new xmlrpcval(1, $xmlrpcBoolean)); } -$s = new xmlrpc_server(array("release.upload" => - array("function" => "release_upload", - "signature" => $release_upload_sig, - "docstring" => $release_upload_doc), - )); +$s = new XML_RPC_Server(array("release.upload" => + array("function" => "xmlrpc_release_upload", + "signature" => $release_upload_sig, + "docstring" => $release_upload_doc), + )); ?>