根据自己的需求对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]