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

📄 channels.php

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php// /* vim: set expandtab tabstop=4 shiftwidth=4: *//** * PEAR_Command_Channels (list-channels, update-channels, channel-delete, channel-add, * channel-update, channel-info, channel-alias, channel-discover 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: Channels.php,v 1.56 2007/06/10 04:34:19 cellog Exp $ * @link       http://pear.php.net/package/PEAR * @since      File available since Release 1.4.0a1 *//** * base class */require_once 'PEAR/Command/Common.php';/** * PEAR commands for managing channels. * * @category   pear * @package    PEAR * @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 1.4.0a1 */class PEAR_Command_Channels extends PEAR_Command_Common{    // {{{ properties    var $commands = array(        'list-channels' => array(            'summary' => 'List Available Channels',            'function' => 'doList',            'shortcut' => 'lc',            'options' => array(),            'doc' => 'List all available channels for installation.',            ),        'update-channels' => array(            'summary' => 'Update the Channel List',            'function' => 'doUpdateAll',            'shortcut' => 'uc',            'options' => array(),            'doc' => 'List all installed packages in all channels.'            ),        'channel-delete' => array(            'summary' => 'Remove a Channel From the List',            'function' => 'doDelete',            'shortcut' => 'cde',            'options' => array(),            'doc' => '<channel name>Delete a channel from the registry.  You may notremove any channel that has installed packages.'            ),        'channel-add' => array(            'summary' => 'Add a Channel',            'function' => 'doAdd',            'shortcut' => 'ca',            'options' => array(),            'doc' => '<channel.xml>Add a private channel to the channel list.  Note that allpublic channels should be synced using "update-channels".Parameter may be either a local file or remote URL to achannel.xml.'            ),        'channel-update' => array(            'summary' => 'Update an Existing Channel',            'function' => 'doUpdate',            'shortcut' => 'cu',            'options' => array(                'force' => array(                    'shortopt' => 'f',                    'doc' => 'will force download of new channel.xml if an existing channel name is used',                    ),                'channel' => array(                    'shortopt' => 'c',                    'arg' => 'CHANNEL',                    'doc' => 'will force download of new channel.xml if an existing channel name is used',                    ),),            'doc' => '[<channel.xml>|<channel name>]Update a channel in the channel list directly.  Note that allpublic channels can be synced using "update-channels".Parameter may be a local or remote channel.xml, or the name ofan existing channel.'            ),        'channel-info' => array(            'summary' => 'Retrieve Information on a Channel',            'function' => 'doInfo',            'shortcut' => 'ci',            'options' => array(),            'doc' => '<package>List the files in an installed package.'            ),        'channel-alias' => array(            'summary' => 'Specify an alias to a channel name',            'function' => 'doAlias',            'shortcut' => 'cha',            'options' => array(),            'doc' => '<channel> <alias>Specify a specific alias to use for a channel name.The alias may not be an existing channel name oralias.'            ),        'channel-discover' => array(            'summary' => 'Initialize a Channel from its server',            'function' => 'doDiscover',            'shortcut' => 'di',            'options' => array(),            'doc' => '[<channel.xml>|<channel name>]Initialize a channel from its server and create a local channel.xml.If <channel name> is in the format "<username>:<password>@<channel>" then<username> and <password> will be set as the login username/password for<channel>. Use caution when passing the username/password in this way, asit may allow other users on your computer to briefly view your username/password via the system\'s process list.'            ),        );    // }}}    // {{{ constructor    /**     * PEAR_Command_Registry constructor.     *     * @access public     */    function PEAR_Command_Channels(&$ui, &$config)    {        parent::PEAR_Command_Common($ui, $config);    }    // }}}    // {{{ doList()        function _sortChannels($a, $b)    {        return strnatcasecmp($a->getName(), $b->getName());    }    function doList($command, $options, $params)    {        $reg = &$this->config->getRegistry();        $registered = $reg->getChannels();        usort($registered, array(&$this, '_sortchannels'));        $i = $j = 0;        $data = array(            'caption' => 'Registered Channels:',            'border' => true,            'headline' => array('Channel', 'Summary')            );        foreach ($registered as $channel) {            $data['data'][] = array($channel->getName(),                                      $channel->getSummary());        }        if (count($registered)==0) {            $data = '(no registered channels)';        }        $this->ui->outputData($data, $command);        return true;    }        function doUpdateAll($command, $options, $params)    {        $reg = &$this->config->getRegistry();        $channels = $reg->getChannels();        $success = true;        foreach ($channels as $channel) {            if ($channel->getName() != '__uri') {                PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);                $err = $this->doUpdate('channel-update',                                          $options,                                          array($channel->getName()));                if (PEAR::isError($err)) {                    $this->ui->outputData($err->getMessage(), $command);                    $success = false;                } else {                    $success &= $err;                }            }        }        return $success;    }        function doInfo($command, $options, $params)    {        if (sizeof($params) != 1) {            return $this->raiseError("No channel specified");        }        $reg = &$this->config->getRegistry();        $channel = strtolower($params[0]);        if ($reg->channelExists($channel)) {            $chan = $reg->getChannel($channel);            if (PEAR::isError($chan)) {                return $this->raiseError($chan);            }        } else {            if (strpos($channel, '://')) {                $downloader = &$this->getDownloader();                $tmpdir = $this->config->get('temp_dir');                PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);                $loc = $downloader->downloadHttp($channel, $this->ui, $tmpdir);                PEAR::staticPopErrorHandling();                if (PEAR::isError($loc)) {                    return $this->raiseError('Cannot open "' . $channel .                        '" (' . $loc->getMessage() . ')');                } else {                    $contents = implode('', file($loc));                }            } else {                if (file_exists($params[0])) {                    $fp = fopen($params[0], 'r');                    if (!$fp) {                        return $this->raiseError('Cannot open "' . $params[0] . '"');                    }                } else {                    return $this->raiseError('Unknown channel "' . $channel . '"');                }                $contents = '';                while (!feof($fp)) {                    $contents .= fread($fp, 1024);                }                fclose($fp);            }            if (!class_exists('PEAR_ChannelFile')) {                require_once 'PEAR/ChannelFile.php';            }            $chan = new PEAR_ChannelFile;            $chan->fromXmlString($contents);            $chan->validate();            if ($errs = $chan->getErrors(true)) {                foreach ($errs as $err) {                    $this->ui->outputData($err['level'] . ': ' . $err['message']);                }                return $this->raiseError('Channel file "' . $params[0] . '" is not valid');            }        }        if ($chan) {            $channel = $chan->getName();            $caption = 'Channel ' . $channel . ' Information:';            $data1 = array(                'caption' => $caption,                'border' => true);            $data1['data']['server'] = array('Name and Server', $chan->getName());            if ($chan->getAlias() != $chan->getName()) {                $data1['data']['alias'] = array('Alias', $chan->getAlias());            }            $data1['data']['summary'] = array('Summary', $chan->getSummary());            $validate = $chan->getValidationPackage();            $data1['data']['vpackage'] = array('Validation Package Name', $validate['_content']);            $data1['data']['vpackageversion'] =                array('Validation Package Version', $validate['attribs']['version']);            $d = array();            $d['main'] = $data1;            $data['data'] = array();            $data['caption'] = 'Server Capabilities';            $data['headline'] = array('Type', 'Version/REST type', 'Function Name/REST base');            $capabilities = $chan->getFunctions('xmlrpc');            $soaps = $chan->getFunctions('soap');            if ($capabilities || $soaps || $chan->supportsREST()) {                if ($capabilities) {                    if (!isset($capabilities[0])) {                        $capabilities = array($capabilities);                    }                    foreach ($capabilities as $protocol) {                        $data['data'][] = array('xmlrpc', $protocol['attribs']['version'],                            $protocol['_content']);                    }                }                if ($soaps) {                    if (!isset($soaps[0])) {                        $soaps = array($soaps);                    }                    foreach ($soaps as $protocol) {                        $data['data'][] = array('soap', $protocol['attribs']['version'],                            $protocol['_content']);                    }                }                if ($chan->supportsREST()) {                    $funcs = $chan->getFunctions('rest');                    if (!isset($funcs[0])) {                        $funcs = array($funcs);                    }                    foreach ($funcs as $protocol) {                        $data['data'][] = array('rest', $protocol['attribs']['type'],                            $protocol['_content']);                     }                }            } else {                $data['data'][] = array('No supported protocols');            }            $d['protocols'] = $data;            $data['data'] = array();            $mirrors = $chan->getMirrors();            if ($mirrors) {                $data['caption'] = 'Channel ' . $channel . ' Mirrors:';                unset($data['headline']);                foreach ($mirrors as $mirror) {                    $data['data'][] = array($mirror['attribs']['host']);                    $d['mirrors'] = $data;                }                foreach ($mirrors as $i => $mirror) {                    $data['data'] = array();                    $data['caption'] = 'Mirror ' . $mirror['attribs']['host'] . ' Capabilities';                    $data['headline'] = array('Type', 'Version/REST type', 'Function Name/REST base');                    $capabilities = $chan->getFunctions('xmlrpc', $mirror['attribs']['host']);                    $soaps = $chan->getFunctions('soap', $mirror['attribs']['host']);                    if ($capabilities || $soaps || $chan->supportsREST($mirror['attribs']['host'])) {                        if ($capabilities) {                            if (!isset($capabilities[0])) {                                $capabilities = array($capabilities);                            }                            foreach ($capabilities as $protocol) {                                $data['data'][] = array('xmlrpc', $protocol['attribs']['version'],                                    $protocol['_content']);                            }                        }                        if ($soaps) {                            if (!isset($soaps[0])) {                                $soaps = array($soaps);                            }                            foreach ($soaps as $protocol) {                                $data['data'][] = array('soap', $protocol['attribs']['version'],                                    $protocol['_content']);                            }                        }                        if ($chan->supportsREST($mirror['attribs']['host'])) {                            $funcs = $chan->getFunctions('rest', $mirror['attribs']['host']);                            if (!isset($funcs[0])) {                                $funcs = array($funcs);                            }                            foreach ($funcs as $protocol) {                                $data['data'][] = array('rest', $protocol['attribs']['type'],                                    $protocol['_content']);                             }                        }                    } else {                        $data['data'][] = array('No supported protocols');                    }                    $d['mirrorprotocols' . $i] = $data;

⌨️ 快捷键说明

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