コード例 #1
0
ファイル: portal.py プロジェクト: actcms/toughwlan
    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)
コード例 #2
0
ファイル: radius.py プロジェクト: actcms/toughwlan
    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)
コード例 #3
0
ファイル: oss_server.py プロジェクト: actcms/toughwlan
    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)
コード例 #4
0
ファイル: oss_ping.py プロジェクト: actcms/toughwlan
    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()
コード例 #5
0
ファイル: nas.py プロジェクト: actcms/toughwlan
    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)
コード例 #6
0
ファイル: online.py プロジェクト: actcms/toughwlan
    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)
コード例 #7
0
ファイル: portal.py プロジェクト: actcms/toughwlan
    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)
コード例 #8
0
ファイル: login.py プロジェクト: actcms/toughwlan
    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")
コード例 #9
0
ファイル: operator.py プロジェクト: actcms/toughwlan
    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)
コード例 #10
0
ファイル: oss_server.py プロジェクト: actcms/toughwlan
    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)
コード例 #11
0
ファイル: ssid.py プロジェクト: actcms/toughwlan
    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)
コード例 #12
0
ファイル: domain.py プロジェクト: actcms/toughwlan
    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"删除域成功!")
コード例 #13
0
ファイル: domain.py プロジェクト: actcms/toughwlan
    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)
コード例 #14
0
ファイル: api_radius.py プロジェクト: actcms/toughwlan
    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')
コード例 #15
0
ファイル: ostype.py プロジェクト: actcms/toughwlan
    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)
コード例 #16
0
ファイル: radius.py プロジェクト: actcms/toughwlan
    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)
コード例 #17
0
ファイル: password.py プロジェクト: actcms/toughwlan
    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("/")
コード例 #18
0
ファイル: portal.py プロジェクト: actcms/toughwlan
    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)
コード例 #19
0
ファイル: operator.py プロジェクト: actcms/toughwlan
    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)
コード例 #20
0
ファイル: domain.py プロジェクト: actcms/toughwlan
    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)
コード例 #21
0
ファイル: oss_server.py プロジェクト: actcms/toughwlan
    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')
コード例 #22
0
ファイル: operator.py プロジェクト: actcms/toughwlan
    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)
コード例 #23
0
ファイル: initdb.py プロジェクト: actcms/toughwlan
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()