mindoodb 0.0.2 → 0.0.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/README-server.md +1001 -0
- package/README.md +89 -28
- package/dist/__mocks__/expo-standard-web-crypto.d.ts +10 -0
- package/dist/__mocks__/expo-standard-web-crypto.d.ts.map +1 -0
- package/dist/__mocks__/expo-standard-web-crypto.js +22 -0
- package/dist/__mocks__/expo-standard-web-crypto.js.map +1 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts +8 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js +16 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js.map +1 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts +1 -1
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts.map +1 -1
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js +2 -2
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +30 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +152 -5
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts +17 -2
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +129 -0
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +22 -2
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +110 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/index.d.ts +1 -1
- package/dist/appendonlystores/network/index.d.ts.map +1 -1
- package/dist/appendonlystores/network/index.js.map +1 -1
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +65 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +741 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts +25 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js +41 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js.map +1 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts +21 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts.map +1 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.js +106 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.js.map +1 -0
- package/dist/browser/index.d.ts +8 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +21 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/core/BaseMindooDB.d.ts +115 -13
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +1232 -269
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +69 -6
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +302 -109
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +13 -10
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +144 -27
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/BaseMindooTenantFactory.d.ts +27 -29
- package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantFactory.js +185 -112
- package/dist/core/BaseMindooTenantFactory.js.map +1 -1
- package/dist/core/MindooDBServerAdmin.d.ts +238 -0
- package/dist/core/MindooDBServerAdmin.d.ts.map +1 -0
- package/dist/core/MindooDBServerAdmin.js +345 -0
- package/dist/core/MindooDBServerAdmin.js.map +1 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +68 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js +659 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +45 -3
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +184 -23
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
- package/dist/core/appendonlystores/MaterializationPlanner.d.ts +49 -0
- package/dist/core/appendonlystores/MaterializationPlanner.d.ts.map +1 -0
- package/dist/core/appendonlystores/MaterializationPlanner.js +325 -0
- package/dist/core/appendonlystores/MaterializationPlanner.js.map +1 -0
- package/dist/core/appendonlystores/bloom.d.ts +85 -0
- package/dist/core/appendonlystores/bloom.d.ts.map +1 -0
- package/dist/core/appendonlystores/bloom.js +228 -0
- package/dist/core/appendonlystores/bloom.js.map +1 -0
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts +37 -2
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.d.ts +12 -0
- package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.js.map +1 -1
- package/dist/core/appendonlystores/types.d.ts +206 -0
- package/dist/core/appendonlystores/types.d.ts.map +1 -1
- package/dist/core/automerge-adapter.d.ts +15 -0
- package/dist/core/automerge-adapter.d.ts.map +1 -0
- package/dist/core/automerge-adapter.js +73 -0
- package/dist/core/automerge-adapter.js.map +1 -0
- package/dist/core/cache/CacheManager.d.ts +75 -0
- package/dist/core/cache/CacheManager.d.ts.map +1 -0
- package/dist/core/cache/CacheManager.js +101 -0
- package/dist/core/cache/CacheManager.js.map +1 -0
- package/dist/core/cache/EncryptedLocalCacheStore.d.ts +41 -0
- package/dist/core/cache/EncryptedLocalCacheStore.d.ts.map +1 -0
- package/dist/core/cache/EncryptedLocalCacheStore.js +120 -0
- package/dist/core/cache/EncryptedLocalCacheStore.js.map +1 -0
- package/dist/core/cache/LocalCacheStore.d.ts +50 -0
- package/dist/core/cache/LocalCacheStore.d.ts.map +1 -0
- package/dist/core/cache/LocalCacheStore.js +39 -0
- package/dist/core/cache/LocalCacheStore.js.map +1 -0
- package/dist/core/crypto/pbkdf2Iterations.d.ts +12 -0
- package/dist/core/crypto/pbkdf2Iterations.d.ts.map +1 -0
- package/dist/core/crypto/pbkdf2Iterations.js +55 -0
- package/dist/core/crypto/pbkdf2Iterations.js.map +1 -0
- package/dist/core/crypto/privateKeyEncryption.d.ts +5 -0
- package/dist/core/crypto/privateKeyEncryption.d.ts.map +1 -0
- package/dist/core/crypto/privateKeyEncryption.js +87 -0
- package/dist/core/crypto/privateKeyEncryption.js.map +1 -0
- package/dist/core/index.d.ts +18 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +42 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +4 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +39 -11
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js +3 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.d.ts +43 -0
- package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.js +173 -0
- package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +7 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +28 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
- package/dist/core/keys/KeyBag.d.ts +56 -12
- package/dist/core/keys/KeyBag.d.ts.map +1 -1
- package/dist/core/keys/KeyBag.js +156 -70
- package/dist/core/keys/KeyBag.js.map +1 -1
- package/dist/core/keys/KeyContext.d.ts +4 -0
- package/dist/core/keys/KeyContext.d.ts.map +1 -0
- package/dist/core/keys/KeyContext.js +17 -0
- package/dist/core/keys/KeyContext.js.map +1 -0
- package/dist/core/types.d.ts +512 -60
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/MindooURI.d.ts +58 -0
- package/dist/core/uri/MindooURI.d.ts.map +1 -0
- package/dist/core/uri/MindooURI.js +169 -0
- package/dist/core/uri/MindooURI.js.map +1 -0
- package/dist/core/userid/index.d.ts +0 -10
- package/dist/core/userid/index.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.js +37 -3
- package/dist/core/utils/idGeneration.js.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +544 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1358 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
- package/dist/node/attachments/writeAttachmentToFile.d.ts +15 -0
- package/dist/node/attachments/writeAttachmentToFile.d.ts.map +1 -0
- package/dist/node/attachments/writeAttachmentToFile.js +73 -0
- package/dist/node/attachments/writeAttachmentToFile.js.map +1 -0
- package/dist/node/cache/FileSystemLocalCacheStore.d.ts +17 -0
- package/dist/node/cache/FileSystemLocalCacheStore.d.ts.map +1 -0
- package/dist/node/cache/FileSystemLocalCacheStore.js +128 -0
- package/dist/node/cache/FileSystemLocalCacheStore.js.map +1 -0
- package/dist/node/cli/change-identity-password.d.ts +7 -0
- package/dist/node/cli/change-identity-password.d.ts.map +1 -0
- package/dist/node/cli/change-identity-password.js +67 -0
- package/dist/node/cli/change-identity-password.js.map +1 -0
- package/dist/node/cli/cli-utils.d.ts +16 -0
- package/dist/node/cli/cli-utils.d.ts.map +1 -0
- package/dist/node/cli/cli-utils.js +113 -0
- package/dist/node/cli/cli-utils.js.map +1 -0
- package/dist/node/cli/identity-export-public.d.ts +4 -0
- package/dist/node/cli/identity-export-public.d.ts.map +1 -0
- package/dist/node/cli/identity-export-public.js +55 -0
- package/dist/node/cli/identity-export-public.js.map +1 -0
- package/dist/node/cli/identity-info.d.ts +4 -0
- package/dist/node/cli/identity-info.d.ts.map +1 -0
- package/dist/node/cli/identity-info.js +57 -0
- package/dist/node/cli/identity-info.js.map +1 -0
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +8 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/server/CapabilityMatcher.d.ts +45 -0
- package/dist/node/server/CapabilityMatcher.d.ts.map +1 -0
- package/dist/node/server/CapabilityMatcher.js +117 -0
- package/dist/node/server/CapabilityMatcher.js.map +1 -0
- package/dist/node/server/MindooDBServer.d.ts +87 -0
- package/dist/node/server/MindooDBServer.d.ts.map +1 -0
- package/dist/node/server/MindooDBServer.js +1040 -0
- package/dist/node/server/MindooDBServer.js.map +1 -0
- package/dist/node/server/ServerSync.d.ts +41 -0
- package/dist/node/server/ServerSync.d.ts.map +1 -0
- package/dist/node/server/ServerSync.js +187 -0
- package/dist/node/server/ServerSync.js.map +1 -0
- package/dist/node/server/StoreFactory.d.ts +45 -0
- package/dist/node/server/StoreFactory.d.ts.map +1 -0
- package/dist/node/server/StoreFactory.js +89 -0
- package/dist/node/server/StoreFactory.js.map +1 -0
- package/dist/node/server/SystemAdminAuth.d.ts +65 -0
- package/dist/node/server/SystemAdminAuth.d.ts.map +1 -0
- package/dist/node/server/SystemAdminAuth.js +200 -0
- package/dist/node/server/SystemAdminAuth.js.map +1 -0
- package/dist/node/server/SystemIpAllowlist.d.ts +21 -0
- package/dist/node/server/SystemIpAllowlist.d.ts.map +1 -0
- package/dist/node/server/SystemIpAllowlist.js +210 -0
- package/dist/node/server/SystemIpAllowlist.js.map +1 -0
- package/dist/node/server/TenantManager.d.ts +85 -0
- package/dist/node/server/TenantManager.d.ts.map +1 -0
- package/dist/node/server/TenantManager.js +493 -0
- package/dist/node/server/TenantManager.js.map +1 -0
- package/dist/node/server/add-to-network.d.ts +20 -0
- package/dist/node/server/add-to-network.d.ts.map +1 -0
- package/dist/node/server/add-to-network.js +275 -0
- package/dist/node/server/add-to-network.js.map +1 -0
- package/dist/node/server/config.d.ts +51 -0
- package/dist/node/server/config.d.ts.map +1 -0
- package/dist/node/server/config.js +218 -0
- package/dist/node/server/config.js.map +1 -0
- package/dist/node/server/resolveServerPassword.d.ts +7 -0
- package/dist/node/server/resolveServerPassword.d.ts.map +1 -0
- package/dist/node/server/resolveServerPassword.js +25 -0
- package/dist/node/server/resolveServerPassword.js.map +1 -0
- package/dist/node/server/server.d.ts +22 -0
- package/dist/node/server/server.d.ts.map +1 -0
- package/dist/node/server/server.js +225 -0
- package/dist/node/server/server.js.map +1 -0
- package/dist/node/server/serverinit.d.ts +21 -0
- package/dist/node/server/serverinit.d.ts.map +1 -0
- package/dist/node/server/serverinit.js +317 -0
- package/dist/node/server/serverinit.js.map +1 -0
- package/dist/node/server/types.d.ts +162 -0
- package/dist/node/server/types.d.ts.map +1 -0
- package/dist/node/server/types.js +24 -0
- package/dist/node/server/types.js.map +1 -0
- package/dist/node/server/validation.d.ts +47 -0
- package/dist/node/server/validation.d.ts.map +1 -0
- package/dist/node/server/validation.js +114 -0
- package/dist/node/server/validation.js.map +1 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts +48 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts.map +1 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.js +113 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.js.map +1 -0
- package/dist/reactnative/crypto/AESAdapter.d.ts +18 -0
- package/dist/reactnative/crypto/AESAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/AESAdapter.js +112 -0
- package/dist/reactnative/crypto/AESAdapter.js.map +1 -0
- package/dist/reactnative/crypto/Ed25519Adapter.d.ts +34 -0
- package/dist/reactnative/crypto/Ed25519Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/Ed25519Adapter.js +386 -0
- package/dist/reactnative/crypto/Ed25519Adapter.js.map +1 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts +23 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js +51 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/HMACAdapter.d.ts +13 -0
- package/dist/reactnative/crypto/HMACAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/HMACAdapter.js +50 -0
- package/dist/reactnative/crypto/HMACAdapter.js.map +1 -0
- package/dist/reactnative/crypto/KeyFormatConverter.d.ts +21 -0
- package/dist/reactnative/crypto/KeyFormatConverter.d.ts.map +1 -0
- package/dist/reactnative/crypto/KeyFormatConverter.js +72 -0
- package/dist/reactnative/crypto/KeyFormatConverter.js.map +1 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.d.ts +19 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.js +67 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.js.map +1 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts +37 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.js +72 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/RSAAdapter.d.ts +38 -0
- package/dist/reactnative/crypto/RSAAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/RSAAdapter.js +184 -0
- package/dist/reactnative/crypto/RSAAdapter.js.map +1 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts +33 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js +61 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/SHA256Adapter.d.ts +9 -0
- package/dist/reactnative/crypto/SHA256Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/SHA256Adapter.js +29 -0
- package/dist/reactnative/crypto/SHA256Adapter.js.map +1 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts +63 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts.map +1 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.js +350 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.js.map +1 -0
- package/dist/reactnative/index.d.ts +9 -0
- package/dist/reactnative/index.d.ts.map +1 -0
- package/dist/reactnative/index.js +41 -0
- package/dist/reactnative/index.js.map +1 -0
- package/package.json +63 -7
- package/patches/PATCHES.md +111 -0
- package/patches/react-native+0.76.9.patch +34 -0
- package/patches/react-native-quick-crypto+1.0.7.patch +42 -0
- package/scripts/cli.js +21 -0
- package/scripts/setup-react-native.js +228 -0
- package/templates/reactnative/App.js +252 -0
- package/templates/reactnative/app.json +29 -0
- package/templates/reactnative/babel.config.js +6 -0
- package/templates/reactnative/index.js +26 -0
- package/templates/reactnative/metro.config.snippet.js +39 -0
- package/templates/reactnative/mindoodb-polyfills.js +116 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TenantManager handles loading, caching, and registration of tenants.
|
|
4
|
+
*
|
|
5
|
+
* Uses a global server identity (one per server, not per tenant) for
|
|
6
|
+
* authenticating with remote servers and opening tenant directories.
|
|
7
|
+
*
|
|
8
|
+
* When a tenant has a $publicinfos key (sent during publishToServer), the
|
|
9
|
+
* manager creates a real BaseMindooTenant for directory reading. User
|
|
10
|
+
* authentication is then validated against the admin-signed directory DB
|
|
11
|
+
* rather than a static JSON config.
|
|
12
|
+
*
|
|
13
|
+
* When no $publicinfos key is available, a SimpleMindooDirectory backed
|
|
14
|
+
* by config.json users[] is used as a fallback (useful for tests).
|
|
15
|
+
*
|
|
16
|
+
* A CompositeMindooDirectory wraps whichever directory source is used and
|
|
17
|
+
* also checks the global trusted-servers list, enabling server-to-server
|
|
18
|
+
* auth without servers being in each tenant's user directory.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.TenantManager = void 0;
|
|
22
|
+
const fs_1 = require("fs");
|
|
23
|
+
const path_1 = require("path");
|
|
24
|
+
const NodeCryptoAdapter_1 = require("../crypto/NodeCryptoAdapter");
|
|
25
|
+
const AuthenticationService_1 = require("../../core/appendonlystores/network/AuthenticationService");
|
|
26
|
+
const ServerNetworkContentAddressedStore_1 = require("../../appendonlystores/network/ServerNetworkContentAddressedStore");
|
|
27
|
+
const BaseMindooTenantFactory_1 = require("../../core/BaseMindooTenantFactory");
|
|
28
|
+
const KeyBag_1 = require("../../core/keys/KeyBag");
|
|
29
|
+
const types_1 = require("../../core/types");
|
|
30
|
+
const StoreFactory_1 = require("./StoreFactory");
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// StoreFactoryAdapter
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
class StoreFactoryAdapter {
|
|
35
|
+
constructor(storeFactory) {
|
|
36
|
+
this.storeFactory = storeFactory;
|
|
37
|
+
}
|
|
38
|
+
createStore(dbId, _options) {
|
|
39
|
+
return { docStore: this.storeFactory.getStore(dbId) };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// SimpleMindooDirectory — config-based fallback
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
class SimpleMindooDirectory {
|
|
46
|
+
constructor(config) {
|
|
47
|
+
this.users = new Map();
|
|
48
|
+
this.revokedUsers = new Set();
|
|
49
|
+
this.adminSigningPublicKey = config.adminSigningPublicKey;
|
|
50
|
+
if (config.users) {
|
|
51
|
+
for (const user of config.users) {
|
|
52
|
+
this.users.set(user.username.toLowerCase(), user);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async getUserPublicKeys(username) {
|
|
57
|
+
const normalizedUsername = username.toLowerCase();
|
|
58
|
+
if (this.revokedUsers.has(normalizedUsername)) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const user = this.users.get(normalizedUsername);
|
|
62
|
+
if (!user) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
signingPublicKey: user.signingPublicKey,
|
|
67
|
+
encryptionPublicKey: user.encryptionPublicKey,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async isUserRevoked(username) {
|
|
71
|
+
return this.revokedUsers.has(username.toLowerCase());
|
|
72
|
+
}
|
|
73
|
+
async validatePublicSigningKey(publicKey) {
|
|
74
|
+
if (publicKey === this.adminSigningPublicKey) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
for (const [, user] of this.users) {
|
|
78
|
+
if (user.signingPublicKey === publicKey) {
|
|
79
|
+
if (!this.revokedUsers.has(user.username.toLowerCase())) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
// CompositeMindooDirectory — wraps tenant directory + trusted servers
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
/**
|
|
91
|
+
* Wraps a per-tenant directory (real or config-based) and also checks
|
|
92
|
+
* the global trusted-servers list. Holds a reference to the array so
|
|
93
|
+
* runtime changes via the admin API are immediately visible.
|
|
94
|
+
*/
|
|
95
|
+
class CompositeMindooDirectory {
|
|
96
|
+
constructor(inner, trustedServers, adminBootstrapIdentity) {
|
|
97
|
+
this.inner = inner;
|
|
98
|
+
this.trustedServers = trustedServers;
|
|
99
|
+
this.adminBootstrapIdentity = adminBootstrapIdentity;
|
|
100
|
+
this.adminUsernameNormalized = adminBootstrapIdentity?.username.toLowerCase() ?? null;
|
|
101
|
+
}
|
|
102
|
+
async getUserPublicKeys(username) {
|
|
103
|
+
const normalizedUsername = username.toLowerCase();
|
|
104
|
+
// Bootstrap special-case: allow configured admin identity to authenticate
|
|
105
|
+
// even before directory grantaccess docs are present on the server.
|
|
106
|
+
if (this.adminBootstrapIdentity &&
|
|
107
|
+
this.adminUsernameNormalized &&
|
|
108
|
+
normalizedUsername === this.adminUsernameNormalized) {
|
|
109
|
+
return {
|
|
110
|
+
signingPublicKey: this.adminBootstrapIdentity.signingPublicKey,
|
|
111
|
+
encryptionPublicKey: this.adminBootstrapIdentity.encryptionPublicKey,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const result = await this.inner.getUserPublicKeys(username);
|
|
115
|
+
if (result)
|
|
116
|
+
return result;
|
|
117
|
+
for (const server of this.trustedServers) {
|
|
118
|
+
if (server.name.toLowerCase() === normalizedUsername) {
|
|
119
|
+
return {
|
|
120
|
+
signingPublicKey: server.signingPublicKey,
|
|
121
|
+
encryptionPublicKey: server.encryptionPublicKey,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
async isUserRevoked(username) {
|
|
128
|
+
const normalizedUsername = username.toLowerCase();
|
|
129
|
+
if (this.adminUsernameNormalized && normalizedUsername === this.adminUsernameNormalized) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
for (const server of this.trustedServers) {
|
|
133
|
+
if (server.name.toLowerCase() === normalizedUsername) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return this.inner.isUserRevoked(username);
|
|
138
|
+
}
|
|
139
|
+
async validatePublicSigningKey(publicKey) {
|
|
140
|
+
if (this.adminBootstrapIdentity && this.adminBootstrapIdentity.signingPublicKey === publicKey) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
const innerResult = await this.inner.validatePublicSigningKey(publicKey);
|
|
144
|
+
if (innerResult)
|
|
145
|
+
return true;
|
|
146
|
+
for (const server of this.trustedServers) {
|
|
147
|
+
if (server.signingPublicKey === publicKey) {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
// TenantManager
|
|
156
|
+
// ---------------------------------------------------------------------------
|
|
157
|
+
/**
|
|
158
|
+
* TenantManager is responsible for:
|
|
159
|
+
* - Loading the global server identity and trusted servers
|
|
160
|
+
* - Loading tenant configurations from disk
|
|
161
|
+
* - Caching loaded tenants
|
|
162
|
+
* - Registering new tenants
|
|
163
|
+
* - Managing tenant stores and authentication services
|
|
164
|
+
* - Creating a real MindooDB tenant for directory reading (when keys available)
|
|
165
|
+
* - Runtime management of trusted servers
|
|
166
|
+
*/
|
|
167
|
+
class TenantManager {
|
|
168
|
+
constructor(dataDir, serverPassword) {
|
|
169
|
+
this.loadedTenants = new Map();
|
|
170
|
+
this.serverIdentity = null;
|
|
171
|
+
this.trustedServers = [];
|
|
172
|
+
this.dataDir = dataDir;
|
|
173
|
+
this.serverPassword = serverPassword;
|
|
174
|
+
this.cryptoAdapter = new NodeCryptoAdapter_1.NodeCryptoAdapter();
|
|
175
|
+
if (!(0, fs_1.existsSync)(dataDir)) {
|
|
176
|
+
(0, fs_1.mkdirSync)(dataDir, { recursive: true });
|
|
177
|
+
console.log(`[TenantManager] Created data directory: ${dataDir}`);
|
|
178
|
+
}
|
|
179
|
+
// Load global server identity
|
|
180
|
+
const identityPath = (0, path_1.join)(dataDir, "server.identity.json");
|
|
181
|
+
if ((0, fs_1.existsSync)(identityPath)) {
|
|
182
|
+
this.serverIdentity = JSON.parse((0, fs_1.readFileSync)(identityPath, "utf-8"));
|
|
183
|
+
console.log(`[TenantManager] Loaded server identity: ${this.serverIdentity.username}`);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
console.log(`[TenantManager] No server.identity.json found (run "npm run init" to create one)`);
|
|
187
|
+
}
|
|
188
|
+
// Load trusted servers
|
|
189
|
+
const trustedPath = (0, path_1.join)(dataDir, "trusted-servers.json");
|
|
190
|
+
if ((0, fs_1.existsSync)(trustedPath)) {
|
|
191
|
+
this.trustedServers = JSON.parse((0, fs_1.readFileSync)(trustedPath, "utf-8"));
|
|
192
|
+
console.log(`[TenantManager] Loaded ${this.trustedServers.length} trusted server(s)`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// =======================================================================
|
|
196
|
+
// Server identity
|
|
197
|
+
// =======================================================================
|
|
198
|
+
getServerIdentity() {
|
|
199
|
+
return this.serverIdentity;
|
|
200
|
+
}
|
|
201
|
+
getServerPublicInfo() {
|
|
202
|
+
if (!this.serverIdentity)
|
|
203
|
+
return null;
|
|
204
|
+
return {
|
|
205
|
+
name: this.serverIdentity.username,
|
|
206
|
+
signingPublicKey: this.serverIdentity.userSigningKeyPair.publicKey,
|
|
207
|
+
encryptionPublicKey: this.serverIdentity.userEncryptionKeyPair.publicKey,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// =======================================================================
|
|
211
|
+
// Trusted server management
|
|
212
|
+
// =======================================================================
|
|
213
|
+
listTrustedServers() {
|
|
214
|
+
return [...this.trustedServers];
|
|
215
|
+
}
|
|
216
|
+
addTrustedServer(server) {
|
|
217
|
+
const existing = this.trustedServers.find((s) => s.name.toLowerCase() === server.name.toLowerCase());
|
|
218
|
+
if (existing) {
|
|
219
|
+
throw new Error(`Trusted server "${server.name}" already exists`);
|
|
220
|
+
}
|
|
221
|
+
this.trustedServers.push(server);
|
|
222
|
+
this.persistTrustedServers();
|
|
223
|
+
console.log(`[TenantManager] Added trusted server: ${server.name}`);
|
|
224
|
+
}
|
|
225
|
+
removeTrustedServer(name) {
|
|
226
|
+
const idx = this.trustedServers.findIndex((s) => s.name.toLowerCase() === name.toLowerCase());
|
|
227
|
+
if (idx === -1)
|
|
228
|
+
return false;
|
|
229
|
+
this.trustedServers.splice(idx, 1);
|
|
230
|
+
this.persistTrustedServers();
|
|
231
|
+
console.log(`[TenantManager] Removed trusted server: ${name}`);
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
persistTrustedServers() {
|
|
235
|
+
const filePath = (0, path_1.join)(this.dataDir, "trusted-servers.json");
|
|
236
|
+
(0, fs_1.writeFileSync)(filePath, JSON.stringify(this.trustedServers, null, 2), "utf-8");
|
|
237
|
+
}
|
|
238
|
+
// =======================================================================
|
|
239
|
+
// Tenant management
|
|
240
|
+
// =======================================================================
|
|
241
|
+
registerTenant(request) {
|
|
242
|
+
const tenantId = request.tenantId.toLowerCase();
|
|
243
|
+
const tenantDir = (0, path_1.join)(this.dataDir, tenantId);
|
|
244
|
+
if ((0, fs_1.existsSync)(tenantDir)) {
|
|
245
|
+
throw new Error(`Tenant ${tenantId} already exists`);
|
|
246
|
+
}
|
|
247
|
+
(0, fs_1.mkdirSync)(tenantDir, { recursive: true });
|
|
248
|
+
const config = {
|
|
249
|
+
adminUsername: request.adminUsername,
|
|
250
|
+
adminSigningPublicKey: request.adminSigningPublicKey,
|
|
251
|
+
adminEncryptionPublicKey: request.adminEncryptionPublicKey,
|
|
252
|
+
publicInfosKey: request.publicInfosKey,
|
|
253
|
+
defaultStoreType: request.defaultStoreType || "file",
|
|
254
|
+
// When $publicinfos is present, directory grant documents are the source of
|
|
255
|
+
// truth for tenant users. Keep config.json free of bootstrap app users.
|
|
256
|
+
users: request.publicInfosKey ? [] : (request.users || []),
|
|
257
|
+
};
|
|
258
|
+
const configPath = (0, path_1.join)(tenantDir, "config.json");
|
|
259
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
260
|
+
console.log(`[TenantManager] Registered tenant: ${tenantId} (publicInfosKey: ${config.publicInfosKey ? "yes" : "no"})`);
|
|
261
|
+
return { tenantId, config };
|
|
262
|
+
}
|
|
263
|
+
async getTenant(tenantId) {
|
|
264
|
+
const normalizedId = tenantId.toLowerCase();
|
|
265
|
+
const cached = this.loadedTenants.get(normalizedId);
|
|
266
|
+
if (cached) {
|
|
267
|
+
return cached;
|
|
268
|
+
}
|
|
269
|
+
const loaded = await this.loadTenant(normalizedId);
|
|
270
|
+
this.loadedTenants.set(normalizedId, loaded);
|
|
271
|
+
return loaded;
|
|
272
|
+
}
|
|
273
|
+
tenantExists(tenantId) {
|
|
274
|
+
const normalizedId = tenantId.toLowerCase();
|
|
275
|
+
const tenantDir = (0, path_1.join)(this.dataDir, normalizedId);
|
|
276
|
+
const configPath = (0, path_1.join)(tenantDir, "config.json");
|
|
277
|
+
return (0, fs_1.existsSync)(configPath);
|
|
278
|
+
}
|
|
279
|
+
listTenants() {
|
|
280
|
+
if (!(0, fs_1.existsSync)(this.dataDir)) {
|
|
281
|
+
return [];
|
|
282
|
+
}
|
|
283
|
+
const entries = (0, fs_1.readdirSync)(this.dataDir);
|
|
284
|
+
const tenants = [];
|
|
285
|
+
for (const entry of entries) {
|
|
286
|
+
const entryPath = (0, path_1.join)(this.dataDir, entry);
|
|
287
|
+
const configPath = (0, path_1.join)(entryPath, "config.json");
|
|
288
|
+
if ((0, fs_1.statSync)(entryPath).isDirectory() && (0, fs_1.existsSync)(configPath)) {
|
|
289
|
+
tenants.push(entry);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return tenants.sort();
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Update operator-owned fields of an existing tenant configuration.
|
|
296
|
+
* Only the fields present in `updates` are overwritten.
|
|
297
|
+
*/
|
|
298
|
+
updateTenantConfig(tenantId, updates) {
|
|
299
|
+
const normalizedId = tenantId.toLowerCase();
|
|
300
|
+
const configPath = (0, path_1.join)(this.dataDir, normalizedId, "config.json");
|
|
301
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
302
|
+
throw new Error(`Tenant ${normalizedId} not found`);
|
|
303
|
+
}
|
|
304
|
+
const config = JSON.parse((0, fs_1.readFileSync)(configPath, "utf-8"));
|
|
305
|
+
if (updates.defaultStoreType !== undefined) {
|
|
306
|
+
config.defaultStoreType = updates.defaultStoreType;
|
|
307
|
+
}
|
|
308
|
+
if (updates.remoteServers !== undefined) {
|
|
309
|
+
config.remoteServers = updates.remoteServers;
|
|
310
|
+
}
|
|
311
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
312
|
+
this.loadedTenants.delete(normalizedId);
|
|
313
|
+
console.log(`[TenantManager] Updated tenant config: ${normalizedId}`);
|
|
314
|
+
}
|
|
315
|
+
removeTenant(tenantId) {
|
|
316
|
+
const normalizedId = tenantId.toLowerCase();
|
|
317
|
+
const tenantDir = (0, path_1.join)(this.dataDir, normalizedId);
|
|
318
|
+
if (!(0, fs_1.existsSync)(tenantDir)) {
|
|
319
|
+
throw new Error(`Tenant ${normalizedId} does not exist`);
|
|
320
|
+
}
|
|
321
|
+
this.loadedTenants.delete(normalizedId);
|
|
322
|
+
(0, fs_1.rmSync)(tenantDir, { recursive: true, force: true });
|
|
323
|
+
console.log(`[TenantManager] Removed tenant: ${normalizedId}`);
|
|
324
|
+
}
|
|
325
|
+
// =======================================================================
|
|
326
|
+
// Per-tenant sync server management
|
|
327
|
+
// =======================================================================
|
|
328
|
+
getTenantSyncServers(tenantId) {
|
|
329
|
+
const normalizedId = tenantId.toLowerCase();
|
|
330
|
+
const configPath = (0, path_1.join)(this.dataDir, normalizedId, "config.json");
|
|
331
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
332
|
+
throw new Error(`Tenant ${normalizedId} not found`);
|
|
333
|
+
}
|
|
334
|
+
const config = JSON.parse((0, fs_1.readFileSync)(configPath, "utf-8"));
|
|
335
|
+
return (config.remoteServers || []);
|
|
336
|
+
}
|
|
337
|
+
addTenantSyncServer(tenantId, server) {
|
|
338
|
+
const normalizedId = tenantId.toLowerCase();
|
|
339
|
+
const configPath = (0, path_1.join)(this.dataDir, normalizedId, "config.json");
|
|
340
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
341
|
+
throw new Error(`Tenant ${normalizedId} not found`);
|
|
342
|
+
}
|
|
343
|
+
const config = JSON.parse((0, fs_1.readFileSync)(configPath, "utf-8"));
|
|
344
|
+
const servers = (config.remoteServers || []);
|
|
345
|
+
const idx = servers.findIndex((s) => s.name?.toLowerCase() === server.name.toLowerCase());
|
|
346
|
+
if (idx >= 0) {
|
|
347
|
+
servers[idx] = server;
|
|
348
|
+
console.log(`[TenantManager] Updated sync server "${server.name}" for tenant ${normalizedId}`);
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
servers.push(server);
|
|
352
|
+
console.log(`[TenantManager] Added sync server "${server.name}" for tenant ${normalizedId}`);
|
|
353
|
+
}
|
|
354
|
+
config.remoteServers = servers;
|
|
355
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
356
|
+
this.loadedTenants.delete(normalizedId);
|
|
357
|
+
}
|
|
358
|
+
removeTenantSyncServer(tenantId, serverName) {
|
|
359
|
+
const normalizedId = tenantId.toLowerCase();
|
|
360
|
+
const configPath = (0, path_1.join)(this.dataDir, normalizedId, "config.json");
|
|
361
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
362
|
+
throw new Error(`Tenant ${normalizedId} not found`);
|
|
363
|
+
}
|
|
364
|
+
const config = JSON.parse((0, fs_1.readFileSync)(configPath, "utf-8"));
|
|
365
|
+
const servers = (config.remoteServers || []);
|
|
366
|
+
const idx = servers.findIndex((s) => s.name?.toLowerCase() === serverName.toLowerCase());
|
|
367
|
+
if (idx === -1)
|
|
368
|
+
return false;
|
|
369
|
+
servers.splice(idx, 1);
|
|
370
|
+
config.remoteServers = servers;
|
|
371
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
372
|
+
this.loadedTenants.delete(normalizedId);
|
|
373
|
+
console.log(`[TenantManager] Removed sync server "${serverName}" from tenant ${normalizedId}`);
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
// =======================================================================
|
|
377
|
+
// Server stores
|
|
378
|
+
// =======================================================================
|
|
379
|
+
async getServerStore(tenantId, dbId) {
|
|
380
|
+
const tenant = await this.getTenant(tenantId);
|
|
381
|
+
const cached = tenant.serverStores.get(dbId);
|
|
382
|
+
if (cached) {
|
|
383
|
+
return cached;
|
|
384
|
+
}
|
|
385
|
+
const localStore = tenant.storeFactory.getStore(dbId);
|
|
386
|
+
const serverStore = new ServerNetworkContentAddressedStore_1.ServerNetworkContentAddressedStore(localStore, tenant.directory, tenant.authService, this.cryptoAdapter);
|
|
387
|
+
tenant.serverStores.set(dbId, serverStore);
|
|
388
|
+
console.log(`[TenantManager] Created server store for ${tenantId}/${dbId}`);
|
|
389
|
+
return serverStore;
|
|
390
|
+
}
|
|
391
|
+
async getStore(tenantId, dbId) {
|
|
392
|
+
const tenant = await this.getTenant(tenantId);
|
|
393
|
+
return tenant.storeFactory.getStore(dbId);
|
|
394
|
+
}
|
|
395
|
+
async getAuthService(tenantId) {
|
|
396
|
+
const tenant = await this.getTenant(tenantId);
|
|
397
|
+
return tenant.authService;
|
|
398
|
+
}
|
|
399
|
+
getCryptoAdapter() {
|
|
400
|
+
return this.cryptoAdapter;
|
|
401
|
+
}
|
|
402
|
+
async reloadTenant(tenantId) {
|
|
403
|
+
const normalizedId = tenantId.toLowerCase();
|
|
404
|
+
this.loadedTenants.delete(normalizedId);
|
|
405
|
+
return this.getTenant(normalizedId);
|
|
406
|
+
}
|
|
407
|
+
clearCache() {
|
|
408
|
+
this.loadedTenants.clear();
|
|
409
|
+
console.log(`[TenantManager] Cleared tenant cache`);
|
|
410
|
+
}
|
|
411
|
+
// -----------------------------------------------------------------------
|
|
412
|
+
// Private helpers
|
|
413
|
+
// -----------------------------------------------------------------------
|
|
414
|
+
async loadTenant(tenantId) {
|
|
415
|
+
const tenantDir = (0, path_1.join)(this.dataDir, tenantId);
|
|
416
|
+
const configPath = (0, path_1.join)(tenantDir, "config.json");
|
|
417
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
418
|
+
throw new Error(`Tenant ${tenantId} not found: ${configPath}`);
|
|
419
|
+
}
|
|
420
|
+
const configJson = (0, fs_1.readFileSync)(configPath, "utf-8");
|
|
421
|
+
const config = JSON.parse(configJson);
|
|
422
|
+
const context = { tenantId, config };
|
|
423
|
+
const storeFactory = new StoreFactory_1.StoreFactory(tenantId, config, this.dataDir);
|
|
424
|
+
// Build the inner directory (real or config-based fallback)
|
|
425
|
+
let innerDirectory;
|
|
426
|
+
let mindooTenant;
|
|
427
|
+
if (config.publicInfosKey && this.serverIdentity && this.serverPassword) {
|
|
428
|
+
try {
|
|
429
|
+
const result = await this.createDirectoryTenant(tenantId, config, storeFactory);
|
|
430
|
+
mindooTenant = result.tenant;
|
|
431
|
+
innerDirectory = await mindooTenant.openDirectory();
|
|
432
|
+
console.log(`[TenantManager] Loaded tenant ${tenantId} with real directory`);
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
console.error(`[TenantManager] Failed to create real directory for ${tenantId}, falling back to config:`, error);
|
|
436
|
+
innerDirectory = new SimpleMindooDirectory(config);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
if (config.publicInfosKey && !this.serverIdentity) {
|
|
441
|
+
console.log(`[TenantManager] Tenant ${tenantId} has publicInfosKey but no server identity; using config-based directory`);
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
console.log(`[TenantManager] No publicInfosKey for ${tenantId}, using config-based directory`);
|
|
445
|
+
}
|
|
446
|
+
innerDirectory = new SimpleMindooDirectory(config);
|
|
447
|
+
}
|
|
448
|
+
// Wrap with CompositeMindooDirectory so trusted servers are also recognized
|
|
449
|
+
const directory = new CompositeMindooDirectory(innerDirectory, this.trustedServers, config.adminUsername
|
|
450
|
+
? {
|
|
451
|
+
username: config.adminUsername,
|
|
452
|
+
signingPublicKey: config.adminSigningPublicKey,
|
|
453
|
+
encryptionPublicKey: config.adminEncryptionPublicKey,
|
|
454
|
+
}
|
|
455
|
+
: undefined);
|
|
456
|
+
const authService = new AuthenticationService_1.AuthenticationService(this.cryptoAdapter, directory, tenantId);
|
|
457
|
+
console.log(`[TenantManager] Loaded tenant: ${tenantId}`);
|
|
458
|
+
return {
|
|
459
|
+
context,
|
|
460
|
+
storeFactory,
|
|
461
|
+
authService,
|
|
462
|
+
directory,
|
|
463
|
+
mindooTenant,
|
|
464
|
+
serverStores: new Map(),
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Create a real BaseMindooTenant for directory reading using the global
|
|
469
|
+
* server identity.
|
|
470
|
+
*/
|
|
471
|
+
async createDirectoryTenant(tenantId, config, storeFactory) {
|
|
472
|
+
const storeFactoryAdapter = new StoreFactoryAdapter(storeFactory);
|
|
473
|
+
const factory = new BaseMindooTenantFactory_1.BaseMindooTenantFactory(storeFactoryAdapter, this.cryptoAdapter);
|
|
474
|
+
const serverUser = this.serverIdentity;
|
|
475
|
+
// Create a KeyBag using the server user's encryption key
|
|
476
|
+
const keyBag = new KeyBag_1.KeyBag(serverUser.userEncryptionKeyPair.privateKey, this.serverPassword, this.cryptoAdapter);
|
|
477
|
+
const publicInfosKeyBytes = Buffer.from(config.publicInfosKey, "base64");
|
|
478
|
+
await keyBag.set("doc", tenantId, types_1.PUBLIC_INFOS_KEY_ID, new Uint8Array(publicInfosKeyBytes));
|
|
479
|
+
// Collect trusted server signing keys for additionalTrustedKeys
|
|
480
|
+
const openOptions = {};
|
|
481
|
+
if (this.trustedServers.length > 0) {
|
|
482
|
+
const trustedKeys = new Map();
|
|
483
|
+
for (const server of this.trustedServers) {
|
|
484
|
+
trustedKeys.set(server.signingPublicKey, true);
|
|
485
|
+
}
|
|
486
|
+
openOptions.additionalTrustedKeys = trustedKeys;
|
|
487
|
+
}
|
|
488
|
+
const tenant = await factory.openTenant(tenantId, config.adminSigningPublicKey, config.adminEncryptionPublicKey, serverUser, this.serverPassword, keyBag, openOptions);
|
|
489
|
+
return { tenant };
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
exports.TenantManager = TenantManager;
|
|
493
|
+
//# sourceMappingURL=TenantManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TenantManager.js","sourceRoot":"","sources":["../../../src/node/server/TenantManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MindooDB Add-to-Network CLI
|
|
4
|
+
*
|
|
5
|
+
* Exchanges trusted-server public keys between a new server and existing servers
|
|
6
|
+
* using `/system/trusted-servers` with JWT auth (same system admin identity on each server).
|
|
7
|
+
*
|
|
8
|
+
* Password: MINDOODB_SYSTEM_ADMIN_PASSWORD, --password-file, or TTY prompt (hidden).
|
|
9
|
+
*/
|
|
10
|
+
interface CliOptions {
|
|
11
|
+
newServer: string;
|
|
12
|
+
servers: string[];
|
|
13
|
+
identityPath: string;
|
|
14
|
+
passwordFile: string;
|
|
15
|
+
help: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Exported for tests. */
|
|
18
|
+
export declare function parseArgs(args: string[]): CliOptions;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=add-to-network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-to-network.d.ts","sourceRoot":"","sources":["../../../src/node/server/add-to-network.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAUH,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,0BAA0B;AAC1B,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmDpD"}
|