diff --git a/doc/1.一般工业固废管理台账和日常记录表 (1).docx b/doc/1.一般工业固废管理台账和日常记录表 (1).docx deleted file mode 100644 index 26b87a8e..00000000 Binary files a/doc/1.一般工业固废管理台账和日常记录表 (1).docx and /dev/null differ diff --git a/doc/2.危废相关台账(1).docx b/doc/2.危废相关台账(1).docx deleted file mode 100644 index 6424a479..00000000 Binary files a/doc/2.危废相关台账(1).docx and /dev/null differ diff --git a/doc/3.污染物排放台账(1).docx b/doc/3.污染物排放台账(1).docx deleted file mode 100644 index 92114c7e..00000000 Binary files a/doc/3.污染物排放台账(1).docx and /dev/null differ diff --git a/doc/个人安全绩效等功能.txt b/doc/个人安全绩效等功能.txt deleted file mode 100644 index 30b147f5..00000000 --- a/doc/个人安全绩效等功能.txt +++ /dev/null @@ -1,3 +0,0 @@ -1.事故隐患界面增加无图片导出excel(支持一次性导出1000条) -2.增加应急预案 -3.安全绩效下的个人安全绩效统计数字可点击链接查看 \ No newline at end of file diff --git a/doc/安全培训系统建议.docx b/doc/安全培训系统建议.docx deleted file mode 100644 index 500a71bb..00000000 Binary files a/doc/安全培训系统建议.docx and /dev/null differ diff --git a/doc/安全清单使用文档.docx b/doc/安全清单使用文档.docx deleted file mode 100644 index 6236f31a..00000000 Binary files a/doc/安全清单使用文档.docx and /dev/null differ diff --git a/doc/惠东需求.xlsx b/doc/惠东需求.xlsx deleted file mode 100644 index 7c09669b..00000000 Binary files a/doc/惠东需求.xlsx and /dev/null differ diff --git a/doc/灰色预测模型.cs b/doc/灰色预测模型.cs deleted file mode 100644 index 341b99ce..00000000 --- a/doc/灰色预测模型.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace YOMIFrameWork.Common -{ - /// - /// 灰色预测 - /// - 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 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); - } - } - -} \ No newline at end of file diff --git a/doc/违章举报使用文档.docx b/doc/违章举报使用文档.docx deleted file mode 100644 index c60719a5..00000000 Binary files a/doc/违章举报使用文档.docx and /dev/null differ diff --git a/doc/隐患跟踪模块使用文档.docx b/doc/隐患跟踪模块使用文档.docx deleted file mode 100644 index 687e546e..00000000 Binary files a/doc/隐患跟踪模块使用文档.docx and /dev/null differ diff --git a/doc/风险管控模块使用文档.docx b/doc/风险管控模块使用文档.docx deleted file mode 100644 index a672d5f7..00000000 Binary files a/doc/风险管控模块使用文档.docx and /dev/null differ diff --git a/safesite/daoru.py b/safesite/daoru.py index 45975c82..d8ef2c48 100644 --- a/safesite/daoru.py +++ b/safesite/daoru.py @@ -65,6 +65,15 @@ def makeqr_safelist(data): img.save(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): wb = load_workbook(path) sheet = wb.worksheets[0] diff --git a/safesite/mgt/views.py b/safesite/mgt/views.py index 51392ae5..e80a9a7e 100644 --- a/safesite/mgt/views.py +++ b/safesite/mgt/views.py @@ -13,7 +13,7 @@ from django.db.models import F,Count,Sum import requests from ..tasks import send_wechatmsgs,send_wechatmsg,yjjs,gettime,yjjs_px,yjjs_yl,updateTzzs,updateAqzs 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 ..safespider import getTzzs,getAqzs #from duibiao import calsim @@ -71,7 +71,8 @@ def api(req): obj.publisdate=data['publisdate'] obj.usecomp=Partment.objects.get(partid=companyid) obj.createuser=User.objects.get(userid=userid) - + obj.qrcode = makeqr_( + 'https://safeyun.ctcshe.com/miniprogram/mgt?id='+str(obj.id)) obj.save() return JsonResponse({"code":1}) diff --git a/safesite/models.py b/safesite/models.py index 1588ce79..ccb24971 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -1306,6 +1306,7 @@ class Mgtsystem(models.Model): publisdate = models.DateTimeField(default = timezone.now) createuser = models.ForeignKey(User,on_delete=models.CASCADE) 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)#所属公司 deletemark = models.IntegerField(default=1)#是否删除 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): id = models.AutoField(primary_key=True)#主键 @@ -1337,6 +1339,7 @@ class Operproce(models.Model): deletemark = models.IntegerField(default=1)#是否删除 filepath=models.CharField(max_length=200,null=True,blank=True) reads = models.IntegerField(default='0') + qrcode = models.CharField(max_length=200, blank=True, null=True) # 操作规程二维码 #责任阅读表 class Readerblility(models.Model): readid = models.ForeignKey(Resbility, on_delete=models.CASCADE)#主键 diff --git a/safesite/urls.py b/safesite/urls.py index e77940ef..d6535459 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -182,6 +182,7 @@ urlpatterns = [ path('gchandle',views.gchandle), path('menutree',views.menutree), path('setup',views.setup), + path('api/login', views.apilogin), path('api/company',views.apicompany), path('drapi',views.drapi), path('api/miss',views.apimiss), diff --git a/safesite/views.py b/safesite/views.py index 382b64b1..8b612b66 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -144,18 +144,22 @@ def check_session(req): # 存储文件 - +@apicheck_login def upfile(req): 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') + '_' + - req.FILES['upfile'].name).replace('#', '号') + upfile.name).replace('#', '号') user_upload_folder = os.path.join('media', username) if not os.path.exists(user_upload_folder): os.mkdir(user_upload_folder) filepath = os.path.join(user_upload_folder, file_name) filepath = filepath.replace('\\', '/') 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}) # html页面 @@ -663,8 +667,27 @@ def init_permission(user,req): }) 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): if req.session.get('userid', None): return redirect('index') @@ -1988,7 +2011,7 @@ def grouphandle(req): else: return JsonResponse({"code": 0}) - +@apicheck_login def troublehandle(req): a = req.GET.get('a') if a == 'detail': @@ -4448,9 +4471,9 @@ def apisafecert(req): return HttpResponse(transjson(total, a), content_type="application/json") elif a == 'listself': userid = req.session['userid'] - cardnum = Userprofile.objects.get(user__userid=userid).cardnum + # cardnum = Userprofile.objects.get(user__userid=userid).cardnum a = Safecert.objects.filter( - cardnum=cardnum).order_by('id') # 无deletemark + user__userid=userid).order_by('id') # 无deletemark total = a.count() if req.GET.get('sort'): a = a.order_by(req.GET.get('sort')) @@ -5488,6 +5511,7 @@ def apinotice(req): @transaction.atomic def apioperation(req): a = req.GET.get('a') + logger.info(req.get_full_path()) userid = req.session['userid'] if a == 'add': userid = req.session['userid'] @@ -7015,36 +7039,36 @@ def apiexamtestrate(req): i['totaluser'] = usersattend.count() i['avgscore'] = round(i['avgscore'],1) 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) - from openpyxl import Workbook, load_workbook - wb = load_workbook('e:/个人总排名.xlsx') - sheet = wb.active - for i in objslist: - num = str(objslist.index(i)+3) - sheet['a'+num] = i['user__name'] - sheet['b'+num] = i['user__ubelongpart__partname'] - sheet['c'+num] = i['testnum'] - sheet['d'+num] = i['totalscore'] - sheet['e'+num] = convertseconds(i['totaltook']) - nowtime = datetime.now().strftime('%Y%m%d') - sheet['b1'] = nowtime - filename = '个人总排名' + nowtime - filepath = 'e:/' + filename +'.xlsx' - wb.save(filepath) + pickle.dump({'total':total,'rows':objslist,'rows2':orgsCallist,'updatetime':'2020-03-01 10:00'},f) + # from openpyxl import Workbook, load_workbook + # wb = load_workbook('e:/个人总排名.xlsx') + # sheet = wb.active + # for i in objslist: + # num = str(objslist.index(i)+3) + # sheet['a'+num] = i['user__name'] + # sheet['b'+num] = i['user__ubelongpart__partname'] + # sheet['c'+num] = i['testnum'] + # sheet['d'+num] = i['totalscore'] + # sheet['e'+num] = convertseconds(i['totaltook']) + # nowtime = datetime.now().strftime('%Y%m%d') + # sheet['b1'] = nowtime + # filename = '个人总排名' + nowtime + # filepath = 'e:/' + filename +'.xlsx' + # wb.save(filepath) - wb2 = load_workbook('e:/机构总排名.xlsx') - sheet = wb2.active - for i in orgsCallist: - num = str(orgsCallist.index(i)+3) - sheet['a'+num] = i['user__ubelongpart__partname'] - sheet['b'+num] = i['totaluser'] - sheet['c'+num] = i['totaltest'] - sheet['d'+num] = i['avgscore'] - nowtime = datetime.now().strftime('%Y%m%d') - sheet['b1'] = nowtime - filename = '机构总排名' + nowtime - filepath = 'e:/' + filename +'.xlsx' - wb2.save(filepath) + # wb2 = load_workbook('e:/机构总排名.xlsx') + # sheet = wb2.active + # for i in orgsCallist: + # num = str(orgsCallist.index(i)+3) + # sheet['a'+num] = i['user__ubelongpart__partname'] + # sheet['b'+num] = i['totaluser'] + # sheet['c'+num] = i['totaltest'] + # sheet['d'+num] = i['avgscore'] + # nowtime = datetime.now().strftime('%Y%m%d') + # sheet['b1'] = nowtime + # filename = '机构总排名' + nowtime + # filepath = 'e:/' + filename +'.xlsx' + # wb2.save(filepath) return JsonResponse({"code": 1}) @@ -8599,6 +8623,7 @@ def equipmentfig(req): #责任制 +@apicheck_login def getresbilitydata(req): a = req.GET.get('a') userid = req.session['userid'] @@ -8695,6 +8720,7 @@ def getresbilitydata(req): #操作规程 +@apicheck_login def getprodata(req): a = req.GET.get('a') userid = req.session['userid'] @@ -8785,6 +8811,7 @@ def getprodata(req): a = ReaderOperproce.objects.filter(readid=id).values('id','readeruser__name','readertime') total = a.count() return HttpResponse(transjson(total,a),content_type="application/json") + def checkprojects(req): a = req.GET.get('a') userid = req.session['userid'] diff --git a/ssl证书/ctcshe.com.crt b/ssl证书/ctcshe.com.crt new file mode 100644 index 00000000..9edcffb5 --- /dev/null +++ b/ssl证书/ctcshe.com.crt @@ -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----- diff --git a/ssl证书/ctcshe.com.csr b/ssl证书/ctcshe.com.csr new file mode 100644 index 00000000..c5f61bb1 --- /dev/null +++ b/ssl证书/ctcshe.com.csr @@ -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----- diff --git a/ssl证书/ctcshe.com.key b/ssl证书/ctcshe.com.key new file mode 100644 index 00000000..40d37a62 --- /dev/null +++ b/ssl证书/ctcshe.com.key @@ -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----- diff --git a/ssl证书/root_bundle.crt b/ssl证书/root_bundle.crt new file mode 100644 index 00000000..be980ad8 --- /dev/null +++ b/ssl证书/root_bundle.crt @@ -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-----