Ejemplo n.º 1
0
    def get(self):
        try:
            userIp = self.get_argument("wlanuserip")
            sign = self.get_argument("sign")
            if sign != self.mksign(params=[userIp]):
                self.render_json(code=1,msg='sign error')
                return

            cli = PortalClient(secret=self.settings.share_secret)
            rl_req = PortalV2.newReqLogout(userIp,self.settings.share_secret,self.settings.ac_addr[0])
            rl_resp = yield cli.sendto(rl_req,self.settings.ac_addr)
            if rl_resp and rl_resp.errCode > 0:
                log.msg(cmcc.AckLogoutErrs[rl_resp.errCode])
                self.render_json(code=1, msg=cmcc.AckLogoutErrs[rl_resp.errCode])
                return

            log.msg('disconnect success')
            self.render_json(code=0, msg='success')

        except Exception as err:

            log.msg(u"disconnect error %s"%str(err))
            import traceback
            traceback.print_exc()
            self.render_json(code=1, msg='error:%s'%str(err))
            return
        finally:
            cli.close()
Ejemplo n.º 2
0
    def get(self):
        is_chap = self.settings.is_chap
        if not self.current_user:
            self.clear_all_cookies()
            self.redirect("/login")
            return
        try:
            qstr = self.get_secure_cookie("portal_qstr")
            wlan_params = self.get_wlan_params(qstr)
            self.syslog.info("wlan params:" + utils.safestr(wlan_params))
            userIp = wlan_params.get("wlanuserip","")

            cli = PortalClient(secret=self.settings.share_secret)
            rl_req = PortalV2.newReqLogout(
                userIp,self.settings.share_secret,self.settings.ac_addr[0],chap=is_chap)
            rl_resp = yield cli.sendto(rl_req,self.settings.ac_addr)
            if rl_resp and rl_resp.errCode > 0:
                print cmcc.AckLogoutErrs[rl_resp.errCode]
            self.syslog.info('logout success')
        except Exception as err:
            self.syslog.error(u"disconnect error %s" % utils.safestr(err))
            import traceback
            traceback.print_exc()
        finally:
            cli.close()

        self.clear_all_cookies()    
        self.redirect("/login?%s"%(qstr),permanent=False)


        
Ejemplo n.º 3
0
        def papAuth():
            try:
                cli = PortalClient(secret=secret, syslog=self.syslog)
                # req auth
                ra_req = PortalV2.newReqAuth(
                    userIp,
                    username,
                    password,
                    0,
                    None,
                    secret,
                    ac_addr[0],
                    chap=False
                )
                ra_resp = yield cli.sendto(ra_req, ac_addr)

                if ra_resp.errCode > 0:
                    if ra_resp.errCode == 2:
                        set_user_cookie()
                        self.redirect(firsturl)
                        return
                    _err_msg = "{0},{1}".format(cmcc.AckAuthErrs[ra_resp.errCode], ra_resp.get_text_info()[0] or "")
                    raise PortalError(_err_msg)

                # aff_ack
                aa_req = PortalV2.newAffAckAuth(userIp, secret, ac_addr[0], ra_req.serialNo, 0, chap=False)
                yield cli.sendto(aa_req, ac_addr, recv=False)

                self.syslog.info('Portal [username:%s] pap auth success' % _username)
                if self.settings.debug:
                    self.syslog.debug('Portal [username:%s] pap auth login [cast:%s ms]' % (
                    _username, (time.time() - start_time) * 1000))

                set_user_cookie()
                self.redirect(firsturl)

            except Exception as err:
                try:
                    self.syslog.error("portal [username:%s] pap auth catch exception,%s" % (
                    _username, utils.safestr(err.message)))
                    back_login(msg=u"portal pap auth error,%s" % utils.safestr(err.message))
                except:
                    back_login(msg=u"portal pap auth error,server process error")
                import traceback
                traceback.print_exc()
            finally:
                cli.close()
Ejemplo n.º 4
0
        def chapAuth():
            try:
                cli = PortalClient(secret=secret, syslog=self.syslog)
                rc_req = PortalV2.newReqChallenge(userIp,secret, chap=is_chap)
                rc_resp = yield cli.sendto(rc_req,ac_addr)

                if rc_resp.errCode > 0:
                    if rc_resp.errCode == 2:
                        set_user_cookie()
                        self.redirect(firsturl)
                        return
                    raise PortalError(cmcc.AckChallengeErrs[rc_resp.errCode])

                # req auth
                ra_req = PortalV2.newReqAuth(
                    userIp,
                    username,
                    password,
                    rc_resp.reqId,
                    rc_resp.get_challenge(),
                    secret,
                    ac_addr[0],
                    serialNo=rc_req.serialNo,
                    chap=is_chap
                )
                ra_resp = yield cli.sendto(ra_req,ac_addr)

                if ra_resp.errCode > 0:
                    if ra_resp.errCode == 2:
                        set_user_cookie()
                        self.redirect(firsturl)
                        return
                    _err_msg = "{0},{1}".format(cmcc.AckAuthErrs[ra_resp.errCode], ra_resp.get_text_info()[0] or "")
                    raise PortalError(_err_msg)

                # aff_ack
                aa_req = PortalV2.newAffAckAuth(userIp,secret,ac_addr[0],ra_req.serialNo,rc_resp.reqId, chap=is_chap)
                yield cli.sendto(aa_req,ac_addr,recv=False)

                self.syslog.info('Portal [username:{0}] chap auth success'.format(_username))

                if self.settings.debug:
                    self.syslog.debug('Portal [username:%s] chap auth login [cast:%s ms]' % (
                    _username, (time.time() - start_time) * 1000))

                set_user_cookie()
                self.redirect(firsturl)
            
            except Exception as err:
                try:
                    self.syslog.exception("Portal [username:%s] chap auth catch exception, %s" % (
                    _username, utils.safestr(err.message)))
                    back_login(msg=u"Portal chap auth error,%s" % err.message)
                except:
                    back_login(msg=u"Portal chap auth error,server process error")
            finally:
                cli.close()