Esempio n. 1
0
    def event_unlock_online(self, account_number, nas_addr, acct_session_id):
        logger.info("event unlock online [username:{0}] {1} {2}".format(account_number, nas_addr, acct_session_id))
        nas = self.db.query(models.TrBas).filter_by(ip_addr=nas_addr).first()
        if nas_addr and  not nas:
            self.db.query(models.TrOnline).filter_by(
                nas_addr=nas_addr,acct_session_id=acct_session_id).delete()
            self.db.commit()
            return

        online = self.db.query(models.TrOnline).filter_by(
                nas_addr=nas_addr, acct_session_id=acct_session_id).first()

        authorize.disconnect(
            int(nas.vendor_id or 0),
            self.dictionary,
            nas.bas_secret,
            nas.ip_addr,
            coa_port=int(nas.coa_port or 3799),
            debug=True,
            User_Name=account_number,
            NAS_IP_Address=nas.ip_addr,
            Acct_Session_Id=acct_session_id
        ).addCallback(
            self.onSendResp, self.get_request(online)).addErrback(
            self.onSendError, self.get_request(online))
Esempio n. 2
0
    def event_unlock_online(self, account_number, nas_addr, acct_session_id):
        logger.info("event unlock online [username:{0}] {1} {2}".format(account_number, nas_addr, acct_session_id))
        nas = self.db.query(models.TrBas).filter_by(ip_addr=nas_addr).first()
        if nas_addr and  not nas:
            self.db.query(models.TrOnline).filter_by(
                nas_addr=nas_addr,acct_session_id=acct_session_id).delete()
            self.db.commit()
            return

        online = self.db.query(models.TrOnline).filter_by(
                nas_addr=nas_addr, acct_session_id=acct_session_id).first()

        authorize.disconnect(
            int(nas.vendor_id or 0),
            self.dictionary,
            nas.bas_secret,
            nas.ip_addr,
            coa_port=int(nas.coa_port or 3799),
            debug=True,
            User_Name=account_number,
            NAS_IP_Address=nas.ip_addr,
            Acct_Session_Id=acct_session_id,
            Framed_IP_Address=online.framed_ipaddr,
        ).addCallback(
            self.onSendResp, self.get_request(online)).addErrback(
            self.onSendError, self.get_request(online))
Esempio n. 3
0
    def post(self):
        username = self.get_argument('username',None)
        nas_addr = self.get_argument('nas_addr',None)
        session_id = self.get_argument('session_id',None)
        nas = self.db.query(models.TrBas).filter_by(ip_addr=nas_addr).first()
        if nas_addr and not nas:
            self.db.query(models.TrOnline).filter_by(
                nas_addr=nas_addr,
                acct_session_id=session_id
            ).delete()
            self.db.commit()
            self.render_json(code=1,msg=u"nasaddr not exists, online clear!")
            return

        if nas_addr and not session_id:
            onlines = self.db.query(models.TrOnline).filter_by(nas_addr=nas_addr)
            for online in onlines:
                radius_acct_stop.RadiusAcctStop(self.application.db_engine,
                                                self.application.mcache,
                                                self.application.aes, self.get_request(online)).acctounting()
            self.render_json(code=1,msg=u"unlock all online done!")
            return


        online = self.db.query(models.TrOnline).filter_by(
            nas_addr=nas_addr, acct_session_id=session_id).first()

        if not online:
            self.render_json(code=1,msg=u"online not exists")
            return


        if not CustomerOnlineUnlockHandler.dictionary:
            CustomerOnlineUnlockHandler.dictionary = dictionary.Dictionary(
            os.path.join(os.path.dirname(toughradius.__file__), 'dictionarys/dictionary'))

        deferd = authorize.disconnect(
            int(nas.vendor_id or 0), 
            CustomerOnlineUnlockHandler.dictionary, 
            nas.bas_secret, 
            nas.ip_addr, 
            coa_port=int(nas.coa_port or 3799), 
            debug=True,
            User_Name=username,
            NAS_IP_Address=nas.ip_addr,
            Acct_Session_Id=session_id)


        deferd.addCallback(
            self.onSendResp, self.get_request(online)).addErrback(
            self.onSendError, self.get_request(online))

        return deferd
Esempio n. 4
0
            online = self.db.query(models.TrOnline).filter_by(
                nas_addr=nas_addr, acct_session_id=acct_session_id).first()

            if not online:
                self.render_verify_err(msg=u"online not exists")
                return

            if not OnlineUnlockHandler.dictionary:
                OnlineUnlockHandler.dictionary = dictionary.Dictionary(
                    os.path.join(os.path.dirname(toughradius.__file__), 'dictionarys/dictionary'))

            deferd = authorize.disconnect(
                int(nas.vendor_id or 0),
                OnlineUnlockHandler.dictionary,
                nas.bas_secret,
                nas.ip_addr,
                coa_port=int(nas.coa_port or 3799),
                debug=True,
                User_Name=account_number,
                NAS_IP_Address=nas.ip_addr,
                Acct_Session_Id=acct_session_id)

            deferd.addCallback(
                self.onSendResp, self.get_request(online)).addErrback(
                self.onSendError, self.get_request(online))

            self.add_oplog(u'API强制用户下线%s:%s' % (account_number, acct_session_id))
            self.db.commit()
            self.render_success()
            return deferd

        except Exception as err: