@underpostnet/underpost 2.99.6 → 2.99.8

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.
Files changed (39) hide show
  1. package/.github/workflows/ghpkg.ci.yml +10 -25
  2. package/.github/workflows/npmpkg.ci.yml +14 -2
  3. package/CHANGELOG.md +520 -0
  4. package/Dockerfile +15 -15
  5. package/README.md +9 -16
  6. package/bin/deploy.js +13 -3
  7. package/bin/file.js +4 -19
  8. package/cli.md +46 -28
  9. package/examples/static-page/ssr-components/CustomPage.js +1 -1
  10. package/jsdoc.json +26 -5
  11. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +9 -2
  12. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +9 -2
  13. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  14. package/manifests/deployment/dd-test-development/deployment.yaml +2 -2
  15. package/package.json +1 -2
  16. package/src/cli/baremetal.js +8 -322
  17. package/src/cli/cloud-init.js +2 -2
  18. package/src/cli/index.js +12 -1
  19. package/src/cli/repository.js +166 -13
  20. package/src/cli/run.js +16 -42
  21. package/src/cli/ssh.js +1 -1
  22. package/src/cli/system.js +332 -0
  23. package/src/db/DataBaseProvider.js +3 -3
  24. package/src/db/mariadb/MariaDB.js +5 -5
  25. package/src/db/mongo/MongooseDB.js +3 -3
  26. package/src/index.js +17 -5
  27. package/src/mailer/EmailRender.js +3 -3
  28. package/src/mailer/MailerProvider.js +4 -4
  29. package/src/runtime/express/Dockerfile +15 -15
  30. package/src/runtime/lampp/Dockerfile +15 -15
  31. package/src/server/backup.js +15 -4
  32. package/src/server/client-build-docs.js +28 -2
  33. package/src/server/conf.js +8 -24
  34. package/src/server/cron.js +48 -38
  35. package/src/server/dns.js +0 -8
  36. package/bin/cron.js +0 -47
  37. package/bin/db.js +0 -199
  38. package/bin/hwt.js +0 -49
  39. package/bin/util.js +0 -63
package/bin/db.js DELETED
@@ -1,199 +0,0 @@
1
- import fs from 'fs-extra';
2
- import { shellExec } from '../src/server/process.js';
3
- import { loggerFactory } from '../src/server/logger.js';
4
- import { MariaDB } from '../src/db/mariadb/MariaDB.js';
5
- import { Lampp } from '../src/runtime/lampp/Lampp.js';
6
- import { getCapVariableName, loadConf, splitFileFactory } from '../src/server/conf.js';
7
- import { DataBaseProvider } from '../src/db/DataBaseProvider.js';
8
- import { hashPassword } from '../src/server/auth.js';
9
-
10
- const logger = loggerFactory(import.meta);
11
-
12
- logger.info('argv', process.argv);
13
-
14
- const [exe, dir, hostPath = '', operator, deployId, arg0, arg1, arg2] = process.argv;
15
- const [host, _path = ''] = hostPath.split('/');
16
- const path = `/${_path}`;
17
-
18
- try {
19
- let cmd;
20
- if (deployId) loadConf(deployId);
21
- const confServer = JSON.parse(fs.readFileSync(`./conf/conf.server.json`, 'utf8'));
22
- const { runtime, db, git, client, directory } = confServer[host][path];
23
- const { provider, name, user, password = '', backupPath = '' } = db;
24
- // logger.info('database', confServer[host][`/${path}`].db);
25
- switch (provider) {
26
- case 'mariadb':
27
- // Login:
28
- // mysql -u root -h localhost -p
29
-
30
- // Get Users:
31
- // SELECT user,authentication_string,plugin,host FROM mysql.user;
32
-
33
- // Get DB User:
34
- // SELECT User, Db, Host from mysql.db;
35
-
36
- // Change password:
37
- // ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'NEW_PASSWORD';
38
- // ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_PASSWORD';
39
- // ALTER USER 'root'@'::1' IDENTIFIED BY 'NEW_PASSWORD';
40
-
41
- // Get all user privileges:
42
- // select * from information_schema.user_privileges;
43
-
44
- // Expose public server:
45
- // '/etc/mysql/my.cnf' Change lines:
46
- // bind-address = 127.0.0.1 -> bind-address = 0.0.0.0
47
- // skip-networking -> #skip-networking
48
-
49
- // Create user:
50
- // DROP USER 'username'@'%';
51
- // CREATE USER 'username'@'%' IDENTIFIED BY 'password';
52
-
53
- // Set DB user:
54
- // FLUSH PRIVILEGES;
55
- // ON databasename.*
56
- // TO 'username'@'%'
57
- // IDENTIFIED BY 'newpassword';
58
- // FLUSH PRIVILEGES;
59
-
60
- // Set admin:
61
- // FLUSH PRIVILEGES;
62
- // GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
63
- // FLUSH PRIVILEGES;
64
-
65
- switch (operator) {
66
- case 'show-all':
67
- await MariaDB.query({ user, password, query: `SHOW DATABASES` });
68
- break;
69
- case 'show':
70
- await MariaDB.query({ user, password, query: `SHOW TABLES FROM ${name}` });
71
- break;
72
- case 'create':
73
- await MariaDB.query({ user, password, query: `CREATE DATABASE ${name}` });
74
- break;
75
- case 'delete':
76
- await MariaDB.query({ user, password, query: `DROP DATABASE IF EXISTS ${name}` });
77
- break;
78
- case 'select':
79
- {
80
- const pageSize = 10;
81
- const pageNumber = 1;
82
- await MariaDB.query({
83
- user,
84
- password,
85
- query: `SELECT ${arg0} FROM ${name}.${arg1} LIMIT ${pageSize} OFFSET ${(pageNumber - 1) * pageSize}`,
86
- });
87
- }
88
- break;
89
- case 'count': {
90
- await MariaDB.query({
91
- user,
92
- password,
93
- query: `SELECT COUNT(*) AS total FROM ${name}.${arg0}`,
94
- });
95
- }
96
- case 'export':
97
- {
98
- const cmdBackupPath = `${arg0 ? `${arg0}/${name}.sql` : backupPath}`;
99
-
100
- cmd = `mysqldump -u ${user} -p${password} ${name} > ${cmdBackupPath}`;
101
- shellExec(cmd);
102
- await splitFileFactory(name, cmdBackupPath);
103
- }
104
- break;
105
- case 'import':
106
- break;
107
-
108
- case 'init-lampp-service':
109
- await Lampp.initService();
110
- break;
111
- case 'remote-client-access':
112
- {
113
- // https://docs.anaconda.com/miniconda/install/#quick-command-line-install
114
- // https://mariadb.com/kb/en/configuring-mariadb-for-remote-client-access/
115
- // conf: /opt/lampp/etc
116
- // conf: /etc/mysql/my.cnf
117
- // conf: /etc/mysql/mariadb.conf.d/50-server.cnf
118
- // cli: /opt/lampp/bin/mysql
119
- // cli: mysql -h 127.0.0.1
120
- // select db: use db0;
121
- }
122
- break;
123
- default:
124
- break;
125
- }
126
-
127
- break;
128
-
129
- case 'mongoose':
130
- // MongoDB App Services CLI
131
- switch (operator) {
132
- case 'update':
133
- {
134
- await DataBaseProvider.load({ apis: [arg0], host, path, db });
135
- const models = DataBaseProvider.instance[`${host}${path}`].mongoose.models[getCapVariableName(arg0)];
136
-
137
- const select = JSON.parse(arg1.replaceAll("'", `"`));
138
- const update = JSON.parse(arg2.replaceAll("'", `"`));
139
-
140
- console.log({ models, select, update });
141
-
142
- switch (arg0) {
143
- case 'user':
144
- if (update.password) update.password = hashPassword(update.password);
145
-
146
- default:
147
- break;
148
- }
149
- let doc = await models.findOne(select);
150
- if (doc) {
151
- doc = await models.findByIdAndUpdate(doc._id, update, {
152
- runValidators: true,
153
- });
154
- logger.info(`successfully updated doc`, doc._doc);
155
- await DataBaseProvider.instance[`${host}${path}`].mongoose.close();
156
- } else throw new Error(`no doc found`);
157
- }
158
- break;
159
- case 'show-all':
160
- // show dbs
161
- break;
162
- case 'show':
163
- break;
164
- case 'create':
165
- break;
166
- case 'delete':
167
- {
168
- await DataBaseProvider.load({ apis: [arg0], host, path, db });
169
- const models = DataBaseProvider.instance[`${host}${path}`].mongoose.models[getCapVariableName(arg0)];
170
- await models.collection.drop();
171
- logger.info(`successfully drop collection`, arg0);
172
- await DataBaseProvider.instance[`${host}${path}`].mongoose.close();
173
- }
174
- break;
175
- case 'export':
176
- // mongodump -d <database_name> -o <directory_backup>
177
- shellExec(`mongodump -d ${name} -o ${arg0 ? arg0 : `./engine-private/mongodb-backup/`}`);
178
- break;
179
- case 'import':
180
- // mongorestore -d <database_name> <directory_backup>
181
- break;
182
- case 'init-service':
183
- break;
184
- default:
185
- break;
186
- }
187
- break;
188
-
189
- default:
190
- break;
191
- }
192
-
193
- // logger.info(`Run the following command`, cmd);
194
- // await ncp.copy(cmd);
195
- // await read({ prompt: 'Command copy to clipboard, press enter to continue.\n' });
196
- // throw new Error(``);
197
- } catch (error) {
198
- logger.error(error, error.stack);
199
- }
package/bin/hwt.js DELETED
@@ -1,49 +0,0 @@
1
- import fs from 'fs-extra';
2
-
3
- import { loggerFactory } from '../src/server/logger.js';
4
-
5
- const logger = loggerFactory(import.meta);
6
-
7
- logger.info('argv', process.argv);
8
-
9
- const [exe, dir, operator, templateId, publicPath] = process.argv;
10
-
11
- // engine for 'html-website-templates'
12
-
13
- try {
14
- switch (operator) {
15
- case 'set-base':
16
- {
17
- switch (parseInt(templateId)) {
18
- // Horizontal Scroll One Page Template Website
19
- case 0:
20
- {
21
- fs.writeFile(
22
- `${publicPath}/index.html`,
23
- fs
24
- .readFileSync(`${publicPath}/index.html`, 'utf8')
25
- .replace(`<ul class="menu">`, `<ul class="menu hidden">`)
26
- .replaceAll(`<section class="slide fade-6 kenBurns">`, `<section class="fade-6 kenBurns hidden">`)
27
- .replace(`<section class="fade-6 kenBurns hidden">`, `<section class="slide fade-6 kenBurns">`)
28
- .replaceAll(
29
- `<nav class="panel bottom forceMobileView">`,
30
- `<nav class="panel bottom forceMobileView hidden">`,
31
- ),
32
-
33
- 'utf8',
34
- );
35
- }
36
- break;
37
-
38
- default:
39
- break;
40
- }
41
- }
42
- break;
43
-
44
- default:
45
- break;
46
- }
47
- } catch (error) {
48
- logger.error(error, error.stack);
49
- }
package/bin/util.js DELETED
@@ -1,63 +0,0 @@
1
- import fs from 'fs-extra';
2
- import * as dir from 'path';
3
-
4
- import { loggerFactory } from '../src/server/logger.js';
5
- import { pbcopy } from '../src/server/process.js';
6
- import { buildKindPorts } from '../src/server/conf.js';
7
-
8
- const logger = loggerFactory(import.meta);
9
-
10
- logger.info('argv', process.argv);
11
-
12
- const operator = process.argv[2];
13
-
14
- try {
15
- // let cmd;
16
- switch (operator) {
17
- case 'log':
18
- console.log(fs.readFileSync(process.argv[3], 'utf8'));
19
- break;
20
-
21
- case 'delete-empty-folder':
22
- function cleanEmptyFoldersRecursively(folder) {
23
- if (!fs.existsSync(folder)) {
24
- logger.warn('Does not exist', folder);
25
- return;
26
- }
27
- const isDir = fs.statSync(folder).isDirectory();
28
- if (!isDir) return;
29
-
30
- let files = fs.readdirSync(folder);
31
- if (files.length > 0) {
32
- files.forEach(function (file) {
33
- const fullPath = dir.join(folder, file);
34
- cleanEmptyFoldersRecursively(fullPath);
35
- });
36
-
37
- // re-evaluate files; after deleting subfolder
38
- // we may have parent folder empty now
39
- files = fs.readdirSync(folder);
40
- }
41
-
42
- if (files.length === 0) {
43
- console.log('removing: ', folder);
44
- try {
45
- fs.rmdirSync(folder);
46
- } catch (error) {
47
- logger.error(error);
48
- }
49
- return;
50
- }
51
- }
52
- cleanEmptyFoldersRecursively('./');
53
- break;
54
-
55
- case 'build-ports': {
56
- pbcopy(buildKindPorts(process.argv[3], process.argv[4]));
57
- }
58
- default:
59
- break;
60
- }
61
- } catch (error) {
62
- logger.error(error, error.stack);
63
- }