133 lines
5.0 KiB
Python
133 lines
5.0 KiB
Python
|
from asset.models import Host
|
|||
|
from project.models import Project, Channel, Server, Version
|
|||
|
import logging
|
|||
|
|
|||
|
|
|||
|
logger = logging.getLogger('flask.app.script')
|
|||
|
|
|||
|
projects = [
|
|||
|
{
|
|||
|
"name": "ts01/cn",
|
|||
|
"id": 1,
|
|||
|
"desc": "测试",
|
|||
|
"domain": "www.baidu.com",
|
|||
|
"www_ip": "127.0.0.1",
|
|||
|
"ops_ip": "10.2.2.10",
|
|||
|
"transfer_ip": "10.2.2.10",
|
|||
|
"webhook": "",
|
|||
|
"kw": ""
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "ab01/cn",
|
|||
|
"id": 2,
|
|||
|
"desc": "测试ab01",
|
|||
|
"domain": "ab01.www.baidu.com",
|
|||
|
"www_ip": "127.0.0.1",
|
|||
|
"ops_ip": "10.2.2.11",
|
|||
|
"transfer_ip": "10.2.2.13",
|
|||
|
"webhook": "",
|
|||
|
"kw": ""
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "aa11/tw",
|
|||
|
"id": 3,
|
|||
|
"desc": "1212",
|
|||
|
"domain": "www.baidu.com",
|
|||
|
"www_ip": "127.0.0.1",
|
|||
|
"ops_ip": "11.22.33.44",
|
|||
|
"transfer_ip": "11.22.33.45",
|
|||
|
"webhook": "",
|
|||
|
"kw": ""
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "qq88/cn",
|
|||
|
"id": 4,
|
|||
|
"desc": "qq88/cn",
|
|||
|
"domain": "qq88.com",
|
|||
|
"www_ip": "127.0.0.1",
|
|||
|
"ops_ip": "10.2.2.10",
|
|||
|
"transfer_ip": "10.2.2.11",
|
|||
|
"webhook": "",
|
|||
|
"kw": ""
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "ug41/cn",
|
|||
|
"id": 5,
|
|||
|
"desc": "ug41",
|
|||
|
"domain": "ug41.huanyuantech.com",
|
|||
|
"www_ip": "127.0.0.1",
|
|||
|
"ops_ip": "127.0.0.1",
|
|||
|
"transfer_ip": "127.0.0.1",
|
|||
|
"webhook": "",
|
|||
|
"kw": "ug41-cn"
|
|||
|
}
|
|||
|
]
|
|||
|
|
|||
|
|
|||
|
# def sync_project():
|
|||
|
# for p in projects:
|
|||
|
# proj = p
|
|||
|
# name = proj.pop("name")
|
|||
|
# game, fork = name.split("/")
|
|||
|
# proj["name"] = game
|
|||
|
# proj["fork"] = fork
|
|||
|
# proj.pop("id")
|
|||
|
# # 字典中缺少的值会是None,字段必须null=True
|
|||
|
# obj = models.Project(**proj)
|
|||
|
# obj.save()
|
|||
|
|
|||
|
|
|||
|
def sync_server_info():
|
|||
|
project = Project.objects(name="ug41", fork="cn").first()
|
|||
|
info = [{"ip": "10.2.2.10", "spid": "abo", "num": 1, "server_version": "2021100801", "cfg_version": "8616", "admin_version": "2021062801", "lua_version": "122", "flag": "2", "status": "0", "port": 0}, {"ip": "10.2.2.11", "spid": "dev", "num": 1, "server_version": "2021100801", "cfg_version": "7950", "admin_version": "2021062801", "lua_version": "122", "flag": "0", "status": "1", "port": 0}, {"ip": "10.2.2.11", "spid": "dev", "num": 2, "server_version": "2021100801", "cfg_version": "2014", "admin_version": "2021062801", "lua_version": "122", "flag": "0", "status": "1", "port": 0}, {"ip": "10.2.2.11", "spid": "dev", "num": 3, "server_version": "2021100801", "cfg_version": "7003", "admin_version": "2021062801", "lua_version": "122", "flag": "0", "status": "1", "port": 0}, {"ip": "10.2.2.11", "spid": "dev", "num": 4, "server_version": "2021100801", "cfg_version": "8406", "admin_version": "2021062801", "lua_version": "122", "flag": "0", "status": "1", "port": 0}, {"ip": "10.2.2.11", "spid": "dev", "num": 5, "server_version": "2021100801", "cfg_version": "17399", "admin_version": "2021062801", "lua_version": "122", "flag": "0", "status": "1", "port": 0}, {"ip": "10.2.2.11", "spid": "dev", "num": 6, "server_version": "2021100801", "cfg_version": "8375", "admin_version": "2021062801", "lua_version": "122", "flag": "0", "status": "1", "port": 0}]
|
|||
|
for srv in info:
|
|||
|
ip = srv.get("ip")
|
|||
|
num = srv.get("num")
|
|||
|
spid = srv.get("spid")
|
|||
|
port = srv.get("port", 0)
|
|||
|
# 内嵌的版本字段
|
|||
|
version = Version()
|
|||
|
version.admin = srv.get("admin_version", "")
|
|||
|
version.server = srv.get("server_version", "")
|
|||
|
version.config = srv.get("cfg_version", "")
|
|||
|
version.lua = srv.get("lua_version", "")
|
|||
|
version.bin = srv.get("bin_version", "")
|
|||
|
version.sql = srv.get("sql_version", "")
|
|||
|
state = srv.get("status", "1")
|
|||
|
if srv.get("flag", "0") == "2":
|
|||
|
status = "closed"
|
|||
|
else:
|
|||
|
status = "running" if state == "1" else "error"
|
|||
|
|
|||
|
try:
|
|||
|
host = Host.objects(public_ip=ip).first()
|
|||
|
if not host:
|
|||
|
host = Host(public_ip=ip)
|
|||
|
host.save()
|
|||
|
|
|||
|
channel = Channel.objects(project=project, spid=spid).first()
|
|||
|
if not channel:
|
|||
|
channel = Channel(project=project, spid=spid)
|
|||
|
channel.save()
|
|||
|
|
|||
|
# 更新、创建的参数
|
|||
|
defaults = dict(host=host, version=version, port=port, status=status)
|
|||
|
srv_obj = Server.objects(num=num, channel=channel).first()
|
|||
|
if not srv_obj: # 创建
|
|||
|
srv_obj = Server(num=num, channel=channel, **defaults)
|
|||
|
srv_obj.save()
|
|||
|
logger.info(f"创建 {spid}_{num} 区服信息成功")
|
|||
|
continue
|
|||
|
# 更新对象
|
|||
|
srv_obj.update(**defaults)
|
|||
|
srv_obj.save()
|
|||
|
logger.info(f"更新 {spid}_{num} 区服信息成功")
|
|||
|
except:
|
|||
|
logger.exception("同步区服出错")
|
|||
|
continue
|
|||
|
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
# sync_project()
|
|||
|
sync_server_info()
|