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

📄 custom.php

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: *//** * File::Passwd::Custom *  * 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   FileFormats * @package    File_Passwd * @author     Michael Wallner <mike@php.net> * @copyright  2003-2005 Michael Wallner * @license    http://www.php.net/license/3_0.txt  PHP License 3.0 * @version    CVS: $Id: Custom.php,v 1.10 2005/03/30 18:33:33 mike Exp $ * @link       http://pear.php.net/package/File_Passwd *//*** Requires File::Passwd::Common*/require_once 'File/Passwd/Common.php';/** * Manipulate custom formatted passwd files** Usage Example:* <code>* $cust = &File_Passwd::factory('Custom');* $cust->setDelim('|');* $cust->load();* $cust->setEncFunc(array('File_Passwd', 'crypt_apr_md5'));* $cust->addUser('mike', 'pass');* $cust->save();* </code>* * @author   Michael Wallner <mike@php.net>* @version  $Revision: 1.10 $* @access   public*/class File_Passwd_Custom extends File_Passwd_Common{    /**    * Delimiter    *    * @access   private    * @var      string    */    var $_delim = ':';        /**    * Encryption function    *    * @access   private    * @var      string    */    var $_enc = array('File_Passwd', 'crypt_md5');        /**    * 'name map'    *    * @access   private    * @var      array    */    var $_map = array();        /**    * Whether to use the 'name map' or not    *    * @var      boolean    * @access   private    */    var $_usemap = false;    /**    * Constructor    *    * @access   protected    * @return   object    */    function File_Passwd_Custom($file = 'passwd')    {        $this->__construct($file);    }    /**    * Fast authentication of a certain user    *     * Returns a PEAR_Error if:    *   o file doesn't exist    *   o file couldn't be opened in read mode    *   o file couldn't be locked exclusively    *   o file couldn't be unlocked (only if auth fails)    *   o file couldn't be closed (only if auth fails)    *   o invalid encryption function <var>$opts[0]</var>,    *     or no delimiter character <var>$opts[1]</var> was provided    *    * @throws   PEAR_Error  FILE_PASSWD_E_UNDEFINED |    *                       FILE_PASSWD_E_FILE_NOT_OPENED |    *                       FILE_PASSWD_E_FILE_NOT_LOCKED |    *                       FILE_PASSWD_E_FILE_NOT_UNLOCKED |    *                       FILE_PASSWD_E_FILE_NOT_CLOSED |    *                       FILE_PASSWD_E_INVALID_ENC_MODE    * @static   call this method statically for a reasonable fast authentication    * @access   public    * @return   mixed   Returns &true; if authenticated, &false; if not or     *                   <classname>PEAR_Error</classname> on failure.    * @param    string  $file   path to passwd file    * @param    string  $user   user to authenticate    * @param    string  $pass   plaintext password    * @param    array   $otps   encryption function and delimiter charachter    *                           (in this order)    */    function staticAuth($file, $user, $pass, $opts)    {        setType($opts, 'array');        if (count($opts) != 2 || empty($opts[1])) {            return PEAR::raiseError('Insufficient options.', 0);        }                $line = File_Passwd_Common::_auth($file, $user, $opts[1]);                if (!$line || PEAR::isError($line)) {            return $line;        }                list(,$real)= explode($opts[1], $line);        $crypted    = File_Passwd_Custom::_genPass($pass, $real, $opts[0]);                if (PEAR::isError($crypted)) {            return $crypted;        }                return ($crypted === $real);    }    /**    * Set delimiter    *     * You can set a custom char to delimit the columns of a data set.    * Defaults to a colon (':'). Be aware that this char mustn't be    * in the values of your data sets.    *    * @access   public    * @return   void    * @param    string  $delim  custom delimiting character    */    function setDelim($delim = ':')    {        @setType($delim, 'string');        if (empty($delim)) {            $this->_delim = ':';        } else {            $this->_delim = $delim{0};        }    }        /**    * Get custom delimiter    *    * @access   public    * @return   string    */    function getDelim()    {        return $this->_delim;    }        /**    * Set encryption function    *    * You can set a custom encryption function to use.    * The supplied function will be called by php's call_user_function(),     * so you can supply an array with a method of a class/object, too     * (i.e. array('File_Passwd', 'crypt_apr_md5').    *     *     * @throws   PEAR_Error          FILE_PASSWD_E_INVALID_ENC_MODE    * @access   public    * @return   mixed   Returns &true; on success or     *                   <classname>PEAR_Error</classname> on failure.    * @param    mixed   $function    callable encryption function    */    function setEncFunc($function = array('File_Passwd', 'crypt_md5'))    {        if (!is_callable($function)) {            if (is_array($function)) {                $function = implode('::', $function);            }            return PEAR::raiseError(                sprintf(FILE_PASSWD_E_INVALID_ENC_MODE_STR, $function),                FILE_PASSWD_E_INVALID_ENC_MODE            );        }                $this->_enc = $function;        return true;    }        /**    * Get current custom encryption method    *    * Possible return values (examples):    *   o 'md5'    *   o 'File_Passwd::crypt_md5'    *     * @access   public    * @return   string    */    function getEncFunc()    {        if (is_array($this->_enc)) {            return implode('::', $this->_enc);        }        return $this->_enc;    }        /**    * Whether to use the 'name map' of the extra properties or not    *     * @see      File_Passwd_Custom::useMap()    * @see      setMap()    * @see      getMap()    *     * @access   public    * @return   boolean always true if you set a value (true/false) OR    *                   the actual value if called without param    *     * @param    boolean $bool   whether to use the 'name map' or not    */    function useMap($bool = null)    {        if (is_null($bool)) {            return $this->_usemap;        }        $this->_usemap = (bool) $bool;        return true;    }        /**    * Set the 'name map' to use with the extra properties of the user    *     * This map is used for naming the associative array of the extra properties.    *    * Returns a PEAR_Error if <var>$map</var> was not of type array.    *     * @see      getMap()    * @see      useMap()    *     * @throws   PEAR_Error  FILE_PASSWD_E_PARAM_MUST_BE_ARRAY    * @access   public    * @return   mixed       true on success or PEAR_Error    */    function setMap($map = array())    {        if (!is_array($map)) {            return PEAR::raiseError(                sprintf(FILE_PASSWD_E_PARAM_MUST_BE_ARRAY_STR, '$map'),                FILE_PASSWD_E_PARAM_MUST_BE_ARRAY            );        }        $this->_map = $map;        return true;    }        /**    * Get the 'name map' which is used for the extra properties of the user    *    * @see      setMap()    * @see      useMap()    *     * @access   public    * @return   array    */    function getMap()    {        return $this->_map;    }    /**    * Apply changes an rewrite passwd file    *    * Returns a PEAR_Error if:    *   o directory in which the file should reside couldn't be created    *   o file couldn't be opened in write mode    *   o file couldn't be locked exclusively    *   o file couldn't be unlocked    *   o file couldn't be closed    *     * @throws   PEAR_Error  FILE_PASSWD_E_FILE_NOT_OPENED |    *                       FILE_PASSWD_E_FILE_NOT_LOCKED |    *                       FILE_PASSWD_E_FILE_NOT_UNLOCKED |

⌨️ 快捷键说明

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