@steedos/service-package-registry 2.5.18-beta.2 → 2.5.18-beta.4
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/main/default/manager/loader.js +54 -18
- package/main/default/manager/packages.js +5 -3
- package/main/default/manager/registry.js +25 -1
- package/main/default/objects/steedos_packages/fields/dependencies.field.yml +4 -0
- package/main/default/pages/steedos_package_detail.page.amis.json +31 -1
- package/main/default/pages/steedos_packages_list.page.amis.json +3 -3
- package/package.json +7 -7
- package/project.package.service.js +60 -5
- package/main/default/routes/nodes.router.js +0 -166
- package/main/default/routes/registry.router.js +0 -21
|
@@ -10,6 +10,21 @@ const packagesFilePath = path.join(userDir, 'steedos-packages.yml');
|
|
|
10
10
|
const metadataApi = require('@steedos/metadata-api');
|
|
11
11
|
const util = require('./util');
|
|
12
12
|
const metaDataCore = require('@steedos/metadata-core');
|
|
13
|
+
const npmRCFilePath = path.join(userDir, '.npmrc')
|
|
14
|
+
|
|
15
|
+
// 读取.steedos下的.npmrc文件内容
|
|
16
|
+
const getNpmrc = ()=>{
|
|
17
|
+
let npmrc = "";
|
|
18
|
+
if(fs.existsSync(npmRCFilePath)){
|
|
19
|
+
npmrc = fs.readFileSync(npmRCFilePath, 'utf8')
|
|
20
|
+
}
|
|
21
|
+
return npmrc;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// 写入.steedos下的.npmrc文件内容
|
|
25
|
+
const setNpmrc = (data)=>{
|
|
26
|
+
fs.writeFileSync(npmRCFilePath, data);
|
|
27
|
+
}
|
|
13
28
|
|
|
14
29
|
const getPackageYmlData = (packagePath)=>{
|
|
15
30
|
let packageYmlData = {};
|
|
@@ -85,6 +100,8 @@ const appendToPackagesConfig = (packageName, options, actionName)=>{
|
|
|
85
100
|
}
|
|
86
101
|
|
|
87
102
|
const loadPackages = async ()=>{
|
|
103
|
+
let schema = objectql.getSteedosSchema();
|
|
104
|
+
let broker = schema.broker;
|
|
88
105
|
const packages = loadPackagesConfig();
|
|
89
106
|
for (const packageName in packages) {
|
|
90
107
|
const package = packages[packageName]
|
|
@@ -94,10 +111,12 @@ const loadPackages = async ()=>{
|
|
|
94
111
|
const packagePath = package.path || path.dirname(require.resolve(`${packageName}/package.json`))
|
|
95
112
|
if(packagePath){
|
|
96
113
|
const packageInfo = await loadPackage(packageName, packagePath);
|
|
97
|
-
|
|
114
|
+
if(packageInfo){
|
|
115
|
+
appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: true});
|
|
116
|
+
}
|
|
98
117
|
}
|
|
99
118
|
} catch (error) {
|
|
100
|
-
|
|
119
|
+
broker.logger.error(`start package ${packageName} error: ${error.message}`)
|
|
101
120
|
}
|
|
102
121
|
|
|
103
122
|
}else if(package.local !== true){
|
|
@@ -115,7 +134,7 @@ const loadPackages = async ()=>{
|
|
|
115
134
|
const packageInfo = await loadPackage(packageName);
|
|
116
135
|
appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: false});
|
|
117
136
|
} catch (error) {
|
|
118
|
-
|
|
137
|
+
broker.logger.error(`start package ${packageName} error: ${error.message}`)
|
|
119
138
|
}
|
|
120
139
|
}
|
|
121
140
|
}else if(package.local === true && package.static != true){
|
|
@@ -124,9 +143,13 @@ const loadPackages = async ()=>{
|
|
|
124
143
|
packagePath = path.resolve(process.cwd(), packagePath)
|
|
125
144
|
}
|
|
126
145
|
if(packagePath){
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
146
|
+
try {
|
|
147
|
+
const packageInfo = await loadPackage(packageName, packagePath);
|
|
148
|
+
if(packageInfo){
|
|
149
|
+
appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: true});
|
|
150
|
+
}
|
|
151
|
+
} catch (error) {
|
|
152
|
+
broker.logger.error(`start package ${packageName} error: ${error.message}`)
|
|
130
153
|
}
|
|
131
154
|
}
|
|
132
155
|
}
|
|
@@ -217,7 +240,7 @@ const loadDependency = async (mainPackageInfo = {}, dependencyName, dependencyVe
|
|
|
217
240
|
}
|
|
218
241
|
|
|
219
242
|
const loadPackage = async (packageName, packagePath)=>{
|
|
220
|
-
try {
|
|
243
|
+
// try {
|
|
221
244
|
if(!packagePath){
|
|
222
245
|
packagePath = path.dirname(require.resolve(`${packageName}/package.json`, {
|
|
223
246
|
paths: [path.join(userDir, 'node_modules')]
|
|
@@ -231,19 +254,28 @@ const loadPackage = async (packageName, packagePath)=>{
|
|
|
231
254
|
return ;
|
|
232
255
|
}
|
|
233
256
|
const packageInfo = require(path.join(packagePath, 'package.json'));
|
|
257
|
+
const packageYml = getPackageYmlData(packagePath);
|
|
258
|
+
|
|
259
|
+
if(packageYml && packageYml.license && _.isArray(packageYml.license) && packageYml.license.length > 0){
|
|
260
|
+
const has = await broker.call('@steedos/service-license.checkProducts', {keys: packageYml.license});
|
|
261
|
+
if(!has){
|
|
262
|
+
throw new Error(`Software package 「${packageName}」 requires 「${packageYml.license.join(',')}」 license.`)
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
234
266
|
await destroyExistThePackageService(packageInfo);
|
|
235
267
|
await steedos.loadPackage(packagePath);
|
|
236
|
-
const packageConfig = getPackageConfig(packageName);
|
|
237
|
-
if(packageInfo.dependencies){
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
268
|
+
// const packageConfig = getPackageConfig(packageName);
|
|
269
|
+
// if(packageInfo.dependencies){
|
|
270
|
+
// for (const dependencyName in packageInfo.dependencies) {
|
|
271
|
+
// const dependencyVersion = packageInfo.dependencies[dependencyName];
|
|
272
|
+
// await loadDependency(packageConfig, dependencyName, dependencyVersion);
|
|
273
|
+
// }
|
|
274
|
+
// }
|
|
243
275
|
return Object.assign({packagePath: packagePath}, packageInfo);
|
|
244
|
-
} catch (error) {
|
|
245
|
-
console.error(packageName, packagePath, error)
|
|
246
|
-
}
|
|
276
|
+
// } catch (error) {
|
|
277
|
+
// console.error(packageName, packagePath, error)
|
|
278
|
+
// }
|
|
247
279
|
}
|
|
248
280
|
|
|
249
281
|
const disablePackage = async (packageName)=>{
|
|
@@ -288,6 +320,7 @@ const removePackageConfig = (packageName)=>{
|
|
|
288
320
|
const getPackageConfig = (packageName)=>{
|
|
289
321
|
const packages = loadPackagesConfig();
|
|
290
322
|
return _.find(packages, (info, name)=>{
|
|
323
|
+
info.name = name;
|
|
291
324
|
return packageName == name
|
|
292
325
|
});
|
|
293
326
|
}
|
|
@@ -405,5 +438,8 @@ module.exports = {
|
|
|
405
438
|
getPackageInfo,
|
|
406
439
|
getPackageMetadata,
|
|
407
440
|
installPackage,
|
|
408
|
-
getPackageYmlData
|
|
441
|
+
getPackageYmlData,
|
|
442
|
+
getNpmrc,
|
|
443
|
+
setNpmrc,
|
|
444
|
+
getPackageConfig
|
|
409
445
|
}
|
|
@@ -186,9 +186,11 @@ const scanPackageMetadatas = async (packagePath) => {
|
|
|
186
186
|
return packageMetadatas;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
const checkDependencies = async (packagePath)=>{
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
const checkDependencies = async (packagePath, dependencies)=>{
|
|
190
|
+
if(!dependencies){
|
|
191
|
+
const packageServiceConfig = require(path.join(packagePath, 'package.service.js'));
|
|
192
|
+
dependencies = (packageServiceConfig && packageServiceConfig.dependencies) || [];
|
|
193
|
+
}
|
|
192
194
|
for(const item of dependencies){
|
|
193
195
|
const hasService = await objectql.getSteedosSchema().broker.registry.hasService(item);
|
|
194
196
|
if(!hasService){
|
|
@@ -14,6 +14,8 @@ let installDenyList = [];
|
|
|
14
14
|
let installAllAllowed = true;
|
|
15
15
|
let installVersionRestricted = false;
|
|
16
16
|
var activePromise = Promise.resolve();
|
|
17
|
+
const _ = require('lodash');
|
|
18
|
+
const npa = require("npm-package-arg");
|
|
17
19
|
|
|
18
20
|
log.init({});
|
|
19
21
|
|
|
@@ -268,6 +270,27 @@ async function installModule(module, version, url, registry_url) {
|
|
|
268
270
|
return activePromise;
|
|
269
271
|
}
|
|
270
272
|
|
|
273
|
+
async function yarnAddPackage(yarnPackage){
|
|
274
|
+
var installDir = settings.userDir || ".";
|
|
275
|
+
var yarnArgs = ['add', '-E', ...yarnPackage.split(' '), '--json'];
|
|
276
|
+
const data = await exec.run(yarnCommand, yarnArgs, {cwd: installDir}, true);
|
|
277
|
+
const formatData = JSON.parse(_.last(_.compact(data.stdout.split('\n'))))
|
|
278
|
+
// 解析 yarn add 返回的结果
|
|
279
|
+
const steedosPackages = [];
|
|
280
|
+
_.each(formatData.data.trees, (module)=>{
|
|
281
|
+
const parsed = npa(module.name);
|
|
282
|
+
const packagePath = path.dirname(require.resolve(`${parsed.name}/package.json`, {
|
|
283
|
+
paths: [path.join(installDir, 'node_modules')]
|
|
284
|
+
}))
|
|
285
|
+
steedosPackages.push({
|
|
286
|
+
name: parsed.name,
|
|
287
|
+
version: parsed.rawSpec,
|
|
288
|
+
path: packagePath
|
|
289
|
+
})
|
|
290
|
+
})
|
|
291
|
+
return steedosPackages;
|
|
292
|
+
}
|
|
293
|
+
|
|
271
294
|
|
|
272
295
|
async function uninstallModule(module){
|
|
273
296
|
if (Buffer.isBuffer(module)) {
|
|
@@ -326,5 +349,6 @@ const isPackageUrl = (url)=>{
|
|
|
326
349
|
module.exports = {
|
|
327
350
|
installModule,
|
|
328
351
|
uninstallModule,
|
|
329
|
-
isPackageUrl
|
|
352
|
+
isPackageUrl,
|
|
353
|
+
yarnAddPackage
|
|
330
354
|
}
|
|
@@ -68,12 +68,42 @@
|
|
|
68
68
|
"mode": "read",
|
|
69
69
|
"className": "mb-4",
|
|
70
70
|
"excludedFields": [
|
|
71
|
-
"metadata"
|
|
71
|
+
"metadata",
|
|
72
|
+
"dependencies"
|
|
72
73
|
]
|
|
73
74
|
}
|
|
74
75
|
],
|
|
75
76
|
"className": "p-0",
|
|
76
77
|
"id": "u:5d4e7e3f6ecc"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"title": "依赖服务",
|
|
81
|
+
"body": [
|
|
82
|
+
{
|
|
83
|
+
"type": "steedos-object-form",
|
|
84
|
+
"label": "对象表单",
|
|
85
|
+
"objectApiName": "${objectName}",
|
|
86
|
+
"recordId": "${recordId}",
|
|
87
|
+
"appId": "${appId}",
|
|
88
|
+
"id": "u:fec578db3278",
|
|
89
|
+
"mode": "read",
|
|
90
|
+
"className": "mb-4",
|
|
91
|
+
"fields": [
|
|
92
|
+
"dependencies"
|
|
93
|
+
],
|
|
94
|
+
"fieldsExtend": {
|
|
95
|
+
"dependencies": {
|
|
96
|
+
"label": false,
|
|
97
|
+
"amis": {
|
|
98
|
+
"type": "tpl",
|
|
99
|
+
"tpl": "${dependencies | join: }"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"className": "p-0",
|
|
106
|
+
"id": "u:5d4e7e3f6ecc"
|
|
77
107
|
}
|
|
78
108
|
],
|
|
79
109
|
"id": "u:148cf8e840eb"
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
"body": [
|
|
27
27
|
{
|
|
28
28
|
"type": "tpl",
|
|
29
|
-
"tpl": "<div class='antd-Card-heading bg-white'><span class='antd-Card-avtar pull-left thumb-md m-r slds-icon slds-icon_container slds-icon-${iconCategory}-${iconName} ${display === \"split\" && 'hidden'}'><img class='antd-Card-img'src='${icon}' /></span><div class='antd-Card-meta'><div class='antd-Card-title'><span class='antd-TplField'><span>${label}</span></span></div><div class='antd-Card-subTitle'><span class='antd-TplField'><span>${description}</span></span></div><div class='antd-Card-desc'><span class='antd-TplField'><span><span class='bg
|
|
29
|
+
"tpl": "<div class='antd-Card-heading bg-white'><span class='antd-Card-avtar pull-left thumb-md m-r slds-icon slds-icon_container slds-icon-${iconCategory}-${iconName} ${display === \"split\" && 'hidden'}'><img class='antd-Card-img'src='${icon}' /></span><div class='antd-Card-meta'><div class='antd-Card-title'><span class='antd-TplField' title='${label}'><span>${label}</span></span></div><div class='antd-Card-subTitle'><span class='antd-TplField' title='${description}'><span>${description}</span></span></div><div class='antd-Card-desc'><span class='antd-TplField'><span><span class='bg-${status === 'enable' ? 'green': 'gray'}-300 rounded-full px-2 py-0.5 mt-2 inline-block'>${_display.status}</span><span class='text-gray-600 px-2 py-0.5 mt-2 inline-block float-right'>${version}</span></span></span></div></div></div>"
|
|
30
30
|
}
|
|
31
31
|
],
|
|
32
32
|
"actions": [
|
|
33
33
|
{
|
|
34
34
|
"label": "${uiSchema.actions.enable.label}",
|
|
35
|
-
"disabledOn": "${status === 'enable'}",
|
|
35
|
+
"disabledOn": "${status === 'enable' || window:Meteor.settings.public.enable_saas}",
|
|
36
36
|
"className": "mr-4",
|
|
37
37
|
"onEvent": {
|
|
38
38
|
"click": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"label": "${uiSchema.actions.disable.label}",
|
|
51
|
-
"disabledOn": "${status !== 'enable'}",
|
|
51
|
+
"disabledOn": "${status !== 'enable' || window:Meteor.settings.public.enable_saas}",
|
|
52
52
|
"onEvent": {
|
|
53
53
|
"click": {
|
|
54
54
|
"actions": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-package-registry",
|
|
3
|
-
"version": "2.5.18-beta.
|
|
3
|
+
"version": "2.5.18-beta.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "package.service.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"author": "",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@steedos/auth": "2.5.18-beta.
|
|
13
|
-
"@steedos/core": "2.5.18-beta.
|
|
14
|
-
"@steedos/metadata-core": "2.5.18-beta.
|
|
15
|
-
"@steedos/objectql": "2.5.18-beta.
|
|
16
|
-
"@steedos/service-package-loader": "2.5.18-beta.
|
|
12
|
+
"@steedos/auth": "2.5.18-beta.4",
|
|
13
|
+
"@steedos/core": "2.5.18-beta.4",
|
|
14
|
+
"@steedos/metadata-core": "2.5.18-beta.4",
|
|
15
|
+
"@steedos/objectql": "2.5.18-beta.4",
|
|
16
|
+
"@steedos/service-package-loader": "2.5.18-beta.4",
|
|
17
17
|
"fs-extra": "8.1.0",
|
|
18
18
|
"i18next": "20.3.2",
|
|
19
19
|
"json-stringify-safe": "5.0.1",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "dbed817b5b9689fd0ee6bbfb8e9911a18a3c8403"
|
|
35
35
|
}
|
|
@@ -155,13 +155,24 @@ module.exports = {
|
|
|
155
155
|
enablePackage:{
|
|
156
156
|
async handler(ctx) {
|
|
157
157
|
const { module } = ctx.params
|
|
158
|
-
|
|
158
|
+
let packageConfig = await loader.getPackageConfig(module);
|
|
159
|
+
|
|
159
160
|
if(packageConfig.static){
|
|
160
161
|
packageConfig = Object.assign({}, packageConfig, this.getStaticPackageInfo(packageConfig, packageConfig.name))
|
|
161
162
|
}
|
|
162
|
-
|
|
163
|
-
const metadata = await loader.getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfig.path));
|
|
163
|
+
|
|
164
164
|
const packageYmlData = loader.getPackageYmlData(packageConfig.path);
|
|
165
|
+
|
|
166
|
+
if(packageYmlData.dependencies){
|
|
167
|
+
await packages.checkDependencies(path.resolve(packageConfig.path), packageYmlData.dependencies || [])
|
|
168
|
+
}
|
|
169
|
+
packageConfig = await loader.enablePackage(module);
|
|
170
|
+
|
|
171
|
+
if(packageConfig.static){
|
|
172
|
+
packageConfig = Object.assign({}, packageConfig, this.getStaticPackageInfo(packageConfig, packageConfig.name))
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const metadata = await loader.getPackageMetadata(util.getPackageRelativePath(process.cwd(), packageConfig.path));
|
|
165
176
|
await ctx.broker.call(`@steedos/service-packages.install`, {
|
|
166
177
|
serviceInfo: Object.assign({}, packageConfig, {
|
|
167
178
|
packageYmlData,
|
|
@@ -225,8 +236,24 @@ module.exports = {
|
|
|
225
236
|
async handler(ctx) {
|
|
226
237
|
return await this.addPackages(ctx);
|
|
227
238
|
}
|
|
239
|
+
},
|
|
240
|
+
getNpmrc: {
|
|
241
|
+
async handler(ctx){
|
|
242
|
+
return await loader.getNpmrc()
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
setNpmrc: {
|
|
246
|
+
async handler(ctx){
|
|
247
|
+
const { npmrc } = ctx.params;
|
|
248
|
+
return await loader.setNpmrc(npmrc)
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
yarnAddPackage: {
|
|
252
|
+
async handler(ctx) {
|
|
253
|
+
const { yarnPackage } = ctx.params;
|
|
254
|
+
return await this.yarnAddPackage(yarnPackage);
|
|
255
|
+
}
|
|
228
256
|
}
|
|
229
|
-
|
|
230
257
|
},
|
|
231
258
|
|
|
232
259
|
/**
|
|
@@ -478,7 +505,7 @@ module.exports = {
|
|
|
478
505
|
instanceID: this.broker.instanceID,
|
|
479
506
|
path: _packageInfo.path,
|
|
480
507
|
local: _packageInfo.local,
|
|
481
|
-
enable:
|
|
508
|
+
enable: false,
|
|
482
509
|
version: _packageInfo.version,
|
|
483
510
|
description: _packageInfo.description,
|
|
484
511
|
metadata: metadata,
|
|
@@ -489,6 +516,34 @@ module.exports = {
|
|
|
489
516
|
}
|
|
490
517
|
}
|
|
491
518
|
}
|
|
519
|
+
},
|
|
520
|
+
yarnAddPackage: {
|
|
521
|
+
async handler(yarnPackage) {
|
|
522
|
+
const packages = await registry.yarnAddPackage(yarnPackage);
|
|
523
|
+
for (const packageInfo of packages) {
|
|
524
|
+
const packagePath = packageInfo.path;
|
|
525
|
+
loader.appendToPackagesConfig(packageInfo.name, {
|
|
526
|
+
version: packageInfo.version,
|
|
527
|
+
path: util.getPackageRelativePath(process.cwd(), packagePath),
|
|
528
|
+
enable: false
|
|
529
|
+
});
|
|
530
|
+
const metadata = await loader.getPackageMetadata(util.getPackageRelativePath(process.cwd(), packagePath));
|
|
531
|
+
const packageYmlData = loader.getPackageYmlData(packagePath);
|
|
532
|
+
await this.broker.call(`@steedos/service-packages.install`, {
|
|
533
|
+
serviceInfo: Object.assign({}, {
|
|
534
|
+
version: packageInfo.version,
|
|
535
|
+
path: packageInfo.path
|
|
536
|
+
}, {
|
|
537
|
+
packageYmlData: packageYmlData,
|
|
538
|
+
name: packageInfo.name,
|
|
539
|
+
enable: false,
|
|
540
|
+
nodeID: broker.nodeID,
|
|
541
|
+
instanceID: broker.instanceID,
|
|
542
|
+
metadata: metadata
|
|
543
|
+
})
|
|
544
|
+
})
|
|
545
|
+
}
|
|
546
|
+
}
|
|
492
547
|
}
|
|
493
548
|
},
|
|
494
549
|
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
const express = require('express');
|
|
2
|
-
const router = express.Router();
|
|
3
|
-
const core = require('@steedos/core');
|
|
4
|
-
const registry = require('../manager/registry');
|
|
5
|
-
const loader = require('../manager/loader');
|
|
6
|
-
const objectql = require('@steedos/objectql');
|
|
7
|
-
let schema = objectql.getSteedosSchema();
|
|
8
|
-
router.get('/api/nodes/install', core.requireAuthentication, async function (req, res) {
|
|
9
|
-
const userSession = req.user;
|
|
10
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
11
|
-
const body = JSON.parse(decodeURIComponent(Buffer.from(req.query.data, "base64").toString('utf8')));
|
|
12
|
-
if(!isSpaceAdmin){
|
|
13
|
-
return res.status(401).send({ message: 'No permission' });
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
const { module, version, label, description, nodeID} = body || {};
|
|
17
|
-
let broker = schema.broker;
|
|
18
|
-
const result = await broker.call(`@steedos/service-project.installPackage`, {
|
|
19
|
-
module, version, label, description
|
|
20
|
-
},{
|
|
21
|
-
nodeID: nodeID
|
|
22
|
-
})
|
|
23
|
-
res.redirect(302, `/app/admin/steedos_packages/grid/all`);
|
|
24
|
-
// res.status(200).send(result); //TODO 完善返回信息
|
|
25
|
-
} catch (error) {
|
|
26
|
-
console.error(error);
|
|
27
|
-
res.status(500).send({error: error.message});
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
router.post('/api/nodes/uninstall', core.requireAuthentication, async function (req, res) {
|
|
32
|
-
const userSession = req.user;
|
|
33
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
34
|
-
const body = req.body;
|
|
35
|
-
if(!isSpaceAdmin){
|
|
36
|
-
return res.status(401).send({ message: 'No permission' });
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
await loader.removePackage(body.module);
|
|
40
|
-
await registry.uninstallModule(body.module)
|
|
41
|
-
const { module, nodeID} = body || {};
|
|
42
|
-
let broker = schema.broker;
|
|
43
|
-
const result = await broker.call(`@steedos/service-project.uninstallPackage`, {
|
|
44
|
-
module
|
|
45
|
-
},{
|
|
46
|
-
nodeID: nodeID
|
|
47
|
-
})
|
|
48
|
-
res.status(200).send(result); //TODO 完善返回信息
|
|
49
|
-
} catch (error) {
|
|
50
|
-
console.error(error);
|
|
51
|
-
res.status(500).send({error: error.message});
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
router.post('/api/nodes/reload', core.requireAuthentication, async function (req, res) {
|
|
56
|
-
const userSession = req.user;
|
|
57
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
58
|
-
const body = req.body;
|
|
59
|
-
if(!isSpaceAdmin){
|
|
60
|
-
return res.status(401).send({ message: 'No permission' });
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
const { module, nodeID} = body || {};
|
|
64
|
-
let broker = schema.broker;
|
|
65
|
-
const result = await broker.call(`@steedos/service-project.reloadPackage`, {
|
|
66
|
-
module
|
|
67
|
-
},{
|
|
68
|
-
nodeID: nodeID
|
|
69
|
-
})
|
|
70
|
-
res.status(200).send(result);
|
|
71
|
-
} catch (error) {
|
|
72
|
-
console.error(error);
|
|
73
|
-
res.status(500).send({error: error.message});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
router.post('/api/nodes/disable', core.requireAuthentication, async function (req, res) {
|
|
78
|
-
const userSession = req.user;
|
|
79
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
80
|
-
const body = req.body;
|
|
81
|
-
if(!isSpaceAdmin){
|
|
82
|
-
return res.status(401).send({ message: 'No permission' });
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
const { module, nodeID} = body || {};
|
|
86
|
-
let broker = schema.broker;
|
|
87
|
-
const result = await broker.call(`@steedos/service-project.disablePackage`, {
|
|
88
|
-
module
|
|
89
|
-
},{
|
|
90
|
-
nodeID: nodeID
|
|
91
|
-
})
|
|
92
|
-
res.status(200).send(result);
|
|
93
|
-
} catch (error) {
|
|
94
|
-
console.error(error);
|
|
95
|
-
res.status(500).send({error: error.message});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
router.post('/api/nodes/enable', core.requireAuthentication, async function (req, res) {
|
|
100
|
-
const userSession = req.user;
|
|
101
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
102
|
-
const body = req.body;
|
|
103
|
-
if(!isSpaceAdmin){
|
|
104
|
-
return res.status(401).send({ message: 'No permission' });
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
const { module, nodeID} = body || {};
|
|
108
|
-
let broker = schema.broker;
|
|
109
|
-
const result = await broker.call(`@steedos/service-project.enablePackage`, {
|
|
110
|
-
module
|
|
111
|
-
},{
|
|
112
|
-
nodeID: nodeID
|
|
113
|
-
})
|
|
114
|
-
res.status(200).send(result);
|
|
115
|
-
} catch (error) {
|
|
116
|
-
console.error(error);
|
|
117
|
-
res.status(500).send({error: error.message});
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
router.get('/api/nodes/versions', core.requireAuthentication, async function (req, res) {
|
|
121
|
-
const userSession = req.user;
|
|
122
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
123
|
-
// console.log(`req.query`, req.query)
|
|
124
|
-
const body = req.query;
|
|
125
|
-
const { module } = body || {};
|
|
126
|
-
if(!module){
|
|
127
|
-
return res.status(500).send({ message: 'Not find module' });
|
|
128
|
-
}
|
|
129
|
-
if(!isSpaceAdmin){
|
|
130
|
-
return res.status(401).send({ message: 'No permission' });
|
|
131
|
-
}
|
|
132
|
-
try {
|
|
133
|
-
|
|
134
|
-
let broker = schema.broker;
|
|
135
|
-
const result = await broker.call(`@steedos/service-project.getPackageVersions`, {
|
|
136
|
-
module
|
|
137
|
-
})
|
|
138
|
-
res.status(200).send(result); //TODO 完善返回信息
|
|
139
|
-
} catch (error) {
|
|
140
|
-
console.error(error);
|
|
141
|
-
res.status(500).send({error: error.message});
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
router.post('/api/nodes/upgrade', core.requireAuthentication, async function (req, res) {
|
|
146
|
-
const userSession = req.user;
|
|
147
|
-
const isSpaceAdmin = userSession.is_space_admin;
|
|
148
|
-
const body = req.body;
|
|
149
|
-
if(!isSpaceAdmin){
|
|
150
|
-
return res.status(401).send({ message: 'No permission' });
|
|
151
|
-
}
|
|
152
|
-
try {
|
|
153
|
-
const { module, version} = body || {};
|
|
154
|
-
let broker = schema.broker;
|
|
155
|
-
const result = await broker.call(`@steedos/service-project.upgradePackage`, {
|
|
156
|
-
module, version
|
|
157
|
-
})
|
|
158
|
-
res.status(200).send(result);
|
|
159
|
-
} catch (error) {
|
|
160
|
-
console.error(error);
|
|
161
|
-
res.status(500).send({error: error.message});
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
exports.default = router;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: baozhoutao@steedos.com
|
|
3
|
-
* @Date: 2022-11-17 16:29:17
|
|
4
|
-
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
-
* @LastEditTime: 2022-11-28 18:01:04
|
|
6
|
-
* @Description:
|
|
7
|
-
*/
|
|
8
|
-
const express = require('express');
|
|
9
|
-
const router = express.Router();
|
|
10
|
-
const core = require("@steedos/core");
|
|
11
|
-
|
|
12
|
-
let STEEDOS_REGISTRY_URL = process.env.STEEDOS_REGISTRY_URL ? process.env.STEEDOS_REGISTRY_URL : 'https://registry.steedos.cn/';
|
|
13
|
-
|
|
14
|
-
router.get("/api/nodes/registry", core.requireAuthentication, async function (req, res) {
|
|
15
|
-
res.status(200).send([
|
|
16
|
-
{ label: "https://registry.npmjs.org/", value: "https://registry.npmjs.org/" },
|
|
17
|
-
{ label: "https://registry.npm.taobao.org/", value: "https://registry.npm.taobao.org/" },
|
|
18
|
-
{ label: STEEDOS_REGISTRY_URL, value: STEEDOS_REGISTRY_URL },
|
|
19
|
-
]);
|
|
20
|
-
});
|
|
21
|
-
exports.default = router;
|