示例#1
0
def create_server():
    '''Создает сервер типа farhub '''
    if (API_KEY != request.args.get('api')):
        return jsonify({'error': 'Wrong api key'}), 400
    json_data = request.get_json(force=True)

    try:
        srv = Server.objects.get(hash_id=json_data['hash_id'])
        srv.delete()
    except Exception:
        pass
    finally:
        try:
            coun = Country.objects.get(name=json_data['location'])
        except:
            coun = Country(name=json_data['location'])
            coun.save()
        try:
            server_name = Type_Of_Server.objects.get(
                type_of_server='gtn_farhub')
        except:
            server_name = Type_Of_Server(type_of_server='gtn_farhub')
            server_name.save()
        server = Server(type_of_server=server_name,
                        address=json_data['server_ip'],
                        location=coun,
                        api_key=json_data['api_key'],
                        data=json_data['data'],
                        description=json_data['description'],
                        hash_id=json_data['hash_id'])
        server.save()
        Country.synhro()
        monitoring_service()
        return '200 OK'
示例#2
0
def add_server():
    url = None
    if "image" in request.files:
        image = request.files["image"]
        image.filename = get_unique_filename(image.filename)
        upload = upload_file_to_s3(image)
        url = upload["url"]

    # print(upload)
    new_server = Server(
        admin_id=request.form['admin_id'],
        name=request.form['name'],
        description=request.form['description'],
        category=request.form['serverCategory'],
        public=(bool(request.form['isPublic'])),
        image_url=url,
    )

    user = User.query.get(request.form['admin_id'])
    user.servers.append(new_server)
    db.session.add(new_server)
    db.session.commit()
    data = new_server.to_dict()
    data['channels'] = []
    return data
示例#3
0
    def auto_seed(count):
        for i in range(count):
            admin_id = random.randint(1, count)
            name = fake.slug()
            image = fake.image_url(width=80, height=80)
            public = True
            created_at = datetime.now()
            while image == "https://dummyimage.com/80x80" or image == "https://www.lorempixel.com/80x80" or image == "https://www.lorempixel.com/80/80":
                image = fake.image_url(width=80, height=80)

            seed_server = Server(admin_id=admin_id,
                                 name=name,
                                 image=image,
                                 public=public,
                                 created_at=created_at)

            username = fake.name()
            email = fake.email()
            password = '******'
            profile_picture = fake.image_url(width=80, height=80)
            while profile_picture == "https://dummyimage.com/80x80" or profile_picture == "https://www.lorempixel.com/80x80" or profile_picture == "https://www.lorempixel.com/80/80":
                profile_picture = fake.image_url(width=80, height=80)

            seed_user = User(username=username,
                             email=email,
                             password=password,
                             profile_picture=profile_picture,
                             created_at=created_at)

            seed_user.servers.append(seed_server)
            db.session.add(seed_user)
示例#4
0
def servers():
    '''
    For GET requests, return all servers.
    For POST requests, add a new servers.
    '''
    # request is a GET
    if request.method == 'GET':
        all_servers = Server.query.all()
        schema = ServerSchema(many=True, strict=True)
        server_data = schema.dump(all_servers)
        return jsonify(server_data[0])

    # request is a POST
    elif request.method == 'POST':
        ip = request.form.get('IP')
        alias = request.form.get('Alias')
        port = request.form.get('Port')

        server_obj = Server.query.filter_by(ip=ip).first()
        if server_obj is not None:
            return 'server already exists', 400

        server_obj = Server(ip=ip, alias=alias, port=port)
        schema = ServerSchema(strict=True)
        server_data = schema.dump(server_obj)
        return jsonify(server_data[0]), 201
示例#5
0
    def test_should_see_data_when_inserted(self):
        expected_result = {
            u'ipaddress': u'127.0.0.1',
            u'hostname': u'localhost',
            u'proxypath': u'localhost.thoughtworks.com'
        }

        test_server = Server('confTest')
        test_server.ipaddress = '127.0.0.1'
        test_server.hostname = 'localhost'
        test_server.variables['proxypath'] = Value(
            'localhost.thoughtworks.com')
        db.session.add(test_server)
        db.session.commit()

        self.assertEqual(test_server.variables, expected_result)
示例#6
0
def create(**kwargs):
    obj = Server(**kwargs)
    db.session.add(obj)
    try:
        db.session.commit()
    except Exception, e:
        raise Exception(e.message.split(")")[1])
示例#7
0
def server_add():
    form = AddServerForm(data=request.get_json())
    if form.validate_on_submit():
        server = Server(name=form.name.data,
                        idc=form.idc.data,
                        instance_id=form.instance_id.data,
                        instance_type=form.instance_type.data,
                        platform=form.platform.data,
                        image_name=form.image_name.data,
                        key_name=form.key_name.data,
                        private_ip=form.private_ip.data,
                        public_ip=form.public_ip.data,
                        block_device=form.block_device.data,
                        subnet=form.subnet.data,
                        create_time=form.create_time.data,
                        category=form.category.data,
                        category_branch=form.category_branch.data,
                        status=form.status.data,
                        description=form.description.data)
        db.session.add(server)
        db.session.commit()
        flash('%s is add.' % form.name.data, 'success')
    else:
        flash_errors(form)
    return redirect(url_for('.server'))
示例#8
0
def userprofile(path):
    if not current_user.is_authenticated:
        return redirect(url_for('login'))

    msg = None
    form = ServerForm(request.form)
    user = User.query.all()
    server = Server.query.all()
    if request.method == 'GET':
        return render_template('layouts/default.html',
                               content=render_template('pages/' + path,
                                                       server=server,
                                                       user=user,
                                                       form=form,
                                                       msg=msg))
    if form.validate_on_submit:
        try:
            name_serv = request.form.get('name_serv', '', type=str)
            ip_serv = request.form.get('ip_serv', '', type=str)
            port_serv = request.form.get('port_serv', '', type=str)
            username_fk = request.form.get('username_fk', '', type=str)
            server1 = Server(name_serv, ip_serv, port_serv, username_fk)
            server1.save1()

            serv1_nume = Server.query.filter_by(name_serv=name_serv).first()
            serv1_port = Server.query.filter_by(port_serv=port_serv).first()
            #if serv1_nume:
            #if serv1_nume.name_serv == name_serv:
            #msg = "Numele pentru server este deja ocupat. Va rugam sa introduceti altul."
            #if serv1_port:
            #if serv1_nume.port_serv == port_serv:
            #msg = "Port la adresa respectiva existent"

        except Exception:
            return render_template('layouts/default.html',
                                   content=render_template('pages/' + path,
                                                           server=server,
                                                           user=user,
                                                           form=form,
                                                           msg=msg))

    return render_template('layouts/default.html',
                           content=render_template('pages/' + path,
                                                   server=server,
                                                   user=user,
                                                   form=form,
                                                   msg=msg))
示例#9
0
def get_servers():
    """Retrieve all existing servers from database."""
    page = request.args.get('page', 1, type=int)
    order_by = request.args.get('order_by')
    servers = Server.get_all(order_by=order_by)

    response = paginate_response(servers, page)
    return jsonify(response), 200
示例#10
0
def get_server(endpoint):
    """Retrieve single server instance from database."""
    server = Server.get_server_stats(endpoint)
    if server is None:
        return jsonify({'message': 'Server instance could not be found.'}), 404

    response = server.to_dict()
    return jsonify(response), 200
示例#11
0
def create(**kwargs):
    check_field_exists(Server, kwargs)
    obj = Server(**kwargs)
    db.session.add(obj)
    try:
        db.session.commit()
    except Exception, e:
        raise Exception(e.message.split('"')[1])
示例#12
0
def create(**kwargs):
    #1.获取参数信息
    check_field_exists(Server, kwargs)
    #2.传参个数验证
    obj = Server(**kwargs)
    #3.插入数据库
    db.session.add(obj)
    db.session.commit()
    return obj.id
示例#13
0
def create_server():
    if request.method == 'GET':
        return render_template('CreateServer.html')
    elif request.method == 'POST':
        if request.form.get('ssl'):
            s = Server(desc=request.form['desc'],
                       address=request.form['address'],
                       ssl=True,
                       type=request.form['type'],
                       port=request.form['port'])
        else:
            s = Server(desc=request.form['desc'],
                       address=request.form['address'],
                       ssl=False,
                       type=request.form['type'],
                       port=request.form['port'])
        db.session.add(s)
        db.session.commit()
        return render_template('Index.html')
示例#14
0
def create_server():
    form = ServerForm()
    # form['csrf_token'].data = request.cookies['csrf_token']
    if form.is_submitted():
        if ("image" in request.files):
            image = request.files["image"]
            image.filename = get_unique_filename(image.filename)
            upload = upload_file_to_s3(image)
            url = upload["url"]
        else:
            url = ""
        server = Server(admin_id=form.data['admin_id'],
                        name=form.data['name'],
                        image=url,
                        public=form.data['public'],
                        created_at=form.data['created_at'])
        db.session.add(server)
        db.session.commit()
        return server.to_dict()
    return "did not go thru", 401
示例#15
0
def create_server():
    """Create new server instance."""
    json_data = request.get_json()
    if not json_data:
        return jsonify({'error': 'No required input data provided.'}), 400

    data, errors = Server.from_dict(json_data)
    if errors:
        return jsonify(errors), 400

    server = Server.get(data.get('endpoint'))
    if server:
        return jsonify({'error':
                        'Server with this endpoint already exists.'}), 400

    # Create a new server instance
    server = Server(data)

    response = server.to_dict()
    return jsonify(response), 201
示例#16
0
def find_server():
    serverId = request.json
    serverSearch = Server.query.get(serverId)
    server = Server(
        id=serverSearch.id,
        admin_id=serverSearch.admin_id,
        name=serverSearch.name,
        description=serverSearch.description,
        category=serverSearch.category,
        public=serverSearch.public,
        image_url=serverSearch.image_url,
    )
    data = server.to_dict()
    formattedChannels = [
        channel.to_dict() for channel in serverSearch.channels
    ]
    data['channels'] = formattedChannels
    data['users'] = [user.to_dict() for user in serverSearch.users]

    return data
示例#17
0
def update_server(endpoint):
    """Update server instance in database."""
    server = Server.get(endpoint)
    if server is None:
        return jsonify({'message': 'Server instance could not be found.'}), 404

    # Update server instance
    json_data = request.get_json()
    server.update(json_data.get('title'))

    response = server.to_dict()
    return jsonify(response), 200
示例#18
0
def create(**params):
    # 1. 获取参数信息
    check_field_exists(Server, params)

    print inspect.getmembers(Server, predicate=inspect.ismethod(id))

    # 传参的个数需要验证
    obj = Server(**params)

    # 插入到数据库
    db.session.add(obj)
    db.session.commit()
    return obj.id
示例#19
0
文件: core.py 项目: brrkim/pyhcmp
def parse_data(server,response):
    items = []
    clouds = {"KTC":["KT Cloud"],"AWS":["AMAZON AWS"]}
    zones = {"D":["d1/"],"G":["v1/","v2/"]}
    if server.cloudname in clouds["KTC"]:
        if server.zone in zones["D"]:
            for inst in response["servers"]:
                item = Server(
                    tenant_id=inst["tenant_id"],
                    instance_name=inst["name"],
                    instance_id=inst["hostId"],
                    instance_az=inst["OS-EXT-AZ:availability_zone"],
                    instance_flavor_id=inst["flavor"]["id"],
                    instance_key_name=inst["key_name"],
                    instance_status=inst["status"])
                items.append(item)
        elif server.zone in zones["G"]:
            for inst in response["listvirtualmachinesresponse"]["virtualmachine"]:
                item = Server(
                    tenant_id=inst["domainid"],
                    instance_name=inst["name"],
                    instance_id=inst["id"],
                    instance_az=inst["zonename"],
                    instance_flavor_id=inst["templatename"],
                    instance_status=inst["state"])
                # items.append(item)
    elif server.cloudname in clouds["AWS"]:
        for reserv in response["Reservations"]:
            for inst in reserv["Instances"]:
                item = Server(
                    tenant_id=reserv["OwnerId"],
                    instance_id=inst["InstanceId"],
                    instance_az=inst["Placement"]["AvailabilityZone"],
                    instance_flavor_id=inst["InstanceType"],
                    instance_key_name=inst["KeyName"],
                    instance_status=inst["State"]["Name"])
                # items.append(item)
    return items
示例#20
0
def create_it_all(user, facter_json, session):
    #TODO check these created status
    (facterversion, created) = get_one_or_create(session, FacterVersion, facterversion = facter_json['facterversion'])
    (architecture, created) = get_one_or_create(session, FacterArchitecture, architecture = facter_json['architecture'])
    (virtual, created) = get_one_or_create(session, FacterVirtual, virtual = facter_json['virtual'])
    (ftype, created) = get_one_or_create(session, FacterType, type = facter_json['type'])
    (manufacturer, created) = get_one_or_create(session, FacterManufacturer, manufacturer = facter_json['manufacturer'])
    (productname, created) = get_one_or_create(session, FacterProductname, productname = facter_json['productname'])
    (processor0, created) = get_one_or_create(session, FacterProcessor, processor0 = facter_json['processor0'])

    (macaddress, created) = get_one_or_create(session, FacterMacaddress, macaddress = facter_json['macaddress'])

    # TODO: Fixme: Need to identify primary disk here, there is another place waiting for the same
    # fix a few lines below. Search for sda...
    blockdevice_sda_size = 0
    if 'blockdevice_sda_size' in facter_json:
        blockdevice_sda_size = facter_json['blockdevice_sda_size']

    facts = FacterFacts(
            is_virtual = facter_json['is_virtual'],
            serialnumber = facter_json['serialnumber'],
            uuid = facter_json['uuid'],
            physicalprocessorcount = facter_json['physicalprocessorcount'],
            processorcount = facter_json['processorcount'],
            memorysize = facter_json['memorysize'],
            memorysize_mb = facter_json['memorysize_mb'],
            blockdevice_sda_size = blockdevice_sda_size,
            facterversion_id = facterversion.id,
            architecture_id = architecture.id,
            virtual_id = virtual.id,
            type_id = ftype.id,
            manufacturer_id = manufacturer.id,
            productname_id = productname.id,
            processor_id = processor0.id,
            facter_json = json.dumps(facter_json))

    facts.add_macaddress(macaddress)

    db.session.add(facts)
    db.session.commit()

    server = Server(owner=user, facter_facts_id=facts.id)
    db.session.add(server)
    db.session.commit()

    activation = Activation(server_id=server.id, user_id=user.id, activation_pin=randrange(1000, 9999))
    db.session.add(activation)
    db.session.commit()

    return (activation, facts, server)
示例#21
0
def create(**kwargs):
    # 1  获取用户传入参数
    print kwargs
    # 2  验证参数的合法性
    check_field_exists(Server, kwargs, field_none=False)
    # 3  插入到数据库
    idc = Server(**kwargs)
    db.session.add(idc)

    try:
        db.session.commit()
    except Exception, e:
        current_app.logger.warning("commit error: {}".format(e.message))
        raise Exception("commit error")
示例#22
0
def create(**kwargs):
    # 1. 获取参数
    # 2. 验证参数是否合法
    check_field_exists(Server, kwargs, field_none=False)
    server = Server(**kwargs)
    db.session.add(server)
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.warning("插入错误: {} ".format(e.message))
        raise Exception("commit error")
    # 3. 插入到数据库
    # 4. 返回插入的状态
    return server.id
示例#23
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)
示例#24
0
文件: server.py 项目: ijidan/jdeploy
def server_edit(server_id=None):
	method = request.method
	server_id = request.args.get("evn_id", "").strip()
	if (method == "POST"):
		form = request.form
		server_no = form.get("server_no", "")
		server_name = form.get("server_name")
		server_ip = form.get("server_ip", "")
		project_id = form.get("project_id", "")
		env_id = form.get("env_id", "")

		model = Server()
		if (server_id):
			query_model = Server.query.filter_by(id=server_id).first()
			if (query_model is not None):
				model = query_model

		for item in form:
			item_val = form.get(item, "")
			print  item, item_val
			if (hasattr(model, item)):
				model.__setattr__(item, item_val)

		DBSession.save(model)
		return Result("succ", 0, url_for(".server_list")).getIframeResponse()

	else:
		if (server_id):
			server = Server.query.filter_by(id=server_id).first()
		else:
			server = Server()
		project_list = Project.query.all()
		env_list = Environ.query.all()

		print server_list, env_list
		return render_template("server/edit.html", server=server, project_list=project_list, env_list=env_list)
示例#25
0
def server_list():

    types = Type_Of_Server.objects.all()
    countries = Country.objects.all()
    color = 'success'
    message = ''
    if request.method == 'POST':
        type_of_server = request.form.get('type_of_server')
        address = request.form.get('address')
        description = request.form.get('description')
        location = request.form.get('location')
        type_server = Type_Of_Server.objects.get(type_of_server=type_of_server)
        coun = Country.objects.get(name=location)
        hash_id = ''.join(
            random.choices(string.ascii_lowercase + string.digits, k=24))
        if address != '':
            srv = Server(
                type_of_server=type_server,
                address=address,
                description=description,
                location=coun,
                hash_id=hash_id,
            )
            srv.save()
            Country.synhro()
            monitoring_service()
            message = 'success'
        else:
            color = 'danger'
            message = 'You must type anything!'
    return render_template('server.html',
                           message=message,
                           color=color,
                           countries=countries,
                           types=types,
                           name=get_user_name())
示例#26
0
def server_add():
    form = serverForm()
    if form.validate_on_submit():
        server_count = Server.query.filter_by(title=form.data['title']).first()
        if server_count:
            flash('添加失败,该名称已存在!', 'error')
            return redirect(url_for('server_add'))
        server = Server(title=form.data['title'], cpu=form.data['cpu'], memory=form.data['memory'], \
                        disk=form.data['disk'], bdwidth=form.data['bdwidth'], \
                        price=form.data['price'], server_type=form.data['server_type'], \
                        server_region=form.data['server_region'])
        db.session.add(server)
        db.session.commit()
        flash('添加成功', 'ok')
        return redirect(url_for('server_add'))
    return render_template('/admin/server_add.html', form=form)
示例#27
0
def create(**kwargs):
    # 1 获取参数
    # print kwargs

    # 2 检查参数
    check_field_exists(Server, kwargs)

    # 3 插入到数据库
    server = Server(**kwargs)
    db.session.add(server)
    try:
        db.session.commit()
    except Exception, e:
        # logging
        current_app.logger.warning("commit error: {}".format(e.message))
        raise Exception("commit error")
示例#28
0
def create(**kwargs):
    #1获取参数
    check_field_exists(Server, kwargs)

    #2处理数据
    #print inspect.getmembers(Server, predicate=inspect.is)
    #return 1
    print kwargs
    #3实例化record
    record = Server(**kwargs)
    #4插入到数据库
    db.session.add(record)
    try:
        db.session.commit()
    except Exception, e:
        raise Exception(e.message.split(") ")[1])
示例#29
0
def create(**params):
    # 1. 获取参数信息
    check_field_exists(Server, params)

    # 传参的个数需要验证
    obj = Server(**params)
    print "getobj"

    # 插入到数据库
    db.session.add(obj)
    print "obj"
    try:
        db.session.commit()
        print "aa"
    except Exception, e:
        print e.message.split()[1]
        raise Exception(e.message)
示例#30
0
def new():
    new_server = Server()
    variable = Variable()
    variable_form = VariableForm(obj=variable)
    form = ServerForm(request.form, obj=new_server)
    if form.add_variable.data:
        form.variables.append_entry(variable_form)
    elif form.delete_variable.data and len(form.variables.entries) > 1:
        form.variables.pop_entry()
    elif form.validate_on_submit():
        if form.create_server.data:
            form.populate_obj(new_server)
            db.session.add(new_server)
            db.session.commit()
            create_yml()
            return redirect('/servers')
    return render_template('new_server.html', form=form)
示例#31
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)
示例#32
0
def create(**kwargs):
    check_field_exists(Server, kwargs)
    print kwargs.get("raid", None)
    check_value_exists(Supplier, 'id', kwargs.get("supplier", None))
    check_value_exists(Raid, 'name', kwargs.get("raid", None))
    check_value_exists(Status, 'id', kwargs.get("status", None))
    check_value_exists(User, 'id', kwargs.get("last_op_people", None))
    check_value_exists(Product, 'id', kwargs.get("service_id", None))
    check_value_exists(Product, 'id', kwargs.get("server_purpose", None))
    check_value_exists(User, 'id', kwargs.get("trouble_resolve", None))
    check_value_exists(User, 'id', kwargs.get("op_interface_other", None))
    check_value_exists(User, 'id', kwargs.get("dev_interface", None))
    check_value_exists(Power, 'id', kwargs.get("power", None))

    obj = Server(**kwargs)
    db.session.add(obj)
    try:
        db.session.commit()
    except Exception, e:
        raise Exception(e.message.split(")")[1])
示例#33
0
def index():
## Begin code ##

## Set your 'server' table to empty
    g.server = None

## Here I mapped the server list manually the first time, this method should be updated to mysqldb ^^
    #serverlist = {"69.30.232.146:25451","69.30.232.146:25449","69.30.232.146:25461","69.30.232.146:25461","69.30.232.146:25459","69.30.232.146:25457","69.30.232.146:25455","69.30.232.146:25453","69.30.232.146:25447"}
    #serverlist = {"64.182.125.141:27017","64.182.125.141:27015","64.182.125.141:27019","64.182.125.142:27022","64.182.125.142:27018","64.182.125.140:27015","64.182.210.44:27015","64.182.210.36:27015","64.182.125.140:27016","64.182.210.44:27017","64.182.210.36:27016","64.182.210.44:27018","64.182.125.140:27018","64.182.125.140:27017","64.182.210.36:27017","64.182.210.36:27018","64.182.125.140:27019","64.182.125.142:27015","64.182.210.38:27016","64.182.125.142:27016","64.182.210.46:27015","64.182.210.38:27015","64.182.210.45:27016","64.182.210.37:27016","64.182.125.141:27017","64.182.210.37:27017","64.182.210.37:27019","64.182.210.45:27019"}
    serverlist = []
## Now we build a list of servers from the DB
    for x in sList():
        serverlist += ["%s:%s"%(x.ip,x.port)]
    rl = []

## run through every server in the list and query its data
    for x in serverlist:
        ## filtering the ip from the list into the required format
        ip, separator, port = x.rpartition(':')
        assert separator # separator (`:`) must be present
        port = int(port) # convert to integer
        sq = SourceQuery(ip,port)
        server = sq.getInfo()
        try:
            g.server = Server.get_or_create(server['Hostname'])
            g.server.ip = ip
            g.server.port = port
            g.server.type = server['GameDesc']
            g.server.map = server['Map']
            g.server.hostname = server['Hostname']
            g.server.maxplayers = server['MaxPlayers']
            g.server.curplayers = server['Players']
            ##now that we set up our session and database, we commit it
            db_session.commit()
        except:
            print "server offline"

    rl = sList()

    output = render_template('index.html',username=g.user,datas=rl)
    return output
示例#34
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)
示例#35
0
    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)