spec-3nweb-server 1.8.5 → 1.8.7
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/.gitlab-ci-linux.yml +50 -0
- package/.gitlab-ci-mac.yml +29 -0
- package/.gitlab-ci-windows.yml +29 -0
- package/.gitlab-ci.yml +63 -0
- package/build/3nstorage/resources/store.d.ts +2 -2
- package/build/3nstorage/resources/store.js +1 -1
- package/build/3nstorage/resources/users.d.ts +3 -3
- package/build/3nstorage/resources/users.js +1 -1
- package/build/3nstorage/resources/utils.d.ts +6 -0
- package/build/3nstorage/resources/utils.js +41 -0
- package/build/3nstorage/routes/owner/archive-obj-version.js +8 -10
- package/build/3nstorage/routes/owner/cancel-trans.js +5 -4
- package/build/3nstorage/routes/owner/delete-obj.js +7 -8
- package/build/3nstorage/routes/owner/get-archived-obj-ver.js +11 -13
- package/build/3nstorage/routes/owner/get-current-obj.js +7 -6
- package/build/3nstorage/routes/owner/get-obj-status.js +8 -8
- package/build/3nstorage/routes/owner/put-current-obj.js +25 -55
- package/build/3nstorage/routes/owner/session-params.js +2 -0
- package/build/asmail/resources/utils.d.ts +6 -0
- package/build/asmail/resources/utils.js +36 -0
- package/build/asmail/routes/delivery/finalize-delivery.js +3 -2
- package/build/asmail/routes/delivery/pre-flight.js +9 -26
- package/build/asmail/routes/delivery/provide-recipient-pubkey.js +4 -3
- package/build/asmail/routes/delivery/put-metadata.js +13 -21
- package/build/asmail/routes/delivery/put-obj.js +19 -25
- package/build/asmail/routes/delivery/restart-session.d.ts +4 -8
- package/build/asmail/routes/delivery/restart-session.js +10 -23
- package/build/asmail/routes/delivery/sender-authorization.js +5 -5
- package/build/asmail/routes/delivery/start-session.js +9 -24
- package/build/asmail/routes/retrieval/get-message-meta.js +4 -7
- package/build/asmail/routes/retrieval/get-message-obj.js +10 -7
- package/build/asmail/routes/retrieval/list-messages.js +4 -4
- package/build/asmail/routes/retrieval/remove-message.js +3 -2
- package/build/mock/tls-options.js +46 -44
- package/build/tests/admin-proto/signup.d.ts +1 -0
- package/build/tests/admin-proto/signup.js +235 -0
- package/build/tests/jasmine.d.ts +1 -0
- package/build/tests/jasmine.js +32 -0
- package/build/tests/libs-for-tests/3nstorage.d.ts +22 -0
- package/build/tests/libs-for-tests/3nstorage.js +123 -0
- package/build/tests/libs-for-tests/asmail.d.ts +22 -0
- package/build/tests/libs-for-tests/asmail.js +179 -0
- package/build/tests/libs-for-tests/assert.d.ts +1 -0
- package/build/tests/libs-for-tests/assert.js +26 -0
- package/build/tests/libs-for-tests/async-jasmine.d.ts +7 -0
- package/build/tests/libs-for-tests/async-jasmine.js +77 -0
- package/build/tests/libs-for-tests/bytes-equal.d.ts +1 -0
- package/build/tests/libs-for-tests/bytes-equal.js +34 -0
- package/build/tests/libs-for-tests/json-copy.d.ts +1 -0
- package/build/tests/libs-for-tests/json-copy.js +45 -0
- package/build/tests/libs-for-tests/json-equal.d.ts +4 -0
- package/build/tests/libs-for-tests/json-equal.js +67 -0
- package/build/tests/libs-for-tests/mailerid.d.ts +13 -0
- package/build/tests/libs-for-tests/mailerid.js +114 -0
- package/build/tests/libs-for-tests/pkl.d.ts +28 -0
- package/build/tests/libs-for-tests/pkl.js +89 -0
- package/build/tests/libs-for-tests/server-components/3nstorage.d.ts +20 -0
- package/build/tests/libs-for-tests/server-components/3nstorage.js +200 -0
- package/build/tests/libs-for-tests/server-components/admin.d.ts +6 -0
- package/build/tests/libs-for-tests/server-components/admin.js +43 -0
- package/build/tests/libs-for-tests/server-components/asmail.d.ts +16 -0
- package/build/tests/libs-for-tests/server-components/asmail.js +143 -0
- package/build/tests/libs-for-tests/server-components/component.d.ts +13 -0
- package/build/tests/libs-for-tests/server-components/component.js +77 -0
- package/build/tests/libs-for-tests/server-components/mailerid.d.ts +10 -0
- package/build/tests/libs-for-tests/server-components/mailerid.js +103 -0
- package/build/tests/libs-for-tests/server-runner.d.ts +15 -0
- package/build/tests/libs-for-tests/server-runner.js +69 -0
- package/build/tests/libs-for-tests/spec-assembly.d.ts +6 -0
- package/build/tests/libs-for-tests/spec-assembly.js +55 -0
- package/build/tests/libs-for-tests/ws-utils.d.ts +3 -0
- package/build/tests/libs-for-tests/ws-utils.js +59 -0
- package/build/tests/libs-for-tests/xhr-utils.d.ts +61 -0
- package/build/tests/libs-for-tests/xhr-utils.js +154 -0
- package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/archive-obj-ver.js +84 -0
- package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/archive-root-ver.js +78 -0
- package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.js +83 -0
- package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.js +77 -0
- package/build/tests/protocols/3nstorage/owner/specs/delete-obj.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/delete-obj.js +75 -0
- package/build/tests/protocols/3nstorage/owner/specs/events.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/events.js +91 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-current-obj.js +269 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-current-root.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-current-root.js +262 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-obj-status.js +79 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-root-status.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/get-root-status.js +72 -0
- package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/put-current-obj.js +287 -0
- package/build/tests/protocols/3nstorage/owner/specs/put-current-root.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/put-current-root.js +274 -0
- package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/trans-cancel-root.js +73 -0
- package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.d.ts +2 -0
- package/build/tests/protocols/3nstorage/owner/specs/trans-cancel.js +72 -0
- package/build/tests/protocols/3nstorage/owner/test-utils.d.ts +14 -0
- package/build/tests/protocols/3nstorage/owner/test-utils.js +54 -0
- package/build/tests/protocols/3nstorage/owner.d.ts +1 -0
- package/build/tests/protocols/3nstorage/owner.js +138 -0
- package/build/tests/protocols/asmail/config.d.ts +1 -0
- package/build/tests/protocols/asmail/config.js +117 -0
- package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.d.ts +2 -0
- package/build/tests/protocols/asmail/delivery/specs/finalize-delivery.js +60 -0
- package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.d.ts +2 -0
- package/build/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.js +68 -0
- package/build/tests/protocols/asmail/delivery/specs/put-metadata.d.ts +2 -0
- package/build/tests/protocols/asmail/delivery/specs/put-metadata.js +83 -0
- package/build/tests/protocols/asmail/delivery/specs/put-obj.d.ts +2 -0
- package/build/tests/protocols/asmail/delivery/specs/put-obj.js +123 -0
- package/build/tests/protocols/asmail/delivery/specs/restart-session.d.ts +2 -0
- package/build/tests/protocols/asmail/delivery/specs/restart-session.js +79 -0
- package/build/tests/protocols/asmail/delivery/specs/start-session.d.ts +2 -0
- package/build/tests/protocols/asmail/delivery/specs/start-session.js +64 -0
- package/build/tests/protocols/asmail/delivery/test-utils.d.ts +16 -0
- package/build/tests/protocols/asmail/delivery/test-utils.js +46 -0
- package/build/tests/protocols/asmail/delivery.d.ts +1 -0
- package/build/tests/protocols/asmail/delivery.js +46 -0
- package/build/tests/protocols/asmail/retrieval/specs/events.d.ts +2 -0
- package/build/tests/protocols/asmail/retrieval/specs/events.js +62 -0
- package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.d.ts +2 -0
- package/build/tests/protocols/asmail/retrieval/specs/get-message-meta.js +70 -0
- package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.d.ts +2 -0
- package/build/tests/protocols/asmail/retrieval/specs/get-message-obj.js +166 -0
- package/build/tests/protocols/asmail/retrieval/specs/list-messages.d.ts +2 -0
- package/build/tests/protocols/asmail/retrieval/specs/list-messages.js +96 -0
- package/build/tests/protocols/asmail/retrieval/specs/remove-message.d.ts +2 -0
- package/build/tests/protocols/asmail/retrieval/specs/remove-message.js +66 -0
- package/build/tests/protocols/asmail/retrieval/test-utils.d.ts +17 -0
- package/build/tests/protocols/asmail/retrieval/test-utils.js +46 -0
- package/build/tests/protocols/asmail/retrieval.d.ts +1 -0
- package/build/tests/protocols/asmail/retrieval.js +92 -0
- package/build/tests/protocols/mailerid.d.ts +1 -0
- package/build/tests/protocols/mailerid.js +210 -0
- package/build/tests/shared-checks/check-mid-login.d.ts +2 -0
- package/build/tests/shared-checks/check-mid-login.js +131 -0
- package/build/tests/shared-checks/requests.d.ts +20 -0
- package/build/tests/shared-checks/requests.js +123 -0
- package/package.json +1 -1
- package/packing/create-deb.sh +57 -0
- package/packing/deb/lib/systemd/system/3nweb.service +11 -0
- package/packing/deb/postinst +44 -0
- package/packing/deb/usr/share/doc/3nweb-server/conf-for-postinstall.yaml +19 -0
- package/packing/deb/usr/share/doc/3nweb-server/copyright +22 -0
- package/publish-task.sh +10 -0
- package/push-to-github.sh +105 -0
- package/ts-code/3nstorage/3nstorage-app.ts +99 -0
- package/ts-code/3nstorage/owner.ts +178 -0
- package/ts-code/3nstorage/resources/sessions.ts +37 -0
- package/ts-code/3nstorage/resources/store.ts +896 -0
- package/ts-code/3nstorage/resources/users.ts +258 -0
- package/ts-code/3nstorage/resources/utils.ts +45 -0
- package/ts-code/3nstorage/routes/owner/archive-obj-version.ts +71 -0
- package/ts-code/3nstorage/routes/owner/cancel-trans.ts +60 -0
- package/ts-code/3nstorage/routes/owner/delete-obj.ts +99 -0
- package/ts-code/3nstorage/routes/owner/get-archived-obj-ver.ts +109 -0
- package/ts-code/3nstorage/routes/owner/get-current-obj.ts +124 -0
- package/ts-code/3nstorage/routes/owner/get-obj-status.ts +55 -0
- package/ts-code/3nstorage/routes/owner/param-getter.ts +51 -0
- package/ts-code/3nstorage/routes/owner/param-setter.ts +50 -0
- package/ts-code/3nstorage/routes/owner/put-current-obj.ts +257 -0
- package/ts-code/3nstorage/routes/owner/session-params.ts +50 -0
- package/ts-code/3nstorage/shared.ts +43 -0
- package/ts-code/asmail/asmail-app.ts +91 -0
- package/ts-code/asmail/config.ts +96 -0
- package/ts-code/asmail/delivery.ts +94 -0
- package/ts-code/asmail/resources/delivery-sessions.ts +118 -0
- package/ts-code/asmail/resources/inbox.ts +696 -0
- package/ts-code/asmail/resources/recipients.ts +495 -0
- package/ts-code/asmail/resources/sessions.ts +37 -0
- package/ts-code/asmail/resources/utils.ts +41 -0
- package/ts-code/asmail/retrieval.ts +96 -0
- package/ts-code/asmail/routes/config/param-getter.ts +49 -0
- package/ts-code/asmail/routes/config/param-setter.ts +49 -0
- package/ts-code/asmail/routes/delivery/finalize-delivery.ts +51 -0
- package/ts-code/asmail/routes/delivery/pre-flight.ts +118 -0
- package/ts-code/asmail/routes/delivery/provide-recipient-pubkey.ts +58 -0
- package/ts-code/asmail/routes/delivery/put-metadata.ts +85 -0
- package/ts-code/asmail/routes/delivery/put-obj.ts +152 -0
- package/ts-code/asmail/routes/delivery/restart-session.ts +117 -0
- package/ts-code/asmail/routes/delivery/sender-authorization.ts +81 -0
- package/ts-code/asmail/routes/delivery/start-session.ts +136 -0
- package/ts-code/asmail/routes/retrieval/get-message-meta.ts +50 -0
- package/ts-code/asmail/routes/retrieval/get-message-obj.ts +106 -0
- package/ts-code/asmail/routes/retrieval/list-messages.ts +68 -0
- package/ts-code/asmail/routes/retrieval/remove-message.ts +48 -0
- package/ts-code/cli/index.ts +82 -0
- package/ts-code/cli/run-cmd.ts +81 -0
- package/ts-code/cli/show-sample-config.ts +78 -0
- package/ts-code/cli/signup-cmd.ts +229 -0
- package/ts-code/cli/user-cmd.ts +68 -0
- package/ts-code/cli/utils.ts +105 -0
- package/ts-code/config/default-confs.ts +22 -0
- package/ts-code/config/from-yaml.ts +35 -0
- package/ts-code/config/letsencrypt.ts +77 -0
- package/ts-code/config/signup.ts +137 -0
- package/ts-code/lib-common/admin-api/signup.ts +120 -0
- package/ts-code/lib-common/assert.ts +22 -0
- package/ts-code/lib-common/async-fs-node.ts +656 -0
- package/ts-code/lib-common/buffer-utils.ts +124 -0
- package/ts-code/lib-common/byte-streaming/common.ts +166 -0
- package/ts-code/lib-common/bytes-equal.ts +25 -0
- package/ts-code/lib-common/canonical-address.ts +92 -0
- package/ts-code/lib-common/exceptions/error.ts +44 -0
- package/ts-code/lib-common/exceptions/file.ts +84 -0
- package/ts-code/lib-common/exceptions/http.ts +69 -0
- package/ts-code/lib-common/ipc/generic-ipc.ts +750 -0
- package/ts-code/lib-common/ipc/ws-ipc.ts +117 -0
- package/ts-code/lib-common/json-equal.ts +55 -0
- package/ts-code/lib-common/json-utils.ts +130 -0
- package/ts-code/lib-common/jwkeys.ts +246 -0
- package/ts-code/lib-common/map-of-sets.ts +60 -0
- package/ts-code/lib-common/mid-sigs-NaCl-Ed.ts +677 -0
- package/ts-code/lib-common/objs-on-disk/file-layout.ts +480 -0
- package/ts-code/lib-common/objs-on-disk/obj-file.ts +325 -0
- package/ts-code/lib-common/objs-on-disk/utils.ts +201 -0
- package/ts-code/lib-common/objs-on-disk/v1-obj-file-format.ts +329 -0
- package/ts-code/lib-common/processes.ts +501 -0
- package/ts-code/lib-common/random-node.ts +79 -0
- package/ts-code/lib-common/service-api/3nstorage/owner.ts +559 -0
- package/ts-code/lib-common/service-api/3nstorage/root-route.ts +22 -0
- package/ts-code/lib-common/service-api/asmail/config.ts +144 -0
- package/ts-code/lib-common/service-api/asmail/delivery.ts +250 -0
- package/ts-code/lib-common/service-api/asmail/retrieval.ts +238 -0
- package/ts-code/lib-common/service-api/asmail/root-route.ts +22 -0
- package/ts-code/lib-common/service-api/ipc-api.ts +44 -0
- package/ts-code/lib-common/service-api/locker.ts +44 -0
- package/ts-code/lib-common/service-api/mailer-id/login.ts +80 -0
- package/ts-code/lib-common/service-api/mailer-id/provisioning.ts +64 -0
- package/ts-code/lib-common/service-api/mailer-id/root-route.ts +25 -0
- package/ts-code/lib-common/service-api/pub-key-login.ts +75 -0
- package/ts-code/lib-common/service-api/web-socket-base.ts +87 -0
- package/ts-code/lib-common/session-encryptor.ts +54 -0
- package/ts-code/lib-common/time-window-cache.ts +74 -0
- package/ts-code/lib-common/transferable.d.ts +30 -0
- package/ts-code/lib-server/conf-util.ts +35 -0
- package/ts-code/lib-server/mid-access.ts +45 -0
- package/ts-code/lib-server/middleware/body-parsers.ts +248 -0
- package/ts-code/lib-server/middleware/error-handler.ts +79 -0
- package/ts-code/lib-server/pkl-access.ts +46 -0
- package/ts-code/lib-server/resources/dns.ts +151 -0
- package/ts-code/lib-server/resources/mailerid-authorizer.ts +115 -0
- package/ts-code/lib-server/resources/mem-backed-sessions-factory.ts +132 -0
- package/ts-code/lib-server/resources/server-data-folders.ts +160 -0
- package/ts-code/lib-server/resources/server-key-for-pkl-challenge.ts +41 -0
- package/ts-code/lib-server/resources/sessions.ts +232 -0
- package/ts-code/lib-server/resources/user-files.ts +147 -0
- package/ts-code/lib-server/routes/pub-key-login/complete-exchange.ts +63 -0
- package/ts-code/lib-server/routes/pub-key-login/start-exchange.ts +189 -0
- package/ts-code/lib-server/routes/sessions/close.ts +27 -0
- package/ts-code/lib-server/routes/sessions/mid-auth.ts +77 -0
- package/ts-code/lib-server/routes/sessions/start.ts +116 -0
- package/ts-code/lib-server/web-sockets/app.ts +339 -0
- package/ts-code/lib-server/web-sockets/server-events.ts +63 -0
- package/ts-code/lib.ts +29 -0
- package/ts-code/locker/locker-app.ts +60 -0
- package/ts-code/locker/resources/lockers.ts +17 -0
- package/ts-code/locker/resources/sessions.ts +37 -0
- package/ts-code/locker/routes/create-locker.ts +47 -0
- package/ts-code/mailerId/mailerId-app.ts +107 -0
- package/ts-code/mailerId/resources/certifier.ts +181 -0
- package/ts-code/mailerId/resources/sessions.ts +44 -0
- package/ts-code/mailerId/resources/users.ts +88 -0
- package/ts-code/mailerId/routes/certify.ts +68 -0
- package/ts-code/main.ts +304 -0
- package/ts-code/mock/dns.ts +106 -0
- package/ts-code/mock/mock-as-child-proc.ts +130 -0
- package/ts-code/mock/node-child-ipc.ts +69 -0
- package/ts-code/mock/run-in-proc.ts +111 -0
- package/ts-code/mock/tls-options.ts +73 -0
- package/ts-code/services.ts +138 -0
- package/ts-code/signup/resources/users.ts +429 -0
- package/ts-code/signup/routes/add.ts +65 -0
- package/ts-code/signup/routes/get-available-addresses.ts +49 -0
- package/ts-code/signup/routes/get-available-domains.ts +45 -0
- package/ts-code/signup/signup-app.ts +54 -0
- package/ts-code/signup/signup-tokens.ts +148 -0
- package/ts-code/tests/admin-proto/signup.ts +277 -0
- package/ts-code/tests/jasmine.ts +37 -0
- package/ts-code/tests/libs-for-tests/3nstorage.ts +144 -0
- package/ts-code/tests/libs-for-tests/asmail.ts +220 -0
- package/ts-code/tests/libs-for-tests/assert.ts +22 -0
- package/ts-code/tests/libs-for-tests/async-jasmine.ts +89 -0
- package/ts-code/tests/libs-for-tests/bytes-equal.ts +25 -0
- package/ts-code/tests/libs-for-tests/json-copy.ts +38 -0
- package/ts-code/tests/libs-for-tests/json-equal.ts +55 -0
- package/ts-code/tests/libs-for-tests/mailerid.ts +123 -0
- package/ts-code/tests/libs-for-tests/pkl.ts +127 -0
- package/ts-code/tests/libs-for-tests/server-components/3nstorage.ts +206 -0
- package/ts-code/tests/libs-for-tests/server-components/admin.ts +49 -0
- package/ts-code/tests/libs-for-tests/server-components/asmail.ts +152 -0
- package/ts-code/tests/libs-for-tests/server-components/component.ts +90 -0
- package/ts-code/tests/libs-for-tests/server-components/mailerid.ts +114 -0
- package/ts-code/tests/libs-for-tests/server-runner.ts +82 -0
- package/ts-code/tests/libs-for-tests/spec-assembly.ts +60 -0
- package/ts-code/tests/libs-for-tests/ws-utils.ts +61 -0
- package/ts-code/tests/libs-for-tests/xhr-utils.ts +179 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/archive-obj-ver.ts +100 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/archive-root-ver.ts +91 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-obj-ver.ts +99 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/delete-archive-root-ver.ts +90 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/delete-obj.ts +84 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/events.ts +125 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-obj.ts +298 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/get-current-root.ts +290 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/get-obj-status.ts +88 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/get-root-status.ts +80 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-obj.ts +366 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/put-current-root.ts +329 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel-root.ts +86 -0
- package/ts-code/tests/protocols/3nstorage/owner/specs/trans-cancel.ts +86 -0
- package/ts-code/tests/protocols/3nstorage/owner/test-utils.ts +72 -0
- package/ts-code/tests/protocols/3nstorage/owner.ts +198 -0
- package/ts-code/tests/protocols/asmail/config.ts +172 -0
- package/ts-code/tests/protocols/asmail/delivery/specs/finalize-delivery.ts +69 -0
- package/ts-code/tests/protocols/asmail/delivery/specs/provide-recipient-pubkey.ts +88 -0
- package/ts-code/tests/protocols/asmail/delivery/specs/put-metadata.ts +102 -0
- package/ts-code/tests/protocols/asmail/delivery/specs/put-obj.ts +156 -0
- package/ts-code/tests/protocols/asmail/delivery/specs/restart-session.ts +97 -0
- package/ts-code/tests/protocols/asmail/delivery/specs/start-session.ts +79 -0
- package/ts-code/tests/protocols/asmail/delivery/test-utils.ts +64 -0
- package/ts-code/tests/protocols/asmail/delivery.ts +56 -0
- package/ts-code/tests/protocols/asmail/retrieval/specs/events.ts +78 -0
- package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-meta.ts +80 -0
- package/ts-code/tests/protocols/asmail/retrieval/specs/get-message-obj.ts +197 -0
- package/ts-code/tests/protocols/asmail/retrieval/specs/list-messages.ts +110 -0
- package/ts-code/tests/protocols/asmail/retrieval/specs/remove-message.ts +74 -0
- package/ts-code/tests/protocols/asmail/retrieval/test-utils.ts +60 -0
- package/ts-code/tests/protocols/asmail/retrieval.ts +115 -0
- package/ts-code/tests/protocols/mailerid.ts +271 -0
- package/ts-code/tests/shared-checks/check-mid-login.ts +164 -0
- package/ts-code/tests/shared-checks/requests.ts +135 -0
- package/ts-code/tsconfig.json +11 -0
- package/ts-code/web3n.d.ts +1068 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
PROJ_NAME="spec-server"
|
|
4
|
+
ITEMS_TO_PUSH="ts-code packing .gitignore LICENSE package.json package-lock.json postinstall.js README.md tsconfig.json"
|
|
5
|
+
|
|
6
|
+
GITHUB_REPO="https://github.com/3nsoft/${PROJ_NAME}.git"
|
|
7
|
+
DIST_DIR="dist"
|
|
8
|
+
|
|
9
|
+
branch=$1
|
|
10
|
+
if [ -z "$branch" ]
|
|
11
|
+
then
|
|
12
|
+
branch="master"
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
function is_clean_from_wip {
|
|
16
|
+
local status="$(git status -s)"
|
|
17
|
+
if [ -n "$status" ]
|
|
18
|
+
then
|
|
19
|
+
echo "There are uncommited changes:"
|
|
20
|
+
echo "$status"
|
|
21
|
+
return 1;
|
|
22
|
+
else
|
|
23
|
+
return 0;
|
|
24
|
+
fi
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function is_branch {
|
|
28
|
+
local check_out=$(git $branch | grep '*' | grep "$branch")
|
|
29
|
+
if [ -n "$check_out" ]
|
|
30
|
+
then
|
|
31
|
+
return 0;
|
|
32
|
+
else
|
|
33
|
+
return 1;
|
|
34
|
+
fi
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function rm_all_in_git_dir {
|
|
38
|
+
for entity in $(ls -a)
|
|
39
|
+
do
|
|
40
|
+
case $entity in
|
|
41
|
+
.) ;;
|
|
42
|
+
..) ;;
|
|
43
|
+
.git) continue ;;
|
|
44
|
+
*) rm -rf $entity ;;
|
|
45
|
+
esac
|
|
46
|
+
done
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function cp_items_push {
|
|
50
|
+
local src=$1
|
|
51
|
+
for entity in $ITEMS_TO_PUSH
|
|
52
|
+
do
|
|
53
|
+
cp -r $src/$entity ./
|
|
54
|
+
done
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function update_content_from {
|
|
58
|
+
local src=$1
|
|
59
|
+
rm_all_in_git_dir || return 1
|
|
60
|
+
cp_items_push $src || return 1
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function pull_from_github_and_enter_repo {
|
|
64
|
+
if [ -d $PROJ_NAME ]
|
|
65
|
+
then
|
|
66
|
+
cd $PROJ_NAME
|
|
67
|
+
echo "Pulling current state from GitHub:"
|
|
68
|
+
git pull
|
|
69
|
+
if [ ! is_branch ]
|
|
70
|
+
then
|
|
71
|
+
git checkout $branch
|
|
72
|
+
fi
|
|
73
|
+
else
|
|
74
|
+
echo "Cloning repository from GitHub:"
|
|
75
|
+
git clone $GITHUB_REPO
|
|
76
|
+
cd $PROJ_NAME
|
|
77
|
+
fi
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
is_clean_from_wip || exit 1
|
|
81
|
+
|
|
82
|
+
if [ ! is_branch ]
|
|
83
|
+
then
|
|
84
|
+
echo "Current git branch is not $branch"
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
init_dir="$(pwd)"
|
|
89
|
+
if [ ! -d $DIST_DIR ]
|
|
90
|
+
then
|
|
91
|
+
mkdir $DIST_DIR
|
|
92
|
+
fi
|
|
93
|
+
cd $DIST_DIR
|
|
94
|
+
|
|
95
|
+
echo
|
|
96
|
+
pull_from_github_and_enter_repo
|
|
97
|
+
|
|
98
|
+
update_content_from $init_dir
|
|
99
|
+
|
|
100
|
+
git add .
|
|
101
|
+
git commit
|
|
102
|
+
git push
|
|
103
|
+
|
|
104
|
+
cd $init_dir
|
|
105
|
+
rm -rf $DIST_DIR/$PROJ_NAME
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (C) 2015 - 2016, 2020, 2025 3NSoft Inc.
|
|
3
|
+
|
|
4
|
+
This program is free software: you can redistribute it and/or modify it under
|
|
5
|
+
the terms of the GNU General Public License as published by the Free Software
|
|
6
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
|
7
|
+
version.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful, but
|
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
12
|
+
See the GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License along with
|
|
15
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { Express } from 'express';
|
|
19
|
+
import { makeFactory as makeUsersFactory, Factory as UsersFactory } from './resources/users';
|
|
20
|
+
import { makeSessionFactory, SessionsFactory } from './resources/sessions';
|
|
21
|
+
import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
|
|
22
|
+
import { ErrLogger, makeErrHandler } from '../lib-server/middleware/error-handler';
|
|
23
|
+
import { AppWithWSs } from '../lib-server/web-sockets/app';
|
|
24
|
+
import { makeOwnerStorageApp, makeOwnerStorageForLocker } from './owner';
|
|
25
|
+
import { makeSharedStorageApp } from './shared';
|
|
26
|
+
import { StorageRootRoute } from '../lib-common/service-api/3nstorage/root-route';
|
|
27
|
+
|
|
28
|
+
const PATHS = {
|
|
29
|
+
owner: '/owner/',
|
|
30
|
+
shared: '/shared/'
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
function setupStaticStorageEntryRoute(app: Express): void {
|
|
34
|
+
|
|
35
|
+
app.route('/')
|
|
36
|
+
.get((req, res) => {
|
|
37
|
+
let path = req.originalUrl;
|
|
38
|
+
if (path[path.length-1] !== '/') {
|
|
39
|
+
path = path+'/';
|
|
40
|
+
}
|
|
41
|
+
const json: StorageRootRoute = {
|
|
42
|
+
owner: path+PATHS.owner.substring(1),
|
|
43
|
+
shared: path+PATHS.shared.substring(1)
|
|
44
|
+
};
|
|
45
|
+
// the following implicitly sets content type application/json
|
|
46
|
+
res.status(200).json(json);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function makeStorageApp(
|
|
52
|
+
dataFolder: string, domain: string, midAuthorizer: MidAuthorizer,
|
|
53
|
+
errLogger?: ErrLogger
|
|
54
|
+
): AppWithWSs {
|
|
55
|
+
|
|
56
|
+
const app = new AppWithWSs();
|
|
57
|
+
const ownersSessions = makeSessionFactory(20*60);
|
|
58
|
+
const sharingSessions = makeSessionFactory(20*60);
|
|
59
|
+
const users = makeUsersFactory(dataFolder);
|
|
60
|
+
|
|
61
|
+
setupStaticStorageEntryRoute(app.http);
|
|
62
|
+
|
|
63
|
+
app.use(PATHS.owner,
|
|
64
|
+
makeOwnerStorageApp(domain, ownersSessions, users, midAuthorizer)
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
app.http.use(PATHS.shared,
|
|
68
|
+
makeSharedStorageApp(sharingSessions, users)
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
app.http.use(makeErrHandler(errLogger));
|
|
72
|
+
|
|
73
|
+
return app;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function makeStorageAppForLocker(
|
|
77
|
+
users: UsersFactory,
|
|
78
|
+
ownersSessions: SessionsFactory, sharingSessions: SessionsFactory,
|
|
79
|
+
errLogger?: ErrLogger
|
|
80
|
+
): AppWithWSs {
|
|
81
|
+
|
|
82
|
+
const app = new AppWithWSs();
|
|
83
|
+
|
|
84
|
+
setupStaticStorageEntryRoute(app.http);
|
|
85
|
+
|
|
86
|
+
app.use(PATHS.owner,
|
|
87
|
+
makeOwnerStorageForLocker(ownersSessions, users)
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
app.http.use(PATHS.shared,
|
|
91
|
+
makeSharedStorageApp(sharingSessions, users)
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
app.http.use(makeErrHandler(errLogger));
|
|
95
|
+
|
|
96
|
+
return app;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Object.freeze(exports);
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (C) 2015 - 2017, 2022, 2024 - 2025 3NSoft Inc.
|
|
3
|
+
|
|
4
|
+
This program is free software: you can redistribute it and/or modify it under
|
|
5
|
+
the terms of the GNU General Public License as published by the Free Software
|
|
6
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
|
7
|
+
version.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful, but
|
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
12
|
+
See the GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License along with
|
|
15
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* This module gives a function that creates a mountable, or app.use()-able,
|
|
20
|
+
* express 3NStorage owners' application.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { Express } from 'express';
|
|
24
|
+
import { json as parseJSON, emptyBody } from '../lib-server/middleware/body-parsers';
|
|
25
|
+
import { UserSockets, AppWithWSs } from '../lib-server/web-sockets/app';
|
|
26
|
+
import { ServerEvents } from '../lib-server/web-sockets/server-events';
|
|
27
|
+
import { SessionsFactory } from './resources/sessions';
|
|
28
|
+
import { Factory as UsersFactory } from './resources/users';
|
|
29
|
+
import { MidAuthorizer } from '../lib-server/routes/sessions/mid-auth';
|
|
30
|
+
import { closeSession } from '../lib-server/routes/sessions/close';
|
|
31
|
+
import { sessionParams } from './routes/owner/session-params';
|
|
32
|
+
import { getParam } from './routes/owner/param-getter';
|
|
33
|
+
import { setParam } from './routes/owner/param-setter';
|
|
34
|
+
import { cancelTransaction } from './routes/owner/cancel-trans';
|
|
35
|
+
import { saveCurrentObj } from './routes/owner/put-current-obj';
|
|
36
|
+
import { getCurrentObj } from './routes/owner/get-current-obj';
|
|
37
|
+
import { getArchivedObjVersion } from './routes/owner/get-archived-obj-ver';
|
|
38
|
+
import { deleteArchivedObjVer, deleteCurrentObjVer } from './routes/owner/delete-obj';
|
|
39
|
+
import { archiveCurrentObjVersion } from './routes/owner/archive-obj-version';
|
|
40
|
+
import { getObjStatus } from './routes/owner/get-obj-status';
|
|
41
|
+
import * as api from '../lib-common/service-api/3nstorage/owner';
|
|
42
|
+
import { addMailerIdLoginRoutes } from '../lib-server/mid-access';
|
|
43
|
+
import { addPKLLoginRoutes } from '../lib-server/pkl-access';
|
|
44
|
+
import { calcNaClBoxSharedKey } from '../lib-server/resources/server-key-for-pkl-challenge';
|
|
45
|
+
|
|
46
|
+
const WS_PING_PERIOD_MILLIS = 2*60*1000;
|
|
47
|
+
|
|
48
|
+
export function makeOwnerStorageApp(
|
|
49
|
+
domain: string, sessions: SessionsFactory, users: UsersFactory, midAuthorizer: MidAuthorizer
|
|
50
|
+
): AppWithWSs {
|
|
51
|
+
|
|
52
|
+
const app = new AppWithWSs();
|
|
53
|
+
|
|
54
|
+
setHttpPart(app.http, domain, sessions, users, midAuthorizer);
|
|
55
|
+
setWSPart(app, sessions, users);
|
|
56
|
+
|
|
57
|
+
return app;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function makeOwnerStorageForLocker(sessions: SessionsFactory, users: UsersFactory): AppWithWSs {
|
|
61
|
+
|
|
62
|
+
const app = new AppWithWSs();
|
|
63
|
+
|
|
64
|
+
// XXX WIP
|
|
65
|
+
|
|
66
|
+
// const setupLoginRoutes: SetupLoginRoutes = (
|
|
67
|
+
// app, urlPrefix
|
|
68
|
+
// ) => addPKLLoginRoutes(
|
|
69
|
+
// app, urlPrefix, getUserParamsAndKey, sessions, calcNaClBoxSharedKey
|
|
70
|
+
// );
|
|
71
|
+
|
|
72
|
+
// setHttpPart(app.http, setupLoginRoutes, sessions, users);
|
|
73
|
+
setWSPart(app, sessions, users);
|
|
74
|
+
|
|
75
|
+
return app;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function setWSPart(app: AppWithWSs, sessions: SessionsFactory, users: UsersFactory): void {
|
|
79
|
+
const sockets = new UserSockets(sessions.ensureAuthorizedSessionForSocketStart(), WS_PING_PERIOD_MILLIS);
|
|
80
|
+
|
|
81
|
+
const storageEvents = new ServerEvents(
|
|
82
|
+
undefined, api.events.all, sockets.socketGetter
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
// give events ipc to both ends
|
|
86
|
+
sockets.addSocketIPC(storageEvents);
|
|
87
|
+
users.setStorageEventsSink(storageEvents.eventsSink);
|
|
88
|
+
|
|
89
|
+
app.addWS(api.wsEventChannel.URL_END, sockets);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const MAX_CHUNK_SIZE = '0.5mb';
|
|
93
|
+
|
|
94
|
+
function setHttpPart(
|
|
95
|
+
app: Express, domain: string, sessions: SessionsFactory, users: UsersFactory, midAuthorizer: MidAuthorizer
|
|
96
|
+
): void {
|
|
97
|
+
|
|
98
|
+
app.disable('etag');
|
|
99
|
+
|
|
100
|
+
// Login
|
|
101
|
+
addMailerIdLoginRoutes(app, domain, '/'+api.midLogin.URL_PART, sessions, users.exists, midAuthorizer);
|
|
102
|
+
|
|
103
|
+
// *** Require authorized session for everything below ***
|
|
104
|
+
app.use(sessions.ensureAuthorizedSession());
|
|
105
|
+
|
|
106
|
+
app.post('/'+api.closeSession.URL_END,
|
|
107
|
+
emptyBody(),
|
|
108
|
+
closeSession()
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
// Session params
|
|
112
|
+
app.get('/'+api.sessionParams.URL_END,
|
|
113
|
+
sessionParams(MAX_CHUNK_SIZE)
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// Key derivation params
|
|
117
|
+
app.route('/'+api.keyDerivParams.URL_END)
|
|
118
|
+
.get(getParam(users.getKeyDerivParams))
|
|
119
|
+
.put(parseJSON('1kb'),
|
|
120
|
+
setParam(users.setKeyDerivParams)
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
// Transaction canceling
|
|
124
|
+
app.post('/'+api.cancelTransaction.EXPRESS_URL_END,
|
|
125
|
+
emptyBody(),
|
|
126
|
+
cancelTransaction(false, users.cancelTransaction)
|
|
127
|
+
);
|
|
128
|
+
app.post('/'+api.cancelRootTransaction.EXPRESS_URL_END,
|
|
129
|
+
emptyBody(),
|
|
130
|
+
cancelTransaction(true, users.cancelTransaction)
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
// Getting and updating current root object
|
|
134
|
+
app.route('/'+api.currentRootObj.EXPRESS_URL_END)
|
|
135
|
+
.get(getCurrentObj(true, users.getCurrentRootObj))
|
|
136
|
+
.put(saveCurrentObj(true, users.saveNewRootVersion, MAX_CHUNK_SIZE));
|
|
137
|
+
|
|
138
|
+
// Getting, updating and removing current non-root objects
|
|
139
|
+
app.route('/'+api.currentObj.EXPRESS_URL_END)
|
|
140
|
+
.get(getCurrentObj(false, users.getCurrentObj))
|
|
141
|
+
.delete(deleteCurrentObjVer(users.deleteCurrentObjVersion))
|
|
142
|
+
.put(saveCurrentObj(false, users.saveNewObjVersion, MAX_CHUNK_SIZE));
|
|
143
|
+
|
|
144
|
+
// Getting root archived versions
|
|
145
|
+
app.route('/'+api.archivedRootVersion.EXPRESS_URL_END)
|
|
146
|
+
.get(getArchivedObjVersion(true, users.getArchivedRootVersion));
|
|
147
|
+
|
|
148
|
+
// Getting non-root object archived versions
|
|
149
|
+
app.route('/'+api.archivedObjVersion.EXPRESS_URL_END)
|
|
150
|
+
.get(getArchivedObjVersion(false, users.getArchivedObjVersion));
|
|
151
|
+
|
|
152
|
+
// Archive root's current version
|
|
153
|
+
app.route('/'+api.archiveRoot.EXPRESS_URL_END)
|
|
154
|
+
.post(emptyBody(),
|
|
155
|
+
archiveCurrentObjVersion(true, users.archiveObjVersion)
|
|
156
|
+
)
|
|
157
|
+
.delete(deleteArchivedObjVer(true, users.deleteArchivedObjVersion));
|
|
158
|
+
|
|
159
|
+
// Archive non-root object's current version
|
|
160
|
+
app.route('/'+api.archiveObj.EXPRESS_URL_END)
|
|
161
|
+
.post(emptyBody(),
|
|
162
|
+
archiveCurrentObjVersion(false, users.archiveObjVersion)
|
|
163
|
+
)
|
|
164
|
+
.delete(deleteArchivedObjVer(false, users.deleteArchivedObjVersion));
|
|
165
|
+
|
|
166
|
+
// Getting root object status
|
|
167
|
+
app.get('/'+api.rootStatus.EXPRESS_URL_END,
|
|
168
|
+
getObjStatus(true, users.getObjStatus)
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
// Getting object status
|
|
172
|
+
app.get('/'+api.objStatus.EXPRESS_URL_END,
|
|
173
|
+
getObjStatus(false, users.getObjStatus)
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
Object.freeze(exports);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (C) 2017 3NSoft Inc.
|
|
3
|
+
|
|
4
|
+
This program is free software: you can redistribute it and/or modify it under
|
|
5
|
+
the terms of the GNU General Public License as published by the Free Software
|
|
6
|
+
Foundation, either version 3 of the License, or (at your option) any later
|
|
7
|
+
version.
|
|
8
|
+
|
|
9
|
+
This program is distributed in the hope that it will be useful, but
|
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
12
|
+
See the GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License along with
|
|
15
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { InMemorySessions } from '../../lib-server/resources/mem-backed-sessions-factory';
|
|
19
|
+
import { Request as Req, SessionParams, Factory } from '../../lib-server/resources/sessions';
|
|
20
|
+
|
|
21
|
+
export type SessionsFactory = Factory<SessionParams>;
|
|
22
|
+
export type Request = Req<SessionParams>;
|
|
23
|
+
|
|
24
|
+
function makeSessionParams(): SessionParams {
|
|
25
|
+
return { userId: (undefined as any) };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* This returns factory, that works properly in a single process application,
|
|
30
|
+
* clearing up sessions that past given timeout.
|
|
31
|
+
* @param timeout is a session timeout in seconds
|
|
32
|
+
*/
|
|
33
|
+
export function makeSessionFactory(timeout: number): SessionsFactory {
|
|
34
|
+
return InMemorySessions.factory<SessionParams>(timeout, makeSessionParams);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
Object.freeze(exports);
|