dbgate-api 5.2.7-alpha.1 → 5.2.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-api",
3
3
  "main": "src/index.js",
4
- "version": "5.2.7-alpha.1",
4
+ "version": "5.2.8",
5
5
  "homepage": "https://dbgate.org/",
6
6
  "repository": {
7
7
  "type": "git",
@@ -27,9 +27,9 @@
27
27
  "cors": "^2.8.5",
28
28
  "cross-env": "^6.0.3",
29
29
  "dbgate-query-splitter": "^4.9.3",
30
- "dbgate-sqltree": "^5.2.7-alpha.1",
31
- "dbgate-tools": "^5.2.7-alpha.1",
32
- "dbgate-datalib": "^5.2.7-alpha.1",
30
+ "dbgate-sqltree": "^5.2.8",
31
+ "dbgate-tools": "^5.2.8",
32
+ "dbgate-datalib": "^5.2.8",
33
33
  "debug": "^4.3.4",
34
34
  "diff": "^5.0.0",
35
35
  "diff2html": "^3.4.13",
@@ -74,17 +74,17 @@
74
74
  "devDependencies": {
75
75
  "@types/fs-extra": "^9.0.11",
76
76
  "@types/lodash": "^4.14.149",
77
- "dbgate-types": "^5.2.7-alpha.1",
77
+ "dbgate-types": "^5.2.8",
78
78
  "env-cmd": "^10.1.0",
79
79
  "node-loader": "^1.0.2",
80
80
  "nodemon": "^2.0.2",
81
81
  "typescript": "^4.4.3",
82
- "webpack": "^4.42.0",
83
- "webpack-cli": "^3.3.11"
82
+ "webpack": "^5.91.0",
83
+ "webpack-cli": "^5.1.4"
84
84
  },
85
85
  "optionalDependencies": {
86
- "better-sqlite3": "7.6.2",
87
- "msnodesqlv8": "^2.6.0",
86
+ "better-sqlite3": "9.6.0",
87
+ "msnodesqlv8": "^4.2.1",
88
88
  "oracledb": "^5.5.0"
89
89
  }
90
90
  }
@@ -137,7 +137,7 @@ module.exports = {
137
137
  return { error: 'Logins not configured' };
138
138
  }
139
139
  const foundLogin = logins.find(x => x.login == login);
140
- if (foundLogin && foundLogin.password == password) {
140
+ if (foundLogin && foundLogin.password && foundLogin.password == password) {
141
141
  return {
142
142
  accessToken: jwt.sign({ login }, tokenSecret, { expiresIn: getTokenLifetime() }),
143
143
  };
@@ -88,6 +88,7 @@ function getPortalCollections() {
88
88
  sslCertFilePassword: process.env[`SSL_CERT_FILE_PASSWORD_${id}`],
89
89
  sslKeyFile: process.env[`SSL_KEY_FILE_${id}`],
90
90
  sslRejectUnauthorized: process.env[`SSL_REJECT_UNAUTHORIZED_${id}`],
91
+ trustServerCertificate: process.env[`SSL_TRUST_CERTIFICATE_${id}`],
91
92
  }));
92
93
 
93
94
  logger.info({ connections: connections.map(pickSafeConnectionInfo) }, 'Using connections from ENV variables');
@@ -292,7 +292,17 @@ module.exports = {
292
292
  let existing = this.opened.find(x => x.conid == conid && x.database == database);
293
293
 
294
294
  if (existing) {
295
- existing.subprocess.send({ msgtype: 'ping' });
295
+ try {
296
+ existing.subprocess.send({ msgtype: 'ping' });
297
+ } catch (err) {
298
+ logger.error({ err }, 'Error pinging DB connection');
299
+ this.close(conid, database);
300
+
301
+ return {
302
+ status: 'error',
303
+ message: 'Ping failed',
304
+ };
305
+ }
296
306
  } else {
297
307
  // @ts-ignore
298
308
  existing = await this.ensureOpened(conid, database);
@@ -164,7 +164,7 @@ module.exports = {
164
164
  try {
165
165
  opened.subprocess.send({ msgtype: 'ping' });
166
166
  } catch (err) {
167
- logger.error({ err }, 'Error calling ping');
167
+ logger.error({ err }, 'Error pinging server connection');
168
168
  this.close(conid);
169
169
  }
170
170
  })
@@ -219,7 +219,16 @@ module.exports = {
219
219
  if (!session) {
220
220
  throw new Error('Invalid session');
221
221
  }
222
- session.subprocess.send({ msgtype: 'ping' });
222
+ try {
223
+ session.subprocess.send({ msgtype: 'ping' });
224
+ } catch (err) {
225
+ logger.error({ err }, 'Error pinging session');
226
+
227
+ return {
228
+ status: 'error',
229
+ message: 'Ping failed',
230
+ };
231
+ }
223
232
 
224
233
  return { state: 'ok' };
225
234
  },
@@ -1,5 +1,5 @@
1
1
 
2
2
  module.exports = {
3
- version: '5.2.7-alpha.1',
4
- buildTime: '2023-09-28T09:24:33.720Z'
3
+ version: '5.2.8',
4
+ buildTime: '2024-05-17T04:41:36.747Z'
5
5
  };
package/src/main.js CHANGED
@@ -48,7 +48,7 @@ function start() {
48
48
  if (logins && process.env.BASIC_AUTH) {
49
49
  app.use(
50
50
  basicAuth({
51
- users: _.fromPairs(logins.map(x => [x.login, x.password])),
51
+ users: _.fromPairs(logins.filter(x => x.password).map(x => [x.login, x.password])),
52
52
  challenge: true,
53
53
  realm: 'DbGate Web App',
54
54
  })
@@ -39,7 +39,7 @@ function getLogins() {
39
39
  permissions: process.env.PERMISSIONS,
40
40
  });
41
41
  }
42
- if (process.env.LOGINS) {
42
+ if (process.env.LOGINS || process.env.OAUTH_PERMISSIONS) {
43
43
  const logins = _.compact(process.env.LOGINS.split(',').map(x => x.trim()));
44
44
  for (const login of logins) {
45
45
  const password = process.env[`LOGIN_PASSWORD_${login}`];
@@ -51,6 +51,13 @@ function getLogins() {
51
51
  permissions,
52
52
  });
53
53
  }
54
+ if (process.env.OAUTH_PERMISSIONS) {
55
+ res.push({
56
+ login,
57
+ password: null,
58
+ permissions,
59
+ })
60
+ }
54
61
  }
55
62
  }
56
63