def post(self): form = portal_form.portal_add_form([]) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) if self.db.query(models.TraPortal.id).filter_by(ip_addr=form.d.ip_addr).count() > 0: return self.render("base_form.html", form=form, msg=u"地址已经存在") portal = models.TraPortal() portal.ip_addr = form.d.ip_addr portal.name = form.d.name portal.secret = form.d.secret portal.auth_url = form.d.auth_url portal.admin_url = form.d.admin_url portal.listen_port = form.d.listen_port portal.last_check = utils.get_currtime() self.db.add(portal) ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)新增Portal信息:%s' % (ops_log.operator_name, portal.auth_url) self.db.add(ops_log) self.db.commit() self.redirect("/portal", permanent=False)
def post(self): form = radius_form.radius_add_form([]) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) if self.db.query(models.TraRadius.id).filter_by(ip_addr=form.d.ip_addr).count() > 0: return self.render("base_form.html", form=form, msg=u"ip地址已经存在") radius = models.TraRadius() radius.ip_addr = form.d.ip_addr radius.name = form.d.name radius.secret = form.d.secret radius.acct_port = form.d.acct_port radius.auth_port = form.d.auth_port radius.admin_url = form.d.admin_url radius.last_check = utils.get_currtime() self.db.add(radius) ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)新增Radius信息:%s' % (ops_log.operator_name, radius.ip_addr) self.db.add(ops_log) self.db.commit() self.redirect("/radius", permanent=False)
def post(self): form = oss_server_forms.oss_add_form() if not form.validates(source=self.get_params()): self.render("base_form.html", form=form) return if self.db.query(models.TraOssServer).filter_by(oss_server_ip=form.d.oss_server_ip).count() > 0: self.render("base_form.html", form=form, msg=u"OSS服务器已经存在") return oss_server = models.TraOssServer() oss_server.name = form.d.name oss_server.auth_url = form.d.auth_url oss_server.acct_url = form.d.acct_url oss_server.admin_url = form.d.admin_url oss_server.secret = form.d.secret oss_server.serv_type = form.d.serv_type oss_server.last_check = utils.get_currtime() self.db.add(oss_server) if form.d.serv_type == '1': self.db.query(models.TraOssServer).filter(models.TraOssServer.auth_url != form.d.auth_url).update({'serv_type':0}) ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)新增OSS服务器信息:%s' % (ops_log.operator_name, oss_server.auth_url) self.db.add(ops_log) self.db.commit() self.redirect("/oss",permanent=False)
def ping(self): conn = self.db() try: nonce = str(time.time()) action = "ping" headers = {"Content-Type": ["application/json"]} for oss in conn.query(models.TraOssServer): try: sign = self.mksign(oss.secret, params=[action, nonce]) reqdata = json.dumps(dict(action=action, nonce=nonce, sign=sign)) resp = yield httpclient.fetch(oss.admin_url, postdata=reqdata, headers=headers) if resp.code != 200: self.syslog.error("ping oss <%s> error,http status = %s" % (oss.admin_url, resp.code)) continue jsonresp = json.loads(resp.body) if jsonresp['code'] == 0: oss.last_check = utils.get_currtime() except Exception as err: defer.returnValue("ping oss <%s> error, %s" % (oss.admin_url, str(err))) conn.commit() defer.returnValue("ping oss success") except Exception as err: defer.returnValue("ping oss error, %s" % str(err)) finally: conn.close()
def post(self): form = nas_forms.bas_add_form() if not form.validates(source=self.get_params()): self.render("base_form.html", form=form) return if self.db.query(models.TraBas.id).filter_by(ip_addr=form.d.ip_addr).count() > 0: self.render("base_form.html", form=form, msg=u"Bas地址已经存在") return bas = models.TraBas() bas.ip_addr = form.d.ip_addr bas.bas_name = form.d.bas_name bas.time_type = form.d.time_type bas.vendor_id = form.d.vendor_id bas.portal_vendor = form.d.portal_vendor bas.bas_secret = form.d.bas_secret bas.coa_port = form.d.coa_port bas.ac_port = form.d.ac_port self.db.add(bas) ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)新增BAS信息:%s' % (ops_log.operator_name, bas.ip_addr) self.db.add(ops_log) self.db.commit() self.redirect("/bas",permanent=False)
def get(self): session_id = self.get_argument("session_id") self.db.query(models.TraOnline).filter_by(session_id=session_id).delete() ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)解锁用户会话:%s' % (ops_log.operator_name, session_id) self.db.add(ops_log) self.db.commit() self.redirect("/online",permanent=False)
def get(self): portal_id = self.get_argument("portal_id") self.db.query(models.TraPortal).filter_by(id=portal_id).delete() ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)删除portal信息:%s' % (ops_log.operator_name, portal_id) self.db.add(ops_log) self.db.commit() self.redirect("/portal",permanent=False)
def post(self): uname = self.get_argument("username") upass = self.get_argument("password") if not uname: return self.render_json(code=1, msg=u"请填写用户名") if not upass: return self.render_json(code=1, msg=u"请填写密码") enpasswd = md5(upass.encode()).hexdigest() opr = self.db.query(models.TraOperator).filter_by( operator_name=uname, operator_pass=enpasswd ).first() if not opr: return self.render_json(code=1, msg=u"用户名密码不符") if opr.operator_status == 1: return self.render_json(code=1, msg=u"该操作员账号已被停用") self.set_secure_cookie("tra_user", uname, expires_days=None) self.set_secure_cookie("tra_login_time", utils.get_currtime(), expires_days=None) self.set_secure_cookie("tra_login_ip", self.request.remote_ip, expires_days=None) self.set_secure_cookie("tra_opr_type", str(opr.operator_type), expires_days=None) if opr.operator_type == 1: for rule in self.db.query(models.TraOperatorRule).filter_by(operator_name=uname): permit.bind_opr(rule.operator_name, rule.rule_path) ops_log = models.TraOperateLog() ops_log.operator_name = uname ops_log.operate_ip = self.request.remote_ip ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)登陆' % (uname,) self.db.add(ops_log) self.db.commit() self.render_json(code=0, msg="ok")
def get(self): operator_id = self.get_argument("operator_id") opr = self.db.query(models.TraOperator).get(operator_id) self.db.query(models.TraOperatorRule).filter_by(operator_name=opr.operator_name).delete() self.db.query(models.TraOperator).filter_by(id=operator_id).delete() ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'删除操作员%s信息' % opr.operator_name self.db.add(ops_log) self.db.commit() self.redirect("/operator",permanent=False)
def get(self): oss_id = self.get_argument("oss_id") self.db.query(models.TraOssServer).filter(id!=oss_id).update({'serv_type':0}) oss_server = self.db.query(models.TraOssServer).filter_by(id=oss_id).first() oss_server.serv_type = 1 ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)设置主OSS服务器信息:%s' % (ops_log.operator_name, oss_id) self.db.add(ops_log) self.db.commit() self.redirect("/oss",permanent=False)
def post(self): form = ssid_form.ssid_update_form([]) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) mssid = self.db.query(models.TraSsid).get(form.d.id) mssid.domain_code = form.d.domain_code mssid.ssid_desc = form.d.ssid_desc ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)修改SSID信息:%s' % (ops_log.operator_name, mssid.ssid) self.db.add(ops_log) self.db.commit() self.redirect("/ssid",permanent=False)
def post(self): domain_id = self.get_argument("domain_id") domain_code = self.db.query(models.TraDomain.domain_code).filter_by(id=domain_id).scalar() if self.db.query(models.TraSsid).filter_by(domain_code=domain_code).count() > 0: return self.render_json(code=1, msg=u"此域下已关联SSID,不允许删除!") self.db.query(models.TraDomain).filter_by(id=domain_id).delete() ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)删除域信息:%s' % (ops_log.operator_name, domain_id) self.db.add(ops_log) self.db.commit() return self.render_json(code=0, msg=u"删除域成功!")
def post(self): tpls = [(t.tpl_name, t.tpl_desc) for t in self.db.query(models.TraTemplate)] form = domain_form.domain_update_vform(tpls=tpls) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) domain = self.db.query(models.TraDomain).get(form.d.id) domain.tpl_name = form.d.tpl_name domain.domain_desc = form.d.domain_desc ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)修改域信息:%s' % (ops_log.operator_name, domain.domain_code) self.db.add(ops_log) self.db.commit() self.redirect("/domain",permanent=False)
def post(self): try: req_msg = self.parse_request() except Exception as err: self.render_json(msg=safestr(err.message)) return name = req_msg.get('name') ipaddr = req_msg.get('ipaddr') or self.request.remote_ip # check radius exists radius = self.db.query(models.TraRadius).filter_by(name=name, ip_addr=ipaddr).first() if not radius: return self.render_json(code=100, msg=u'radius node <{0}> not exists'.format(ipaddr)) else: radius.last_check = utils.get_currtime() self.db.commit() return self.render_json(code=0, msg=u'pong')
def post(self): form = ostype_forms.ostype_update_form() if not form.validates(source=self.get_params()): self.render("base_form.html", form=form) return ostype = self.db.query(models.TraOSTypes).get(form.d.id) ostype.os_name = form.d.os_name ostype.dev_type = form.d.dev_type ostype.match_rule = form.d.match_rule ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)修改设备类型信息:%s' % (ops_log.operator_name, ostype.os_name) self.db.add(ops_log) self.db.commit() self.redirect("/ostype",permanent=False)
def post(self): form = radius_form.radius_update_form([]) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) radius = self.db.query(models.TraRadius).get(form.d.id) radius.name = form.d.name radius.secret = form.d.secret radius.acct_port = form.d.acct_port radius.auth_port = form.d.auth_port radius.admin_url = form.d.admin_url ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)修改Radius信息:%s' % (ops_log.operator_name, radius.ip_addr) self.db.add(ops_log) self.db.commit() self.redirect("/radius", permanent=False)
def post(self): form = password_forms.password_update_form() if not form.validates(source=self.get_params()): self.render("base_form.html", form=form) return if form.d.tra_user_pass != form.d.tra_user_pass_chk: self.render("base_form.html", form=form, msg=u'确认密码不一致') return opr = self.db.query(models.TraOperator).filter_by(operator_name=form.d.tra_user).first() opr.operator_pass = md5(form.d.tra_user_pass).hexdigest() ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)修改密码' % (self.get_secure_cookie("tra_user"),) self.db.add(ops_log) self.db.commit() self.redirect("/")
def post(self): form = portal_form.portal_update_form([]) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) portal = self.db.query(models.TraPortal).get(form.d.id) portal.name = form.d.name portal.secret = form.d.secret portal.auth_url = form.d.auth_url portal.admin_url = form.d.admin_url portal.listen_port = form.d.listen_port ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)修改Portal信息:%s' % (ops_log.operator_name, portal.ip_addr) self.db.add(ops_log) self.db.commit() self.redirect("/portal", permanent=False)
def post(self): form = operator_form.operator_update_form() if not form.validates(source=self.get_params()): rules = self.db.query(models.TraOperatorRule.rule_path).filter_by(operator_name=form.d.operator_name) rules = [r[0] for r in rules] return self.render("base_form.html", form=form,rules=rules) operator = self.db.query(models.TraOperator).get(form.d.id) if form.d.operator_pass: operator.operator_pass = md5(form.d.operator_pass.encode()).hexdigest() operator.operator_desc = form.d.operator_desc operator.operator_status = form.d.operator_status ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'修改操作员%s信息' % operator.operator_name self.db.add(ops_log) # update rules self.db.query(models.TraOperatorRule).filter_by(operator_name=operator.operator_name).delete() for path in self.get_arguments("rule_item"): item = permit.get_route(path) if not item: continue rule = models.TraOperatorRule() rule.operator_name = operator.operator_name rule.rule_name = item['name'] rule.rule_path = item['path'] rule.rule_category = item['category'] self.db.add(rule) permit.unbind_opr(operator.operator_name) self.db.commit() for rule in self.db.query(models.TraOperatorRule).filter_by(operator_name=operator.operator_name): permit.bind_opr(rule.operator_name, rule.rule_path) self.redirect("/operator",permanent=False)
def post(self): tpls = [(t.tpl_name, t.tpl_desc) for t in self.db.query(models.TraTemplate)] form = domain_form.domain_add_vform(tpls=tpls) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) if self.db.query(models.TraDomain.id).filter_by(domain_code=form.d.domain_code).count() > 0: return self.render("base_form.html", form=form, msg=u"domain已经存在") domain = models.TraDomain() domain.tpl_name = form.d.tpl_name domain.domain_code = form.d.domain_code domain.domain_desc = form.d.domain_desc self.db.add(domain) ops_log = models.TraOperateLog() ops_log.operator_name = self.current_user.username ops_log.operate_ip = self.current_user.ipaddr ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)新增域信息:%s' % (ops_log.operator_name, form.d.domain_code) self.db.add(ops_log) self.db.commit() self.redirect("/domain",permanent=False)
def post(self): oss_id = self.get_argument("oss_id") oss_server = self.db.query(models.TraOssServer).filter( models.TraOssServer.id == oss_id, models.TraOssServer.serv_type == 1 ).first() if oss_server: self.render_json(code=1, msg=u"此OSS服务器为主服务器,不允许删除") return self.db.query(models.TraOssServer).filter_by(id=oss_id).delete() ops_log = models.TraOperateLog() ops_log.operator_name = self.get_secure_cookie("tra_user") ops_log.operate_ip = self.get_secure_cookie("tra_login_ip") ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'操作员(%s)删除OSS服务器信息:%s' % (ops_log.operator_name, oss_id) self.db.add(ops_log) self.db.commit() self.render_json(code=0,msg=u'success')
def post(self): form = operator_form.operator_add_form() if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) if self.db.query(models.TraOperator.id).filter_by(operator_name=form.d.operator_name).count() > 0: return self.render("base_form.html", form=form, msg=u"操作员已经存在") operator = models.TraOperator() operator.operator_name = form.d.operator_name operator.operator_pass = md5(form.d.operator_pass.encode()).hexdigest() operator.operator_type = 1 operator.operator_desc = form.d.operator_desc operator.operator_status = form.d.operator_status self.db.add(operator) ops_log = models.TraOperateLog() ops_log.operator_name = self.current_user.username ops_log.operate_ip = self.current_user.ipaddr ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = u'新增操作员信息:%s' % operator.operator_name self.db.add(ops_log) for path in self.get_arguments("rule_item"): item = permit.get_route(path) if not item: continue rule = models.TraOperatorRule() rule.operator_name = operator.operator_name rule.rule_name = item['name'] rule.rule_path = item['path'] rule.rule_category = item['category'] self.db.add(rule) self.db.commit() for rule in self.db.query(models.TraOperatorRule).filter_by(operator_name=operator.operator_name): permit.bind_opr(rule.operator_name, rule.rule_path) self.redirect("/operator",permanent=False)
def init_db(db): params = [ ('system_name',u'管理系统名称',u'ToughWlan管理控制台'), ('is_debug',u'DEBUG模式',u'0'), ('smtp_server',u'SMTP服务器地址',u'smtp.mailgun.org'), ('smtp_user',u'SMTP用户名',u'*****@*****.**'), ('smtp_pwd',u'SMTP密码',u'service2015'), ] for p in params: param = models.TraParam() param.param_name = p[0] param.param_desc = p[1] param.param_value = p[2] db.add(param) ostypes = [ ["Phone", "ios", 'iPod'], ["Pad", "ios", 'iPad'], ["PC", "OSX", 'Intel Mac'], ["Phone", "ios", 'iPhone'], ["Phone", "symbian", 'symbian'], ["Phone", "android1", 'Android 1'], ["Phone", "android2", 'Android 2'], ["Phone", "android3", 'Android 3'], ["Phone", "android4", 'Android 4'], ["PC", "win2000", 'Windows NT 5.0'], ["PC", "winxp", 'Windows NT 5.1'], ["PC", "win2003", 'Windows NT 5.2'], ["PC", "winvista", 'Windows NT 6.0'], ["PC", "win7", 'Windows NT 6.1'], ["PC", "win8", 'Windows NT 6.2'], ["Phone", "winphone", 'Windows Phone'], ["Phone", "BlackBerry", 'BlackBerry'], ["PC", "linux", 'x11'] ] for dev_type,os_name,match_rule in ostypes: otp = models.TraOSTypes() otp.os_name = os_name otp.dev_type = dev_type otp.match_rule = match_rule db.add(otp) opr = models.TraOperator() opr.id = 1 opr.operator_name = u'admin' opr.operator_type = 0 opr.operator_pass = md5('root').hexdigest() opr.operator_desc = 'admin' opr.operator_status = 0 db.add(opr) domain = models.TraDomain() domain.id = 1 domain.domain_code = 'default' domain.domain_desc = u'默认域' domain.tpl_name = 'default' db.add(domain) nas = models.TraBas() nas.ip_addr = "127.0.0.1" nas.bas_name = "local ac" nas.bas_secret = "testing123" nas.ac_port = 2000 nas.coa_port = 3799 nas.portal_vendor = "cmccv1" nas.time_type = 0 nas.vendor_id = 3902 db.add(nas) radius = models.TraRadius() radius.ip_addr = "127.0.0.1" radius.name = "local radius" radius.secret = "testing123" radius.acct_port = 1812 radius.auth_port = 1813 radius.admin_url = "http://127.0.0.1:1815/admin" radius.last_check = utils.get_currtime() db.add(radius) portal = models.TraPortal() portal.ip_addr = "127.0.0.1" portal.name = "local portal" portal.secret = "testing123" portal.auth_url = "http://127.0.0.1:1818/login" portal.listen_port = 50100 portal.admin_url = "http://127.0.0.1:1818/admin" portal.last_check = utils.get_currtime() db.add(portal) oss = models.TraOssServer() oss.name = "local oss server" oss.auth_url = "http://127.0.0.1:1810/api/authorize" oss.acct_url = "http://127.0.0.1:1810/api/acctounting" oss.serv_type = 1 oss.secret = 'LpWE9AtfDPQ3ufXBS6gJ37WW8TnSF920' oss.admin_url = "http://127.0.0.1:1815/api/admin" oss.last_check = utils.get_currtime() db.add(oss) ssid = models.TraSsid() ssid.domain_code = domain.domain_code ssid.ssid = 'default' ssid.ssid_desc = u'默认SSID' db.add(ssid) tpl = models.TraTemplate() tpl.id = 1 tpl.tpl_name = 'default' tpl.tpl_desc = u'默认模版' db.add(tpl) tplattr1 = models.TraTemplateAttr() tplattr1.tpl_name = 'default' tplattr1.attr_name = 'page_title' tplattr1.attr_value = u'无线认证' tplattr1.attr_desc = u'页面标题' tplattr2 = models.TraTemplateAttr() tplattr2.tpl_name = 'default' tplattr2.attr_name = 'logo_url' tplattr2.attr_value = u'/static/img/plogin.png' tplattr2.attr_desc = u'logo地址' tplattr3 = models.TraTemplateAttr() tplattr3.tpl_name = 'default' tplattr3.attr_name = 'home_page' tplattr3.attr_value = u'http://www.baidu.com' tplattr3.attr_desc = u'认证成功重定向主页' db.add(tplattr1) db.add(tplattr2) db.add(tplattr3) db.commit() db.close()