def server_masscreate(): if not g.user: return redirect('/login') if not g.user.admin: return redirect('/server/create') form = MultiServerForm(request.form) if request.method == 'POST': if form.validate(): mock = config_setting('TESTING') servers = form.data.get('servers', '') serv_list = servers.split('\n') for serv in serv_list: serv_info = serv.split(',') if not len(serv_info) == 3: continue server = GameServer.create(g.user, '', serv_info[0], serv_info[1], serv_info[2], False) if mock or util.check_server_connection(server): db.session.commit() app.logger.info('User {} created server {}'.format( g.user.id, server.id)) else: db.session.remove() return redirect('/myservers') return render_template('server_create_multi.html', user=g.user, form=form, edit=False, is_admin=g.user.admin)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = (g.user.id == server.user_id) if not is_owner: return 'Not your server', 400 form = ServerForm(request.form, ip_string=server.ip_string, port=server.port, rcon_password=server.rcon_password) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data server.ip_string = data['ip_string'] server.port = data['port'] server.rcon_password = data['rcon_password'] if mock or util.check_server_connection(server): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True)
def server_create(): if not g.user: return redirect('/login') form = ServerForm(request.form) if request.method == 'POST': num_servers = g.user.servers.count() max_servers = config_setting('USER_MAX_SERVERS', 0) if max_servers >= 0 and num_servers >= max_servers and not g.user.admin: flash('You already have the maximum number of servers ({}) stored'.format(num_servers)) elif form.validate(): mock = config_setting('TESTING', False) data = form.data server = GameServer.create( g.user, data['ip_string'], data['port'], data['rcon_password']) if mock or util.check_server_connection(server): db.session.commit() app.logger.info( 'User {} created server {}'.format(g.user.id, server.id)) return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=False)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = (g.user and (util.is_server_owner(g.user, server))) is_sadmin = (g.user and util.is_super_admin(g.user)) app.logger.info("Owner: {} Sadmin: {}".format(is_owner, is_sadmin)) if not is_owner: if not is_sadmin: raise BadRequestError('You do not have access to this server.') # Attempt encryption/decryption rconDecrypt = util.decrypt(dbKey, server.rcon_password) form = ServerForm(request.form, display_name=server.display_name, ip_string=server.ip_string, port=server.port, rcon_password=server.rcon_password if rconDecrypt is None else rconDecrypt, public_server=server.public_server) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data if not mock: encRcon = util.encrypt(dbKey, str(data['rcon_password'])) else: encRcon = data['rcon_password'] server.display_name = data['display_name'] server.ip_string = data['ip_string'] server.port = data['port'] server.rcon_password = encRcon server.public_server = (data['public_server'] and util.is_admin(g.user)) if mock or util.check_server_connection(server, dbKey): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True, is_admin=util.is_admin(g.user), is_sadmin=util.is_super_admin(g.user))
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = g.user and (g.user.id == server.user_id) if not is_owner: return 'Not your server', 400 # Attempt encryption/decryption rconDecrypt = util.decrypt(dbKey, server.rcon_password) form = ServerForm(request.form, display_name=server.display_name, ip_string=server.ip_string, port=server.port, rcon_password=server.rcon_password if rconDecrypt is None else rconDecrypt, public_server=server.public_server) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data if not mock: encRcon = util.encrypt(dbKey, str(data['rcon_password'])) else: encRcon = data['rcon_password'] server.display_name = data['display_name'] server.ip_string = data['ip_string'] server.port = data['port'] server.rcon_password = encRcon server.public_server = (data['public_server'] and g.user.admin) if mock or util.check_server_connection(server, dbKey): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def server_edit(serverid): server = GameServer.query.get_or_404(serverid) is_owner = (g.user and (g.user.id == server.user_id)) or g.user.admin if not is_owner: return 'Not your server', 400 form = ServerForm(request.form, display_name=server.display_name, ip_string=server.ip_string, port=server.port, gotv_port=server.gotv_port, rcon_password=server.rcon_password, public_server=server.public_server, dathost_id=server.dathost_id) if request.method == 'POST': if form.validate(): mock = app.config['TESTING'] data = form.data server.display_name = data['display_name'] server.ip_string = data['ip_string'] server.port = data['port'] server.gotv_port = data['gotv_port'] server.rcon_password = data['rcon_password'] server.dathost_id = ['dathost_id'] server.public_server = (data['public_server'] and g.user.admin) if mock or util.check_server_connection(server): db.session.commit() return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=True, is_admin=g.user.admin)
def server_create(): if not g.user: return redirect('/login') form = ServerForm(request.form) if request.method == 'POST': num_servers = g.user.servers.count() max_servers = config_setting('USER_MAX_SERVERS') if max_servers >= 0 and num_servers >= max_servers and not ( util.is_admin(g.user) or util.is_super_admin(g.user)): flash('You already have the maximum number of servers ({}) stored'. format(num_servers)) elif form.validate(): mock = config_setting('TESTING') data = form.data if not mock: encRcon = util.encrypt(dbKey, str(data['rcon_password'])) else: encRcon = data['rcon_password'] server = GameServer.create( g.user, data['display_name'], data['ip_string'], data['port'], encRcon, data['public_server'] and util.is_admin(g.user)) if mock or util.check_server_connection(server, dbKey): db.session.commit() app.logger.info('User {} created server {}'.format( g.user.id, server.id)) return redirect('/myservers') else: db.session.remove() flash('Failed to connect to server') else: flash_errors(form) return render_template('server_create.html', user=g.user, form=form, edit=False, is_admin=util.is_admin(g.user))