diff --git a/packages/api/src/controllers/cloud.js b/packages/api/src/controllers/cloud.js
index 9561ca71e..b56a4affd 100644
--- a/packages/api/src/controllers/cloud.js
+++ b/packages/api/src/controllers/cloud.js
@@ -8,9 +8,10 @@ const {
} = require('../utility/cloudIntf');
const connections = require('./connections');
const socket = require('../utility/socket');
-const { decryptConnection, recryptConnection, getInternalEncryptor } = require('../utility/crypting');
+const { recryptConnection, getInternalEncryptor } = require('../utility/crypting');
const { getConnectionLabel, getLogger, extractErrorLogData } = require('dbgate-tools');
const logger = getLogger('cloud');
+const _ = require('lodash');
module.exports = {
publicFiles_meta: true,
@@ -47,8 +48,8 @@ module.exports = {
getContent_meta: true,
async getContent({ folid, cntid }) {
- const resp = await callCloudApiGet(`content/${folid}/${cntid}`);
- return resp;
+ const { content, name, type } = await callCloudApiGet(`content/${folid}/${cntid}`);
+ return { content, name, type };
},
putContent_meta: true,
@@ -95,10 +96,11 @@ module.exports = {
const conn = await connections.getCore({ conid });
const folderEncryptor = getCloudFolderEncryptor(folid);
const recryptedConn = recryptConnection(conn, getInternalEncryptor(), folderEncryptor);
+ const connToSend = _.omit(recryptedConn, ['_id']);
await this.putContent({
folid,
- cntid: conid,
- content: JSON.stringify(recryptedConn),
+ cntid: undefined,
+ content: JSON.stringify(connToSend),
name: getConnectionLabel(conn),
type: 'connection',
});
diff --git a/packages/api/src/controllers/connections.js b/packages/api/src/controllers/connections.js
index e221e8411..b2c82eed7 100644
--- a/packages/api/src/controllers/connections.js
+++ b/packages/api/src/controllers/connections.js
@@ -423,6 +423,16 @@ module.exports = {
return volatile;
}
+ const cloudMatch = conid.match(/^cloud\:\/\/(.+)\/(.+)$/);
+ if (cloudMatch) {
+ const cloud = require('./cloud');
+ const { content } = await cloud.getContent({ folid: cloudMatch[1], cntid: cloudMatch[2] });
+ return {
+ ...JSON.parse(content),
+ _id: conid,
+ };
+ }
+
const storage = require('./storage');
const storageConnection = await storage.getConnection({ conid });
diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js
index 9bfe37013..4f50b1085 100644
--- a/packages/api/src/controllers/databaseConnections.js
+++ b/packages/api/src/controllers/databaseConnections.js
@@ -148,6 +148,9 @@ module.exports = {
const existing = this.opened.find(x => x.conid == conid && x.database == database);
if (existing) return existing;
const connection = await connections.getCore({ conid });
+ if (!connection) {
+ throw new Error(`databaseConnections: Connection with conid="${conid}" not found`);
+ }
if (connection.passwordMode == 'askPassword' || connection.passwordMode == 'askUser') {
throw new MissingCredentialsError({ conid, passwordMode: connection.passwordMode });
}
diff --git a/packages/api/src/controllers/serverConnections.js b/packages/api/src/controllers/serverConnections.js
index d9a065bd9..68e89e477 100644
--- a/packages/api/src/controllers/serverConnections.js
+++ b/packages/api/src/controllers/serverConnections.js
@@ -52,7 +52,7 @@ module.exports = {
if (existing) return existing;
const connection = await connections.getCore({ conid });
if (!connection) {
- throw new Error(`Connection with conid="${conid}" not found`);
+ throw new Error(`serverConnections: Connection with conid="${conid}" not found`);
}
if (connection.singleDatabase) {
return null;
diff --git a/packages/web/src/appobj/CloudContentAppObject.svelte b/packages/web/src/appobj/CloudContentAppObject.svelte
index 9a9b75a62..d83e26ea5 100644
--- a/packages/web/src/appobj/CloudContentAppObject.svelte
+++ b/packages/web/src/appobj/CloudContentAppObject.svelte
@@ -1,4 +1,6 @@
-
+{#if data.conid && $cloudConnectionsStore[data.conid]}
+
+{:else}
+
+{/if}