def test_auth_to_steam64(self): input = 'STEAM_0:1:52245092' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = 'STEAM_1:1:52245092' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = '76561198064755913' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = '1:1:52245092' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = '[U:1:104490185]' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = 'steamcommunity.com/profiles/76561198064755913' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = 'http://steamcommunity.com/profiles/76561198064755913' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = 'http://steamcommunity.com/profiles/76561198064755913/' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = 'http://steamcommunity.com/id/splewis' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected) input = 'splewis' expected = '76561198064755913' suc, actual = steamid.auth_to_steam64(input) self.assertTrue(suc) self.assertEqual(actual, expected)
def match_adduser(matchid): match = Match.query.get_or_404(matchid) app.logger.info("Our user: {}".format(g.user)) admintools_check(match) server = GameServer.query.get_or_404(match.server_id) team = request.values.get('team') if not team: raise BadRequestError('No team specified') auth = request.values.get('auth') suc, new_auth = steamid.auth_to_steam64(auth) if suc: try: command = 'get5_addplayer {} {}'.format(new_auth, team) response = server.send_rcon_command(command, raise_errors=True) match_audit.create(g.user.id, matchid, datetime.now(), command) if (team == "spec"): MatchSpectator.set_or_create(matchid, new_auth) db.session.commit() flash(response) except util.RconError as e: flash('Failed to send command: ' + str(e)) else: flash('Invalid steamid: {}'.format(auth)) return redirect('/match/{}'.format(matchid))
def valid_auth(form, field): # Ignore empty data fields if field.data is None or field.data == '': return # Otherwise validate and coerce to steam64 suc, newauth = steamid.auth_to_steam64(field.data) if suc: field.data = newauth else: raise ValidationError('Invalid Steam ID')
def match_adduser(matchid): match = Match.query.get_or_404(matchid) admintools_check(g.user, match) server = GameServer.query.get_or_404(match.server_id) team = request.values.get('team') if not team: raise BadRequestError('No team specified') auth = request.values.get('auth') suc, new_auth = steamid.auth_to_steam64(auth) if suc: try: command = 'get5_addplayer {} {}'.format(new_auth, team) response = server.send_rcon_command(command, raise_errors=True) flash(response) except util.RconError as e: flash('Failed to send command: ' + str(e)) else: flash('Invalid steamid: {}'.format(auth)) return redirect('/match/{}'.format(matchid))
def match_create(): if not g.user: return redirect('/login') form = MatchForm(request.form) form.add_teams(g.user) form.add_servers(g.user) form.add_seasons() if request.method == 'POST': num_matches = g.user.matches.count() max_matches = config_setting('USER_MAX_MATCHES') season_id = None if max_matches >= 0 and num_matches >= max_matches and not ( g.user.admin or g.user.super_admin): flash( 'You already have the maximum number of matches ({}) created'. format(num_matches)) elif form.validate(): mock = config_setting('TESTING') server = GameServer.query.get_or_404(form.data['server_id']) match_on_server = g.user.matches.filter_by( server_id=server.id, end_time=None, cancelled=False).first() server_available = False json_reply = None if g.user.id != server.user_id and not server.public_server: server_available = False message = 'This is not your server!' elif match_on_server is not None: server_available = False message = 'Match {} is already using this server'.format( match_on_server.id) elif mock: server_available = True message = 'Success' else: json_reply, message = util.check_server_avaliability( server, dbKey) server_available = (json_reply is not None) if server_available: skip_veto = 'preset' in form.data['series_type'] try: max_maps = int(form.data['series_type'][2]) except ValueError: max_maps = 1 if form.data['season_selection'] != 0: season_id = form.data['season_selection'] # Series Score Feature. team1_series_score = form.data[ 'team1_series_score'] if not None else 0 team2_series_score = form.data[ 'team2_series_score'] if not None else 0 # End Series Score Feature. # Spectator Feature specList = [] if form.data['spectator_string']: for auth in form.data['spectator_string'].split(): suc, new_auth = steamid.auth_to_steam64(auth) if suc: specList.append(new_auth) if not specList: specList = None # End Spectator Feature match = Match.create( g.user, form.data['team1_id'], form.data['team2_id'], form.data['team1_string'], form.data['team2_string'], max_maps, skip_veto, form.data['match_title'], form.data['veto_mappool'], season_id, form.data['side_type'], form.data['veto_first'], form.data['server_id'], team1_series_score, team2_series_score, specList, form.data['private_match'], form.data['enforce_teams'], form.data['min_player_ready']) # Save plugin version data if we have it if json_reply and 'plugin_version' in json_reply: match.plugin_version = json_reply['plugin_version'] else: match.plugin_version = 'unknown' server.in_use = True db.session.commit() # Implement normalized spectator list. if specList: for singleAuth in specList: MatchSpectator.set_or_create(match.id, auth) app.logger.info( 'User {} created match {}, assigned to server {}'.format( g.user.id, match.id, server.id)) if mock or match.send_to_server(): return redirect('/mymatches') else: flash('Failed to load match configs on server') else: flash(message) else: get5.flash_errors(form) return render_template( 'match_create.html', form=form, user=g.user, teams=g.user.teams, match_text_option=config_setting('CREATE_MATCH_TITLE_TEXT'))