onekey-depoly / su.py
dong625's picture
Upload su.py
a731dc4 verified
raw
history blame
7.93 kB
import os
import json
import subprocess
import pytz
from datetime import datetime
from sucode import su
def check_password(username, entered_password):
passwords = su(username)
for service, password in passwords.items():
if entered_password == password:
return True, service
return False, None
def find_user_by_user_id(user_id):
data_path = "/mnt/upload/userdata.json"
with open(data_path, 'r') as file:
data = json.load(file)
for user in data['users']:
if user['userID'] == user_id:
return user
return None
def get_user_info():
def aria2(url, filename, d):
subprocess.run(
["aria2c", "-c", "-x", "16", "-s", "16", url, "-o", filename, "-d", d],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
url = "https://modelscope.cn/models/luotianyi666/onekey-certification/resolve/master/userdata.pth"
aria2(url, "userdata.json", "/mnt/upload")
url = "https://modelscope.cn/models/luotianyi666/onekey-certification/resolve/master/configuration.json"
aria2(url, "configuration.json", "/mnt/upload")
def check_repeat_username(username):
user_info = find_user_by_user_id(username)
if user_info:
return True, None
else:
user_data = {
"userID": user_info["userID"],
"Aliyun_ID": user_info["Aliyun_ID"],
"FirstTime": user_info["FirstTime"]
}
return False, user_data
def userdataupload():
os.chdir("/mnt")
os.rename("/mnt/upload/userdata.json", "/mnt/upload/userdata.pth")
from modelscope.hub.api import HubApi
api_key = '16cf6731-9441-4f98-b537-58ca240f1437'
api = HubApi()
api.login(api_key)
api.push_model(
model_id="luotianyi666/onekey-certification",
model_dir="/mnt/upload"
)
# 获取阿里云信息
def get_Aliyun_info():
dsw_region = os.environ.get("dsw_region")
accountID = os.environ.get("ALIYUN_ACCOUNT_ID")
return dsw_region, accountID
# 获取当前实例区域信息
def checkregion():
dsw_region, _ = get_Aliyun_info()
region_map = {
"cn-beijing": "北京",
"cn-shanghai": "上海",
"cn-shenzhen": "深圳",
"cn-hangzhou": "杭州",
}
dsw_region_cn = region_map.get(dsw_region, dsw_region)
if dsw_region == "cn-beijing":
print(f"当前{dsw_region_cn}区服务器资源拥挤,请选择北京区")
return False
return True
def find_user_by_Aliyun_id(Aliyun_id):
with open("/mnt/upload/userdata.json", 'r') as file:
data = json.load(file)
for user in data['users']:
if user['Aliyun_ID'] == Aliyun_id:
return user
return None
def webui():
print("\033[42m webui success\033[0m\n\n")
def sd3():
print("\033[42m sd3 success\033[0m\n\n")
def comfyui():
print("\033[42m comfyui success\033[0m\n\n")
def forge():
print("\033[42m forge success\033[0m\n\n")
def fooocus():
print("\033[42m fooocus success\033[0m\n\n")
def facefusion():
print("\033[42m facefusion success\033[0m\n\n")
def PaintsUNDO():
print("\033[42m PaintsUNDO success\033[0m\n\n")
def IClight():
print("\033[42m IClight success\033[0m\n\n")
def ChatTTS():
print("\033[42m IClight success\033[0m\n\n")
def Omost():
print("\033[42m Omost success\033[0m\n\n")
def main():
if not checkregion():
return
get_user_info()
accountID = get_Aliyun_info()[1]
user = find_user_by_Aliyun_id(accountID)
if user:
print("\033[36m欢迎使用阿里云DSW一键部署服务\033[0m\n\n")
services = [service[:-4] for service, flag in user.items() if flag and service.endswith("Flag")]
options = services + ["other"]
for i, option in enumerate(options):
print(f"{i+1}. {option}")
choice = int(input("请选择服务:")) - 1
selected_service = options[choice]
print(f"{selected_service} ")
print(f"您的阿里云账户ID为{accountID}")
if selected_service != "other":
globals()[selected_service]()
else:
remaining_services = [service[:-4] for service, flag in user.items() if not flag and service.endswith("Flag")]
for i, service in enumerate(remaining_services):
print(f"{i+1}. {service}")
choice = int(input("请选择服务:")) - 1
selected_service = remaining_services[choice]
username = user['userID']
print(f"您阿里云账号绑定的用户名为{username}")
entered_password = input(f"请输入{selected_service}服务的密码:")
# 检查密码
is_valid, service = check_password(username, entered_password)
if is_valid and service == selected_service:
print(f"密码正确,开始为您部署{selected_service}")
globals()[selected_service]()
user[f"{selected_service}Flag"] = True
for s in remaining_services:
if s != selected_service:
user[f"{s}Flag"] = False
data_path = "/mnt/upload/userdata.json"
with open(data_path, 'r') as file:
data = json.load(file)
for i, existing_user in enumerate(data['users']):
if existing_user['Aliyun_ID'] == user['Aliyun_ID']:
data['users'][i] = user
break
with open(data_path, 'w') as file:
json.dump(data, file, indent=4)
userdataupload()
else:
print("密码错误")
else:
print("欢迎使用阿里云DSW一键部署服务")
services = ["webui", "sd3", "comfyui", "forge", "fooocus", "facefusion", "PaintsUNDO", "IClight", "ChatTTS", "Omost"]
for i, service in enumerate(services):
print(f"{i+1}. {service}")
choice = int(input("请输入需要的服务序号:")) - 1
selected_service = services[choice]
print(f"您的阿里云账户ID为{accountID}")
username = input("请输入用户名(QQ号/微信号/咸鱼ID):")
entered_password = input(f"请输入 {selected_service} 服务的密码:")
# 检查用户名是否与数据库中的某个 userID 匹配
existing_user = find_user_by_user_id(username)
if existing_user:
print(f"{username}已被阿里云{existing_user['Aliyun_ID']}用户绑定,绑定时间为{existing_user['FirstTime']}")
print("请重新运行并输入其他用户名")
else:
is_valid, service = check_password(username, entered_password)
if is_valid and service == selected_service:
print(f"密码正确,开始为您部署 {selected_service}")
globals()[selected_service]()
with open("/mnt/upload/userdata.json", 'r') as file:
data = json.load(file)
new_user = {
"num": str(len(data['users']) + 1).zfill(3),
"userID": username,
"Aliyun_ID": accountID,
"FirstTime": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y%m%d%H%M'),
f"{selected_service}Flag": True
}
for s in services:
if s != selected_service:
new_user[f"{s}Flag"] = False
data['users'].append(new_user)
with open("/mnt/upload/userdata.json", 'w') as file:
json.dump(data, file, indent=4)
userdataupload()
else:
print("密码错误")
if __name__ == "__main__":
main()