@oneuptime/common 10.0.5 → 10.0.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.
@@ -116,6 +116,42 @@ export default class UserMiddleware {
116
116
  }
117
117
  }
118
118
 
119
+ /*
120
+ * Also check x-sso-tokens header (mobile app flow).
121
+ * The header value is a JSON-encoded map of { projectId: ssoToken }.
122
+ */
123
+ const ssoTokensHeader: string | undefined = req.headers["x-sso-tokens"] as
124
+ | string
125
+ | undefined;
126
+
127
+ if (ssoTokensHeader) {
128
+ try {
129
+ const headerTokens: Record<string, string> =
130
+ JSON.parse(ssoTokensHeader);
131
+
132
+ for (const projectId of Object.keys(headerTokens)) {
133
+ const token: string | undefined = headerTokens[projectId];
134
+
135
+ if (!token || typeof token !== "string") {
136
+ continue;
137
+ }
138
+
139
+ try {
140
+ const decoded: JSONWebTokenData = JSONWebToken.decode(token);
141
+
142
+ if (decoded.projectId?.toString() === projectId) {
143
+ ssoTokens[projectId] = token;
144
+ }
145
+ } catch (err) {
146
+ logger.error(err);
147
+ continue;
148
+ }
149
+ }
150
+ } catch (err) {
151
+ logger.error(err);
152
+ }
153
+ }
154
+
119
155
  return ssoTokens;
120
156
  }
121
157
 
@@ -1110,6 +1110,9 @@ export class Service extends DatabaseService<Model> {
1110
1110
  ...(alert.alertNumber !== undefined && {
1111
1111
  alertNumber: alert.alertNumber,
1112
1112
  }),
1113
+ ...(alert.alertNumberWithPrefix && {
1114
+ alertNumberWithPrefix: alert.alertNumberWithPrefix,
1115
+ }),
1113
1116
  alertId: alert.id!.toString(),
1114
1117
  projectId: alert.projectId!.toString(),
1115
1118
  });
@@ -1187,6 +1190,9 @@ export class Service extends DatabaseService<Model> {
1187
1190
  ...(incident.incidentNumber !== undefined && {
1188
1191
  incidentNumber: incident.incidentNumber,
1189
1192
  }),
1193
+ ...(incident.incidentNumberWithPrefix && {
1194
+ incidentNumberWithPrefix: incident.incidentNumberWithPrefix,
1195
+ }),
1190
1196
  incidentId: incident.id!.toString(),
1191
1197
  projectId: incident.projectId!.toString(),
1192
1198
  });
@@ -1309,6 +1315,83 @@ export class Service extends DatabaseService<Model> {
1309
1315
  });
1310
1316
  });
1311
1317
  }
1318
+
1319
+ // send push notification for incident episode
1320
+ if (
1321
+ options.userNotificationEventType ===
1322
+ UserNotificationEventType.IncidentEpisodeCreated &&
1323
+ incidentEpisode
1324
+ ) {
1325
+ logTimelineItem.status = UserNotificationStatus.Sending;
1326
+ logTimelineItem.statusMessage = `Sending push notification to device.`;
1327
+ logTimelineItem.userPushId = notificationRuleItem.userPush.id!;
1328
+
1329
+ const updatedLog: UserOnCallLogTimeline =
1330
+ await UserOnCallLogTimelineService.create({
1331
+ data: logTimelineItem,
1332
+ props: {
1333
+ isRoot: true,
1334
+ },
1335
+ });
1336
+
1337
+ const pushMessage: PushNotificationMessage =
1338
+ PushNotificationUtil.createIncidentEpisodeCreatedNotification({
1339
+ incidentEpisodeTitle: incidentEpisode.title!,
1340
+ projectName: incidentEpisode.project?.name || "OneUptime",
1341
+ incidentEpisodeViewLink: (
1342
+ await IncidentEpisodeService.getEpisodeLinkInDashboard(
1343
+ incidentEpisode.projectId!,
1344
+ incidentEpisode.id!,
1345
+ )
1346
+ ).toString(),
1347
+ ...(incidentEpisode.episodeNumber !== undefined && {
1348
+ episodeNumber: incidentEpisode.episodeNumber,
1349
+ }),
1350
+ ...(incidentEpisode.episodeNumberWithPrefix && {
1351
+ episodeNumberWithPrefix: incidentEpisode.episodeNumberWithPrefix,
1352
+ }),
1353
+ incidentEpisodeId: incidentEpisode.id!.toString(),
1354
+ projectId: incidentEpisode.projectId!.toString(),
1355
+ });
1356
+
1357
+ PushNotificationService.sendPushNotification(
1358
+ {
1359
+ devices: [
1360
+ {
1361
+ token: notificationRuleItem.userPush.deviceToken!,
1362
+ ...(notificationRuleItem.userPush.deviceName && {
1363
+ name: notificationRuleItem.userPush.deviceName,
1364
+ }),
1365
+ },
1366
+ ],
1367
+ message: pushMessage,
1368
+ deviceType: notificationRuleItem.userPush
1369
+ .deviceType! as PushDeviceType,
1370
+ },
1371
+ {
1372
+ projectId: options.projectId,
1373
+ userOnCallLogTimelineId: updatedLog.id!,
1374
+ userId: notificationRuleItem.userId!,
1375
+ onCallPolicyId: options.onCallPolicyId,
1376
+ onCallPolicyEscalationRuleId: options.onCallPolicyEscalationRuleId,
1377
+ teamId: options.userBelongsToTeamId,
1378
+ onCallDutyPolicyExecutionLogTimelineId:
1379
+ options.onCallDutyPolicyExecutionLogTimelineId,
1380
+ onCallScheduleId: options.onCallScheduleId,
1381
+ },
1382
+ ).catch(async (err: Error) => {
1383
+ await UserOnCallLogTimelineService.updateOneById({
1384
+ id: updatedLog.id!,
1385
+ data: {
1386
+ status: UserNotificationStatus.Error,
1387
+ statusMessage: err.message || "Error sending push notification.",
1388
+ },
1389
+ props: {
1390
+ isRoot: true,
1391
+ },
1392
+ });
1393
+ });
1394
+ }
1312
1395
  }
1313
1396
 
1314
1397
  if (
@@ -16,6 +16,29 @@ export type Page = PlaywrightPage;
16
16
  export type Browser = PlaywrightBrowser;
17
17
 
18
18
  export default class BrowserUtil {
19
+ // Chromium arguments for stability in containerized environments
20
+ public static chromiumStabilityArgs: string[] = [
21
+ "--no-sandbox",
22
+ "--disable-setuid-sandbox",
23
+ "--disable-dev-shm-usage",
24
+ "--disable-gpu",
25
+ "--disable-software-rasterizer",
26
+ "--disable-dbus", // no D-Bus daemon in containers
27
+ "--disable-features=dbus", // additional D-Bus feature gate
28
+ "--no-zygote", // skip zygote process that fails OOM score adjustments in containers
29
+ ];
30
+
31
+ // Firefox preferences for stability in containerized environments
32
+ public static firefoxStabilityPrefs: Record<
33
+ string,
34
+ string | number | boolean
35
+ > = {
36
+ "gfx.webrender.all": false, // disable GPU-based WebRender
37
+ "media.hardware-video-decoding.enabled": false, // disable hardware video decoding
38
+ "layers.acceleration.disabled": true, // disable GPU-accelerated layers
39
+ "network.http.spdy.enabled.http2": true, // keep HTTP/2 enabled
40
+ };
41
+
19
42
  @CaptureSpan()
20
43
  public static async convertHtmlToBase64Screenshot(data: {
21
44
  html: string;
@@ -68,6 +91,8 @@ export default class BrowserUtil {
68
91
  if (data.browserType === BrowserType.Chromium) {
69
92
  browser = await chromium.launch({
70
93
  executablePath: await BrowserUtil.getChromeExecutablePath(),
94
+ headless: true,
95
+ args: BrowserUtil.chromiumStabilityArgs,
71
96
  });
72
97
  page = await browser.newPage();
73
98
  }
@@ -75,6 +100,8 @@ export default class BrowserUtil {
75
100
  if (data.browserType === BrowserType.Firefox) {
76
101
  browser = await firefox.launch({
77
102
  executablePath: await BrowserUtil.getFirefoxExecutablePath(),
103
+ headless: true,
104
+ firefoxUserPrefs: BrowserUtil.firefoxStabilityPrefs,
78
105
  });
79
106
  page = await browser.newPage();
80
107
  }
@@ -139,7 +166,7 @@ export default class BrowserUtil {
139
166
  return { height: viewPortHeight, width: viewPortWidth };
140
167
  }
141
168
 
142
- private static getPlaywrightBrowsersPath(): string {
169
+ public static getPlaywrightBrowsersPath(): string {
143
170
  return (
144
171
  process.env["PLAYWRIGHT_BROWSERS_PATH"] ||
145
172
  `${os.homedir()}/.cache/ms-playwright`
@@ -77,22 +77,46 @@ export default class VMRunner {
77
77
  };
78
78
  `);
79
79
 
80
- // axios (get, post, put, delete) - bridged via applySyncPromise
80
+ /*
81
+ * axios (get, head, options, post, put, patch, delete, request)
82
+ * bridged via applySyncPromise.
83
+ *
84
+ * For GET/HEAD/OPTIONS/DELETE: args = [method, url, configJson?]
85
+ * For POST/PUT/PATCH: args = [method, url, bodyJson?, configJson?]
86
+ * For REQUEST: args = ['request', '', configJson]
87
+ */
81
88
  const axiosRef: ivm.Reference<
82
- (method: string, url: string, dataOrConfig?: string) => Promise<string>
89
+ (
90
+ method: string,
91
+ url: string,
92
+ arg1?: string,
93
+ arg2?: string,
94
+ ) => Promise<string>
83
95
  > = new ivm.Reference(
84
96
  async (
85
97
  method: string,
86
98
  url: string,
87
- dataOrConfig?: string,
99
+ arg1?: string,
100
+ arg2?: string,
88
101
  ): Promise<string> => {
89
- const parsed: JSONObject | undefined = dataOrConfig
90
- ? (JSON.parse(dataOrConfig) as JSONObject)
102
+ const methodsWithBody: string[] = ["post", "put", "patch"];
103
+ const hasBody: boolean = methodsWithBody.includes(method);
104
+
105
+ /*
106
+ * For POST/PUT/PATCH: arg1=body, arg2=config
107
+ * For GET/HEAD/OPTIONS/DELETE/REQUEST: arg1=config
108
+ */
109
+ const body: JSONObject | undefined =
110
+ hasBody && arg1 ? (JSON.parse(arg1) as JSONObject) : undefined;
111
+
112
+ const configStr: string | undefined = hasBody ? arg2 : arg1;
113
+ const config: JSONObject | undefined = configStr
114
+ ? (JSON.parse(configStr) as JSONObject)
91
115
  : undefined;
92
116
 
93
117
  // Reconstruct real http/https Agents from serialized markers
94
- if (parsed) {
95
- const httpsAgentConfig: JSONObject | undefined = parsed[
118
+ if (config) {
119
+ const httpsAgentConfig: JSONObject | undefined = config[
96
120
  "httpsAgent"
97
121
  ] as JSONObject | undefined;
98
122
 
@@ -100,12 +124,12 @@ export default class VMRunner {
100
124
  httpsAgentConfig &&
101
125
  httpsAgentConfig["__agentType"] === "__https_agent__"
102
126
  ) {
103
- parsed["httpsAgent"] = new https.Agent(
127
+ config["httpsAgent"] = new https.Agent(
104
128
  httpsAgentConfig["options"] as https.AgentOptions,
105
129
  ) as unknown as JSONObject;
106
130
  }
107
131
 
108
- const httpAgentConfig: JSONObject | undefined = parsed[
132
+ const httpAgentConfig: JSONObject | undefined = config[
109
133
  "httpAgent"
110
134
  ] as JSONObject | undefined;
111
135
 
@@ -113,7 +137,7 @@ export default class VMRunner {
113
137
  httpAgentConfig &&
114
138
  httpAgentConfig["__agentType"] === "__http_agent__"
115
139
  ) {
116
- parsed["httpAgent"] = new http.Agent(
140
+ config["httpAgent"] = new http.Agent(
117
141
  httpAgentConfig["options"] as http.AgentOptions,
118
142
  ) as unknown as JSONObject;
119
143
  }
@@ -123,24 +147,56 @@ export default class VMRunner {
123
147
 
124
148
  switch (method) {
125
149
  case "get":
126
- response = await axios.get(url, parsed);
150
+ response = await axios.get(url, config);
151
+ break;
152
+ case "head":
153
+ response = await axios.head(url, config);
154
+ break;
155
+ case "options":
156
+ response = await axios.options(url, config);
127
157
  break;
128
158
  case "post":
129
- response = await axios.post(url, parsed);
159
+ response = await axios.post(url, body, config);
130
160
  break;
131
161
  case "put":
132
- response = await axios.put(url, parsed);
162
+ response = await axios.put(url, body, config);
163
+ break;
164
+ case "patch":
165
+ response = await axios.patch(url, body, config);
133
166
  break;
134
167
  case "delete":
135
- response = await axios.delete(url, parsed);
168
+ response = await axios.delete(url, config);
169
+ break;
170
+ case "request":
171
+ response = await axios.request(
172
+ config as Parameters<typeof axios.request>[0],
173
+ );
136
174
  break;
137
175
  default:
138
176
  throw new Error(`Unsupported HTTP method: ${method}`);
139
177
  }
140
178
 
179
+ /*
180
+ * Convert AxiosHeaders to a plain object before serializing.
181
+ * JSON.stringify calls AxiosHeaders.toJSON(key) with a truthy key,
182
+ * which makes it join array headers (like set-cookie) with commas.
183
+ * This produces invalid Cookie headers when user code forwards them.
184
+ */
185
+ const plainHeaders: Record<string, unknown> = {};
186
+
187
+ if (response.headers) {
188
+ for (const key of Object.keys(
189
+ response.headers as Record<string, unknown>,
190
+ )) {
191
+ plainHeaders[key] = (response.headers as Record<string, unknown>)[
192
+ key
193
+ ];
194
+ }
195
+ }
196
+
141
197
  return JSON.stringify({
142
198
  status: response.status,
143
- headers: response.headers,
199
+ headers: plainHeaders,
144
200
  data: response.data,
145
201
  });
146
202
  },
@@ -149,24 +205,120 @@ export default class VMRunner {
149
205
  await jail.set("_axiosRef", axiosRef);
150
206
 
151
207
  await context.eval(`
152
- const axios = {
153
- get: async (url, config) => {
154
- const r = await _axiosRef.applySyncPromise(undefined, ['get', url, config ? JSON.stringify(config) : undefined]);
208
+ function _assertNoFunctions(obj, path) {
209
+ if (!obj || typeof obj !== 'object') return;
210
+ if (Array.isArray(obj)) {
211
+ for (let i = 0; i < obj.length; i++) {
212
+ const fullPath = path + '[' + i + ']';
213
+ if (typeof obj[i] === 'function') {
214
+ throw new Error(
215
+ 'Functions are not supported in axios config because of security. ' +
216
+ 'Found a function at "' + fullPath + '". Please remove it or replace it with a plain value.'
217
+ );
218
+ }
219
+ if (obj[i] && typeof obj[i] === 'object') {
220
+ _assertNoFunctions(obj[i], fullPath);
221
+ }
222
+ }
223
+ return;
224
+ }
225
+ for (const key of Object.keys(obj)) {
226
+ const fullPath = path ? path + '.' + key : key;
227
+ if (typeof obj[key] === 'function') {
228
+ throw new Error(
229
+ 'Functions are not supported in axios config because of security. ' +
230
+ 'Found a function at "' + fullPath + '". Please remove it or replace it with a plain value.'
231
+ );
232
+ }
233
+ if (obj[key] && typeof obj[key] === 'object') {
234
+ _assertNoFunctions(obj[key], fullPath);
235
+ }
236
+ }
237
+ }
238
+
239
+ function _makeAxiosInstance(defaults) {
240
+ function mergeConfig(overrides) {
241
+ if (!defaults && !overrides) return undefined;
242
+ if (!defaults) return overrides;
243
+ if (!overrides) return Object.assign({}, defaults);
244
+ const merged = Object.assign({}, defaults, overrides);
245
+ if (defaults.headers && overrides.headers) {
246
+ merged.headers = Object.assign({}, defaults.headers, overrides.headers);
247
+ }
248
+ return merged;
249
+ }
250
+
251
+ async function _request(config) {
252
+ const merged = mergeConfig(config);
253
+ if (merged) _assertNoFunctions(merged, 'config');
254
+ const r = await _axiosRef.applySyncPromise(undefined, ['request', '', merged ? JSON.stringify(merged) : undefined]);
155
255
  return JSON.parse(r);
156
- },
157
- post: async (url, data) => {
158
- const r = await _axiosRef.applySyncPromise(undefined, ['post', url, data ? JSON.stringify(data) : undefined]);
256
+ }
257
+
258
+ // Make instance callable: axios(config) or axios(url, config)
259
+ const instance = async function(urlOrConfig, config) {
260
+ if (typeof urlOrConfig === 'object') {
261
+ return _request(urlOrConfig);
262
+ }
263
+ return _request(Object.assign({}, config || {}, { url: urlOrConfig }));
264
+ };
265
+
266
+ instance.request = _request;
267
+ instance.get = async (url, config) => {
268
+ const merged = mergeConfig(config);
269
+ if (merged) _assertNoFunctions(merged, 'config');
270
+ const r = await _axiosRef.applySyncPromise(undefined, ['get', url, merged ? JSON.stringify(merged) : undefined]);
159
271
  return JSON.parse(r);
160
- },
161
- put: async (url, data) => {
162
- const r = await _axiosRef.applySyncPromise(undefined, ['put', url, data ? JSON.stringify(data) : undefined]);
272
+ };
273
+ instance.head = async (url, config) => {
274
+ const merged = mergeConfig(config);
275
+ if (merged) _assertNoFunctions(merged, 'config');
276
+ const r = await _axiosRef.applySyncPromise(undefined, ['head', url, merged ? JSON.stringify(merged) : undefined]);
163
277
  return JSON.parse(r);
164
- },
165
- delete: async (url, config) => {
166
- const r = await _axiosRef.applySyncPromise(undefined, ['delete', url, config ? JSON.stringify(config) : undefined]);
278
+ };
279
+ instance.options = async (url, config) => {
280
+ const merged = mergeConfig(config);
281
+ if (merged) _assertNoFunctions(merged, 'config');
282
+ const r = await _axiosRef.applySyncPromise(undefined, ['options', url, merged ? JSON.stringify(merged) : undefined]);
167
283
  return JSON.parse(r);
168
- },
169
- };
284
+ };
285
+ instance.post = async (url, data, config) => {
286
+ const merged = mergeConfig(config);
287
+ if (data) _assertNoFunctions(data, 'data');
288
+ if (merged) _assertNoFunctions(merged, 'config');
289
+ const r = await _axiosRef.applySyncPromise(undefined, ['post', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
290
+ return JSON.parse(r);
291
+ };
292
+ instance.put = async (url, data, config) => {
293
+ const merged = mergeConfig(config);
294
+ if (data) _assertNoFunctions(data, 'data');
295
+ if (merged) _assertNoFunctions(merged, 'config');
296
+ const r = await _axiosRef.applySyncPromise(undefined, ['put', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
297
+ return JSON.parse(r);
298
+ };
299
+ instance.patch = async (url, data, config) => {
300
+ const merged = mergeConfig(config);
301
+ if (data) _assertNoFunctions(data, 'data');
302
+ if (merged) _assertNoFunctions(merged, 'config');
303
+ const r = await _axiosRef.applySyncPromise(undefined, ['patch', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
304
+ return JSON.parse(r);
305
+ };
306
+ instance.delete = async (url, config) => {
307
+ const merged = mergeConfig(config);
308
+ if (merged) _assertNoFunctions(merged, 'config');
309
+ const r = await _axiosRef.applySyncPromise(undefined, ['delete', url, merged ? JSON.stringify(merged) : undefined]);
310
+ return JSON.parse(r);
311
+ };
312
+ instance.create = (instanceDefaults) => {
313
+ if (instanceDefaults) _assertNoFunctions(instanceDefaults, 'defaults');
314
+ const combinedDefaults = mergeConfig(instanceDefaults);
315
+ return _makeAxiosInstance(combinedDefaults);
316
+ };
317
+
318
+ return instance;
319
+ }
320
+
321
+ const axios = _makeAxiosInstance(null);
170
322
  `);
171
323
 
172
324
  // crypto (createHash, createHmac, randomBytes) - bridged via applySync
@@ -1,10 +1,11 @@
1
1
  <link rel="preconnect" href="https://fonts.googleapis.com">
2
2
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
3
+ <link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap" as="style">
3
4
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
4
5
  rel="stylesheet">
5
6
  <style>
6
7
  * {
7
- font-family: Inter;
8
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
8
9
  }
9
10
 
10
11
 
@@ -34,6 +35,7 @@
34
35
  width: auto;
35
36
  }
36
37
  </style>
38
+ <link rel="preload" href="https://cdn.tailwindcss.com" as="script">
37
39
  <script src="https://cdn.tailwindcss.com"></script>
38
40
 
39
41
  <!-- Google Tag Manager -->
@@ -93,6 +93,7 @@ describe("UserMiddleware", () => {
93
93
 
94
94
  const req: Partial<ExpressRequest> = {
95
95
  cookies: { "sso-token": mockedAccessToken },
96
+ headers: {},
96
97
  };
97
98
 
98
99
  test("should return an empty object when ssoToken is not passed", () => {
@@ -55,7 +55,7 @@ export default class UserMiddleware {
55
55
  return undefined;
56
56
  }
57
57
  static getSsoTokens(req) {
58
- var _a;
58
+ var _a, _b;
59
59
  const ssoTokens = {};
60
60
  // get sso tokens from cookies.
61
61
  const cookies = CookieUtil.getAllCookies(req);
@@ -78,6 +78,35 @@ export default class UserMiddleware {
78
78
  }
79
79
  }
80
80
  }
81
+ /*
82
+ * Also check x-sso-tokens header (mobile app flow).
83
+ * The header value is a JSON-encoded map of { projectId: ssoToken }.
84
+ */
85
+ const ssoTokensHeader = req.headers["x-sso-tokens"];
86
+ if (ssoTokensHeader) {
87
+ try {
88
+ const headerTokens = JSON.parse(ssoTokensHeader);
89
+ for (const projectId of Object.keys(headerTokens)) {
90
+ const token = headerTokens[projectId];
91
+ if (!token || typeof token !== "string") {
92
+ continue;
93
+ }
94
+ try {
95
+ const decoded = JSONWebToken.decode(token);
96
+ if (((_b = decoded.projectId) === null || _b === void 0 ? void 0 : _b.toString()) === projectId) {
97
+ ssoTokens[projectId] = token;
98
+ }
99
+ }
100
+ catch (err) {
101
+ logger.error(err);
102
+ continue;
103
+ }
104
+ }
105
+ }
106
+ catch (err) {
107
+ logger.error(err);
108
+ }
109
+ }
81
110
  return ssoTokens;
82
111
  }
83
112
  static doesSsoTokenForProjectExist(req, projectId, userId) {
@@ -1 +1 @@
1
- {"version":3,"file":"UserAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/UserAuthorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/UserAuthorization.ts"],"names":[],"mappings":"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"}