Initial YakPanel commit
This commit is contained in:
82
script/createSsl.py
Normal file
82
script/createSsl.py
Normal file
@@ -0,0 +1,82 @@
|
||||
#自签证书脚本 hezhihong
|
||||
import sys,os
|
||||
os.chdir('/www/server/panel/')
|
||||
sys.path.insert(0,"class/")
|
||||
sys.path.insert(0,"class_v2/")
|
||||
import public,json
|
||||
class CreateSSLMain:
|
||||
cert_file="/www/server/vhost_virtual/data/cert/vhost.crt"
|
||||
key_file="/www/server/vhost_virtual/data/cert/vhost.key"
|
||||
def get_ipaddress(self):
|
||||
'''
|
||||
@name 获取本机IP地址
|
||||
@author hwliang<2020-11-24>
|
||||
@return list
|
||||
'''
|
||||
ipa_tmp = public.ExecShell("ip a |grep inet|grep -v inet6|grep -v 127.0.0.1|awk '{print $2}'|sed 's#/[0-9]*##g'")[0].strip()
|
||||
iplist = ipa_tmp.split('\n')
|
||||
return iplist
|
||||
|
||||
def get_host_all(self):
|
||||
local_ip = ['127.0.0.1','::1','localhost']
|
||||
ip_list = []
|
||||
bind_ip = self.get_ipaddress()
|
||||
|
||||
for ip in bind_ip:
|
||||
ip = ip.strip()
|
||||
if ip in local_ip: continue
|
||||
if ip in ip_list: continue
|
||||
ip_list.append(ip)
|
||||
net_ip = public.httpGet("https://ifconfig.me/ip")
|
||||
|
||||
if net_ip:
|
||||
net_ip = net_ip.strip()
|
||||
if not net_ip in ip_list:
|
||||
ip_list.append(net_ip)
|
||||
if len(ip_list) > 1:
|
||||
ip_list = [ip_list[-1],ip_list[0]]
|
||||
return ip_list
|
||||
|
||||
#自签证书
|
||||
def CreateSSL(self):
|
||||
if os.path.exists(self.cert_file) and os.path.exists(self.key_file): return True
|
||||
import base64
|
||||
userInfo = public.get_user_info()
|
||||
|
||||
if not userInfo:
|
||||
userInfo['uid'] = 0
|
||||
userInfo['access_key'] = 'B' * 32
|
||||
|
||||
if 'access_key' not in userInfo or not userInfo['access_key']:
|
||||
userInfo['access_key'] = 'B' * 32
|
||||
|
||||
domains = self.get_host_all()
|
||||
pdata = {
|
||||
"action":"get_domain_cert",
|
||||
"company":"yakpanel.com",
|
||||
"domain":','.join(domains),
|
||||
"uid":userInfo['uid'],
|
||||
"access_key":userInfo['access_key'],
|
||||
"panel":1
|
||||
}
|
||||
cert_api = 'https://api.yakpanel.com/yakpanel_cert'
|
||||
result = json.loads(public.httpPost(cert_api,{'data': json.dumps(pdata)}))
|
||||
if 'status' in result:
|
||||
if result['status']:
|
||||
public.writeFile(self.cert_file,result['cert'])
|
||||
public.writeFile(self.key_file,result['key'])
|
||||
_cert_dir = '/www/server/vhost_virtual/data/cert'
|
||||
for _rpfx in (f'{_cert_dir}/yakpanel_root.pfx', f'{_cert_dir}/baota_root.pfx'):
|
||||
if os.path.exists(_rpfx):
|
||||
os.remove(_rpfx)
|
||||
public.writeFile(f'{_cert_dir}/yakpanel_root.pfx', base64.b64decode(result['pfx']), 'wb+')
|
||||
public.writeFile('/www/server/vhost_virtual/data/cert/root_password.pl',result['password'])
|
||||
print('1')
|
||||
return True
|
||||
print('0')
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
ssl = CreateSSLMain()
|
||||
ssl.CreateSSL()
|
||||
Reference in New Issue
Block a user