pull/109/head
Mr Chen 6 years ago
parent a6fcb2838e
commit 5d95790df2
  1. 3
      plugins/l2tp/index.html
  2. 58
      plugins/l2tp/index.py
  3. 81
      plugins/l2tp/js/l2tp.js
  4. 2
      plugins/l2tp/tmp/chap-secrets

@ -2,7 +2,8 @@
<div class="bt-w-main">
<div class="bt-w-menu">
<p class="bgw" onclick="pluginService('l2tp');">服务</p>
<p onclick="pluginInitD('l2tp');">用户列表</p>
<p onclick="pluginConfig('l2tp',null, 'conf');">用户配置</p>
<p onclick="userList();">用户列表</p>
</div>
<div class="bt-w-con pd15">
<div class="soft-man-con"></div>

@ -49,6 +49,13 @@ def getArgs():
return tmp
def checkArgs(data, ck=[]):
for i in range(len(ck)):
if not ck[i] in data:
return (False, public.returnJson(False, '参数:(' + ck[i] + ')没有!'))
return (True, public.returnJson(True, 'ok'))
def status():
cmd = "ps -ef|grep xl2tpd |grep -v grep | grep -v python | awk '{print $2}'"
data = public.execShell(cmd)
@ -81,9 +88,50 @@ def reload():
return 'ok'
def getPathFile():
if public.isAppleSystem():
return getServerDir() + '/chap-secrets'
return '/etc/ppp/chap-secrets'
def getUserList():
data = []
return public.getJson(data)
import re
path = getPathFile()
if not os.path.exists(path):
return public.returnJson(False, '密码配置文件不存在!')
conf = public.readFile(path)
conf = re.sub('#(.*)\n', '', conf)
ulist = conf.strip().split('\n')
user = []
for line in ulist:
line_info = {}
line = re.match(r'(\w*)\s*(\w*)\s*(\w*)\s*(.*)',
line.strip(), re.M | re.I).groups()
line_info['user'] = line[0]
line_info['pwd'] = line[1]
line_info['psk'] = line[2]
line_info['ip'] = line[3]
user.append(line_info)
return public.returnJson(True, 'ok', user)
def addUser():
args = getArgs()
data = checkArgs(args, ['username'])
if not data[0]:
return data[1]
public.execShell('echo ' + args['username'] + '> ')
def delUser():
args = getArgs()
data = checkArgs(args, ['username'])
if not data[0]:
return data[1]
if __name__ == "__main__":
func = sys.argv[1]
@ -97,11 +145,13 @@ if __name__ == "__main__":
print restart()
elif func == 'reload':
print reload()
elif func == 'conf':
print getPathFile()
elif func == 'user_list':
print getUserList()
elif func == 'add_user':
print addUser()
elif func == 'delete_user':
print ''
elif func == 'del_user':
print delUser()
else:
print 'error'

@ -45,5 +45,84 @@ function lpAsyncPost(method,args){
}
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
return syncPost('/plugins/run', {name:'l2tp', func:method, args:_args});
return syncPost('/plugins/run', {name:'l2tp', func:method, args:_args});
}
function userList(){
lpPost('user_list', '' ,function(data){
var rdata = $.parseJSON(data['data']);
if (!rdata['status']){
layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
var list = rdata['data'];
var con = '';
con += '<div class="divtable" style="margin-top:5px;"><table class="table table-hover" width="100%" cellspacing="0" cellpadding="0" border="0">';
con += '<thead><tr>';
con += '<th>用户</th>';
con += '<th>密码</th>';
con += '<th>PSK</th>';
con += '<th>操作(<a class="btlink" onclick="addUser()">添加</a>)</th>';
con += '</tr></thead>';
con += '<tbody>';
for (var i = 0; i < list.length; i++) {
con += '<tr>'+
'<td>' + list[i]['user']+'</td>' +
'<td>' + list[i]['pwd']+'</td>' +
'<td>' + list[i]['psk']+'</td>' +
'<td><a class="btlink" onclick="modPwd()">改密</a>|<a class="btlink" onclick="delUser(\''+list[i]['user']+'\')">删除</a></td></tr>';
}
con += '</tbody>';
con += '</table></div>';
$(".soft-man-con").html(con);
});
}
function addUser(){
var loadOpen = layer.open({
type: 1,
title: '添加用户',
area: '240px',
content:"<div class='bt-form pd20 pb70 c6'>\
<div class='version line'>\
<div><input class='bt-input-text mr5 outline_no' type='text' id='username' name='username' style='height: 28px; border-radius: 3px;width: 200px;' placeholder='输入用户名'></div>\
</div>\
<div class='bt-form-submit-btn'>\
<button type='button' id='add_close' class='btn btn-danger btn-sm btn-title'>关闭</button>\
<button type='button' id='add_ok' class='btn btn-success btn-sm btn-title bi-btn'>确认</button>\
</div>\
</div>"
});
$('#add_close').click(function(){
layer.close(loadOpen);
});
$('#add_ok').click(function(){
_data = {};
_data['username'] = $('#username').val();
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
lpPost('user_add', _data, function(data){
var rdata = $.parseJSON(data);
layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']});
userList();
});
});
}
function delUser(username){
lpPost('user_del', {username:username}, function(data){
var rdata = $.parseJSON(data);
layer.msg(rdata.msg,{icon:rdata.status?1:2,time:2000,shade: [0.3, '#000']});
userList();
});
}

@ -1,3 +1,3 @@
# Secrets for authentication using CHAP
# client server secret IP addresses
teddysun l2tpd 123123 *
demo demo demo *
Loading…
Cancel
Save