mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-18 23:45:52 +08:00
面板设置功能ok
1.关闭面板 2.ipv6监听 3.面板ssl
This commit is contained in:
@@ -118,3 +118,4 @@ data/json/config.json
|
|||||||
data/site.pl
|
data/site.pl
|
||||||
data/admin_path.pl
|
data/admin_path.pl
|
||||||
data/close.pl
|
data/close.pl
|
||||||
|
ssl/input.pl
|
||||||
|
|||||||
@@ -144,12 +144,93 @@ class config_api:
|
|||||||
public.execShell("chown root.root " + filename)
|
public.execShell("chown root.root " + filename)
|
||||||
return public.returnJson(True, '面板已关闭!')
|
return public.returnJson(True, '面板已关闭!')
|
||||||
|
|
||||||
|
def setIpv6StatusApi(self):
|
||||||
|
ipv6_file = 'data/ipv6.pl'
|
||||||
|
if os.path.exists('data/ipv6.pl'):
|
||||||
|
os.remove(ipv6_file)
|
||||||
|
public.writeLog('面板设置', '关闭面板IPv6兼容!')
|
||||||
|
else:
|
||||||
|
public.writeFile(ipv6_file, 'True')
|
||||||
|
public.writeLog('面板设置', '开启面板IPv6兼容!')
|
||||||
|
public.restartMw()
|
||||||
|
return public.returnJson(True, '设置成功!')
|
||||||
|
|
||||||
|
# 获取面板证书
|
||||||
|
def getPanelSslApi(self):
|
||||||
|
cert = {}
|
||||||
|
cert['privateKey'] = public.readFile('ssl/privateKey.pem')
|
||||||
|
cert['certPem'] = public.readFile('ssl/certificate.pem')
|
||||||
|
cert['rep'] = os.path.exists('ssl/input.pl')
|
||||||
|
return public.getJson(cert)
|
||||||
|
|
||||||
|
# 保存面板证书
|
||||||
|
def savePanelSslApi(self):
|
||||||
|
keyPath = 'ssl/privateKey.pem'
|
||||||
|
certPath = 'ssl/certificate.pem'
|
||||||
|
checkCert = '/tmp/cert.pl'
|
||||||
|
|
||||||
|
certPem = request.form.get('certPem', '').strip()
|
||||||
|
privateKey = request.form.get('privateKey', '').strip()
|
||||||
|
|
||||||
|
public.writeFile(checkCert, certPem)
|
||||||
|
if privateKey:
|
||||||
|
public.writeFile(keyPath, privateKey)
|
||||||
|
if certPem:
|
||||||
|
public.writeFile(certPath, certPem)
|
||||||
|
if not public.checkCert(checkCert):
|
||||||
|
return public.returnJson(False, '证书错误,请检查!')
|
||||||
|
public.writeFile('ssl/input.pl', 'True')
|
||||||
|
return public.returnJson(True, '证书已保存!')
|
||||||
|
|
||||||
|
# 设置面板SSL
|
||||||
|
def setPanelSslApi(self):
|
||||||
|
sslConf = public.getRunDir() + '/data/ssl.pl'
|
||||||
|
if os.path.exists(sslConf):
|
||||||
|
os.system('rm -f ' + sslConf)
|
||||||
|
return public.returnJson(True, 'SSL已关闭,请使用http协议访问面板!')
|
||||||
|
else:
|
||||||
|
os.system('pip install cffi==1.10')
|
||||||
|
os.system('pip install cryptography==2.1')
|
||||||
|
os.system('pip install pyOpenSSL==16.2')
|
||||||
|
try:
|
||||||
|
if not self.createSSL():
|
||||||
|
return public.returnJson(False, '开启失败,无法自动安装pyOpenSSL组件!<p>请尝试手动安装: pip install pyOpenSSL</p>')
|
||||||
|
public.writeFile(sslConf, 'True')
|
||||||
|
except Exception as ex:
|
||||||
|
return public.returnJson(False, '开启失败,无法自动安装pyOpenSSL组件!<p>请尝试手动安装: pip install pyOpenSSL</p>')
|
||||||
|
return public.returnJson(True, '开启成功,请使用https协议访问面板!')
|
||||||
|
|
||||||
def getApi(self):
|
def getApi(self):
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
return public.getJson(data)
|
return public.getJson(data)
|
||||||
##### ----- end ----- ###
|
##### ----- end ----- ###
|
||||||
|
|
||||||
|
# 自签证书
|
||||||
|
def createSSL(self):
|
||||||
|
if os.path.exists('ssl/input.pl'):
|
||||||
|
return True
|
||||||
|
import OpenSSL
|
||||||
|
key = OpenSSL.crypto.PKey()
|
||||||
|
key.generate_key(OpenSSL.crypto.TYPE_RSA, 2048)
|
||||||
|
cert = OpenSSL.crypto.X509()
|
||||||
|
cert.set_serial_number(0)
|
||||||
|
cert.get_subject().CN = '120.27.27.98'
|
||||||
|
cert.set_issuer(cert.get_subject())
|
||||||
|
cert.gmtime_adj_notBefore(0)
|
||||||
|
cert.gmtime_adj_notAfter(86400 * 3650)
|
||||||
|
cert.set_pubkey(key)
|
||||||
|
cert.sign(key, 'md5')
|
||||||
|
cert_ca = OpenSSL.crypto.dump_certificate(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM, cert)
|
||||||
|
private_key = OpenSSL.crypto.dump_privatekey(
|
||||||
|
OpenSSL.crypto.FILETYPE_PEM, key)
|
||||||
|
if len(cert_ca) > 100 and len(private_key) > 100:
|
||||||
|
public.writeFile('ssl/certificate.pem', cert_ca)
|
||||||
|
public.writeFile('ssl/privateKey.pem', private_key)
|
||||||
|
print cert_ca, private_key
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def getVersion(self):
|
def getVersion(self):
|
||||||
return self.__version
|
return self.__version
|
||||||
|
|
||||||
@@ -171,6 +252,18 @@ class config_api:
|
|||||||
else:
|
else:
|
||||||
data['admin_path'] = public.readFile(admin_path_file)
|
data['admin_path'] = public.readFile(admin_path_file)
|
||||||
|
|
||||||
|
ipv6_file = 'data/ipv6.pl'
|
||||||
|
if os.path.exists('data/ipv6.pl'):
|
||||||
|
data['ipv6'] = 'checked'
|
||||||
|
else:
|
||||||
|
data['ipv6'] = ''
|
||||||
|
|
||||||
|
ssl_file = 'data/ssl.pl'
|
||||||
|
if os.path.exists('data/ssl.pl'):
|
||||||
|
data['ssl'] = 'checked'
|
||||||
|
else:
|
||||||
|
data['ssl'] = ''
|
||||||
|
|
||||||
data['username'] = public.M('users').where(
|
data['username'] = public.M('users').where(
|
||||||
"id=?", (1,)).getField('username')
|
"id=?", (1,)).getField('username')
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
True
|
||||||
+3
-4
@@ -191,10 +191,9 @@ def doLogin():
|
|||||||
@app.route('/<reqClass>', methods=['POST', 'GET'])
|
@app.route('/<reqClass>', methods=['POST', 'GET'])
|
||||||
@app.route('/', methods=['POST', 'GET'])
|
@app.route('/', methods=['POST', 'GET'])
|
||||||
def index(reqClass=None, reqAction=None, reqData=None):
|
def index(reqClass=None, reqAction=None, reqData=None):
|
||||||
# comReturn = common.local()
|
comReturn = common.local()
|
||||||
# print comReturn
|
if comReturn:
|
||||||
# if comReturn:
|
return comReturn
|
||||||
# return comReturn
|
|
||||||
|
|
||||||
if (reqClass == None):
|
if (reqClass == None):
|
||||||
reqClass = 'index'
|
reqClass = 'index'
|
||||||
|
|||||||
+115
-6
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
$.post('/config/get','',function(rdata){
|
// $.post('/config/get','',function(rdata){
|
||||||
console.log(rdata);
|
// console.log(rdata);
|
||||||
},'json');
|
// },'json');
|
||||||
|
|
||||||
|
|
||||||
$(".set-submit").click(function(){
|
$(".set-submit").click(function(){
|
||||||
@@ -199,8 +199,117 @@ function syncDate(){
|
|||||||
$.post('/config/sync_date','',function(rdata){
|
$.post('/config/sync_date','',function(rdata){
|
||||||
layer.close(loadT);
|
layer.close(loadT);
|
||||||
layer.msg(rdata.msg,{icon:rdata.status?1:2});
|
layer.msg(rdata.msg,{icon:rdata.status?1:2});
|
||||||
setTimeout(function(){
|
setTimeout(function(){window.location.reload();},1500);
|
||||||
window.location.reload();
|
|
||||||
},1500);
|
|
||||||
},'json');
|
},'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setIPv6() {
|
||||||
|
var loadT = layer.msg('正在配置,请稍候...', { icon: 16, time: 0, shade: [0.3, '#000'] });
|
||||||
|
$.post('/config/set_ipv6_status', {}, function (rdata) {
|
||||||
|
layer.close(loadT);
|
||||||
|
layer.msg(rdata.msg, {icon:rdata.status?1:2});
|
||||||
|
setTimeout(function(){window.location.reload();},1500);
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//设置面板SSL
|
||||||
|
function setPanelSSL(){
|
||||||
|
var status = $("#sshswitch").prop("checked")==true?1:0;
|
||||||
|
var msg = $("#panelSSL").attr('checked')?'关闭SSL后,必需使用http协议访问面板,继续吗?':'<a style="font-weight: bolder;font-size: 16px;">危险!此功能不懂别开启!</a>\
|
||||||
|
<li style="margin-top: 12px;color:red;">必须要用到且了解此功能才决定自己是否要开启!</li>\
|
||||||
|
<li>面板SSL是自签证书,不被浏览器信任,显示不安全是正常现象</li>\
|
||||||
|
<li>开启后导致面板不能访问,可以点击下面链接了解解决方法</li>\
|
||||||
|
<p style="margin-top: 10px;">\
|
||||||
|
<input type="checkbox" id="checkSSL" /><label style="font-weight: 400;margin: 3px 5px 0px;" for="checkSSL">我已了经解详情,并愿意承担风险</label>\
|
||||||
|
<a target="_blank" class="btlink" href="https://www.bt.cn/bbs/thread-4689-1-1.html" style="float: right;">了解详情</a>\
|
||||||
|
</p>';
|
||||||
|
layer.confirm(msg,{title:'设置面板SSL',closeBtn:2,icon:3,area:'550px',cancel:function(){
|
||||||
|
if(status == 0){
|
||||||
|
$("#panelSSL").prop("checked",false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$("#panelSSL").prop("checked",true);
|
||||||
|
}
|
||||||
|
}},function(){
|
||||||
|
if(window.location.protocol.indexOf('https') == -1){
|
||||||
|
if(!$("#checkSSL").prop('checked')){
|
||||||
|
layer.msg(lan.config.ssl_ps,{icon:2});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var loadT = layer.msg('正在安装并设置SSL组件,这需要几分钟时间...',{icon:16,time:0,shade: [0.3, '#000']});
|
||||||
|
$.post('/config/set_panel_ssl','',function(rdata){
|
||||||
|
layer.close(loadT);
|
||||||
|
layer.msg(rdata.msg,{icon:rdata.status?1:5});
|
||||||
|
if(rdata.status === true){
|
||||||
|
$.post('/system/restart','',function (rdata) {
|
||||||
|
layer.close(loadT);
|
||||||
|
layer.msg(rdata.msg);
|
||||||
|
setTimeout(function(){
|
||||||
|
window.location.href = ((window.location.protocol.indexOf('https') != -1)?'http://':'https://') + window.location.host + window.location.pathname;
|
||||||
|
},3000);
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
},'json');
|
||||||
|
},function(){
|
||||||
|
if(status == 0){
|
||||||
|
$("#panelSSL").prop("checked",false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$("#panelSSL").prop("checked",true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getPanelSSL(){
|
||||||
|
var loadT = layer.msg('正在获取证书信息...',{icon:16,time:0,shade: [0.3, '#000']});
|
||||||
|
$.post('/config/get_panel_ssl',{},function(cert){
|
||||||
|
layer.close(loadT);
|
||||||
|
var certBody = '<div class="tab-con">\
|
||||||
|
<div class="myKeyCon ptb15">\
|
||||||
|
<div class="ssl-con-key pull-left mr20">密钥(KEY)<br>\
|
||||||
|
<textarea id="key" class="bt-input-text">'+cert.privateKey+'</textarea>\
|
||||||
|
</div>\
|
||||||
|
<div class="ssl-con-key pull-left">证书(PEM格式)<br>\
|
||||||
|
<textarea id="csr" class="bt-input-text">'+cert.certPem+'</textarea>\
|
||||||
|
</div>\
|
||||||
|
<div class="ssl-btn pull-left mtb15" style="width:100%">\
|
||||||
|
<button class="btn btn-success btn-sm" onclick="savePanelSSL()">保存</button>\
|
||||||
|
</div>\
|
||||||
|
</div>\
|
||||||
|
<ul class="help-info-text c7 pull-left">\
|
||||||
|
<li>粘贴您的*.key以及*.pem内容,然后保存即可<a href="http://www.bt.cn/bbs/thread-704-1-1.html" class="btlink" target="_blank">[帮助]</a>。</li>\
|
||||||
|
<li>如果浏览器提示证书链不完整,请检查是否正确拼接PEM证书</li><li>PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt</li>\
|
||||||
|
</ul>\
|
||||||
|
</div>'
|
||||||
|
layer.open({
|
||||||
|
type: 1,
|
||||||
|
area: "600px",
|
||||||
|
title: '自定义面板证书',
|
||||||
|
closeBtn: 2,
|
||||||
|
shift: 5,
|
||||||
|
shadeClose: false,
|
||||||
|
content:certBody
|
||||||
|
});
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function savePanelSSL(){
|
||||||
|
var data = {
|
||||||
|
privateKey:$("#key").val(),
|
||||||
|
certPem:$("#csr").val()
|
||||||
|
}
|
||||||
|
var loadT = layer.msg('正在安装并设置SSL组件,这需要几分钟时间...',{icon:16,time:0,shade: [0.3, '#000']});
|
||||||
|
$.post('/config/save_panel_ssl',data,function(rdata){
|
||||||
|
layer.close(loadT);
|
||||||
|
if(rdata.status){
|
||||||
|
layer.closeAll();
|
||||||
|
}
|
||||||
|
layer.msg(rdata.msg,{icon:rdata.status?1:2});
|
||||||
|
},'json');
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,17 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ss-text pull-left mr50">
|
<div class="ss-text pull-left mr50">
|
||||||
<em class="btlink" style="color: #20a53a;" onclick="GetPanelSSL()" title="点击自定义面板证书">面板SSL</em>
|
<em title="开启后允许使用ipv6访问面板">监听IPv6</em>
|
||||||
<div class='ssh-item'>
|
<div class='ssh-item'>
|
||||||
<input class='btswitch btswitch-ios' id='panelSSL' type='checkbox'>
|
<input class='btswitch btswitch-ios' id='panelIPv6' type='checkbox' {{data['ipv6']}}>
|
||||||
|
<label class='btswitch-btn' for='panelIPv6' onclick="setIPv6()"></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ss-text pull-left mr50">
|
||||||
|
<em class="btlink" style="color: #20a53a;" onclick="getPanelSSL()" title="点击自定义面板证书">面板SSL</em>
|
||||||
|
<div class='ssh-item'>
|
||||||
|
<input class='btswitch btswitch-ios' id='panelSSL' type='checkbox' {{data['ssl']}}>
|
||||||
<label class='btswitch-btn' for='panelSSL' onclick="setPanelSSL()"></label>
|
<label class='btswitch-btn' for='panelSSL' onclick="setPanelSSL()"></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+15
-62
@@ -1,64 +1,17 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
jeT+bba8
|
||||||
FoAUbVjHfxrn4T8upoyXNUK79NM4rD8wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW
|
|
||||||
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjCBmwYIKwYBBQUHAQEEgY4wgYswPAYIKwYB
|
|
||||||
BQUHMAGGMGh0dHA6Ly90cnVzdGFzaWEyLW9jc3AuZGlnaXRhbGNlcnR2YWxpZGF0
|
|
||||||
aW9uLmNvbTBLBggrBgEFBQcwAoY/aHR0cDovL3RydXN0YXNpYTItYWlhLmRpZ2l0
|
|
||||||
YWxjZXJ0dmFsaWRhdGlvbi5jb20vdHJ1c3Rhc2lhZzUuY3J0MIIBAgYKKwYBBAHW
|
|
||||||
eQIEAgSB8wSB8ADuAHUA3esdK3oNT6Ygi4GtgWhwfi6OnQHVXIiNPRHEzbbsvswA
|
|
||||||
AAFd1CGINQAABAMARjBEAiA5wfZjgU0lC7GpY92MIkfh0UcnWvzthnKZ26mQk8NT
|
|
||||||
uQIgHyM5oBCkiQMokVBnKO802YIOup0kUOhhsPlWU4K7PSAAdQCkuQmQtBhYFIe7
|
|
||||||
E6LMZ3AKPDWYBPkb37jjd80OyA3cEAAAAV3UIYh0AAAEAwBGMEQCIAaLUzpQpc0C
|
|
||||||
BAWnnZxsyW23WgcOsbiOP84EltTkR780AiBG3Ywinpkk+0ozGZC6g/cNkTOXQIl5
|
|
||||||
0RXVF04AF/bSljANBgkqhkiG9w0BAQsFAAOCAQEARnZ8z+5zC3vZwBmcK2l7yZ5H
|
|
||||||
A3iQO3DSN+51EeycZ7uUN/A3Hx0/ZjdB7JjlWvohA7SimNw6xQald5mI65bmbDwy
|
|
||||||
ngtTfcZTx32WtbkU5/PiQSvkWMPqB4HJdyiozpdG6hIPZYvC2CqZHRBfgMo7XkQd
|
|
||||||
oj3fW1zBGw79fgqJkcs+9Qx0MGo4BaeBAP8ZSQAfDn/TR8BJFXzHnnk70pTwPKCa
|
|
||||||
EPuL8G/QDMy7+9WJB4t9qTdgxuqLdVSA7B3iGFYsQdR6Bjzbbngjr+OQIVDjij8c
|
|
||||||
a9+Mw5+S7EM2EE3L+nkHeXyB+EynVNWQqw4ASJ/S3u3OPQHkeKj1ppfBXJW7ww==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIFZTCCBE2gAwIBAgIQOhAOfxCeGsWcxf/2QNXkQjANBgkqhkiG9w0BAQsFADCB
|
|
||||||
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
|
|
||||||
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
|
|
||||||
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
|
|
||||||
ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
|
|
||||||
aG9yaXR5IC0gRzUwHhcNMTYwODExMDAwMDAwWhcNMjYwODEwMjM1OTU5WjCBlzEL
|
|
||||||
MAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIElu
|
|
||||||
Yy4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxHTAbBgNVBAsTFERv
|
|
||||||
bWFpbiBWYWxpZGF0ZWQgU1NMMSEwHwYDVQQDExhUcnVzdEFzaWEgRFYgU1NMIENB
|
|
||||||
IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39aSJZG/97x3a
|
|
||||||
6Qmuc9+MubagegRAVUmFYHTYTs8IKB2pM7wXN7W8mekdZaEgUjDFxvRBK/DhTb7U
|
|
||||||
8ONLsKKdT86aOhzbz2noCTn9wPWnGwkg+/4YKg/dPQQdV9tMsSu0cwqInWHxSAkm
|
|
||||||
AI1hYFC9D7Sf7Hp/5cRcD+dK454YMRzNOGLQnCVI8JEqrz6o9SOvQNTqTcfqt6DC
|
|
||||||
0UlXG+MPD1eNPjlzf1Vwaab+VSTgySoC+Ikbq2VsdykeOiGXW/OIiASH7+2LcR05
|
|
||||||
PmQ7GEOlM8yzoVojFpM8sHz+WxI05ZOPri5+vX3HhHHjWr5432G0dVmgohnZvlVZ
|
|
||||||
oy8XrlbpAgMBAAGjggF2MIIBcjASBgNVHRMBAf8ECDAGAQH/AgEAMC8GA1UdHwQo
|
|
||||||
MCYwJKAioCCGHmh0dHA6Ly9zLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAOBgNVHQ8B
|
|
||||||
Af8EBAMCAQYwLgYIKwYBBQUHAQEEIjAgMB4GCCsGAQUFBzABhhJodHRwOi8vcy5z
|
|
||||||
eW1jZC5jb20wYQYDVR0gBFowWDBWBgZngQwBAgEwTDAjBggrBgEFBQcCARYXaHR0
|
|
||||||
cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5
|
|
||||||
bWNiLmNvbS9ycGEwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCkGA1Ud
|
|
||||||
EQQiMCCkHjAcMRowGAYDVQQDExFTeW1hbnRlY1BLSS0yLTYwMTAdBgNVHQ4EFgQU
|
|
||||||
bVjHfxrn4T8upoyXNUK79NM4rD8wHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6
|
|
||||||
Aq8zMTMwDQYJKoZIhvcNAQELBQADggEBABUphhBbeG7scE3EveIN0dOjXPgwgQi8
|
|
||||||
I2ZAKYm6DawoGz1lEJVdvFmkyMbP973X80b7mKmn0nNbe1kjA4M0O0hHaMM1ZaEv
|
|
||||||
7e9vHEAoGyysMO6HzPWYMkyNxcCV7Nos2Uv4RvLDpQHh7P4Kt6fUU13ipcynrtQD
|
|
||||||
1lFUM0yoTzwwFsPu3Pk+94hL58ErqwqJQwxoHMgLIQeMVHeNKcWFy1bddSbIbCWU
|
|
||||||
Zs6cMxhrra062ZCpDCbxyEaFNGAtYQMqNz55Z/14XgSUONZ/cJTns6QKhpcgTOwB
|
|
||||||
fnNzRnk+aWreP7osKhXlz4zs+llP7goBDKFOMMtoEXx3YjJCKgpqmBU=
|
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
+28
-27
@@ -1,27 +1,28 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
-----END RSA PRIVATE KEY-----
|
c4cumeA0lZ2p1hc82ArHxYk=
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
Reference in New Issue
Block a user