Ejemplo n.º 1
0
def handle_dm_match_end(event_id, message_string, sock):
    if event_id == rcon_event.match_end.value:
        global current_round
        update_dm_matchend()
        current_round = None
        send_request(sock, requestID, requestID,
                     rcon_receive.request_scoreboard.value)
Ejemplo n.º 2
0
def handle_rcon_login(event_id, message_string, sock):
    if event_id == rcon_event.rcon_logged_in.value:
        # Issue an rcon request for more information
        requestID = "none"
        # using the RequestID twice because I'm not sure what the second param is for
        # get the current context
        send_request(sock, requestID, requestID,
                     rcon_receive.request_scoreboard.value)
Ejemplo n.º 3
0
def handle_ctf_scored(event_id, message_string, sock):
    """Handles the event of a player scoring"""
    if event_id == rcon_event.ctf_scored.value:
        js = json.loads(message_string)
        if js['CarrierID'] in player_dict:
            update_score(js)
            requestID = "scored " + js['ScoringTeam']
            send_request(sock, requestID, requestID, rcon_receive.request_scoreboard.value)
Ejemplo n.º 4
0
def handle_player_spawn(event_id, message_string, sock, current_match):
    # if passed in event_id is a chat_message
    if event_id == rcon_event.player_spawn.value:
        js = json.loads(message_string)
        if current_match is not None:
            current_match.set_loadout(js)
            send_request(sock, "coyote", js['PlayerID'],
                         rcon_receive.request_player.value)
Ejemplo n.º 5
0
def test_delete_permission(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app, api_url + '/permissions/1', method='delete')
    assert r.status_code == 204, 'GOT ' + str(r.status_code) + ' ' + r.data

    r = send_request(app, api_url + '/permissions/1')
    assert r.status_code == 404, 'GOT ' + str(r.status_code) + ' ' + r.data
Ejemplo n.º 6
0
def handle_join(event_id, message_string, sock):
    if event_id == rcon_event.player_connect.value:
        # send a player info request out
        js = json.loads(message_string)
        #update_player_array(js)
        # send a request for additional info, the requestID contains the IP Address
        send_request(sock, js['IP'], js['PlayerID'],
                     rcon_receive.request_player.value)
        player_dict[js['PlayerID']] = {
            "platform": js["Store"],
            "profile": js['Profile']
        }
Ejemplo n.º 7
0
def handle_tdm_round(event_id, message_string, sock):
    """if it is a new round, clear the players on each team and calls to update the database"""
    if event_id == rcon_event.tdm_round_end.value:
        if len(man_players) > 0 and len(usc_players) > 0:
            js = json.loads(message_string)
            tdm_round = update_tdm_round(js)
            update_tdm_rating(js["Winner"], tdm_round)
            perform_analytics(js['Winner'])
            update_tdm_kills(tdm_round)
            usc_players.clear()
            man_players.clear()
            send_request(sock, requestID, requestID,
                         rcon_receive.request_scoreboard.value)
Ejemplo n.º 8
0
def test_create_empty_unit(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app, api_url + '/units', method='post', json={
        'name': 'new_unit_create_empty'
    })
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    uid = r.get_json()['id']

    r = send_request(app, api_url + '/units/' + str(uid))
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    unit = r.get_json()
    assert unit['name'] == 'new_unit_create_empty'
    assert unit['id'] == uid
    assert len(unit['permissions']) == 0
Ejemplo n.º 9
0
def test_create_empty_role(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/roles',
                     method='post',
                     json={'name': 'new_role_create_empty'})
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    rid = r.get_json()['id']

    r = send_request(app, api_url + '/roles/' + str(rid))
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    role = r.get_json()
    assert role['name'] == 'new_role_create_empty'
    assert role['id'] == rid
Ejemplo n.º 10
0
def test_create_empty_user(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/users',
                     method='post',
                     json={'name': 'new_user_create'})
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    uid = r.get_json()['id']

    r = send_request(app, api_url + '/users/' + str(uid))
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    user = r.get_json()
    assert user['name'] == 'new_user_create'
    assert user['id'] == uid
    assert len(user['roles']) == 0
Ejemplo n.º 11
0
def test_create_empty_permission(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/permissions',
                     method='post',
                     json={'name': 'new_permission_create_empty'})
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    pid = r.get_json()['id']

    r = send_request(app, api_url + '/permissions/' + str(pid))
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    perm = r.get_json()
    assert perm['name'] == 'new_permission_create_empty'
    assert perm['id'] == pid
    assert len(perm['roles']) == 0
    assert len(perm['units']) == 0
Ejemplo n.º 12
0
 def _send_to_master(self, data_out, method, url):
     cookie = {'token': self._authentification_token}
     answer, text = send_request(method, url, cookies=cookie, json=data_out)
     if answer.status_code == 401:
         raise ConnectionException(
             'Connection not authorized, make sure you used the correct token'
         )
     if 'Exception' in answer:
         raise answer['Exception']
Ejemplo n.º 13
0
def test_all_access_to_admin(sample_filled_app):
    app, db, rbac, dmg = sample_filled_app

    rbac.user_id_provider = lambda: db.session.query(dmg.User).filter(
        dmg.User.name == 'user_admin').first().id

    for un_name in ['unit1', 'unit2', 'unit3', 'unit4', 'unit_admin']:
        r = send_request(app, '/' + un_name)
        assert r.status_code == 200, 'Fail + ' + un_name + ' for admin user'
        assert b'Hello World!' in r.data
Ejemplo n.º 14
0
def test_get_list(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    users = send_request(app, api_url + '/users').get_json()
    assert len(users) == 10
    for user in users:
        assert 'name' in user
        assert 'id' in user
        assert 'roles' in user
        assert len(user['roles']) >= 1
Ejemplo n.º 15
0
def test_get_list(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    units = send_request(app, api_url + '/units').get_json()
    assert len(units) == 5
    for unit in units:
        assert 'name' in unit
        assert 'id' in unit
        assert 'permissions' in unit
        assert len(unit['permissions']) >= 1
Ejemplo n.º 16
0
def test_get_permission(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app, api_url + '/permissions/1')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    perm = r.get_json()
    assert 'name' in perm
    assert 'id' in perm
    assert perm['id'] == 1
    assert len(perm['roles']) >= 1
    assert len(perm['units']) >= 1
Ejemplo n.º 17
0
def test_get_user(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app, api_url + '/users/1')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    user = r.get_json()
    assert 'name' in user
    assert 'id' in user
    assert user['id'] == 1
    assert 'roles' in user
    assert len(user['roles']) >= 1
Ejemplo n.º 18
0
def test_get_unit(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app, api_url + '/units/1')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    unit = r.get_json()
    assert 'name' in unit
    assert 'id' in unit
    assert unit['id'] == 1
    assert 'permissions' in unit
    assert len(unit['permissions']) >= 1
Ejemplo n.º 19
0
def generate_token(client_id, secret_id):
    url = 'https://api2.arduino.cc/iot/v1/clients/token'
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    data = {'grant_type': 'client_credentials',
            'client_id': client_id,
            'client_secret': secret_id,
            'audience': 'https://api2.arduino.cc/iot'
            }
    response = send_request(requests.Request(
        "POST", url, headers=headers, data=data), print_request=False, print_response=False)
    token = json.loads(response.text)['access_token']
    return token
Ejemplo n.º 20
0
def test_get_list(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    permissions = send_request(app, api_url + '/permissions').get_json()
    assert len(permissions) == 5
    for perm in permissions:
        assert 'name' in perm
        assert 'id' in perm
        assert 'roles' in perm
        assert 'units' in perm
        assert len(perm['roles']) >= 1
        assert len(perm['units']) >= 1
Ejemplo n.º 21
0
    def call_url(self, url, header, data, verb):
        cookie = {'token': self.token}
        try:

            response, text = send_request(verb, url, headers=header, cookies=cookie, json=data)
        except requests.exceptions.ConnectionError:
           return {'Exception': 'ConnectionError'}
        if response.status_code == 401:
            raise ConnectionException('Connection not authorized, make sure you used the correct token')
        elif response.status_code == 500:
            raise ConnectionException('Internal Server Error in Worker')
        return text
Ejemplo n.º 22
0
def test_get_list(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    roles = send_request(app, api_url + '/roles').get_json()
    assert len(roles) == 5
    for role in roles:
        assert 'name' in role
        assert 'id' in role
        assert len(role['permissions']) >= 1
        assert len(role['children']) >= 0
        assert len(role['parents']) >= 0
        assert len(role['incompatible_roles']) >= 0
        assert len(role['users']) >= 1
Ejemplo n.º 23
0
def test_role_1(sample_filled_app):
    """Should only allow requests from users with role 1"""
    app, db, rbac, dmg = sample_filled_app

    current_user_id = None
    rbac.user_id_provider = lambda: current_user_id

    correct_users = set(
        map(lambda user: user.id,
            rbac.role_logic.get_all_users_for_role('role1')))
    users_r1_ids = {i for i in range(1, 11) if i in correct_users}
    users_other_ids = correct_users - users_r1_ids

    for i in users_r1_ids:
        current_user_id = i
        r = send_request(app, '/')
        assert r.status_code == 200, 'Fail for user ' + str(current_user_id)
        assert b'Hello World!' in r.data

    for i in users_other_ids:
        current_user_id = i
        r = send_request(app, '/')
        assert r.status_code == rbac.global_error_code
Ejemplo n.º 24
0
def test_get_role(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app, api_url + '/roles/1')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    role = r.get_json()
    assert 'name' in role
    assert 'id' in role
    assert role['id'] == 1
    assert len(role['permissions']) >= 1
    assert len(role['children']) >= 0
    assert len(role['parents']) >= 0
    assert len(role['incompatible_roles']) >= 0
    assert len(role['users']) >= 1
Ejemplo n.º 25
0
def send_csr(token, csr, device_id):
    url = 'http://api2.arduino.cc/iot/v2/devices/' + device_id + '/certs'
    headers = {'content-type': 'application/json',
               'Authorization': 'Bearer ' + token
               }
    data_cert = {'ca': 'Arduino',
                 'csr': csr,
                 'enabled': True
                 }
    data = json.dumps(data_cert)
    # response = requests.put(url, headers=headers, data=json.dumps(data_cert))
    response = send_request(requests.Request(
        "PUT", url=url, headers=headers, data=data), print_request=True, print_response=True)
    return json.loads(response.text)['compressed']
Ejemplo n.º 26
0
def test_put_permission(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/permissions/1',
                     method='put',
                     json={
                         'name': 'permission_new_1',
                         'update_roles': True,
                         'role_ids': [1, 2, 3, 4]
                     })
    assert r.status_code == 204, 'GOT ' + str(r.status_code) + ' ' + r.data

    r = send_request(app, api_url + '/permissions/1')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    perm = r.get_json()
    assert perm['name'] == 'permission_new_1'
    assert len(perm['roles']) == 4
    for role in perm['roles']:
        assert role['id'] in [1, 2, 3, 4]

    r = send_request(app, api_url + '/roles/1')
    role = r.get_json()
    assert any(perm['id'] == 1 for perm in role['permissions'])
Ejemplo n.º 27
0
def add_device(token, device_name, fqbn, type, serial):
    url = 'http://api2.arduino.cc/iot/v2/devices'
    headers = {'content-type': 'application/x-www-form-urlencoded',
               'Authorization': 'Bearer ' + token
               }
    data = {'fqbn': fqbn,
            'name': device_name,
            'type': type,
            'serial': serial
            }
    response = send_request(requests.Request(
        "PUT", url, headers=headers, data=data), print_request=False, print_response=False)
    print(response)
    device_id = json.loads(response.text)['id']
    return device_id
Ejemplo n.º 28
0
def test_put_role(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/roles/1',
                     method='put',
                     json={
                         'name': 'role_new_1',
                         'update_permissions': True,
                         'permission_ids': [1, 2, 3, 4],
                         'update_users': True,
                         'user_ids': [1, 2],
                         'update_parents': True,
                         'parent_ids': [2, 3],
                         'update_children': True,
                         'child_ids': [4],
                         'update_incompatible': True,
                         'incompatible_ids': [5]
                     })
    assert r.status_code == 204, 'GOT ' + str(r.status_code) + ' ' + r.data

    # Test general
    r = send_request(app, api_url + '/roles/1')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    role = r.get_json()
    assert role['name'] == 'role_new_1'
    assert role['id'] == 1
    assert len(role['users']) == 2
    for user in role['users']:
        assert user['id'] in [1, 2]
    assert len(role['permissions']) == 4
    for perm in role['permissions']:
        assert perm['id'] in [1, 2, 3, 4]
    assert len(role['parents']) == 2
    for r in role['parents']:
        assert r['id'] in [2, 3]
    assert len(role['children']) == 1 and role['children'][0]['id'] == 4
    assert len(role['incompatible_roles']
               ) == 1 and role['incompatible_roles'][0]['id'] == 5

    # Test incompatible roles
    incompat_role = send_request(app, api_url + '/roles/5').get_json()
    assert incompat_role['incompatible_roles'][0]['id'] == 1

    # Test parent roles
    r2 = send_request(app, api_url + '/roles/2').get_json()
    assert any(r['id'] == 1 for r in r2['children'])
    r3 = send_request(app, api_url + '/roles/3').get_json()
    assert any(r['id'] == 1 for r in r3['children'])

    # Test child roles
    r4 = send_request(app, api_url + '/roles/4').get_json()
    assert any(r['id'] == 1 for r in r4['parents'])
Ejemplo n.º 29
0
def test_create_role(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/roles',
                     method='post',
                     json={
                         'name': 'new_role_create',
                         'permission_ids': [1, 2, 3, 4],
                         'parent_ids': [1, 2],
                         'child_ids': [3, 4],
                         'incompatible_ids': [5],
                         'user_ids': [1, 3, 4]
                     })
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    rid = r.get_json()['id']

    r = send_request(app, api_url + '/roles/' + str(rid))
    assert r.status_code == 200, 'GOT ' + str(r.status_code) + ' ' + r.data
    role = r.get_json()
    assert role['name'] == 'new_role_create'
    assert role['id'] == rid
    assert len(role['permissions']) == 4
    assert len(role['users']) == 3
    assert len(role['parents']) == 2
    assert len(role['children']) == 2
    assert len(role['incompatible_roles']) == 1

    # Test incompatible roles
    incompat_role = send_request(app, api_url + '/roles/5').get_json()
    assert incompat_role['incompatible_roles'][0]['id'] == rid

    # Test parent roles
    r1 = send_request(app, api_url + '/roles/1').get_json()
    assert any(r['id'] == rid for r in r1['children'])
    r2 = send_request(app, api_url + '/roles/2').get_json()
    assert any(r['id'] == rid for r in r2['children'])

    # Test child roles
    r4 = send_request(app, api_url + '/roles/4').get_json()
    assert any(r['id'] == rid for r in r4['parents'])
    r3 = send_request(app, api_url + '/roles/3').get_json()
    assert any(r['id'] == rid for r in r3['parents'])
Ejemplo n.º 30
0
def test_put_user(sample_filled_app, api_url):
    app, db, rbac, dmg = sample_filled_app

    r = send_request(app,
                     api_url + '/users/2',
                     method='put',
                     json={
                         'name': 'user_new_2',
                         'update_roles': True,
                         'role_ids': [1, 2, 3, 4]
                     })
    assert r.status_code == 204, 'GOT ' + str(r.status_code) + ' ' + r.data

    r = send_request(app, api_url + '/users/2')
    assert r.status_code == 200, 'GOT ' + str(r.status_code)
    user = r.get_json()
    assert user['name'] == 'user_new_2'
    for role in user['roles']:
        assert role['id'] in [1, 2, 3, 4]

    r = send_request(app,
                     api_url + '/users/2',
                     method='put',
                     json={
                         'update_roles': False,
                         'role_ids': [1]
                     })

    r = send_request(app, api_url + '/users/2')
    user = r.get_json()
    assert user['name'] == 'user_new_2'
    assert len(user['roles']) == 4
    for role in user['roles']:
        assert role['id'] in [1, 2, 3, 4]

    r = send_request(app,
                     api_url + '/users/2',
                     method='put',
                     json={
                         'update_roles': True,
                         'role_ids': [1, 4]
                     })

    r = send_request(app, api_url + '/users/2')
    user = r.get_json()
    assert len(user['roles']) == 2
    for role in user['roles']:
        assert role['id'] in [1, 4]
Ejemplo n.º 31
0
def data():
	query = json.loads(request.data)

	if(query['type'] == 'city'):
		package  = {
			"locations":[]
		}
		for o in query['option']:
			if "," in o:
				package["locations"].append({"city":o[:o.index(",")],"state":o[o.index(", ")+2:]})
			else:
				package["locations"].append({"state":o})

		if(len(query['option']) == 1):
			package['operation'] = "get"
		else:
			package['operation'] = "compare"

		url = "https://trycents.com/api/v2/cost_of_living/compare"

		return hp.send_request(url,package)

	if(query['type'] == 'school'):
		package  = {
			"schools":[]
		}

		sarr = []
		scarr = {}

		for s in query['option']:
			sarr.append(s.lower())

		for u,l in unis.iteritems():
			for a in l:
				if a.lower() in sarr:
					package["schools"].append({"name":u, "order":(sarr.index(a.lower())+1)})
					scarr["query_" + str(sarr.index(a.lower())+1)] = a

		if len(package["schools"]) == 1:
			del package["schools"][0]["order"]

		if(len(query['option']) == 1):
			package['operation'] = "get"
		else:
			package['operation'] = "compare"

		url = "https://trycents.com/api/v2/schools/compare"

		resp = json.loads(hp.send_request(url,package))

		for k,v in scarr.iteritems():
			resp[k] = v

		return json.dumps(resp)

	if(query['type'] == 'major'):
		package = {
			"degrees":[]
		}

		if(len(query['option']) == 1):
			package['operation'] = "get"
		else:
			package['operation'] = "compare"

		for o in query['option']:
			mname = o.split("(")[0].strip()
			mlev = o.split("(")[1].replace(")","").strip()
			package["degrees"].append({"name":mname,"level":mlev})

		url = "https://trycents.com/api/v2/degrees/compare"

		return hp.send_request(url,package)

	if(query['type'] == 'career'):
		package = {
			"careers":[]
		}

		if(len(query['option']) == 1):
			package['operation'] = "get"
		else:
			package['operation'] = "compare"

		for o in query['option']:
			package["careers"].append({"name":o})

		url = "https://trycents.com/api/v2/careers/compare"

		return hp.send_request(url,package)