コード例 #1
0
 def expire_sessions(self):
     """ Expires sessions. """
     db = self.client.pycaptive.Sessions
     time_now = datetime.now()
     expired_sessions = []
     try:
         sessions = db.find().distinct("ExpireTime")
         for session in sessions:
             data = db.find_one({"ExpireTime": session}, {
                 "IpAddress": 1,
                 "UserName": 1,
                 "_id": 0
             })
             ip = data["IpAddress"]
             if session < time_now:
                 db.delete_one({"ExpireTime": session})
                 expired_sessions.append(ip)
                 log.info('%s %s %s %s', "mongodb", "expire_sessions", "OK",
                          data)
         self.client.close()
         return expired_sessions
     except Exception as e:
         log.critical('%s %s %s', "mongodb", "expire_sessions", "EXCEPTION")
         log.critical('%s', e)
         return e
コード例 #2
0
 def login(self, username, password):
     """ Validating username and password for login. """
     db = self.client.pycaptive.Users
     ts = datetime.now()
     try:
         hash_pass = db.find_one({"UserName": username}, {
             "Password": 1,
             "_id": 0
         })
         self.client.close()
         if hash_pass is not None:
             db_hash = hash_pass["Password"]
             new_hash = bcrypt.hashpw(password.encode("utf-8"), db_hash)
             if db_hash == new_hash:
                 log.info('%s %s %s %s', "mongodb", "login", "OK", username)
                 return 0
             else:
                 log.error('%s %s %s %s %s', "mongodb", "login", "NOK",
                           username, "WRONG_PASS")
                 return 2
         else:
             log.error('%s %s %s %s %s', "mongodb", "login", "NOK",
                       username, "NOT_FOUND")
             return 1
     except Exception as e:
         log.critical('%s %s %s %s', "mongodb", "login", "EXCEPTION",
                      username)
         log.critical('%s', e)
         return e
コード例 #3
0
ファイル: iptables.py プロジェクト: hossamasran/PyCaptive
    def add_rule(self, ip):
        """
        Allowing Internet access to an IP address

        Parameters
        ----------
        ip : string
             IP address provided via client request to PyCaptive.

        Returns
        -------
        integer
             if 0: rule successfully deleted
             else: error while processing command

        """
        rule = [
            IPTABLES, "-t", TABLE, "-I", CHAIN, "-i", LAN, "-s", ip, "-m",
            "comment", "--comment", COMMENT, "-j", JUMP
        ]
        try:
            result = sp.call(rule)
            if result == 0:
                log.info('%s %s %s %s', "iptables", "add_rule", "OK", ip)
            else:
                log.error('%s %s %s %s', "iptables", "add_rule", "NOK", ip)
            return result
        except Exception as e:
            log.critical('%s %s %s %s', "iptables", "add_rule", "EXCEPTION",
                         ip)
            log.critical('%s', e)
            return e
コード例 #4
0
def main(config):
    """Console script for app."""
    log.info("Started Kr15 Gtk App")
    log.info("app.cli.main")

    try:
        pass
        main_function(config)
    except Exception as e:
        log.critical(str(e))
        return 1

    return 0
コード例 #5
0
    def emit(self, event_name, *args, **kwargs):

        log.debug("Run for: " + event_name)
        receivers = self.receivers.get(event_name, None)

        if receivers is None:
            return False

        try:
            # TODO: add async
            [callback(*args, **kwargs) for callback in receivers]
        except Exception as e:
            log.critical(str(e))
            raise e

        return True
コード例 #6
0
ファイル: iptables.py プロジェクト: hossamasran/PyCaptive
    def del_rules(self, ips):
        """
        Deleting rules that grant Internet access to a list of IPs and
        destroying connections established for such IPs.

        See del_conntrack() for more info.

        Parameters
        ----------
        ips : list
              IP addressess provided via scheduler (APScheduler).

        Returns
        -------
        integer
              Number of deleted rules.

        """
        try:
            rules = 0
            for ip in ips:
                # deleting rule
                rule = [
                    IPTABLES, "-t", TABLE, "-D", CHAIN, "-i", LAN, "-s", ip,
                    "-m", "comment", "--comment", COMMENT, "-j", JUMP
                ]
                result = sp.call(rule)
                if result == 0:
                    log.info('%s %s %s %s', "iptables", "del_rules", "OK", ip)
                    rules += 1
                else:
                    log.error('%s %s %s %s', "iptables", "del_rules", "NOK",
                              ip)
                # destroying connection
                result = self.del_conntrack(ip)
                if result == 0:
                    log.info('%s %s %s %s', "del_rules", "OK",
                             "CONNECTIONS_DESTROYED", ip)
                else:
                    log.error('%s %s %s %s', "del_rules", "NOK",
                              "CONNECTIONS_PERSISTING", ip)
            return rules
        except Exception as e:
            log.critical('%s %s %s', "iptables", "del_rule", "EXCEPTION")
            log.critical('%s', e)
            return e
コード例 #7
0
 def add_session(self, username, client_ip, user_data):
     """ Adding session. """
     db = self.client.pycaptive.Sessions
     login_time = datetime.now()
     expire_time = login_time + timedelta(seconds=SESSION_DURATION)
     session_id = None
     try:
         session_id = db.insert({
             "UserName": username,
             "IpAddress": client_ip,
             "UserData": user_data,
             "LoginTime": login_time,
             "ExpireTime": expire_time
         })
         self.client.close()
         log.info('%s %s %s %s %s %s', "mongodb", "add_session", "OK",
                  username, client_ip, user_data)
         return session_id
     except Exception as e:
         log.critical('%s %s %s', "mongodb", "add_session", "EXCEPTION")
         log.critical('%s', e)
         return e