k2hr3-api 1.0.42 → 2.0.1
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/config/k2hr3-init.sh.templ +4 -4
- package/dist/.gitkeep +0 -0
- package/dist/src/app.js +262 -0
- package/{bin → dist/src/bin}/run.sh +1 -1
- package/dist/src/bin/watcher.js +113 -0
- package/dist/src/bin/www.js +217 -0
- package/dist/src/lib/basicipcheck.js +392 -0
- package/dist/src/lib/cacerts.js +106 -0
- package/dist/src/lib/dbglogging.js +190 -0
- package/dist/src/lib/dummyuserapi.js +719 -0
- package/dist/src/lib/ipwatch.js +354 -0
- package/dist/src/lib/k2hr3acrutil.js +532 -0
- package/dist/src/lib/k2hr3apiutil.js +1444 -0
- package/dist/src/lib/k2hr3cliutil.js +183 -0
- package/dist/src/lib/k2hr3config.js +832 -0
- package/dist/src/lib/k2hr3cryptutil.js +258 -0
- package/dist/src/lib/k2hr3dkc.js +12121 -0
- package/dist/src/lib/k2hr3extdata.js +198 -0
- package/dist/src/lib/k2hr3keys.js +207 -0
- package/dist/src/lib/k2hr3resutil.js +111 -0
- package/dist/src/lib/k2hr3template.js +6546 -0
- package/dist/src/lib/k2hr3tokens.js +2643 -0
- package/dist/src/lib/k2hr3userdata.js +296 -0
- package/dist/src/lib/k8soidc.js +1000 -0
- package/dist/src/lib/openstackapiv2.js +695 -0
- package/dist/src/lib/openstackapiv3.js +932 -0
- package/dist/src/lib/openstackep.js +667 -0
- package/{tests/auto_common.js → dist/src/lib/types.js} +4 -38
- package/dist/src/routes/acr.js +704 -0
- package/dist/src/routes/debugVerify.js +294 -0
- package/dist/src/routes/extdata.js +219 -0
- package/dist/src/routes/list.js +264 -0
- package/dist/src/routes/policy.js +840 -0
- package/dist/src/routes/resource.js +1489 -0
- package/dist/src/routes/role.js +2627 -0
- package/dist/src/routes/service.js +908 -0
- package/dist/src/routes/tenant.js +1141 -0
- package/dist/src/routes/userTokens.js +482 -0
- package/dist/src/routes/userdata.js +212 -0
- package/dist/src/routes/version.js +103 -0
- package/package.json +152 -121
- package/ChangeLog +0 -378
- package/app.js +0 -292
- package/bin/watcher +0 -122
- package/bin/www +0 -180
- package/eslint.config.mjs +0 -68
- package/lib/basicipcheck.js +0 -376
- package/lib/cacerts.js +0 -71
- package/lib/dbglogging.js +0 -151
- package/lib/dummyuserapi.js +0 -766
- package/lib/ipwatch.js +0 -379
- package/lib/k2hr3acrutil.js +0 -516
- package/lib/k2hr3apiutil.js +0 -1494
- package/lib/k2hr3cliutil.js +0 -191
- package/lib/k2hr3config.js +0 -826
- package/lib/k2hr3cryptutil.js +0 -254
- package/lib/k2hr3dkc.js +0 -12632
- package/lib/k2hr3extdata.js +0 -198
- package/lib/k2hr3keys.js +0 -234
- package/lib/k2hr3resutil.js +0 -100
- package/lib/k2hr3template.js +0 -6925
- package/lib/k2hr3tokens.js +0 -2799
- package/lib/k2hr3userdata.js +0 -312
- package/lib/k8soidc.js +0 -1012
- package/lib/openstackapiv2.js +0 -764
- package/lib/openstackapiv3.js +0 -1032
- package/lib/openstackep.js +0 -553
- package/routes/acr.js +0 -738
- package/routes/debugVerify.js +0 -263
- package/routes/extdata.js +0 -232
- package/routes/list.js +0 -270
- package/routes/policy.js +0 -869
- package/routes/resource.js +0 -1441
- package/routes/role.js +0 -2664
- package/routes/service.js +0 -894
- package/routes/tenant.js +0 -1095
- package/routes/userTokens.js +0 -511
- package/routes/userdata.js +0 -218
- package/routes/version.js +0 -108
- package/templ/Dockerfile.templ +0 -71
- package/tests/auto_acr.js +0 -1101
- package/tests/auto_acr_spec.js +0 -79
- package/tests/auto_all_spec.js +0 -142
- package/tests/auto_control_subprocess.sh +0 -243
- package/tests/auto_extdata.js +0 -220
- package/tests/auto_extdata_spec.js +0 -79
- package/tests/auto_init_config_json.sh +0 -275
- package/tests/auto_k2hdkc_server.ini +0 -109
- package/tests/auto_k2hdkc_slave.ini +0 -83
- package/tests/auto_list.js +0 -439
- package/tests/auto_list_spec.js +0 -79
- package/tests/auto_policy.js +0 -1579
- package/tests/auto_policy_spec.js +0 -79
- package/tests/auto_resource.js +0 -10956
- package/tests/auto_resource_spec.js +0 -79
- package/tests/auto_role.js +0 -6150
- package/tests/auto_role_spec.js +0 -79
- package/tests/auto_service.js +0 -770
- package/tests/auto_service_spec.js +0 -79
- package/tests/auto_subprocesses.js +0 -114
- package/tests/auto_template.sh +0 -126
- package/tests/auto_tenant.js +0 -1100
- package/tests/auto_tenant_spec.js +0 -79
- package/tests/auto_token_util.js +0 -219
- package/tests/auto_userdata.js +0 -292
- package/tests/auto_userdata_spec.js +0 -79
- package/tests/auto_usertokens.js +0 -565
- package/tests/auto_usertokens_spec.js +0 -79
- package/tests/auto_version.js +0 -127
- package/tests/auto_version_spec.js +0 -79
- package/tests/auto_watcher.js +0 -157
- package/tests/auto_watcher_spec.js +0 -79
- package/tests/k2hdkc_test.data +0 -986
- package/tests/k2hdkc_test_load.sh +0 -255
- package/tests/k2hr3template_test.js +0 -187
- package/tests/k2hr3template_test.sh +0 -339
- package/tests/k2hr3template_test_async.js +0 -216
- package/tests/k2hr3template_test_template.result +0 -7117
- package/tests/k2hr3template_test_template.txt +0 -3608
- package/tests/k2hr3template_test_vars.js +0 -194
- package/tests/manual_acr_delete.js +0 -143
- package/tests/manual_acr_get.js +0 -297
- package/tests/manual_acr_postput.js +0 -215
- package/tests/manual_allusertenant_get.js +0 -113
- package/tests/manual_extdata_get.js +0 -191
- package/tests/manual_k2hr3keys_get.js +0 -84
- package/tests/manual_list_gethead.js +0 -230
- package/tests/manual_policy_delete.js +0 -132
- package/tests/manual_policy_gethead.js +0 -275
- package/tests/manual_policy_postput.js +0 -297
- package/tests/manual_resource_delete.js +0 -433
- package/tests/manual_resource_gethead.js +0 -423
- package/tests/manual_resource_postput.js +0 -487
- package/tests/manual_role_delete.js +0 -404
- package/tests/manual_role_gethead.js +0 -547
- package/tests/manual_role_postput.js +0 -544
- package/tests/manual_service_delete.js +0 -153
- package/tests/manual_service_gethead.js +0 -178
- package/tests/manual_service_postput.js +0 -348
- package/tests/manual_tenant_delete.js +0 -186
- package/tests/manual_tenant_gethead.js +0 -268
- package/tests/manual_tenant_postput.js +0 -293
- package/tests/manual_test.sh +0 -352
- package/tests/manual_userdata_get.js +0 -173
- package/tests/manual_usertoken_gethead.js +0 -136
- package/tests/manual_usertoken_postput.js +0 -310
- package/tests/manual_version_get.js +0 -127
- package/tests/run_local_test_k2hdkc.sh +0 -174
- package/tests/test.sh +0 -333
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* K2HR3 REST API
|
|
3
|
-
*
|
|
4
|
-
* Copyright 2017 Yahoo Japan Corporation.
|
|
5
|
-
*
|
|
6
|
-
* K2HR3 is K2hdkc based Resource and Roles and policy Rules, gathers
|
|
7
|
-
* common management information for the cloud.
|
|
8
|
-
* K2HR3 can dynamically manage information as "who", "what", "operate".
|
|
9
|
-
* These are stored as roles, resources, policies in K2hdkc, and the
|
|
10
|
-
* client system can dynamically read and modify these information.
|
|
11
|
-
*
|
|
12
|
-
* For the full copyright and license information, please view
|
|
13
|
-
* the license file that was distributed with this source code.
|
|
14
|
-
*
|
|
15
|
-
* AUTHOR: Takeshi Nakatani
|
|
16
|
-
* CREATE: Wed Jun 8 2017
|
|
17
|
-
* REVISION:
|
|
18
|
-
*
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
'use strict';
|
|
22
|
-
|
|
23
|
-
var http = require('http');
|
|
24
|
-
var https = require('https');
|
|
25
|
-
|
|
26
|
-
var cacerts = require('../lib/cacerts');
|
|
27
|
-
var apiutil = require('../lib/k2hr3apiutil');
|
|
28
|
-
var cliutil = require('../lib/k2hr3cliutil');
|
|
29
|
-
var r3keys = require('../lib/k2hr3keys').getK2hr3Keys;
|
|
30
|
-
|
|
31
|
-
// Debug logging objects
|
|
32
|
-
var r3logger = require('../lib/dbglogging');
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
// Hostname and port from env
|
|
36
|
-
//
|
|
37
|
-
var hostname = apiutil.getSafeString(process.env.APIHOST);
|
|
38
|
-
var hostport = apiutil.getSafeString(process.env.APIPORT);
|
|
39
|
-
var is_https = apiutil.compareCaseString('yes', process.env.HTTPS_ENV);
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
// Request API for test
|
|
43
|
-
//
|
|
44
|
-
function postV1Policy(method, token, name, effect, action, resource, alias)
|
|
45
|
-
{
|
|
46
|
-
var strbody = '';
|
|
47
|
-
var headers = {
|
|
48
|
-
'Content-Type': 'application/json',
|
|
49
|
-
'X-Auth-Token': token
|
|
50
|
-
};
|
|
51
|
-
var options = {
|
|
52
|
-
'host': hostname,
|
|
53
|
-
'port': hostport,
|
|
54
|
-
'path': '/v1/policy',
|
|
55
|
-
'method': method
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
if(apiutil.compareCaseString('post', method)){
|
|
59
|
-
var body = {
|
|
60
|
-
'policy': {
|
|
61
|
-
'name': name,
|
|
62
|
-
'effect': effect,
|
|
63
|
-
'action': action,
|
|
64
|
-
'resource': resource,
|
|
65
|
-
'condition': null,
|
|
66
|
-
'alias': alias
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
strbody = JSON.stringify(body);
|
|
71
|
-
headers['Content-Length'] = strbody.length;
|
|
72
|
-
options.headers = headers;
|
|
73
|
-
options.path = '/v1/policy';
|
|
74
|
-
|
|
75
|
-
}else if(apiutil.compareCaseString('put', method)){
|
|
76
|
-
var urlarg = '';
|
|
77
|
-
var already_set = false;
|
|
78
|
-
if('' === name || apiutil.isSafeString(name)){
|
|
79
|
-
urlarg += already_set ? '&name=' : '?name=';
|
|
80
|
-
urlarg += name;
|
|
81
|
-
already_set = true;
|
|
82
|
-
}
|
|
83
|
-
if('' === effect || apiutil.isSafeString(effect)){
|
|
84
|
-
urlarg += already_set ? '&effect=' : '?effect=';
|
|
85
|
-
urlarg += effect;
|
|
86
|
-
already_set = true;
|
|
87
|
-
}
|
|
88
|
-
if('' === action || apiutil.isSafeString(action)){
|
|
89
|
-
urlarg += already_set ? '&action=' : '?action=';
|
|
90
|
-
urlarg += action;
|
|
91
|
-
already_set = true;
|
|
92
|
-
}
|
|
93
|
-
if('' === resource || apiutil.isSafeString(resource)){
|
|
94
|
-
urlarg += already_set ? '&resource=' : '?resource=';
|
|
95
|
-
urlarg += resource;
|
|
96
|
-
already_set = true;
|
|
97
|
-
}
|
|
98
|
-
//if('' === condition || apiutil.isSafeString(condition)){
|
|
99
|
-
// urlarg += already_set ? '&condition=' : '?condition=';
|
|
100
|
-
// urlarg += condition;
|
|
101
|
-
// already_set = true;
|
|
102
|
-
//}
|
|
103
|
-
if('' === alias || apiutil.isSafeString(alias)){
|
|
104
|
-
urlarg += already_set ? '&alias=' : '?alias=';
|
|
105
|
-
urlarg += alias;
|
|
106
|
-
already_set = true;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
headers['Content-Length'] = 0;
|
|
110
|
-
options.headers = headers;
|
|
111
|
-
options.path = '/v1/policy' + encodeURI(urlarg);
|
|
112
|
-
|
|
113
|
-
}else{
|
|
114
|
-
console.log('method must be POST or PUT : ' + method);
|
|
115
|
-
process.exit(0);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
r3logger.dlog('request options = ' + JSON.stringify(options));
|
|
119
|
-
r3logger.dlog('request headers = ' + JSON.stringify(headers));
|
|
120
|
-
r3logger.dlog('request body = ' + strbody);
|
|
121
|
-
|
|
122
|
-
var httpobj;
|
|
123
|
-
if(is_https){
|
|
124
|
-
if(null !== cacerts.ca){
|
|
125
|
-
options.ca = cacerts.ca;
|
|
126
|
-
}
|
|
127
|
-
options.rejectUnauthorized = false; // always insecure for this manual test
|
|
128
|
-
options.agent = new https.Agent(options);
|
|
129
|
-
httpobj = https;
|
|
130
|
-
}else{
|
|
131
|
-
options.agent = new http.Agent(options);
|
|
132
|
-
httpobj = http;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
var req = httpobj.request(options, function(res)
|
|
136
|
-
{
|
|
137
|
-
var response = '';
|
|
138
|
-
console.log('RESPONSE CODE = ' + res.statusCode);
|
|
139
|
-
r3logger.dlog('response status = ' + res.statusCode);
|
|
140
|
-
r3logger.dlog('response header = ' + JSON.stringify(res.headers));
|
|
141
|
-
res.setEncoding('utf8');
|
|
142
|
-
|
|
143
|
-
res.on('data', function (chunk)
|
|
144
|
-
{
|
|
145
|
-
r3logger.dlog('response chunk = ' + chunk);
|
|
146
|
-
response += chunk;
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
res.on('end', function(result) // eslint-disable-line no-unused-vars
|
|
150
|
-
{
|
|
151
|
-
r3logger.mlog(r3logger.dump(response)); // response is object(or not)
|
|
152
|
-
console.log('RESPONSE BODY = ' + JSON.stringify(response));
|
|
153
|
-
process.exit(0);
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
req.on('error', function(e)
|
|
158
|
-
{
|
|
159
|
-
r3logger.elog('problem with request: ' + e.message);
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
// write data to request body
|
|
163
|
-
if('' !== strbody){
|
|
164
|
-
req.write(strbody);
|
|
165
|
-
}
|
|
166
|
-
req.end();
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
//
|
|
170
|
-
// run
|
|
171
|
-
//
|
|
172
|
-
cliutil.getConsoleInput('Method(POST/PUT) : ', true, false, function(isbreak, method)
|
|
173
|
-
{
|
|
174
|
-
if(isbreak){
|
|
175
|
-
process.exit(0);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
var _method;
|
|
179
|
-
if(apiutil.compareCaseString('post', method)){
|
|
180
|
-
_method = 'POST';
|
|
181
|
-
}else if(apiutil.compareCaseString('put', method)){
|
|
182
|
-
_method = 'PUT';
|
|
183
|
-
}else{
|
|
184
|
-
console.log('method must be POST or PUT : ' + method);
|
|
185
|
-
process.exit(0);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
cliutil.getConsoleInput('Scoped user token for tenant : ', true, false, function(isbreak, token)
|
|
189
|
-
{
|
|
190
|
-
if(isbreak){
|
|
191
|
-
process.exit(0);
|
|
192
|
-
}
|
|
193
|
-
var _token = token;
|
|
194
|
-
|
|
195
|
-
cliutil.getConsoleInput('Policy name : ', true, false, function(isbreak, name)
|
|
196
|
-
{
|
|
197
|
-
if(isbreak){
|
|
198
|
-
process.exit(0);
|
|
199
|
-
}
|
|
200
|
-
var _name = name;
|
|
201
|
-
|
|
202
|
-
cliutil.getConsoleInput(' effect(null/allow/deny) : ', true, false, function(isbreak, effect)
|
|
203
|
-
{
|
|
204
|
-
if(isbreak){
|
|
205
|
-
process.exit(0);
|
|
206
|
-
}
|
|
207
|
-
var _effect;
|
|
208
|
-
if('' === apiutil.getSafeString(effect) || apiutil.compareCaseString('null', apiutil.getSafeString(effect))){
|
|
209
|
-
_effect = null;
|
|
210
|
-
}else if(apiutil.compareCaseString('allow', apiutil.getSafeString(effect))){
|
|
211
|
-
_effect = 'allow';
|
|
212
|
-
}else if(apiutil.compareCaseString('deny', apiutil.getSafeString(effect))){
|
|
213
|
-
_effect = 'deny';
|
|
214
|
-
}else{
|
|
215
|
-
console.log('effect must be empty or null or allow or deny : ' + effect);
|
|
216
|
-
process.exit(0);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
cliutil.getConsoleInput(' action(specify null/read/write multiple with \',\') : ', true, false, function(isbreak, action)
|
|
220
|
-
{
|
|
221
|
-
if(isbreak){
|
|
222
|
-
process.exit(0);
|
|
223
|
-
}
|
|
224
|
-
var _action;
|
|
225
|
-
if('' === apiutil.getSafeString(action) || apiutil.compareCaseString('null', apiutil.getSafeString(action))){
|
|
226
|
-
_action = null;
|
|
227
|
-
}else{
|
|
228
|
-
// parse ','
|
|
229
|
-
var keys = r3keys(); // do not need user/tenant
|
|
230
|
-
_action = new Array(0);
|
|
231
|
-
var strarray= action.split(',');
|
|
232
|
-
for(var cnt = 0; cnt < strarray.length; ++cnt){
|
|
233
|
-
var strtmp = strarray[cnt].trim();
|
|
234
|
-
if(apiutil.compareCaseString(keys.VALUE_READ, apiutil.getSafeString(strtmp))){
|
|
235
|
-
_action.push(keys.ACTION_READ_KEY);
|
|
236
|
-
}else if(apiutil.compareCaseString(keys.VALUE_WRITE, apiutil.getSafeString(strtmp))){
|
|
237
|
-
_action.push(keys.ACTION_WRITE_KEY);
|
|
238
|
-
}else{
|
|
239
|
-
console.log('action must be empty or null or array(read / write) : ' + action);
|
|
240
|
-
process.exit(0);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
cliutil.getConsoleInput(' resource(specify null/yrn multiple with \',\') : ', true, false, function(isbreak, resource)
|
|
246
|
-
{
|
|
247
|
-
if(isbreak){
|
|
248
|
-
process.exit(0);
|
|
249
|
-
}
|
|
250
|
-
var _resource;
|
|
251
|
-
if('' === apiutil.getSafeString(resource) || apiutil.compareCaseString('null', apiutil.getSafeString(resource))){
|
|
252
|
-
_resource = null;
|
|
253
|
-
}else{
|
|
254
|
-
// parse ','
|
|
255
|
-
_resource = new Array(0);
|
|
256
|
-
var strarray= resource.split(',');
|
|
257
|
-
for(var cnt = 0; cnt < strarray.length; ++cnt){
|
|
258
|
-
var strtmp = strarray[cnt].trim();
|
|
259
|
-
_resource.push(strtmp);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
cliutil.getConsoleInput(' alias(specify null/yrn multiple with \',\') : ', true, false, function(isbreak, alias)
|
|
264
|
-
{
|
|
265
|
-
if(isbreak){
|
|
266
|
-
process.exit(0);
|
|
267
|
-
}
|
|
268
|
-
var _alias;
|
|
269
|
-
if('' === apiutil.getSafeString(alias) || apiutil.compareCaseString('null', apiutil.getSafeString(alias))){
|
|
270
|
-
_alias = null;
|
|
271
|
-
}else{
|
|
272
|
-
// parse ','
|
|
273
|
-
_alias = new Array(0);
|
|
274
|
-
var strarray= alias.split(',');
|
|
275
|
-
for(var cnt = 0; cnt < strarray.length; ++cnt){
|
|
276
|
-
var strtmp = strarray[cnt].trim();
|
|
277
|
-
_alias.push(strtmp);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
// run
|
|
281
|
-
postV1Policy(_method, _token, _name, _effect, _action, _resource, _alias);
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
/*
|
|
291
|
-
* Local variables:
|
|
292
|
-
* tab-width: 4
|
|
293
|
-
* c-basic-offset: 4
|
|
294
|
-
* End:
|
|
295
|
-
* vim600: noexpandtab sw=4 ts=4 fdm=marker
|
|
296
|
-
* vim<600: noexpandtab sw=4 ts=4
|
|
297
|
-
*/
|