def main(): base_path = config.get_base_path() settings = { 'static_path': os.path.join(BASE_DIR, 'static'), 'static_url_prefix': base_path + '/static/', } wsgi_app = wsgi.WSGIContainer(app) handlers = [] if base_path: handlers += [(base_path, web.RedirectHandler, dict(url=base_path + '/'))] handlers += [(base_path + r'/.*', web.FallbackHandler, dict(fallback=wsgi_app))] tornado_app = web.Application(handlers, **settings) http_server = HTTPServer(tornado_app, ssl_options=get_ssl_option()) http_server.listen(config.get_port(), config.get_address()) print("Start success on port %d" % config.get_port()) IOLoop.current().start()
def add_inbound(): port = int(request.form['port']) print("进来了") if Inbound.query.filter_by(port=port).count() > 0: return jsonify(Msg(False, gettext('port exists'))) listen = request.form['listen'] protocol = request.form['protocol'] settings = request.form['settings'] email = random_email() remail = '"email":"' + email + '",' str_list = list(settings) str_list.insert(13, remail) # 插入堆积 newsettings = ''.join(str_list) stream_settings = request.form['stream_settings'] sniffing = request.form['sniffing'] remark = request.form['remark'] # 当前用户等级 user_level = request.form['level'] # 是否更新所有服务器 allvps = request.form['allvps'] inbound = Inbound(port, listen, protocol, newsettings, stream_settings, sniffing, remark, user_level) local_ip = get_ip() if allvps == 'true': print("更新所有vps") devices = mysqlsesson.query(VpsDevice).filter(VpsDevice.level <= int(user_level), VpsDevice.status == 1).all() inbound.allvps = 'false' for device in devices: if local_ip != device.ip: try: inbound.remark = device.country_code requests.post("http://" + device.ip + ":"+str(config.get_port())+"/v2ray/inbound/add", inbound.to_json_vps(), timeout=13) except: print("Failed http") mysqlsesson.add(FailedNodeJob(local_ip,device.ip,"http://" + device.ip + ":"+str(config.get_port())+"/v2ray/inbound/add", str(inbound.to_json_vps()))) # requests.post("http://127.0.0.1:5000/v2ray/inbound/add", inbound.to_json_vps(), timeout=3) # 插入mysql 用户表,生成订阅 userSubscribe = UserSubscribe(base64.b64encode(email.encode('utf-8')), port, user_level, 1) mysqlsesson.add(userSubscribe) db.session.add(inbound) # 插入mysql inbound #查询自己服务器重新赋值 device = mysqlsesson.query(VpsDevice).filter(VpsDevice.server==local_ip).first() inboundMysql = InboundMysql(local_ip, port, listen, protocol, newsettings, stream_settings, sniffing, device.country_code) mysqlsesson.add(inboundMysql) # 插入mysql 节点表 Node = VpsNode(protocol, local_ip, json.loads(settings)['clients'][0]['id'], json.loads(settings)['clients'][0]['alterId'], port, json.loads(stream_settings)['wsSettings']['path'], device.country_code, json.loads(stream_settings)['network']) mysqlsesson.add(Node) mysqlsesson.commit() db.session.commit() return jsonify( Msg(True, gettext(u'Successfully added, will take effect within %(seconds)d seconds', seconds=__check_interval) ) )
def main(): base_path = config.get_base_path() settings = { "static_path": os.path.join(BASE_DIR, "static"), "static_url_prefix": base_path + "/static/", } wsgi_app = wsgi.WSGIContainer(app) handlers = [] if base_path: handlers += [(base_path, web.RedirectHandler, dict(url=base_path + "/"))] handlers += [(base_path + r"/.*", web.FallbackHandler, dict(fallback=wsgi_app))] tornado_app = web.Application(handlers, **settings) if config.get_v2_ext_tls(): http_server = HTTPServer(tornado_app, xheaders=True) else: http_server = HTTPServer(tornado_app, ssl_options=get_ssl_option()) http_server.listen(config.get_port(), config.get_address()) print("Start success on port %d" % config.get_port()) IOLoop.current().start()
def update_inbound(in_id): update = {} port = request.form.get('port') add_if_not_none(update, 'port', port) if port: if Inbound.query.filter(Inbound.port == port).count() > 1: return jsonify(Msg(False, gettext('port exists'))) add_if_not_none(update, 'tag', 'inbound-' + port) add_if_not_none(update, 'listen', request.form.get('listen')) add_if_not_none(update, 'protocol', request.form.get('protocol')) add_if_not_none(update, 'settings', request.form.get('settings')) add_if_not_none(update, 'stream_settings', request.form.get('stream_settings')) add_if_not_none(update, 'sniffing', request.form.get('sniffing')) add_if_not_none(update, 'remark', request.form.get('remark')) add_if_not_none(update, 'enable', request.form.get('enable') == 'true') add_if_not_none(update, 'level', request.form.get('level')) listen = request.form['listen'] protocol = request.form['protocol'] settings = request.form['settings'] email = random_email() remail = '"email":"' + email + '",' str_list = list(settings) str_list.insert(13, remail) # 插入堆积 newsettings = ''.join(str_list) stream_settings = request.form['stream_settings'] sniffing = request.form['sniffing'] remark = request.form['remark'] # 当前用户等级 user_level = request.form['level'] # 是否更新所有服务器 allvps = request.form['allvps'] local_ip = get_ip() if allvps == "true": inbound = Inbound(int(port), listen, protocol, newsettings, stream_settings, sniffing, remark, user_level) inbound.allvps = 'false' devices = mysqlsesson.query(VpsDevice).filter(VpsDevice.level <= int(user_level), VpsDevice.status == 1).all() for device in devices: if local_ip != device.ip: requests.post("http://" + device.ip + ":"+str(config.get_port())+"/v2ray/inbound/update/" + str(in_id), inbound.to_json_vps(), timeout=3) # requests.post("http://127.0.0.1:5000/v2ray/inbound/add", inbound.to_json_vps(), timeout=3) print("vps更新") Inbound.query.filter_by(port=in_id).update(update) db.session.commit() return jsonify( Msg(True, gettext(u'Successfully updated, will take effect within %(seconds)d seconds', seconds=__check_interval) ) )