k2hr3-api 1.0.24 → 1.0.25
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/ChangeLog +6 -0
- package/app.js +63 -30
- package/bin/run.sh +14 -0
- package/config/default.json +3 -2
- package/lib/k2hr3config.js +12 -0
- package/lib/k2hr3dkc.js +903 -13
- package/lib/k2hr3keys.js +1 -0
- package/lib/k2hr3tokens.js +53 -0
- package/package.json +10 -5
- package/routes/tenant.js +1014 -0
- package/tests/auto_all_spec.js +4 -0
- package/tests/auto_tenant.js +989 -0
- package/tests/auto_tenant_spec.js +79 -0
- package/tests/manual_acr_delete.js +1 -0
- package/tests/manual_acr_get.js +1 -0
- package/tests/manual_acr_postput.js +1 -0
- package/tests/manual_allusertenant_get.js +58 -3
- package/tests/manual_extdata_get.js +1 -0
- package/tests/manual_list_gethead.js +1 -0
- package/tests/manual_policy_delete.js +1 -0
- package/tests/manual_policy_gethead.js +3 -1
- package/tests/manual_policy_postput.js +1 -0
- package/tests/manual_resource_delete.js +1 -0
- package/tests/manual_resource_gethead.js +1 -0
- package/tests/manual_resource_postput.js +1 -0
- package/tests/manual_role_delete.js +2 -0
- package/tests/manual_role_gethead.js +4 -0
- package/tests/manual_role_postput.js +2 -0
- package/tests/manual_service_delete.js +1 -0
- package/tests/manual_service_gethead.js +1 -0
- package/tests/manual_service_postput.js +1 -0
- package/tests/manual_tenant_delete.js +152 -0
- package/tests/manual_tenant_gethead.js +268 -0
- package/tests/manual_tenant_postput.js +293 -0
- package/tests/manual_test.sh +21 -7
- package/tests/manual_userdata_get.js +1 -0
- package/tests/manual_usertoken_gethead.js +1 -0
- package/tests/manual_usertoken_postput.js +1 -0
- package/tests/manual_version_get.js +1 -0
- package/tests/test.sh +2 -0
package/ChangeLog
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
k2hr3-api (1.0.25) unstable; urgency=low
|
|
2
|
+
|
|
3
|
+
* Added TENANT API for Local Tenant and updated etc - #100
|
|
4
|
+
|
|
5
|
+
-- Takeshi Nakatani <ggtakec@gmail.com> Fri, 07 Jul 2023 17:33:33 +0900
|
|
6
|
+
|
|
1
7
|
k2hr3-api (1.0.24) unstable; urgency=low
|
|
2
8
|
|
|
3
9
|
* Updated dependencies and test code for new chai version - #98
|
package/app.js
CHANGED
|
@@ -26,33 +26,59 @@ var logger = require('morgan');
|
|
|
26
26
|
var cookieParser= require('cookie-parser');
|
|
27
27
|
var bodyParser = require('body-parser');
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
//---------------------------------------------------------
|
|
30
|
+
// Utilities
|
|
31
|
+
//---------------------------------------------------------
|
|
32
|
+
var apiutil = require('./lib/k2hr3apiutil');
|
|
33
|
+
var resutil = require('./lib/k2hr3resutil');
|
|
34
|
+
|
|
35
|
+
//---------------------------------------------------------
|
|
30
36
|
// Load Configuration
|
|
31
|
-
|
|
37
|
+
//---------------------------------------------------------
|
|
32
38
|
var r3Conf = require('./lib/k2hr3config').r3ApiConfig;
|
|
33
39
|
var apiConf = new r3Conf();
|
|
34
40
|
|
|
35
41
|
//
|
|
36
|
-
//
|
|
42
|
+
// Load variables
|
|
37
43
|
//
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
// - Local Tenants
|
|
45
|
+
// - Load CORS(Cross-Origin Resource Sharing) Setting
|
|
40
46
|
//
|
|
41
|
-
//
|
|
47
|
+
// [NOTE][TODO]
|
|
48
|
+
// It specifies a web development machine for temporary debugging.
|
|
49
|
+
// In future we plan to specify with K2HR3 role.
|
|
42
50
|
//
|
|
43
|
-
var
|
|
44
|
-
var
|
|
51
|
+
var is_localtenants = true;
|
|
52
|
+
var cors_ips = [];
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
(function()
|
|
55
|
+
{
|
|
56
|
+
var k2hr3config = require('config');
|
|
57
|
+
|
|
58
|
+
is_localtenants = apiConf.isLocalTenants();
|
|
59
|
+
|
|
60
|
+
if(apiutil.isSafeEntity(k2hr3config) && !apiutil.isEmptyArray(k2hr3config.corsips)){
|
|
61
|
+
apiutil.mergeArray(cors_ips, k2hr3config.corsips);
|
|
62
|
+
}
|
|
63
|
+
}());
|
|
64
|
+
|
|
65
|
+
//---------------------------------------------------------
|
|
66
|
+
// Debug logging objects
|
|
67
|
+
//---------------------------------------------------------
|
|
68
|
+
var r3logger = require('./lib/dbglogging'); // eslint-disable-line no-unused-vars
|
|
69
|
+
|
|
70
|
+
//---------------------------------------------------------
|
|
71
|
+
// Environments
|
|
72
|
+
//---------------------------------------------------------
|
|
47
73
|
// NODE_ENV(development or production)
|
|
48
74
|
// NODE_LOGGER(if 'no', not logging by morgan)
|
|
49
75
|
//
|
|
50
76
|
var is_product = apiutil.compareCaseString(apiutil.getSafeString(process.env.NODE_ENV), 'production');
|
|
51
77
|
var is_logging = !apiutil.compareCaseString(apiutil.getSafeString(process.env.NODE_LOGGER), 'no');
|
|
52
78
|
|
|
53
|
-
|
|
79
|
+
//---------------------------------------------------------
|
|
54
80
|
// Routes
|
|
55
|
-
|
|
81
|
+
//---------------------------------------------------------
|
|
56
82
|
var version = require('./routes/version');
|
|
57
83
|
var userTokens = require('./routes/userTokens');
|
|
58
84
|
var policy = require('./routes/policy');
|
|
@@ -63,6 +89,10 @@ var acr = require('./routes/acr');
|
|
|
63
89
|
var list = require('./routes/list');
|
|
64
90
|
var userdata = require('./routes/userdata');
|
|
65
91
|
var extdata = require('./routes/extdata');
|
|
92
|
+
var tenant = null;
|
|
93
|
+
if(is_localtenants){
|
|
94
|
+
tenant = require('./routes/tenant');
|
|
95
|
+
}
|
|
66
96
|
var verify = null;
|
|
67
97
|
if(!is_product){
|
|
68
98
|
verify = require('./routes/debugVerify');
|
|
@@ -81,14 +111,18 @@ var acrExp = express();
|
|
|
81
111
|
var listExp = express();
|
|
82
112
|
var userdataExp = express();
|
|
83
113
|
var extdataExp = express();
|
|
114
|
+
var tenantExp = null;
|
|
115
|
+
if(is_localtenants){
|
|
116
|
+
tenantExp = express();
|
|
117
|
+
}
|
|
84
118
|
var verifyExp = null;
|
|
85
119
|
if(!is_product){
|
|
86
120
|
verifyExp = express();
|
|
87
121
|
}
|
|
88
122
|
|
|
89
|
-
|
|
123
|
+
//---------------------------------------------------------
|
|
90
124
|
// Trusted proxy
|
|
91
|
-
|
|
125
|
+
//---------------------------------------------------------
|
|
92
126
|
// [NOTE][TODO]
|
|
93
127
|
// We set trusted proxy as only loopback now.
|
|
94
128
|
// Here, we need to add CDN/Proxy for our NW, but pending now.
|
|
@@ -103,26 +137,13 @@ acrExp.set('trust proxy', 'loopback');
|
|
|
103
137
|
listExp.set('trust proxy', 'loopback');
|
|
104
138
|
userdataExp.set('trust proxy', 'loopback');
|
|
105
139
|
extdataExp.set('trust proxy', 'loopback');
|
|
140
|
+
if(is_localtenants){
|
|
141
|
+
tenantExp.set('trust proxy','loopback');
|
|
142
|
+
}
|
|
106
143
|
if(!is_product){
|
|
107
144
|
verifyExp.set('trust proxy','loopback');
|
|
108
145
|
}
|
|
109
146
|
|
|
110
|
-
//
|
|
111
|
-
// CORS(Cross-Origin Resource Sharing)
|
|
112
|
-
//
|
|
113
|
-
// [NOTE][TODO]
|
|
114
|
-
// It specifies a web development machine for temporary debugging.
|
|
115
|
-
// In future we plan to specify with K2HR3 role.
|
|
116
|
-
//
|
|
117
|
-
var cors_ips = [];
|
|
118
|
-
(function()
|
|
119
|
-
{
|
|
120
|
-
var k2hr3config = require('config');
|
|
121
|
-
if(apiutil.isSafeEntity(k2hr3config) && !apiutil.isEmptyArray(k2hr3config.corsips)){
|
|
122
|
-
apiutil.mergeArray(cors_ips, k2hr3config.corsips);
|
|
123
|
-
}
|
|
124
|
-
}());
|
|
125
|
-
|
|
126
147
|
//
|
|
127
148
|
// CORS(Cross-Origin Resource Sharing) Controller
|
|
128
149
|
//
|
|
@@ -175,6 +196,9 @@ app.use(function(req, res, next)
|
|
|
175
196
|
next();
|
|
176
197
|
});
|
|
177
198
|
|
|
199
|
+
//---------------------------------------------------------
|
|
200
|
+
// Express
|
|
201
|
+
//---------------------------------------------------------
|
|
178
202
|
//
|
|
179
203
|
// Setting for express
|
|
180
204
|
//
|
|
@@ -191,7 +215,7 @@ app.use(express.static(path.join(__dirname, 'public')));
|
|
|
191
215
|
app.use('/status.html', express.static(__dirname + '/public/status.html'));
|
|
192
216
|
|
|
193
217
|
//
|
|
194
|
-
//
|
|
218
|
+
// Route mapping
|
|
195
219
|
//
|
|
196
220
|
app.use('/', version); // '/'
|
|
197
221
|
app.use('/v1', version); // '/v1'
|
|
@@ -204,6 +228,9 @@ acrExp.use('/*', acr); // '/v1/acr'
|
|
|
204
228
|
listExp.use('/*', list); // '/v1/list'
|
|
205
229
|
userdataExp.use('/*', userdata); // '/v1/userdata'
|
|
206
230
|
extdataExp.use('/*', extdata); // '/v1/extdata'
|
|
231
|
+
if(is_localtenants){
|
|
232
|
+
tenantExp.use('/*', tenant); // '/v1/tenant'
|
|
233
|
+
}
|
|
207
234
|
if(!is_product){
|
|
208
235
|
verifyExp.use('/*', verify); // '/v1/debug/verify*'
|
|
209
236
|
}
|
|
@@ -217,10 +244,16 @@ app.use('/v1/acr', acrExp); // mountpath: '/v1/acr*'
|
|
|
217
244
|
app.use('/v1/list', listExp); // mountpath: '/v1/list*'
|
|
218
245
|
app.use('/v1/userdata', userdataExp); // mountpath: '/v1/userdata*'
|
|
219
246
|
app.use('/v1/extdata', extdataExp); // mountpath: '/v1/extdata*'
|
|
247
|
+
if(is_localtenants){
|
|
248
|
+
app.use('/v1/tenant', tenantExp); // mountpath: '/v1/tenant*'
|
|
249
|
+
}
|
|
220
250
|
if(!is_product){
|
|
221
251
|
app.use('/v1/debug/verify', verifyExp); // mountpath: '/v1/debug/verify*'
|
|
222
252
|
}
|
|
223
253
|
|
|
254
|
+
//---------------------------------------------------------
|
|
255
|
+
// Error handler
|
|
256
|
+
//---------------------------------------------------------
|
|
224
257
|
//
|
|
225
258
|
// catch 404 and forward to error handler
|
|
226
259
|
//
|
package/bin/run.sh
CHANGED
|
@@ -74,6 +74,9 @@ PrintUsage()
|
|
|
74
74
|
echo " --watcher(-w) : Run IP watcher process as daemon"
|
|
75
75
|
echo " --oneshot(-os) : Run watcher process only once"
|
|
76
76
|
echo ""
|
|
77
|
+
echo "Environment:"
|
|
78
|
+
echo " DEBUG_LEVEL : Specify DBG/MSG/WARN/ERR. Same as --debuglevel(-dl) option, and --debuglevel(-dl) takes precedence."
|
|
79
|
+
echo ""
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
#
|
|
@@ -388,6 +391,17 @@ elif [ "${DEBUG_ENV_LEVEL}" -ge 1 ]; then
|
|
|
388
391
|
DEBUG_ENV_PARAM="LOGLEVEL_ERR"
|
|
389
392
|
else
|
|
390
393
|
DEBUG_ENV_PARAM="LOGLEVEL_SILENT"
|
|
394
|
+
if [ -n "${DEBUG_LEVEL}" ]; then
|
|
395
|
+
if [ "${DEBUG_LEVEL}" = "dbg" ] || [ "${DEBUG_LEVEL}" = "DBG" ] || [ "${DEBUG_LEVEL}" = "debug" ] || [ "${DEBUG_LEVEL}" = "DEBUG" ]; then
|
|
396
|
+
DEBUG_ENV_PARAM="LOGLEVEL_DBG"
|
|
397
|
+
elif [ "${DEBUG_LEVEL}" = "msg" ] || [ "${DEBUG_LEVEL}" = "MSG" ] || [ "${DEBUG_LEVEL}" = "message" ] || [ "${DEBUG_LEVEL}" = "MESSAGE" ] || [ "${DEBUG_LEVEL}" = "info" ] || [ "${DEBUG_LEVEL}" = "INFO" ]; then
|
|
398
|
+
DEBUG_ENV_PARAM="LOGLEVEL_MSG"
|
|
399
|
+
elif [ "${DEBUG_LEVEL}" = "warn" ] || [ "${DEBUG_LEVEL}" = "WARN" ] || [ "${DEBUG_LEVEL}" = "warning" ] || [ "${DEBUG_LEVEL}" = "WARNING" ]; then
|
|
400
|
+
DEBUG_ENV_PARAM="LOGLEVEL_WAN"
|
|
401
|
+
elif [ "${DEBUG_LEVEL}" = "err" ] || [ "${DEBUG_LEVEL}" = "ERR" ] || [ "${DEBUG_LEVEL}" = "error" ] || [ "${DEBUG_LEVEL}" = "ERROR" ]; then
|
|
402
|
+
DEBUG_ENV_PARAM="LOGLEVEL_ERR"
|
|
403
|
+
fi
|
|
404
|
+
fi
|
|
391
405
|
fi
|
|
392
406
|
if [ -n "${DEBUG_ENV_CUSTOM}" ]; then
|
|
393
407
|
if [ -n "${DEBUG_ENV_PARAM}" ]; then
|
package/config/default.json
CHANGED
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
'k2hdkc': {
|
|
43
|
-
'config': '/etc/
|
|
44
|
-
'port':
|
|
43
|
+
'config': '/etc/antpickax/slave.ini',
|
|
44
|
+
'port': 8022
|
|
45
45
|
},
|
|
46
46
|
|
|
47
47
|
'multiproc': true,
|
|
@@ -76,6 +76,7 @@
|
|
|
76
76
|
'delhostrole': 'delhostrole'
|
|
77
77
|
},
|
|
78
78
|
|
|
79
|
+
'localtenants': true,
|
|
79
80
|
'confirmtenant': false,
|
|
80
81
|
|
|
81
82
|
'chkipconfig': {
|
package/lib/k2hr3config.js
CHANGED
|
@@ -63,6 +63,7 @@ const reserved_key_list = [
|
|
|
63
63
|
'userdata',
|
|
64
64
|
'extdata',
|
|
65
65
|
'k2hr3admin',
|
|
66
|
+
'localtenants',
|
|
66
67
|
'confirmtenant',
|
|
67
68
|
'chkipconfig',
|
|
68
69
|
'allowcredauth',
|
|
@@ -189,6 +190,7 @@ var loadedConfig = (function()
|
|
|
189
190
|
delhostrole: 'delhostrole' // Admin Role name
|
|
190
191
|
},
|
|
191
192
|
|
|
193
|
+
localtenants: true, // Whether to allow K2HR3 cluster local tenants
|
|
192
194
|
confirmtenant: false, // Whichever confirm tenant when adding service member
|
|
193
195
|
|
|
194
196
|
chkipconfig: { // IP Addresses checker(watcher) type
|
|
@@ -392,6 +394,11 @@ var loadedConfig = (function()
|
|
|
392
394
|
}
|
|
393
395
|
}
|
|
394
396
|
|
|
397
|
+
// Local tenants
|
|
398
|
+
if(apiutil.isSafeEntity(config.localtenants) && 'boolean' == typeof config.localtenants){
|
|
399
|
+
data.localtenants = config.localtenants;
|
|
400
|
+
}
|
|
401
|
+
|
|
395
402
|
// Confirm tenant mode for adding service member
|
|
396
403
|
if(apiutil.isSafeEntity(config.confirmtenant) && 'boolean' == typeof config.confirmtenant){
|
|
397
404
|
data.confirmtenant = config.confirmtenant;
|
|
@@ -758,6 +765,11 @@ var R3ApiConfig = (function()
|
|
|
758
765
|
return this.loadedConfig.k2hr3admin;
|
|
759
766
|
};
|
|
760
767
|
|
|
768
|
+
proto.isLocalTenants = function()
|
|
769
|
+
{
|
|
770
|
+
return this.loadedConfig.localtenants;
|
|
771
|
+
};
|
|
772
|
+
|
|
761
773
|
proto.isConfirmTenantForService = function()
|
|
762
774
|
{
|
|
763
775
|
return this.loadedConfig.confirmtenant;
|