yakuza0 2.21.0 → 2.21.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/nuxt/head.js +64 -0
- package/nuxt/render/csp.js +5 -20
- package/package.json +4 -3
- package/server/proxy/csrf.js +71 -38
- package/utils/csp.js +38 -0
- package/utils/inclusive.js +51 -24
package/nuxt/head.js
CHANGED
|
@@ -28,6 +28,14 @@ var _config2 = _interopRequireDefault(_config);
|
|
|
28
28
|
|
|
29
29
|
var _yakuza = require("yakuza1");
|
|
30
30
|
|
|
31
|
+
var _syncRequest = require("sync-request");
|
|
32
|
+
|
|
33
|
+
var _syncRequest2 = _interopRequireDefault(_syncRequest);
|
|
34
|
+
|
|
35
|
+
var _crypto = require("crypto");
|
|
36
|
+
|
|
37
|
+
var _csp = require("../utils/csp");
|
|
38
|
+
|
|
31
39
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
40
|
|
|
33
41
|
exports.default = function (config) {
|
|
@@ -53,6 +61,14 @@ exports.default = function (config) {
|
|
|
53
61
|
var basePath = _yakuza._.bothAddFix(config.appConf.server.basePath, "/");
|
|
54
62
|
|
|
55
63
|
_yakuza._.forEach(head, function (v, key) {
|
|
64
|
+
// switch (key) {
|
|
65
|
+
// case "script":
|
|
66
|
+
// case "style":
|
|
67
|
+
//
|
|
68
|
+
// break;
|
|
69
|
+
// default:
|
|
70
|
+
// }
|
|
71
|
+
|
|
56
72
|
if ((typeof v === "undefined" ? "undefined" : (0, _typeof3.default)(v)) === 'object') {
|
|
57
73
|
v = _yakuza._.map(v, function (gv) {
|
|
58
74
|
if (_yakuza._.startsWith(gv.src, '/')) {
|
|
@@ -61,6 +77,29 @@ exports.default = function (config) {
|
|
|
61
77
|
if (_yakuza._.startsWith(gv.href, '/')) {
|
|
62
78
|
gv.href = basePath + _yakuza._.trimStart(gv.href, "/");
|
|
63
79
|
}
|
|
80
|
+
|
|
81
|
+
var iUrl = gv.src || gv.href;
|
|
82
|
+
if ((_config2.default.security.isStupid || _config2.default.server.sri.enabled) && iUrl && _yakuza._.startsWith(iUrl, 'http')) {
|
|
83
|
+
try {
|
|
84
|
+
if (!gv.integrity) {
|
|
85
|
+
var res = (0, _syncRequest2.default)('GET', iUrl, {
|
|
86
|
+
timeout: parseInt(_config2.default.server.sri.timeout, 10) || 5000,
|
|
87
|
+
headers: {
|
|
88
|
+
"Host": (0, _yakuza.jsUrl)('hostname', iUrl),
|
|
89
|
+
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
var iBody = res.getBody('utf8');
|
|
93
|
+
var hash = (0, _crypto.createHash)('sha384').update(iBody).digest('base64');
|
|
94
|
+
gv.integrity = "sha384-" + hash;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (gv.integrity) {
|
|
98
|
+
gv.crossorigin = "anonymous";
|
|
99
|
+
}
|
|
100
|
+
} catch (e) {}
|
|
101
|
+
}
|
|
102
|
+
|
|
64
103
|
return gv;
|
|
65
104
|
});
|
|
66
105
|
}
|
|
@@ -68,6 +107,31 @@ exports.default = function (config) {
|
|
|
68
107
|
head[key] = v;
|
|
69
108
|
});
|
|
70
109
|
|
|
110
|
+
if (_config2.default.security.isStupid) {
|
|
111
|
+
var cspStr = '';
|
|
112
|
+
|
|
113
|
+
if (typeof _config2.default.server.csp.custom === "string") {
|
|
114
|
+
cspStr = _config2.default.server.csp.custom;
|
|
115
|
+
} else {
|
|
116
|
+
var _directives = _config2.default.server.csp.directives;
|
|
117
|
+
_yakuza._.forEach(_directives, function (v, key) {
|
|
118
|
+
cspStr += key + " " + v.join(' ') + '; ';
|
|
119
|
+
});
|
|
120
|
+
cspStr = cspStr.substring(0, cspStr.length - 2);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
var metaObj = {
|
|
124
|
+
'http-equiv': 'Content-Security-Policy',
|
|
125
|
+
content: cspStr
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
if ((0, _typeof3.default)(head['meta']) === 'object') {
|
|
129
|
+
head['meta'].push(metaObj);
|
|
130
|
+
} else {
|
|
131
|
+
head['meta'] = [metaObj];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
71
135
|
return head;
|
|
72
136
|
};
|
|
73
137
|
|
package/nuxt/render/csp.js
CHANGED
|
@@ -8,34 +8,19 @@ var _config = require('../../config');
|
|
|
8
8
|
|
|
9
9
|
var _config2 = _interopRequireDefault(_config);
|
|
10
10
|
|
|
11
|
-
var _yakuza = require('yakuza1');
|
|
12
|
-
|
|
13
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
12
|
|
|
15
13
|
exports.default = function (config) {
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
var cspObj = {};
|
|
20
|
-
_yakuza._.forEach(csp, function (v, key) {
|
|
21
|
-
cspObj[_yakuza._.kebabCase(key)] = _yakuza._.compact(v.map(function (k) {
|
|
22
|
-
if (_config2.default.server.cspStrict) {
|
|
23
|
-
if (k === "*" || k === "data:" || k === "'unsafe-eval'" || k === "'unsafe-inline'") {
|
|
24
|
-
return '';
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return k;
|
|
29
|
-
}));
|
|
30
|
-
});
|
|
14
|
+
var cspSwitch = _config2.default.server.csp.enabled;
|
|
15
|
+
var directives = _config2.default.server.csp.directives;
|
|
31
16
|
|
|
32
|
-
if (
|
|
33
|
-
|
|
17
|
+
if (_config2.default.security.isStupid) {
|
|
18
|
+
cspSwitch = false;
|
|
34
19
|
}
|
|
35
20
|
|
|
36
21
|
return cspSwitch ? {
|
|
37
22
|
enabled: true,
|
|
38
|
-
policies:
|
|
23
|
+
policies: directives,
|
|
39
24
|
hashAlgorithm: 'sha256',
|
|
40
25
|
reportOnly: false
|
|
41
26
|
// addMeta: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yakuza0",
|
|
3
|
-
"version": "2.21.
|
|
3
|
+
"version": "2.21.1-beta.2",
|
|
4
4
|
"description": "yakuza0 with nuxt",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -99,15 +99,16 @@
|
|
|
99
99
|
"stylelint-webpack-plugin": "^3.1.0",
|
|
100
100
|
"stylus": "^0.54.7",
|
|
101
101
|
"stylus-loader": "^3.0.2",
|
|
102
|
+
"sync-request": "^6.1.0",
|
|
102
103
|
"tcp-port-used": "^1.0.1",
|
|
103
104
|
"ua-parser-js": "^0.7.20",
|
|
104
105
|
"v8-compile-cache": "^2.0.2",
|
|
105
|
-
"yakuza1": "2.6.
|
|
106
|
+
"yakuza1": "2.6.8"
|
|
106
107
|
},
|
|
107
108
|
"peerDependencies": {
|
|
108
109
|
"@rdc/nuxt": "2.15.8-0",
|
|
109
110
|
"core-js": "3.10.1",
|
|
110
111
|
"eslint": "7.2.0",
|
|
111
|
-
"yakuza1": "2.6.
|
|
112
|
+
"yakuza1": "2.6.8"
|
|
112
113
|
}
|
|
113
114
|
}
|
package/server/proxy/csrf.js
CHANGED
|
@@ -96,12 +96,17 @@ var _httpProxy = require('http-proxy');
|
|
|
96
96
|
|
|
97
97
|
var _httpProxy2 = _interopRequireDefault(_httpProxy);
|
|
98
98
|
|
|
99
|
+
var _csp = require('../../utils/csp');
|
|
100
|
+
|
|
99
101
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
100
102
|
|
|
101
103
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
102
104
|
|
|
103
|
-
// import {
|
|
104
|
-
// import
|
|
105
|
+
// import {getCache, keys} from "../cache/conf";
|
|
106
|
+
// import csrfPri from "./csrfPri";
|
|
107
|
+
// import csrfPub from "yakuza1/lib/cert/csrfPub";
|
|
108
|
+
|
|
109
|
+
// import nocache from 'nocache';
|
|
105
110
|
var codeMessage = {
|
|
106
111
|
200: '服务器成功返回请求的数据。',
|
|
107
112
|
201: '新建或修改数据成功。',
|
|
@@ -119,11 +124,10 @@ var codeMessage = {
|
|
|
119
124
|
503: '服务不可用,服务器暂时过载或维护。',
|
|
120
125
|
504: '网关超时。'
|
|
121
126
|
};
|
|
122
|
-
// import
|
|
123
|
-
// import csrfPri from "./csrfPri";
|
|
124
|
-
// import csrfPub from "yakuza1/lib/cert/csrfPub";
|
|
127
|
+
// import helmet from 'helmet';
|
|
125
128
|
|
|
126
|
-
// import
|
|
129
|
+
// import {symmetry as gs, asymmetric as as} from 'yakuza1/lib/encrypt/general';
|
|
130
|
+
// import koaJwt from 'koa-jwt';
|
|
127
131
|
|
|
128
132
|
|
|
129
133
|
var apiErr = function apiErr(options, ctx) {
|
|
@@ -167,13 +171,13 @@ var ssrReqAllow = function ssrReqAllow(ctx) {
|
|
|
167
171
|
var ddos = {};
|
|
168
172
|
|
|
169
173
|
exports.default = function () {
|
|
170
|
-
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function
|
|
174
|
+
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(_ref2) {
|
|
171
175
|
var app = _ref2.app,
|
|
172
176
|
config = _ref2.config;
|
|
173
177
|
var cspConnectSrcVerify, appCp, appCpApiV1, jwtVerC, omConf, cm;
|
|
174
|
-
return _regenerator2.default.wrap(function
|
|
178
|
+
return _regenerator2.default.wrap(function _callee13$(_context13) {
|
|
175
179
|
while (1) {
|
|
176
|
-
switch (
|
|
180
|
+
switch (_context13.prev = _context13.next) {
|
|
177
181
|
case 0:
|
|
178
182
|
// if (yConf.security.isTire) {
|
|
179
183
|
// const proxy = httpProxy.createServer({
|
|
@@ -759,13 +763,42 @@ exports.default = function () {
|
|
|
759
763
|
if (_config2.default.security.helmet) {
|
|
760
764
|
app.use((0, _koaHelmet2.default)());
|
|
761
765
|
|
|
762
|
-
if (_config2.default.security.
|
|
766
|
+
if (_config2.default.security.isStupid) {
|
|
767
|
+
if (typeof _config2.default.server.csp.custom === "string") {
|
|
768
|
+
app.use(function () {
|
|
769
|
+
var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(ctx, next) {
|
|
770
|
+
return _regenerator2.default.wrap(function _callee9$(_context9) {
|
|
771
|
+
while (1) {
|
|
772
|
+
switch (_context9.prev = _context9.next) {
|
|
773
|
+
case 0:
|
|
774
|
+
ctx.set('Content-Security-Policy', _config2.default.server.csp.custom);
|
|
775
|
+
ctx.set('X-Content-Security-Policy', _config2.default.server.csp.custom);
|
|
776
|
+
_context9.next = 4;
|
|
777
|
+
return next();
|
|
778
|
+
|
|
779
|
+
case 4:
|
|
780
|
+
case 'end':
|
|
781
|
+
return _context9.stop();
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}, _callee9, undefined);
|
|
785
|
+
}));
|
|
786
|
+
|
|
787
|
+
return function (_x19, _x20) {
|
|
788
|
+
return _ref12.apply(this, arguments);
|
|
789
|
+
};
|
|
790
|
+
}());
|
|
791
|
+
} else {
|
|
792
|
+
app.use(_koaHelmet2.default.contentSecurityPolicy({
|
|
793
|
+
directives: _config2.default.server.csp.directives
|
|
794
|
+
}));
|
|
795
|
+
}
|
|
763
796
|
appCpApiV1(function () {
|
|
764
|
-
var
|
|
797
|
+
var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(ctx, next) {
|
|
765
798
|
var isNext, rHost, rOrigin, rReferer;
|
|
766
|
-
return _regenerator2.default.wrap(function
|
|
799
|
+
return _regenerator2.default.wrap(function _callee10$(_context10) {
|
|
767
800
|
while (1) {
|
|
768
|
-
switch (
|
|
801
|
+
switch (_context10.prev = _context10.next) {
|
|
769
802
|
case 0:
|
|
770
803
|
isNext = true;
|
|
771
804
|
rHost = (0, _server.jsUrl)('hostname', ctx.get('host'));
|
|
@@ -777,15 +810,15 @@ exports.default = function () {
|
|
|
777
810
|
}
|
|
778
811
|
|
|
779
812
|
if (!isNext) {
|
|
780
|
-
|
|
813
|
+
_context10.next = 10;
|
|
781
814
|
break;
|
|
782
815
|
}
|
|
783
816
|
|
|
784
|
-
|
|
817
|
+
_context10.next = 8;
|
|
785
818
|
return next();
|
|
786
819
|
|
|
787
820
|
case 8:
|
|
788
|
-
|
|
821
|
+
_context10.next = 11;
|
|
789
822
|
break;
|
|
790
823
|
|
|
791
824
|
case 10:
|
|
@@ -796,14 +829,14 @@ exports.default = function () {
|
|
|
796
829
|
|
|
797
830
|
case 11:
|
|
798
831
|
case 'end':
|
|
799
|
-
return
|
|
832
|
+
return _context10.stop();
|
|
800
833
|
}
|
|
801
834
|
}
|
|
802
|
-
},
|
|
835
|
+
}, _callee10, undefined);
|
|
803
836
|
}));
|
|
804
837
|
|
|
805
|
-
return function (
|
|
806
|
-
return
|
|
838
|
+
return function (_x21, _x22) {
|
|
839
|
+
return _ref13.apply(this, arguments);
|
|
807
840
|
};
|
|
808
841
|
}()
|
|
809
842
|
// if (ctx.method === 'GET' || ctx.method === 'POST' || jwtVerC(ctx.path)) {
|
|
@@ -817,29 +850,29 @@ exports.default = function () {
|
|
|
817
850
|
);
|
|
818
851
|
|
|
819
852
|
app.use(function () {
|
|
820
|
-
var
|
|
821
|
-
return _regenerator2.default.wrap(function
|
|
853
|
+
var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(ctx, next) {
|
|
854
|
+
return _regenerator2.default.wrap(function _callee11$(_context11) {
|
|
822
855
|
while (1) {
|
|
823
|
-
switch (
|
|
856
|
+
switch (_context11.prev = _context11.next) {
|
|
824
857
|
case 0:
|
|
825
858
|
// ctx.set('Surrogate-Control', 'no-store');
|
|
826
859
|
// ctx.set('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');
|
|
827
860
|
// ctx.set('Pragma', 'no-cache');
|
|
828
861
|
// ctx.set('Expires', '0');
|
|
829
862
|
(0, _control.noCache)(ctx);
|
|
830
|
-
|
|
863
|
+
_context11.next = 3;
|
|
831
864
|
return next();
|
|
832
865
|
|
|
833
866
|
case 3:
|
|
834
867
|
case 'end':
|
|
835
|
-
return
|
|
868
|
+
return _context11.stop();
|
|
836
869
|
}
|
|
837
870
|
}
|
|
838
|
-
},
|
|
871
|
+
}, _callee11, undefined);
|
|
839
872
|
}));
|
|
840
873
|
|
|
841
|
-
return function (
|
|
842
|
-
return
|
|
874
|
+
return function (_x23, _x24) {
|
|
875
|
+
return _ref14.apply(this, arguments);
|
|
843
876
|
};
|
|
844
877
|
}());
|
|
845
878
|
}
|
|
@@ -853,10 +886,10 @@ exports.default = function () {
|
|
|
853
886
|
}
|
|
854
887
|
|
|
855
888
|
app.use(function () {
|
|
856
|
-
var
|
|
857
|
-
return _regenerator2.default.wrap(function
|
|
889
|
+
var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(ctx, next) {
|
|
890
|
+
return _regenerator2.default.wrap(function _callee12$(_context12) {
|
|
858
891
|
while (1) {
|
|
859
|
-
switch (
|
|
892
|
+
switch (_context12.prev = _context12.next) {
|
|
860
893
|
case 0:
|
|
861
894
|
// const csrfCookie = ctx.cookies.get(variable.csrfCookie, {signed: false});
|
|
862
895
|
// console.log(ctx.path, ctx.req.headers.cookie, 111);
|
|
@@ -872,28 +905,28 @@ exports.default = function () {
|
|
|
872
905
|
cookieDomain: config.appConf.cookieDomain || _server.Cookies.getDefCookieDomain(ctx.hostname)
|
|
873
906
|
}, ctx.req.crossParams);
|
|
874
907
|
|
|
875
|
-
|
|
908
|
+
_context12.next = 3;
|
|
876
909
|
return next();
|
|
877
910
|
|
|
878
911
|
case 3:
|
|
879
912
|
case 'end':
|
|
880
|
-
return
|
|
913
|
+
return _context12.stop();
|
|
881
914
|
}
|
|
882
915
|
}
|
|
883
|
-
},
|
|
916
|
+
}, _callee12, undefined);
|
|
884
917
|
}));
|
|
885
918
|
|
|
886
|
-
return function (
|
|
887
|
-
return
|
|
919
|
+
return function (_x25, _x26) {
|
|
920
|
+
return _ref15.apply(this, arguments);
|
|
888
921
|
};
|
|
889
922
|
}());
|
|
890
923
|
|
|
891
924
|
case 17:
|
|
892
925
|
case 'end':
|
|
893
|
-
return
|
|
926
|
+
return _context13.stop();
|
|
894
927
|
}
|
|
895
928
|
}
|
|
896
|
-
},
|
|
929
|
+
}, _callee13, undefined);
|
|
897
930
|
}));
|
|
898
931
|
|
|
899
932
|
return function (_x) {
|
package/utils/csp.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.directives = undefined;
|
|
7
|
+
|
|
8
|
+
var _yakuza = require("yakuza1");
|
|
9
|
+
|
|
10
|
+
var _config = require("../config");
|
|
11
|
+
|
|
12
|
+
var _config2 = _interopRequireDefault(_config);
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
var directives = exports.directives = function directives() {
|
|
17
|
+
var csp = _config2.default.server.csp;
|
|
18
|
+
// const cspSwitch = yConf.server.cspSwitch;
|
|
19
|
+
|
|
20
|
+
var cspObj = {};
|
|
21
|
+
_yakuza._.forEach(csp, function (v, key) {
|
|
22
|
+
cspObj[_yakuza._.kebabCase(key)] = _yakuza._.compact(v.map(function (k) {
|
|
23
|
+
if (_config2.default.server.cspStrict) {
|
|
24
|
+
if (k === "*" || k.indexOf('*') !== -1 || k === "data:" || k === "'unsafe-eval'" || k === "'unsafe-inline'") {
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return k;
|
|
30
|
+
}));
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
if (!_config2.default.security.stupid) {
|
|
34
|
+
cspObj = _yakuza._.omit(cspObj, ['require-sri-for']);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return cspObj;
|
|
38
|
+
};
|
package/utils/inclusive.js
CHANGED
|
@@ -69,8 +69,6 @@ var _getPort = require('get-port');
|
|
|
69
69
|
|
|
70
70
|
var _getPort2 = _interopRequireDefault(_getPort);
|
|
71
71
|
|
|
72
|
-
var _conf = require('./conf');
|
|
73
|
-
|
|
74
72
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
75
73
|
|
|
76
74
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -189,7 +187,7 @@ var render = function () {
|
|
|
189
187
|
ykServerEnv = _ref.ykServerEnv,
|
|
190
188
|
ykPkg = _ref.pkg;
|
|
191
189
|
|
|
192
|
-
var _ykConfig, ykConf, processEnv, aliasDir, conf, cspLoop, setConfValue, setConfCSP, setConf, hostname, port, ykServer, orbAddr, tip;
|
|
190
|
+
var _ykConfig, ykConf, processEnv, aliasDir, conf, cspLoop, setConfValue, setConfCSP, setConf, hostname, port, ykServer, orbAddr, directives, tip;
|
|
193
191
|
|
|
194
192
|
return _regenerator2.default.wrap(function _callee2$(_context2) {
|
|
195
193
|
while (1) {
|
|
@@ -298,11 +296,19 @@ var render = function () {
|
|
|
298
296
|
appBuildCacheDirName: '.nuxt',
|
|
299
297
|
autoOpenBrowser: true,
|
|
300
298
|
cookieSameSite: 'Lax',
|
|
301
|
-
cspSwitch: true,
|
|
302
|
-
cspStrict: false,
|
|
303
299
|
// ...mainConf.server,
|
|
304
300
|
// ...ykConf.server,
|
|
305
|
-
|
|
301
|
+
csp: {
|
|
302
|
+
enabled: true,
|
|
303
|
+
strict: false,
|
|
304
|
+
custom: false,
|
|
305
|
+
policies: {},
|
|
306
|
+
directives: {}
|
|
307
|
+
},
|
|
308
|
+
sri: {
|
|
309
|
+
enabled: false,
|
|
310
|
+
timeout: 2000
|
|
311
|
+
},
|
|
306
312
|
ddos: {
|
|
307
313
|
enabled: true,
|
|
308
314
|
maxRequest: 6666,
|
|
@@ -584,13 +590,13 @@ var render = function () {
|
|
|
584
590
|
};
|
|
585
591
|
|
|
586
592
|
cspLoop = function cspLoop(cspConf) {
|
|
587
|
-
if (cspConf.server && cspConf.server.csp && _yakuza._.isPlainObject(cspConf.server.csp)) {
|
|
588
|
-
_yakuza._.forEach(conf.server.csp, function (v, key) {
|
|
589
|
-
conf.server.csp[key] = _yakuza._.uniq([].concat((0, _toConsumableArray3.default)(conf.server.csp[key]), (0, _toConsumableArray3.default)(cspConf.server.csp[key] || [])));
|
|
593
|
+
if (cspConf.server && cspConf.server.csp && cspConf.server.csp.policies && _yakuza._.isPlainObject(cspConf.server.csp.policies)) {
|
|
594
|
+
_yakuza._.forEach(conf.server.csp.policies, function (v, key) {
|
|
595
|
+
conf.server.csp.policies[key] = _yakuza._.uniq([].concat((0, _toConsumableArray3.default)(conf.server.csp.policies[key]), (0, _toConsumableArray3.default)(cspConf.server.csp.policies[key] || [])));
|
|
590
596
|
});
|
|
591
597
|
|
|
592
|
-
_yakuza._.forEach(cspConf.server.csp, function (v, key) {
|
|
593
|
-
conf.server.csp[key] = _yakuza._.uniq([].concat((0, _toConsumableArray3.default)(conf.server.csp[key] || []), (0, _toConsumableArray3.default)(cspConf.server.csp[key] || [])));
|
|
598
|
+
_yakuza._.forEach(cspConf.server.csp.policies, function (v, key) {
|
|
599
|
+
conf.server.csp.policies[key] = _yakuza._.uniq([].concat((0, _toConsumableArray3.default)(conf.server.csp.policies[key] || []), (0, _toConsumableArray3.default)(cspConf.server.csp.policies[key] || [])));
|
|
594
600
|
});
|
|
595
601
|
}
|
|
596
602
|
};
|
|
@@ -622,7 +628,7 @@ var render = function () {
|
|
|
622
628
|
allConf.forEach(function (chunkConf) {
|
|
623
629
|
setConfValue(chunkConf);
|
|
624
630
|
});
|
|
625
|
-
conf.server.csp = _def.csp;
|
|
631
|
+
conf.server.csp.policies = _def.csp;
|
|
626
632
|
allConf.forEach(function (chunkConf) {
|
|
627
633
|
setConfCSP(chunkConf);
|
|
628
634
|
});
|
|
@@ -683,7 +689,7 @@ var render = function () {
|
|
|
683
689
|
});
|
|
684
690
|
|
|
685
691
|
_context2.t0 = conf.dkyMode;
|
|
686
|
-
_context2.next = _context2.t0 === "dev" ? 16 : _context2.t0 === "prod" ? 18 : _context2.t0 === "stupid" ? 23 : _context2.t0 === "tire" ?
|
|
692
|
+
_context2.next = _context2.t0 === "dev" ? 16 : _context2.t0 === "prod" ? 18 : _context2.t0 === "stupid" ? 23 : _context2.t0 === "tire" ? 30 : 35;
|
|
687
693
|
break;
|
|
688
694
|
|
|
689
695
|
case 16:
|
|
@@ -692,7 +698,7 @@ var render = function () {
|
|
|
692
698
|
// conf.security.helmet = true;
|
|
693
699
|
// conf.server.f5Offline = false;
|
|
694
700
|
conf.security.isDev = true;
|
|
695
|
-
return _context2.abrupt('break',
|
|
701
|
+
return _context2.abrupt('break', 35);
|
|
696
702
|
|
|
697
703
|
case 18:
|
|
698
704
|
conf.security.encrypt = "sm";
|
|
@@ -700,7 +706,7 @@ var render = function () {
|
|
|
700
706
|
conf.security.helmet = true;
|
|
701
707
|
// conf.server.f5Offline = false;
|
|
702
708
|
conf.security.isProd = true;
|
|
703
|
-
return _context2.abrupt('break',
|
|
709
|
+
return _context2.abrupt('break', 35);
|
|
704
710
|
|
|
705
711
|
case 23:
|
|
706
712
|
conf.security.encrypt = "sm";
|
|
@@ -708,18 +714,19 @@ var render = function () {
|
|
|
708
714
|
conf.security.helmet = true;
|
|
709
715
|
// conf.server.f5Offline = false;
|
|
710
716
|
conf.security.isStupid = true;
|
|
711
|
-
conf.server.
|
|
712
|
-
|
|
717
|
+
conf.server.csp.enabled = true;
|
|
718
|
+
conf.server.sri.enabled = true;
|
|
719
|
+
return _context2.abrupt('break', 35);
|
|
713
720
|
|
|
714
|
-
case
|
|
721
|
+
case 30:
|
|
715
722
|
conf.security.encrypt = "none";
|
|
716
723
|
conf.security.stupid = false;
|
|
717
724
|
conf.security.helmet = false;
|
|
718
725
|
// conf.server.f5Offline = false;
|
|
719
726
|
conf.security.isTire = true;
|
|
720
|
-
return _context2.abrupt('break',
|
|
727
|
+
return _context2.abrupt('break', 35);
|
|
721
728
|
|
|
722
|
-
case
|
|
729
|
+
case 35:
|
|
723
730
|
|
|
724
731
|
// conf.router.config['app.examples'].enabled = true;
|
|
725
732
|
if (conf.server.yk4Addr) {
|
|
@@ -796,10 +803,30 @@ var render = function () {
|
|
|
796
803
|
conf.proxyServer.proxy[conf.proxyServer.ws.key] = orbAddr;
|
|
797
804
|
conf.server.orbAddr = orbAddr;
|
|
798
805
|
|
|
799
|
-
conf.server.csp.imgSrc = _yakuza._.uniq([].concat((0, _toConsumableArray3.default)(conf.server.csp.imgSrc || []), (0, _toConsumableArray3.default)(conf.server.tfs.fastdfs.domain)));
|
|
806
|
+
conf.server.csp.policies.imgSrc = _yakuza._.uniq([].concat((0, _toConsumableArray3.default)(conf.server.csp.policies.imgSrc || []), (0, _toConsumableArray3.default)(conf.server.tfs.fastdfs.domain)));
|
|
807
|
+
|
|
808
|
+
// csp
|
|
809
|
+
directives = {};
|
|
810
|
+
|
|
811
|
+
_yakuza._.forEach(conf.server.csp.policies, function (v, key) {
|
|
812
|
+
directives[_yakuza._.kebabCase(key)] = _yakuza._.compact(((typeof v === 'undefined' ? 'undefined' : (0, _typeof3.default)(v)) === "object" ? v : []).map(function (k) {
|
|
813
|
+
if (conf.server.csp.strict) {
|
|
814
|
+
if (k === "*" || k.indexOf('*') !== -1 || k === "data:" || k === "'unsafe-eval'" || k === "'unsafe-inline'") {
|
|
815
|
+
return '';
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
return k;
|
|
820
|
+
}));
|
|
821
|
+
});
|
|
822
|
+
|
|
823
|
+
if (!conf.security.isStupid) {
|
|
824
|
+
directives = _yakuza._.omit(directives, ['require-sri-for']);
|
|
825
|
+
}
|
|
826
|
+
conf.server.csp.directives = directives;
|
|
800
827
|
|
|
801
828
|
// const appPortUsed = [];
|
|
802
|
-
_context2.next =
|
|
829
|
+
_context2.next = 56;
|
|
803
830
|
return _yakuza._.asyncMap(conf.router.config, function () {
|
|
804
831
|
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(v, key) {
|
|
805
832
|
var name, arr, length, num;
|
|
@@ -981,7 +1008,7 @@ var render = function () {
|
|
|
981
1008
|
};
|
|
982
1009
|
}());
|
|
983
1010
|
|
|
984
|
-
case
|
|
1011
|
+
case 56:
|
|
985
1012
|
// console.log(conf.router.config);
|
|
986
1013
|
|
|
987
1014
|
conf.shareRule.app = conf.shareRule.app.map(function (ap) {
|
|
@@ -1081,7 +1108,7 @@ var render = function () {
|
|
|
1081
1108
|
|
|
1082
1109
|
return _context2.abrupt('return', { conf: conf });
|
|
1083
1110
|
|
|
1084
|
-
case
|
|
1111
|
+
case 63:
|
|
1085
1112
|
case 'end':
|
|
1086
1113
|
return _context2.stop();
|
|
1087
1114
|
}
|