This commit is contained in:
caoqianming 2022-04-08 23:00:19 +08:00
commit 0619d670fb
20 changed files with 223 additions and 175 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +0,0 @@
1.事故隐患界面增加无图片导出excel支持一次性导出1000条
2.增加应急预案
3.安全绩效下的个人安全绩效统计数字可点击链接查看

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,132 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace YOMIFrameWork.Common
{
/// <summary>
/// 灰色预测
/// </summary>
public class GrayModel
{
private static GrayModel _Instrance = null;
public static GrayModel Instrance
{
get { if (_Instrance == null) return new GrayModel(); else return _Instrance; }
}
public double GetNext(List<double> data)
{
//开始计算
//一次累加begin
int number = data.Count;
double[] aArray = new double[number];//原始数据
double[] bArray = new double[number];//一次累加的结果
for (int i = 0; i < number; i++)
{
aArray[i] = data[i];
}
bArray[0] = aArray[0];
for (int x = 1; x < number; x++)
{
bArray[x] = bArray[x - 1] + aArray[x];
}
//end
//计算均值系列begin
double[] cArray = new double[number]; //均值计算的结果
cArray[0] = 0.0;
for (int x = 1; x < number; x++)
{
cArray[x] = bArray[x - 1] / 2 + bArray[x] / 2;
}
//end
//计算C,D,E,F
//计算C
double[] dArray = new double[number];
dArray[1] = cArray[1];
for (int x = 1; x < number; x++)
{
dArray[x] = cArray[x] + dArray[x - 1];
}
double C;
C = dArray[number - 1];
//end
//计算D
double[] fArray = new double[number];
fArray[1] = aArray[1];
for (int x = 1; x < number; x++)
{
fArray[x] = aArray[x] + fArray[x - 1];
}
double D;
D = fArray[number - 1];
//end
//计算E
double[] gArray = new double[number];
gArray[1] = aArray[1] * cArray[1];
for (int x = 1; x < number; x++)
{
gArray[x] = aArray[x] * cArray[x] + gArray[x - 1];
}
double E;
E = gArray[number - 1];
//end
//计算F
double[] hArray = new double[number];
hArray[1] = cArray[1] * cArray[1];
for (int x = 1; x < number; x++)
{
hArray[x] = cArray[x] * cArray[x] + hArray[x - 1];
}
double F;
F = hArray[number - 1];
//end
//计算a,b
//计算发展系数a begin
//textBox2.Text = "";
double a;
a = (C * D - (number - 1) * E) / ((number - 1) * F - C * C);
//textBox2.Text = a.ToString();
//end
//计算灰作用量b begin
//textBox3.Text = "";
double b;
b = (D * F - C * E) / ((number - 1) * F - C * C);
//textBox3.Text = b.ToString();
//end
//计算q
double q;
q = b / a;
//end
//istBox4.Items.Clear();
double ssn1 = (aArray[0] - q) * Math.Exp(-a * (number)) + q;
double ssn = (aArray[0] - q) * Math.Exp(-a * (number - 1)) + q;
return (ssn1 - ssn);
}
}
}

Binary file not shown.

View File

@ -65,6 +65,15 @@ def makeqr_safelist(data):
img.save(filepath) img.save(filepath)
return filepath return filepath
def makeqr_(data):
upload_folder = 'media/qr_other'
if not os.path.exists(upload_folder):
os.mkdir(upload_folder)
img = qrcode.make(data=data)
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
img.save(filepath)
return filepath
def drquestions(companyid,path,userid): def drquestions(companyid,path,userid):
wb = load_workbook(path) wb = load_workbook(path)
sheet = wb.worksheets[0] sheet = wb.worksheets[0]

View File

@ -13,7 +13,7 @@ from django.db.models import F,Count,Sum
import requests import requests
from ..tasks import send_wechatmsgs,send_wechatmsg,yjjs,gettime,yjjs_px,yjjs_yl,updateTzzs,updateAqzs from ..tasks import send_wechatmsgs,send_wechatmsg,yjjs,gettime,yjjs_px,yjjs_yl,updateTzzs,updateAqzs
from ..export import exportdoc,exportxlsx,exportyjdoc,exportsimplexlsx,exportdoc2 from ..export import exportdoc,exportxlsx,exportyjdoc,exportsimplexlsx,exportdoc2
from ..daoru import drusers,drequipments,drrisks from ..daoru import drusers,drequipments,drrisks, makeqr_
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from ..safespider import getTzzs,getAqzs from ..safespider import getTzzs,getAqzs
#from duibiao import calsim #from duibiao import calsim
@ -71,7 +71,8 @@ def api(req):
obj.publisdate=data['publisdate'] obj.publisdate=data['publisdate']
obj.usecomp=Partment.objects.get(partid=companyid) obj.usecomp=Partment.objects.get(partid=companyid)
obj.createuser=User.objects.get(userid=userid) obj.createuser=User.objects.get(userid=userid)
obj.qrcode = makeqr_(
'https://safeyun.ctcshe.com/miniprogram/mgt?id='+str(obj.id))
obj.save() obj.save()
return JsonResponse({"code":1}) return JsonResponse({"code":1})

View File

@ -1306,6 +1306,7 @@ class Mgtsystem(models.Model):
publisdate = models.DateTimeField(default = timezone.now) publisdate = models.DateTimeField(default = timezone.now)
createuser = models.ForeignKey(User,on_delete=models.CASCADE) createuser = models.ForeignKey(User,on_delete=models.CASCADE)
deletemark = models.IntegerField(default=1) deletemark = models.IntegerField(default=1)
qrcode = models.CharField(max_length=200, blank=True, null=True) # 管理制度二维码
@ -1322,7 +1323,8 @@ class Resbility(models.Model):
usecomp = models.ForeignKey(Partment,related_name='resbgs',on_delete=models.CASCADE,null=True,blank=True)#所属公司 usecomp = models.ForeignKey(Partment,related_name='resbgs',on_delete=models.CASCADE,null=True,blank=True)#所属公司
deletemark = models.IntegerField(default=1)#是否删除 deletemark = models.IntegerField(default=1)#是否删除
filepath=models.CharField(max_length=200,null=True,blank=True) filepath=models.CharField(max_length=200,null=True,blank=True)
reads = models.IntegerField(default='0') reads = models.IntegerField(default=0)
qrcode = models.CharField(max_length=200, blank=True, null=True) # 责任制度二维码
#操作规程 #操作规程
class Operproce(models.Model): class Operproce(models.Model):
id = models.AutoField(primary_key=True)#主键 id = models.AutoField(primary_key=True)#主键
@ -1337,6 +1339,7 @@ class Operproce(models.Model):
deletemark = models.IntegerField(default=1)#是否删除 deletemark = models.IntegerField(default=1)#是否删除
filepath=models.CharField(max_length=200,null=True,blank=True) filepath=models.CharField(max_length=200,null=True,blank=True)
reads = models.IntegerField(default='0') reads = models.IntegerField(default='0')
qrcode = models.CharField(max_length=200, blank=True, null=True) # 操作规程二维码
#责任阅读表 #责任阅读表
class Readerblility(models.Model): class Readerblility(models.Model):
readid = models.ForeignKey(Resbility, on_delete=models.CASCADE)#主键 readid = models.ForeignKey(Resbility, on_delete=models.CASCADE)#主键

View File

@ -182,6 +182,7 @@ urlpatterns = [
path('gchandle',views.gchandle), path('gchandle',views.gchandle),
path('menutree',views.menutree), path('menutree',views.menutree),
path('setup',views.setup), path('setup',views.setup),
path('api/login', views.apilogin),
path('api/company',views.apicompany), path('api/company',views.apicompany),
path('drapi',views.drapi), path('drapi',views.drapi),
path('api/miss',views.apimiss), path('api/miss',views.apimiss),

View File

@ -144,18 +144,22 @@ def check_session(req):
# 存储文件 # 存储文件
@apicheck_login
def upfile(req): def upfile(req):
username = User.objects.get(userid=req.session['userid']).username username = User.objects.get(userid=req.session['userid']).username
try:
upfile = req.FILES['upfile']
except KeyError:
return JsonResponse({"code": 0, "msg": "未获取到文件"})
file_name = (time.strftime('%Y%m%d%H%M%S') + '_' + file_name = (time.strftime('%Y%m%d%H%M%S') + '_' +
req.FILES['upfile'].name).replace('#', '') upfile.name).replace('#', '')
user_upload_folder = os.path.join('media', username) user_upload_folder = os.path.join('media', username)
if not os.path.exists(user_upload_folder): if not os.path.exists(user_upload_folder):
os.mkdir(user_upload_folder) os.mkdir(user_upload_folder)
filepath = os.path.join(user_upload_folder, file_name) filepath = os.path.join(user_upload_folder, file_name)
filepath = filepath.replace('\\', '/') filepath = filepath.replace('\\', '/')
with open(filepath, 'wb') as f: with open(filepath, 'wb') as f:
f.write(req.FILES['upfile'].read()) f.write(upfile.read())
return JsonResponse({"code": 1, "filename": file_name, "filepath": filepath}) return JsonResponse({"code": 1, "filename": file_name, "filepath": filepath})
# html页面 # html页面
@ -663,7 +667,26 @@ def init_permission(user,req):
}) })
req.session['permissions'] = permission_dict req.session['permissions'] = permission_dict
def apilogin(req):
"""
json登录
"""
data = json.loads(req.body.decode('utf-8'))
username = data['username']
password = data['password']
user = User.objects.filter(username=username, deletemark=1, usecomp__enabled=True)
if user.exists():
if check_password(password, user[0].epassword):
req.session['userid'] = user[0].userid
req.session.set_expiry(60*40)
init_permission(user[0],req)
return JsonResponse({'code':1})
else:
msg = '密码错误'
return JsonResponse({'code':0, 'msg':msg})
else:
msg = '用户不存在或被禁用'
return JsonResponse({'code':0, 'msg':msg})
def login(req): def login(req):
if req.session.get('userid', None): if req.session.get('userid', None):
@ -1988,7 +2011,7 @@ def grouphandle(req):
else: else:
return JsonResponse({"code": 0}) return JsonResponse({"code": 0})
@apicheck_login
def troublehandle(req): def troublehandle(req):
a = req.GET.get('a') a = req.GET.get('a')
if a == 'detail': if a == 'detail':
@ -4448,9 +4471,9 @@ def apisafecert(req):
return HttpResponse(transjson(total, a), content_type="application/json") return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself': elif a == 'listself':
userid = req.session['userid'] userid = req.session['userid']
cardnum = Userprofile.objects.get(user__userid=userid).cardnum # cardnum = Userprofile.objects.get(user__userid=userid).cardnum
a = Safecert.objects.filter( a = Safecert.objects.filter(
cardnum=cardnum).order_by('id') # 无deletemark user__userid=userid).order_by('id') # 无deletemark
total = a.count() total = a.count()
if req.GET.get('sort'): if req.GET.get('sort'):
a = a.order_by(req.GET.get('sort')) a = a.order_by(req.GET.get('sort'))
@ -5488,6 +5511,7 @@ def apinotice(req):
@transaction.atomic @transaction.atomic
def apioperation(req): def apioperation(req):
a = req.GET.get('a') a = req.GET.get('a')
logger.info(req.get_full_path())
userid = req.session['userid'] userid = req.session['userid']
if a == 'add': if a == 'add':
userid = req.session['userid'] userid = req.session['userid']
@ -7015,36 +7039,36 @@ def apiexamtestrate(req):
i['totaluser'] = usersattend.count() i['totaluser'] = usersattend.count()
i['avgscore'] = round(i['avgscore'],1) i['avgscore'] = round(i['avgscore'],1)
with open('ratedata.dat','wb') as f: with open('ratedata.dat','wb') as f:
pickle.dump({'total':total,'rows':objslist,'rows2':orgsCallist,'updatetime':datetime.now().strftime('%Y-%m-%d %H:%M')},f) pickle.dump({'total':total,'rows':objslist,'rows2':orgsCallist,'updatetime':'2020-03-01 10:00'},f)
from openpyxl import Workbook, load_workbook # from openpyxl import Workbook, load_workbook
wb = load_workbook('e:/个人总排名.xlsx') # wb = load_workbook('e:/个人总排名.xlsx')
sheet = wb.active # sheet = wb.active
for i in objslist: # for i in objslist:
num = str(objslist.index(i)+3) # num = str(objslist.index(i)+3)
sheet['a'+num] = i['user__name'] # sheet['a'+num] = i['user__name']
sheet['b'+num] = i['user__ubelongpart__partname'] # sheet['b'+num] = i['user__ubelongpart__partname']
sheet['c'+num] = i['testnum'] # sheet['c'+num] = i['testnum']
sheet['d'+num] = i['totalscore'] # sheet['d'+num] = i['totalscore']
sheet['e'+num] = convertseconds(i['totaltook']) # sheet['e'+num] = convertseconds(i['totaltook'])
nowtime = datetime.now().strftime('%Y%m%d') # nowtime = datetime.now().strftime('%Y%m%d')
sheet['b1'] = nowtime # sheet['b1'] = nowtime
filename = '个人总排名' + nowtime # filename = '个人总排名' + nowtime
filepath = 'e:/' + filename +'.xlsx' # filepath = 'e:/' + filename +'.xlsx'
wb.save(filepath) # wb.save(filepath)
wb2 = load_workbook('e:/机构总排名.xlsx') # wb2 = load_workbook('e:/机构总排名.xlsx')
sheet = wb2.active # sheet = wb2.active
for i in orgsCallist: # for i in orgsCallist:
num = str(orgsCallist.index(i)+3) # num = str(orgsCallist.index(i)+3)
sheet['a'+num] = i['user__ubelongpart__partname'] # sheet['a'+num] = i['user__ubelongpart__partname']
sheet['b'+num] = i['totaluser'] # sheet['b'+num] = i['totaluser']
sheet['c'+num] = i['totaltest'] # sheet['c'+num] = i['totaltest']
sheet['d'+num] = i['avgscore'] # sheet['d'+num] = i['avgscore']
nowtime = datetime.now().strftime('%Y%m%d') # nowtime = datetime.now().strftime('%Y%m%d')
sheet['b1'] = nowtime # sheet['b1'] = nowtime
filename = '机构总排名' + nowtime # filename = '机构总排名' + nowtime
filepath = 'e:/' + filename +'.xlsx' # filepath = 'e:/' + filename +'.xlsx'
wb2.save(filepath) # wb2.save(filepath)
return JsonResponse({"code": 1}) return JsonResponse({"code": 1})
@ -8599,6 +8623,7 @@ def equipmentfig(req):
#责任制 #责任制
@apicheck_login
def getresbilitydata(req): def getresbilitydata(req):
a = req.GET.get('a') a = req.GET.get('a')
userid = req.session['userid'] userid = req.session['userid']
@ -8695,6 +8720,7 @@ def getresbilitydata(req):
#操作规程 #操作规程
@apicheck_login
def getprodata(req): def getprodata(req):
a = req.GET.get('a') a = req.GET.get('a')
userid = req.session['userid'] userid = req.session['userid']
@ -8785,6 +8811,7 @@ def getprodata(req):
a = ReaderOperproce.objects.filter(readid=id).values('id','readeruser__name','readertime') a = ReaderOperproce.objects.filter(readid=id).values('id','readeruser__name','readertime')
total = a.count() total = a.count()
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
def checkprojects(req): def checkprojects(req):
a = req.GET.get('a') a = req.GET.get('a')
userid = req.session['userid'] userid = req.session['userid']

40
ssl证书/ctcshe.com.crt Normal file
View File

@ -0,0 +1,40 @@
-----BEGIN CERTIFICATE-----
MIIG+DCCBeCgAwIBAgIQORiViTRLGZHnMRemVq6ndTANBgkqhkiG9w0BAQsFADBE
MQswCQYDVQQGEwJDTjEaMBgGA1UECgwRV29TaWduIENBIExpbWl0ZWQxGTAXBgNV
BAMMEFdvU2lnbiBEViBTU0wgQ0EwHhcNMTgwNTA3MDQwMTEyWhcNMTkwNTA3MDQw
MTEyWjAiMQswCQYDVQQGEwJDTjETMBEGA1UEAwwKY3Rjc2hlLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALYdcmn2kUtF9itKvgMiNYVHgXpjCZLG
/hpn+VB00wlvr9fpr2t9qKQ9gnHmjaDCheCT6w8D9uDRLn/LigkVUfVhLr9fy2E+
rPswcPfHizMIQI0BYs7OZCfrH5EGuejvc15CM48uLkH+qFheI9ZfCsKICBQ/BXxP
WLH9ZLTPcy7OVDokZsUWNzUAU331UcdgiFXo9G+gKUfIlqbsUJLBeypD0czcdsJO
bjXe3QeQmmnIUUVH9vvTuWf3HbJAbP4TAYyPMzSBuBt8aSVyzEfYeCfCxyZqRcyA
BwnCNRnjPA5xOMHZT0C4QjnhjFVj0H0t5L+Au3ds11KAiO+/BEdcHu8CAwEAAaOC
BAYwggQCMAwGA1UdEwEB/wQCMAAwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL3dv
c2lnbi5jcmwuY2VydHVtLnBsL3dvc2lnbi1kdmNhLmNybDB3BggrBgEFBQcBAQRr
MGkwLgYIKwYBBQUHMAGGImh0dHA6Ly93b3NpZ24tZHZjYS5vY3NwLWNlcnR1bS5j
b20wNwYIKwYBBQUHMAKGK2h0dHA6Ly9yZXBvc2l0b3J5LmNlcnR1bS5wbC93b3Np
Z24tZHZjYS5jZXIwHwYDVR0jBBgwFoAUypuNLkRQQorZAmUyGp6A84gEKrUwHQYD
VR0OBBYEFN7UfqVFqxsyV7XFrztS/ByLfYtQMA4GA1UdDwEB/wQEAwIFoDCCASAG
A1UdIASCARcwggETMAgGBmeBDAECATCCAQUGDCqEaAGG9ncCBQEPAzCB9DCB8QYI
KwYBBQUHAgIwgeQwHxYYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMAMCAQEagcBV
c2FnZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN0cmljdGx5IHN1YmplY3RlZCB0
byB0aGUgQ0VSVFVNIENlcnRpZmljYXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IChD
UFMpIGluY29ycG9yYXRlZCBieSByZWZlcmVuY2UgaGVyZWluIGFuZCBpbiB0aGUg
cmVwb3NpdG9yeSBhdCBodHRwczovL3d3dy5jZXJ0dW0ucGwvcmVwb3NpdG9yeS4w
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCUGA1UdEQQeMByCCmN0Y3No
ZS5jb22CDnd3dy5jdGNzaGUuY29tMIIBfwYKKwYBBAHWeQIEAgSCAW8EggFrAWkA
dgCkuQmQtBhYFIe7E6LMZ3AKPDWYBPkb37jjd80OyA3cEAAAAWM4vmW0AAAEAwBH
MEUCIGwokcf31c7dBmdrXqzfKYMhRh3YipleM4upC5qA5v+iAiEAtFFDw0rpRELA
DUld8W7tEiowQxBkdrgvAH8C+baQxIIAdgDuS723dc5guuFCaR+r4Z5mow9+X7By
2IMAxHuJeqj9ywAAAWM4vmNKAAAEAwBHMEUCIQCT4RodP2ykt9JWc1zaXb/0WVHV
Clsam2EGuJ5y1yPd/wIgB1m9csxrjQCNMtWgicuZDsiOgcdoF0n5bVEGNEkFsn8A
dwDd6x0reg1PpiCLga2BaHB+Lo6dAdVciI09EcTNtuy+zAAAAWM4vmSiAAAEAwBI
MEYCIQDLS+g4ybNBMhfgbQu3dhHbiNa9MvWGtsCjHV1wJtrpxgIhAJKn5HNLuahO
dkn44CP4t821ISPX/5ia5H+sCgkQJcasMA0GCSqGSIb3DQEBCwUAA4IBAQAszqhe
hbnFECcgGLUUOYmq7HBcH/c4DBrxDrcJ/E4xeV2Mg+T+Cq4Ada+yV7OxPE9mOZlQ
6oM77UeHTMUVe8NsoCdvYUki6WlRPg343VRwrB4r5KwAinA3aLRxOzBXEM7hCPdH
vhjb3ET536Ma3WupBiqvUGZwFD2YGht42WPukyf/+UXbpwFTvREaqTqEBDCDIxB5
CwyTQuE2UbTczOLHCUaA/5MvPHcxOd1DH8fqOMX1OZyS9W6TiZBGPNG8pSnOKFQV
sKSKl35c6jqV/ohZrWjxRzuxE1Rlcbl1EHX2tZhp2SX5c7CNIXtpug5uvqBnJMx4
ctTr8V70liDiSHjt
-----END CERTIFICATE-----

19
ssl证书/ctcshe.com.csr Normal file
View File

@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIC/zCCAecCAQAwgagxEzARBgNVBAMMCmN0Y3NoZS5jb20xOTA3BgNVBAoMMOS4
reWbveW7uuadkOajgOmqjOiupOivgembhuWbouiCoeS7veaciemZkOWFrOWPuDEn
MCUGA1UECwwe5a6J5YWo5LiO546v5L+d56eR5a2m56CU56m26ZmiMQswCQYDVQQG
EwJDTjEPMA0GA1UECAwG5YyX5LqsMQ8wDQYDVQQHDAbljJfkuqwwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2HXJp9pFLRfYrSr4DIjWFR4F6YwmSxv4a
Z/lQdNMJb6/X6a9rfaikPYJx5o2gwoXgk+sPA/bg0S5/y4oJFVH1YS6/X8thPqz7
MHD3x4szCECNAWLOzmQn6x+RBrno73NeQjOPLi5B/qhYXiPWXwrCiAgUPwV8T1ix
/WS0z3MuzlQ6JGbFFjc1AFN99VHHYIhV6PRvoClHyJam7FCSwXsqQ9HM3HbCTm41
3t0HkJppyFFFR/b707ln9x2yQGz+EwGMjzM0gbgbfGklcsxH2HgnwscmakXMgAcJ
wjUZ4zwOcTjB2U9AuEI54YxVY9B9LeS/gLt3bNdSgIjvvwRHXB7vAgMBAAGgETAP
BgkqhkiG9w0BCQ4xAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCDUa2ZGCZDcE2oYsXp
pddM9R4fasFBesZRJdKyXe6oo6zM6vbUAzMNkTillTQaCMQmrv8Eu//8A5MjvdsZ
r4ldZrX7UAX/4LE7pDcK7iBDlMIB0FyiNxDDAgFJ9I+wReXM2fSmlYuuhgIFcNaI
G3WMjoF5KLvCQOFZavi+9P8q/weQM0lChSVvzPo5Zqh8wv66sWmRXKmnlN8PAkJV
L0oku0c5xyFli827rGqcBvt/aUebcRvdjxGr2tylRH8c7uY0nQ07mzbe8cmMbVEE
o6Rf5abr5SU55gZfACNJzJ3tGnrMESH3pSBLKDbmDHIA33c6exI9FOTIJB2lw33u
LqXH
-----END CERTIFICATE REQUEST-----

27
ssl证书/ctcshe.com.key Normal file
View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAth1yafaRS0X2K0q+AyI1hUeBemMJksb+Gmf5UHTTCW+v1+mv
a32opD2CceaNoMKF4JPrDwP24NEuf8uKCRVR9WEuv1/LYT6s+zBw98eLMwhAjQFi
zs5kJ+sfkQa56O9zXkIzjy4uQf6oWF4j1l8KwogIFD8FfE9Ysf1ktM9zLs5UOiRm
xRY3NQBTffVRx2CIVej0b6ApR8iWpuxQksF7KkPRzNx2wk5uNd7dB5CaachRRUf2
+9O5Z/cdskBs/hMBjI8zNIG4G3xpJXLMR9h4J8LHJmpFzIAHCcI1GeM8DnE4wdlP
QLhCOeGMVWPQfS3kv4C7d2zXUoCI778ER1we7wIDAQABAoIBACYonWSeiWsgSahg
jNfTPyuiA/tE7SiYEX4u8wpssBt2D35KNLttJPzk9oQvLtXUbIDV/Zaz2fLZYcjd
ORsWIIotxsHKrK6/lzc6uzDv2rbir8Pb2nxCurGyjnaw1ht8sMu7S1pg7shdN6Ds
eM3eND72idrUKa4WYhtJYOSR4yyXLD+Lpf+KVIgFR4Qz1b46SEb5GKd5YPVIywrm
Xq3Su3bvWLrhh+zjL4x01P/onoPgAZnS/m44bHkL/K5X1MiyY/42RpOp8u04MsWZ
Oc38yq3MaKj7cBTGKAvTjofNAoEnBfn/uH+KIMkkBFZWRv2slr9ps4i5OGGbL7AQ
9gepMGECgYEA6gWmiTF/71GWq025nliRsTrxZbXD0/teaCN1UPWBxMI3IHO8Ek5Z
ZaZKvOR5ws8LFUKaxkgOcIzLJyaPIGvcNx3DussbIYwOyKTJxgK0RovIl9wBii+C
hLjUIPRB1OeASkmDTTTTIuKhpjYfLRL3a0JkW89N0YB1233mIPCOA/sCgYEAxzfZ
aL1qNVnfChJXs/2vLPyqdW+gEoIluFNEHLFuXpsnBbhiohPaQSqab9bGCY6vtazV
wHODKkE//YMIad4RRN22k3HRP//liUcXjILpa4CNalMOtOXg29aRRO2P6RaB1oOQ
f8kuHugzC5ZO53+fUAcOvzXwno/6/l4S8HOtqp0CgYEAzPzSGY5wX/L5pWfZ1agD
Rlk5JjyHImInGdUlaBsE5pKwsw5tiSN0DyQQh1Eijs/JB4BmDpUDgPby5IJUELQq
G2VJE4/hXgtOz9X4oCeyPbEnrk2aU662BwfXWF5cY9+8clXeW3yQDRizO+JggJ0C
eMOZIQp/Qanikra/I89Sto0CgYAvY+O9/MEVK+nY1YAzevd+9iP+h61GedtLO9OK
F9Mvgi0IOVKNR7e1pNLUI/08LMszpoe6nj/nf1ofjlokBQWKoktaS8sBNHh/7X92
l3W7cvsw/c0Tz1NsOGCaSwDe69G7G9T18P+drpLmAL2IaF2XhfZGGijBL3L/q5VJ
ydrYKQKBgHdoVpHWdhKlZEyaHU3H6wdWiXpKjGSP985bUX2pNwtCtym/8vd1YAnA
/hKge5uJP+vUQN2/R9VfyvSzaVDG0077tZK6Skuae8w8IH9ZvkhG9EAIvafxSjQp
scD55oIv5oeojIiZRI0pru27uJJ1D1KTlpbt3eivLOU4h0Q8IptS
-----END RSA PRIVATE KEY-----

56
ssl证书/root_bundle.crt Normal file
View File

@ -0,0 +1,56 @@
-----BEGIN CERTIFICATE-----
MIIEtTCCA52gAwIBAgIRAOIaIRqokeLTVFn/020nxCYwDQYJKoZIhvcNAQELBQAw
fjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAG
A1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTAeFw0xNzA1MTgwNzQ2MTRa
Fw0yNzA1MTgwNzQ2MTRaMEQxCzAJBgNVBAYTAkNOMRowGAYDVQQKDBFXb1NpZ24g
Q0EgTGltaXRlZDEZMBcGA1UEAwwQV29TaWduIERWIFNTTCBDQTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMhQeIUezKdIBlpnoWm0+HG5nu8859lksQEG
OIeNiayAqhlxG5b4+wVEJ8DmCP77qDOoKVjW5owTIvZHc4F2MEqTOt6/XL3+P6an
bKdPN5/nhKghN+45ywgFYn1AcI5kYdPFQmNfNYGC3jaHISHttC2xz8NQHyHRI3sy
g3hkPdyNeLC+4rTOLs5SYZT+vHr3biOipBO5n68A0Ho86RQ6d0RmBRArAJskD+U/
Qco3F2pl7T0CDOuCXZ/ld3Ga7Bvb1G/lAbM/cEr6endnaLaHmI+6gYWRZVqOELVi
T9dkYnpspHxtcgsVUl1lFf3GSfWAX/Jvnd3IstCa9E3dmAWm8IUCAwEAAaOCAWYw
ggFiMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMqbjS5EUEKK2QJlMhqe
gPOIBCq1MB8GA1UdIwQYMBaAFAh2zcsH/yT2xc3tu5C84oQ3RnX3MA4GA1UdDwEB
/wQEAwIBBjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0fBC4w
LDAqoCigJoYkaHR0cDovL3N1YmNhLmNybC5jZXJ0dW0ucGwvY3RuY2EuY3JsMGsG
CCsGAQUFBwEBBF8wXTAoBggrBgEFBQcwAYYcaHR0cDovL3N1YmNhLm9jc3AtY2Vy
dHVtLmNvbTAxBggrBgEFBQcwAoYlaHR0cDovL3JlcG9zaXRvcnkuY2VydHVtLnBs
L2N0bmNhLmNlcjA5BgNVHSAEMjAwMC4GBFUdIAAwJjAkBggrBgEFBQcCARYYaHR0
cDovL3d3dy5jZXJ0dW0ucGwvQ1BTMA0GCSqGSIb3DQEBCwUAA4IBAQAAn17fM+SE
dRJdtuP6BtLY4kfJu/xPVpFlTpl1Wq2GlzSOBWEIvqsrvSz141D5mmPZ1hqMIdbn
4uq0sC48tAD3Mi18RLbfitm3o0tjYxsbI27tltVMbvyld/k3JOyj0wVljju9fDHc
yIK6akmE/C6UDLtqvRAx0m7xc5z+YIJRabXi33x4AmV7HTyVs6Lm6AGb+KqaJzDd
X9Qqj24EuP/noicvKYP9g9Uf6aGPB5TWliIoEpJWz6qD/PophMB4nuj3ccO0LMJ+
k5QFRWs2hZmev1M8hpqBoMwpoG/jy5AOwntqRqRsSkbR+6tZ3aCWKU1hNnkZcfHJ
11ozB0OSfC7K
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEtDCCA5ygAwIBAgIRAJOShUABZXFflH8oj+/JmygwDQYJKoZIhvcNAQELBQAw
PjELMAkGA1UEBhMCUEwxGzAZBgNVBAoTElVuaXpldG8gU3AuIHogby5vLjESMBAG
A1UEAxMJQ2VydHVtIENBMB4XDTA4MTAyMjEyMDczN1oXDTI3MDYxMDEwNDYzOVow
fjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAG
A1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAOP7faNyusLwyRSH9WsBTuFuQAe6bSddf/dbLbNax1Ff
q6QypmGHtm4PhtIwApf412lXoRg5XWpkecYBWaw8MUo4fNIE0kso6CBfOweizE1z
2/OuT8dW1Vqnlon686to1COGWSfPCSe8rG5ygxwwct/gounS4XR1Gb0qnnsVVAQb
10M5rVUoxeIau/TA5K44STPMdoWfOUXSpJ7yEoxR+HzkLX/1rF/rFp+xLdG6zJFC
d0wlyZA4b9vwzPuOHpdZPtVgTuYFKO1JeRNLukjbL/ly0znK/h/YNHL1tEDPMQHD
7N4RLRddH7hQ0V4Zp2neBzMoylCV+adUy1SGUEWp+UkCAwEAAaOCAWswggFnMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAh2zcsH/yT2xc3tu5C84oQ3RnX3MFIG
A1UdIwRLMEmhQqRAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNw
LiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQYIDAQAgMA4GA1UdDwEB/wQEAwIB
BjAsBgNVHR8EJTAjMCGgH6AdhhtodHRwOi8vY3JsLmNlcnR1bS5wbC9jYS5jcmww
aAYIKwYBBQUHAQEEXDBaMCgGCCsGAQUFBzABhhxodHRwOi8vc3ViY2Eub2NzcC1j
ZXJ0dW0uY29tMC4GCCsGAQUFBzAChiJodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0u
cGwvY2EuY2VyMDkGA1UdIAQyMDAwLgYEVR0gADAmMCQGCCsGAQUFBwIBFhhodHRw
Oi8vd3d3LmNlcnR1bS5wbC9DUFMwDQYJKoZIhvcNAQELBQADggEBAI3m/UBmo0yc
p6uh2oTdHDAH5tvHLeyDoVbkHTwmoaUJK+h9Yr6ydZTdCPJ/KEHkgGcCToqPwzXQ
1aknKOrS9KsGhkOujOP5iH3g271CgYACEnWy6BdxqyGVMUZCDYgQOdNv7C9C6kBT
Yr/rynieq6LVLgXqM6vp1peUQl4E7Sztapx6lX0FKgV/CF1mrWHUdqx1lpdzY70a
QVkppV4ig8OLWfqaova9ML9yHRyZhpzyhTwd9yaWLy75ArG1qVDoOPqbCl60BMDO
TjksygtbYvBNWFA0meaaLNKQ1wmB1sCqXs7+0vehukvZ1oaOGR+mBkdCcuBWCgAc
eLmNzJkEN0k=
-----END CERTIFICATE-----