apen 发表于 2006-5-5 11:40:39

根据自己的需求对M0n0做个点修改,已可以正常使用了!

我这里用户只有100多,由于是包月,只要求认证,不要求进行计费,没有必要再增加一台认证计费服务器,于是使用M0n0的门户认证功能进行本地用户认证,用户数据使用本地数据,由于要求用户自己能修改自己的口令,但M0n0中只有System下的用户可以自己修改口令,门户网站的用户不能自己修改自己的口令,于是对M0n0进行了修改,主要改了两个地方:guiconfg.inc,它有个函数在用户排序中要用,但System用户和门户网站用户定义了相同的函数名,要修改其中一个,另外是修改了system_usermanager.php,在对System用户进行操作时,同时对门户网站的用户进行操作,同时还对门户网站的index.php进行了修改,汉化了Logout和Disconcent窗口。以上修改是基于1.22汉化版进行的,目前已在m0n0wall-1.2b7-HD-VMware版升级测试通过。下周在实体机上试试。
修改方法如下:其它的解包,打包就不说了,见其它的帖子。
一、修改guiconfig.inc
原来两部分的用户排序都使用相同的函数名cpusercmp,同时调用时会报错,我将其中一个改为了adminusercmp。
function captiveportal_users_sort() {
      global $g, $config;
      
      function cpusercmp($a, $b) {
                return strcasecmp($a['name'], $b['name']);
      }
      
      usort($config['captiveportal']['user'], "cpusercmp");
}

function admin_users_sort() {
      global $g, $config;
      
      function adminusercmp($a, $b) {
                return strcasecmp($a['name'], $b['name']);
      }
      
      usort($config['system']['user'], "adminusercmp");
}
二、修改system_usermanager.php
改过的地方加了中文注解
......
    if (!is_array($config['system']['user'])) {
            $config['system']['user'] = array();
      }
      admin_users_sort();
    $a_user = &$config['system']['user'];

      //同时操作captiveportal用户-获取数据
      if (!is_array($config['captiveportal']['user'])) {
                $config['captiveportal']['user'] = array();
      }
      captiveportal_users_sort();
      $ca_user = &$config['captiveportal']['user'];
   
    if ($_GET['act'] == "del") {
            if ($a_user[$_GET['id']]) {
                $userdeleted = $a_user[$_GET['id']]['name'];
                  unset($a_user[$_GET['id']]);
                        //同时操作captiveportal用户--删除
                        unset($ca_user[$_GET['id']]);
.........................
         
            if (!$input_errors) {
            
                  if (isset($id) && $a_user[$id]){
                            $userent = $a_user[$id];
                              //同时操作captiveportal用户--修改
                              $cuserent = $ca_user[$id];}
                  
                  $userent['name'] = $_POST['username'];
                  $userent['fullname'] = $_POST['fullname'];
                  $userent['groupname'] = $_POST['groupname'];
                        
                        //同时操作captiveportal用户--修改
                  $cuserent['name'] = $_POST['username'];
                  $cuserent['fullname'] = $_POST['fullname'];
                  $cuserent['expirationdate'] = '';

                  
                  if ($_POST['password']) {
                            $userent['password'] = crypt($_POST['password']);
                              //同时操作captiveportal用户--修改口令
                            $cuserent['password'] = md5($_POST['password']);}
                              
                  if (isset($id) && $a_user[$id]){
                            $a_user[$id] = $userent;
                              //同时操作captiveportal用户--修改原记录
                              $ca_user[$id] = $cuserent;}
                  else {
                            $a_user[] = $userent;
                            //同时操作captiveportal用户--新增记录
                              $ca_user[] = $cuserent;}

                  write_config();
                        $retval = system_password_configure();
                        $savemsg = get_std_save_message($retval);
                        
                        header("Location: system_usermanager.php");
            }
    }

?>
.....................
            if ($_POST['password'] != $_POST['password2'])
                      $input_errors[] = "密码不一致";
            
                if (!$input_errors) {
                        //all values are okay --> saving changes
                        $config['system']['user'][$userindex[$_SERVER['REMOTE_USER']]]['password']=crypt(trim($_POST['password']));
                        //同时操作captiveportal用户
                        $config['captiveportal']['user'][$userindex[$_SERVER['REMOTE_USER']]]['password']=md5(trim($_POST['password']));
                        write_config();
                        $retval = system_password_configure();
                        $savemsg = get_std_save_message($retval);
                        $savemsg = "密码修改成功";
                }               
      }

      
?>
...........
三、门户网站下的index.php,修改/usr/local/captiveportal 下的index.php,只是进行了汉化,不详细说了。
       另外增加了一个地址,如果用户用门户网站直接登录,则重定向到新浪。
      //如果用户请求的是登录页面,则重定向到:http://www.sina.com.cn   
      if ($my_redirurl = "http://{$config['interfaces'][$config['captiveportal']['interface']]['ipaddr']}:8000/")
      $my_redirurl = 'http://www.sina.com.cn';
页: [1]
查看完整版本: 根据自己的需求对M0n0做个点修改,已可以正常使用了!