MihoyoBBSTools/server.py
2022-08-28 15:59:31 +08:00

192 lines
6.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Server Mod
import os
#import json
import time
import config
import threading
import main as single
import main_multi as multi
from loghelper import log
time_interval = 720 # 默认签到间隔时间单位minute(分钟)
mod = 1 # 单用户模式/自动判断
def runingtime():
return int(time.time())
def control(time_interval, mod, event, detal):
last_time = runingtime()
while True:
now_time = runingtime()
if now_time > last_time + time_interval * 60:
last_time = runingtime()
if mod == 1:
try:
single.main()
except:
log.info("single_user start failed")
else:
try:
multi.main_multi(True)
except:
log.info("multi_user start failed")
if event.is_set():
log.info("Stoping threading")
break
if (detal.is_set()):
log.info("The Next check time is {}s".format(last_time - now_time + time_interval * 60))
time.sleep(20)
def command(detal):
global mod
global time_interval
global show
#show = False # 显示倒计时信息
#if show:
# detal.set()
help = "command windows\nstop:stop server\nreload:reload config and refish tiem\nsingle:test single " \
"config\nmulit:test mulit conifg\nmod x:x is refer single or multi, 1 is single, 2 is multi\nadd " \
"'yourcookie'\nset user attribute value: such set username(*.yaml) enable(attribute) Ture(value)\ntime " \
"x:set interval time (minute)\nshow true/false:show the time count "
log.info(help)
while True:
command = input()
if command == "help" or command == "exit" or command == "?" or command == "":
log.info(help)
if command == "stop" or command == "exit":
log.info("Stoping Server Plase Wait")
return False
if command == "reload":
return True
if command == "test":
if mod==1:
try:
single.main()
except:
log.info("single_user start failed")
else:
try:
multi.main_multi(True)
except:
log.info("multi_user start failed")
if command == "single":
try:
single.main()
except:
log.info("single_user start failed")
if command == "mulit":
try:
multi.main_multi(True)
except:
log.info("multi_user start failed")
command = command.split(' ')
for i in range(0, len(command)):
if command[i] == "time":
if len(command) == 2:
time_interval = int(command[1])
log.info("switching interval to {} minute".format(time_interval))
return True
if command[i] == "mod":
if len(command) == 2:
mod_new = int(command[1])
if mod_new > 2 or mod_new < 1:
log.info("error mod")
else:
mod = mod_new
log.info("switching mod to {}".format(mod))
else:
log.info("Error Command")
if command[i] == "show":
if len(command) == 2:
if command[1] == "true":
detal.set()
log.info("switching to detail mod")
if command[1] == "false":
detal.clear()
log.info("switching to slient mod")
else:
log.info("Error Command")
if command[i] == "add":
cookie = ""
for m in range(i+1, len(command)):
cookie += command[m]
log.info("adding")
if mod == 1:
name = "config"
else:
log.info("Plase input your config name(*.yaml):")
name = input()
new_config = config.copy_config()
new_config['account']['cookie']=cookie
file_path = os.path.dirname(os.path.realpath(__file__)) + "/config/" + name + ".yaml"
try:
config.save_config(file_path,new_config)
log.info("Saving OK")
except:
log.info('Saving failed,plase check your file system')
#file = open(file_path, 'w')
#file.write(json.dumps(config))
#file.close()
if command[i] == "set":
if len(command) == 4:
file_path = os.path.dirname(os.path.realpath(__file__)) + "/config/" + command[1] + ".yaml"
if not os.path.exists(file_path):
log.info("User is not exist")
else:
new_config = config.load_config(file_path)
#json.load(f)
value = command[3]
if command[3] == "true":
value = True
if command[3] == "false":
value = False
if command[3].isdigit():
value = int(command[3])
new_config[command[2]] = value
try:
config.save_config(file_path,new_config)
log.info("Saving OK")
except:
log.info('Saving failed,plase check your file system')
#file = open(file_path, 'w')
#file.write(json.dumps(new_conifg))
#file.close()
return True
if __name__ == '__main__':
log.info('Running in Server Mod')
file_path = os.path.dirname(os.path.realpath(__file__)) + "/config/config.yaml"
if os.path.exists(file_path):
mod = 1
else:
mod = 2
while True:
log.info("switching to mod {}".format(mod))
t1_stop = threading.Event()
detal = threading.Event()
thread1 = threading.Thread(name='time_check', target=control, args=(time_interval, mod, t1_stop, detal))
thread1.start()
try:
if command(detal):
t1_stop.set()
continue
else:
t1_stop.set()
break
except:
t1_stop.set()
continue