コード例 #1
0
ファイル: home.py プロジェクト: alfg/guildbit
    def post(self):
        form = DeployServerForm()
        if form.validate_on_submit():

            try:
                # Generate UUID
                gen_uuid = str(uuid.uuid4())
                ip = request.remote_addr

                # Create POST request to murmur-rest api to create a new server
                welcome_msg = render_template("mumble/temp_welcome_message.html", gen_uuid=gen_uuid)

                payload = {
                    'password': form.password.data,
                    'welcometext': welcome_msg,
                    'users': settings.DEFAULT_MAX_USERS,
                    'registername': settings.DEFAULT_CHANNEL_NAME
                }

                server_id = murmur.create_server_by_location(form.location.data, payload)

                # Create database entry
                s = Server()
                s.duration = form.duration.data
                # s.duration = 1
                s.password = form.password.data
                s.uuid = gen_uuid
                s.mumble_instance = server_id
                s.mumble_host = murmur.get_murmur_hostname(form.location.data)
                s.ip = ip
                db.session.add(s)
                db.session.commit()

                # Send task to delete server on expiration
                tasks.delete_server.apply_async([gen_uuid], eta=s.expiration)
                return redirect(url_for('ServerView:get', id=s.uuid))

            except:
                import traceback

                db.session.rollback()
                traceback.print_exc()

            return render_template('index.html', form=form)
        return render_template('index.html', form=form)
コード例 #2
0
    def post(self):
        form = DeployCustomServerForm()
        form.region.choices = get_active_hosts_by_type('free')
        if form.validate_on_submit():
            try:
                # Generate UUID
                gen_uuid = str(uuid.uuid4())

                # Create POST request to murmur-rest api to create a new server
                welcome_msg = "Welcome. This is a custom GuildBit Mumble instance. View details on this server by " \
                              "<a href='http://guildbit.com/server/%s'>clicking here.</a>" % gen_uuid
                payload = {
                    'password': form.password.data,
                    'welcometext': welcome_msg,
                    'users': form.slots.data,
                    'registername': form.channel_name.data
                }
                server_id = murmur.create_server_by_region(
                    form.region.data, payload)

                # Create database entry
                s = Server()
                s.mumble_host = murmur.get_murmur_hostname(form.region.data)
                s.duration = 0
                s.password = form.password.data
                s.uuid = gen_uuid
                s.mumble_instance = server_id
                s.status = 'active'
                s.type = 'custom'
                db.session.add(s)
                db.session.commit()

                return redirect('/admin/servers/%s' % s.uuid)

            except:
                import traceback

                db.session.rollback()
                traceback.print_exc()

            return render_template('admin/server.html', form=form)
        return render_template('admin/server.html', form=form)
コード例 #3
0
ファイル: admin.py プロジェクト: alfg/guildbit
    def post(self):
        form = DeployCustomServerForm()
        if form.validate_on_submit():
            try:
                # Generate UUID
                gen_uuid = str(uuid.uuid4())

                # Create POST request to murmur-rest api to create a new server
                welcome_msg = "Welcome. This is a custom GuildBit Mumble instance. View details on this server by " \
                              "<a href='http://guildbit.com/server/%s'>clicking here.</a>" % gen_uuid
                payload = {
                    'password': form.password.data,
                    'welcometext': welcome_msg,
                    'users': form.slots.data,
                    'registername': form.channel_name.data
                }
                server_id = murmur.create_server_by_location(form.location.data, payload)

                # Create database entry
                s = Server()
                s.mumble_host = murmur.get_murmur_hostname(form.location.data)
                s.duration = 0
                s.password = form.password.data
                s.uuid = gen_uuid
                s.mumble_instance = server_id
                s.type = 'custom'
                db.session.add(s)
                db.session.commit()

                return redirect('/admin/servers/%s' % s.id)

            except:
                import traceback

                db.session.rollback()
                traceback.print_exc()

            return render_template('admin/server.html', form=form)
        return render_template('admin/server.html', form=form)
コード例 #4
0
ファイル: payment.py プロジェクト: Lumiahna/guildbit
    def create(self, id):
        form = DeployTokenServerForm()
        token = Token.query.filter_by(uuid=id).first_or_404()
        package = get_package_by_name(token.package)

        ctx = {
            'slots': package.get('slots', None),
            'duration': package.get('duration', None)
        }

        if form.validate_on_submit():

            try:
                # Generate UUID
                gen_uuid = str(uuid.uuid4())

                # Create POST request to murmur-rest api to create a new server
                welcome_msg = render_template("mumble/upgrade_welcome_message.html", gen_uuid=gen_uuid)

                # Initialize payload for murmur-rest request
                payload = {
                    'password': form.password.data,
                    'welcometext': welcome_msg,
                    'users': ctx['slots'],
                    'registername': form.channel_name.data
                }

                # Create virtual murmur server and set SuperUser password
                server_id = murmur.create_server_by_location(form.location.data, payload)
                murmur.set_superuser_password(form.location.data, form.superuser_password.data, server_id)

                # Create database entry
                s = Server()
                s.duration = ctx['duration']
                s.password = form.password.data
                s.uuid = gen_uuid
                s.type = 'upgrade'
                s.mumble_instance = server_id
                s.mumble_host = murmur.get_murmur_hostname(form.location.data)
                s.cvp_uuid = str(uuid.uuid4())

                # Expire token
                token.activation_date = datetime.datetime.utcnow()
                token.active = False
                db.session.add(s)
                db.session.add(token)
                db.session.commit()

                # Send task to delete server on expiration
                tasks.delete_server.apply_async([gen_uuid], eta=s.expiration)

                # Send email to user if email was set
                if token.email is not None:
                    email_ctx = {
                        'url': 'http://guildbit.com/server/%s' % gen_uuid,
                        'package': token.package,
                        'expiration': 'expiration here',
                        'superuser_password': form.superuser_password.data
                    }
                    msg = Message(
                        "Guildbit - Server Created",
                        sender=settings.DEFAULT_MAIL_SENDER,
                        recipients=[token.email])

                    msg.html = render_template("emails/payment_server_created.html", ctx=email_ctx)
                    mail.send(msg)

                return redirect(url_for('ServerView:get', id=s.uuid))

            except:
                import traceback
                db.session.rollback()
                traceback.print_exc()

        return render_template('payment/create.html', form=form, token=token, ctx=ctx)
コード例 #5
0
    def create(self, id):
        form = DeployTokenServerForm()
        form.region.choices = get_active_hosts_by_type('upgrade')
        token = Token.query.filter_by(uuid=id).first_or_404()
        package = Package.query.filter_by(id=token.package_id).first_or_404()

        ctx = {
            'slots': package.slots,
            'duration': package.duration
        }

        if form.validate_on_submit():
            try:
                # Generate UUID
                gen_uuid = str(uuid.uuid4())

                # Create POST request to murmur-rest api to create a new server
                welcome_msg = render_template("mumble/upgrade_welcome_message.html", gen_uuid=gen_uuid)

                # Initialize payload for murmur-rest request
                payload = {
                    'password': form.password.data,
                    'welcometext': welcome_msg,
                    'users': ctx['slots'],
                    'registername': form.channel_name.data
                }

                # Create virtual murmur server and set SuperUser password
                server_id = murmur.create_server_by_region(form.region.data, payload)
                murmur.set_superuser_password(form.region.data, form.superuser_password.data, server_id)

                # Create database entry
                s = Server()
                s.duration = ctx['duration']
                s.password = form.password.data
                s.uuid = gen_uuid
                s.type = 'upgrade'
                s.mumble_instance = server_id
                s.mumble_host = murmur.get_murmur_hostname(form.region.data)
                s.cvp_uuid = str(uuid.uuid4())
                s.status = 'active'

                # Expire token
                token.activation_date = datetime.datetime.utcnow()
                token.active = False
                token.email = form.email.data
                db.session.add(s)
                db.session.add(token)
                db.session.commit()

                # Send task to delete server on expiration
                tasks.delete_server.apply_async([gen_uuid], eta=s.expiration)

                # Send email to user if email was set
                if form.email.data is not None:
                    email_ctx = {
                        'url': 'http://guildbit.com/server/%s' % gen_uuid,
                        'package': token.package,
                        'expiration': 'expiration here',
                        'superuser_password': form.superuser_password.data
                    }
                    msg = Message(
                        "Guildbit - Server Created",
                        sender=settings.DEFAULT_MAIL_SENDER,
                        recipients=[form.email.data])

                    msg.html = render_template("emails/payment_server_created.html", ctx=email_ctx)
                    try:
                        mail.send(msg)
                    except:
                        import traceback
                        traceback.print_exc()

                return redirect(url_for('ServerView:get', uuid=s.uuid))

            except:
                import traceback
                db.session.rollback()
                traceback.print_exc()

        return render_template('payment/create.html', form=form, token=token, ctx=ctx)
コード例 #6
0
    def post(self):
        # Set admin's IP.
        x_forwarded_for = request.headers.getlist('X-Forwarded-For')
        ip = x_forwarded_for[0] if x_forwarded_for else request.remote_addr
        ip = ip.split(',')[0]

        # Flash message if user is on banlist.
        banned = Ban.query.filter_by(ip=ip).first()
        if banned:
            banned.last_accessed = datetime.utcnow()
            db.session.add(banned)
            db.session.commit()
            flash("User banned! Reason: %s" % banned.reason)
            return redirect('/')

        form = DeployServerForm()
        form.duration.choices = duration_choices()
        form.region.choices = get_active_hosts_by_type('free')

        if form.validate_on_submit():
            try:
                # Generate UUID
                gen_uuid = str(uuid.uuid4())

                # Create database entry
                s = Server()
                s.duration = form.duration.data
                s.password = form.password.data
                s.uuid = gen_uuid
                s.mumble_instance = None
                s.mumble_host = None
                s.status = "queued"
                s.mumble_host = murmur.get_murmur_hostname(form.region.data)
                s.ip = ip
                db.session.add(s)
                db.session.commit()

                # Setup the payload and send to create_server queue.
                welcome_msg = render_template(
                    "mumble/temp_welcome_message.html", gen_uuid=gen_uuid)

                payload = {
                    'password': form.password.data,
                    'welcometext': welcome_msg,
                    'users': settings.DEFAULT_MAX_USERS,
                    'registername': settings.DEFAULT_CHANNEL_NAME
                }

                # Send task to create server
                tasks.create_server.apply_async(
                    [gen_uuid, form.region.data, payload])

                # Store server_uuid cookie and redirect.
                response = make_response(
                    redirect(url_for('ServerView:get', uuid=s.uuid)))
                response.set_cookie('server_uuid', s.uuid)
                return response

            except:
                import traceback

                db.session.rollback()
                traceback.print_exc()

            return render_template('index.html', form=form)
        return render_template('index.html', form=form)