@fonoster/apiserver 0.9.7 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/httpBridge.d.ts +2 -1
- package/dist/core/httpBridge.js +3 -4
- package/dist/core/identityConfig.d.ts +5 -0
- package/dist/core/identityConfig.js +5 -0
- package/dist/core/runServices.js +2 -1
- package/dist/envs.d.ts +4 -1
- package/dist/envs.js +8 -4
- package/dist/index.js +2 -1
- package/package.json +5 -5
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Readable } from "stream";
|
|
2
|
-
|
|
2
|
+
import { IdentityConfig } from "@fonoster/identity";
|
|
3
|
+
declare function httpBridge(identityConfig: IdentityConfig, params: {
|
|
3
4
|
port: number;
|
|
4
5
|
}): {
|
|
5
6
|
addStream: (id: string, stream: Readable) => void;
|
package/dist/core/httpBridge.js
CHANGED
|
@@ -16,11 +16,10 @@ exports.httpBridge = httpBridge;
|
|
|
16
16
|
const identity_1 = require("@fonoster/identity");
|
|
17
17
|
const logger_1 = require("@fonoster/logger");
|
|
18
18
|
const express_1 = __importDefault(require("express"));
|
|
19
|
-
const identityConfig_1 = require("./identityConfig");
|
|
20
19
|
const envs_1 = require("../envs");
|
|
21
20
|
const logger = (0, logger_1.getLogger)({ service: "apiserver", filePath: __filename });
|
|
22
21
|
const CONTENT_TYPE = "audio/L16;rate=16000;channels=1";
|
|
23
|
-
function httpBridge(params) {
|
|
22
|
+
function httpBridge(identityConfig, params) {
|
|
24
23
|
const { port } = params;
|
|
25
24
|
const app = (0, express_1.default)();
|
|
26
25
|
const streamMap = new Map();
|
|
@@ -46,12 +45,12 @@ function httpBridge(params) {
|
|
|
46
45
|
});
|
|
47
46
|
app.get("/api/identity/accept-invite", (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
48
47
|
try {
|
|
49
|
-
yield (0, identity_1.createUpdateMembershipStatus)(
|
|
48
|
+
yield (0, identity_1.createUpdateMembershipStatus)(identityConfig)(req.query.token);
|
|
50
49
|
res.redirect(envs_1.APP_URL);
|
|
51
50
|
}
|
|
52
51
|
catch (error) {
|
|
53
52
|
logger.verbose("error updating membership status", error);
|
|
54
|
-
res.redirect(
|
|
53
|
+
res.redirect(identityConfig.workspaceInviteFailUrl);
|
|
55
54
|
}
|
|
56
55
|
}));
|
|
57
56
|
app.listen(port, () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
declare const identityConfig: {
|
|
2
|
+
dbUrl: string;
|
|
2
3
|
issuer: string;
|
|
3
4
|
audience: string;
|
|
4
5
|
privateKey: string;
|
|
@@ -7,6 +8,10 @@ declare const identityConfig: {
|
|
|
7
8
|
accessTokenExpiresIn: string;
|
|
8
9
|
refreshTokenExpiresIn: string;
|
|
9
10
|
idTokenExpiresIn: string;
|
|
11
|
+
workspaceInviteExpiration: string;
|
|
12
|
+
workspaceInviteUrl: string;
|
|
13
|
+
workspaceInviteFailUrl: string;
|
|
14
|
+
userVerificationRequired: boolean;
|
|
10
15
|
smtpConfig: {
|
|
11
16
|
host: string;
|
|
12
17
|
port: number;
|
|
@@ -21,6 +21,7 @@ exports.identityConfig = void 0;
|
|
|
21
21
|
*/
|
|
22
22
|
const envs_1 = require("../envs");
|
|
23
23
|
const identityConfig = {
|
|
24
|
+
dbUrl: envs_1.IDENTITY_DATABASE_URL,
|
|
24
25
|
issuer: envs_1.IDENTITY_ISSUER,
|
|
25
26
|
audience: envs_1.IDENTITY_AUDIENCE,
|
|
26
27
|
privateKey: envs_1.IDENTITY_PRIVATE_KEY,
|
|
@@ -29,6 +30,10 @@ const identityConfig = {
|
|
|
29
30
|
accessTokenExpiresIn: envs_1.IDENTITY_ACCESS_TOKEN_EXPIRES_IN,
|
|
30
31
|
refreshTokenExpiresIn: envs_1.IDENTITY_REFRESH_TOKEN_EXPIRES_IN,
|
|
31
32
|
idTokenExpiresIn: envs_1.IDENTITY_ID_TOKEN_EXPIRES_IN,
|
|
33
|
+
workspaceInviteExpiration: envs_1.IDENTITY_WORKSPACE_INVITE_EXPIRATION,
|
|
34
|
+
workspaceInviteUrl: envs_1.IDENTITY_WORKSPACE_INVITE_URL,
|
|
35
|
+
workspaceInviteFailUrl: envs_1.IDENTITY_WORKSPACE_INVITE_FAIL_URL,
|
|
36
|
+
userVerificationRequired: envs_1.IDENTITY_USER_VERIFICATION_REQUIRED,
|
|
32
37
|
smtpConfig: {
|
|
33
38
|
host: envs_1.SMTP_HOST,
|
|
34
39
|
port: envs_1.SMTP_PORT,
|
package/dist/core/runServices.js
CHANGED
|
@@ -75,6 +75,7 @@ const runCallManager_1 = require("../calls/runCallManager");
|
|
|
75
75
|
const envs_1 = require("../envs");
|
|
76
76
|
const connectToAri_1 = require("../voice/connectToAri");
|
|
77
77
|
const authz_1 = require("@fonoster/authz");
|
|
78
|
+
const identityConfig_1 = require("./identityConfig");
|
|
78
79
|
const logger = (0, logger_1.getLogger)({ service: "apiserver", filePath: __filename });
|
|
79
80
|
const authorization = (0, common_1.createAuthInterceptor)(envs_1.IDENTITY_PUBLIC_KEY, allowList_1.allowList);
|
|
80
81
|
const checkMethodAuthorized = (0, authz_1.createCheckMethodAuthorized)(`${envs_1.AUTHZ_SERVICE_HOST}:${envs_1.AUTHZ_SERVICE_PORT}`, envs_1.AUTHZ_SERVICE_METHODS);
|
|
@@ -91,7 +92,7 @@ function runServices() {
|
|
|
91
92
|
// Load the remaining services
|
|
92
93
|
(0, loadServices_1.default)(server, yield services_1.default);
|
|
93
94
|
// Connecting to Asterisk ARI
|
|
94
|
-
yield (0, connectToAri_1.connectToAri)((0, httpBridge_1.httpBridge)({ port: envs_1.HTTP_BRIDGE_PORT }));
|
|
95
|
+
yield (0, connectToAri_1.connectToAri)((0, httpBridge_1.httpBridge)(identityConfig_1.identityConfig, { port: envs_1.HTTP_BRIDGE_PORT }));
|
|
95
96
|
// Additional Call Managers subscriber may be added here to handle call events
|
|
96
97
|
yield (0, runCallManager_1.createCreateCallSubscriber)({
|
|
97
98
|
natsUrl: envs_1.NATS_URL,
|
package/dist/envs.d.ts
CHANGED
|
@@ -22,7 +22,10 @@ export declare const IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET: string;
|
|
|
22
22
|
export declare const IDENTITY_PRIVATE_KEY: string;
|
|
23
23
|
export declare const IDENTITY_PUBLIC_KEY: string;
|
|
24
24
|
export declare const IDENTITY_REFRESH_TOKEN_EXPIRES_IN: string;
|
|
25
|
-
export declare const
|
|
25
|
+
export declare const IDENTITY_WORKSPACE_INVITE_FAIL_URL: string;
|
|
26
|
+
export declare const IDENTITY_WORKSPACE_INVITE_EXPIRATION: string;
|
|
27
|
+
export declare const IDENTITY_WORKSPACE_INVITE_URL: string;
|
|
28
|
+
export declare const IDENTITY_DATABASE_URL: string;
|
|
26
29
|
export declare const AUTHZ_SERVICE_ENABLED: boolean;
|
|
27
30
|
export declare const AUTHZ_SERVICE_HOST: string;
|
|
28
31
|
export declare const AUTHZ_SERVICE_PORT: string | number;
|
package/dist/envs.js
CHANGED
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
var _a;
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
8
|
-
exports.TWILIO_PHONE_NUMBER = exports.TWILIO_AUTH_TOKEN = exports.TWILIO_ACCOUNT_SID = exports.TEMPLATES_DIR = void 0;
|
|
7
|
+
exports.SMTP_HOST = exports.SMTP_AUTH_USER = exports.SMTP_AUTH_PASS = exports.ROUTR_DEFAULT_PEER_USERNAME = exports.ROUTR_DEFAULT_PEER_PASSWORD = exports.ROUTR_DEFAULT_PEER_NAME = exports.ROUTR_DEFAULT_PEER_AOR = exports.ROUTR_API_ENDPOINT = exports.OWNER_PASSWORD = exports.OWNER_NAME = exports.OWNER_EMAIL = exports.NATS_URL = exports.INTEGRATIONS_FILE = exports.INFLUXDB_USERNAME = exports.INFLUXDB_URL = exports.INFLUXDB_TOKEN = exports.INFLUXDB_PASSWORD = exports.INFLUXDB_ORG = exports.AUTHZ_SERVICE_METHODS = exports.AUTHZ_SERVICE_PORT = exports.AUTHZ_SERVICE_HOST = exports.AUTHZ_SERVICE_ENABLED = exports.IDENTITY_DATABASE_URL = exports.IDENTITY_WORKSPACE_INVITE_URL = exports.IDENTITY_WORKSPACE_INVITE_EXPIRATION = exports.IDENTITY_WORKSPACE_INVITE_FAIL_URL = exports.IDENTITY_REFRESH_TOKEN_EXPIRES_IN = exports.IDENTITY_PUBLIC_KEY = exports.IDENTITY_PRIVATE_KEY = exports.IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET = exports.IDENTITY_OAUTH2_GITHUB_CLIENT_ID = exports.IDENTITY_OAUTH2_GITHUB_ENABLED = exports.IDENTITY_USER_VERIFICATION_REQUIRED = exports.IDENTITY_ISSUER = exports.IDENTITY_ID_TOKEN_EXPIRES_IN = exports.IDENTITY_AUDIENCE = exports.IDENTITY_ACCESS_TOKEN_EXPIRES_IN = exports.HTTP_BRIDGE_PORT = exports.DEFAULT_NATS_QUEUE_GROUP = exports.CLOAK_ENCRYPTION_KEY = exports.CALLS_TRACK_CALL_SUBJECT = exports.CALLS_CREATE_SUBJECT = exports.ASTERISK_TRUNK = exports.ASTERISK_SYSTEM_DOMAIN = exports.ASTERISK_ARI_USERNAME = exports.ASTERISK_ARI_SECRET = exports.ASTERISK_ARI_PROXY_URL = exports.APP_URL = exports.APISERVER_HOST = exports.APISERVER_BIND_ADDR = void 0;
|
|
8
|
+
exports.TWILIO_PHONE_NUMBER = exports.TWILIO_AUTH_TOKEN = exports.TWILIO_ACCOUNT_SID = exports.TEMPLATES_DIR = exports.SMTP_SENDER = exports.SMTP_SECURE = exports.SMTP_PORT = void 0;
|
|
9
9
|
/*
|
|
10
10
|
* Copyright (C) 2025 by Fonoster Inc (https://fonoster.com)
|
|
11
11
|
* http://github.com/fonoster/fonoster
|
|
@@ -44,7 +44,8 @@ const e = process.env;
|
|
|
44
44
|
"APISERVER_SMTP_AUTH_PASS",
|
|
45
45
|
"APISERVER_IDENTITY_ISSUER",
|
|
46
46
|
"APISERVER_IDENTITY_DATABASE_URL",
|
|
47
|
-
"
|
|
47
|
+
"APISERVER_IDENTITY_WORKSPACE_INVITE_URL",
|
|
48
|
+
"APISERVER_IDENTITY_WORKSPACE_INVITE_FAIL_URL",
|
|
48
49
|
"APISERVER_DATABASE_URL",
|
|
49
50
|
"APISERVER_INFLUXDB_URL",
|
|
50
51
|
"APISERVER_INFLUXDB_INIT_USERNAME",
|
|
@@ -84,7 +85,10 @@ exports.IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET = e.APISERVER_IDENTITY_OAUTH2_GITHU
|
|
|
84
85
|
exports.IDENTITY_PRIVATE_KEY = fs_1.default.readFileSync(IDENTITY_PRIVATE_KEY_PATH, "utf8");
|
|
85
86
|
exports.IDENTITY_PUBLIC_KEY = fs_1.default.readFileSync(IDENTITY_PUBLIC_KEY_PATH, "utf8");
|
|
86
87
|
exports.IDENTITY_REFRESH_TOKEN_EXPIRES_IN = e.APISERVER_IDENTITY_REFRESH_TOKEN_EXPIRES_IN || "24h";
|
|
87
|
-
exports.
|
|
88
|
+
exports.IDENTITY_WORKSPACE_INVITE_FAIL_URL = e.APISERVER_IDENTITY_WORKSPACE_INVITE_FAIL_URL;
|
|
89
|
+
exports.IDENTITY_WORKSPACE_INVITE_EXPIRATION = e.APISERVER_IDENTITY_WORKSPACE_INVITE_EXPIRATION || "1d";
|
|
90
|
+
exports.IDENTITY_WORKSPACE_INVITE_URL = e.APISERVER_IDENTITY_WORKSPACE_INVITE_URL;
|
|
91
|
+
exports.IDENTITY_DATABASE_URL = e.APISERVER_IDENTITY_DATABASE_URL;
|
|
88
92
|
if (e.APISERVER_IDENTITY_OAUTH2_GITHUB_ENABLED === "true") {
|
|
89
93
|
(0, common_1.assertEnvsAreSet)([
|
|
90
94
|
"APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_ID",
|
package/dist/index.js
CHANGED
|
@@ -73,6 +73,7 @@ const createInfluxDbPub_1 = require("./events/createInfluxDbPub");
|
|
|
73
73
|
const nats_1 = require("./events/nats");
|
|
74
74
|
const transformEvent_1 = require("./events/transformEvent");
|
|
75
75
|
const common_1 = require("@fonoster/common");
|
|
76
|
+
const identityConfig_1 = require("./core/identityConfig");
|
|
76
77
|
Promise.resolve().then(() => __importStar(require("./core/removeSwaggerNotice")));
|
|
77
78
|
function main() {
|
|
78
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -82,7 +83,7 @@ function main() {
|
|
|
82
83
|
email: envs_1.OWNER_EMAIL,
|
|
83
84
|
password: envs_1.OWNER_PASSWORD
|
|
84
85
|
};
|
|
85
|
-
yield (0, identity_1.upsertDefaultUser)(user);
|
|
86
|
+
yield (0, identity_1.upsertDefaultUser)(identityConfig_1.identityConfig, user);
|
|
86
87
|
}
|
|
87
88
|
// Upsert a Peer for the default region, if it doesn't already exist
|
|
88
89
|
yield (0, upsertDefaultPeer_1.upsertDefaultPeer)();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fonoster/apiserver",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.8",
|
|
4
4
|
"description": "APIServer for Fonoster",
|
|
5
5
|
"author": "Pedro Sanders <psanders@fonoster.com>",
|
|
6
6
|
"homepage": "https://github.com/fonoster/fonoster#readme",
|
|
@@ -21,11 +21,11 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@deepgram/sdk": "^3.5.1",
|
|
24
|
-
"@fonoster/authz": "^0.9.
|
|
24
|
+
"@fonoster/authz": "^0.9.8",
|
|
25
25
|
"@fonoster/common": "^0.9.7",
|
|
26
|
-
"@fonoster/identity": "^0.9.
|
|
26
|
+
"@fonoster/identity": "^0.9.8",
|
|
27
27
|
"@fonoster/logger": "^0.9.7",
|
|
28
|
-
"@fonoster/sipnet": "^0.9.
|
|
28
|
+
"@fonoster/sipnet": "^0.9.8",
|
|
29
29
|
"@fonoster/streams": "^0.9.7",
|
|
30
30
|
"@fonoster/types": "^0.9.0",
|
|
31
31
|
"@google-cloud/speech": "^6.6.0",
|
|
@@ -73,5 +73,5 @@
|
|
|
73
73
|
"@types/uuid": "^10.0.0",
|
|
74
74
|
"@types/validator": "^13.12.0"
|
|
75
75
|
},
|
|
76
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "ce8a2ea35fa85d494b158ddb8e61bd92ff2af00b"
|
|
77
77
|
}
|