spec-3nweb-server 1.7.0 → 1.7.5

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 (144) hide show
  1. package/build/3nstorage/3nstorage-app.d.ts +4 -1
  2. package/build/3nstorage/3nstorage-app.js +18 -9
  3. package/build/3nstorage/owner.d.ts +3 -2
  4. package/build/3nstorage/owner.js +39 -32
  5. package/build/3nstorage/resources/sessions.d.ts +2 -2
  6. package/build/3nstorage/resources/sessions.js +2 -1
  7. package/build/3nstorage/resources/store.d.ts +6 -6
  8. package/build/3nstorage/resources/store.js +3 -12
  9. package/build/3nstorage/resources/users.d.ts +16 -16
  10. package/build/3nstorage/resources/users.js +13 -16
  11. package/build/3nstorage/shared.d.ts +2 -6
  12. package/build/3nstorage/shared.js +5 -9
  13. package/build/asmail/asmail-app.d.ts +1 -1
  14. package/build/asmail/asmail-app.js +3 -3
  15. package/build/asmail/config.d.ts +2 -6
  16. package/build/asmail/config.js +20 -12
  17. package/build/asmail/delivery.d.ts +2 -6
  18. package/build/asmail/delivery.js +0 -6
  19. package/build/asmail/resources/delivery-sessions.d.ts +3 -3
  20. package/build/asmail/resources/delivery-sessions.js +1 -2
  21. package/build/asmail/resources/inbox.d.ts +26 -35
  22. package/build/asmail/resources/inbox.js +15 -59
  23. package/build/asmail/resources/recipients.d.ts +39 -21
  24. package/build/asmail/resources/recipients.js +62 -22
  25. package/build/asmail/resources/sessions.d.ts +2 -2
  26. package/build/asmail/retrieval.d.ts +2 -2
  27. package/build/asmail/retrieval.js +11 -18
  28. package/build/asmail/routes/delivery/sender-authorization.d.ts +1 -1
  29. package/build/asmail/routes/delivery/start-session.d.ts +1 -1
  30. package/build/config/letsencrypt.d.ts +1 -1
  31. package/build/config/signup.d.ts +1 -1
  32. package/build/config/signup.js +2 -1
  33. package/build/lib-common/assert.js +2 -1
  34. package/build/lib-common/buffer-utils.js +2 -1
  35. package/build/lib-common/byte-streaming/common.d.ts +2 -2
  36. package/build/lib-common/byte-streaming/common.js +16 -16
  37. package/build/lib-common/bytes-equal.js +2 -1
  38. package/build/lib-common/exceptions/error.js +2 -1
  39. package/build/lib-common/exceptions/file.d.ts +1 -1
  40. package/build/lib-common/exceptions/file.js +2 -1
  41. package/build/lib-common/exceptions/http.js +2 -1
  42. package/build/lib-common/ipc/generic-ipc.d.ts +7 -7
  43. package/build/lib-common/ipc/generic-ipc.js +20 -20
  44. package/build/lib-common/ipc/ws-ipc.js +2 -1
  45. package/build/lib-common/json-equal.js +2 -1
  46. package/build/lib-common/json-utils.js +2 -1
  47. package/build/lib-common/jwkeys.js +2 -1
  48. package/build/lib-common/map-of-sets.js +2 -1
  49. package/build/lib-common/mid-sigs-NaCl-Ed.js +2 -1
  50. package/build/lib-common/objs-on-disk/file-layout.d.ts +4 -4
  51. package/build/lib-common/objs-on-disk/file-layout.js +2 -1
  52. package/build/lib-common/objs-on-disk/obj-file.js +2 -1
  53. package/build/lib-common/objs-on-disk/utils.d.ts +3 -3
  54. package/build/lib-common/objs-on-disk/v1-obj-file-format.js +2 -1
  55. package/build/lib-common/processes.d.ts +1 -1
  56. package/build/lib-common/processes.js +2 -1
  57. package/build/lib-common/random-node.js +2 -1
  58. package/build/lib-common/service-api/3nstorage/owner.d.ts +1 -3
  59. package/build/lib-common/service-api/3nstorage/owner.js +2 -4
  60. package/build/lib-common/service-api/asmail/config.d.ts +1 -3
  61. package/build/lib-common/service-api/asmail/config.js +4 -5
  62. package/build/lib-common/service-api/asmail/delivery.js +2 -1
  63. package/build/lib-common/service-api/asmail/retrieval.d.ts +1 -3
  64. package/build/lib-common/service-api/asmail/retrieval.js +3 -4
  65. package/build/lib-common/service-api/ipc-api.d.ts +6 -6
  66. package/build/lib-common/service-api/ipc-api.js +2 -1
  67. package/build/lib-common/service-api/locker.d.ts +17 -0
  68. package/build/lib-common/service-api/locker.js +31 -0
  69. package/build/lib-common/service-api/mailer-id/login.js +2 -1
  70. package/build/lib-common/service-api/mailer-id/provisioning.d.ts +3 -4
  71. package/build/lib-common/service-api/mailer-id/provisioning.js +3 -12
  72. package/build/lib-common/service-api/pub-key-login.js +2 -1
  73. package/build/lib-common/service-api/web-socket-base.d.ts +1 -1
  74. package/build/lib-common/service-api/web-socket-base.js +2 -1
  75. package/build/lib-common/session-encryptor.js +2 -1
  76. package/build/lib-common/time-window-cache.js +2 -1
  77. package/build/lib-server/mid-access.d.ts +5 -0
  78. package/build/lib-server/mid-access.js +28 -0
  79. package/build/lib-server/middleware/body-parsers.d.ts +7 -7
  80. package/build/lib-server/middleware/body-parsers.js +14 -14
  81. package/build/lib-server/middleware/error-handler.d.ts +1 -1
  82. package/build/lib-server/pkl-access.d.ts +4 -0
  83. package/build/lib-server/pkl-access.js +28 -0
  84. package/build/lib-server/resources/dns.d.ts +1 -1
  85. package/build/lib-server/resources/dns.js +2 -1
  86. package/build/lib-server/resources/mailerid-authorizer.js +5 -6
  87. package/build/lib-server/resources/server-data-folders.d.ts +1 -0
  88. package/build/lib-server/resources/server-data-folders.js +9 -4
  89. package/build/{mailerId/resources/compute-login-dhshared-key.js → lib-server/resources/server-key-for-pkl-challenge.js} +5 -5
  90. package/build/lib-server/resources/sessions.d.ts +2 -2
  91. package/build/lib-server/resources/sessions.js +7 -7
  92. package/build/lib-server/resources/user-files.d.ts +4 -4
  93. package/build/lib-server/resources/user-files.js +4 -2
  94. package/build/lib-server/routes/pub-key-login/start-exchange.d.ts +4 -4
  95. package/build/lib-server/routes/sessions/close.js +2 -1
  96. package/build/lib-server/routes/sessions/mid-auth.d.ts +1 -1
  97. package/build/lib-server/routes/sessions/start.d.ts +4 -4
  98. package/build/lib-server/web-sockets/app.d.ts +1 -1
  99. package/build/lib-server/web-sockets/app.js +8 -9
  100. package/build/lib-server/web-sockets/server-events.d.ts +1 -1
  101. package/build/lib-server/web-sockets/server-events.js +1 -2
  102. package/build/lib.d.ts +1 -2
  103. package/build/lib.js +2 -5
  104. package/build/locker/locker-app.d.ts +3 -0
  105. package/build/locker/locker-app.js +41 -0
  106. package/build/locker/resources/lockers.d.ts +0 -0
  107. package/build/{lib-common/binding.js → locker/resources/lockers.js} +3 -10
  108. package/build/locker/resources/sessions.d.ts +9 -0
  109. package/build/locker/resources/sessions.js +33 -0
  110. package/build/locker/routes/create-locker.d.ts +4 -0
  111. package/build/locker/routes/create-locker.js +37 -0
  112. package/build/mailerId/mailerId-app.d.ts +1 -1
  113. package/build/mailerId/mailerId-app.js +12 -11
  114. package/build/mailerId/resources/certifier.d.ts +1 -1
  115. package/build/mailerId/resources/sessions.d.ts +1 -1
  116. package/build/mailerId/routes/certify.js +2 -1
  117. package/build/main.js +1 -1
  118. package/build/mock/dns.js +3 -4
  119. package/build/mock/mock-as-child-proc.js +2 -2
  120. package/build/mock/node-child-ipc.d.ts +2 -2
  121. package/build/mock/node-child-ipc.js +2 -1
  122. package/build/mock/run-in-proc.js +2 -2
  123. package/build/mock/tls-options.js +2 -1
  124. package/build/services.d.ts +2 -1
  125. package/build/services.js +22 -11
  126. package/build/{admin → signup}/resources/users.d.ts +3 -3
  127. package/build/{admin → signup}/resources/users.js +3 -4
  128. package/build/{admin/admin-app.d.ts → signup/signup-app.d.ts} +1 -1
  129. package/build/{admin/admin-app.js → signup/signup-app.js} +6 -16
  130. package/build/{admin → signup}/signup-tokens.d.ts +1 -1
  131. package/package.json +3 -3
  132. package/build/config/from-env.d.ts +0 -9
  133. package/build/config/from-env.js +0 -117
  134. package/build/lib-common/binding.d.ts +0 -1
  135. package/build/run.d.ts +0 -1
  136. package/build/run.js +0 -45
  137. /package/build/{mailerId/resources/compute-login-dhshared-key.d.ts → lib-server/resources/server-key-for-pkl-challenge.d.ts} +0 -0
  138. /package/build/{admin → signup}/routes/add.d.ts +0 -0
  139. /package/build/{admin → signup}/routes/add.js +0 -0
  140. /package/build/{admin → signup}/routes/get-available-addresses.d.ts +0 -0
  141. /package/build/{admin → signup}/routes/get-available-addresses.js +0 -0
  142. /package/build/{admin → signup}/routes/get-available-domains.d.ts +0 -0
  143. /package/build/{admin → signup}/routes/get-available-domains.js +0 -0
  144. /package/build/{admin → signup}/signup-tokens.js +0 -0
@@ -1,4 +1,7 @@
1
+ import { Factory as UsersFactory } from './resources/users';
2
+ import { SessionsFactory } from './resources/sessions';
1
3
  import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
2
4
  import { ErrLogger } from '../lib-server/middleware/error-handler';
3
5
  import { AppWithWSs } from '../lib-server/web-sockets/app';
4
- export declare function makeApp(dataFolder: string, domain: string, midAuthorizer: MidAuthorizer, errLogger?: ErrLogger): AppWithWSs;
6
+ export declare function makeStorageApp(dataFolder: string, domain: string, midAuthorizer: MidAuthorizer, errLogger?: ErrLogger): AppWithWSs;
7
+ export declare function makeStorageAppForLocker(users: UsersFactory, ownersSessions: SessionsFactory, sharingSessions: SessionsFactory, errLogger?: ErrLogger): AppWithWSs;
@@ -16,18 +16,18 @@
16
16
  this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.makeApp = void 0;
19
+ exports.makeStorageAppForLocker = exports.makeStorageApp = void 0;
20
20
  const users_1 = require("./resources/users");
21
21
  const sessions_1 = require("./resources/sessions");
22
22
  const error_handler_1 = require("../lib-server/middleware/error-handler");
23
23
  const app_1 = require("../lib-server/web-sockets/app");
24
- const owners = require("./owner");
25
- const sharing = require("./shared");
24
+ const owner_1 = require("./owner");
25
+ const shared_1 = require("./shared");
26
26
  const PATHS = {
27
27
  owner: '/owner/',
28
28
  shared: '/shared/'
29
29
  };
30
- function setupStaticEntryRoute(app) {
30
+ function setupStaticStorageEntryRoute(app) {
31
31
  app.route('/')
32
32
  .get((req, res) => {
33
33
  let path = req.originalUrl;
@@ -42,16 +42,25 @@ function setupStaticEntryRoute(app) {
42
42
  res.status(200).json(json);
43
43
  });
44
44
  }
45
- function makeApp(dataFolder, domain, midAuthorizer, errLogger) {
45
+ function makeStorageApp(dataFolder, domain, midAuthorizer, errLogger) {
46
46
  const app = new app_1.AppWithWSs();
47
47
  const ownersSessions = (0, sessions_1.makeSessionFactory)(20 * 60);
48
48
  const sharingSessions = (0, sessions_1.makeSessionFactory)(20 * 60);
49
49
  const users = (0, users_1.makeFactory)(dataFolder);
50
- setupStaticEntryRoute(app.http);
51
- app.use(PATHS.owner, owners.makeApp(domain, ownersSessions, users, midAuthorizer));
52
- app.http.use(PATHS.shared, sharing.makeApp(sharingSessions, users));
50
+ setupStaticStorageEntryRoute(app.http);
51
+ app.use(PATHS.owner, (0, owner_1.makeOwnerStorageApp)(domain, ownersSessions, users, midAuthorizer));
52
+ app.http.use(PATHS.shared, (0, shared_1.makeSharedStorageApp)(sharingSessions, users));
53
53
  app.http.use((0, error_handler_1.makeErrHandler)(errLogger));
54
54
  return app;
55
55
  }
56
- exports.makeApp = makeApp;
56
+ exports.makeStorageApp = makeStorageApp;
57
+ function makeStorageAppForLocker(users, ownersSessions, sharingSessions, errLogger) {
58
+ const app = new app_1.AppWithWSs();
59
+ setupStaticStorageEntryRoute(app.http);
60
+ app.use(PATHS.owner, (0, owner_1.makeOwnerStorageForLocker)(ownersSessions, users));
61
+ app.http.use(PATHS.shared, (0, shared_1.makeSharedStorageApp)(sharingSessions, users));
62
+ app.http.use((0, error_handler_1.makeErrHandler)(errLogger));
63
+ return app;
64
+ }
65
+ exports.makeStorageAppForLocker = makeStorageAppForLocker;
57
66
  Object.freeze(exports);
@@ -1,5 +1,6 @@
1
1
  import { AppWithWSs } from '../lib-server/web-sockets/app';
2
2
  import { SessionsFactory } from './resources/sessions';
3
- import { Factory as usersFactory } from './resources/users';
3
+ import { Factory as UsersFactory } from './resources/users';
4
4
  import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
5
- export declare function makeApp(domain: string, sessions: SessionsFactory, users: usersFactory, midAuthorizer: MidAuthorizer): AppWithWSs;
5
+ export declare function makeOwnerStorageApp(domain: string, sessions: SessionsFactory, users: UsersFactory, midAuthorizer: MidAuthorizer): AppWithWSs;
6
+ export declare function makeOwnerStorageForLocker(sessions: SessionsFactory, users: UsersFactory): AppWithWSs;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- Copyright (C) 2015 - 2017, 2022 3NSoft Inc.
3
+ Copyright (C) 2015 - 2017, 2022, 2024 3NSoft Inc.
4
4
 
5
5
  This program is free software: you can redistribute it and/or modify it under
6
6
  the terms of the GNU General Public License as published by the Free Software
@@ -13,20 +13,13 @@
13
13
  See the GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License along with
16
- this program. If not, see <http://www.gnu.org/licenses/>. */
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
17
18
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.makeApp = void 0;
19
- /**
20
- * This module gives a function that creates a mountable, or app.use()-able,
21
- * express 3NStorage owners' application.
22
- */
23
- // Internal libs
19
+ exports.makeOwnerStorageForLocker = exports.makeOwnerStorageApp = void 0;
24
20
  const body_parsers_1 = require("../lib-server/middleware/body-parsers");
25
21
  const app_1 = require("../lib-server/web-sockets/app");
26
22
  const server_events_1 = require("../lib-server/web-sockets/server-events");
27
- // routes
28
- const mid_auth_1 = require("../lib-server/routes/sessions/mid-auth");
29
- const start_1 = require("../lib-server/routes/sessions/start");
30
23
  const close_1 = require("../lib-server/routes/sessions/close");
31
24
  const session_params_1 = require("./routes/owner/session-params");
32
25
  const param_getter_1 = require("./routes/owner/param-getter");
@@ -39,13 +32,28 @@ const delete_obj_1 = require("./routes/owner/delete-obj");
39
32
  const archive_obj_version_1 = require("./routes/owner/archive-obj-version");
40
33
  const get_obj_status_1 = require("./routes/owner/get-obj-status");
41
34
  const api = require("../lib-common/service-api/3nstorage/owner");
42
- function makeApp(domain, sessions, users, midAuthorizer) {
35
+ const mid_access_1 = require("../lib-server/mid-access");
36
+ function makeOwnerStorageApp(domain, sessions, users, midAuthorizer) {
43
37
  const app = new app_1.AppWithWSs();
44
- setHttpPart(app, domain, sessions, users, midAuthorizer);
38
+ const setupLoginRoutes = (app, urlPrefix) => (0, mid_access_1.addMailerIdLoginRoutes)(app, domain, urlPrefix, sessions, users.exists, midAuthorizer);
39
+ setHttpPart(app.http, setupLoginRoutes, sessions, users);
45
40
  setWSPart(app, sessions, users);
46
41
  return app;
47
42
  }
48
- exports.makeApp = makeApp;
43
+ exports.makeOwnerStorageApp = makeOwnerStorageApp;
44
+ function makeOwnerStorageForLocker(sessions, users) {
45
+ const app = new app_1.AppWithWSs();
46
+ // XXX WIP
47
+ // const setupLoginRoutes: SetupLoginRoutes = (
48
+ // app, urlPrefix
49
+ // ) => addPKLLoginRoutes(
50
+ // app, urlPrefix, getUserParamsAndKey, sessions, calcNaClBoxSharedKey
51
+ // );
52
+ // setHttpPart(app.http, setupLoginRoutes, sessions, users);
53
+ setWSPart(app, sessions, users);
54
+ return app;
55
+ }
56
+ exports.makeOwnerStorageForLocker = makeOwnerStorageForLocker;
49
57
  function setWSPart(app, sessions, users) {
50
58
  const sockets = new app_1.UserSockets(sessions.ensureAuthorizedSessionForSocketStart());
51
59
  const storageEvents = new server_events_1.ServerEvents(undefined, api.events.all, sockets.socketGetter);
@@ -55,49 +63,48 @@ function setWSPart(app, sessions, users) {
55
63
  app.addWS(api.wsEventChannel.URL_END, sockets);
56
64
  }
57
65
  const MAX_CHUNK_SIZE = '0.5mb';
58
- function setHttpPart(app, domain, sessions, users, midAuthorizer) {
59
- app.http.disable('etag');
66
+ function setHttpPart(app, setupLoginRoutes, sessions, users) {
67
+ app.disable('etag');
60
68
  // Login
61
- app.http.post('/' + api.midLogin.START_URL_END, sessions.checkSession(), (0, body_parsers_1.json)('1kb'), (0, start_1.startSession)(users.exists, sessions.generate));
62
- app.http.post('/' + api.midLogin.AUTH_URL_END, sessions.ensureOpenedSession(), (0, body_parsers_1.json)('4kb'), (0, mid_auth_1.midLogin)(domain, midAuthorizer));
69
+ setupLoginRoutes(app, '/' + api.midLogin.URL_PART);
63
70
  // *** Require authorized session for everything below ***
64
- app.http.use(sessions.ensureAuthorizedSession());
65
- app.http.post('/' + api.closeSession.URL_END, (0, body_parsers_1.emptyBody)(), (0, close_1.closeSession)());
71
+ app.use(sessions.ensureAuthorizedSession());
72
+ app.post('/' + api.closeSession.URL_END, (0, body_parsers_1.emptyBody)(), (0, close_1.closeSession)());
66
73
  // Session params
67
- app.http.get('/' + api.sessionParams.URL_END, (0, session_params_1.sessionParams)(MAX_CHUNK_SIZE));
74
+ app.get('/' + api.sessionParams.URL_END, (0, session_params_1.sessionParams)(MAX_CHUNK_SIZE));
68
75
  // Key derivation params
69
- app.http.route('/' + api.keyDerivParams.URL_END)
76
+ app.route('/' + api.keyDerivParams.URL_END)
70
77
  .get((0, param_getter_1.getParam)(users.getKeyDerivParams))
71
78
  .put((0, body_parsers_1.json)('1kb'), (0, param_setter_1.setParam)(users.setKeyDerivParams));
72
79
  // Transaction canceling
73
- app.http.post('/' + api.cancelTransaction.EXPRESS_URL_END, (0, body_parsers_1.emptyBody)(), (0, cancel_trans_1.cancelTransaction)(false, users.cancelTransaction));
74
- app.http.post('/' + api.cancelRootTransaction.EXPRESS_URL_END, (0, body_parsers_1.emptyBody)(), (0, cancel_trans_1.cancelTransaction)(true, users.cancelTransaction));
80
+ app.post('/' + api.cancelTransaction.EXPRESS_URL_END, (0, body_parsers_1.emptyBody)(), (0, cancel_trans_1.cancelTransaction)(false, users.cancelTransaction));
81
+ app.post('/' + api.cancelRootTransaction.EXPRESS_URL_END, (0, body_parsers_1.emptyBody)(), (0, cancel_trans_1.cancelTransaction)(true, users.cancelTransaction));
75
82
  // Getting and updating current root object
76
- app.http.route('/' + api.currentRootObj.EXPRESS_URL_END)
83
+ app.route('/' + api.currentRootObj.EXPRESS_URL_END)
77
84
  .get((0, get_current_obj_1.getCurrentObj)(true, users.getCurrentRootObj))
78
85
  .put((0, put_current_obj_1.saveCurrentObj)(true, users.saveNewRootVersion, MAX_CHUNK_SIZE));
79
86
  // Getting, updating and removing current non-root objects
80
- app.http.route('/' + api.currentObj.EXPRESS_URL_END)
87
+ app.route('/' + api.currentObj.EXPRESS_URL_END)
81
88
  .get((0, get_current_obj_1.getCurrentObj)(false, users.getCurrentObj))
82
89
  .delete((0, delete_obj_1.deleteCurrentObjVer)(users.deleteCurrentObjVersion))
83
90
  .put((0, put_current_obj_1.saveCurrentObj)(false, users.saveNewObjVersion, MAX_CHUNK_SIZE));
84
91
  // Getting root archived versions
85
- app.http.route('/' + api.archivedRootVersion.EXPRESS_URL_END)
92
+ app.route('/' + api.archivedRootVersion.EXPRESS_URL_END)
86
93
  .get((0, get_archived_obj_ver_1.getArchivedObjVersion)(true, users.getArchivedRootVersion));
87
94
  // Getting non-root object archived versions
88
- app.http.route('/' + api.archivedObjVersion.EXPRESS_URL_END)
95
+ app.route('/' + api.archivedObjVersion.EXPRESS_URL_END)
89
96
  .get((0, get_archived_obj_ver_1.getArchivedObjVersion)(false, users.getArchivedObjVersion));
90
97
  // Archive root's current version
91
- app.http.route('/' + api.archiveRoot.EXPRESS_URL_END)
98
+ app.route('/' + api.archiveRoot.EXPRESS_URL_END)
92
99
  .post((0, body_parsers_1.emptyBody)(), (0, archive_obj_version_1.archiveCurrentObjVersion)(true, users.archiveObjVersion))
93
100
  .delete((0, delete_obj_1.deleteArchivedObjVer)(true, users.deleteArchivedObjVersion));
94
101
  // Archive non-root object's current version
95
- app.http.route('/' + api.archiveObj.EXPRESS_URL_END)
102
+ app.route('/' + api.archiveObj.EXPRESS_URL_END)
96
103
  .post((0, body_parsers_1.emptyBody)(), (0, archive_obj_version_1.archiveCurrentObjVersion)(false, users.archiveObjVersion))
97
104
  .delete((0, delete_obj_1.deleteArchivedObjVer)(false, users.deleteArchivedObjVersion));
98
105
  // Getting root object status
99
- app.http.get('/' + api.rootStatus.EXPRESS_URL_END, (0, get_obj_status_1.getObjStatus)(true, users.getObjStatus));
106
+ app.get('/' + api.rootStatus.EXPRESS_URL_END, (0, get_obj_status_1.getObjStatus)(true, users.getObjStatus));
100
107
  // Getting object status
101
- app.http.get('/' + api.objStatus.EXPRESS_URL_END, (0, get_obj_status_1.getObjStatus)(false, users.getObjStatus));
108
+ app.get('/' + api.objStatus.EXPRESS_URL_END, (0, get_obj_status_1.getObjStatus)(false, users.getObjStatus));
102
109
  }
103
110
  Object.freeze(exports);
@@ -1,6 +1,6 @@
1
1
  import { Request as Req, SessionParams, Factory } from '../../lib-server/resources/sessions';
2
- export declare type SessionsFactory = Factory<SessionParams>;
3
- export declare type Request = Req<SessionParams>;
2
+ export type SessionsFactory = Factory<SessionParams>;
3
+ export type Request = Req<SessionParams>;
4
4
  /**
5
5
  * This returns factory, that works properly in a single process application,
6
6
  * clearing up sessions that past given timeout.
@@ -13,7 +13,8 @@
13
13
  See the GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License along with
16
- this program. If not, see <http://www.gnu.org/licenses/>. */
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
17
18
  Object.defineProperty(exports, "__esModule", { value: true });
18
19
  exports.makeSessionFactory = void 0;
19
20
  const mem_backed_sessions_factory_1 = require("../../lib-server/resources/mem-backed-sessions-factory");
@@ -5,7 +5,7 @@ import { UserFiles, ObjReader } from '../../lib-server/resources/user-files';
5
5
  import { DiffInfo, events, ObjStatus } from '../../lib-common/service-api/3nstorage/owner';
6
6
  export { DiffInfo } from '../../lib-common/service-api/3nstorage/owner';
7
7
  export { ObjPipe, ObjReader } from '../../lib-server/resources/user-files';
8
- export declare type StorageEventsSink = (userId: string, channel: events.EventNameType, event: events.AllTypes) => void;
8
+ export type StorageEventsSink = (userId: string, channel: events.EventNameType, event: events.AllTypes) => void;
9
9
  export declare const SC: {
10
10
  USER_UNKNOWN: string;
11
11
  OBJ_EXIST: string;
@@ -36,7 +36,10 @@ export interface TransactionInfo extends TransactionParams {
36
36
  transactionType: 'write' | 'remove' | 'archive';
37
37
  transactionId: string;
38
38
  }
39
- export declare class Store extends UserFiles {
39
+ export interface StorageParams {
40
+ "key-deriv": any;
41
+ }
42
+ export declare class Store extends UserFiles<StorageParams> {
40
43
  private storageEventsSink;
41
44
  private objVerFiles;
42
45
  private statuses;
@@ -112,8 +115,5 @@ export declare class Store extends UserFiles {
112
115
  private rmObjFiles;
113
116
  archiveCurrentObjVersion(objId: string, version: number): Promise<void>;
114
117
  getObjStatus(objId: string): Promise<ObjStatus>;
115
- static getSpaceQuota(store: Store): Promise<number>;
116
- static getKeyDerivParams(store: Store): Promise<any>;
117
- static setKeyDerivParams(store: Store, params: any, setDefault: boolean): Promise<boolean>;
118
- getKeyDerivParams(): Promise<any>;
118
+ setKeyDerivParams(params: any, setDefault: boolean): Promise<boolean>;
119
119
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- Copyright (C) 2015 - 2017, 2019 - 2020, 2022 3NSoft Inc.
3
+ Copyright (C) 2015 - 2017, 2019 - 2020, 2022, 2025 3NSoft Inc.
4
4
 
5
5
  This program is free software: you can redistribute it and/or modify it under
6
6
  the terms of the GNU General Public License as published by the Free Software
@@ -422,25 +422,16 @@ class Store extends user_files_1.UserFiles {
422
422
  archived: status.archivedVersions
423
423
  };
424
424
  }
425
- static getSpaceQuota(store) {
426
- return store.getSpaceQuota();
427
- }
428
- static getKeyDerivParams(store) {
429
- return store.getParam('key-deriv');
430
- }
431
- static async setKeyDerivParams(store, params, setDefault) {
425
+ async setKeyDerivParams(params, setDefault) {
432
426
  if (setDefault) {
433
427
  params = {};
434
428
  }
435
429
  else if ((typeof params !== 'object') || Array.isArray(params)) {
436
430
  return false;
437
431
  }
438
- await store.setParam('key-deriv', params);
432
+ await this.setParam('key-deriv', params);
439
433
  return true;
440
434
  }
441
- getKeyDerivParams() {
442
- return this.getParam('key-deriv');
443
- }
444
435
  }
445
436
  exports.Store = Store;
446
437
  Object.freeze(Store.prototype);
@@ -5,27 +5,27 @@
5
5
  * which is created by this module.
6
6
  */
7
7
  import { Readable as ReadableStream } from 'stream';
8
- import { ObjReader, StorageEventsSink } from './store';
8
+ import { ObjReader, StorageEventsSink, StorageParams } from './store';
9
9
  import { PutObjFirstQueryOpts, PutObjSecondQueryOpts, DiffInfo, ObjStatus } from '../../lib-common/service-api/3nstorage/owner';
10
10
  export { SC, ObjReader, MismatchedObjVerException } from './store';
11
- export declare type UserExists = (userId: string) => Promise<boolean>;
12
- export declare type GetCurrentObj = (userId: string, objId: string | null, header: boolean, segsOffset: number, segsLimit: number | undefined) => Promise<{
11
+ export type UserExists = (userId: string) => Promise<boolean>;
12
+ export type GetCurrentObj = (userId: string, objId: string | null, header: boolean, segsOffset: number, segsLimit: number | undefined) => Promise<{
13
13
  version: number;
14
14
  reader: ObjReader;
15
15
  }>;
16
- export declare type SaveNewObjVersion = (userId: string, objId: string | null, fstReq: PutObjFirstQueryOpts | undefined, diff: DiffInfo | undefined, sndReq: PutObjSecondQueryOpts | undefined, bytesLen: number, bytes: ReadableStream) => Promise<string | undefined>;
17
- export declare type GetArchivedObjVersion = (userId: string, objId: string | null, version: number, header: boolean, segsOffset: number, segsLimit: number | undefined) => Promise<ObjReader>;
18
- export declare type CancelTransaction = (userId: string, objId: string, transactionId?: string) => Promise<void>;
19
- export declare type ArchiveObjCurrentVersion = (userId: string, objId: string, version: number) => Promise<void>;
20
- export declare type GetObjStatus = (userId: string, objId: string) => Promise<ObjStatus>;
21
- export declare type DeleteCurrentObjVersion = (userId: string, objId: string, version?: number) => Promise<void>;
22
- export declare type DeleteArchivedObjVersion = (userId: string, objId: string | null, version: number) => Promise<void>;
23
- declare type GetParam<T> = (userId: string) => Promise<T>;
24
- declare type SetParam<T> = (userId: string, param: T) => Promise<boolean>;
25
- export declare type GetSpaceQuota = GetParam<number>;
26
- export declare type GetKeyDerivParams = GetParam<any>;
27
- export declare type SetKeyDerivParams = SetParam<any>;
28
- export declare type EventsSink = StorageEventsSink;
16
+ export type SaveNewObjVersion = (userId: string, objId: string | null, fstReq: PutObjFirstQueryOpts | undefined, diff: DiffInfo | undefined, sndReq: PutObjSecondQueryOpts | undefined, bytesLen: number, bytes: ReadableStream) => Promise<string | undefined>;
17
+ export type GetArchivedObjVersion = (userId: string, objId: string | null, version: number, header: boolean, segsOffset: number, segsLimit: number | undefined) => Promise<ObjReader>;
18
+ export type CancelTransaction = (userId: string, objId: string, transactionId?: string) => Promise<void>;
19
+ export type ArchiveObjCurrentVersion = (userId: string, objId: string, version: number) => Promise<void>;
20
+ export type GetObjStatus = (userId: string, objId: string) => Promise<ObjStatus>;
21
+ export type DeleteCurrentObjVersion = (userId: string, objId: string, version?: number) => Promise<void>;
22
+ export type DeleteArchivedObjVersion = (userId: string, objId: string | null, version: number) => Promise<void>;
23
+ export type GetSpaceQuota = (userId: string) => Promise<number>;
24
+ type GetParam<P extends keyof StorageParams> = (userId: string) => Promise<StorageParams[P]>;
25
+ type SetParam<P extends keyof StorageParams> = (userId: string, param: StorageParams[P]) => Promise<boolean>;
26
+ export type GetKeyDerivParams = GetParam<'key-deriv'>;
27
+ export type SetKeyDerivParams = SetParam<'key-deriv'>;
28
+ export type EventsSink = StorageEventsSink;
29
29
  /**
30
30
  * This is an external interface, behind which all storage machinery is hidding.
31
31
  */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- Copyright (C) 2015 - 2017, 2020 3NSoft Inc.
3
+ Copyright (C) 2015 - 2017, 2020, 2025 3NSoft Inc.
4
4
 
5
5
  This program is free software: you can redistribute it and/or modify it under
6
6
  the terms of the GNU General Public License as published by the Free Software
@@ -46,18 +46,6 @@ function makeFactory(rootFolder, writeBufferSize, readBufferSize) {
46
46
  return store;
47
47
  }
48
48
  }
49
- function makeParamGetter(staticGetter) {
50
- return async (userId) => {
51
- const store = await getStore(userId);
52
- return staticGetter(store);
53
- };
54
- }
55
- function makeParamSetter(staticSetter) {
56
- return async (userId, param, setDefault) => {
57
- const store = await getStore(userId);
58
- return staticSetter(store, param, !!setDefault);
59
- };
60
- }
61
49
  function makeCurrentObjGetter(isRoot) {
62
50
  return async (userId, objId, header, segsOffset, segsLimit) => {
63
51
  if ((isRoot && objId) || (!isRoot && !objId)) {
@@ -112,9 +100,18 @@ function makeFactory(rootFolder, writeBufferSize, readBufferSize) {
112
100
  return false;
113
101
  }
114
102
  },
115
- getSpaceQuota: makeParamGetter(store_1.Store.getSpaceQuota),
116
- getKeyDerivParams: makeParamGetter(store_1.Store.getKeyDerivParams),
117
- setKeyDerivParams: makeParamSetter(store_1.Store.setKeyDerivParams),
103
+ getSpaceQuota: async (userId) => {
104
+ const store = await getStore(userId);
105
+ return await store.getSpaceQuota();
106
+ },
107
+ getKeyDerivParams: async (userId) => {
108
+ const store = await getStore(userId);
109
+ return await store.getParam('key-deriv');
110
+ },
111
+ setKeyDerivParams: async (userId, keyParams) => {
112
+ const store = await getStore(userId);
113
+ return await store.setKeyDerivParams(keyParams, false);
114
+ },
118
115
  getCurrentRootObj: makeCurrentObjGetter(true),
119
116
  getCurrentObj: makeCurrentObjGetter(false),
120
117
  getArchivedRootVersion: makeArchivedObjGetter(true),
@@ -1,8 +1,4 @@
1
- /**
2
- * This module gives a function that creates a mountable, or app.use()-able,
3
- * express 3NStorage sharing application.
4
- */
5
1
  import * as express from 'express';
6
- import { Factory as usersFactory } from './resources/users';
2
+ import { Factory as UsersFactory } from './resources/users';
7
3
  import { SessionsFactory } from './resources/sessions';
8
- export declare function makeApp(sessions: SessionsFactory, users: usersFactory): express.Express;
4
+ export declare function makeSharedStorageApp(sessions: SessionsFactory, users: UsersFactory): express.Express;
@@ -13,17 +13,13 @@
13
13
  See the GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License along with
16
- this program. If not, see <http://www.gnu.org/licenses/>. */
16
+ this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
17
18
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.makeApp = void 0;
19
- /**
20
- * This module gives a function that creates a mountable, or app.use()-able,
21
- * express 3NStorage sharing application.
22
- */
19
+ exports.makeSharedStorageApp = void 0;
23
20
  const express = require("express");
24
- // routes
25
21
  //import * as api from '../../lib-common/service-api/3nstorage/shared';
26
- function makeApp(sessions, users) {
22
+ function makeSharedStorageApp(sessions, users) {
27
23
  const app = express();
28
24
  app.disable('etag');
29
25
  // TODO add sharing routes with proper session creation for authorities/capabilities
@@ -36,5 +32,5 @@ function makeApp(sessions, users) {
36
32
  // and file keys.
37
33
  return app;
38
34
  }
39
- exports.makeApp = makeApp;
35
+ exports.makeSharedStorageApp = makeSharedStorageApp;
40
36
  Object.freeze(exports);
@@ -1,4 +1,4 @@
1
1
  import { AppWithWSs } from '../lib-server/web-sockets/app';
2
2
  import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
3
3
  import { ErrLogger } from '../lib-server/middleware/error-handler';
4
- export declare function makeApp(rootFolder: string, domain: string, midAuthorizer: MidAuthorizer, errLogger?: ErrLogger): AppWithWSs;
4
+ export declare function makeASMailApp(rootFolder: string, domain: string, midAuthorizer: MidAuthorizer, errLogger?: ErrLogger): AppWithWSs;
@@ -16,7 +16,7 @@
16
16
  this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.makeApp = void 0;
19
+ exports.makeASMailApp = void 0;
20
20
  const app_1 = require("../lib-server/web-sockets/app");
21
21
  const delivery_sessions_1 = require("./resources/delivery-sessions");
22
22
  const sessions_1 = require("./resources/sessions");
@@ -46,7 +46,7 @@ function setupStaticEntryRoute(app) {
46
46
  res.status(200).json(json);
47
47
  });
48
48
  }
49
- function makeApp(rootFolder, domain, midAuthorizer, errLogger) {
49
+ function makeASMailApp(rootFolder, domain, midAuthorizer, errLogger) {
50
50
  const app = new app_1.AppWithWSs();
51
51
  const mailDeliverySessions = delivery_sessions_1.DeliverySessions.make(5 * 60);
52
52
  const recipientsSessions = (0, sessions_1.makeSessionFactory)(10 * 60);
@@ -59,5 +59,5 @@ function makeApp(rootFolder, domain, midAuthorizer, errLogger) {
59
59
  app.http.use((0, error_handler_1.makeErrHandler)(errLogger));
60
60
  return app;
61
61
  }
62
- exports.makeApp = makeApp;
62
+ exports.makeASMailApp = makeASMailApp;
63
63
  Object.freeze(exports);
@@ -1,9 +1,5 @@
1
- /**
2
- * This module gives a function that creates a mountable, or app.use()-able,
3
- * express ASMail-Configuration application.
4
- */
5
1
  import * as express from 'express';
6
2
  import { SessionsFactory } from './resources/sessions';
7
- import { Factory as usersFactory } from './resources/recipients';
3
+ import { Factory as UsersFactory } from './resources/recipients';
8
4
  import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
9
- export declare function makeApp(domain: string, sessions: SessionsFactory, recipients: usersFactory, midAuthorizer: MidAuthorizer): express.Express;
5
+ export declare function makeApp(domain: string, sessions: SessionsFactory, recipients: UsersFactory, midAuthorizer: MidAuthorizer): express.Express;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- Copyright (C) 2015 - 2016 3NSoft Inc.
3
+ Copyright (C) 2015 - 2016, 2024 - 2025 3NSoft Inc.
4
4
 
5
5
  This program is free software: you can redistribute it and/or modify it under
6
6
  the terms of the GNU General Public License as published by the Free Software
@@ -17,34 +17,42 @@
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.makeApp = void 0;
20
- /**
21
- * This module gives a function that creates a mountable, or app.use()-able,
22
- * express ASMail-Configuration application.
23
- */
24
20
  const express = require("express");
25
- // Internal libs
26
21
  const body_parsers_1 = require("../lib-server/middleware/body-parsers");
27
- // routes
28
- const mid_auth_1 = require("../lib-server/routes/sessions/mid-auth");
29
- const start_1 = require("../lib-server/routes/sessions/start");
30
22
  const close_1 = require("../lib-server/routes/sessions/close");
31
23
  const param_getter_1 = require("./routes/config/param-getter");
32
24
  const param_setter_1 = require("./routes/config/param-setter");
33
25
  const api = require("../lib-common/service-api/asmail/config");
26
+ const mid_access_1 = require("../lib-server/mid-access");
34
27
  function makeApp(domain, sessions, recipients, midAuthorizer) {
35
28
  const app = express();
36
29
  app.disable('etag');
37
- app.post('/' + api.midLogin.START_URL_END, sessions.checkSession(), (0, body_parsers_1.json)('1kb'), (0, start_1.startSession)(recipients.exists, sessions.generate));
38
- app.post('/' + api.midLogin.AUTH_URL_END, sessions.ensureOpenedSession(), (0, body_parsers_1.json)('4kb'), (0, mid_auth_1.midLogin)(domain, midAuthorizer));
30
+ // Login
31
+ (0, mid_access_1.addMailerIdLoginRoutes)(app, domain, '/' + api.midLogin.URL_PART, sessions, recipients.exists, midAuthorizer);
39
32
  // *** Require authorized session for everything below ***
40
33
  app.use(sessions.ensureAuthorizedSession());
41
34
  app.post('/' + api.closeSession.URL_END, (0, body_parsers_1.emptyBody)(), (0, close_1.closeSession)());
42
35
  app.route('/' + api.p.initPubKey.URL_END)
43
36
  .get((0, param_getter_1.getParam)(recipients.getPubKey))
44
37
  .put((0, body_parsers_1.json)('4kb', true), (0, param_setter_1.setParam)(recipients.setPubKey));
38
+ app.route('/' + api.p.anonSenderPolicy.URL_END)
39
+ .get((0, param_getter_1.getParam)(recipients.getAnonSenderInvites))
40
+ .put((0, body_parsers_1.json)('40kb', true), (0, param_setter_1.setParam)(recipients.setAnonSenderInvites));
45
41
  app.route('/' + api.p.anonSenderInvites.URL_END)
46
42
  .get((0, param_getter_1.getParam)(recipients.getAnonSenderInvites))
47
- .put((0, body_parsers_1.json)('4kb', true), (0, param_setter_1.setParam)(recipients.setAnonSenderInvites));
43
+ .put((0, body_parsers_1.json)('40kb', true), (0, param_setter_1.setParam)(recipients.setAnonSenderInvites));
44
+ app.route('/' + api.p.authSenderPolicy.URL_END)
45
+ .get((0, param_getter_1.getParam)(recipients.getAuthSenderPolicy))
46
+ .put((0, body_parsers_1.json)('4kb', true), (0, param_setter_1.setParam)(recipients.setAuthSenderPolicy));
47
+ app.route('/' + api.p.authSenderInvites.URL_END)
48
+ .get((0, param_getter_1.getParam)(recipients.getAuthSenderInvites))
49
+ .put((0, body_parsers_1.json)('40kb', true), (0, param_setter_1.setParam)(recipients.setAuthSenderInvites));
50
+ app.route('/' + api.p.authSenderWhitelist.URL_END)
51
+ .get((0, param_getter_1.getParam)(recipients.getAuthSenderWhitelist))
52
+ .put((0, body_parsers_1.json)('40kb', true), (0, param_setter_1.setParam)(recipients.setAuthSenderWhitelist));
53
+ app.route('/' + api.p.authSenderBlacklist.URL_END)
54
+ .get((0, param_getter_1.getParam)(recipients.getAuthSenderBlacklist))
55
+ .put((0, body_parsers_1.json)('40kb', true), (0, param_setter_1.setParam)(recipients.setAuthSenderBlacklist));
48
56
  return app;
49
57
  }
50
58
  exports.makeApp = makeApp;
@@ -1,9 +1,5 @@
1
- /**
2
- * This module gives a function that creates a mountable, or app.use()-able,
3
- * express ASMail application.
4
- */
5
1
  import * as express from 'express';
6
2
  import { SessionsFactory } from './resources/delivery-sessions';
7
- import { Factory as recipFactory } from './resources/recipients';
3
+ import { Factory as RecipFactory } from './resources/recipients';
8
4
  import { IMidAuthorizer } from './routes/delivery/sender-authorization';
9
- export declare function makeApp(domain: string, sessions: SessionsFactory, recipients: recipFactory, midAuthorizer: IMidAuthorizer): express.Express;
5
+ export declare function makeApp(domain: string, sessions: SessionsFactory, recipients: RecipFactory, midAuthorizer: IMidAuthorizer): express.Express;
@@ -17,14 +17,8 @@
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.makeApp = void 0;
20
- /**
21
- * This module gives a function that creates a mountable, or app.use()-able,
22
- * express ASMail application.
23
- */
24
20
  const express = require("express");
25
- // Internal libs
26
21
  const body_parsers_1 = require("../lib-server/middleware/body-parsers");
27
- // Modules for ASMail delivery protocol
28
22
  const start_session_1 = require("./routes/delivery/start-session");
29
23
  const pre_flight_1 = require("./routes/delivery/pre-flight");
30
24
  const restart_session_1 = require("./routes/delivery/restart-session");
@@ -11,9 +11,9 @@ export interface SessionParams {
11
11
  currentMsgLength: number;
12
12
  msgId: string;
13
13
  }
14
- export declare type Request = Req<SessionParams>;
15
- export declare type GenerateSession = GenSession<SessionParams>;
16
- export declare type GetSessionForMsg = (recipient: string, msgId: string) => Promise<Session<SessionParams> | undefined>;
14
+ export type Request = Req<SessionParams>;
15
+ export type GenerateSession = GenSession<SessionParams>;
16
+ export type GetSessionForMsg = (recipient: string, msgId: string) => Promise<Session<SessionParams> | undefined>;
17
17
  export interface SessionsFactory extends Factory<SessionParams> {
18
18
  getSessionForMsg: GetSessionForMsg;
19
19
  }
@@ -22,7 +22,6 @@ exports.DeliverySessions = void 0;
22
22
  */
23
23
  const mem_backed_sessions_factory_1 = require("../../lib-server/resources/mem-backed-sessions-factory");
24
24
  const sessions_1 = require("../../lib-server/resources/sessions");
25
- const binding_1 = require("../../lib-common/binding");
26
25
  class DeliverySessions extends mem_backed_sessions_factory_1.InMemorySessions {
27
26
  constructor(timeoutSecs) {
28
27
  super(timeoutSecs, sessionId => this.makeSessionParams(sessionId));
@@ -84,7 +83,7 @@ class DeliverySessions extends mem_backed_sessions_factory_1.InMemorySessions {
84
83
  static make(timeout) {
85
84
  const factory = new DeliverySessions(timeout);
86
85
  const wrap = (0, sessions_1.wrapFactory)(factory);
87
- wrap.getSessionForMsg = (0, binding_1.bind)(factory, factory.getSessionForMsg);
86
+ wrap.getSessionForMsg = factory.getSessionForMsg.bind(factory);
88
87
  return Object.freeze(wrap);
89
88
  }
90
89
  }