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)
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)
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)
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)
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
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'] }
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)
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
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
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
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
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']
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
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
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
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
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
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
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
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
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
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
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
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
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']
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'])
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
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'])
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'])
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]
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)