⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote.php

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PHP
📖 第 1 页 / 共 3 页
字号:
<?php/** * PEAR_Command_Remote (remote-info, list-upgrades, remote-list, search, list-all, download, * clear-cache commands) * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt.  If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category   pear * @package    PEAR * @author     Stig Bakken <ssb@php.net> * @author     Greg Beaver <cellog@php.net> * @copyright  1997-2006 The PHP Group * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    CVS: $Id: Remote.php,v 1.105 2007/06/22 13:49:30 cellog Exp $ * @link       http://pear.php.net/package/PEAR * @since      File available since Release 0.1 *//** * base class */require_once 'PEAR/Command/Common.php';require_once 'PEAR/REST.php';/** * PEAR commands for remote server querying * * @category   pear * @package    PEAR * @author     Stig Bakken <ssb@php.net> * @author     Greg Beaver <cellog@php.net> * @copyright  1997-2006 The PHP Group * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    Release: 1.6.1 * @link       http://pear.php.net/package/PEAR * @since      Class available since Release 0.1 */class PEAR_Command_Remote extends PEAR_Command_Common{    // {{{ command definitions    var $commands = array(        'remote-info' => array(            'summary' => 'Information About Remote Packages',            'function' => 'doRemoteInfo',            'shortcut' => 'ri',            'options' => array(),            'doc' => '<package>Get details on a package from the server.',            ),        'list-upgrades' => array(            'summary' => 'List Available Upgrades',            'function' => 'doListUpgrades',            'shortcut' => 'lu',            'options' => array(                'channelinfo' => array(                    'shortopt' => 'i',                    'doc' => 'output fully channel-aware data, even on failure',                    ),            ),            'doc' => '[preferred_state]List releases on the server of packages you have installed wherea newer version is available with the same release state (stable etc.)or the state passed as the second parameter.'            ),        'remote-list' => array(            'summary' => 'List Remote Packages',            'function' => 'doRemoteList',            'shortcut' => 'rl',            'options' => array(                'channel' =>                    array(                    'shortopt' => 'c',                    'doc' => 'specify a channel other than the default channel',                    'arg' => 'CHAN',                    )                ),            'doc' => 'Lists the packages available on the configured server along with thelatest stable release of each package.',            ),        'search' => array(            'summary' => 'Search remote package database',            'function' => 'doSearch',            'shortcut' => 'sp',            'options' => array(                'channel' =>                    array(                    'shortopt' => 'c',                    'doc' => 'specify a channel other than the default channel',                    'arg' => 'CHAN',                    ),                'allchannels' => array(                    'shortopt' => 'a',                    'doc' => 'search packages from all known channels',                    ),                'channelinfo' => array(                    'shortopt' => 'i',                    'doc' => 'output fully channel-aware data, even on failure',                    ),                ),            'doc' => '[packagename] [packageinfo]Lists all packages which match the search parameters.  The firstparameter is a fragment of a packagename.  The default channelwill be used unless explicitly overridden.  The second parameterwill be used to match any portion of the summary/description',            ),        'list-all' => array(            'summary' => 'List All Packages',            'function' => 'doListAll',            'shortcut' => 'la',            'options' => array(                'channel' =>                    array(                    'shortopt' => 'c',                    'doc' => 'specify a channel other than the default channel',                    'arg' => 'CHAN',                    ),                'channelinfo' => array(                    'shortopt' => 'i',                    'doc' => 'output fully channel-aware data, even on failure',                    ),                ),            'doc' => 'Lists the packages available on the configured server along with thelatest stable release of each package.',            ),        'download' => array(            'summary' => 'Download Package',            'function' => 'doDownload',            'shortcut' => 'd',            'options' => array(                'nocompress' => array(                    'shortopt' => 'Z',                    'doc' => 'download an uncompressed (.tar) file',                    ),                ),            'doc' => '<package>...Download package tarballs.  The files will be named as suggested by theserver, for example if you download the DB package and the latest stableversion of DB is 1.6.5, the downloaded file will be DB-1.6.5.tgz.',            ),        'clear-cache' => array(            'summary' => 'Clear Web Services Cache',            'function' => 'doClearCache',            'shortcut' => 'cc',            'options' => array(),            'doc' => 'Clear the XML-RPC/REST cache.  See also the cache_ttl configurationparameter.',            ),        );    // }}}    // {{{ constructor    /**     * PEAR_Command_Remote constructor.     *     * @access public     */    function PEAR_Command_Remote(&$ui, &$config)    {        parent::PEAR_Command_Common($ui, $config);    }    // }}}    function _checkChannelForStatus($channel, $chan)    {        if (PEAR::isError($chan)) {            $this->raiseError($chan);        }        if (!is_a($chan, 'PEAR_ChannelFile')) {            return $this->raiseError('Internal corruption error: invalid channel "' .                $channel . '"');        }        $rest = new PEAR_REST($this->config);        PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);        $mirror = $this->config->get('preferred_mirror', null,                                     $channel);        $a = $rest->downloadHttp('http://' . $channel .            '/channel.xml', $chan->lastModified());        PEAR::staticPopErrorHandling();        if (!PEAR::isError($a) && $a) {            $this->ui->outputData('WARNING: channel "' . $channel . '" has ' .                'updated its protocols, use "channel-update ' . $channel .                '" to update');        }    }    // {{{ doRemoteInfo()    function doRemoteInfo($command, $options, $params)    {        if (sizeof($params) != 1) {            return $this->raiseError("$command expects one param: the remote package name");        }        $savechannel = $channel = $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        $package = $params[0];        $parsed = $reg->parsePackageName($package, $channel);        if (PEAR::isError($parsed)) {            return $this->raiseError('Invalid package name "' . $package . '"');        }                $channel = $parsed['channel'];        $this->config->set('default_channel', $channel);        $chan = $reg->getChannel($channel);        if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {            return $e;        }        if ($chan->supportsREST($this->config->get('preferred_mirror')) &&              $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {            $rest = &$this->config->getREST('1.0', array());            $info = $rest->packageInfo($base, $parsed['package']);        } else {            $r = &$this->config->getRemote();            $info = $r->call('package.info', $parsed['package']);        }        if (PEAR::isError($info)) {            $this->config->set('default_channel', $savechannel);            return $this->raiseError($info);        }        if (!isset($info['name'])) {            return $this->raiseError('No remote package "' . $package . '" was found');        }        $installed = $reg->packageInfo($info['name'], null, $channel);        $info['installed'] = $installed['version'] ? $installed['version'] : '- no -';        if (is_array($info['installed'])) {            $info['installed'] = $info['installed']['release'];        }        $this->ui->outputData($info, $command);        $this->config->set('default_channel', $savechannel);        return true;    }    // }}}    // {{{ doRemoteList()    function doRemoteList($command, $options, $params)    {        $savechannel = $channel = $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        if (isset($options['channel'])) {            $channel = $options['channel'];            if ($reg->channelExists($channel)) {                $this->config->set('default_channel', $channel);            } else {                return $this->raiseError('Channel "' . $channel . '" does not exist');            }        }        $chan = $reg->getChannel($channel);        if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) {            return $e;        }        $list_options = false;        if ($this->config->get('preferred_state') == 'stable') {            $list_options = true;        }        if ($chan->supportsREST($this->config->get('preferred_mirror')) &&

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -