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

📄 remote.php

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PHP
📖 第 1 页 / 共 3 页
字号:
                'headline' => array('Package', 'Stable/(Latest)', 'Local'),                'channel' => $channel                );        }        if (!$available && $channelinfo) {            unset($data['headline']);            $data['data'] = 'No packages found that match pattern "' . $package . '".';            $available = array();        }        foreach ($available as $name => $info) {            $installed = $reg->packageInfo($name, null, $channel);            $desc = $info['summary'];            if (isset($params[$name]))                $desc .= "\n\n".$info['description'];            if (!isset($info['stable']) || !$info['stable']) {                $version_remote = 'none';            } else {                if ($info['unstable']) {                    $version_remote = $info['unstable'];                } else {                    $version_remote = $info['stable'];                }                $version_remote .= ' ('.$info['state'].')';            }            $version = is_array($installed['version']) ? $installed['version']['release'] :                $installed['version'];            if ($channelinfo) {                $packageinfo = array(                    $channel,                    $name,                    $version_remote,                    $version,                    $desc,                );            } else {                $packageinfo = array(                    $name,                    $version_remote,                    $version,                    $desc,                );            }            $data['data'][$info['category']][] = $packageinfo;        }        $this->ui->outputData($data, $command);        $this->config->set('default_channel', $channel);        return true;    }    // }}}    function &getDownloader($options)    {        if (!class_exists('PEAR_Downloader')) {            require_once 'PEAR/Downloader.php';        }        $a = &new PEAR_Downloader($this->ui, $options, $this->config);        return $a;    }    // {{{ doDownload()    function doDownload($command, $options, $params)    {        // make certain that dependencies are ignored        $options['downloadonly'] = 1;        // eliminate error messages for preferred_state-related errors        /* TODO: Should be an option, but until now download does respect           prefered state */        /* $options['ignorepreferred_state'] = 1; */        // eliminate error messages for preferred_state-related errors        $downloader = &$this->getDownloader($options);        PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);        $e = $downloader->setDownloadDir(getcwd());        PEAR::staticPopErrorHandling();        if (PEAR::isError($e)) {            return $this->raiseError('Current directory is not writeable, cannot download');        }        $errors = array();        $downloaded = array();        $err = $downloader->download($params);        if (PEAR::isError($err)) {            return $err;        }        $errors = $downloader->getErrorMsgs();        if (count($errors)) {            foreach ($errors as $error) {                $this->ui->outputData($error);            }            return $this->raiseError("$command failed");        }        $downloaded = $downloader->getDownloadedPackages();        foreach ($downloaded as $pkg) {            $this->ui->outputData("File $pkg[file] downloaded", $command);        }        return true;    }    function downloadCallback($msg, $params = null)    {        if ($msg == 'done') {            $this->bytes_downloaded = $params;        }    }    // }}}    // {{{ doListUpgrades()    function doListUpgrades($command, $options, $params)    {        require_once 'PEAR/Common.php';        if (isset($params[0]) && !is_array(PEAR_Common::betterStates($params[0]))) {            return $this->raiseError($params[0] . ' is not a valid state (stable/beta/alpha/devel/etc.) try "pear help list-upgrades"');        }        $savechannel = $channel = $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        foreach ($reg->listChannels() as $channel) {            $inst = array_flip($reg->listPackages($channel));            if (!count($inst)) {                continue;            }            if ($channel == '__uri') {                continue;            }            $this->config->set('default_channel', $channel);            if (empty($params[0])) {                $state = $this->config->get('preferred_state');            } else {                $state = $params[0];            }            $caption = $channel . ' Available Upgrades';            $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());                if (empty($state) || $state == 'any') {                    $state = false;                } else {                    $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')';                }                PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);                $latest = $rest->listLatestUpgrades($base, $state, $inst, $channel, $reg);                PEAR::staticPopErrorHandling();            } else {                $remote = &$this->config->getRemote();                $remote->pushErrorHandling(PEAR_ERROR_RETURN);                if (empty($state) || $state == 'any') {                    $latest = $remote->call("package.listLatestReleases");                } else {                    $latest = $remote->call("package.listLatestReleases", $state);                    $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')';                }                $remote->popErrorHandling();            }            if (PEAR::isError($latest)) {                $this->ui->outputData($latest->getMessage());                continue;            }            $caption .= ':';            if (PEAR::isError($latest)) {                $this->config->set('default_channel', $savechannel);                return $latest;            }            $data = array(                'caption' => $caption,                'border' => 1,                'headline' => array('Channel', 'Package', 'Local', 'Remote', 'Size'),                'channel' => $channel                );            foreach ((array)$latest as $pkg => $info) {                $package = strtolower($pkg);                if (!isset($inst[$package])) {                    // skip packages we don't have installed                    continue;                }                extract($info);                $inst_version = $reg->packageInfo($package, 'version', $channel);                $inst_state   = $reg->packageInfo($package, 'release_state', $channel);                if (version_compare("$version", "$inst_version", "le")) {                    // installed version is up-to-date                    continue;                }                if ($filesize >= 20480) {                    $filesize += 1024 - ($filesize % 1024);                    $fs = sprintf("%dkB", $filesize / 1024);                } elseif ($filesize > 0) {                    $filesize += 103 - ($filesize % 103);                    $fs = sprintf("%.1fkB", $filesize / 1024.0);                } else {                    $fs = "  -"; // XXX center instead                }                $data['data'][] = array($channel, $pkg, "$inst_version ($inst_state)", "$version ($state)", $fs);            }            if (isset($options['channelinfo'])) {                if (empty($data['data'])) {                    unset($data['headline']);                    if (count($inst) == 0) {                        $data['data'] = '(no packages installed)';                    } else {                        $data['data'] = '(no upgrades available)';                    }                }                $this->ui->outputData($data, $command);            } else {                if (empty($data['data'])) {                    $this->ui->outputData('Channel ' . $channel . ': No upgrades available');                } else {                    $this->ui->outputData($data, $command);                }            }        }        $this->config->set('default_channel', $savechannel);        return true;    }    // }}}    // {{{ doClearCache()    function doClearCache($command, $options, $params)    {        $cache_dir = $this->config->get('cache_dir');        $verbose = $this->config->get('verbose');        $output = '';        if (!file_exists($cache_dir) || !is_dir($cache_dir)) {            return $this->raiseError("$cache_dir does not exist or is not a directory");        }        if (!($dp = @opendir($cache_dir))) {            return $this->raiseError("opendir($cache_dir) failed: $php_errormsg");        }        if ($verbose >= 1) {            $output .= "reading directory $cache_dir\n";        }        $num = 0;        while ($ent = readdir($dp)) {            if (preg_match('/^xmlrpc_cache_[a-z0-9]{32}\\z/', $ent) ||                  preg_match('/rest.cache(file|id)\\z/', $ent)) {                $path = $cache_dir . DIRECTORY_SEPARATOR . $ent;                if (file_exists($path)) {                    $ok = @unlink($path);                } else {                    $ok = false;                    $php_errormsg = '';                }                if ($ok) {                    if ($verbose >= 2) {                        $output .= "deleted $path\n";                    }                    $num++;                } elseif ($verbose >= 1) {                    $output .= "failed to delete $path $php_errormsg\n";                }            }        }        closedir($dp);        if ($verbose >= 1) {            $output .= "$num cache entries cleared\n";        }        $this->ui->outputData(rtrim($output), $command);        return $num;    }    // }}}}?>

⌨️ 快捷键说明

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