예제 #1
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def editadvroute(id):
    s = request.environ.get('beaker.session')
    sql = " SELECT ifacename FROM netiface where status='UP' UNION select value as ifacename FROM sysattr where status='1' and servattr='vpnrelay'"
    ifacelist_result = readDb(sql,)
    sql2 = """ SELECT rulename,srcaddr,destaddr,pronum,iface FROM sysrouteadv WHERE id=%s """
    result = readDb(sql2,(id,))
    return template('addadvroute',session=s,info=result[0],ifacelist_result=ifacelist_result)
예제 #2
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def addinterface():
    s = request.environ.get('beaker.session')
    # 初始化网卡添加状态,已经被配置的网卡,无法再次配置
    sqla = " select attr from sysattr where status='1' and servattr='netiface' and attr not in (select ifacename from netiface) "
    erriface = readDb(sqla, )
    if len(erriface) > 0:
        for x in erriface:
            sqlb = "update sysattr set status='1' where attr=%s and servattr='netiface'"
            writeDb(sqlb, (x.get('attr'), ))
    sqlc = " select attr from sysattr where status='1' and servattr='netiface' and attr in (select ifacename from netiface) "
    erriface2 = readDb(sqlc, )
    if len(erriface2) > 0:
        for y in erriface2:
            sqld = "update sysattr set status='0' where attr=%s and servattr='netiface'"
            writeDb(sqld, (y.get('attr'), ))
    # 判断接口是否被锁定或已配置
    sqld = " SELECT attr as ifacename,concat(attr,'|',value) as value FROM sysattr where servattr='netiface' and status='1' order by attr desc"
    ifacelist_result = readDb(sqld, )
    if len(ifacelist_result) == 0:
        msg = {'color': 'red', 'message': u'无可用物理接口,添加失败'}
        return (template('networkconf', session=s, msg=msg))
    return template('addinterface',
                    session=s,
                    info={},
                    ifacelist_result=ifacelist_result)
예제 #3
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def editutmrule(id):
    """UTM配置 添加页"""
    s = request.environ.get('beaker.session')
    netmod.InitNIinfo()
    sql = " SELECT ifacename FROM netiface where status='UP' UNION select value as ifacename FROM sysattr where status='1' and servattr='vpnrelay'"
    ifacelist_result = readDb(sql,)
    sql2 = " SELECT rulename,srcaddr,dstmatch,dstaddr,runaction,runobject,runobject as runobject2 from ruleconfnat where status='1' and id=%s"
    result = readDb(sql2,(id,))
    return template('addnatrule',session=s,msg={},info=result[0],ifacelist_result=ifacelist_result)
예제 #4
0
def do_adddnsservconf():
    """新增服务配置项"""
    s = request.environ.get('beaker.session')
    dns_domain = request.forms.get("dns_domain").strip('.')
    primary_dns = request.forms.get("primary_dns").strip('.')
    second_dns = request.forms.get("second_dns").strip('.')
    dns_ttl = request.forms.get("dns_ttl")
    dns_min_ttl = request.forms.get("dns_min_ttl")
    relay_dns = request.forms.get("relay_dns")
    resp_person = request.forms.get("resp_person").strip('.')
    retry = request.forms.get("retry")
    refresh = request.forms.get("refresh")
    expire = request.forms.get("expire")
    minimum = request.forms.get("minimum")
    dns_dis_nn = request.forms.get("dns_dis_nn")
    force_domain_dns = request.forms.get("force_domain_dns").replace('\r\n','\n').strip()
    query_sql = " select dns_domain,primary_dns,second_dns,dns_ttl,dns_min_ttl,relay_dns,resp_person,retry,refresh,expire,minimum,dns_dis_nn,force_domain_dns from dns_conf "
    for ips in relay_dns.split(',') :
        if netmod.checkip(ips) == False:
           msg = {'color':'red','message':u'转发地址填写不合法,保存失败'}
           result = readDb(query_sql,)
           info=result[0]
           info['servstatus']=servchk('53')
           return template('dnsservconf',session=s,msg=msg,info=info)
    if netmod.is_domain(dns_domain) == False or netmod.is_domain(primary_dns) == False or netmod.is_domain(second_dns) == False or netmod.is_domain(resp_person) == False :
       msg = {'color':'red','message':u'地址填写不合法,保存失败'}
       result = readDb(query_sql,)
       info=result[0]
       info['servstatus']=servchk('53')
       return template('dnsservconf',session=s,msg=msg,info=info)
    if force_domain_dns:
       for obj in force_domain_dns.split('\n') :   
        if netmod.is_domain(obj.split('|')[0]) == False or netmod.checkip(obj.split('|')[1].split(',')[0]) == False :
           msg = {'color':'red','message':u'域名指定DNS转发解析语法错误,保存失败'}
           result = readDb(query_sql,)
           info=result[0]
           info['servstatus']=servchk('53')
           return template('dnsservconf',session=s,msg=msg,info=info)
    sql = " UPDATE dns_conf set dns_domain=%s,primary_dns=%s,second_dns=%s,dns_ttl=%s,dns_min_ttl=%s,relay_dns=%s,resp_person=%s,retry=%s,refresh=%s,expire=%s,minimum=%s,dns_dis_nn=%s,force_domain_dns=%s "
    data = (Formatdata(dns_domain),Formatdata(primary_dns),Formatdata(second_dns),dns_ttl,dns_min_ttl,relay_dns,Formatdata(resp_person),retry,refresh,expire,minimum,dns_dis_nn,force_domain_dns)
    result = writeDb(sql,data)
    if result == True :
       writeDNSconf(action='uptconf')
       msg = {'color':'green','message':u'配置保存成功'}
       result = readDb(query_sql,)
       info=result[0]
       time.sleep(1) #防止检测FTP服务状态时异常
       info['servstatus']=servchk('53')
       return template('dnsservconf',session=s,msg=msg,info=info)
    else :
       msg = {'color':'red','message':u'配置保存失败'}
       result = readDb(query_sql,)
       info=result[0]
       info['servstatus']=servchk('53')
       return template('dnsservconf',session=s,msg=msg,info=info)
예제 #5
0
def editiface(id):
    s = request.environ.get('beaker.session')
    sql = " SELECT ifacename,ifacetype,ifacezone,ipaddr,netmask,gateway,defaultgw,extip,username,password,mtu,osize FROM netiface WHERE id = %s "
    sql2 = "select attr as ifacename,concat(attr,'|',value) as value from sysattr where attr=(select ifacename from netiface where id=%s);"
    info = readDb(sql,(id,))
    ifacelist_result = readDb(sql2,(id,))
    if not ifacelist_result:
        abort(404)
    if ifacelist_result[0].get('userid') != s.get('userid',None) and s.get('access',None) == 0:
        abort(404)
    return template('addinterface',session=s,info=info[0],ifacelist_result=ifacelist_result)
예제 #6
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def editiface(id):
    s = request.environ.get('beaker.session')
    sql = " SELECT ifacename,ifacetype,ipaddr,netmask,gateway,defaultgw,extip FROM netiface WHERE id = %s "
    sql2 = "select attr as ifacename,concat(attr,'|',value) as value from sysattr where attr=(select ifacename from netiface where id=%s);"
    info = readDb(sql,(id,))
    ifacelist_result = readDb(sql2,(id,))
    if not ifacelist_result:
        abort(404)
    if ifacelist_result[0].get('userid') != s.get('userid',None) and s.get('access',None) == 0:
        abort(404)
    return template('addinterface',session=s,info=info[0],ifacelist_result=ifacelist_result)
예제 #7
0
def user():
    s = request.environ.get('beaker.session')
    policylist_sql = " select id,name from vpnpolicy "
    plylist_result = readDb(policylist_sql, )
    UUUapi_sql = " select value from sysattr where servattr='3Uapi' and status=1 "
    UUUresult = readDb(UUUapi_sql, )
    try:
        UUUinfo = json.loads(UUUresult[0].get('value'))
    except:
        UUUinfo = {}
    return template('user',
                    session=s,
                    msg={},
                    plylist_result=plylist_result,
                    UUUinfo=UUUinfo)
예제 #8
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def do_editdnsserv():
    s = request.environ.get('beaker.session')
    dnsrelay = request.forms.get("dnsrelay")
    dnsproxy = request.forms.get("dnsproxy")
    dnsrule = request.forms.get("dnsrule")
    dnslist = request.forms.get("dnslist").replace('\r\n','\n').strip()
    idata = dict()
    idata['dnsrelay']=dnsrelay
    idata['dnsproxy']=dnsproxy
    idata['dnsrule']=dnsrule
    idata['dnslist']=dnslist
    idata['dnsport']=53
    dnsstatus=cmds.servchk(idata.get('dnsport'))
    idata['dnsstatus']=dnsstatus
    sql = " update sysattr set value=%s where attr='dnsconf' "
    iidata=json.dumps(idata)
    result = writeDb(sql,(iidata,))
    if result == True :
       writeDNSconf(action='uptconf')
       writeROUTEconf(action='uptconf')
       writeUTMconf(action='uptconf')
       msg = {'color':'green','message':'配置保存成功'}
       return(template('editdnsserv',session=s,msg=msg,info=idata))
    else :
       msg = {'color':'red','message':'配置保存失败'}
       sql = " select value from sysattr where attr='dnsconf' "
       idata = readDb(sql,)	
       return(template('editdnsserv',session=s,msg=msg,info=idata))
예제 #9
0
def showservlog():
    """添加域名"""
    s = request.environ.get('beaker.session')
    domain = request.forms.get("domain")
    domaintype = request.forms.get("domaintype")
    comment = request.forms.get("comment")
    etime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
    serial = time.strftime('%s',time.localtime(time.time()))
    if netmod.is_domain(domain) == False:
       msg = {'color':'red','message':u'域名格式错误,添加失败'}
       return '255'
    sql_1 = """ INSERT INTO dns_domain (domain,domaintype,comment,etime,status) VALUES (%s,%s,%s,%s,1)"""
    result = writeDb(sql_1,(domain,domaintype,comment,etime))
    if result == True:
       sql_x = """ select dns_domain,primary_dns,second_dns from dns_conf """
       result = readDb(sql_x,)
       sql_2 = """ INSERT INTO dns_records (zone,host,type,view,data,serial) VALUE (%s,'@','SOA','any',%s,%s) """
       sql_3 = """ INSERT INTO dns_records (zone,host,type,view,data,serial) VALUE (%s,'@','NS','any',%s,%s) """
       writeDb(sql_2,(domain,result[0].get('dns_domain'),serial))
       writeDb(sql_3,(domain,result[0].get('primary_dns'),serial))
       writeDb(sql_3,(domain,result[0].get('second_dns'),serial))
       msg = {'color':'green','message':u'添加成功'}
       return '0'
    else:
       msg = {'color':'red','message':u'添加失败'}
       return '255'
예제 #10
0
def user():
    s = request.environ.get('beaker.session')
    username = s.get('username')
    oldpwd = request.forms.get("oldpwd")
    newpwd = request.forms.get("newpwd")
    newpwds = request.forms.get("newpwds")
    sql = " select passwd from user where username=%s "
    result = readDb(sql, (username, ))
    if result[0].get('passwd') != LoginCls().encode(keys, oldpwd):
        msg = {'color': 'red', 'message': u'旧密码验证失败,请重新输入'}
        return template('changepasswd', session=s, msg=msg, info={})
    if newpwd != newpwds:
        msg = {'color': 'red', 'message': u'密码两次输入不一致,请重新输入'}
        return template('changepasswd', session=s, msg=msg, info={})
    m_encrypt = LoginCls().encode(keys, newpwd)
    sql2 = " update user set passwd=%s where username=%s "
    result = writeDb(sql2, (m_encrypt, username))
    if result == True:
        wrtlog('User', '更改密码成功', username, s.get('clientip'))
        msg = {'color': 'green', 'message': u'密码更新成功,后续请以新密码登录系统'}
        return template('changepasswd', session=s, msg=msg, info={})
    else:
        wrtlog('User', '更改密码失败', username, s.get('clientip'))
        msg = {'color': 'red', 'message': u'密码更新失败,请核对错误'}
        return template('changepasswd', session=s, msg=msg, info={})
예제 #11
0
파일: User.py 프로젝트: Lee-12/lnmVPN
def user():
    s = request.environ.get('beaker.session')
    username = s.get('username')
    oldpwd = request.forms.get("oldpwd")
    newpwd = request.forms.get("newpwd")
    newpwds = request.forms.get("newpwds")
    sql = " select passwd from user where username=%s "
    result = readDb(sql,(username,))
    if result[0].get('passwd') != LoginCls().encode(keys,oldpwd) :
       msg = {'color':'red','message':u'旧密码验证失败,请重新输入'}
       return template('changepasswd',session=s,msg=msg,info={})
    if newpwd != newpwds :
       msg = {'color':'red','message':u'密码两次输入不一致,请重新输入'}
       return template('changepasswd',session=s,msg=msg,info={})
    m_encrypt = LoginCls().encode(keys,newpwd)
    sql2 = " update user set passwd=%s where username=%s "
    result = writeDb(sql2,(m_encrypt,username))
    if result == True :
       wrtlog('User','更改密码成功',username,s.get('clientip'))
       msg = {'color':'green','message':u'密码更新成功,后续请以新密码登录系统'}
       return template('changepasswd',session=s,msg=msg,info={})
    else:
       wrtlog('User','更改密码失败',username,s.get('clientip'))
       msg = {'color':'red','message':u'密码更新失败,请核对错误'}
       return template('changepasswd',session=s,msg=msg,info={})
예제 #12
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def deliface(id):
    s = request.environ.get('beaker.session')
    sql = " DELETE FROM netiface WHERE id=%s "
    sql2 = " select ifacename FROM netiface WHERE id=%s "
    ifacename = readDb(sql2, (id, ))
    result = writeDb(sql, (id, ))
    if result == True:
        writeNIconf(action='uptconf')
        cmds.servboot('networks', action='uptconf')
        writeUTMconf(action='uptconf')
        msg = {'color': 'green', 'message': u'删除成功'}
        cmds.gettuplerst('ip addr flush dev %s' %
                         ifacename[0].get('ifacename'))
        #如果是PPP类型接口,停用ADSL
        cmds.gettuplerst('ip link set %s down' % ifacename[0].get('ifacename'))
        cmds.gettuplerst(
            'ps aux|grep -e \'xdsl.*%s\'|grep -v grep|awk \'{print $2}\' |xargs -i kill -9 {}'
            % id)
        #恢复绑定
        sql2 = "update sysattr set status='1' where attr=%s"
        writeDb(sql2, (ifacename[0].get('ifacename'), ))
        return template('networkconf', session=s, msg=msg)
    else:
        msg = {'color': 'red', 'message': u'删除失败'}
        return template('networkconf', session=s, msg=msg)
예제 #13
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def editpolicy(id):
    """修改策略"""
    s = request.environ.get('beaker.session')
    sql = "select name,pushdns,pushroute,pushnoroute from vpnpolicy WHERE id=%s"
    result = readDb(sql,(id,))
    if result :
       return(template('addpolicyconf',session=s,info=result[0]))
예제 #14
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def addutmrule():
    """UTM配置 添加页"""
    s = request.environ.get('beaker.session')
    netmod.InitNIinfo()
    sql = " SELECT ifacename FROM netiface where status='UP' UNION select value as ifacename FROM sysattr where status='1' and servattr='vpnrelay'"
    ifacelist_result = readDb(sql,)
    return template('addnatrule',session=s,msg={},info={},ifacelist_result=ifacelist_result)
예제 #15
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def do_editdnsserv():
    s = request.environ.get('beaker.session')
    dnsrelay = request.forms.get("dnsrelay")
    dnsproxy = request.forms.get("dnsproxy")
    dnsrule = request.forms.get("dnsrule")
    dnslist = request.forms.get("dnslist").replace('\r\n', '\n').strip()
    idata = dict()
    idata['dnsrelay'] = dnsrelay
    idata['dnsproxy'] = dnsproxy
    idata['dnsrule'] = dnsrule
    idata['dnslist'] = dnslist
    idata['dnsport'] = 53
    dnsstatus = cmds.servchk(idata.get('dnsport'))
    idata['dnsstatus'] = dnsstatus
    sql = " update sysattr set value=%s where attr='dnsconf' "
    iidata = json.dumps(idata)
    result = writeDb(sql, (iidata, ))
    if result == True:
        writeDNSconf(action='uptconf')
        writeROUTEconf(action='uptconf')
        writeUTMconf(action='uptconf')
        msg = {'color': 'green', 'message': '配置保存成功'}
        return (template('editdnsserv', session=s, msg=msg, info=idata))
    else:
        msg = {'color': 'red', 'message': '配置保存失败'}
        sql = " select value from sysattr where attr='dnsconf' "
        idata = readDb(sql, )
        return (template('editdnsserv', session=s, msg=msg, info=idata))
예제 #16
0
파일: User.py 프로젝트: wonderking/lnmDNS
def user():
    s = request.environ.get('beaker.session')
    username = s.get('username')
    oldpwd = request.forms.get("oldpwd")
    newpwd = request.forms.get("newpwd")
    newpwds = request.forms.get("newpwds")
    sql = " select password from user where username=%s "
    result = readDb(sql,(username,))
    #处理老密码
    m = hashlib.md5()
    m.update(oldpwd)
    password = m.hexdigest()
    if result[0].get('password') != password :
       msg = {'color':'red','message':u'旧密码验证失败,请重新输入'}
       return template('changepasswd',session=s,msg=msg,info={})
    if newpwd != newpwds :
       msg = {'color':'red','message':u'密码两次输入不一致,请重新输入'}
       return template('changepasswd',session=s,msg=msg,info={})
    #生成新密码md5
    n = hashlib.md5()
    n.update(newpwd)
    password = n.hexdigest()
    sql2 = " update user set password=%s where username=%s "
    result = writeDb(sql2,(password,username))
    if result == True :
       wrtlog('User','更改密码成功',username,s.get('clientip'))
       msg = {'color':'green','message':u'密码更新成功,后续请以新密码登录系统'}
       return template('changepasswd',session=s,msg=msg,info={})
    else:
       wrtlog('User','更改密码失败',username,s.get('clientip'))
       msg = {'color':'red','message':u'密码更新失败,请核对错误'}
       return template('changepasswd',session=s,msg=msg,info={})
예제 #17
0
def addservconf():
    """新增服务配置项"""
    s = request.environ.get('beaker.session')
    sql = "select dns_domain,primary_dns,second_dns,dns_ttl,dns_min_ttl,relay_dns,resp_person,retry,refresh,expire,minimum,dns_dis_nn,force_domain_dns from dns_conf "
    result = readDb(sql,)
    info=result[0]
    info['servstatus']=servchk('53')
    return template('dnsservconf',session=s,msg={},info=info)
예제 #18
0
def addservconf():
    """新增服务配置项"""
    s = request.environ.get('beaker.session')
    sql = " select id,authtype,listenaddr,listenport,maxuser,sameipmax,vdir,owninfo,umask,passiveenable,passiveport,passiveaddr from ftpserv where id='1'"
    result = readDb(sql,)
    info=result[0]
    info['ftpstatus']=servchk(result[0].get('listenport'))
    return template('ftpservconf',session=s,msg={},info=info)
예제 #19
0
파일: User.py 프로젝트: wonderking/lnmDNS
def getuser():
    sql = """ SELECT id,username,ustatus,comment,
        date_format(adddate,'%%Y-%%m-%%d') as adddate 
        FROM user WHERE access = '1'
        order by username
    """
    userlist = readDb(sql,)
    return json.dumps(userlist)
예제 #20
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def getcertinfo():
    sql = """ SELECT U.id,U.commonname,U.certtype,U.expiration,D.name as organization,U.createdate 
    FROM certmgr as U
    LEFT OUTER JOIN vpnpolicy as D on U.organization=D.id WHERE certtype = 'Client' UNION 
    SELECT id,commonname,certtype,organization,expiration,createdate FROM certmgr WHERE certtype='caserver'
    order by id
    """
    certinfo_list = readDb(sql,)
    return json.dumps(certinfo_list)
예제 #21
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def editrecord(id):
    s = request.environ.get('beaker.session')
    sql = " select dnstype,domain,data as record,pronum from dnsrecord where id=%s "
    result = readDb(sql, (id, ))
    msg = {'action': 'accept'}
    if result[0].get('dnstype') == "SET":
        #当类型为ipset时,禁止编辑记录数据,仅支持删除或更新域名列表
        msg = {'action': 'reject'}
    return (template('adddnsconf', session=s, msg=msg, info=result[0]))
예제 #22
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def do_editdhcpserv():
    s = request.environ.get('beaker.session')
    dhcpenable = request.forms.get("dhcpenable")
    getgw = request.forms.get("getgw")
    getdns1 = request.forms.get("getdns1")
    getdns2 = request.forms.get("getdns2")
    startip = request.forms.get("startip")
    stopip = request.forms.get("stopip")
    otime = request.forms.get("otime")
    dhcplist = request.forms.get("dhcplist").replace('\r\n', '\n').strip()
    idata = dict()
    idata['dhcpenable'] = dhcpenable
    idata['getgw'] = getgw
    idata['getdns1'] = getdns1
    idata['getdns2'] = getdns2
    idata['startip'] = startip
    idata['stopip'] = stopip
    idata['otime'] = otime
    if netmod.checkip(startip) == False or netmod.checkip(
            stopip) == False or netmod.checkip(
                getgw) == False or netmod.checkip(getdns1) == False:
        msg = {'color': 'red', 'message': '参数配置异常,保存失败'}
        return (template('editdhcpserv', session=s, msg=msg, info=idata))
    #判断dhcp固定分配是否为空
    if dhcplist != "":
        for i in dhcplist.split('\n'):
            try:
                xmac = i.split(',')[0]
                xip = i.split(',')[1]
                if (netmod.is_ValidMac(xmac) == False
                        or netmod.checkip(xip) == False) and xmac != "":
                    msg = {'color': 'red', 'message': '配置保存失败,固定分配记录异常'}
                    return (template('editdhcpserv',
                                     session=s,
                                     msg=msg,
                                     info=idata))
                else:
                    idata['dhcplist'] = dhcplist
            except:
                msg = {'color': 'red', 'message': '配置保存失败,固定分配记录异常'}
                return (template('editdhcpserv',
                                 session=s,
                                 msg=msg,
                                 info=idata))
    sql = " update sysattr set value=%s where attr='dhcpconf' "
    iidata = json.dumps(idata)
    result = writeDb(sql, (iidata, ))
    if result == True:
        writeDNSconf(action='uptconf')
        msg = {'color': 'green', 'message': '配置保存成功'}
        return (template('editdhcpserv', session=s, msg=msg, info=idata))
    else:
        msg = {'color': 'red', 'message': '配置保存失败'}
        sql = " select value from sysattr where attr='dhcpconf' "
        idata = readDb(sql, )
        return (template('editdhcpserv', session=s, msg=msg, info=idata))
예제 #23
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def servtools():
    """资源配置"""
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='resData' and servattr='sys' "
    result = readDb(sql,)
    try:
        info = json.loads(result[0].get('value'))
    except:
        return(template('resconfig',session=s,msg={},info={}))
    return template('resconfig',session=s,msg={},info=info)
예제 #24
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def addclientconf():
    """新增服务配置项"""
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='vpnclient' "
    idata = readDb(sql,)
    try:
       info = json.loads(idata[0].get('value'))
    except:
       return template('addvpncltconfig',session=s,msg={},info={})
    return template('addvpncltconfig',session=s,msg={},info=info)
예제 #25
0
def do_addftpservconf():
    """新增服务配置项"""
    s = request.environ.get('beaker.session')
    authtype = request.forms.get("authtype")
    listenaddr = request.forms.get("listenaddr")
    listenport = request.forms.get("listenport")
    maxclient = request.forms.get("maxclient")
    sameipmax = request.forms.get("sameipmax")
    vdir = request.forms.get("vdir")
    vid = request.forms.get("vid")
    umask = request.forms.get("umask")
    passiveenable = request.forms.get("passiveenable")
    passiveport = request.forms.get("passiveport")
    passiveaddr = request.forms.get("passiveaddr")
    if (listenaddr != "*" and netmod.checkmask(listenaddr) == False) or (
            passiveaddr != "*" and netmod.checkip(passiveaddr) == False):
        msg = {'color': 'red', 'message': u'地址填写不合法,保存失败'}
        sql = " select id,authtype,listenaddr,listenport,maxuser,sameipmax,vdir,owninfo,umask,passiveenable,passiveport,passiveaddr from ftpserv where id='1'"
        result = readDb(sql, )
        return template('ftpservconf', session=s, msg=msg, info=result[0])
    #ftp根路径处理判断
    if vdir.endswith('/'):
        vdir = re.sub('/$', '', vdir)
    if not vdir.startswith('/'):
        msg = {'color': 'red', 'message': u'根路径必须绝对路径,保存失败'}
        sql = " select id,authtype,listenaddr,listenport,maxuser,sameipmax,vdir,owninfo,umask,passiveenable,passiveport,passiveaddr from ftpserv where id='1'"
        result = readDb(sql, )
        return template('ftpservconf', session=s, msg=msg, info=result[0])
    sql = " UPDATE ftpserv set authtype=%s,listenaddr=%s,listenport=%s,maxuser=%s,sameipmax=%s,vdir=%s,owninfo=%s,umask=%s,passiveenable=%s,passiveport=%s,passiveaddr=%s where id='1'"
    data = (authtype, listenaddr, listenport, maxclient, sameipmax, vdir, vid,
            umask, passiveenable, passiveport, passiveaddr)
    result = writeDb(sql, data)
    if result == True:
        msg = {'color': 'green', 'message': u'配置保存成功'}
        sql = " select id,authtype,listenaddr,listenport,maxuser,sameipmax,vdir,owninfo,umask,passiveenable,passiveport,passiveaddr from ftpserv where id='1'"
        result = readDb(sql, )
        writeFTPconf(action='uptconf')
        return template('ftpservconf', session=s, msg=msg, info=result[0])
    else:
        msg = {'color': 'red', 'message': u'配置保存失败'}
        sql = " select id,authtype,listenaddr,listenport,maxuser,sameipmax,dir,owninfo,umask,passiveenable,passiveport,passiveaddr from ftpserv where id='1'"
        result = readDb(sql, )
        return template('ftpservconf', session=s, msg=msg, info=result[0])
예제 #26
0
def servtools():
    """资源配置"""
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='resData' and servattr='sys' "
    result = readDb(sql,)
    try:
        info = json.loads(result[0].get('value'))
    except:
        return(template('resconfig',session=s,msg={},info={}))
    return template('resconfig',session=s,msg={},info=info)
예제 #27
0
def do_ifdatashow():
    s = request.environ.get('beaker.session')
    sel = {}
    sel['ifname'] = request.forms.get("ifname")
    sel['shownum'] = request.forms.get("shownum")
    sel['rftime'] = request.forms.get("rftime")
    x,runresult = cmds.gettuplerst('iftop -i %s -n -N -P -t -L %s -s %s' % (sel['ifname'],sel['shownum'],sel['rftime']))
    sql = " SELECT ifacename FROM netiface where status='UP' UNION select concat('tun',tunid) as ifacename FROM vnodemgr where status='1' "
    ifacelist_result = readDb(sql,)
    return(template('ifdatashow',session=s,msg={},iflist=ifacelist_result,sel=sel,runresult=runresult))
예제 #28
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def ifdatashow():
    s = request.environ.get('beaker.session')
    sql = " SELECT ifacename FROM netiface where status='UP' UNION select value as ifacename FROM sysattr where status='1' and servattr='vpnrelay'"
    ifacelist_result = readDb(sql, )
    return (template('ifdatashow',
                     session=s,
                     msg={},
                     iflist=ifacelist_result,
                     sel=dict(),
                     runresult=''))
예제 #29
0
파일: User.py 프로젝트: 737069384/lnmFTP
def do_changeuser(id):
    s = request.environ.get('beaker.session')
    username = request.forms.get("username")
    password = request.forms.get("password")
    ustatus = request.forms.get("ustatus")
    ulbandwidth = request.forms.get("ulbandwidth")
    dlbandwidth = request.forms.get("dlbandwidth")
    ipaccess = request.forms.get("ipaccess")
    quotasize = request.forms.get("quotasize")
    vdir = request.forms.get("vdir")
    comment = request.forms.get("comment")
    access = request.forms.get("access")

    #把密码进行加密处理后再保存到数据库中
    if not password:
        sql = "select password from user where id = %s"
        password = readDb(sql, (id, ))[0].get('password')
    else:
        m = hashlib.md5()
        m.update(password)
        md5password = m.hexdigest()

    #处理vdir规范
    if vdir.endswith('/') or vdir.startswith('/'):
        vdir = re.sub('^/', '', vdir)
        vdir = re.sub('/$', '', vdir)
        logging.error(vdir)

    #检查表单长度
    if len(username) < 4 or (len(password) < 8 or len(password) > 16):
        msg = {'color': 'red', 'message': '用户名或密码长度错误,提交失败!'}
        return '-2'

    if not username:
        msg = {'color': 'red', 'message': '必填字段为空,提交失败!'}
        return '-2'

    sql = """
            UPDATE user SET
            username=%s,password=%s,ustatus=%s,ulbandwidth=%s,dlbandwidth=%s,ipaccess=%s,quotasize=%s,vdir=%s,comment=%s,access=%s
            WHERE id=%s
        """
    data = (username, md5password, ustatus, ulbandwidth, dlbandwidth, ipaccess,
            quotasize, vdir, comment, access, id)
    result = writeDb(sql, data)
    if result == True:
        wrtlog('User', '更新用户成功:%s' % username, s['username'],
               s.get('clientip'))
        msg = {'color': 'green', 'message': '更新成功!'}
        return '0'
    else:
        wrtlog('User', '更新用户失败:%s' % username, s['username'],
               s.get('clientip'))
        msg = {'color': 'red', 'message': '更新失败!'}
        return '-1'
예제 #30
0
파일: Network.py 프로젝트: ztdmg/lnmVPN
def editdnsserv():
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='dnsconf' "
    idata = readDb(sql, )
    try:
        info = json.loads(idata[0].get('value'))
    except:
        return (template('editdnsserv', session=s, msg={}, info={}))
    info['dnsport'] = 53
    info['dnsstatus'] = cmds.servchk(info.get('dnsport'))
    return (template('editdnsserv', session=s, msg={}, info=info))
예제 #31
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def editdnsserv():
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='dnsconf' "
    idata = readDb(sql,)
    try:
       info = json.loads(idata[0].get('value'))
    except:
       return(template('editdnsserv',session=s,msg={},info={}))
    info['dnsport']=53
    info['dnsstatus']=cmds.servchk(info.get('dnsport'))
    return(template('editdnsserv',session=s,msg={},info=info))
예제 #32
0
def do_chgstatus(id):
    s = request.environ.get('beaker.session')
    sql = """ select ifacename,ifacetype from netiface where id=%s """
    msg = {'color':'green','message':u'接口已成功重启'}
    itfinfo=readDb(sql,(id,))
    if itfinfo[0].get('ifacetype') == 'ADSL':
       cmds.gettuplerst('ps aux|grep -e \'xdsl.*%s\'|grep -v grep|awk \'{print $2}\' |xargs -i kill -9 {}' % id)
       cmds.gettuplerst('ip link set ppp%s down' % itfinfo[0].get('id'))
    cmds.gettuplerst('ip link set %s down' % itfinfo[0].get('ifacename'))
    cmds.servboot('networks',action='uptconf')
    return template('networkconf',session=s,msg=msg)
예제 #33
0
파일: User.py 프로젝트: 737069384/lnmFTP
def getuser():
    sql = """ SELECT U.id,U.username,U.ustatus,U.ulbandwidth,U.dlbandwidth,U.ipaccess,U.quotasize,U.comment,
        concat(D.vdir,'/',U.vdir) as vdir,
        U.vdir as vdirs,
        date_format(adddate,'%%Y-%%m-%%d') as adddate 
        FROM user as U  
        LEFT OUTER JOIN ftpserv as D ON D.id='1' WHERE U.access = '1'
        order by username
    """
    userlist = readDb(sql, )
    return json.dumps(userlist)
예제 #34
0
def filesharesign(signdata):
    sql = " SELECT filepath from fileshare where signdata=%s "
    if signdata == "":
        return abort(404)
    download_path = readDb(sql, (signdata, ))[0].get('filepath')
    filename = os.path.basename(download_path)
    if is_chinese(filename) == True:
        filename = filename.encode('GB2312')
        filedir = os.path.dirname(download_path).encode('GB2312')
    else:
        filedir = os.path.dirname(download_path)
    return static_file(filename, root=filedir, download=filename)
예제 #35
0
def getfileshareinfo(path):
    import chardet
    from MySQL import readDb
    s = request.environ.get('beaker.session')
    ftpuser = s['username']
    ftppass = LoginCls().decode(AppServer().getConfValue('keys', 'pkey'),
                                s['skeyid'])
    sql = """ select listenaddr,listenport,passiveenable,passiveaddr from ftpserv """
    result = readDb(sql, )
    if int(result[0].get('passiveenable')) == 0:
        if result[0].get('listenaddr') == "*":
            servaddr = "127.0.0.1"
        else:
            servaddr = result[0].get('listenaddr')
    else:
        if result[0].get('passiveaddr') == "*":
            servaddr = "127.0.0.1"
        else:
            servaddr = result[0].get('passiveaddr')
    try:
        ftp = FTPHandle(servaddr, int(result[0].get('listenport')), '0', '1')
    except:
        newflist = []
        return json.dumps(newflist)
    try:
        ftp.Login(ftpuser, ftppass)
    except:
        newflist = []
        return json.dumps(newflist)
    if path == 'root':
        flistdict = ftp.getdirs()
    else:
        charstr = chardet.detect(path).get('encoding')
        if str(charstr).lower() != "gbk":
            try:
                path = path.decode('utf-8').encode('gbk')
            except:
                path = path
        flistdict = ftp.getdirs(path)
    ftp.close()
    newflist = []
    for i in flistdict.get('files'):
        charstr = chardet.detect(i.get('name')).get('encoding')
        if str(charstr).lower() != "utf-8":
            try:
                i['name'] = i.get('name').decode('gbk').encode('utf-8')
                newflist.append(i)
            except:
                continue
        else:
            newflist.append(i)
    return json.dumps(newflist)
예제 #36
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def servconf():
    """VPN服务配置项"""
    s = request.environ.get('beaker.session')
    sql = " select id,servport from vpnservconf "
    result = readDb(sql,)
    for data in result :
        if cmds.servchk(data.get('servport')) == 0 :
           sql = "update vpnservconf set workstatus='1' where id=%s"
           writeDb(sql,(data.get('id'),))
        else :
           sql = "update vpnservconf set workstatus='0' where id=%s"
           writeDb(sql,(data.get('id'),))
    return template('vpnservconf',session=s,msg={})
예제 #37
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def addinterface():
    s = request.environ.get('beaker.session')
    # 初始化网卡添加状态,已经被配置的网卡,无法再次配置
    sqla = " select attr from sysattr where status='1' and servattr='netiface' and attr not in (select ifacename from netiface) "
    erriface = readDb(sqla,)
    if len(erriface) > 0 :
       for x in erriface:
           sqlb = "update sysattr set status='1' where attr=%s and servattr='netiface'"
           writeDb(sqlb,(x.get('attr'),))
    sqlc = " select attr from sysattr where status='1' and servattr='netiface' and attr in (select ifacename from netiface) "
    erriface2 = readDb(sqlc,)
    if len(erriface2) > 0 :
       for y in erriface2:
           sqld = "update sysattr set status='0' where attr=%s and servattr='netiface'"
           writeDb(sqld,(y.get('attr'),))
    # 判断接口是否被锁定或已配置
    sqld = " SELECT attr as ifacename,concat(attr,'|',value) as value FROM sysattr where servattr='netiface' and status='1' order by attr desc"
    ifacelist_result = readDb(sqld,)
    if len(ifacelist_result) == 0 :
       msg = {'color':'red','message':u'无可用物理接口,添加失败'}
       return(template('networkconf',session=s,msg=msg))
    return template('addinterface',session=s,info={},ifacelist_result=ifacelist_result)
예제 #38
0
def do_upload():
    import chardet
    s = request.environ.get('beaker.session')
    dstdir = request.forms.get('dstdir')
    charstr = chardet.detect(dstdir).get('encoding')
    if str(charstr).lower() != "gbk":
        try:
            dstdir = dstdir.decode('utf-8').encode('gbk')
        except:
            dstdir = dstdir
    ftpuser = s['username']
    ftppass = LoginCls().decode(AppServer().getConfValue('keys', 'pkey'),
                                s['skeyid'])
    sql = """ select listenaddr,listenport,passiveenable,passiveaddr from ftpserv """
    result = readDb(sql, )
    if int(result[0].get('passiveenable')) == 0:
        if result[0].get('listenaddr') == "*":
            servaddr = "127.0.0.1"
        else:
            servaddr = result[0].get('listenaddr')
    else:
        if result[0].get('passiveaddr') == "*":
            servaddr = "127.0.0.1"
        else:
            servaddr = result[0].get('passiveaddr')
    try:
        ftp = FTPHandle(servaddr, int(result[0].get('listenport')), '0', '1')
    except:
        return -1
    fname = request.forms.get('fname')
    if fname:
        charstr = chardet.detect(fname).get('encoding')
        if str(charstr).lower() != "gbk":
            try:
                fname = fname.decode('utf-8').encode('gbk')
            except:
                pass
        os.system('rm -f /tmp/%s_ftpfile' % ftpuser)
        softfile = request.POST.get('fdesc')
        softfile.save('/tmp/%s_ftpfile' % ftpuser, overwrite=True)
        try:
            ftp.Login(ftpuser, ftppass)
            ftp.UpLoadFile("/tmp/%s_ftpfile" % ftpuser, fname, dstdir)
            ftp.close()
        except:
            return -1
        os.system('rm -f /tmp/%s_ftpfile' % ftpuser)
        return 0
    else:
        return -1
예제 #39
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def addprofile():
    s = request.environ.get('beaker.session')
    xmltext = request.forms.get("xmltext")
    if xmltext == '' :
       msg = {'color':'red','message':u'信息为空,保存失败'}
       return(template('addprofile',session=s,msg=msg,info={}))
    sql = " update sysattr set value=%s where attr='vpnprofile' "
    result = writeDb(sql,(xmltext,))
    if result == True:
       writeVPNconf(action='uptprofile')
       msg = {'color':'green','message':u'Profile.xml保存成功'}
       sql = " select value from sysattr where attr='vpnprofile' "
       result = readDb(sql,)
       return(template('addprofile',session=s,msg=msg,info=result[0]))
예제 #40
0
def getfileshareinfo():
    import chardet
    s = request.environ.get('beaker.session')
    username = s['username']
    sql = " SELECT concat(D.vdir,'/',U.vdir) as vdir FROM user as U LEFT OUTER JOIN ftpserv as D ON D.id='1' WHERE U.username=%s "
    ownftpdir = readDb(sql, (username, ))[0].get('vdir')
    info = []
    status, result = cmds.gettuplerst(
        'find %s -name \'*.*\' -exec basename {} \;|sort -u' % ownftpdir)
    for i in result.split():
        if str(i) != "":
            infos = {}
            charstr = chardet.detect(str(i)).get('encoding')
            if str(charstr).lower() != "utf-8":
                #print str(charstr).lower()
                try:
                    infos['filename'] = i.decode(str(charstr)).encode('utf-8')
                except:
                    continue
                ownftpdir = ownftpdir.encode(str(charstr)).encode('utf-8')
                filepath = '%s/%s' % (ownftpdir.encode(charstr), i)
                nfilepath = filepath.decode(charstr).encode('utf-8')
            else:
                infos['filename'] = i
                filepath = '%s/%s' % (ownftpdir, i)
                nfilepath = filepath
            #if chardet.detect(i).get('encoding')=="GB2312":
            #   infos['filename']=i.decode('GB2312')
            #   ownftpdir = ownftpdir.encode('GB2312')
            #   filepath = '%s/%s' % (ownftpdir.encode('GB2312'),i)
            #   nfilepath = filepath.decode('gb2312').encode('utf-8')
            #else:
            #   infos['filename']=i
            #   filepath = '%s/%s' % (ownftpdir,i)
            #   nfilepath = filepath
            if os.path.isfile(filepath) == False:
                continue
            infos['filesize'] = os.path.getsize(filepath)
            cctime = os.path.getctime(filepath)
            infos['filetime'] = time.strftime('%Y%m%d%H%M%S',
                                              time.localtime(cctime))
        infos['signdata'] = GetFileMd5(filepath)
        sql = " INSERT INTO fileshare (filepath, signdata) VALUES (%s , %s) ON DUPLICATE KEY UPDATE filepath=%s,signdata=%s "
        data = (nfilepath, infos['signdata'], nfilepath, infos['signdata'])
        try:
            writeDb(sql, data)
        except:
            True
        info.append(infos)
    return json.dumps(info)
예제 #41
0
def getuser():
    sql = """
    SELECT
    U.id,
    U.username,
    U.access,
    U.comment,
    date_format(U.adddate,'%%Y-%%m-%%d') as adddate
    FROM
    user as U
    WHERE access = 1
    order by username
    """
    userlist = readDb(sql,)
    return json.dumps(userlist)
예제 #42
0
def do_delaidns(id):
    s = request.environ.get('beaker.session')
    sql = """ select count(*) as count from dns_records where view=(select setname from dns_ipset where id=%s) """
    resultx = readDb(sql,(id,))
    if resultx[0].get('count') > 0 :
       msg = {'color':'red','message':u'无法删除,该地址库已被关联使用'}
       return template('aidns',session=s,msg=msg)
    sql_1 = """ delete from dns_ipset where id=%s """
    result = writeDb(sql_1,(id,))
    if result == True:
       writeDNSconf(action='uptconf')
       msg = {'color':'green','message':u'删除成功'}
       return template('aidns',session=s,msg=msg)
    else :
       msg = {'color':'red','message':u'删除失败'}
       return template('aidns',session=s,msg=msg)
예제 #43
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def do_editdhcpserv():
    s = request.environ.get('beaker.session')
    dhcpenable = request.forms.get("dhcpenable")
    getgw = request.forms.get("getgw")
    getdns1 = request.forms.get("getdns1")
    getdns2 = request.forms.get("getdns2")
    startip = request.forms.get("startip")
    stopip = request.forms.get("stopip")
    otime = request.forms.get("otime")
    dhcplist = request.forms.get("dhcplist").replace('\r\n','\n').strip()
    idata = dict()
    idata['dhcpenable']=dhcpenable
    idata['getgw']=getgw
    idata['getdns1']=getdns1
    idata['getdns2']=getdns2
    idata['startip']=startip
    idata['stopip']=stopip
    idata['otime']=otime
    if netmod.checkip(startip) == False or netmod.checkip(stopip) == False or netmod.checkip(getgw) == False or netmod.checkip(getdns1) == False:
       msg = {'color':'red','message':'参数配置异常,保存失败'}
       return(template('editdhcpserv',session=s,msg=msg,info=idata))
    #判断dhcp固定分配是否为空
    if dhcplist != "":
       for i in dhcplist.split('\n'):
           try:
              xmac = i.split(',')[0]
              xip = i.split(',')[1]
              if (netmod.is_ValidMac(xmac) == False or netmod.checkip(xip) == False) and xmac != "":
                 msg = {'color':'red','message':'配置保存失败,固定分配记录异常'}
                 return(template('editdhcpserv',session=s,msg=msg,info=idata))
              else:
                 idata['dhcplist']=dhcplist
           except:
              msg = {'color':'red','message':'配置保存失败,固定分配记录异常'}
              return(template('editdhcpserv',session=s,msg=msg,info=idata))
    sql = " update sysattr set value=%s where attr='dhcpconf' "
    iidata=json.dumps(idata)
    result = writeDb(sql,(iidata,))
    if result == True :
       writeDNSconf(action='uptconf')
       msg = {'color':'green','message':'配置保存成功'}
       return(template('editdhcpserv',session=s,msg=msg,info=idata))
    else :
       msg = {'color':'red','message':'配置保存失败'}
       sql = " select value from sysattr where attr='dhcpconf' "
       idata = readDb(sql,)
       return(template('editdhcpserv',session=s,msg=msg,info=idata))
예제 #44
0
def getuser():
    sql = """
    SELECT
    U.id,
    U.username,
    D.name as policy,
    U.access,
    U.comment,
    date_format(U.adddate,'%%Y-%%m-%%d') as adddate
    FROM
    user as U
    LEFT OUTER JOIN vpnpolicy as D on U.policy=D.id
    WHERE access = 0
    order by username
    """
    userlist = readDb(sql,)
    return json.dumps(userlist)
예제 #45
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def do_systeminfo():
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='resData' "
    info = readDb(sql,)
    try:
       ninfo=json.loads(info[0].get('value'))
    except:
       return False
    visitDay = ninfo.get('visitDay')
    try:
        date = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()-(int(visitDay) * 86400)))
        sql = " select info,tim from sysinfo where tim > (%s) order by id"
        resultData = readDb2(sql,(date,))
        result = [True,resultData]
    except Exception as e:
        result = [False,str(e)]
    return json.dumps({'resultCode':0,'result':result},cls=DateEncoder)
예제 #46
0
def do_systeminfo():
    s = request.environ.get('beaker.session')
    sql = " select value from sysattr where attr='resData' "
    info = readDb(sql,)
    try:
        ninfo=json.loads(info[0].get('value'))
    except:
        return False
    visitDay = ninfo.get('visitDay')
    try:
        date = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()-(int(visitDay) * 86400)))
        sql = " select info,tim from sysinfo where tim > (%s) order by id"
        resultData = readDb2(sql,(date,))
        result = [True,resultData]
    except Exception as e:
        result = [False,str(e)]
    return json.dumps({'resultCode':0,'result':result},cls=DateEncoder)
예제 #47
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def systeminfo():
    """系统信息项"""
    s = request.environ.get('beaker.session')
    info=dict()
    info['hostname'] = platform.node()
    info['kernel'] = platform.platform()
    info['systime'] = cmds.getdictrst('date +"%Y%m%d %H:%M:%S"').get('result')
    cmdRun='cat /proc/uptime|awk -F. \'{run_days=$1/86400;run_hour=($1%86400)/3600;run_minute=($1%3600)/60;run_second=$1%60;printf("%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}\''
    info['runtime'] = cmds.getdictrst(cmdRun).get('result')
    info['pyversion'] = platform.python_version()
    info['memsize'] = cmds.getdictrst('cat /proc/meminfo |grep \'MemTotal\' |awk -F: \'{printf ("%.0fM",$2/1024)}\'|sed \'s/^[ \t]*//g\'').get('result')
    info['cpumode'] = cmds.getdictrst('grep \'model name\' /proc/cpuinfo |uniq |awk -F : \'{print $2}\' |sed \'s/^[ \t]*//g\' |sed \'s/ \+/ /g\'').get('result')
    info['v4addr'] = 'Lan: '+netmod.NatIP()+'\tWan: '+netmod.NetIP()
    info['appversion'] = AppServer().getVersion()
    """管理日志"""
    sql = " SELECT id,objtext,objact,objhost,objtime FROM logrecord order by id DESC limit 7 "
    logdict = readDb(sql,)
    return template('systeminfo',session=s,info=info,logdict=logdict)
예제 #48
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def delpolicy(id):
    """删除策略"""
    s = request.environ.get('beaker.session')
    sql = "select username from user where policy=%s "
    chkdata = readDb(sql,(id,))
    if len(chkdata) > 0 :
       msg = {'color':'red','message':u'删除失败,该策略已被关联无法删除'}
       return(template('policyconf',session=s,msg=msg,info={}))
    sql = "delete from vpnpolicy where id in (%s) "
    result = writeDb(sql,(id,))
    if result:
       writeVPNconf(action='uptgroup')
       writeUTMconf(action='uptconf')
       msg = {'color':'green','message':u'删除成功'}
       return(template('policyconf',session=s,msg=msg,info={}))
    else:
       msg = {'color':'red','message':u'删除失败'}
       return(template('policyconf',session=s,msg=msg,info={}))
예제 #49
0
파일: User.py 프로젝트: Lee-12/lnmVPN
def getuser():
    sql = """
    SELECT
    U.id,
    U.username,
    U.policy,
    D.name as policyname,
    U.access,
    U.comment,
    date_format(U.adddate,'%%Y-%%m-%%d') as adddate
    FROM
    user as U
    LEFT OUTER JOIN vpnpolicy as D on U.policy=D.id
    WHERE access = 1
    order by username
    """
    userlist = readDb(sql,)
    return json.dumps(userlist)
예제 #50
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def deliface(id):
    s = request.environ.get('beaker.session')
    sql = " DELETE FROM netiface WHERE id=%s "
    sql2 = " select ifacename FROM netiface WHERE id=%s "
    ifacename = readDb(sql2,(id,))
    result = writeDb(sql,(id,))
    if result == True :
       writeNIconf(action='uptconf')
       cmds.servboot('networks',action='uptconf')
       writeUTMconf(action='uptconf')
       msg = {'color':'green','message':u'删除成功'}
       cmds.gettuplerst('ip addr flush dev %s' % ifacename[0].get('ifacename'))
       #恢复绑定
       sql2 = "update sysattr set status='1' where attr=%s"
       writeDb(sql2,(ifacename[0].get('ifacename'),))
       return template('networkconf',session=s,msg=msg)
    else:
       msg = {'color':'red','message':u'删除失败'}
       return template('networkconf',session=s,msg=msg)
예제 #51
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def deliface(stype,id):
    s = request.environ.get('beaker.session')
    if stype == 'sys' or stype == 'static' :
       sqlquery = " select dest,netmask,gateway FROM sysroute WHERE id=%s "
       sql = " DELETE FROM sysroute WHERE id=%s "
    else:
       sqlquery = " select srcaddr,destaddr,pronum,iface as outdev FROM sysrouteadv WHERE id=%s "
       sql = " DELETE FROM sysrouteadv WHERE id=%s "
    resultA = readDb(sqlquery,(id,))
    # 判断删除入口并返回到指定界面
    if stype == 'sys':
       tpl = 'routeconf'
    elif stype == 'static':
       tpl = 'staticroute'
    elif stype == 'adv':
       tpl = 'advroute'
    # 判断提交的指令
    result = writeDb(sql,(id,))
    if result == True:
       if stype == 'adv':
          try:
             if resultA[0].get('srcaddr') == '' and resultA[0].get('destaddr') != '':
                cmds.getdictrst('ip rule del prio %s to %s' % (resultA[0].get('pronum'),resultA[0].get('destaddr')))
             elif resultA[0].get('destaddr') == '' and resultA[0].get('srcaddr') != '':
                cmds.getdictrst('ip rule del prio %s from %s dev %s' % (resultA[0].get('pronum'),resultA[0].get('srcaddr')))
             elif resultA[0].get('destaddr') == '' and resultA[0].get('srcaddr') == '':
                cmds.getdictrst('ip rule del prio %s dev %s' % (resultA[0].get('pronum'),resultA[0].get('outdev')))
             else:
                cmds.getdictrst('ip rule del prio %s from %s to %s' % (resultA[0].get('pronum'),resultA[0].get('srcaddr'),resultA[0].get('destaddr')))
             msg = {'color':'green','message':u'删除成功'}
             return template(tpl,session=s,msg=msg)
          except:
                msg = {'color':'green','message':u'删除成功'}
                return template(tpl,session=s,msg=msg)
       else:
          cmds.getdictrst('route del -net %s netmask %s gw %s' % (resultA[0].get('dest'),resultA[0].get('netmask'),resultA[0].get('gateway')))
          writeROUTEconf(action='uptconf')
          writeUTMconf(action='uptconf')
          msg = {'color':'green','message':u'删除成功'}
          return template(tpl,session=s,msg=msg)
    else:
       msg = {'color':'red','message':u'删除失败'}
       return template(tpl,session=s,msg=msg)
예제 #52
0
파일: Login.py 프로젝트: Lee-12/lnmVPN
def do_login():
    s = request.environ.get('beaker.session')
    s['sitename'] = AppServer().getConfValue('site','sitename')
    """用户登陆过程,判断用户帐号密码,保存SESSION"""
    username = request.forms.get('username').strip()
    passwd = request.forms.get('passwd').strip()
    if not username or not passwd:
        message = u'帐号或密码不能为空!'
        return template('login',message=message)

    m_encrypt = LoginCls().encode(keys,passwd)
    auth_sql = '''
        SELECT
            id,username,access
        FROM
            user
        WHERE
            username=%s and passwd=%s
        '''
    auth_user = readDb(auth_sql,(username,m_encrypt))
    if auth_user:
       s['webhost'] = request.environ.get('HTTP_HOST')
       s['clientip'] = request.environ.get('REMOTE_ADDR')
       s['username'] = username
       s['userid'] = auth_user[0]['id']
       s['access'] = auth_user[0]['access']
       # session中添加系统环境检测警报
       s['admemail'] = '*****@*****.**'
       s['errnum'] = errnum
       s['PayInfo'] = AppServer().getPayinfo()
       s.save()
       wrtlog('Login','登录成功',username,s['clientip'])
    else:
       clientip = request.environ.get('REMOTE_ADDR')
       wrtlog('Login','登录失败',username,clientip)
       message = u'帐号或密码错误!'
       return template('login',message=message,session=s)
    if auth_user[0]['access'] == 0 :
       return redirect('/project')
    return redirect('/')
예제 #53
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def delcert():
    id = request.forms.get('str').rstrip(',')
    if not id:
        return '-1'
    sql2 = " select commonname from certmgr where id=%s "
    result = readDb(sql2,(id,))
    if result[0].get('commonname') == 'CA' or result[0].get('commonname') == 'Server':
       cmds.gettuplerst('rm -rf %s/*.crt %s/*.pem %s/*.txt %s/*.p12' % (gl.get_value('certdir'),gl.get_value('certdir'),gl.get_value('certdir'),gl.get_value('certdir')))
       writeDb('TRUNCATE TABLE certmgr')
    else:
       commonname = result[0].get('commonname')
       # 吊销证书
       cmds.gettuplerst('cat %s/%s.crt >> %s/revoke.pem' % (gl.get_value('certdir'),commonname,gl.get_value('certdir')))
       cmds.gettuplerst('certtool --generate-crl --load-ca-privkey %s/ca-key.pem --load-ca-certificate %s/ca.crt --load-certificate %s/revoke.pem --template %s/crl.txt --outfile %s/crl.pem' % (gl.get_value('certdir'),gl.get_value('certdir'),gl.get_value('certdir'),gl.get_value('certdir'),gl.get_value('certdir')))
       # 删除用户证书文件
       cmds.gettuplerst('/bin/rm -rf %s/%s.crt %s/%s.pem %s/%s.p12' % (gl.get_value('certdir'),commonname,gl.get_value('certdir'),commonname,gl.get_value('certdir'),commonname))

    sql = "delete from certmgr where id in (%s)"
    result = writeDb(sql % id)
    if result:
        return '0'
    else:
        return '-1'
예제 #54
0
파일: User.py 프로젝트: Lee-12/lnmVPN
def do_changeuser(id):
    s = request.environ.get('beaker.session')
    username = request.forms.get("username")
    passwd = request.forms.get("passwd")
    policy = request.forms.get("policy")
    access = request.forms.get("access")
    comment = request.forms.get("comment")
    #把密码进行加密处理后再保存到数据库中
    if not passwd :
       sql = "select passwd from user where id = %s"
       m_encrypt = readDb(sql,(id,))[0].get('passwd')
    else:
       m_encrypt = LoginCls().encode(keys,passwd)
    # 判断用户表单跳转[弃用]
    #if int(access) == 0:
    #   formaddr='user'
    #else :
    #   formaddr='admin'
    #检查表单长度
    if len(username) < 4 or (len(passwd) > 0 and len(passwd) < 8) :
        return -1
    if not (username and policy):
        return -2
    sql = """
            UPDATE user SET
            username=%s,passwd=%s,policy=%s,access=%s,comment=%s
            WHERE id=%s
        """
    data = (username,m_encrypt,int(policy),access,comment,id)
    result = writeDb(sql,data)
    if result == True:
       wrtlog('User','更新用户成功:%s' % username,s['username'],s.get('clientip'))
       writeVPNconf(action='uptuser')
       return 0
    else:
       wrtlog('User','更新用户失败:%s' % username,s['username'],s.get('clientip'))
       return -1
예제 #55
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def addusercerts():
    s = request.environ.get('beaker.session')
    policylist_sql = "select id,name from vpnpolicy "
    plylist_result = readDb(policylist_sql,)
    return template('addusercerts',message='',info={},session=s,plylist_result=plylist_result)
예제 #56
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def editrecord(id):
    s = request.environ.get('beaker.session')
    sql = " select dnstype,domain,data as record,pronum from dnsrecord where id=%s "
    result = readDb(sql,(id,))
    return(template('adddnsconf',session=s,msg={},info=result[0]))
예제 #57
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def getifaceinfo():
    sql = " SELECT id,ifacename,ifacetype,ipaddr,netmask,gateway,rxdata,txdata,status FROM netiface "
    iface_list = readDb(sql,)
    return json.dumps(iface_list)
예제 #58
0
파일: Network.py 프로젝트: Lee-12/lnmVPN
def getifaceinfo():
    sql = " SELECT id,domain,dnstype,data,pronum FROM dnsrecord order by dnstype"
    info = readDb(sql,)
    return json.dumps(info)
예제 #59
0
파일: User.py 프로젝트: Lee-12/lnmVPN
#coding=utf-8
import os,sys,json,re,logging,ConfigParser
from bottle import request,route,error,run,default_app
from bottle import template,static_file,redirect,abort
import bottle,hashlib

from MySQL import writeDb,readDb
from Functions import AppServer,LoginCls,writeVPNconf,wrtlog
from Login import checkLogin,checkAccess
import Login

keys = AppServer().getConfValue('keys','passkey')


policylist_sql = " select id,name from vpnpolicy "
plylist_result = readDb(policylist_sql,)

@route('/changepasswd')
@checkLogin
def user():
    s = request.environ.get('beaker.session')
    return template('changepasswd',session=s,msg={},info={})

@route('/changepasswd',method="POST")
@checkLogin
def user():
    s = request.environ.get('beaker.session')
    username = s.get('username')
    oldpwd = request.forms.get("oldpwd")
    newpwd = request.forms.get("newpwd")
    newpwds = request.forms.get("newpwds")
예제 #60
0
파일: System.py 프로젝트: Lee-12/lnmVPN
def editvpnservconf(id):
    s = request.environ.get('beaker.session')
    sql = " SELECT authtype,ipaddr,servport,virip,virmask,maxclient,maxuser,authtimeout,authnum,locktime,comp,cisco,workstatus FROM vpnservconf WHERE id = %s "
    result = readDb(sql,(id,))
    return template('addvpnconfig',session=s,info=result[0])