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()
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)
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()
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()