Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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))
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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))