Compare commits

...

782 Commits

Author SHA1 Message Date
Simon Larsen
aea1ec24ef refactor: Update EntityFilter to handle FieldType.Entity and FieldType.EntityArray filters 2024-05-09 12:01:31 +01:00
Simon Larsen
7c250a25e3 refactor: Update StatementGenerator to include createdAt and updatedAt in SELECT query 2024-05-09 11:54:28 +01:00
Simon Larsen
e7799adc1c feat: Update StatementGenerator to include createdAt in SELECT query 2024-05-09 10:54:04 +01:00
Simon Larsen
2c949150ef refactor: Improve error handling and formatting in DatabaseService 2024-05-09 10:54:04 +01:00
Simon Larsen
983892d8b3 refactor: Update AnalyticsDatabaseService to support groupBy in queries 2024-05-09 10:54:04 +01:00
Simon Larsen
054234116b refactor: Update sort field in StatusPageAPI to use startsAt instead of createdAt 2024-05-09 10:54:04 +01:00
Simon Larsen
d6aafa8493 feat: Add support for counting with groupBy in DatabaseService 2024-05-09 10:54:04 +01:00
Simon Larsen
b5407b47b2 feat: Add onViewPage function to Metrics component 2024-05-09 10:54:04 +01:00
Simon Larsen
f84bec7e66 refactor: Fix formatting and remove unnecessary code in AnalyticsDatabaseService 2024-05-09 10:54:04 +01:00
Simon Larsen
43354d850b feat: Add AnalyticsModelTable component to Metrics page 2024-05-09 10:54:04 +01:00
Simon Larsen
1977dc3e62 refactor: Add GroupBy support to analytics database queries 2024-05-09 10:54:04 +01:00
Simon Larsen
c2bd27b0f9 refactor: Add GroupBy support to analytics database queries 2024-05-09 10:54:04 +01:00
Simon Larsen
264c0f0347 Merge pull request #1379 from OneUptime/snyk-upgrade-c9d2d1e5a53e5e8a69bea4eb64fe195b
[Snyk] Upgrade css-loader from 6.10.0 to 6.11.0
2024-05-09 08:56:09 +01:00
snyk-bot
0de98ae262 fix: upgrade css-loader from 6.10.0 to 6.11.0
Snyk has created this PR to upgrade css-loader from 6.10.0 to 6.11.0.

See this package in npm:
https://www.npmjs.com/package/css-loader

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/11bb5528-45f9-473c-a635-dc097fd03b3c?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-08 21:54:23 +00:00
Simon Larsen
573a12075b Merge pull request #1377 from OneUptime/snyk-upgrade-5ae69998d12b665f469b0997420ea928
[Snyk] Upgrade posthog-js from 1.125.0 to 1.126.0
2024-05-08 20:55:12 +01:00
snyk-bot
0a85e245d7 fix: upgrade posthog-js from 1.125.0 to 1.126.0
Snyk has created this PR to upgrade posthog-js from 1.125.0 to 1.126.0.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-08 17:21:50 +00:00
Simon Larsen
41d01cceee Merge pull request #1373 from OneUptime/snyk-upgrade-0f03e56c8fcfe93e0825bfeb309bddb8
[Snyk] Upgrade @opentelemetry/instrumentation-xml-http-request from 0.49.1 to 0.50.0
2024-05-08 12:56:44 +01:00
Simon Larsen
dcd9aeccb3 Merge pull request #1371 from OneUptime/snyk-upgrade-3ed96983eb9a1ec2fc0be8285f56cff9
[Snyk] Upgrade @opentelemetry/exporter-trace-otlp-http from 0.49.1 to 0.50.0
2024-05-08 12:56:17 +01:00
Simon Larsen
c59ebc2373 refactor: Update monitor steps to include monitor name 2024-05-08 12:49:07 +01:00
Simon Larsen
643f4acddd refactor: Improve error handling in API class and include URL in exception message 2024-05-08 12:17:14 +01:00
Simon Larsen
b3fb21af59 refactor: Update markdown field types for root cause in Incident and IncidentStateTimeline models 2024-05-08 11:43:54 +01:00
Simon Larsen
2164f45a68 refactor: Update UptimeUtil to use startsAt and endsAt properties for event dates 2024-05-08 11:21:34 +01:00
Simon Larsen
8a4afe992c refactor: Improve calculation of incident duration in IncidentView component 2024-05-08 11:10:20 +01:00
Simon Larsen
f35e50bab3 refactor: Add startsAt property to monitorStatusTimelines in StatusPageAPI 2024-05-08 10:34:59 +01:00
Simon Larsen
63064c587c refactor: Remove dark mode styles from progress bar and pagination components 2024-05-08 08:41:59 +01:00
snyk-bot
edd11ffade fix: upgrade @opentelemetry/instrumentation-xml-http-request from 0.49.1 to 0.50.0
Snyk has created this PR to upgrade @opentelemetry/instrumentation-xml-http-request from 0.49.1 to 0.50.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/instrumentation-xml-http-request

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-07 21:06:49 +00:00
snyk-bot
b7e97a29ee fix: upgrade @opentelemetry/exporter-trace-otlp-http from 0.49.1 to 0.50.0
Snyk has created this PR to upgrade @opentelemetry/exporter-trace-otlp-http from 0.49.1 to 0.50.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-07 21:06:41 +00:00
Simon Larsen
fdf6e3dfa3 refactor: Optimize sorting of monitorStatusTimelines by createdAt in StatusPageAPI 2024-05-07 20:01:37 +01:00
Simon Larsen
b59b8257cc refactor: Use explicit type annotations for mutex and mutexId in Semaphore class 2024-05-06 22:42:09 +01:00
Simon Larsen
9bde353e93 refactor: Add Semaphore locking for monitor probe creation and release mutex after completion 2024-05-06 22:18:14 +01:00
Simon Larsen
a2c2867469 refactor: Add Semaphore locking for monitor probe creation and release mutex after completion 2024-05-06 21:52:09 +01:00
Simon Larsen
bd3ba94da8 chore: Update package-lock.json and package.json to include redis-semaphore dependency 2024-05-06 21:47:47 +01:00
Simon Larsen
8e6800c17b refactor: Update UserAuthorization middleware to improve project permissions handling 2024-05-06 20:47:15 +01:00
Simon Larsen
e481e043dd refactor: Update REDIS_PORT value in _helpers.tpl to use dynamic value from values.yaml 2024-05-06 20:47:09 +01:00
Simon Larsen
a4e6552c91 refactor: Disable redis persistence and add common configuration in values.yaml 2024-05-06 15:20:42 +01:00
Simon Larsen
6ce5cde46e Merge pull request #1365 from OneUptime/snyk-upgrade-e95d2830e79bc050ba332cb3d9670e5b
[Snyk] Upgrade reactflow from 11.10.4 to 11.11.1
2024-05-06 15:16:47 +01:00
Simon Larsen
22014c81c4 Merge pull request #1366 from OneUptime/snyk-upgrade-ec50f233945652edca96198c892ea002
[Snyk] Upgrade @opentelemetry/context-zone from 1.22.0 to 1.23.0
2024-05-06 15:16:40 +01:00
Simon Larsen
bff63cdf58 Merge pull request #1367 from OneUptime/snyk-upgrade-9bdef45fe03889844c5f043354578d14
[Snyk] Upgrade @opentelemetry/instrumentation-fetch from 0.49.1 to 0.50.0
2024-05-06 15:16:32 +01:00
Simon Larsen
5f9d57a099 Merge pull request #1369 from OneUptime/snyk-upgrade-1b2e0c757b53983d536db6e5be033842
[Snyk] Upgrade @opentelemetry/resources from 1.22.0 to 1.23.0
2024-05-06 15:16:22 +01:00
Simon Larsen
ca100f9de9 refactor: Update REDIS_PORT value in _helpers.tpl to use dynamic value from values.yaml 2024-05-06 13:53:37 +01:00
Simon Larsen
68dbb010aa refactor: Disable redis persistence and add common configuration in values.yaml 2024-05-06 13:49:08 +01:00
Simon Larsen
5cd213a750 refactor: Update SSO.ts and StatusPageSSO.ts to include issuer URL in SAML request 2024-05-06 13:20:34 +01:00
Simon Larsen
26683914bc refactor: Update SSO.ts and StatusPageSSO.ts to include issuer URL in SAML request 2024-05-06 13:13:52 +01:00
Simon Larsen
8a5adfd589 refactor: Remove unnecessary code in UserAuthorization.ts 2024-05-06 12:39:11 +01:00
Simon Larsen
d2eefeabba refactor: Include issuer URL in SAML request for SSO 2024-05-06 12:26:18 +01:00
Simon Larsen
1148b59416 refactor: Include issuer URL in SAML request for SSO 2024-05-06 12:02:55 +01:00
Simon Larsen
848c0c8100 refactor: Update SSO.ts and StatusPageSSO.ts to include issuer URL in SAML request 2024-05-06 12:00:23 +01:00
Simon Larsen
21f40961cf refactor: Update isGlobalLogin flag in SSO.ts and UserAuthorization.ts 2024-05-06 11:53:45 +01:00
Simon Larsen
2f74fbe0a8 refactor: Simplify SSO.ts code for SAMLRequest encoding and redirect 2024-05-06 10:17:49 +01:00
Simon Larsen
571784a523 refactor: Simplify SSO.ts code for SAMLRequest encoding and redirect 2024-05-06 09:52:14 +01:00
snyk-bot
7c60fe8009 fix: upgrade @opentelemetry/resources from 1.22.0 to 1.23.0
Snyk has created this PR to upgrade @opentelemetry/resources from 1.22.0 to 1.23.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/resources

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-05 22:21:24 +00:00
snyk-bot
1a2fe1d16d fix: upgrade @opentelemetry/instrumentation-fetch from 0.49.1 to 0.50.0
Snyk has created this PR to upgrade @opentelemetry/instrumentation-fetch from 0.49.1 to 0.50.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/instrumentation-fetch

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-05 22:21:17 +00:00
snyk-bot
a28a041c8d fix: upgrade @opentelemetry/context-zone from 1.22.0 to 1.23.0
Snyk has created this PR to upgrade @opentelemetry/context-zone from 1.22.0 to 1.23.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/context-zone

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-05 22:21:13 +00:00
snyk-bot
cfcce00060 fix: upgrade reactflow from 11.10.4 to 11.11.1
Snyk has created this PR to upgrade reactflow from 11.10.4 to 11.11.1.

See this package in npm:
https://www.npmjs.com/package/reactflow

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-05 22:21:08 +00:00
Simon Larsen
da0fa045e6 refactor: Simplify SSO.ts code for SAMLRequest encoding and redirect 2024-05-05 21:37:05 +01:00
Simon Larsen
859f62bf93 refactor: Simplify base64 encoding in SSO.ts 2024-05-04 23:26:13 +01:00
Simon Larsen
6a1cc1bd8b refactor: Update SSO.ts to use zlib.deflateRawSync for SAML message encoding 2024-05-04 22:55:29 +01:00
Simon Larsen
5b9abe8aea refactor: Add SAMLRequest encoding and redirect to Identity Provider 2024-05-04 22:54:06 +01:00
Simon Larsen
d0ec483a0f refactor: Update Register.tsx and UserAuthorization.test.ts for isGlobalLogin flag 2024-05-04 22:00:33 +01:00
Simon Larsen
c03a3d6f56 refactor: Remove debugger statement in SSO.ts 2024-05-04 21:53:00 +01:00
Simon Larsen
8761dbd75b refactor: Update login page SSO message for clarity and consistency 2024-05-04 21:51:09 +01:00
Simon Larsen
5541922b25 refactor: Update login page SSO message for clarity and consistency 2024-05-04 21:50:35 +01:00
Simon Larsen
8693ab065e refactor: Add isGlobalLogin flag to user object in ProjectAuthorization middleware 2024-05-04 21:29:53 +01:00
Simon Larsen
fe4daa7937 refactor: Update login page SSO message for clarity and consistency 2024-05-04 21:27:21 +01:00
Simon Larsen
20d7f2f8b4 refactor: Update JSONWebToken.signUserLoginToken() method to include isGlobalLogin flag 2024-05-04 21:13:34 +01:00
Simon Larsen
7f94f3d4d4 refactor: Update column_1 and column_2 definitions in StatementGenerator.test.ts 2024-05-04 20:54:19 +01:00
Simon Larsen
bc46370f7c refactor: Update JSONWebToken.sign() method to accept an object with data and expiresInSeconds properties 2024-05-04 20:37:58 +01:00
Simon Larsen
b3346a9702 refactor: Update login page SSO message for clarity and consistency 2024-05-04 20:11:02 +01:00
Simon Larsen
f793f7dd16 refactor: Update email regex to improve validation accuracy 2024-05-04 20:02:17 +01:00
Simon Larsen
766f1f6178 update email regex 2024-05-04 19:33:59 +01:00
Simon Larsen
9f76748037 update deps 2024-05-04 19:33:45 +01:00
Simon Larsen
469e06280a refactor: Improve code readability and maintainability in AnalyticsDatabaseService.ts 2024-05-03 19:05:56 +01:00
Simon Larsen
aede9af03d chore: Remove unnecessary line in BaseModel.ts 2024-05-03 14:48:07 +01:00
Nawaz Dhandala
0bc7cf345f chore: Add missing newline character in BaseModel.ts 2024-05-03 14:45:26 +01:00
Nawaz Dhandala
95c7b10ce0 Refactor AnalyticsDatabaseService.ts for improved code readability and maintainability 2024-05-03 14:04:24 +01:00
Simon Larsen
daceab164c Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-05-03 13:38:00 +01:00
Simon Larsen
2d28fbaf85 refactor: Add required flag and default value for attributes column in Log model 2024-05-03 13:37:57 +01:00
Simon Larsen
8d2cbe49ad Merge pull request #1364 from OneUptime/snyk-upgrade-8c197b0383ff1f076301a2077e18b9b2
[Snyk] Upgrade reactflow from 11.11.0 to 11.11.1
2024-05-03 13:10:26 +01:00
Simon Larsen
86f262583c feat: Generate new certificates for status page domains
This commit adds a new data migration script, GenerateNewCertsForStatusPage.ts, which generates new certificates for status page domains. It retrieves all domains in the greenlock certs, orders them, and updates the certificates accordingly. This will ensure that the status page domains have up-to-date and valid certificates.

Refactor and delete unused Metric services and models
Refactor Queue class to use explicit type annotation for queue variable
Add Queue caching to improve performance and reduce redundant connections
Refactor test-e2e job in release.yml workflow
Fix error handling in StatusPageDomainService.ts
Update select field in MoveGreenlockCertsToAcmeCerts.ts to use _id instead of id
Update ingress configuration for OneUptime Helm chart
Refactor StatusPageAPI to improve code readability and maintainability
Refactor StatusPageAPI and UpdateByID to improve code readability and maintainability
Refactor Let's Encrypt configuration and update GreenlockUtil class
2024-05-03 13:07:45 +01:00
Simon Larsen
4e748d1626 Refactor and delete unused Metric services and models 2024-05-03 13:03:01 +01:00
Simon Larsen
1dbea8e636 Refactor Queue class to use explicit type annotation for queue variable 2024-05-03 10:30:41 +01:00
Simon Larsen
3991acf5fc Add Queue caching to improve performance and reduce redundant connections 2024-05-03 10:04:19 +01:00
snyk-bot
1285830a9b fix: upgrade reactflow from 11.11.0 to 11.11.1
Snyk has created this PR to upgrade reactflow from 11.11.0 to 11.11.1.

See this package in npm:
https://www.npmjs.com/package/reactflow

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/8ca4ee75-8bc5-43a1-a3bc-244ceebf1437?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-05-02 17:57:26 +00:00
Simon Larsen
96d3243205 Refactor test-e2e job in release.yml workflow 2024-05-01 17:22:12 +01:00
Simon Larsen
08cbdb15d0 Fix error handling in StatusPageDomainService.ts 2024-05-01 15:16:59 +01:00
Simon Larsen
f59284e4d6 Update select field in MoveGreenlockCertsToAcmeCerts.ts to use _id instead of id 2024-05-01 13:57:46 +01:00
Simon Larsen
0c5d0e81a5 Update ingress configuration for OneUptime Helm chart 2024-05-01 13:41:35 +01:00
Simon Larsen
82829a5b97 Refactor StatusPageAPI to improve code readability and maintainability 2024-05-01 13:12:16 +01:00
Simon Larsen
d3c188a804 Refactor StatusPageAPI and UpdateByID to improve code readability and maintainability 2024-05-01 13:08:15 +01:00
Simon Larsen
85ffc36fad Refactor Let's Encrypt configuration and update GreenlockUtil class 2024-05-01 12:44:49 +01:00
Simon Larsen
8d34e9ccbe Refactor LetsEncrypt configuration and update GreenlockUtil class 2024-05-01 12:42:32 +01:00
Simon Larsen
c6643d7f7c Update GreenlockUtil class to handle lets encrypt account key properly 2024-05-01 12:37:41 +01:00
Simon Larsen
1433823efe Update LetsEncrypt configuration for OneUptime deployment 2024-05-01 12:13:01 +01:00
Simon Larsen
bd5902ed6d Update ingress configuration for OneUptime Helm chart 2024-05-01 11:44:30 +01:00
Simon Larsen
b64666f0ff Update oneuptime logo URL in README.md 2024-05-01 11:32:30 +01:00
Simon Larsen
9706cced86 Update OneUptime Helm chart with production readiness checklist 2024-05-01 11:29:14 +01:00
Simon Larsen
49cb3024ef Update nginx.yaml for OneUptime Helm chart 2024-05-01 11:09:30 +01:00
Simon Larsen
2fec007c5f Update ingressClassName in values.yaml for OneUptime Helm chart 2024-05-01 10:57:26 +01:00
Simon Larsen
0f40f5f730 Update HelmChart templates and values for OneUptime deployment 2024-05-01 10:30:21 +01:00
Simon Larsen
120ca78760 Update HelmChart/Public/oneuptime/templates/extra-templates.yaml and HelmChart/Public/oneuptime/values.yaml 2024-05-01 10:19:30 +01:00
Simon Larsen
d50fdf3464 Update nginx.yaml and values.yaml for OneUptime Helm chart 2024-05-01 10:14:02 +01:00
Simon Larsen
34ddb8efdb Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-05-01 09:49:38 +01:00
Simon Larsen
3724cce4f0 Add cron job to verify CNAMEs in StatusPageCerts.ts 2024-05-01 09:49:11 +01:00
Simon Larsen
d864992bdb Add MoveGreenlockCertsToAcmeCerts migration and update DataMigrations in Index.ts 2024-05-01 09:31:45 +01:00
Simon Larsen
3515752a95 Add MoveGreenlockCertsToAcmeCerts migration 2024-05-01 09:29:29 +01:00
Simon Larsen
53d66db8cb Merge pull request #1359 from OneUptime/snyk-fix-6d9e266d473ce0fed1ec1645f0bf6548
[Snyk] Security upgrade ejs from 3.1.9 to 3.1.10
2024-04-30 22:13:44 +01:00
Simon Larsen
548250f837 Merge pull request #1360 from OneUptime/snyk-fix-4fe336667711cbbe5c8ccb29e8c049e7
[Snyk] Security upgrade ejs from 3.1.9 to 3.1.10
2024-04-30 22:13:36 +01:00
Simon Larsen
b3b343d4aa Merge pull request #1361 from OneUptime/snyk-fix-eff57b0386677ae55037cf20bb1b38e3
[Snyk] Security upgrade ejs from 3.1.9 to 3.1.10
2024-04-30 22:13:31 +01:00
Simon Larsen
69a8f438f7 Merge pull request #1362 from OneUptime/snyk-fix-b0f6bc6acf45920714d4b0cacfb5c537
[Snyk] Security upgrade ejs from 3.1.9 to 3.1.10
2024-04-30 22:13:25 +01:00
Simon Larsen
7b571f15a9 Merge pull request #1363 from OneUptime/snyk-fix-2342a863e5405ba1a2449f7819d9a66b
[Snyk] Security upgrade ejs from 3.1.9 to 3.1.10
2024-04-30 22:13:18 +01:00
Simon Larsen
d783eaea9d Refactor table name in PostgresDatabase.ts, remove unused volume in app.yaml, fix typos in Domains.tsx and Index.ts, update nodemon.json files, remove greenlock dependency, and add validation for cname in StatusPageDomainService.ts 2024-04-30 21:24:04 +01:00
Simon Larsen
2e5aafe151 Update table name in PostgresDatabase.ts to use "domain" instead of "key" 2024-04-30 21:16:31 +01:00
Simon Larsen
dea938bcbb Add FetchCertificateJobs.init() to Nginx/Index.ts 2024-04-30 20:18:36 +01:00
Simon Larsen
7c16b14ab4 Update table name in PostgresDatabase.ts and remove unused volume in app.yaml 2024-04-30 19:45:43 +01:00
Simon Larsen
e22ff26dc0 Refactor error handling in StatusAPI.ts 2024-04-30 19:30:35 +01:00
Simon Larsen
75bd6ca6ed Fix DatabaseNotConnectedException code in ExceptionCode.ts and DatabaseNotConnectedException.test.ts 2024-04-30 19:24:54 +01:00
Simon Larsen
f0bdb76999 Fix typos in Domains.tsx and Index.ts 2024-04-30 19:12:03 +01:00
Simon Larsen
a9e9d14f69 Update StatusPageAPI and StatusPageDomainAPI to use AcmeChallenge model and remove Greenlock dependencies 2024-04-30 18:43:15 +01:00
Simon Larsen
21daac0400 Update nodemon.json files for Accounts, AdminDashboard, and Dashboard 2024-04-30 17:34:15 +01:00
Simon Larsen
3cdf71906b Remove greenlock dependency from package.json 2024-04-30 15:10:54 +01:00
Simon Larsen
0714161460 Add validation for cname in StatusPageDomainService.ts 2024-04-30 15:02:54 +01:00
Simon Larsen
78b7252743 Refactor GreenlockUtil challengeCreateFn and challengeRemoveFn to improve readability 2024-04-30 14:16:35 +01:00
Simon Larsen
2ba406f802 Add AcmeChallenge model, update StatusPageDomain model, and import AcmeCertificate in Model and Service files 2024-04-30 14:15:18 +01:00
Simon Larsen
48ebfc17dd Add AcmeChallenge model and update StatusPageDomain model 2024-04-30 14:08:05 +01:00
Simon Larsen
9d180a2dcb Remove unused Greenlock configuration files and import AcmeCertificate in Model and Service files 2024-04-30 13:22:06 +01:00
Simon Larsen
0f2a970ede Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-30 11:37:28 +01:00
Simon Larsen
4ab3c99fe4 Update dependencies in package.json 2024-04-30 11:37:24 +01:00
Simon Larsen
ae2e452d27 Merge pull request #1356 from sainak/sainak/fix/sert-scripts
Update nginx service name and host variable in cert helper scripts
2024-04-30 09:37:30 +01:00
snyk-bot
825d733f92 fix: Probe/package.json & Probe/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EJS-6689533
2024-04-29 21:39:29 +00:00
snyk-bot
27039bc646 fix: Scripts/package.json & Scripts/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EJS-6689533
2024-04-29 21:09:12 +00:00
snyk-bot
1bb1d80b09 fix: TestServer/package.json & TestServer/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EJS-6689533
2024-04-29 20:56:52 +00:00
snyk-bot
983f587ce4 fix: Ingestor/package.json & Ingestor/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EJS-6689533
2024-04-29 20:32:33 +00:00
Simon Larsen
e1f9325512 Fix renewOffset value in GreenlockUtil 2024-04-29 20:34:06 +01:00
snyk-bot
96c27c86ca fix: CommonServer/package.json & CommonServer/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EJS-6689533
2024-04-29 17:18:14 +00:00
Simon Larsen
a172596e46 Update GreenlockUtil to include renewOffset and renewStagger options 2024-04-29 16:59:28 +01:00
Simon Larsen
3d30e9356a Fix column handling in ModelPermission.ts 2024-04-29 16:34:00 +01:00
Simon Larsen
7c04ecec35 Fix column handling in ModelPermission.ts and update GreenlockCertificateService in Store.ts 2024-04-29 15:59:37 +01:00
Simon Larsen
80511a5f8d Fix expiration date calculation in Greenlock Manager.ts 2024-04-29 14:19:50 +01:00
Simon Larsen
6692fb00b8 Refactor BaseModel and ModelPermission classes to improve column handling 2024-04-29 14:15:11 +01:00
Simon Larsen
83e207a7de Refactor OneUptimeDate class to improve convertMinutesToDaysHoursAndMinutes method in Date.ts 2024-04-29 11:35:25 +01:00
Simon Larsen
d62aa7f5a6 Refactor Index.tsx to import PromiseVoidFunction from 'Common/Types/FunctionTypes' 2024-04-29 11:06:08 +01:00
Simon Larsen
8a130f96e2 Refactor InfoCard component to add className prop and improve readability 2024-04-29 11:05:57 +01:00
Simon Larsen
66a470ebe1 Refactor GreenlockChallenge and GreenlockCertificate models to add deletedByUser and deletedByUserId properties 2024-04-29 10:26:10 +01:00
Simon Larsen
30a59aa21e Refactor InfoCard component to improve readability and fix indentation issue 2024-04-29 10:17:10 +01:00
Simon Larsen
7a6a5c141b Refactor IncidentView component to add incidentStates state and update getTimeToAcknowledge and getTimeToResolve functions 2024-04-29 10:15:17 +01:00
Simon Larsen
c4bf458074 Refactor OneUptimeDate class to add convertMinutesToHoursAndMinutes method in Date.ts 2024-04-29 09:44:33 +01:00
Simon Larsen
ae873e296c Improve CNAME verification process and add DNS propagation reminder 2024-04-29 09:23:12 +01:00
Simon Larsen
4a973d7107 Fix indentation issue and handle CNAME verification failure in StatusPageDomainAPI.ts 2024-04-29 08:24:33 +01:00
Simon Larsen
9bbf460b97 Fix indentation issue in EnvironmentConfig.ts 2024-04-28 21:31:29 +01:00
Simon Larsen
c348a8bd05 Refactor StatusPageDomainAPI to enable custom domains and improve CNAME verification process 2024-04-28 21:20:45 +01:00
Simon Larsen
76d8f5d5ef Remove @socket.io/redis-adapter dependency 2024-04-28 21:03:29 +01:00
Simon Larsen
72ac305aad Fix multiple slashes in route and handle CNAME verification failure in StatusPageDomainAPI.ts 2024-04-28 20:55:35 +01:00
Simon Larsen
1ac05450e7 Refactor StatusPageDomainAPI to set isRoot property in StatusPageDomainAPI.ts 2024-04-28 20:46:33 +01:00
Simon Larsen
67165375ac Add isSslOrdered property to StatusPageDomain model and update orderCert method in StatusPageDomainService 2024-04-28 20:44:54 +01:00
Simon Larsen
6325e36bd0 Refactor BaseAPI/Index.ts to remove unused imports and clean up code
Refactor StatusPageDomainAPI and related components to improve CNAME verification process
Refactor StatusPageDomainService and Domains.tsx to improve CNAME verification process
Refactor API endpoints to use sendEmptySuccessResponse instead of sendEmptyResponse
Refactor SocketIO.ts to remove Redis adapter initialization
Refactor StatusPageDelete component: Add SSL auto-renewal feature and improve CNAME verification process
Refactor GreenlockUtil and StatusPageDomainService to improve CNAME validation and configuration paths
Refactor StatusPageDomainService: Add onBeforeUpdate hook to validate CNAME and update GreenlockUtil configuration paths
Refactor StatusPageDomainService: Add onBeforeUpdate hook to validate CNAME before updating
Refactor StatusPageCerts:RemoveCerts method to use statusPageDomain.fullDomain instead of domain.fullDomain
2024-04-28 20:13:32 +01:00
Simon Larsen
e6375087cd Refactor BaseAPI/Index.ts to remove unused imports and clean up code 2024-04-28 20:06:34 +01:00
Simon Larsen
737e234ec0 Refactor StatusPageDomainAPI and related components to improve CNAME verification process 2024-04-28 20:04:38 +01:00
Simon Larsen
1427d52c9f Refactor StatusPageDomainService and Domains.tsx to improve CNAME verification process 2024-04-28 20:03:00 +01:00
Simon Larsen
8377285a27 Refactor API endpoints to use sendEmptySuccessResponse instead of sendEmptyResponse 2024-04-28 19:52:57 +01:00
Simon Larsen
7414c6563d Refactor SocketIO.ts to remove Redis adapter initialization 2024-04-28 14:45:51 +01:00
Simon Larsen
0669e96a5d Refactor StatusPageDelete component: Add SSL auto-renewal feature and improve CNAME verification process 2024-04-28 14:37:52 +01:00
Simon Larsen
54a6101315 Refactor GreenlockUtil and StatusPageDomainService to improve CNAME validation and configuration paths 2024-04-28 14:26:12 +01:00
Simon Larsen
eaaef7280f Refactor StatusPageDomainService: Add onBeforeUpdate hook to validate CNAME and update GreenlockUtil configuration paths 2024-04-28 14:24:24 +01:00
Simon Larsen
b368633ff9 Refactor StatusPageDomainService: Add onBeforeUpdate hook to validate CNAME before updating 2024-04-28 14:22:41 +01:00
Simon Larsen
37b25c3a8f Refactor StatusPageCerts:RemoveCerts method to use statusPageDomain.fullDomain instead of domain.fullDomain 2024-04-28 13:48:42 +01:00
Simon Larsen
191d0154b4 Update LETSENCRYPT_NOTIFICATION_EMAIL configuration option 2024-04-28 13:18:09 +01:00
Simon Larsen
1f786699d2 Update GreenlockUtil configuration paths 2024-04-28 13:16:53 +01:00
Simon Larsen
00b5453b3f Add LETSENCRYPT_NOTIFICATION_EMAIL configuration option 2024-04-28 13:09:23 +01:00
Simon Larsen
077ca1037b Add IS_BILLING_ENABLED flag to E2E tests 2024-04-27 17:16:23 +01:00
Simon Larsen
1be827741e Update E2E Config.ts to use E2E_TEST_STATUS_PAGE_URL instead of E2E_TEST_REGISTERED_USER_PASSWORD 2024-04-27 16:55:22 +01:00
Simon Larsen
d51e818d10 Update E2E Config.ts to use E2E_TEST_STATUS_PAGE_URL instead of E2E_TEST_REGISTERED_USER_PASSWORD 2024-04-27 09:42:41 +01:00
Simon Larsen
d312c2b0cf Update E2E workflow to include failed webhook URL 2024-04-26 22:50:20 +01:00
Simon Larsen
96a09353fb Update password field in UserProfile/Password.tsx 2024-04-26 22:15:30 +01:00
Simon Larsen
fe40c5bb8d Add test results artifact upload to E2E workflow 2024-04-26 22:04:12 +01:00
Simon Larsen
7cbbce4067 Add IS_BILLING_ENABLED flag to account registration form in E2E tests 2024-04-26 21:15:01 +01:00
Simon Larsen
2870d28354 Fix restart value in e2e service of docker-compose.base.yml 2024-04-26 19:47:24 +01:00
Simon Larsen
899bc1d205 Update E2E cron job environment variables to use consistent naming convention 2024-04-26 19:19:38 +01:00
Simon Larsen
308dba7f24 Add CORS configuration to OTelCollector HTTP receiver 2024-04-26 19:12:38 +01:00
Simon Larsen
a0e565485b Update environment variables and configurations in E2E and HelmChart templates 2024-04-26 19:07:20 +01:00
Simon Larsen
35c21d7611 Update E2E workflow to include failed webhook URL 2024-04-26 18:54:23 +01:00
Simon Larsen
a0ef85b8cd Refactor test files to use consistent formatting 2024-04-26 18:46:22 +01:00
Simon Larsen
818f8cc421 Update E2E workflow to use environment variables from config.env in test.e2e.yaml 2024-04-26 18:46:10 +01:00
Simon Larsen
eaeb40ec49 Update Kubernetes metadata and environment variables in HelmChart templates 2024-04-26 18:10:26 +01:00
Simon Larsen
74273e6e9b Refactor E2E workflow to use environment variables from config.env in test.e2e.yaml 2024-04-26 18:01:15 +01:00
Aakash Singh
c092adfa3d Update nginx service name and host variable in cert helper scripts 2024-04-26 16:58:09 +00:00
Simon Larsen
9eec9042bd Refactor E2E workflow to use npm run prerun command before running docker-compose in test.e2e.yaml 2024-04-26 16:40:02 +01:00
Simon Larsen
496c2ca32c Update Kubernetes metadata in HelmChart templates 2024-04-26 15:05:30 +01:00
Simon Larsen
499ab07cd3 Update E2E cron job environment variables to use quoted values 2024-04-26 15:01:17 +01:00
Simon Larsen
c634526215 Update OpenTelemetry exporter configuration in HelmChart 2024-04-26 14:56:33 +01:00
Simon Larsen
cda9921f5d Update OpenTelemetry exporter configuration in HelmChart 2024-04-26 14:54:10 +01:00
Simon Larsen
d3ca5a97ea Update OpenTelemetry exporter configuration in HelmChart 2024-04-26 14:53:25 +01:00
Simon Larsen
f22ae5844d Refactor E2E workflow to use status-check.sh script for server availability check 2024-04-26 14:45:01 +01:00
Simon Larsen
a71190493a Refactor code to remove unused imports and routes 2024-04-26 14:30:17 +01:00
Simon Larsen
caf3377cee Refactor E2E workflow to use parentheses for command grouping in docker-compose run step 2024-04-26 13:36:52 +01:00
Simon Larsen
f0e4d6bf71 Update E2E workflow to use --abort-on-container-exit flag in docker-compose command 2024-04-26 13:36:40 +01:00
Simon Larsen
f34e4a23d6 Update E2E workflow to use docker-compose for running E2E tests 2024-04-26 13:35:25 +01:00
Simon Larsen
e03ecb0e0d Update E2E package.json scripts order 2024-04-26 12:59:05 +01:00
Simon Larsen
0a8574678c Update E2E workflow to wait for 60 minutes for server to be up 2024-04-26 10:54:55 +01:00
Simon Larsen
0fdf63ce0c Add npm install command for Common directory in E2E workflow 2024-04-25 22:56:26 +01:00
Simon Larsen
d1586f75da Add data test IDs to BasicForm fields 2024-04-25 22:05:10 +01:00
Simon Larsen
f47b53c5b9 Fix formatting issues in code blocks 2024-04-25 22:03:12 +01:00
Simon Larsen
7523c3ad4c Merge pull request #1354 from UnkAtreus/fix/table-header-button-state-not-re-render
fix: setting header buttons in BaseModelTable
2024-04-25 21:54:54 +01:00
Simon Larsen
11d580a373 Add E2E test environment variables and update E2E tests 2024-04-25 21:53:51 +01:00
Simon Larsen
9a78c4c24d Refactor Docker Compose file to use common variables 2024-04-25 19:22:02 +01:00
Simon Larsen
ec936b43e2 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-25 19:15:16 +01:00
Simon Larsen
3bc2e639d9 Add Jest and Babel ESLint parser to devDependencies 2024-04-25 19:15:14 +01:00
Simon Larsen
fa672be557 Merge pull request #1355 from OneUptime/snyk-upgrade-50073c5b5ba8c99a5ba48e8562e31e3c
[Snyk] Upgrade reactflow from 11.10.4 to 11.11.0
2024-04-25 18:55:05 +01:00
Simon Larsen
695f16ca1e Add _id field to Acknowledge Incident and Resolve Incident elements 2024-04-25 18:50:13 +01:00
snyk-bot
003b638170 fix: upgrade reactflow from 11.10.4 to 11.11.0
Snyk has created this PR to upgrade reactflow from 11.10.4 to 11.11.0.

See this package in npm:
https://www.npmjs.com/package/reactflow

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/8ca4ee75-8bc5-43a1-a3bc-244ceebf1437?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-25 17:35:16 +00:00
Simon Larsen
1cf208387f Add server readiness check before running E2E tests 2024-04-25 18:34:13 +01:00
UnkAtreus
625cb49939 fix: setting header buttons in BaseModelTable 2024-04-25 23:41:57 +07:00
Simon Larsen
7d44eb1a33 Update preinstall script in E2E package.json to include install-deps command 2024-04-25 16:20:30 +01:00
Simon Larsen
ab42ca1ef9 Add test-e2e job to GitHub Actions workflow 2024-04-25 15:30:08 +01:00
Simon Larsen
910aa113b5 Add npm install step for Common directory 2024-04-25 15:22:52 +01:00
Simon Larsen
1516f81180 Refactor E2E configuration and Docker Compose file 2024-04-25 15:07:33 +01:00
Simon Larsen
b9f86d029a Update Dockerfile.tpl to use non-Alpine Node.js image for Playwright compatibility 2024-04-25 15:04:05 +01:00
Simon Larsen
ecfc47ee59 Update dependencies and test directory in E2E package files 2024-04-25 13:50:33 +01:00
Simon Larsen
5d9a11fb48 Refactor E2E tests and Docker configuration 2024-04-25 12:58:39 +01:00
Simon Larsen
894d15918b Fix BASE_URL construction in Config.ts and SignUp.test.ts 2024-04-25 12:45:08 +01:00
Simon Larsen
73e6a20503 Refactor e2e-cron.yml to include common environment variables and change restart policy 2024-04-25 12:33:58 +01:00
Simon Larsen
ef0dc5305a Update test.e2e.yaml to free up disk space in GitHub Actions runner 2024-04-25 12:32:22 +01:00
Simon Larsen
73dc057c99 Update test.e2e.yaml and Config.ts files 2024-04-25 12:31:38 +01:00
Simon Larsen
092564434f Refactor Dockerfile.tpl to remove duplicate CMD instruction 2024-04-25 12:27:36 +01:00
Simon Larsen
7623fe7df4 Add Docker build step for E2E tests 2024-04-25 12:08:58 +01:00
Simon Larsen
da03636bd0 Add Docker build step for E2E tests 2024-04-25 12:01:49 +01:00
Simon Larsen
21b119d8a0 Refactor import statements in E2E test files to use Config instead of Utils/BaseURL 2024-04-25 12:01:13 +01:00
Simon Larsen
4ee62fcca4 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-25 11:53:43 +01:00
Simon Larsen
8acfb0f798 add e2e tests 2024-04-25 11:53:11 +01:00
Simon Larsen
6e2d343264 Update package-lock.json and package.json with latest dependencies 2024-04-25 11:51:26 +01:00
Simon Larsen
3dd03cda46 Refactor and remove unused test files in E2E/Tests/Home directory 2024-04-25 11:46:22 +01:00
Simon Larsen
87c8993141 Merge pull request #1350 from OneUptime/snyk-upgrade-83479794e36d11372eff5b3bc5f5d6ec
[Snyk] Upgrade css-loader from 6.10.0 to 6.11.0
2024-04-25 09:01:07 +01:00
Simon Larsen
323601db3a Merge pull request #1352 from OneUptime/snyk-fix-eecb134aa680c310c30f2dd5bd870f70
[Snyk] Security upgrade nginx from 1.25.4-alpine to 1.25.5-alpine
2024-04-25 09:00:57 +01:00
snyk-bot
1ac7d4920f fix: Nginx/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-ALPINE318-OPENSSL-6593964
- https://snyk.io/vuln/SNYK-ALPINE318-OPENSSL-6593964
2024-04-25 03:39:23 +00:00
snyk-bot
617a436eb5 fix: upgrade css-loader from 6.10.0 to 6.11.0
Snyk has created this PR to upgrade css-loader from 6.10.0 to 6.11.0.

See this package in npm:
https://www.npmjs.com/package/css-loader

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/40b17bc5-1bd4-48b1-88f1-5b4dc1400e80?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-24 20:10:37 +00:00
Simon Larsen
7e6af77d70 Refactor Schedule component to include run method in WebhookTrigger 2024-04-24 19:33:38 +01:00
Simon Larsen
59a6771e73 Refactor initialization code and add WorkflowFeatureSet to App/Index.ts 2024-04-24 19:17:38 +01:00
Simon Larsen
b88320bcbb Refactor cleanup cron jobs in HelmChart/Public/oneuptime/templates/cron-job.yaml and values.yaml 2024-04-24 18:50:13 +01:00
Simon Larsen
06bafdfce6 Refactor cleanup cron jobs in HelmChart/Public/oneuptime/templates/cron-job.yaml and HelmChart/Public/oneuptime/values.yaml 2024-04-24 18:44:00 +01:00
Simon Larsen
441aef4823 Refactor initialization code in Nginx/Index.ts 2024-04-24 18:31:16 +01:00
Simon Larsen
0f86812258 Add new configurations for 'ingestor' in HelmChart/Public/oneuptime/values.yaml and Nginx/Index.ts 2024-04-24 18:26:13 +01:00
Simon Larsen
f601e93101 Refactor status API to return JSON object with status 'ok' 2024-04-24 18:00:35 +01:00
Simon Larsen
bf8d4757b1 Refactor logging statements in StatementGenerator.test.ts 2024-04-24 17:54:54 +01:00
Simon Larsen
4b69717687 Refactor initialization code and add PromiseVoidFunction type to addDefaultRoutes in StartServer.ts 2024-04-24 17:46:02 +01:00
Simon Larsen
0647f7d22a Refactor initialization code and add default routes in multiple files 2024-04-24 17:44:29 +01:00
Simon Larsen
ae6852d5eb Refactor connection check methods for Redis, Postgres, and Clickhouse 2024-04-24 17:05:50 +01:00
Simon Larsen
d4902784c2 Refactor Redis, Postgres, and Clickhouse connection check methods 2024-04-24 14:55:48 +01:00
Simon Larsen
e2644586b6 Refactor connection check methods for Redis, Postgres, and Clickhouse 2024-04-24 14:30:29 +01:00
Simon Larsen
cc80f6fa54 Refactor initialization code in multiple files 2024-04-24 14:02:17 +01:00
Simon Larsen
32c78f24e9 Refactor Redis, Postgres, and Clickhouse connection check methods 2024-04-24 13:03:07 +01:00
Simon Larsen
8b0f23e18f Refactor Express routing in Notification and Identity FeatureSets 2024-04-24 12:20:04 +01:00
Simon Larsen
b76d16262c Update logging statements in StatementGenerator.ts 2024-04-24 12:04:03 +01:00
Simon Larsen
4c60f080f0 Add cron job to delete completed pods 2024-04-24 11:34:01 +01:00
Simon Larsen
5f40c393b1 Update cron job schedule to run every 5 minutes 2024-04-24 10:18:43 +01:00
Simon Larsen
7b22d293f2 add cron job to clean up crash loop backoff states 2024-04-24 10:18:17 +01:00
Simon Larsen
7f6c247652 Update dependencies versions in HelmChart 2024-04-24 10:02:29 +01:00
Simon Larsen
267950bb54 Refactor Tab component to include countBadge and tabType properties 2024-04-23 20:56:16 +01:00
Simon Larsen
d4b6bf6ca0 Merge pull request #1349 from OneUptime/nginx-crash-prevention
Refactor Tab component to include countBadge and tabType properties
2024-04-23 20:46:35 +01:00
Simon Larsen
9d0c110a74 Update dependencies versions in HelmChart 2024-04-23 20:38:08 +01:00
Simon Larsen
9d3c4df5e7 Update Greenlock packageRoot path in app.yaml 2024-04-23 16:41:36 +01:00
Simon Larsen
ca89818cc1 Update Greenlock packageRoot path in StatusPageCerts.ts and app.yaml 2024-04-23 16:39:43 +01:00
Simon Larsen
6b2caebd0d Refactor Tab component to include countBadge and tabType properties 2024-04-23 15:34:37 +01:00
Simon Larsen
f716ece35f Refactor Tab component to include countBadge and tabType properties 2024-04-23 14:03:37 +01:00
Simon Larsen
6dcc72e708 Refactor getEvents function in SpanViewer.tsx to separate events and exceptions 2024-04-23 13:44:46 +01:00
Simon Larsen
47a718ad2a Refactor SpanViewer component to display exceptions and events separately 2024-04-23 13:39:37 +01:00
Simon Larsen
e4e3d5d362 Update component types and import statements in Accordion.tsx and SpanViewer.tsx 2024-04-23 13:34:24 +01:00
Simon Larsen
73b4987b32 Update dependencies versions in HelmChart 2024-04-23 12:02:42 +01:00
Simon Larsen
7574d3921a Refactor logging implementation and remove console log statements 2024-04-23 10:22:58 +01:00
Simon Larsen
c6b47c3a1b Refactor import statements and update component types in Accordion.tsx and SpanViewer.tsx 2024-04-22 22:05:35 +01:00
Simon Larsen
a5fec2560a Refactor import statements and update component types in multiple files 2024-04-22 20:41:36 +01:00
Simon Larsen
b139d667d2 Refactor SpanUtil class and JSONFunctions class 2024-04-22 20:19:35 +01:00
Simon Larsen
906a42c218 Update TableColumnType enum to include JSONArray type 2024-04-22 19:02:03 +01:00
Simon Larsen
529b22c97c Refactor import statements and update component types in JSONFunctions.ts 2024-04-22 13:39:46 +01:00
Simon Larsen
89f3508ce0 Refactor import statements and update component types in Detail.tsx, CodeEditor.tsx, and JSONFunctions.ts 2024-04-22 13:35:58 +01:00
Simon Larsen
a9cc7f41ba Refactor import statements and update component types in Tabs.tsx, SpanViewer.tsx, HiddenText.test.tsx, Tabs.test.tsx, and Detail.tsx 2024-04-22 12:09:21 +01:00
Simon Larsen
cc517d36dc Refactor import statements and update component types in SpanViewer.tsx 2024-04-22 11:07:23 +01:00
Simon Larsen
8363279050 Refactor import statements and update component types in SpanViewer.tsx and TeamView.tsx 2024-04-22 11:05:54 +01:00
Simon Larsen
7c0f9c307a Refactor import statements and update component types in TeamView.tsx 2024-04-22 11:00:15 +01:00
Simon Larsen
3a7c9f7fab Refactor import statements and update component types in multiple files 2024-04-22 10:47:40 +01:00
Simon Larsen
ba993ba09a Refactor import statements and update component types in multiple files 2024-04-22 10:14:53 +01:00
Simon Larsen
fca1f80243 Refactor import statements and update component types in multiple files 2024-04-22 10:04:28 +01:00
Simon Larsen
96926ffa63 Refactor import statements and update component types in multiple files 2024-04-22 09:24:58 +01:00
Simon Larsen
48b850d350 Refactor field types and import statements in multiple components 2024-04-21 21:14:22 +01:00
Simon Larsen
ab6a01e59b Refactor field types and import statements in multiple components 2024-04-21 18:50:34 +01:00
Simon Larsen
cd5eb62f61 Refactor field types and import statements in multiple components 2024-04-21 18:44:40 +01:00
Simon Larsen
d04aa43b6d Refactor component types and import statements in multiple files 2024-04-21 18:37:15 +01:00
Simon Larsen
308fe269fc Refactor component types and import statements in multiple files 2024-04-21 18:17:36 +01:00
Simon Larsen
0f92e37712 Refactor field types, import statements, and column types in multiple components 2024-04-21 18:08:31 +01:00
Simon Larsen
7f41cebdf7 Refactor field types in multiple components to use specific model types 2024-04-21 18:06:21 +01:00
Simon Larsen
351734d661 Refactor labels handling in multiple components 2024-04-21 17:59:35 +01:00
Simon Larsen
961de94f81 Refactor import statements in Email and Probes settings pages 2024-04-21 17:47:18 +01:00
Simon Larsen
2a89d57560 Refactor Filter interface to include Array<DropdownValue> in FilterData 2024-04-21 17:44:41 +01:00
Simon Larsen
039e0b17a4 Refactor Filter interface to use keyof T for key variable 2024-04-21 17:37:02 +01:00
Simon Larsen
77802eec58 Refactor key variable in Field interface to use keyof T | null 2024-04-21 17:16:00 +01:00
Simon Larsen
5db4cc8d21 Refactor column types and field types to use generic objects 2024-04-21 16:59:05 +01:00
Simon Larsen
f44260ee41 Refactor column types and field types to use generic objects 2024-04-21 09:42:41 +01:00
Simon Larsen
895bacfc11 Refactor ModelDetail component to use keyof TBaseModel for key variable 2024-04-20 20:44:28 +01:00
Simon Larsen
de6363574c Refactor model table column types and field types to use generic objects 2024-04-20 19:33:25 +01:00
Simon Larsen
2a07d62146 Refactor model table column types and field types to use generic objects 2024-04-20 19:16:03 +01:00
Simon Larsen
3138415bd0 Refactor SpanViewer component to import TelemetryServiceElement and use it for fieldType.Element 2024-04-20 18:01:57 +01:00
Simon Larsen
527ba63c94 Refactor Tabs component to improve UI and fix styling issues 2024-04-20 17:29:16 +01:00
Simon Larsen
6910648daf Update Nginx Helm chart to include a new volume for /var/run and /var/cache/nginx 2024-04-20 16:59:40 +01:00
Simon Larsen
9fb68afe79 Update Nginx Helm chart to include a new volume for /var/run 2024-04-20 16:54:50 +01:00
Simon Larsen
350f808b44 Update SideOver component to use "Close" instead of "Cancel" for the close button title 2024-04-19 18:16:55 +01:00
Simon Larsen
6438953c91 update values for nginx 2024-04-19 18:11:58 +01:00
Simon Larsen
7f98e469cc Update Nginx and Docker ports to use custom ports 7849 and 7850 2024-04-19 18:11:48 +01:00
Simon Larsen
d49ba093f0 tabs test update 2024-04-19 17:59:50 +01:00
Simon Larsen
1ebcbeeba2 Refactor Tabs component to remove unused code and improve readability 2024-04-19 17:51:25 +01:00
Simon Larsen
c4eb6cd44a Refactor SpanViewer component to simplify conditional rendering of span 2024-04-19 16:43:19 +01:00
Simon Larsen
48a58951e8 Update SideOver component to use "Close" instead of "Cancel" for the close button title 2024-04-19 16:40:13 +01:00
Simon Larsen
414f8c7208 Update SideOver component to use "Close" instead of "Cancel" for the close button title 2024-04-19 16:22:12 +01:00
Simon Larsen
cb1d640c56 Update import paths for DashboardLogsViewer in Index.tsx and View/Index.tsx 2024-04-19 15:45:54 +01:00
Simon Larsen
8a271608e8 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-19 14:23:48 +01:00
Simon Larsen
dd3627dca8 Refactor GanttChart components to support multi-select feature 2024-04-19 14:23:45 +01:00
Simon Larsen
fe6c917862 Merge pull request #1347 from OneUptime/snyk-upgrade-f72cdda21b6b90f7a0a31bdba3eab5ed
[Snyk] Upgrade reflect-metadata from 0.2.1 to 0.2.2
2024-04-19 13:27:21 +01:00
Simon Larsen
0dfa3f912e Refactor TraceView component to improve readability and add missing font styles 2024-04-19 13:26:29 +01:00
Simon Larsen
d8bfab3ae0 Update BarLabel component to use label prop instead of title prop in Bar component 2024-04-19 12:32:59 +01:00
Simon Larsen
d7a9adf791 Update BrandColors imports to use Green instead of Green500 2024-04-19 11:56:24 +01:00
Simon Larsen
fb070b9448 Update BrandColors imports to use Green instead of Green500 2024-04-19 11:53:28 +01:00
Simon Larsen
add313980c Update SendMessageToChannel.ts to include msteams width in AdaptiveCard 2024-04-19 10:14:34 +01:00
snyk-bot
29a909d547 fix: upgrade reflect-metadata from 0.2.1 to 0.2.2
Snyk has created this PR to upgrade reflect-metadata from 0.2.1 to 0.2.2.

See this package in npm:
https://www.npmjs.com/package/reflect-metadata

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-19 02:31:24 +00:00
Simon Larsen
13b10ca874 Merge pull request #1346 from OneUptime/helm-dep-update
Helm dep update
2024-04-18 23:01:42 +01:00
Simon Larsen
d0738ad64d Update Helm dependencies and versions 2024-04-18 23:00:56 +01:00
Simon Larsen
a21b9ca555 Update Helm dependencies and versions 2024-04-18 22:55:21 +01:00
Simon Larsen
f0e2910bd5 update helm dep 2024-04-18 22:06:09 +01:00
Simon Larsen
8f84027813 Refactor HelmChart templates to fix volume mount paths in haraka.yaml and nginx.yaml 2024-04-18 20:38:29 +01:00
Simon Larsen
970b6fbb92 Merge pull request #1345 from OneUptime/error-spans
Error spans
2024-04-18 13:34:41 +01:00
Simon Larsen
c8db6f237f Refactor GanttChartRow component to improve readability and add padding to child rows 2024-04-18 13:34:25 +01:00
Simon Larsen
01477fd102 Merge branch 'master' into error-spans 2024-04-18 12:58:21 +01:00
Simon Larsen
0bd173dd93 Add basic ops query to check size of tables in Clickhouse 2024-04-18 12:04:48 +01:00
Simon Larsen
87b7bbad16 Refactor HelmChart templates to use emptyDir volumes for haraka.yaml 2024-04-18 11:04:38 +01:00
Simon Larsen
2524684b1f Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-18 11:01:35 +01:00
Simon Larsen
6cc00a1e5b Refactor HelmChart templates to use emptyDir volumes instead of persistentVolumeClaim 2024-04-18 11:00:21 +01:00
Simon Larsen
c2285848cd add enable to haraka 2024-04-18 10:43:31 +01:00
Simon Larsen
506a89aeb3 Merge pull request #1344 from OneUptime/snyk-upgrade-6271cd99ae391fe1209a66241b751143
[Snyk] Upgrade @types/lodash from 4.14.202 to 4.17.0
2024-04-17 13:04:03 +01:00
snyk-bot
7c0221e6b8 fix: upgrade @types/lodash from 4.14.202 to 4.17.0
Snyk has created this PR to upgrade @types/lodash from 4.14.202 to 4.17.0.

See this package in npm:
https://www.npmjs.com/package/@types/lodash

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/c3622982-05c8-495c-809c-20f301c75f92?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-17 00:48:15 +00:00
Simon Larsen
e9d8c5b2bc Refactor GanttChart components and update import paths for Row and GanttChartRow 2024-04-16 22:14:55 +01:00
Simon Larsen
8e5fc32f4d Refactor GanttChart components and update row level in Row component 2024-04-16 20:54:56 +01:00
Simon Larsen
2eaeec326f Refactor GanttChart components and update title and description types to support React elements 2024-04-16 20:22:47 +01:00
Simon Larsen
c5823308af Refactor GanttChart components and fix line wrapping issue in TraceView component 2024-04-16 20:04:23 +01:00
Simon Larsen
f0e255eb24 Refactor GanttChart components and fix line wrapping issue in SendMessageToChannel.ts 2024-04-16 15:29:08 +01:00
Simon Larsen
bccd2fd5d2 Refactor GanttChart components and fix line wrapping issue in SendMessageToChannel.ts 2024-04-16 15:27:01 +01:00
Simon Larsen
534c798028 Merge branch 'master' into error-spans 2024-04-16 13:31:57 +01:00
Simon Larsen
2a48b585a4 Refactor color variables in BrandColors.test.ts to use updated hex codes 2024-04-16 13:29:41 +01:00
Simon Larsen
8de699cb94 Refactor unique span filtering logic in TraceView component 2024-04-16 13:27:26 +01:00
Simon Larsen
03ffeba683 Merge branch 'master' into error-spans 2024-04-16 13:14:29 +01:00
Simon Larsen
153d55b774 Refactor field types and filters in Telemetry/Services/View/Traces/View/Index.tsx component 2024-04-16 13:14:26 +01:00
Simon Larsen
1b95dfa5ed Fix line wrapping issue in SendMessageToChannel.ts 2024-04-16 13:12:05 +01:00
Simon Larsen
d9451af991 Fix line wrapping issue in SendMessageToChannel.ts 2024-04-16 13:08:26 +01:00
Simon Larsen
da375dce63 Refactor BaseModelTable and TelemetryServiceElement components 2024-04-16 13:04:48 +01:00
Simon Larsen
d12e2f7622 Refactor spanId variable name in TraceView component 2024-04-16 12:38:35 +01:00
Simon Larsen
d0e9120559 Refactor TracesList component in Index.tsx to remove unused imports and update span status colors 2024-04-16 12:19:02 +01:00
Simon Larsen
d35ae2f075 Refactor BrandColors.test.ts and ProjectService.ts to use the new color variables 2024-04-16 12:03:04 +01:00
Simon Larsen
92076dad8b Refactor class names and variables for Gray to Gray500 2024-04-16 11:56:51 +01:00
Simon Larsen
a1ded23b46 Refactor field types and filters in BrandColors.ts and LineChart.tsx components 2024-04-16 11:56:22 +01:00
Simon Larsen
4d618e6d93 Fix casing of "Gray" in class names and variables 2024-04-16 11:54:57 +01:00
Simon Larsen
d3e461e0bd Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-16 11:30:20 +01:00
Simon Larsen
7a94f4fcbc Add TelemetryServiceColor migration to DataMigrations 2024-04-16 11:30:08 +01:00
Simon Larsen
2758b5273b Add TelemetryServiceColor migration to DataMigrations 2024-04-16 11:28:18 +01:00
Simon Larsen
79d18ab920 Refactor field types and filters in BrandColors.ts and LineChart.tsx components 2024-04-16 11:27:09 +01:00
Simon Larsen
13dd7c2db5 Merge pull request #1342 from OneUptime/snyk-upgrade-52e97e539fcfb5c5cd429cca08838406
[Snyk] Upgrade posthog-js from 1.111.0 to 1.116.6
2024-04-15 19:58:27 +01:00
snyk-bot
2486cd93c0 fix: upgrade posthog-js from 1.111.0 to 1.116.6
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.116.6.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-15 18:53:20 +00:00
Simon Larsen
980c82ce31 Merge pull request #1339 from OneUptime/snyk-upgrade-e8ac578e50c1c3aa78c497fb48d0d3b1
[Snyk] Upgrade posthog-js from 1.111.0 to 1.116.5
2024-04-15 13:17:39 +01:00
Simon Larsen
1f6a4dbf40 Merge pull request #1340 from OneUptime/snyk-upgrade-3db1fd0a1346faee5053fb7c52f22d07
[Snyk] Upgrade @babel/runtime from 7.24.0 to 7.24.1
2024-04-15 12:40:07 +01:00
Simon Larsen
b14f518461 Merge pull request #1341 from OneUptime/snyk-fix-df93c133d994b2d52436acb86973db95
[Snyk] Security upgrade OpenTelemetry.Instrumentation.AspNetCore from 1.5.1-beta.1 to 1.8.1
2024-04-15 11:56:17 +01:00
snyk-bot
70d243aa7b fix: Examples/otel-dotnet/otel-dotnet.csproj to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-DOTNET-OPENTELEMETRYINSTRUMENTATIONASPNETCORE-6613064
2024-04-14 23:00:18 +00:00
Simon Larsen
3f3996b155 Refactor variable name in BrandColors.test.ts for consistency 2024-04-14 19:30:22 +01:00
snyk-bot
5b3915fc65 fix: upgrade @babel/runtime from 7.24.0 to 7.24.1
Snyk has created this PR to upgrade @babel/runtime from 7.24.0 to 7.24.1.

See this package in npm:
https://www.npmjs.com/package/@babel/runtime

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-14 17:11:21 +00:00
snyk-bot
53d33eb0fb fix: upgrade posthog-js from 1.111.0 to 1.116.5
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.116.5.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-14 17:11:17 +00:00
Simon Larsen
c2722cb66a Refactor field types and filters in BrandColors.ts and Index.tsx components 2024-04-14 12:31:44 +01:00
Simon Larsen
2ccc7a8061 Refactor field types and filters in ExecutionLogsTable, ExecutionLogsTimelineTable, and Escalation components 2024-04-12 12:13:48 +01:00
Simon Larsen
97244b5c2c Refactor field types and filters in various components 2024-04-12 12:05:39 +01:00
Simon Larsen
90a0988e06 Refactor field types and filters in Invoices.tsx component 2024-04-12 11:59:41 +01:00
Simon Larsen
a3778b8ce6 Refactor field types and filters in various components 2024-04-12 11:56:37 +01:00
Simon Larsen
79bac7fd3f Refactor filter handling and permissions in List, ListBody, and BaseModelTable components 2024-04-12 11:29:28 +01:00
Simon Larsen
112863a52b Refactor field types and filters in various components 2024-04-12 09:48:26 +01:00
Simon Larsen
c1150c06e0 Refactor field types in WorkflowStatus, Variable, IncidentState, MonitorStatus, IncidentSeverity, and ScheduledMaintenanceState components 2024-04-11 21:58:45 +01:00
Simon Larsen
fcfb3f7e50 Refactor FilterComponent to handle additional field types in Filter.tsx 2024-04-11 21:41:55 +01:00
Simon Larsen
7c6c5ccac1 Refactor filter dropdown options in Domains.tsx and SMSSubscribers.tsx components 2024-04-11 21:39:06 +01:00
Simon Larsen
03ad9bf349 Refactor date fields to use FieldType.Date instead of FieldType.DateTime 2024-04-11 21:33:18 +01:00
Simon Larsen
f95ab83ae2 Refactor filter handling and permissions in List, ListBody, and BaseModelTable components 2024-04-11 21:05:49 +01:00
Simon Larsen
a25951f330 Refactor filter handling and permissions in Labels, Variable, Services, MonitorProbes, Users, MonitorTable, APIKeys, Domains, Variable, Call, Teams, SSO, Owners, and ModelTable components 2024-04-11 20:35:38 +01:00
Simon Larsen
5b0f450802 Merge branch 'master' into error-spans 2024-04-11 17:29:04 +01:00
Simon Larsen
be2b32822b Update Kubernetes configurations for OneUptime chart 2024-04-11 17:07:37 +01:00
Simon Larsen
6ebc601121 Update port configurations in HelmChart/Public/oneuptime/values.yaml and templates 2024-04-11 17:04:24 +01:00
Simon Larsen
14d049bd0f Refactor ShowTableAs to ShowAs in MonitorStatus, IncidentState, IncidentSeverity, ScheduledMaintenanceState, PublicNote, and Escalation components 2024-04-11 16:56:36 +01:00
Simon Larsen
47b5f44796 Refactor filter handling and permissions in Labels, Variable, Services, MonitorProbes, Users, MonitorTable, APIKeys, Domains, Variable, Call, Teams, and SSO components 2024-04-11 16:27:57 +01:00
Simon Larsen
ec8bb3d67b Refactor MonitorTypeHelper to include doesMonitorTypeHaveDocumentation and doesMonitorTypeHaveInterval methods 2024-04-11 15:19:10 +01:00
Simon Larsen
71abac2c3f Refactor MonitorTypeHelper to include isProbableMonitors method 2024-04-11 15:05:06 +01:00
Simon Larsen
21a227d67a Refactor filter handling and permissions in Owners components 2024-04-11 13:23:59 +01:00
Simon Larsen
df0783e4d4 Refactor filter handling and permissions in ModelTable components 2024-04-11 13:04:58 +01:00
Simon Larsen
a9a14b1253 Add filters to IncidentSeverity, PrivateUser, SMSSubscribers, and Announcements components 2024-04-11 11:42:42 +01:00
Simon Larsen
dc13aacb13 Refactor filter handling and permissions in WebhookSubscribers, IncidentState, StateTimeline, and MonitorOwners components 2024-04-11 11:30:05 +01:00
Simon Larsen
7f7d4c7388 Refactor filter handling and permissions in Projects, Probes, and Users components 2024-04-11 10:54:24 +01:00
Simon Larsen
f6642d5582 Refactor filter handling and permissions in EmailLog and IncidentNoteTemplates components 2024-04-10 21:31:12 +01:00
Simon Larsen
e85f216b9e Refactor filter handling and permissions in MonitorGroupResources, IncidentDelete, and MonitorProbes components 2024-04-10 21:27:59 +01:00
Simon Larsen
04289df987 Refactor filter handling and permissions in NewIncidents, ProjectInvitations, Domains, and Billing components 2024-04-10 21:19:28 +01:00
Simon Larsen
5e0bb766d6 Refactor filter handling and permissions in Owners, Labels, and TeamView components 2024-04-10 20:34:19 +01:00
Simon Larsen
e23c979911 Refactor filter handling and permissions in BaseModelTable component 2024-04-10 20:30:44 +01:00
Simon Larsen
cf43a3fb4e Refactor filter handling and permissions in BaseModelTable component 2024-04-10 20:12:44 +01:00
Simon Larsen
5d809015ee Refactor filter handling and permissions in BaseModelTable component 2024-04-10 18:30:32 +01:00
Simon Larsen
6b30e9aa2f Refactor BaseModelTable component to improve filter handling and permissions 2024-04-10 17:33:26 +01:00
Simon Larsen
29c4a43968 Refactor Table and ModelTable components to remove unused imports and properties 2024-04-10 17:20:46 +01:00
Simon Larsen
3a29d7b703 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-10 13:23:59 +01:00
Simon Larsen
a4cbe21683 Refactor BaseAPI/Index.ts to remove unnecessary console.log and error handling 2024-04-10 13:23:40 +01:00
Simon Larsen
113a42b17f Update port configurations in HelmChart/Public/oneuptime/values.yaml and templates 2024-04-10 13:19:10 +01:00
Simon Larsen
4682467bde Update port configurations in HelmChart/Public/oneuptime/values.yaml and templates 2024-04-10 13:12:43 +01:00
Simon Larsen
f7c2415b63 Refactor BaseAPI/Index.ts to remove unnecessary console.log and error handling 2024-04-10 12:22:25 +01:00
Simon Larsen
c243409a0e Merge pull request #1337 from OneUptime/error-spans
Error spans
2024-04-10 12:22:07 +01:00
Simon Larsen
b89760ab1a Refactor BaseAPI/Index.ts to remove unnecessary console.log and error handling 2024-04-10 12:20:05 +01:00
Simon Larsen
3acb419667 Add support for Port2 in otel-collector deployment and service 2024-04-10 12:19:21 +01:00
Simon Larsen
12a98bcb5f Add error handling for API endpoint in BaseAPI/Index.ts and OTelIngest.ts 2024-04-10 10:16:11 +01:00
Simon Larsen
bca41d7dbc Merge pull request #1336 from snikch/patch-1
Fix typo
2024-04-09 22:36:17 +01:00
Mal Curtis
1875d97d6f Fix typo 2024-04-10 09:16:24 +12:00
Simon Larsen
b49336a224 Update Span class to include SpanStatus enum and use it in OTelIngest.ts 2024-04-09 19:34:55 +01:00
Simon Larsen
95ac77ac4e Merge pull request #1335 from OneUptime/error-spans
Error spans
2024-04-09 19:25:15 +01:00
Simon Larsen
6ef91fd1b7 Add OpenTelemetry error handling in StartServer.ts 2024-04-09 19:24:51 +01:00
Simon Larsen
e0bcfd31bf Add OpenTelemetry error handling in StartServer.ts 2024-04-09 15:11:15 +01:00
Simon Larsen
4b5cc40542 Update Dockerfile.tpl to include package.json in CommonUI directory 2024-04-09 13:22:17 +01:00
Simon Larsen
44db5b57e5 Update Dockerfile.tpl files to include package.json in CommonUI directory 2024-04-09 13:21:12 +01:00
Simon Larsen
382c71be93 Update Dockerfile.tpl files to set APP_VERSION to 1.0.0 if not set 2024-04-09 13:03:32 +01:00
Simon Larsen
445a8d3f35 Update Dockerfile.tpl files to set APP_VERSION to 1.0.0 if not set 2024-04-09 12:53:42 +01:00
Simon Larsen
356bacf9a0 Update Dockerfile.tpl files to set APP_VERSION to 2.0.0 if not set 2024-04-09 12:53:13 +01:00
Simon Larsen
5a84cc1b1d Merge pull request #1334 from OneUptime/snyk-upgrade-59d0168c2bceaebf8d1a11c3be25cb6b
[Snyk] Upgrade posthog-js from 1.111.0 to 1.116.2
2024-04-09 12:39:55 +01:00
Simon Larsen
2e7ea183e6 Add InfrastructureAgent files to .gitignore and update daemon management logic in Index.ts 2024-04-09 12:38:56 +01:00
Simon Larsen
f8eaeb52a1 Add IsBillingEnabled check in UserService.ts 2024-04-09 09:19:37 +01:00
snyk-bot
b23aac7b21 fix: upgrade posthog-js from 1.111.0 to 1.116.2
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.116.2.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-08 22:49:22 +00:00
Simon Larsen
1ca9ecede1 Refactor daemon management logic in InfrastructureAgent/Index.ts 2024-04-08 21:26:37 +01:00
Simon Larsen
39d7b76e23 Refactor InfrastructureAgent/Index.ts and update daemon management logic 2024-04-08 20:09:20 +01:00
Simon Larsen
bcefa8ae3a Refactor MonitorInfrastructure class and extract monitorServerMetrics method 2024-04-08 14:50:37 +01:00
Simon Larsen
3c022e30ea Refactor MonitorInfrastructure class and extract monitorServerMetrics method 2024-04-08 14:06:54 +01:00
Simon Larsen
1401daab06 Update tsconfig.json files with resolveJsonModule option 2024-04-08 14:03:07 +01:00
Simon Larsen
11fd2d3c65 Add OneUptime isolatedVM Service and autoscaler 2024-04-07 10:40:00 +01:00
Simon Larsen
210420d180 Update axios version in package.json and package-lock.json 2024-04-06 21:25:10 +01:00
Simon Larsen
d8f9e64aa4 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-06 21:10:59 +01:00
Simon Larsen
f57596391d Refactor JSONFunctions and JavaScriptCode classes 2024-04-06 21:10:29 +01:00
Simon Larsen
8282669fbd Fix async/await issue in VM.ts 2024-04-06 20:49:23 +01:00
Simon Larsen
f38d8ae452 Fix async bug in VM.ts 2024-04-06 20:48:17 +01:00
Simon Larsen
7726bad4e2 Fix code formatting and remove unnecessary lines 2024-04-06 17:38:15 +01:00
Simon Larsen
a50510819b Add Isolated VM debugging configuration and handle exceptions in code execution 2024-04-06 16:34:42 +01:00
Simon Larsen
27e9ee9721 Remove vm2 dependency and add ISOLATED_VM_PORT variable 2024-04-06 15:56:04 +01:00
Simon Larsen
d43765645e Update isolated-vm server port in Nginx configuration 2024-04-06 15:53:38 +01:00
Simon Larsen
0c73bd8292 Add logging statements to VM.ts 2024-04-06 15:48:03 +01:00
Simon Larsen
ad1c6152a0 Fix import statements and update VMUtil usage 2024-04-06 15:04:12 +01:00
Simon Larsen
9b8b1a87fe Refactor VMUtil to use API.post for running code in sandbox 2024-04-06 14:53:59 +01:00
Simon Larsen
58b17bd27b Merge pull request #1328 from OneUptime/snyk-upgrade-04ffcdee04209dbf9881949c830040ed
[Snyk] Upgrade socket.io-client from 4.7.4 to 4.7.5
2024-04-06 14:48:58 +01:00
Simon Larsen
e6f348ed0d Merge pull request #1319 from OneUptime/snyk-fix-e4902ce8cdb101e0297360a530f0ac4b
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:42 +01:00
Simon Larsen
dbd8ebcb35 Merge pull request #1320 from OneUptime/snyk-fix-07b1b26eca3341afed9f4d511c442c8c
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:37 +01:00
Simon Larsen
d5c58356fc Merge pull request #1321 from OneUptime/snyk-fix-c12e9be9fb5f6824d59754b917d4e5ba
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:33 +01:00
Simon Larsen
aedbda27c4 Merge pull request #1322 from OneUptime/snyk-fix-3c32f22572d890ca8d596a27f97ea320
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:30 +01:00
Simon Larsen
2715d544e7 Merge pull request #1323 from OneUptime/snyk-fix-f4106457200ff974e6c0646c5ede59ba
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:24 +01:00
Simon Larsen
41f1470685 Merge pull request #1324 from OneUptime/snyk-fix-161f543984a5181295d0bcb4cd09665f
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:20 +01:00
Simon Larsen
00670b46de Merge pull request #1325 from OneUptime/snyk-fix-4a88009a598b3e1088f99374b93ec693
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:14 +01:00
Simon Larsen
40ec2b54ec Merge pull request #1326 from OneUptime/snyk-fix-74c86641ac06e263376b409355fd4866
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:09 +01:00
Simon Larsen
06303618c8 Merge pull request #1327 from OneUptime/snyk-fix-ddc235f0e0b36cebcb1729d8da2694e8
[Snyk] Security upgrade node from 21.6-alpine3.18 to 21.7.2-alpine3.18
2024-04-06 14:48:03 +01:00
Simon Larsen
e66ac04566 Merge pull request #1329 from OneUptime/snyk-upgrade-e03fef4dd6643cb876f1a78d78f49de7
[Snyk] Upgrade posthog-js from 1.111.0 to 1.116.0
2024-04-06 14:47:31 +01:00
Simon Larsen
65b124ca22 Merge pull request #1330 from OneUptime/snyk-upgrade-4f0d40ccf5c6a347e44d0b346c511e15
[Snyk] Upgrade axios from 1.6.7 to 1.6.8
2024-04-06 14:47:24 +01:00
Simon Larsen
25ee0404ee Merge pull request #1331 from OneUptime/snyk-upgrade-fc04dcb8d150135d6023732c05e7bafa
[Snyk] Upgrade axios from 1.6.7 to 1.6.8
2024-04-06 14:47:18 +01:00
Simon Larsen
0334117a40 Add VM API endpoint for running code in sandbox 2024-04-06 14:47:00 +01:00
Simon Larsen
5d3d19d210 Update OneUptime app deployment and add isolated-vm upstream in Nginx configuration 2024-04-06 13:30:01 +01:00
Simon Larsen
ad4c29b74a Merge branch 'master' into isolatedvm 2024-04-06 12:20:29 +01:00
Simon Larsen
74ad8fc725 Remove unnecessary whitespace 2024-04-06 12:03:44 +01:00
Simon Larsen
fd5e7272de Fix formatting issues in code 2024-04-06 11:52:02 +01:00
snyk-bot
730d01a73f fix: upgrade axios from 1.6.7 to 1.6.8
Snyk has created this PR to upgrade axios from 1.6.7 to 1.6.8.

See this package in npm:
https://www.npmjs.com/package/axios

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-05 20:35:07 +00:00
snyk-bot
7f23c0e5a9 fix: upgrade axios from 1.6.7 to 1.6.8
Snyk has created this PR to upgrade axios from 1.6.7 to 1.6.8.

See this package in npm:
https://www.npmjs.com/package/axios

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/49c81d9c-12c2-4e8e-b9e8-72f98b1b595c?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-05 20:35:03 +00:00
snyk-bot
e2671832e8 fix: upgrade posthog-js from 1.111.0 to 1.116.0
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.116.0.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-05 20:35:02 +00:00
snyk-bot
0e7f96856c fix: upgrade socket.io-client from 4.7.4 to 4.7.5
Snyk has created this PR to upgrade socket.io-client from 4.7.4 to 4.7.5.

See this package in npm:
https://www.npmjs.com/package/socket.io-client

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-05 20:35:01 +00:00
snyk-bot
59fff01663 fix: Tests/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:35:00 +00:00
snyk-bot
e8c6c3c0a7 fix: Dashboard/Dockerfile.tpl to reduce vulnerabilities 2024-04-05 20:35:00 +00:00
snyk-bot
3d00471677 fix: Haraka/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:35:00 +00:00
snyk-bot
692ebdb006 fix: StatusPage/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:34:59 +00:00
snyk-bot
37ee7b25f2 fix: TestServer/Dockerfile.tpl to reduce vulnerabilities 2024-04-05 20:34:59 +00:00
snyk-bot
2bca4963a0 fix: AdminDashboard/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:34:59 +00:00
snyk-bot
efded8947f fix: Ingestor/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:34:59 +00:00
snyk-bot
d663b0c65f fix: Accounts/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:34:59 +00:00
snyk-bot
9f354383f7 fix: Probe/Dockerfile.tpl to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564548
- https://snyk.io/vuln/SNYK-UPSTREAM-NODE-6564550
2024-04-05 20:34:59 +00:00
Simon Larsen
73be1fa956 Add VMUtil class for running code in a sandbox 2024-04-05 21:23:40 +01:00
Simon Larsen
07b10cfdf7 Add logger.info statement to App initialization 2024-04-05 21:14:15 +01:00
Simon Larsen
630f6767ab Fix typo in values.yaml 2024-04-05 21:05:45 +01:00
Simon Larsen
4d1c007d68 Update package name to @oneuptime/isolated-vm 2024-04-05 20:22:50 +01:00
Simon Larsen
3b85e4fe99 Update test script in package.json 2024-04-05 20:22:15 +01:00
Simon Larsen
35daff14d9 Update runs-on to ubuntu-latest in test.probe.yaml 2024-04-05 20:09:25 +01:00
Simon Larsen
73f3ef7622 Delete PingMonitor.test.ts 2024-04-05 20:09:14 +01:00
Simon Larsen
f11f1c23c5 Remove unused import and variable declaration in Index.ts 2024-04-05 20:07:22 +01:00
Simon Larsen
c52501ef0e Add SERVER_ISOLATED_VM_HOSTNAME to docker-compose.base.yml 2024-04-05 20:03:00 +01:00
Simon Larsen
78e9ad439c Add IsolatedVMHostname to EnvironmentConfig.ts and docker-compose files 2024-04-05 20:02:33 +01:00
Simon Larsen
e35dba93ce Add npm install for CommonServer 2024-04-05 19:55:03 +01:00
Simon Larsen
1991977af1 Fix dependencies in IsolatedVM package.json and package-lock.json 2024-04-05 18:59:43 +01:00
Simon Larsen
acf35e1c4c Update IsolatedVM dependencies and add docker build for IsolatedVM 2024-04-05 18:38:57 +01:00
Simon Larsen
36f290edf0 Add isolatedVMP port and update Dockerfile for IsolatedVM 2024-04-05 18:33:52 +01:00
Simon Larsen
1ad1aebc1b Refactor code for improved performance 2024-04-05 18:22:29 +01:00
Simon Larsen
e11b781fc5 Add log level configuration 2024-04-05 17:52:34 +01:00
Simon Larsen
bc1ca32991 Add scroll to top functionality in SideMenuItem component 2024-04-05 14:11:42 +01:00
Simon Larsen
b668281ad6 Remove unnecessary code in Billing.tsx 2024-04-05 14:00:55 +01:00
Simon Larsen
2cbabe7a67 Add debug logging capability to Logger class 2024-04-05 13:23:03 +01:00
Simon Larsen
03e1545ebd Remove unused OpenTelemetry dependencies 2024-04-05 12:37:56 +01:00
Simon Larsen
2a16389a37 Update security context in HelmChart 2024-04-05 12:30:20 +01:00
Simon Larsen
32a10892a4 Update security context settings in Helm chart 2024-04-05 10:56:10 +01:00
Simon Larsen
39f0e66b35 Fix missing comma in companyName field assignment 2024-04-05 10:37:01 +01:00
Simon Larsen
ed7e70aa8d Refactor user creation and update logic in Authentication.ts 2024-04-05 10:35:21 +01:00
Simon Larsen
d1697c37df Refactor Telemetry class in Utils package 2024-04-05 10:01:17 +01:00
Simon Larsen
0c2774214a Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-05 09:50:00 +01:00
Simon Larsen
9bc98e0a35 Refactor Telemetry class to conditionally enable instrumentations 2024-04-05 09:49:37 +01:00
Simon Larsen
20dff66769 Fix issues with totalCostInUSD calculation and service token caching 2024-04-05 09:40:36 +01:00
Simon Larsen
6ac98d2531 Merge pull request #1316 from OneUptime/snyk-upgrade-a7578ebc13c2523a31a5afb23c7f060c
[Snyk] Upgrade posthog-js from 1.111.0 to 1.115.0
2024-04-05 08:45:28 +01:00
snyk-bot
586cbdb424 fix: upgrade posthog-js from 1.111.0 to 1.115.0
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.115.0.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-05 01:18:12 +00:00
Simon Larsen
689de266a1 Update telemetry price description 2024-04-04 21:15:53 +01:00
Simon Larsen
0015906bac Fix formatting and import issues 2024-04-04 21:07:34 +01:00
Simon Larsen
5070d8137a Merge pull request #1315 from eltociear/patch-1
Update ProductCompare.ts
2024-04-04 21:07:09 +01:00
Simon Larsen
d4d8848124 Update import statement for ProductType in OTelIngest.ts 2024-04-04 20:56:48 +01:00
Simon Larsen
abcde37960 Update import statements for ProductType in multiple files 2024-04-04 20:56:03 +01:00
Simon Larsen
1fbdc19645 Update MeteredPlanUtil to use TelemetryMeteredPlanType 2024-04-04 19:59:22 +01:00
Simon Larsen
c17740b315 Refactor telemetry usage billing service and metered plans 2024-04-04 19:53:16 +01:00
Ikko Eltociear Ashimine
1568f5ef94 Update ProductCompare.ts
seperate -> separate
2024-04-05 02:59:28 +09:00
Simon Larsen
c4d7f345e2 Update UsageBillingService imports to TelemetryUsageBillingService 2024-04-04 15:55:19 +01:00
Simon Larsen
ec0c1b102f Update import statements in Label.ts, Index.ts, MonitorProbe.ts, MonitorOwnerTeam.ts, IncidentOwnerTeam.ts, StatusPageOwnerTeam.ts, MonitorGroupOwnerTeam.ts, and MonitorOwnerUser.ts 2024-04-04 15:22:35 +01:00
Simon Larsen
72559f146d Remove unused import and update modelId in ServiceDelete component 2024-04-04 15:11:34 +01:00
Simon Larsen
37829e3ef6 Add projectId to select and filter properties in DeleteOldData.ts 2024-04-04 14:45:53 +01:00
Simon Larsen
389397d31b Add TelemetryService job and update QueryHelper class 2024-04-04 14:44:58 +01:00
Simon Larsen
6d68154855 Fix formatting and styling issues 2024-04-04 14:16:02 +01:00
Simon Larsen
9d50cbb889 implement slider in pricing 2024-04-04 13:16:32 +01:00
Simon Larsen
b6932d07ac Remove SETTINGS_DATA_RETENTION from PageMap and related components 2024-04-04 12:29:21 +01:00
Simon Larsen
d8b1ed9516 Merge branch 'master' into otel-v2 2024-04-03 21:38:23 +01:00
Simon Larsen
8a0b94a18f Fix eslint-disable comment in Object.ts 2024-04-03 21:04:23 +01:00
Simon Larsen
a03524496d Update ObjectUtil to use GlobalObject type 2024-04-03 20:59:31 +01:00
Simon Larsen
ebc9835374 Refactor ObjectUtil.isEmpty() method and fix variable declaration in SslMonitor.ts 2024-04-03 20:54:35 +01:00
Simon Larsen
9bfcc4f0c8 Update SSL to SSLCertificate in MonitorType 2024-04-03 20:52:40 +01:00
Simon Larsen
7ed0d55479 Refactor ObjectUtil and MonitorService, and fix SSLMonitorCriteria 2024-04-03 20:29:42 +01:00
Simon Larsen
74b57c6d83 Add SSL certificate validation logic and error handling 2024-04-03 20:22:52 +01:00
Simon Larsen
34697dd8ca Add support for SSL monitor type 2024-04-03 15:30:54 +01:00
Simon Larsen
c390a88866 Remove unused filterType property in CriteriaFilterElement component 2024-04-03 14:07:02 +01:00
Simon Larsen
8a5984faad Refactor SSL monitor criteria class 2024-04-03 13:53:53 +01:00
Simon Larsen
80f2e12a1f Add SSL monitor support and criteria filters 2024-04-03 13:46:33 +01:00
Simon Larsen
5f3d208557 Add new filter type for invalid certificates 2024-04-03 12:44:41 +01:00
Simon Larsen
b2492db82a Add SSL monitor type and criteria filters 2024-04-03 12:24:12 +01:00
Simon Larsen
6a6fa1876d Update installation instructions for ServerMonitor 2024-04-03 11:57:18 +01:00
Simon Larsen
57db166e8a Merge pull request #1311 from OneUptime/process-infra
Process infra
2024-04-03 11:56:16 +01:00
Simon Larsen
afdc891942 Remove debugger statement and trim threshold process name 2024-04-03 11:55:37 +01:00
Simon Larsen
37a13ce853 Refactor ServerMonitorCriteria class to improve code readability and remove redundant code 2024-04-03 11:52:22 +01:00
Simon Larsen
8ebcb1b659 Update infrastructure agent to use tsx instead of ts-node 2024-04-03 10:47:02 +01:00
Simon Larsen
0e2e440a90 Update domain selection description 2024-04-03 09:58:17 +01:00
Simon Larsen
fa06d208dc Merge pull request #1313 from OneUptime/snyk-upgrade-d03fbabff64bdc826c22ab69a5362cfc
[Snyk] Upgrade posthog-js from 1.111.0 to 1.114.2
2024-04-03 09:23:49 +01:00
Simon Larsen
69cac18ca7 Merge pull request #1312 from OneUptime/snyk-upgrade-c8ca40b9ff205959a700db37078e3741
[Snyk] Upgrade react-big-calendar from 1.11.1 to 1.11.2
2024-04-03 09:23:40 +01:00
snyk-bot
40ba8bd2de fix: upgrade posthog-js from 1.111.0 to 1.114.2
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.114.2.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-02 23:11:57 +00:00
snyk-bot
a89e7db46e fix: upgrade react-big-calendar from 1.11.1 to 1.11.2
Snyk has created this PR to upgrade react-big-calendar from 1.11.1 to 1.11.2.

See this package in npm:
https://www.npmjs.com/package/react-big-calendar

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-02 23:11:00 +00:00
Simon Larsen
1f8c0e6b71 Add logging for server processes 2024-04-02 20:29:12 +01:00
Simon Larsen
d547660284 Add ArrayUtil.removeDuplicates() method and refactor ServerProcessUtil.getProcesses() method 2024-04-02 20:26:39 +01:00
Simon Larsen
d99f5310e7 Add server process criteria filters to monitor 2024-04-02 20:09:08 +01:00
Simon Larsen
fcc9231d1e Add ServerProcess interface and processes field to ServerMonitorResponse 2024-04-02 19:47:22 +01:00
Simon Larsen
68ea2c4e9a Merge branch 'master' into otel-v2 2024-04-02 19:01:38 +01:00
Simon Larsen
dfaa31ba41 Add deletedByUser and deletedByUserId properties to StatusPageResource model 2024-04-02 18:32:09 +01:00
Simon Larsen
1e1fe04eb0 erge branch 'master' into otel-v2 2024-04-02 17:09:30 +01:00
Simon Larsen
6612e44ae5 Fix null and undefined checks in CompareCriteria 2024-04-02 17:07:56 +01:00
Simon Larsen
206f0199e9 Add @opentelemetry/auto-instrumentations-node package 2024-04-02 16:36:39 +01:00
Simon Larsen
90ceb9cfc6 Remove infrastructure-agent service from docker-compose.dev.yml 2024-04-02 10:10:44 +01:00
Simon Larsen
f503a45f3b Remove unused code and comments 2024-04-02 10:07:55 +01:00
Simon Larsen
375afe288a Update homepage heading to be more concise 2024-04-02 09:18:44 +01:00
Simon Larsen
0e0bd71ead Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-04-01 19:23:15 +01:00
Simon Larsen
e3017f1680 Update monitoring feature names 2024-04-01 19:23:12 +01:00
Simon Larsen
f5c9ba7e3d Merge pull request #1308 from OneUptime/snyk-upgrade-4faf36859b1cbed01e787727fc356ff4
[Snyk] Upgrade posthog-js from 1.111.0 to 1.113.2
2024-04-01 19:00:33 +01:00
Simon Larsen
ab92f256a5 Merge pull request #1309 from OneUptime/snyk-upgrade-2828c364c449b636db71e062447859ea
[Snyk] Upgrade react-router-dom from 6.22.2 to 6.22.3
2024-04-01 19:00:27 +01:00
snyk-bot
af1f3a3bae fix: upgrade react-router-dom from 6.22.2 to 6.22.3
Snyk has created this PR to upgrade react-router-dom from 6.22.2 to 6.22.3.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-01 15:58:06 +00:00
snyk-bot
a30392730e fix: upgrade posthog-js from 1.111.0 to 1.113.2
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.113.2.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-04-01 15:58:05 +00:00
Simon Larsen
eb6c3888ad Merge pull request #1306 from OneUptime/snyk-upgrade-f54a1e8470e64dbe6ff815d799492ac6
[Snyk] Upgrade react-router-dom from 6.22.2 to 6.22.3
2024-04-01 15:47:46 +01:00
Simon Larsen
e22d39eea2 Fix typo in installation instructions 2024-04-01 15:41:39 +01:00
Simon Larsen
1d93fdf73b Add installation instructions for Windows and MacOS 2024-04-01 15:41:12 +01:00
Simon Larsen
641c8de84b Add seriesName and seriesColor to LineChartPoint 2024-04-01 13:49:37 +01:00
Simon Larsen
2fb509b98c Refactor MonitorChart.tsx to improve readability and maintainability 2024-04-01 13:33:17 +01:00
Simon Larsen
39c7f6f2ba Add ChartColors and MonitorMetricsMiscData, Update MonitorView component, and Refactor MonitorProbes component 2024-04-01 13:26:27 +01:00
Simon Larsen
3f5f16cb74 Refactor MonitorCharts class to improve readability and maintainability 2024-04-01 12:28:52 +01:00
Simon Larsen
038684e512 Fix probeId conversion to string in ProbeMonitorResponseService 2024-04-01 12:23:29 +01:00
Simon Larsen
28f4f0f37c Fix drivelist import bug in BasicMetrics.ts 2024-04-01 11:54:44 +01:00
Simon Larsen
e793456980 Remove unused import in MonitorInfrastructure.ts 2024-04-01 11:40:13 +01:00
Simon Larsen
bbff753799 Add deprecated comment to ServerMonitor route and refactor BasicMetrics to get disk paths dynamically 2024-04-01 11:33:59 +01:00
Simon Larsen
5246f9f9cb Update variable name in BasicMetrics.ts 2024-04-01 11:17:59 +01:00
Simon Larsen
fb35f23971 Add miscData field to monitorMetricsByMinute object 2024-04-01 11:12:32 +01:00
Simon Larsen
30db649f40 Remove unnecessary lines of code in ProbeMonitorResponse.ts 2024-04-01 11:09:49 +01:00
Simon Larsen
5088a14665 Refactor ProbeMonitorResponseService class 2024-04-01 11:08:48 +01:00
Simon Larsen
4f2302aa3c Fix diskMetrics condition in ProbeMonitorResponse.ts and remove VERSION import in Documentation.tsx 2024-03-31 19:48:43 +01:00
Simon Larsen
559c124294 Update ServerMonitorDocumentation to remove version number from agent command 2024-03-31 19:36:35 +01:00
snyk-bot
b285caeea4 fix: upgrade react-router-dom from 6.22.2 to 6.22.3
Snyk has created this PR to upgrade react-router-dom from 6.22.2 to 6.22.3.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/5dd2ef9c-1270-4729-aff4-e407805f7a9c?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-31 15:56:03 +00:00
Simon Larsen
ed3e0e05c4 Merge pull request #1293 from OneUptime/nivo-chart
Add @nivo/bar, @nivo/core, and @nivo/line dependencies***
2024-03-31 14:53:05 +01:00
Simon Larsen
f61e44f1d7 Update Date.ts, Index.tsx, MonitorChartTooltip.tsx, JSONFunctions.ts, and LineChart.tsx 2024-03-31 14:49:22 +01:00
Simon Larsen
c6e47ddc83 Merge branch 'master' into nivo-chart 2024-03-31 14:00:57 +01:00
Simon Larsen
bc72200378 Update Nginx configuration for proxy settings 2024-03-31 14:00:25 +01:00
Simon Larsen
1b61d7a641 Refactor Nginx configuration to handle billing redirection*** 2024-03-31 13:55:50 +01:00
Simon Larsen
1ac7c646d5 Merge pull request #1305 from go0die/patch-1
Update default.conf.template
2024-03-31 13:52:28 +01:00
Simon Larsen
fedb247972 Remove unnecessary blank lines in StatusPageAPI.ts 2024-03-31 13:47:21 +01:00
Simon Larsen
4da6d9f492 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-31 13:44:35 +01:00
Simon Larsen
899649d55e Update sort order for monitorStatusTimelines 2024-03-31 13:44:31 +01:00
Simon Larsen
fac6e23b7e Merge pull request #1304 from Re-ms/patch-1
Adding .ovh TLD to Domain.ts
2024-03-31 10:15:55 +01:00
go0die
f7739ab4a8 Update default.conf.template
Fix custom domains status pages NGINX configuration.
2024-03-31 12:12:41 +03:00
Re-ms
f7c33cb799 Adding .ovh to Domain.ts 2024-03-31 05:26:42 +02:00
Simon Larsen
466ebc8c41 Remove @nivo/bar package and update posthog-js version 2024-03-30 19:50:07 +00:00
Simon Larsen
676e2c654d Merge branch 'master' into nivo-chart 2024-03-30 19:47:08 +00:00
Simon Larsen
ac0bafe560 Merge pull request #1302 from OneUptime/snyk-upgrade-53fb8e17b0abab72eef5329087945d87
[Snyk] Upgrade posthog-js from 1.111.0 to 1.112.0
2024-03-30 19:43:01 +00:00
Simon Larsen
5d90c2992f Merge pull request #1303 from OneUptime/snyk-upgrade-46500c2addf58e24b538ef6a0cb3457d
[Snyk] Upgrade react-router-dom from 6.22.2 to 6.22.3
2024-03-30 19:42:53 +00:00
Simon Larsen
8e8019a9f8 Add Port Monitoring and Status Report 2024-03-30 13:32:35 +00:00
snyk-bot
267d9ccd0d fix: upgrade react-router-dom from 6.22.2 to 6.22.3
Snyk has created this PR to upgrade react-router-dom from 6.22.2 to 6.22.3.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/40b17bc5-1bd4-48b1-88f1-5b4dc1400e80?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-29 22:54:17 +00:00
snyk-bot
8dabddd5ed fix: upgrade posthog-js from 1.111.0 to 1.112.0
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.112.0.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-29 22:53:18 +00:00
Simon Larsen
c052cadc98 Fix probe issue with ping and ICMP 2024-03-29 20:56:07 +00:00
Simon Larsen
c893990722 Fix offline check issues in Probe.ts 2024-03-29 20:45:15 +00:00
Simon Larsen
1fbc80db8e Add probe service and autoscaler configuration 2024-03-29 20:00:34 +00:00
Simon Larsen
1c3e184566 Fix probe offline notification template and update probe registration process 2024-03-29 17:15:04 +00:00
Simon Larsen
4335377285 Add HOSTNAME environment variable to Probe Config and update Probe Index and Email Template Type 2024-03-29 16:47:56 +00:00
Simon Larsen
4c27494b7a Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-29 15:43:09 +00:00
Simon Larsen
95f487c3d4 Remove unnecessary blank line 2024-03-29 14:05:05 +00:00
Simon Larsen
830393c74f Refactor Probe.ts and StatusPageGroup.ts 2024-03-29 14:00:11 +00:00
Simon Larsen
393336ad60 Fix formatting in ProbeOffline template 2024-03-29 13:38:32 +00:00
Simon Larsen
8c8b323a14 Add podId field to ProbeOffline template and update Probe.ts to send email notifications 2024-03-29 13:37:48 +00:00
Simon Larsen
85551a5608 Update email settings and add probe status report endpoint 2024-03-29 13:02:40 +00:00
Simon Larsen
ec5b1fc88d Merge pull request #1300 from OneUptime/snyk-upgrade-7ff8055f1a78b439a2eea0792a742e0b
[Snyk] Upgrade posthog-js from 1.111.0 to 1.111.3
2024-03-29 12:35:04 +00:00
Simon Larsen
bab7f6331e Merge pull request #1301 from OneUptime/snyk-upgrade-5d0fcde6d60f9f83910e30eebef4b31c
[Snyk] Upgrade react-router-dom from 6.22.2 to 6.22.3
2024-03-29 12:34:59 +00:00
Simon Larsen
592ff4efb7 Refactor online check in monitor types 2024-03-29 11:46:33 +00:00
Simon Larsen
3e0c5e8846 Refactor OnlineCheck to use URL instead of Hostname 2024-03-29 11:11:59 +00:00
Simon Larsen
c9d5d92934 Add support for FindOperator in QueryHelper 2024-03-29 09:25:27 +00:00
Simon Larsen
15739f99b5 Update sort order for monitorStatusTimelines 2024-03-29 09:10:48 +00:00
Simon Larsen
8513d969db Update limit to use LIMIT_INFINITY constant 2024-03-29 08:52:04 +00:00
Simon Larsen
0def943102 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-29 08:43:10 +00:00
Simon Larsen
da8fb1e032 Add deletedByUserId property to StatusPageAnnouncement model 2024-03-29 08:43:07 +00:00
snyk-bot
48087e1ce4 fix: upgrade react-router-dom from 6.22.2 to 6.22.3
Snyk has created this PR to upgrade react-router-dom from 6.22.2 to 6.22.3.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/8ca4ee75-8bc5-43a1-a3bc-244ceebf1437?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-28 23:21:26 +00:00
snyk-bot
56187ed256 fix: upgrade posthog-js from 1.111.0 to 1.111.3
Snyk has created this PR to upgrade posthog-js from 1.111.0 to 1.111.3.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-28 23:03:26 +00:00
Simon Larsen
80ff772e48 Merge pull request #1297 from OneUptime/snyk-upgrade-24390df2a46def1f7ae2d45ea147ed82
[Snyk] Upgrade react-big-calendar from 1.11.0 to 1.11.1
2024-03-28 19:38:28 +00:00
Simon Larsen
e82fffdc55 Merge pull request #1298 from OneUptime/snyk-upgrade-3639fcb1250bcc358b3c7877fc0ac4f3
[Snyk] Upgrade react-error-boundary from 4.0.12 to 4.0.13
2024-03-28 19:38:24 +00:00
Simon Larsen
547beaf890 Merge pull request #1299 from OneUptime/snyk-upgrade-0c8d07f2619af3a9652c63130b096e5e
[Snyk] Upgrade react-router-dom from 6.22.1 to 6.22.2
2024-03-28 19:38:16 +00:00
Simon Larsen
e2da673f53 Fix formatting issues in MonitorChart and MonitorChartTooltip components 2024-03-28 18:50:28 +00:00
Simon Larsen
32473b0d51 Update axis types in LineChart and MonitorChart 2024-03-28 18:34:30 +00:00
Simon Larsen
ed404dfdd1 Refactor line chart tooltip and monitor view 2024-03-28 18:29:19 +00:00
Simon Larsen
57b99e2e99 Fix y-axis formatting in LineChart and add y-scale for usage percentages in MonitorChart 2024-03-28 18:19:46 +00:00
Simon Larsen
34d7c9b152 Fix import statement for MonitorCharts component 2024-03-28 18:03:45 +00:00
Simon Larsen
87ad6dd73b Refactor MonitorChart and MonitorChartTooltip components 2024-03-28 17:57:37 +00:00
Simon Larsen
c188d23e0c Update LineChart and MonitorChart components 2024-03-28 17:45:28 +00:00
Simon Larsen
d7ecd18975 Refactor code formatting and fix function parameter spacing 2024-03-28 16:54:48 +00:00
Simon Larsen
67d241bb5e Add title and description to Chart interface and display them in LineChart component 2024-03-28 16:51:30 +00:00
Simon Larsen
a41bbb301a Add new method to get local hour and minute from date 2024-03-28 13:35:46 +00:00
Simon Larsen
672f2ecd70 Add MonitorMetricsByMinute API endpoint and fix CriteriaFilterUtil bug 2024-03-28 13:27:57 +00:00
Simon Larsen
8428677714 Refactor chart components and add new utility function 2024-03-28 12:57:55 +00:00
Simon Larsen
efa0990250 Update onMouseEnter to onMouseMove in LineChart component 2024-03-28 11:46:05 +00:00
Simon Larsen
c03d250a62 Refactor LineChart component to use generic types 2024-03-28 11:36:40 +00:00
snyk-bot
0c9cedafa1 fix: upgrade react-router-dom from 6.22.1 to 6.22.2
Snyk has created this PR to upgrade react-router-dom from 6.22.1 to 6.22.2.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/11bb5528-45f9-473c-a635-dc097fd03b3c?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-28 04:17:29 +00:00
Simon Larsen
39f0834cc2 Add sync functionality to ChartGroup component 2024-03-27 17:21:34 +00:00
snyk-bot
151b8c2262 fix: upgrade react-error-boundary from 4.0.12 to 4.0.13
Snyk has created this PR to upgrade react-error-boundary from 4.0.12 to 4.0.13.

See this package in npm:
https://www.npmjs.com/package/react-error-boundary

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-27 16:45:36 +00:00
snyk-bot
cdb9c0ee5a fix: upgrade react-big-calendar from 1.11.0 to 1.11.1
Snyk has created this PR to upgrade react-big-calendar from 1.11.0 to 1.11.1.

See this package in npm:
https://www.npmjs.com/package/react-big-calendar

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-27 16:45:30 +00:00
Simon Larsen
48427a341c Remove unused code and fix formatting in BaseChart.tsx and Bar.tsx 2024-03-27 16:29:12 +00:00
Simon Larsen
7477aeca94 Remove react-google-charts dependency and update LineChart component 2024-03-27 13:51:01 +00:00
Simon Larsen
04415198fc Merge branch 'master' into nivo-chart 2024-03-27 12:45:14 +00:00
Simon Larsen
d9cfd750a4 Merge pull request #1295 from OneUptime/snyk-fix-51a8a60e54b7973c2d9cd4f21fb62941
[Snyk] Security upgrade express from 4.18.2 to 4.19.2
2024-03-27 12:01:41 +00:00
Simon Larsen
57e3b7ba9b Merge pull request #1294 from OneUptime/snyk-upgrade-1a70acb042812427f2f0623d9a1d7e52
[Snyk] Upgrade posthog-js from 1.110.0 to 1.111.0
2024-03-27 12:01:27 +00:00
Simon Larsen
95fc43f3a5 Merge pull request #1296 from OneUptime/snyk-fix-9a1923e0e905758c8792768640ca8549
[Snyk] Security upgrade express from 4.18.2 to 4.19.2
2024-03-27 12:01:19 +00:00
snyk-bot
90689bfb1a fix: CommonServer/package.json & CommonServer/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EXPRESS-6474509
2024-03-27 03:45:54 +00:00
snyk-bot
c484a8484c fix: StatusPage/package.json & StatusPage/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EXPRESS-6474509
2024-03-27 03:42:11 +00:00
snyk-bot
0dbbbfda61 fix: upgrade posthog-js from 1.110.0 to 1.111.0
Snyk has created this PR to upgrade posthog-js from 1.110.0 to 1.111.0.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-27 03:39:00 +00:00
Simon Larsen
4278b1014c Merge remote-tracking branch 'origin/snyk-upgrade-bca4f4c2714cd0f79dbf79658ebcc160' 2024-03-26 19:58:38 +00:00
Simon Larsen
3954e7600c Fix bug in login functionality 2024-03-26 19:58:00 +00:00
Simon Larsen
ea04be214f Add react-google-charts package 2024-03-26 19:56:38 +00:00
Simon Larsen
4bcd12b659 Merge branch 'master' into nivo-chart 2024-03-26 18:27:31 +00:00
Simon Larsen
13de53166a Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-26 18:21:35 +00:00
Simon Larsen
b01e4ecbd7 Add security context configuration 2024-03-26 18:21:30 +00:00
Simon Larsen
61d6ca9a20 Add @nivo/bar, @nivo/core, and @nivo/line dependencies***
***Add Indigo500 color to BrandColors.ts***
***Import LineChart component in MonitorView
2024-03-26 18:14:35 +00:00
Simon Larsen
08c9fc9311 Merge pull request #1292 from OneUptime/snyk-fix-3c6c902c811ceedfbac3862a662ef58f
[Snyk] Security upgrade express from 4.18.3 to 4.19.2
2024-03-26 18:00:20 +00:00
Simon Larsen
ac46ba74d0 Merge pull request #1287 from OneUptime/snyk-upgrade-e5d426435aa30ff3fdefc67f8a5de771
[Snyk] Upgrade @opentelemetry/instrumentation-xml-http-request from 0.48.0 to 0.49.1
2024-03-26 17:59:37 +00:00
Simon Larsen
a382a6f207 Merge pull request #1288 from OneUptime/snyk-upgrade-3915bfe54818a95e70c8f440f7e29262
[Snyk] Upgrade react-router-dom from 6.22.1 to 6.22.2
2024-03-26 17:59:33 +00:00
Simon Larsen
9dfb9f0dc6 Merge pull request #1290 from OneUptime/snyk-upgrade-3a01fea3034d28ce6f6ac8a48749c813
[Snyk] Upgrade @opentelemetry/context-zone from 1.21.0 to 1.22.0
2024-03-26 17:59:19 +00:00
snyk-bot
7b98ccb590 fix: Accounts/package.json & Accounts/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-EXPRESS-6474509
2024-03-26 17:02:37 +00:00
snyk-bot
0803f44407 fix: upgrade @opentelemetry/context-zone from 1.21.0 to 1.22.0
Snyk has created this PR to upgrade @opentelemetry/context-zone from 1.21.0 to 1.22.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/context-zone

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-25 15:58:30 +00:00
snyk-bot
36182cbe95 fix: upgrade @opentelemetry/api from 1.7.0 to 1.8.0
Snyk has created this PR to upgrade @opentelemetry/api from 1.7.0 to 1.8.0.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/api

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-25 15:58:26 +00:00
snyk-bot
6e894d7b79 fix: upgrade react-router-dom from 6.22.1 to 6.22.2
Snyk has created this PR to upgrade react-router-dom from 6.22.1 to 6.22.2.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-25 15:58:21 +00:00
snyk-bot
4bb0c36050 fix: upgrade @opentelemetry/instrumentation-xml-http-request from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/instrumentation-xml-http-request from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/instrumentation-xml-http-request

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-25 15:58:18 +00:00
snyk-bot
044347296c fix: upgrade @opentelemetry/instrumentation from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/instrumentation from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/instrumentation

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-25 15:58:14 +00:00
Simon Larsen
59ef638ad9 Merge remote-tracking branch 'origin/snyk-upgrade-fbb1d2ca2b9c0b40a214a0885d2e15a8' 2024-03-25 09:43:59 +00:00
Simon Larsen
8a9902941d Merge remote-tracking branch 'origin/snyk-upgrade-fbb433b1199f80e892a8e5c2eae24646' 2024-03-25 09:43:02 +00:00
Simon Larsen
dd6a36df65 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-25 09:42:18 +00:00
Simon Larsen
6c238e0e6b Merge remote-tracking branch 'origin/snyk-upgrade-b30dfbc77442260873df5fa299a93daf' 2024-03-25 09:42:12 +00:00
Simon Larsen
a61c496a78 Merge pull request #1283 from OneUptime/snyk-upgrade-f77c957cb9ff9e1d7fa755ddec88fe39
[Snyk] Upgrade @opentelemetry/exporter-trace-otlp-http from 0.48.0 to 0.49.1
2024-03-24 21:05:36 +00:00
Simon Larsen
8b2a819bd5 Merge pull request #1284 from OneUptime/snyk-upgrade-3c30d36113425e4ac5ca2ae1e9cde064
[Snyk] Upgrade @opentelemetry/instrumentation-fetch from 0.48.0 to 0.49.1
2024-03-24 21:05:32 +00:00
Simon Larsen
e3a28bf0e7 Update nginx.yaml to reflect deployment changes 2024-03-24 20:44:50 +00:00
Simon Larsen
c149991884 Add Microsoft Teams integration to Workflow Components 2024-03-24 20:21:12 +00:00
snyk-bot
544bb37581 fix: upgrade @opentelemetry/instrumentation-fetch from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/instrumentation-fetch from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/instrumentation-fetch

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-24 16:56:48 +00:00
snyk-bot
5c1b8d420d fix: upgrade @opentelemetry/exporter-trace-otlp-http from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/exporter-trace-otlp-http from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-http

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-24 16:56:45 +00:00
Simon Larsen
d76eebceb0 Add missing import statement for ActiveMonitoringMeteredPlan 2024-03-24 13:11:46 +00:00
Simon Larsen
993a01659b Add ActiveMonitoringMeteredPlan to telemetry reporting 2024-03-24 13:08:43 +00:00
Simon Larsen
8e08dea7ec Fix proration behavior in BillingService 2024-03-24 13:01:00 +00:00
Simon Larsen
82e5977e15 Add proration behavior for metered plans and subscription changes 2024-03-24 12:59:38 +00:00
Simon Larsen
53481a58eb Update billing anchor to start billing cycle now 2024-03-24 12:56:52 +00:00
Simon Larsen
faa225d275 Add billing anchor and update deployment commands 2024-03-24 12:56:31 +00:00
Simon Larsen
263d659761 Update replica count in probe.yaml 2024-03-24 12:39:25 +00:00
Simon Larsen
7f0535459e Update Clickhouse.md with correct username for Postgres user 2024-03-24 11:17:02 +00:00
Simon Larsen
4901749ae6 Update CLICKHOUSE_PORT value in _helpers.tpl and add clickhouse.service.ports.http in values.yaml 2024-03-24 11:14:23 +00:00
Simon Larsen
bab36f9b86 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-24 10:52:55 +00:00
Simon Larsen
2757bc01c7 Update database port in _helpers.tpl and values.yaml 2024-03-24 10:52:52 +00:00
Simon Larsen
d6affe3949 Merge pull request #1263 from OneUptime/snyk-upgrade-a8976e7174e38a62275d1d9617d0a0c5
[Snyk] Upgrade nodemailer from 6.9.9 to 6.9.10
2024-03-24 09:53:24 +00:00
Simon Larsen
3304191b29 Merge pull request #1281 from OneUptime/snyk-upgrade-b8833dbb21460bebe74dc69315d6daaa
[Snyk] Upgrade react-router-dom from 6.22.1 to 6.22.2
2024-03-24 09:52:58 +00:00
Simon Larsen
6a6b60afe8 Update backup and restore commands in Postgres.md 2024-03-23 20:27:32 +00:00
Simon Larsen
400ebf994d Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-23 19:07:01 +00:00
Simon Larsen
328a5d49f4 Refactor Navbar component and add tests for Toggle component 2024-03-23 19:06:57 +00:00
Simon Larsen
52acb22acc Refactor Toggle component and update NavBar component 2024-03-22 17:59:06 +00:00
Simon Larsen
08339a5247 Merge pull request #1280 from OneUptime/snyk-upgrade-278d90abadc25e2c6ae9608c052c80de
[Snyk] Upgrade react-router-dom from 6.22.1 to 6.22.2
2024-03-22 17:50:55 +00:00
Simon Larsen
f9bf1e45be Merge pull request #1282 from OneUptime/snyk-upgrade-4c3e8a6f3c06adf100e2941bafb49e9c
[Snyk] Upgrade @opentelemetry/exporter-logs-otlp-http from 0.48.0 to 0.49.1
2024-03-22 17:50:49 +00:00
Simon Larsen
ba59f77563 Refactor Navbar component to conditionally render right element 2024-03-22 14:37:05 +00:00
snyk-bot
316fefbf53 fix: upgrade @opentelemetry/exporter-logs-otlp-http from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/exporter-logs-otlp-http from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/exporter-logs-otlp-http

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/a2fb4fe1-f25f-4ff9-a58c-e78277b0a7fa?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-22 14:31:36 +00:00
snyk-bot
ab9619ca40 fix: upgrade react-router-dom from 6.22.1 to 6.22.2
Snyk has created this PR to upgrade react-router-dom from 6.22.1 to 6.22.2.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/5dd2ef9c-1270-4729-aff4-e407805f7a9c?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-22 14:31:34 +00:00
snyk-bot
735a476097 fix: upgrade react-router-dom from 6.22.1 to 6.22.2
Snyk has created this PR to upgrade react-router-dom from 6.22.1 to 6.22.2.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/40b17bc5-1bd4-48b1-88f1-5b4dc1400e80?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-22 14:31:30 +00:00
Simon Larsen
7538367b0a remove email domains 2024-03-22 11:24:59 +00:00
Simon Larsen
b73a11992c Merge branch 'monitor-metrics' 2024-03-22 11:15:56 +00:00
Simon Larsen
94412fb515 Fix formatting issues in Dropdown component and remove unnecessary code***
***Remove extra line in CustomCallSMSTable component***
***Remove extra line in Domains component***
***Remove extra line in BillingInvoice model***
***Remove extra line in OnCallDutyPolicyEscalationRule model***
***Remove extra line in OnCallDutyPolicyEscalationRuleSchedule model***
***Remove extra line in OnCallDutyPolicyExecutionLog model***
***Remove extra line in OnCallDutyPolicySchedule model***
***Remove extra line in OnCallDutyPolicyScheduleLayer model***
***Remove extra line in OnCallDutyPolicyScheduleLayerUser model
2024-03-22 11:15:45 +00:00
Simon Larsen
a3916be807 Refactor Dropdown component to use useLayoutEffect and useRef 2024-03-22 10:58:48 +00:00
Simon Larsen
3576fdfbb5 Fix Toggle component props check 2024-03-22 10:42:57 +00:00
Simon Larsen
14016d23d8 Add deletedByUserId property to several models 2024-03-22 10:28:33 +00:00
Simon Larsen
1056123d31 Fix typo in BasicMetrics.ts 2024-03-21 18:37:14 +00:00
Simon Larsen
96a5f75731 Merge pull request #1273 from OneUptime/snyk-upgrade-5de44a4064198e684a16d4974b493a51
[Snyk] Upgrade react-router-dom from 6.22.1 to 6.22.2
2024-03-21 18:17:29 +00:00
Simon Larsen
18e8b7cb00 Merge pull request #1277 from OneUptime/snyk-upgrade-45f558246d9cf563b81347018cd88743
[Snyk] Upgrade express from 4.18.2 to 4.18.3
2024-03-21 18:17:11 +00:00
Simon Larsen
e64c9f6e4c Merge pull request #1278 from OneUptime/snyk-upgrade-cf5a95d96106729341e88bb0acf4986e
[Snyk] Upgrade @opentelemetry/exporter-trace-otlp-proto from 0.48.0 to 0.49.1
2024-03-21 18:17:05 +00:00
Simon Larsen
5976fc22f5 Fix formatting issues in APIRequestCriteria and CompareCriteria 2024-03-21 18:16:14 +00:00
Simon Larsen
750fe2867c Fix import statements in APIRequestCriteria, CompareCriteria, EvaluateOverTime, IncomingRequestCriteria, and ServerMonitorCriteria 2024-03-21 18:10:34 +00:00
snyk-bot
5c89ed97e6 fix: upgrade express from 4.18.2 to 4.18.3
Snyk has created this PR to upgrade express from 4.18.2 to 4.18.3.

See this package in npm:
https://www.npmjs.com/package/express

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/40b17bc5-1bd4-48b1-88f1-5b4dc1400e80?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-21 17:07:50 +00:00
snyk-bot
27090a346c fix: upgrade @opentelemetry/exporter-trace-otlp-proto from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/exporter-trace-otlp-proto from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/exporter-trace-otlp-proto

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/a2fb4fe1-f25f-4ff9-a58c-e78277b0a7fa?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-21 17:07:50 +00:00
snyk-bot
d23aff2e73 fix: upgrade @opentelemetry/exporter-metrics-otlp-proto from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/exporter-metrics-otlp-proto from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/exporter-metrics-otlp-proto

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/a2fb4fe1-f25f-4ff9-a58c-e78277b0a7fa?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-21 17:07:46 +00:00
snyk-bot
f1852a95d0 fix: upgrade @opentelemetry/api-logs from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/api-logs from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/api-logs

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/a2fb4fe1-f25f-4ff9-a58c-e78277b0a7fa?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-21 17:07:43 +00:00
snyk-bot
6eb3b1f80d fix: upgrade @opentelemetry/sdk-logs from 0.48.0 to 0.49.1
Snyk has created this PR to upgrade @opentelemetry/sdk-logs from 0.48.0 to 0.49.1.

See this package in npm:
https://www.npmjs.com/package/@opentelemetry/sdk-logs

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/a2fb4fe1-f25f-4ff9-a58c-e78277b0a7fa?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-21 17:07:37 +00:00
snyk-bot
8dc65283d8 fix: upgrade react-router-dom from 6.22.1 to 6.22.2
Snyk has created this PR to upgrade react-router-dom from 6.22.1 to 6.22.2.

See this package in npm:
https://www.npmjs.com/package/react-router-dom

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/8ca4ee75-8bc5-43a1-a3bc-244ceebf1437?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-21 17:07:27 +00:00
Simon Larsen
324572d37d Update Probe.ts and delete EvaluateOverTime.ts 2024-03-21 15:56:56 +00:00
Simon Larsen
aa764cdb14 Merge pull request #1269 from OneUptime/snyk-upgrade-b877b3453fac70a0d00e31c442374920
[Snyk] Upgrade react-big-calendar from 1.10.3 to 1.11.0
2024-03-21 15:43:59 +00:00
Simon Larsen
0ca18bebd5 Refactor server and API request criteria classes 2024-03-21 15:39:40 +00:00
Simon Larsen
f742fcb3c4 Merge pull request #1270 from OneUptime/snyk-upgrade-d3e67beb45bccf2eb8d315827e5bb788
[Snyk] Upgrade posthog-js from 1.108.4 to 1.110.0
2024-03-21 14:07:44 +00:00
Simon Larsen
0839cbe297 Refactor code to improve performance and readability 2024-03-21 14:01:48 +00:00
Simon Larsen
0914ae6bda Add query parameter for EvaluateOverTime criteria 2024-03-21 13:54:30 +00:00
Simon Larsen
e7dd5adb2a Add EvaluateOverTime functionality to ServerMonitorCriteria 2024-03-21 11:42:59 +00:00
Simon Larsen
b85ec355f5 Fix server monitor result type in ProbeMonitorResponse.ts 2024-03-20 20:12:02 +00:00
Simon Larsen
ec0dafb7a6 Fix import path in Probe.ts 2024-03-20 20:06:44 +00:00
Simon Larsen
e8316078c8 Merge branch 'master' into monitor-metrics 2024-03-20 19:41:54 +00:00
Simon Larsen
0b1069f9a8 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-20 19:41:43 +00:00
Simon Larsen
bd3959e844 Fix formatting of description in SMTP settings form field 2024-03-20 19:41:41 +00:00
Simon Larsen
bf8561a166 Refactor saveMonitorMetrics function to improve code readability and maintainability 2024-03-20 19:39:41 +00:00
Simon Larsen
e92ee600c9 Update BasicMetrics.ts and ProbeMonitorResponse.ts 2024-03-20 19:38:58 +00:00
Simon Larsen
31fc399a5e Refactor NavBar component 2024-03-20 17:57:43 +00:00
Simon Larsen
1acfedeebb Refactor Navbar component to include a right element 2024-03-20 17:42:01 +00:00
Simon Larsen
5895f515a0 Fix formatting and add missing commas 2024-03-20 14:29:40 +00:00
Simon Larsen
2830293949 Add Monitor Metrics job to Workers Index.ts 2024-03-20 14:28:27 +00:00
Simon Larsen
2d060e335d Update MonitorMetricsByMinute model to use CheckOn type for metricType 2024-03-20 14:04:37 +00:00
Simon Larsen
6b01d73903 Add MonitorMetricsByMinuteService and MonitorMetricsByMinute model 2024-03-20 14:01:46 +00:00
snyk-bot
10ebfda7d0 fix: upgrade posthog-js from 1.108.4 to 1.110.0
Snyk has created this PR to upgrade posthog-js from 1.108.4 to 1.110.0.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-20 13:51:59 +00:00
Simon Larsen
98c3581022 Add support for milliseconds in CriteriaFilterUtil 2024-03-20 13:29:12 +00:00
Simon Larsen
859aca85a7 Fix dropdown value comparison bug 2024-03-20 13:09:50 +00:00
Simon Larsen
b94402525e Add id prop to Dropdown, FormField, and Toggle components 2024-03-20 12:50:20 +00:00
Simon Larsen
efbdc85ade Update Toggle component props 2024-03-20 12:01:55 +00:00
Simon Larsen
efd8a0e79f Add FormValues import and update createInitialValues prop 2024-03-20 11:24:36 +00:00
Simon Larsen
6067babb9f Refactor OnCallDutyRoutes and CriteriaFilterUtil classes 2024-03-20 11:19:45 +00:00
Simon Larsen
4451b5343d Fix OnCallDutyRoutes rendering issue 2024-03-20 11:16:41 +00:00
Simon Larsen
6ebeef5397 Refactor CriteriaFilterUtil class to improve readability and add support for evaluating percentage values over time 2024-03-20 10:19:11 +00:00
Simon Larsen
56d2d348fb Update EvaluateOverTimeType enum values 2024-03-19 17:51:13 +00:00
snyk-bot
3a21e8df47 fix: upgrade react-big-calendar from 1.10.3 to 1.11.0
Snyk has created this PR to upgrade react-big-calendar from 1.10.3 to 1.11.0.

See this package in npm:
https://www.npmjs.com/package/react-big-calendar

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/47001ef1-7b3a-49c2-88cd-8025c56346d0?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-19 17:24:50 +00:00
Simon Larsen
81ab8d135f Refactor dropdown component and criteria filter 2024-03-19 17:23:10 +00:00
Simon Larsen
f9c9b9addf Update EvaluateOverTimeMinutes enum values to be strings 2024-03-19 17:19:54 +00:00
Simon Larsen
b29a19c6e9 Refactor CriteriaFilterUtil to filter out invalid options 2024-03-19 16:41:10 +00:00
Simon Larsen
d1d1734183 Merge pull request #1266 from OneUptime/snyk-upgrade-287996f9faf249b96863f2cdd9a8415b
[Snyk] Upgrade posthog-js from 1.108.3 to 1.108.4
2024-03-19 16:28:43 +00:00
Simon Larsen
decc09e3b9 Fix formatting issues and update descriptions in SMTP settings and CriteriaFilter 2024-03-19 16:27:54 +00:00
Simon Larsen
1a3f8fca1a Add EvaluateOverTimeType and EvaluateOverTimeOptions to CriteriaFilter 2024-03-19 16:23:40 +00:00
Simon Larsen
b5ff064a27 Update SMTP SSL/TLS description 2024-03-19 14:40:31 +00:00
Simon Larsen
d91e944c2e Fix bug in login functionality 2024-03-19 09:32:41 +00:00
Simon Larsen
98b8e89d71 Add deployment scripts for test and prod environments 2024-03-19 09:32:28 +00:00
Simon Larsen
b516a7a350 Refactor InternalSmtpHost initialization in Config.ts 2024-03-19 08:38:47 +00:00
Simon Larsen
ebc1724093 Update SMTP host configuration and environment variables in app.yaml and Config.ts 2024-03-19 08:35:23 +00:00
Simon Larsen
0954336a69 Add deletedByUserId column to StatusPageSubscriber model 2024-03-19 08:09:13 +00:00
Simon Larsen
8552556289 Update API Documentation to API Reference 2024-03-19 07:54:01 +00:00
Simon Larsen
d329160fc0 Fix missing comma in githubPath assignment 2024-03-19 07:43:46 +00:00
Simon Larsen
d1af2e62bf Add githubPath to rendered content 2024-03-19 07:41:24 +00:00
Simon Larsen
a06e5035df Delete unused images and infrastructure agent installation script 2024-03-19 07:32:17 +00:00
Simon Larsen
b2a15ff460 Delete unused images and infrastructure agent installation script 2024-03-19 07:30:52 +00:00
Simon Larsen
eb53b5a81d Update title of local development section 2024-03-19 07:29:48 +00:00
Simon Larsen
363f7b81e8 Update installation links in README.md 2024-03-19 07:29:06 +00:00
Simon Larsen
4e55541026 Remove pagination from Index.ejs 2024-03-18 21:39:03 +00:00
Simon Larsen
deb0aaf35f Merge branch 'release' 2024-03-18 21:34:16 +00:00
Simon Larsen
fdcf8c66fa Update imports and links 2024-03-18 21:33:37 +00:00
Simon Larsen
f9f9aa4433 Update image paths in telemetry documentation 2024-03-18 21:24:10 +00:00
Simon Larsen
5f50a11786 Update content includes category and link information 2024-03-18 21:16:31 +00:00
Simon Larsen
4648d5232a Delete unused images and update Config.ts and Index.ts 2024-03-18 19:32:49 +00:00
Simon Larsen
f282344c78 Merge pull request #1267 from OneUptime/release
Release
2024-03-18 18:44:55 +00:00
Simon Larsen
b12d6c713e Fix capitalization of index file in render method 2024-03-18 18:41:56 +00:00
snyk-bot
6d6e7ce013 fix: upgrade posthog-js from 1.108.3 to 1.108.4
Snyk has created this PR to upgrade posthog-js from 1.108.3 to 1.108.4.

See this package in npm:
https://www.npmjs.com/package/posthog-js

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/f6446ec8-d441-487e-b58f-38373430e213?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-18 16:46:04 +00:00
Simon Larsen
99aa76ea81 Merge branch 'master' of github.com-simon:OneUptime/oneuptime 2024-03-18 13:22:45 +00:00
Simon Larsen
dbd2462958 Remove Linux installation script and update server monitor documentation 2024-03-18 13:22:24 +00:00
Simon Larsen
1dbfea9051 Add Docs feature set and configure Nginx proxy for /docs endpoint 2024-03-18 13:12:39 +00:00
snyk-bot
9a11bfbed7 fix: upgrade nodemailer from 6.9.9 to 6.9.10
Snyk has created this PR to upgrade nodemailer from 6.9.9 to 6.9.10.

See this package in npm:
https://www.npmjs.com/package/nodemailer

See this project in Snyk:
https://app.snyk.io/org/oneuptime-RsC2nshvQ2Vnr35jHvMnMP/project/a2fb4fe1-f25f-4ff9-a58c-e78277b0a7fa?utm_source=github&utm_medium=referral&page=upgrade-pr
2024-03-16 18:50:36 +00:00
672 changed files with 51965 additions and 13587 deletions

View File

@@ -113,6 +113,7 @@
"no-console": "error",
"no-undef": "error",
"no-empty": "error",
"no-control-regex": "off",
"prefer-arrow-callback": "error",
"constructor-super": "error",
"no-case-declarations": "error",

View File

@@ -25,6 +25,21 @@ jobs:
- name: build docker image
run: sudo docker build -f ./Accounts/Dockerfile .
docker-build-isolated-vm:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Preinstall
run: npm run prerun
# build image for accounts service
- name: build docker image
run: sudo docker build -f ./IsolatedVM/Dockerfile .
docker-build-otel-collector:
runs-on: ubuntu-latest
@@ -57,6 +72,22 @@ jobs:
- name: build docker image
run: sudo docker build -f ./App/Dockerfile .
docker-build-e2e:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Preinstall
run: npm run prerun
# build image for accounts service
- name: build docker image
run: sudo docker build -f ./E2E/Dockerfile .
docker-build-admin-dashboard:
runs-on: ubuntu-latest
env:

View File

@@ -25,6 +25,19 @@ jobs:
- run: cd CommonUI && npm install --force
- run: cd Accounts && npm install && npm run compile && npm run dep-check
compile-isolated-vm:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- run: cd Common && npm install
- run: cd CommonServer && npm install
- run: cd IsolatedVM && npm install && npm run compile && npm run dep-check
compile-common-server:
runs-on: ubuntu-latest
env:
@@ -161,6 +174,7 @@ jobs:
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- run: cd Common && npm install
- run: cd E2E && npm install && npm run compile && npm run dep-check
compile-probe:

View File

@@ -151,6 +151,126 @@ jobs:
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
e2e-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/e2e
ghcr.io/oneuptime/e2e
tags: |
type=raw,value=release,enable=true
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}},pattern={{version}},enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
run: npm run prerun
# Build and deploy e2e.
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
file: ./E2E/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
isolated-vm-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/isolated-vm
ghcr.io/oneuptime/isolated-vm
tags: |
type=raw,value=release,enable=true
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}},pattern={{version}},enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
run: npm run prerun
# Build and deploy isolated-vm.
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
file: ./IsolatedVM/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
test-server-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
@@ -918,4 +1038,6 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}

View File

@@ -80,6 +80,68 @@ jobs:
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
e2e-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/e2e
ghcr.io/oneuptime/e2e
tags: |
type=raw,value=test,enable=true
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
run: npm run prerun
# Build and deploy e2e.
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
file: ./E2E/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
test-server-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
@@ -202,6 +264,67 @@ jobs:
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
isolated-vm-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/isolated-vm
ghcr.io/oneuptime/isolated-vm
tags: |
type=raw,value=test,enable=true
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
run: npm run prerun
# Build and deploy isolated-vm.
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
file: ./IsolatedVM/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
status-page-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
@@ -819,7 +942,7 @@ jobs:
test-helm-chart:
runs-on: ubuntu-latest
needs: [ infrastructure-agent-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, ingestor-docker-image-deploy, probe-docker-image-deploy, haraka-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy]
needs: [ infrastructure-agent-docker-image-deploy, isolated-vm-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, ingestor-docker-image-deploy, probe-docker-image-deploy, haraka-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:

62
.github/workflows/test.e2e.yaml vendored Normal file
View File

@@ -0,0 +1,62 @@
name: E2E Tests
on:
pull_request:
push:
branches-ignore:
- 'hotfix-*' # excludes hotfix branches
- 'release'
jobs:
test:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
# Docker compose needs a lot of space to build images, so we need to free up some space first in the GitHub Actions runner
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 18.3.0
- run: npm run prerun && bash ./Tests/Scripts/enable-billing-env-var.sh
- run: npm run dev
- name: Wait for server to start
run: bash ./Tests/Scripts/status-check.sh http://localhost
- name: Run E2E Tests. Run docker container e2e in docker compose file
run: export $(grep -v '^#' config.env | xargs) && docker-compose -f docker-compose.dev.yml up --exit-code-from e2e --abort-on-container-exit e2e || (docker-compose -f docker-compose.dev.yml logs e2e && exit 1)
- name: Upload test results
uses: actions/upload-artifact@v4
# Run this on failure
if: failure()
with:
# Name of the artifact to upload.
# Optional. Default is 'artifact'
name: test-results
# A file, directory or wildcard pattern that describes what to upload
# Required.
path: |
./E2E/playwright-report
./E2E/test-results
# Duration after which artifact will expire in days. 0 means using default retention.
# Minimum 1 day.
# Maximum 90 days unless changed from the repository settings page.
# Optional. Defaults to repository settings.
retention-days: 7

View File

@@ -9,7 +9,7 @@ on:
jobs:
test:
runs-on: self-hosted # this needs to be self-hosted because ICMP checks are disbled in hosted runners
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:

10
.gitignore vendored
View File

@@ -102,4 +102,12 @@ Examples/otel-dotnet/obj/*
InfrastructureAgent/sea-prep.blob
InfrastructureAgent/InfrastructureAgent
InfrastructureAgent/build/*
InfrastructureAgent/build/*
InfrastructureAgent/err.log
InfrastructureAgent/out.log
InfrastructureAgent/daemon.pid
App/greenlock/.greenlockrc
App/greenlock/greenlock.d/config.json
App/greenlock/greenlock.d/config.json.bak

42
.vscode/launch.json vendored
View File

@@ -83,6 +83,20 @@
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/IsolatedVM",
"name": "Isolated VM: Debug with Docker",
"port": 9974,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/Workflow",
@@ -139,34 +153,6 @@
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/Ingestor",
"name": "Probe API: Debug with Docker",
"port": 9251,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/Identity",
"name": "File: Debug with Docker",
"port": 9012,
"remoteRoot": "/usr/src/app",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node",
"restart": true,
"autoAttachChildProcesses": true
},
{
"address": "127.0.0.1",
"localRoot": "${workspaceFolder}/HttpTestServer",

View File

@@ -3,7 +3,7 @@
#
# Pull base image nodejs image.
FROM node:21.6-alpine3.18
FROM node:21.7.2-alpine3.18
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
@@ -14,6 +14,10 @@ ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
# Install bash.
RUN apk add bash && apk add curl
@@ -25,6 +29,8 @@ RUN mkdir /usr/src
WORKDIR /usr/src/Common
COPY ./Common/package*.json /usr/src/Common/
# Set version in ./Common/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Common/package.json
RUN npm install
COPY ./Common /usr/src/Common
@@ -32,6 +38,8 @@ COPY ./Common /usr/src/Common
WORKDIR /usr/src/Model
COPY ./Model/package*.json /usr/src/Model/
# Set version in ./Model/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Model/package.json
RUN npm install
COPY ./Model /usr/src/Model
@@ -39,6 +47,8 @@ COPY ./Model /usr/src/Model
WORKDIR /usr/src/CommonServer
COPY ./CommonServer/package*.json /usr/src/CommonServer/
# Set version in ./CommonServer/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/CommonServer/package.json
RUN npm install
COPY ./CommonServer /usr/src/CommonServer
@@ -49,6 +59,8 @@ COPY ./CommonServer /usr/src/CommonServer
WORKDIR /usr/src/CommonUI
COPY ./CommonUI/package*.json /usr/src/CommonUI/
# Set version in ./CommonUI/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/CommonUI/package.json
RUN npm install --force
COPY ./CommonUI /usr/src/CommonUI

View File

@@ -10,7 +10,17 @@ const app: ExpressApplication = Express.getExpressApp();
const init: PromiseVoidFunction = async (): Promise<void> => {
try {
// init the app
await App(APP_NAME, undefined, true);
await App.init({
appName: APP_NAME,
port: undefined,
isFrontendApp: true,
statusOptions: {
liveCheck: async () => {},
readyCheck: async () => {},
},
});
// add default routes
await App.addDefaultRoutes();
} catch (err) {
logger.error('App Init Failed:');
logger.error(err);

View File

@@ -1,4 +1,4 @@
{
"watch": ["webpack.config.js"],
"exec": "export DEBUG=express:* && printenv > /usr/src/app/dev-env/.env && echo 'HOST=localhost' >> /usr/src/app/dev-env/.env && echo 'USE_HTTPS=false' >> /usr/src/app/dev-env/.env && webpack-dev-server --port=3003 --mode=development"
"exec": "export DEBUG=express:* && printenv > /usr/src/app/dev-env/.env && echo 'USE_HTTPS=false' >> /usr/src/app/dev-env/.env && webpack-dev-server --port=3003 --mode=development"
}

View File

@@ -1,24 +1,24 @@
{
"name": "accounts",
"name": "@oneuptime/accounts",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "accounts",
"name": "@oneuptime/accounts",
"version": "0.1.0",
"dependencies": {
"Common": "file:../Common",
"CommonServer": "file:../CommonServer",
"CommonUI": "file:../CommonUI",
"css-loader": "^6.10.0",
"css-loader": "^6.11.0",
"dotenv": "^16.4.5",
"express": "^4.18.2",
"express": "^4.19.2",
"file-loader": "^6.2.0",
"Model": "file:../Model",
"react": "^18.2.0",
"react-dom": "^18.1.0",
"react-router-dom": "^6.22.1",
"react-router-dom": "^6.22.3",
"sass-loader": "^13.3.3",
"style-loader": "^3.3.4",
"ts-loader": "^9.5.1",
@@ -35,19 +35,19 @@
}
},
"../Common": {
"name": "common",
"name": "@oneuptime/common",
"version": "1.0.0",
"license": "MIT",
"license": "Apache-2.0",
"dependencies": {
"@types/crypto-js": "^4.2.2",
"@types/uuid": "^8.3.4",
"axios": "^1.6.7",
"axios": "^1.6.8",
"crypto-js": "^4.1.1",
"json5": "^2.2.3",
"moment": "^2.30.1",
"moment-timezone": "^0.5.45",
"posthog-js": "^1.104.4",
"reflect-metadata": "^0.2.1",
"posthog-js": "^1.116.6",
"reflect-metadata": "^0.2.2",
"slugify": "^1.6.5",
"typeorm": "^0.3.20",
"uuid": "^8.3.2"
@@ -61,49 +61,46 @@
}
},
"../CommonServer": {
"name": "common-server",
"name": "@oneuptime/common-server",
"version": "1.0.0",
"license": "MIT",
"license": "Apache-2.0",
"dependencies": {
"@clickhouse/client": "^0.2.7",
"@elastic/elasticsearch": "^8.11.0",
"@clickhouse/client": "^0.2.10",
"@elastic/elasticsearch": "^8.12.1",
"@opentelemetry/api": "^1.7.0",
"@opentelemetry/api-logs": "^0.48.0",
"@opentelemetry/exporter-logs-otlp-http": "^0.48.0",
"@opentelemetry/exporter-metrics-otlp-proto": "^0.48.0",
"@opentelemetry/exporter-trace-otlp-proto": "^0.48.0",
"@opentelemetry/api-logs": "^0.49.1",
"@opentelemetry/auto-instrumentations-node": "^0.43.0",
"@opentelemetry/exporter-logs-otlp-http": "^0.49.1",
"@opentelemetry/exporter-metrics-otlp-proto": "^0.49.1",
"@opentelemetry/exporter-trace-otlp-proto": "^0.49.1",
"@opentelemetry/id-generator-aws-xray": "^1.2.1",
"@opentelemetry/instrumentation-express": "^0.35.0",
"@opentelemetry/instrumentation-http": "^0.48.0",
"@opentelemetry/sdk-logs": "^0.48.0",
"@opentelemetry/sdk-logs": "^0.49.1",
"@opentelemetry/sdk-metrics": "^1.21.0",
"@opentelemetry/sdk-node": "^0.48.0",
"@opentelemetry/sdk-trace-node": "^1.21.0",
"@socket.io/redis-adapter": "^8.2.1",
"acme-client": "^5.3.0",
"airtable": "^0.12.2",
"axios": "^1.6.4",
"bullmq": "^5.3.3",
"Common": "file:../Common",
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"cron-parser": "^4.8.1",
"dotenv": "^16.4.1",
"ejs": "^3.1.8",
"express": "^4.17.3",
"dotenv": "^16.4.4",
"ejs": "^3.1.10",
"express": "^4.19.2",
"ioredis": "^5.3.2",
"json2csv": "^5.0.7",
"jsonwebtoken": "^9.0.0",
"markdown-it": "^13.0.1",
"Model": "file:../Model",
"node-cron": "^3.0.3",
"nodemailer": "^6.9.9",
"nodemailer": "^6.9.10",
"pg": "^8.7.3",
"socket.io": "^4.7.2",
"socket.io": "^4.7.4",
"stripe": "^10.17.0",
"twilio": "^4.19.3",
"twilio": "^4.22.0",
"typeorm": "^0.3.20",
"typeorm-extension": "^2.2.13",
"vm2": "^3.9.14"
"typeorm-extension": "^2.2.13"
},
"devDependencies": {
"@faker-js/faker": "^6.3.1",
@@ -124,43 +121,48 @@
}
},
"../CommonUI": {
"name": "common-ui",
"name": "@oneuptime/common-ui",
"version": "1.0.0",
"license": "MIT",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime": "^7.24.1",
"@monaco-editor/react": "^4.4.6",
"@opentelemetry/api": "^1.7.0",
"@opentelemetry/context-zone": "^1.21.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.48.0",
"@opentelemetry/instrumentation": "^0.48.0",
"@opentelemetry/instrumentation-fetch": "^0.48.0",
"@opentelemetry/instrumentation-xml-http-request": "^0.48.0",
"@nivo/core": "^0.85.1",
"@nivo/line": "^0.85.1",
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/context-zone": "^1.22.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
"@opentelemetry/instrumentation": "^0.49.1",
"@opentelemetry/instrumentation-fetch": "^0.49.1",
"@opentelemetry/instrumentation-xml-http-request": "^0.49.1",
"@opentelemetry/resources": "^1.21.0",
"@opentelemetry/sdk-trace-web": "^1.21.0",
"@opentelemetry/semantic-conventions": "^1.21.0",
"@tippyjs/react": "^4.2.6",
"@types/react-highlight": "^0.12.8",
"Common": "file:../Common",
"formik": "^2.2.9",
"history": "^5.3.0",
"lodash": "^4.17.21",
"Model": "file:../Model",
"moment-timezone": "^0.5.44",
"moment-timezone": "^0.5.45",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-beautiful-dnd": "^13.1.1",
"react-big-calendar": "^1.8.7",
"react-big-calendar": "^1.11.2",
"react-color": "^2.19.3",
"react-dom": "^18.1.0",
"react-dropzone": "^14.2.2",
"react-error-boundary": "^4.0.12",
"react-error-boundary": "^4.0.13",
"react-highlight": "^0.15.0",
"react-markdown": "^8.0.3",
"react-router-dom": "^6.21.3",
"react-router-dom": "^6.22.3",
"react-select": "^5.4.0",
"react-spinners": "^0.13.6",
"react-toggle": "^4.1.3",
"reactflow": "^11.10.3",
"reactflow": "^11.10.4",
"remark-gfm": "^3.0.1",
"socket.io-client": "^4.7.4",
"socket.io-client": "^4.7.5",
"tippy.js": "^6.3.7",
"universal-cookie": "^4.0.4",
"use-async-effect": "^2.2.6"
@@ -186,9 +188,9 @@
}
},
"../Model": {
"name": "model",
"name": "@oneuptime/model",
"version": "1.0.0",
"license": "ISC",
"license": "Apache-2.0",
"dependencies": {
"Common": "file:../Common",
"typeorm": "^0.3.20"
@@ -265,9 +267,9 @@
}
},
"node_modules/@remix-run/router": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz",
"integrity": "sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz",
"integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==",
"engines": {
"node": ">=14.0.0"
}
@@ -660,12 +662,12 @@
}
},
"node_modules/body-parser": {
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
"integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
"integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dependencies": {
"bytes": "3.1.2",
"content-type": "~1.0.4",
"content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
@@ -673,7 +675,7 @@
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
"raw-body": "2.5.1",
"raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
@@ -761,13 +763,18 @@
}
},
"node_modules/call-bind": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
"integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.1",
"set-function-length": "^1.1.1"
"get-intrinsic": "^1.2.4",
"set-function-length": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -920,9 +927,9 @@
}
},
"node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"engines": {
"node": ">= 0.6"
}
@@ -939,15 +946,15 @@
"dev": true
},
"node_modules/css-loader": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz",
"integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==",
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
"integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==",
"dependencies": {
"icss-utils": "^5.1.0",
"postcss": "^8.4.33",
"postcss-modules-extract-imports": "^3.0.0",
"postcss-modules-local-by-default": "^4.0.4",
"postcss-modules-scope": "^3.1.1",
"postcss-modules-extract-imports": "^3.1.0",
"postcss-modules-local-by-default": "^4.0.5",
"postcss-modules-scope": "^3.2.0",
"postcss-modules-values": "^4.0.0",
"postcss-value-parser": "^4.2.0",
"semver": "^7.5.4"
@@ -999,16 +1006,19 @@
}
},
"node_modules/define-data-property": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
"integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dependencies": {
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
"gopd": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/depd": {
@@ -1086,6 +1096,25 @@
"node": ">=10.13.0"
}
},
"node_modules/es-define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-module-lexer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz",
@@ -1160,16 +1189,16 @@
}
},
"node_modules/express": {
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
"integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
"version": "4.19.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
"body-parser": "1.20.1",
"body-parser": "1.20.2",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.5.0",
"cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
@@ -1322,15 +1351,19 @@
}
},
"node_modules/get-intrinsic": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
"integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
"hasown": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -1378,20 +1411,20 @@
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dependencies": {
"get-intrinsic": "^1.2.2"
"es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"engines": {
"node": ">= 0.4"
},
@@ -1411,9 +1444,9 @@
}
},
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -1889,9 +1922,9 @@
}
},
"node_modules/postcss-modules-extract-imports": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
"integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
"engines": {
"node": "^10 || ^12 || >= 14"
},
@@ -1900,9 +1933,9 @@
}
},
"node_modules/postcss-modules-local-by-default": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz",
"integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
"integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
"dependencies": {
"icss-utils": "^5.0.0",
"postcss-selector-parser": "^6.0.2",
@@ -1916,9 +1949,9 @@
}
},
"node_modules/postcss-modules-scope": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz",
"integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==",
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
"integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
"dependencies": {
"postcss-selector-parser": "^6.0.4"
},
@@ -1944,9 +1977,9 @@
}
},
"node_modules/postcss-selector-parser": {
"version": "6.0.13",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
"integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
"version": "6.0.16",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
"integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -2017,9 +2050,9 @@
}
},
"node_modules/raw-body": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
"integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -2054,11 +2087,11 @@
}
},
"node_modules/react-router": {
"version": "6.22.1",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz",
"integrity": "sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==",
"version": "6.22.3",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz",
"integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==",
"dependencies": {
"@remix-run/router": "1.15.1"
"@remix-run/router": "1.15.3"
},
"engines": {
"node": ">=14.0.0"
@@ -2068,12 +2101,12 @@
}
},
"node_modules/react-router-dom": {
"version": "6.22.1",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz",
"integrity": "sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==",
"version": "6.22.3",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz",
"integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==",
"dependencies": {
"@remix-run/router": "1.15.1",
"react-router": "6.22.1"
"@remix-run/router": "1.15.3",
"react-router": "6.22.3"
},
"engines": {
"node": ">=14.0.0"
@@ -2253,14 +2286,16 @@
}
},
"node_modules/set-function-length": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
"integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dependencies": {
"define-data-property": "^1.1.1",
"get-intrinsic": "^1.2.1",
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
"get-intrinsic": "^1.2.4",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
"has-property-descriptors": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -2272,13 +2307,17 @@
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.4",
"object-inspect": "^1.13.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"

View File

@@ -29,14 +29,14 @@
"Common": "file:../Common",
"CommonServer": "file:../CommonServer",
"CommonUI": "file:../CommonUI",
"css-loader": "^6.10.0",
"css-loader": "^6.11.0",
"dotenv": "^16.4.5",
"express": "^4.18.2",
"express": "^4.19.2",
"file-loader": "^6.2.0",
"Model": "file:../Model",
"react": "^18.2.0",
"react-dom": "^18.1.0",
"react-router-dom": "^6.22.1",
"react-router-dom": "^6.22.3",
"sass-loader": "^13.3.3",
"style-loader": "^3.3.4",
"ts-loader": "^9.5.1",

View File

@@ -8,12 +8,13 @@ import ModelForm, { FormType } from 'CommonUI/src/Components/Forms/ModelForm';
import { LOGIN_API_URL } from '../Utils/ApiPaths';
import URL from 'Common/Types/API/URL';
import { JSONObject } from 'Common/Types/JSON';
import LoginUtil from '../Utils/Login';
import LoginUtil from 'CommonUI/src/Utils/Login';
import UserUtil from 'CommonUI/src/Utils/User';
import Navigation from 'CommonUI/src/Utils/Navigation';
import { DASHBOARD_URL } from 'CommonUI/src/Config';
import Alert, { AlertType } from 'CommonUI/src/Components/Alerts/Alert';
import UiAnalytics from 'CommonUI/src/Utils/Analytics';
import useAsyncEffect from 'use-async-effect';
const LoginPage: () => JSX.Element = () => {
const apiUrl: URL = LOGIN_API_URL;
@@ -28,6 +29,16 @@ const LoginPage: () => JSX.Element = () => {
const [showSsoTip, setShowSSOTip] = useState<boolean>(false);
const [initialValues, setInitialValues] = React.useState<JSONObject>({});
useAsyncEffect(async () => {
if (Navigation.getQueryStringByName('email')) {
setInitialValues({
email: Navigation.getQueryStringByName('email'),
});
}
}, []);
return (
<div className="flex min-h-full flex-col justify-center py-12 sm:px-6 lg:px-8">
<div className="">
@@ -66,9 +77,14 @@ const LoginPage: () => JSX.Element = () => {
field: {
email: true,
},
title: 'Email',
fieldType: FormFieldSchemaType.Email,
placeholder: 'jeff@example.com',
required: true,
disabled: Boolean(
initialValues && initialValues['email']
),
title: 'Email',
dataTestId: 'email',
},
{
field: {
@@ -85,6 +101,7 @@ const LoginPage: () => JSX.Element = () => {
url: new Route('/accounts/forgot-password'),
openLinkInNewTab: false,
},
dataTestId: 'password',
},
]}
createOrUpdateApiUrl={apiUrl}
@@ -106,7 +123,7 @@ const LoginPage: () => JSX.Element = () => {
}}
maxPrimaryButtonWidth={true}
footer={
<div className="actions pointer text-center mt-4 hover:underline fw-semibold">
<div className="actions text-center mt-4 hover:underline fw-semibold">
<div>
{!showSsoTip && (
<div
@@ -121,11 +138,9 @@ const LoginPage: () => JSX.Element = () => {
{showSsoTip && (
<div className="text-gray-500 text-sm">
Please sign in with your username
and password. Once you have signed
in, you&apos;ll be able to sign in
via SSO that&apos;s configured for
your project.
Please sign in with your SSO
provider like Okta, Auth0, Entra ID
or any other SAML 2.0 provider.
</div>
)}
</div>

View File

@@ -5,7 +5,7 @@ import Link from 'CommonUI/src/Components/Link/Link';
import Route from 'Common/Types/API/Route';
import FormFieldSchemaType from 'CommonUI/src/Components/Forms/Types/FormFieldSchemaType';
import OneUptimeLogo from 'CommonUI/src/Images/logos/OneUptimeSVG/3-transparent.svg';
import LoginUtil from '../Utils/Login';
import LoginUtil from 'CommonUI/src/Utils/Login';
import { JSONObject } from 'Common/Types/JSON';
import UserUtil from 'CommonUI/src/Utils/User';
import Navigation from 'CommonUI/src/Utils/Navigation';
@@ -104,6 +104,7 @@ const RegisterPage: () => JSX.Element = () => {
required: true,
disabled: Boolean(initialValues && initialValues['email']),
title: 'Email',
dataTestId: 'email',
},
{
field: {
@@ -113,6 +114,7 @@ const RegisterPage: () => JSX.Element = () => {
placeholder: 'Jeff Smith',
required: true,
title: 'Full Name',
dataTestId: 'name',
},
];
@@ -126,6 +128,7 @@ const RegisterPage: () => JSX.Element = () => {
placeholder: 'Acme, Inc.',
required: true,
title: 'Company Name',
dataTestId: 'companyName',
},
]);
@@ -139,6 +142,7 @@ const RegisterPage: () => JSX.Element = () => {
required: true,
placeholder: '+11234567890',
title: 'Phone Number',
dataTestId: 'companyPhoneNumber',
});
}
}
@@ -155,6 +159,7 @@ const RegisterPage: () => JSX.Element = () => {
placeholder: 'Password',
title: 'Password',
required: true,
dataTestId: 'password',
},
{
field: {
@@ -170,6 +175,7 @@ const RegisterPage: () => JSX.Element = () => {
overrideFieldKey: 'confirmPassword',
required: true,
showEvenIfPermissionDoesNotExist: true,
dataTestId: 'confirmPassword',
},
]);

View File

@@ -3,7 +3,8 @@
// these options are overrides used only by ts-node
// same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable
"compilerOptions": {
"module": "commonjs"
"module": "commonjs",
"resolveJsonModule": true,
}
},
"compilerOptions": {
@@ -105,6 +106,7 @@
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
"skipLibCheck": true, /* Skip type checking all .d.ts files. */
"resolveJsonModule": true
}
}

View File

@@ -3,7 +3,7 @@
#
# Pull base image nodejs image.
FROM node:21.6-alpine3.18
FROM node:21.7.2-alpine3.18
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
@@ -14,6 +14,10 @@ ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
# Install bash.
RUN apk add bash && apk add curl
@@ -25,12 +29,16 @@ RUN mkdir /usr/src
WORKDIR /usr/src/Common
COPY ./Common/package*.json /usr/src/Common/
# Set version in ./Common/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Common/package.json
RUN npm install
COPY ./Common /usr/src/Common
WORKDIR /usr/src/Model
COPY ./Model/package*.json /usr/src/Model/
# Set version in ./Model/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Model/package.json
RUN npm install
COPY ./Model /usr/src/Model
@@ -38,6 +46,8 @@ COPY ./Model /usr/src/Model
WORKDIR /usr/src/CommonServer
COPY ./CommonServer/package*.json /usr/src/CommonServer/
# Set version in ./CommonServer/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/CommonServer/package.json
RUN npm install
COPY ./CommonServer /usr/src/CommonServer
@@ -48,6 +58,8 @@ COPY ./CommonServer /usr/src/CommonServer
WORKDIR /usr/src/CommonUI
COPY ./CommonUI/package*.json /usr/src/CommonUI/
# Set version in ./CommonUI/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/CommonUI/package.json
RUN npm install --force
COPY ./CommonUI /usr/src/CommonUI

View File

@@ -10,7 +10,18 @@ const app: ExpressApplication = Express.getExpressApp();
const init: PromiseVoidFunction = async (): Promise<void> => {
try {
// init the app
await App(APP_NAME, undefined, true);
await App.init({
appName: APP_NAME,
port: undefined,
isFrontendApp: true,
statusOptions: {
liveCheck: async () => {},
readyCheck: async () => {},
},
});
// add default routes
await App.addDefaultRoutes();
} catch (err) {
logger.error('App Init Failed:');
logger.error(err);

View File

@@ -1,4 +1,4 @@
{
"watch": ["webpack.config.js"],
"exec": "export DEBUG=express:* && printenv > /usr/src/app/dev-env/.env && echo 'HOST=localhost' >> /usr/src/app/dev-env/.env && echo 'USE_HTTPS=false' >> /usr/src/app/dev-env/.env && webpack-dev-server --port=3158 --mode=development"
"exec": "export DEBUG=express:* && printenv > /usr/src/app/dev-env/.env && echo 'USE_HTTPS=false' >> /usr/src/app/dev-env/.env && webpack-dev-server --port=3158 --mode=development"
}

View File

@@ -16,7 +16,7 @@
"Model": "file:../Model",
"react": "^18.2.0",
"react-dom": "^18.1.0",
"react-router-dom": "^6.22.1",
"react-router-dom": "^6.22.2",
"style-loader": "^3.3.4"
},
"devDependencies": {
@@ -4009,9 +4009,9 @@
}
},
"node_modules/@remix-run/router": {
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.1.tgz",
"integrity": "sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==",
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.2.tgz",
"integrity": "sha512-+Rnav+CaoTE5QJc4Jcwh5toUpnVLKYbpU6Ys0zqbakqbaLQHeglLVHPfxOiQqdNmUy5C2lXz5dwC6tQNX2JW2Q==",
"engines": {
"node": ">=14.0.0"
}
@@ -16936,11 +16936,11 @@
}
},
"node_modules/react-router": {
"version": "6.22.1",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.1.tgz",
"integrity": "sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==",
"version": "6.22.2",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.2.tgz",
"integrity": "sha512-YD3Dzprzpcq+tBMHBS822tCjnWD3iIZbTeSXMY9LPSG541EfoBGyZ3bS25KEnaZjLcmQpw2AVLkFyfgXY8uvcw==",
"dependencies": {
"@remix-run/router": "1.15.1"
"@remix-run/router": "1.15.2"
},
"engines": {
"node": ">=14.0.0"
@@ -16950,12 +16950,12 @@
}
},
"node_modules/react-router-dom": {
"version": "6.22.1",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.1.tgz",
"integrity": "sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==",
"version": "6.22.2",
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.2.tgz",
"integrity": "sha512-WgqxD2qySEIBPZ3w0sHH+PUAiamDeszls9tzqMPBDA1YYVucTBXLU7+gtRfcSnhe92A3glPnvSxK2dhNoAVOIQ==",
"dependencies": {
"@remix-run/router": "1.15.1",
"react-router": "6.22.1"
"@remix-run/router": "1.15.2",
"react-router": "6.22.2"
},
"engines": {
"node": ">=14.0.0"

View File

@@ -11,7 +11,7 @@
"Model": "file:../Model",
"react": "^18.2.0",
"react-dom": "^18.1.0",
"react-router-dom": "^6.22.1",
"react-router-dom": "^6.22.3",
"style-loader": "^3.3.4"
},
"scripts": {

View File

@@ -19,7 +19,7 @@ import Users from './Pages/Users/Index';
import Logout from './Pages/Logout/Logout';
// Settings Pages.
import SettingsEmail from './Pages/Settings/SMTP/Index';
import SettingsEmail from './Pages/Settings/Email/Index';
import SettingsCallSMS from './Pages/Settings/CallSMS/Index';
import SettingsProbes from './Pages/Settings/Probes/Index';
import SettingsAuthentication from './Pages/Settings/Authentication/Index';

View File

@@ -41,7 +41,7 @@ const DashboardProjectPicker: FunctionComponent<ComponentProps> = (
return (
<Toggle
title="Yearly Plan"
initialValue={isSubscriptionPlanYearly}
value={isSubscriptionPlanYearly}
description="(Save 20%)"
onChange={(value: boolean) => {
setIsSubscriptionPlanYearly(value);

View File

@@ -164,7 +164,7 @@ const Projects: FunctionComponent = (): ReactElement => {
return (
<Toggle
title="Yearly Plan"
initialValue={isSubscriptionPlanYearly}
value={isSubscriptionPlanYearly}
description="(Save 20%)"
onChange={(value: boolean) => {
setIsSubscriptionPlanYearly(value);
@@ -222,16 +222,30 @@ const Projects: FunctionComponent = (): ReactElement => {
noItemsMessage={'No projects found.'}
formFields={fields}
showRefreshButton={true}
showFilterButton={true}
viewPageRoute={Navigation.getCurrentRoute()}
columns={[
filters={[
{
field: {
name: true,
},
title: 'Name',
type: FieldType.Text,
},
{
field: {
createdAt: true,
},
title: 'Created At',
type: FieldType.DateTime,
},
]}
columns={[
{
field: {
name: true,
},
title: 'Name',
type: FieldType.Text,
isFilterable: true,
},
{
field: {
@@ -239,7 +253,6 @@ const Projects: FunctionComponent = (): ReactElement => {
},
title: 'Created At',
type: FieldType.DateTime,
isFilterable: true,
},
]}
/>

View File

@@ -12,7 +12,6 @@ import FieldType from 'CommonUI/src/Components/Types/FieldType';
import ModelAPI from 'CommonUI/src/Utils/ModelAPI/ModelAPI';
import PageLoader from 'CommonUI/src/Components/Loader/PageLoader';
import ErrorMessage from 'CommonUI/src/Components/ErrorMessage/ErrorMessage';
import { JSONObject } from 'Common/Types/JSON';
import DropdownUtil from 'CommonUI/src/Utils/Dropdown';
import Pill from 'CommonUI/src/Components/Pill/Pill';
import { Green, Red } from 'Common/Types/BrandColors';
@@ -89,6 +88,42 @@ const Settings: FunctionComponent = (): ReactElement => {
>
{/* Project Settings View */}
<CardModelDetail
name="Admin Notification Email"
cardProps={{
title: 'Admin Notification Email',
description:
'Enter the email address where you would like to receive admin-level notifications.',
}}
isEditable={true}
editButtonText="Edit Email"
formFields={[
{
field: {
adminNotificationEmail: true,
},
title: 'Admin Notification Email',
fieldType: FormFieldSchemaType.Email,
required: false,
},
]}
modelDetailProps={{
modelType: GlobalConfig,
id: 'model-detail-global-config',
fields: [
{
field: {
adminNotificationEmail: true,
},
title: 'Admin Notification Email',
fieldType: FieldType.Email,
placeholder: 'None',
},
],
modelId: ObjectID.getZeroObjectID(),
}}
/>
<CardModelDetail
name="Internal SMTP Settings"
cardProps={{
@@ -183,7 +218,8 @@ const Settings: FunctionComponent = (): ReactElement => {
title: 'Use SSL / TLS',
stepId: 'server-info',
fieldType: FormFieldSchemaType.Toggle,
description: 'Make email communication secure?',
description:
'If you use port 465, please enable this. Do not enable this if you use port 587.',
},
{
field: {
@@ -287,7 +323,7 @@ const Settings: FunctionComponent = (): ReactElement => {
)}
{emailServerType === EmailServerType.Sendgrid ? (
<CardModelDetail
<CardModelDetail<GlobalConfig>
name="Sendgrid Settings"
cardProps={{
title: 'Sendgrid Settings',
@@ -339,7 +375,7 @@ const Settings: FunctionComponent = (): ReactElement => {
},
title: '',
placeholder: 'None',
getElement: (item: JSONObject) => {
getElement: (item: GlobalConfig) => {
if (
item['sendgridApiKey'] &&
item['sendgridFromEmail'] &&

View File

@@ -7,14 +7,12 @@ import DashboardSideMenu from '../SideMenu';
import ModelTable from 'CommonUI/src/Components/ModelTable/ModelTable';
import Probe from 'Model/Models/Probe';
import FieldType from 'CommonUI/src/Components/Types/FieldType';
import { JSONObject } from 'Common/Types/JSON';
import OneUptimeDate from 'Common/Types/Date';
import { Green, Red } from 'Common/Types/BrandColors';
import Statusbubble from 'CommonUI/src/Components/StatusBubble/StatusBubble';
import ProbeElement from 'CommonUI/src/Components/Probe/Probe';
import IsNull from 'Common/Types/BaseDatabase/IsNull';
import Banner from 'CommonUI/src/Components/Banner/Banner';
import URL from 'Common/Types/API/URL';
import FormFieldSchemaType from 'CommonUI/src/Components/Forms/Types/FormFieldSchemaType';
import { ButtonStyleType } from 'CommonUI/src/Components/Button/Button';
import ConfirmModal from 'CommonUI/src/Components/Modal/ConfirmModal';
@@ -24,7 +22,7 @@ import { ErrorFunction, VoidFunction } from 'Common/Types/FunctionTypes';
const Settings: FunctionComponent = (): ReactElement => {
const [showKeyModal, setShowKeyModal] = useState<boolean>(false);
const [currentProbe, setCurrentProbe] = useState<JSONObject | null>(null);
const [currentProbe, setCurrentProbe] = useState<Probe | null>(null);
return (
<Page
@@ -57,9 +55,7 @@ const Settings: FunctionComponent = (): ReactElement => {
openInNewTab={true}
title="Need help with setting up Global Probes?"
description="Here is a guide which will help you get set up"
link={URL.fromString(
'https://github.com/OneUptime/oneuptime/blob/master/Docs/Probe/CustomProbe.md'
)}
link={Route.fromString('/docs/probe/custom-probe')}
/>
<ModelTable<Probe>
@@ -81,7 +77,6 @@ const Settings: FunctionComponent = (): ReactElement => {
modelAPI={AdminModelAPI}
noItemsMessage={'No probes found.'}
showRefreshButton={true}
showFilterButton={true}
onBeforeCreate={(item: Probe) => {
item.isGlobalProbe = true;
return Promise.resolve(item);
@@ -130,7 +125,7 @@ const Settings: FunctionComponent = (): ReactElement => {
title: 'Show ID and Key',
buttonStyleType: ButtonStyleType.NORMAL,
onClick: async (
item: JSONObject,
item: Probe,
onCompleteAction: VoidFunction,
onError: ErrorFunction
) => {
@@ -146,6 +141,22 @@ const Settings: FunctionComponent = (): ReactElement => {
},
},
]}
filters={[
{
field: {
name: true,
},
title: 'Name',
type: FieldType.Text,
},
{
field: {
description: true,
},
title: 'Description',
type: FieldType.Text,
},
]}
columns={[
{
field: {
@@ -153,8 +164,8 @@ const Settings: FunctionComponent = (): ReactElement => {
},
title: 'Name',
type: FieldType.Text,
isFilterable: true,
getElement: (item: JSONObject): ReactElement => {
getElement: (item: Probe): ReactElement => {
return <ProbeElement probe={item} />;
},
},
@@ -164,7 +175,6 @@ const Settings: FunctionComponent = (): ReactElement => {
},
title: 'Description',
type: FieldType.Text,
isFilterable: true,
},
{
field: {
@@ -172,15 +182,12 @@ const Settings: FunctionComponent = (): ReactElement => {
},
title: 'Status',
type: FieldType.Text,
isFilterable: false,
getElement: (item: JSONObject): ReactElement => {
getElement: (item: Probe): ReactElement => {
if (
item &&
item['lastAlive'] &&
OneUptimeDate.getNumberOfMinutesBetweenDates(
OneUptimeDate.fromString(
item['lastAlive'] as string
),
OneUptimeDate.fromString(item['lastAlive']),
OneUptimeDate.getCurrentDate()
) < 5
) {

View File

@@ -72,16 +72,37 @@ const Users: FunctionComponent = (): ReactElement => {
},
]}
showRefreshButton={true}
showFilterButton={true}
viewPageRoute={Navigation.getCurrentRoute()}
columns={[
filters={[
{
field: {
name: true,
},
title: 'Full Name',
type: FieldType.Text,
},
{
field: {
email: true,
},
title: 'Email',
type: FieldType.Email,
},
{
field: {
createdAt: true,
},
title: 'Created At',
type: FieldType.DateTime,
},
]}
columns={[
{
field: {
name: true,
},
title: 'Full Name',
type: FieldType.Text,
isFilterable: true,
},
{
field: {
@@ -89,7 +110,6 @@ const Users: FunctionComponent = (): ReactElement => {
},
title: 'Email',
type: FieldType.Email,
isFilterable: true,
},
{
field: {
@@ -97,7 +117,6 @@ const Users: FunctionComponent = (): ReactElement => {
},
title: 'Created At',
type: FieldType.DateTime,
isFilterable: true,
},
]}
/>

View File

@@ -3,7 +3,8 @@
// these options are overrides used only by ts-node
// same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable
"compilerOptions": {
"module": "commonjs"
"module": "commonjs",
"resolveJsonModule": true,
}
},
"compilerOptions": {
@@ -105,6 +106,7 @@
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
"skipLibCheck": true, /* Skip type checking all .d.ts files. */
"resolveJsonModule": true
}
}

View File

@@ -14,6 +14,10 @@ ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
# Install bash.
RUN apk add bash && apk add curl
@@ -29,12 +33,16 @@ RUN mkdir /usr/src
WORKDIR /usr/src/Common
COPY ./Common/package*.json /usr/src/Common/
# Set version in ./Common/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Common/package.json
RUN npm install
COPY ./Common /usr/src/Common
WORKDIR /usr/src/Model
COPY ./Model/package*.json /usr/src/Model/
# Set version in ./Model/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Model/package.json
RUN npm install
COPY ./Model /usr/src/Model
@@ -42,6 +50,8 @@ COPY ./Model /usr/src/Model
WORKDIR /usr/src/CommonServer
COPY ./CommonServer/package*.json /usr/src/CommonServer/
# Set version in ./CommonServer/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/CommonServer/package.json
RUN npm install
COPY ./CommonServer /usr/src/CommonServer
@@ -53,6 +63,8 @@ WORKDIR /usr/src/app
# Install app dependencies
COPY ./App/package*.json /usr/src/app/
# Set version in ./App/package.json to the APP_VERSION
RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/app/package.json
RUN npm install
# Expose ports.

View File

@@ -16,58 +16,74 @@ import StatusServiceHandler from './Service/Status';
import DataTypeServiceHandler from './Service/DataType';
import Dictionary from 'Common/Types/Dictionary';
import { StaticPath } from './Utils/Config';
import FeatureSet from 'CommonServer/Types/FeatureSet';
const ResourceDictionary: Dictionary<ModelDocumentation> =
ResourceUtil.getResourceDictionaryByPath();
const APIReferenceFeatureSet: FeatureSet = {
init: async (): Promise<void> => {
const ResourceDictionary: Dictionary<ModelDocumentation> =
ResourceUtil.getResourceDictionaryByPath();
const app: ExpressApplication = Express.getExpressApp();
const app: ExpressApplication = Express.getExpressApp();
app.use('/reference', ExpressStatic(StaticPath, { maxAge: 2592000 }));
app.use('/reference', ExpressStatic(StaticPath, { maxAge: 2592000 }));
// Index page
app.get(['/reference'], (_req: ExpressRequest, res: ExpressResponse) => {
return res.redirect('/reference/introduction');
});
// Index page
app.get(
['/reference'],
(_req: ExpressRequest, res: ExpressResponse) => {
return res.redirect('/reference/introduction');
}
);
app.get(
['/reference/page-not-found'],
(req: ExpressRequest, res: ExpressResponse) => {
return PageNotFoundServiceHandler.executeResponse(req, res);
}
);
app.get(
['/reference/page-not-found'],
(req: ExpressRequest, res: ExpressResponse) => {
return PageNotFoundServiceHandler.executeResponse(req, res);
}
);
// All Pages
app.get(['/reference/:page'], (req: ExpressRequest, res: ExpressResponse) => {
const page: string | undefined = req.params['page'];
// All Pages
app.get(
['/reference/:page'],
(req: ExpressRequest, res: ExpressResponse) => {
const page: string | undefined = req.params['page'];
if (!page) {
return PageNotFoundServiceHandler.executeResponse(req, res);
}
if (!page) {
return PageNotFoundServiceHandler.executeResponse(req, res);
}
const currentResource: ModelDocumentation | undefined =
ResourceDictionary[page];
const currentResource: ModelDocumentation | undefined =
ResourceDictionary[page];
if (req.params['page'] === 'permissions') {
return PermissionServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'authentication') {
return AuthenticationServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'pagination') {
return PaginationServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'errors') {
return ErrorServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'introduction') {
return IntroductionServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'status') {
return StatusServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'data-types') {
return DataTypeServiceHandler.executeResponse(req, res);
} else if (currentResource) {
return ModelServiceHandler.executeResponse(req, res);
}
// page not found
return PageNotFoundServiceHandler.executeResponse(req, res);
});
if (req.params['page'] === 'permissions') {
return PermissionServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'authentication') {
return AuthenticationServiceHandler.executeResponse(
req,
res
);
} else if (req.params['page'] === 'pagination') {
return PaginationServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'errors') {
return ErrorServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'introduction') {
return IntroductionServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'status') {
return StatusServiceHandler.executeResponse(req, res);
} else if (req.params['page'] === 'data-types') {
return DataTypeServiceHandler.executeResponse(req, res);
} else if (currentResource) {
return ModelServiceHandler.executeResponse(req, res);
}
// page not found
return PageNotFoundServiceHandler.executeResponse(req, res);
}
);
app.get('/reference/*', (req: ExpressRequest, res: ExpressResponse) => {
return PageNotFoundServiceHandler.executeResponse(req, res);
});
app.get('/reference/*', (req: ExpressRequest, res: ExpressResponse) => {
return PageNotFoundServiceHandler.executeResponse(req, res);
});
},
};
export default APIReferenceFeatureSet;

View File

@@ -18,7 +18,7 @@ export default class ServiceHandler {
pageData.featuredResources = FeaturedResources;
pageTitle = 'Introduction';
pageDescription = 'API Documentation for OneUptime';
pageDescription = 'API Reference for OneUptime';
return res.render(`${ViewsPath}/pages/index`, {
page: page,

View File

@@ -29,7 +29,7 @@
</svg>
</div>
</div>
<h1 class="font-bold text-xl">API Documentation</h1>
<h1 class="font-bold text-xl">API Reference</h1>
<p class="lead">Use the OneUptime API to access any resource in your projects, create automated
workflows, and more
and

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
# Development
# Local Development
For local development you need to use docker-compose.dev.yml file.

View File

@@ -0,0 +1,49 @@
### OneUptime: The Complete Open-Source Observability Platform
OneUptime is a comprehensive solution for monitoring and managing your online services. Whether you need to check the availability of your website, dashboard, API, or any other online resource, OneUptime can alert your team when downtime happens and keep your customers informed with a status page. OneUptime also helps you handle incidents, set up on-call rotations, run tests, secure your services, analyze logs, track performance, and debug errors.
OneUptime replaces multiple tools with one integrated platform:
##### Uptime Monitoring
Monitor the availability and response time of your online services from multiple locations around the world. Get notified via email, SMS, Slack, or other channels when something goes wrong. Replace tools like Pingdom.
##### Status Pages
Communicate with your customers and stakeholders during downtime or maintenance. Create a custom-branded status page that shows the current status and history of your services. Replace tools like StatusPage.io.
##### Incident Management
Manage incidents from start to finish with a collaborative workflow. Create incident reports, assign tasks, update stakeholders, and document resolutions. Replace tools like Incident.io.
##### On Call and Alerts
Schedule on-call shifts for your team and define escalation policies. Ensure that the right person is notified at the right time when an incident occurs. Replace tools like PagerDuty.
##### Logs Management
Collect, store, and analyze logs from your online services. Search, filter, and visualize log data to gain insights and troubleshoot issues. Replace tools like Loggly.
##### Workflows
Integrate OneUptime with your existing tools and automate your workflows. Integrate with tools like Slack, Jira, GitHub, and 5000+ more.
##### Application Performance Monitoring
Measure and optimize the performance of your online apps and services. Track key metrics such as traces, response time, throughput, error rate, and user satisfaction. Replace tools like NewRelic and DataDog.
##### Error Tracking
Detect and diagnose errors in your online services. Get detailed error reports with stack traces, context, and user feedback. Replace tools like Sentry.
##### Reliability Autopilot
Scan your code and fix performance issues and errors automatically. Get recommendations for improving the reliability of your online services.

View File

@@ -36,13 +36,13 @@ You can find the full list of supported sources [here](https://www.fluentd.org/d
On the telemetry service page, click on "Create Telemetry Service" button.
![Create Service](/Docs/Telemetry/Images/CreateService.png)
![Create Service](/docs/static/images/CreateService.png)
Once you create a telemetry service, click on "View Service" and you will be redirected to the telemetry service page.
Click on View Service Token and copy the token. You will need this token to configure the telemetry service. **Please keep this token safe.**
![View Service](/Docs/Telemetry/Images/ViewServiceToken.png)
![View Service](/docs/static/images/ViewServiceToken.png)
## Configuration

View File

@@ -8,13 +8,13 @@ After you sign up to OneUptime and create a project. Click on more in the Naviga
On the telemetry service page, click on "Create Telemetry Service" button.
![Create Service](/Docs/Telemetry/Images/CreateService.png)
![Create Service](/docs/static/images/CreateService.png)
Once you create a telemetry service, click on "View Service" and you will be redirected to the telemetry service page.
Click on View Service Token and copy the token. You will need this token to configure the telemetry service. Please keep this token safe.
![View Service](/Docs/Telemetry/Images/ViewServiceToken.png)
![View Service](/docs/static/images/ViewServiceToken.png)
### Step 2 - Configure the telemetry service in your application.

View File

@@ -5,18 +5,89 @@ import Express, {
ExpressStatic,
ExpressApplication,
} from 'CommonServer/Utils/Express';
import { StaticPath, ViewsPath } from './Utils/Config';
import { ContentPath, StaticPath, ViewsPath } from './Utils/Config';
import DocsNav, { NavGroup, NavLink } from './Utils/Nav';
import LocalFile from 'CommonServer/Utils/LocalFile';
import DocsRender from './Utils/Render';
import logger from 'CommonServer/Utils/Logger';
import FeatureSet from 'CommonServer/Types/FeatureSet';
const app: ExpressApplication = Express.getExpressApp();
const DocsFeatureSet: FeatureSet = {
init: async (): Promise<void> => {
const app: ExpressApplication = Express.getExpressApp();
app.get('/docs', (_req: ExpressRequest, res: ExpressResponse) => {
res.render(`${ViewsPath}/index`, {
support: false,
footerCards: true,
cta: true,
blackLogo: false,
requestDemoCta: false,
});
});
app.get('/docs', (_req: ExpressRequest, res: ExpressResponse) => {
res.redirect('/docs/introduction/getting-started');
});
app.use('/docs/static', ExpressStatic(StaticPath));
app.get(
'/docs/:categorypath/:pagepath',
async (_req: ExpressRequest, res: ExpressResponse) => {
try {
const fullPath: string =
`${_req.params['categorypath']}/${_req.params['pagepath']}`.toLowerCase();
// read file from Content folder.
let contentInMarkdown: string = await LocalFile.read(
`${ContentPath}/${fullPath}.md`
);
// remove first line from content because we dont want to show title in content. Title is already in nav.
contentInMarkdown = contentInMarkdown
.split('\n')
.slice(1)
.join('\n');
const renderedContent: string = await DocsRender.render(
contentInMarkdown
);
const currentCategory: NavGroup | undefined = DocsNav.find(
(category: NavGroup) => {
return category.links.find((link: NavLink) => {
return link.url
.toLocaleLowerCase()
.includes(fullPath);
});
}
);
const currrentNavLink: NavLink | undefined =
currentCategory?.links.find((link: NavLink) => {
return link.url
.toLocaleLowerCase()
.includes(fullPath);
});
if (!currentCategory || !currrentNavLink) {
// render not found.
res.status(404);
return res.render(`${ViewsPath}/NotFound`, {
nav: DocsNav,
});
}
res.render(`${ViewsPath}/Index`, {
nav: DocsNav,
content: renderedContent,
category: currentCategory,
link: currrentNavLink,
githubPath: fullPath,
});
} catch (err) {
logger.error(err);
res.status(500);
return res.render(`${ViewsPath}/ServerError`, {
nav: DocsNav,
});
}
}
);
app.use('/docs/static', ExpressStatic(StaticPath));
},
};
export default DocsFeatureSet;

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

View File

@@ -50,5 +50,5 @@ nvm alias default node
nvm use default
# Now install
npm install -g ts-node
npm install -g tsx
npm install -g @oneuptime/infrastructure-agent

View File

@@ -1,2 +1,3 @@
export const ViewsPath: string = '/usr/src/app/FeatureSet/Docs/Views';
export const StaticPath: string = '/usr/src/app/FeatureSet/Docs/Static';
export const ContentPath: string = '/usr/src/app/FeatureSet/Docs/Content';

View File

@@ -0,0 +1,63 @@
export interface NavLink {
title: string;
url: string;
}
export interface NavGroup {
title: string;
links: NavLink[];
}
const DocsNav: NavGroup[] = [
{
title: 'Introduction',
links: [
{
title: 'Getting Started',
url: '/docs/introduction/getting-started',
},
],
},
{
title: 'Installation',
links: [
{
title: 'Local Development',
url: '/docs/installation/local-development',
},
{
title: 'Docker Compose',
url: '/docs/installation/docker-compose',
},
{
title: 'Kubernetes and Helm',
url: 'https://artifacthub.io/packages/helm/oneuptime/oneuptime',
},
],
},
{
title: 'Monitor',
links: [
{
title: 'JavaScript Expressions',
url: '/docs/monitor/javascript-expression',
},
],
},
{
title: 'Probe',
links: [
{ title: 'Custom Probes', url: '/docs/probe/custom-probe' },
{ title: 'IP Addresses', url: '/docs/probe/ip-address' },
],
},
{
title: 'Telemetry',
links: [
{ title: 'OpenTelemetry', url: '/docs/telemetry/open-telemetry' },
{ title: 'Fluentd', url: '/docs/telemetry/fluentd' },
],
},
];
export default DocsNav;

View File

@@ -0,0 +1,50 @@
import { Renderer, marked } from 'marked';
export default class DocsRender {
public static async render(markdownContent: string): Promise<string> {
const renderer: Renderer = this.getBlogRenderer();
return await marked(markdownContent, {
renderer: renderer,
});
}
private static getBlogRenderer(): Renderer {
const renderer: Renderer = new Renderer();
renderer.paragraph = function (text) {
return `<p class="mt-2 mb-2 leading-8 text-gray-600">${text}</p>`;
};
renderer.blockquote = function (quote) {
return `<blockquote class="p-4 pt-1 pb-1 my-4 border-s-4 border-indigo-500">
<div class="leading-8 text-gray-600">${quote}</div>
</blockquote>`;
};
renderer.image = function (href, _title, text) {
return `<img src="${href}" alt="${text}" class="rounded-md shadow-md" />`;
};
renderer.code = function (code, language) {
return `<pre class="language-${language} rounded-md"><code class="language-${language} rounded-md">${code}</code></pre>`;
};
renderer.heading = function (text, level) {
if (level === 1) {
return `<h1 class="my-5 mt-8 text-4xl font-bold tracking-tight text-gray-800">${text}</h1>`;
} else if (level === 2) {
return `<h2 class="my-5 mt-8 text-3xl font-bold tracking-tight text-gray-800">${text}</h2>`;
} else if (level === 3) {
return `<h3 class="my-5 mt-8 text-2xl font-bold tracking-tight text-gray-800">${text}</h3>`;
} else if (level === 4) {
return `<h4 class="my-5 mt-8 text-xl font-bold tracking-tight text-gray-800">${text}</h4>`;
} else if (level === 5) {
return `<h5 class="my-5 mt-8 text-lg font-bold tracking-tight text-gray-800">${text}</h5>`;
}
return `<h6 class="my-5 tracking-tight font-bold text-gray-800">${text}</h6>`;
};
return renderer;
}
}

View File

@@ -0,0 +1,34 @@
<html lang="en" class="h-full antialiased __variable_e66fe9 __variable_b436a8 light nbuofyfqi idc0_350"
style="color-scheme: light;">
<head>
<%- include('./Partials/Head.ejs') %>
</head>
<body class="flex min-h-full bg-white ">
<div class="flex w-full flex-col">
<%- include('./Partials/Header.ejs') %>
<div class="relative mx-auto flex w-full max-w-8xl flex-auto justify-center sm:px-2 lg:px-8 xl:px-12">
<div class="hidden lg:relative lg:block lg:flex-none">
<div class="absolute inset-y-0 right-0 w-[50vw] bg-slate-50 "></div>
<div
class="absolute bottom-0 right-0 top-16 hidden h-12 w-px bg-gradient-to-t from-slate-800 ">
</div>
<div class="absolute bottom-0 right-0 top-28 hidden w-px bg-slate-800 "></div>
<div
class="sticky top-[4.75rem] -ml-0.5 h-[calc(100vh-4.75rem)] w-64 overflow-y-auto overflow-x-hidden py-16 pl-0.5 pr-8 xl:w-72 xl:pr-16">
<%- include('./Partials/Nav.ejs') %>
</div>
</div>
<div class="min-w-0 max-w-2xl flex-auto px-4 py-16 lg:max-w-none lg:pl-8 lg:pr-0 xl:px-16">
<%- include('./Partials/Content.ejs', { category: category, link: link, content: content }) %>
<%- include('./Partials/OpenSourceCommitment.ejs', { githubPath: githubPath }) %>
</div>
</div>
</div>
</body>
</html>

View File

View File

@@ -0,0 +1,11 @@
<article>
<header class="mb-9 space-y-1">
<p class="text-base font-bold text-sky-500"><%- category.title %></p>
<h1 class="font-bold text-3xl tracking-tight text-slate-900 "><%- link.title %>
</h1>
</header>
<div
class="prose prose-slate max-w-none prose-headings:scroll-mt-28 prose-headings:font-display prose-headings:font-normal lg:prose-headings:scroll-mt-[8.5rem] prose-lead:text-slate-500 prose-a:font-semibold prose-a:no-underline prose-a:shadow-[inset_0_-2px_0_0_var(--tw-prose-background,#fff),inset_0_calc(-1*(var(--tw-prose-underline-size,4px)+2px))_0_0_var(--tw-prose-underline,theme(colors.sky.300))] hover:prose-a:[--tw-prose-underline-size:6px] prose-pre:rounded-xl prose-pre:bg-slate-900 prose-pre:shadow-lg ">
<%- content %>
</div>
</article>

View File

@@ -0,0 +1,15 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="preload" href="/docs/static/fonts/f1.woff2" as="font" crossorigin="" type="font/woff2">
<link rel="preload" href="/docs/static/fonts/f2.woff2" as="font" crossorigin="" type="font/woff2">
<link rel="stylesheet" href="/docs/static/css/style.css" crossorigin="" data-precedence="next">
<title>OneUptime Documentation</title>
<meta name="description"
content="Cache every single thing your app could ever do ahead of time, so your code never even has to run at all.">
<link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="16x16">
<meta name="next-size-adjust">
<link rel="stylesheet" href="/docs/static/css/style.css" crossorigin="" data-precedence="next" />
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/a11y-dark.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>

View File

@@ -0,0 +1,17 @@
<header
class="sticky top-0 z-50 flex flex-none flex-wrap items-center justify-between bg-white px-4 py-5 shadow-md shadow-slate-900/5 transition duration-500 sm:px-6 lg:px-8 ">
<div class="relative flex flex-grow basis-0 items-center"><a aria-label="Home page" href="/">
<img class="h-8 w-auto" src="/img/3-transparent.svg" alt="">
</a></div>
<div class="relative flex basis-0 justify-end gap-6 sm:gap-8 md:flex-grow">
<a class="group" aria-label="GitHub" target="_blank" href="https://github.com/oneuptime/oneuptime"><svg
aria-hidden="true" viewBox="0 0 16 16"
class="h-6 w-6 fill-slate-400 group-hover:fill-slate-500 ">
<path
d="M8 0C3.58 0 0 3.58 0 8C0 11.54 2.29 14.53 5.47 15.59C5.87 15.66 6.02 15.42 6.02 15.21C6.02 15.02 6.01 14.39 6.01 13.72C4 14.09 3.48 13.23 3.32 12.78C3.23 12.55 2.84 11.84 2.5 11.65C2.22 11.5 1.82 11.13 2.49 11.12C3.12 11.11 3.57 11.7 3.72 11.94C4.44 13.15 5.59 12.81 6.05 12.6C6.12 12.08 6.33 11.73 6.56 11.53C4.78 11.33 2.92 10.64 2.92 7.58C2.92 6.71 3.23 5.99 3.74 5.43C3.66 5.23 3.38 4.41 3.82 3.31C3.82 3.31 4.49 3.1 6.02 4.13C6.66 3.95 7.34 3.86 8.02 3.86C8.7 3.86 9.38 3.95 10.02 4.13C11.55 3.09 12.22 3.31 12.22 3.31C12.66 4.41 12.38 5.23 12.3 5.43C12.81 5.99 13.12 6.7 13.12 7.58C13.12 10.65 11.25 11.33 9.47 11.53C9.76 11.78 10.01 12.26 10.01 13.01C10.01 14.08 10 14.94 10 15.21C10 15.42 10.15 15.67 10.55 15.59C13.71 14.53 16 11.53 16 8C16 3.58 12.42 0 8 0Z">
</path>
</svg></a>
</div>
</header>

View File

@@ -0,0 +1,33 @@
<nav class="text-base lg:text-sm">
<ul role="list" class="space-y-9">
<% for(var i=0; i<nav.length; i++) {%>
<li>
<h2 class="font-display font-medium text-slate-900 "><%- nav[i].title -%>
</h2>
<ul role="list"
class="mt-2 space-y-2 border-l-2 border-slate-100 lg:mt-4 lg:space-y-4 lg:border-slate-200 ">
<% if(nav[i].links.length> 0) { %>
<% for(var j=0; j<nav[i].links.length; j++) {%>
<% if(link.url===nav[i].links[j].url) { %>
<li class="relative"><a
class="block w-full pl-3.5 before:pointer-events-none before:absolute before:-left-1 before:top-1/2 before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full font-semibold text-sky-500 before:bg-sky-500"
href="<%- nav[i].links[j].url -%>"><%-
nav[i].links[j].title -%></a>
</li>
<% } else { %>
<li class="relative"><a
class="block w-full pl-3.5 before:pointer-events-none before:absolute before:-left-1 before:top-1/2 before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full text-slate-500 before:hidden before:bg-slate-300 hover:text-slate-600 hover:before:block "
href="<%- nav[i].links[j].url -%>"><%-
nav[i].links[j].title -%></a></li>
<% } %>
<% } %>
<% } %>
</ul>
</li>
<% } %>
</ul>
</nav>

View File

@@ -0,0 +1,22 @@
<div class=" font-medium leading-6 text-gray-900 mt-24">Our Commitment to Open Source
</div>
<div class="mt-2 text-gray-900">
<ul role="list" class="divide-y divide-gray-100 rounded-md border border-gray-200">
<li class="items-center justify-between py-4 pl-4 pr-5 leading-6">
<div class="items-center">
<div class="p-1 space-y-2">
<div>Everything we do at OneUptime is 100% open-source. You can contribute and improve this post here <a class="underline"
target="_blank"
href="https://github.com/OneUptime/oneuptime/tree/master/App/FeatureSet/Docs/Content/<%- githubPath -%>.md">here.</a></div>
</div>
</div>
</li>
</ul>
</div>

View File

@@ -0,0 +1,13 @@
<dl class="mt-12 flex border-t border-slate-200 pt-6 ">
<div class="ml-auto text-right">
<dt class="font-display text-sm font-medium text-slate-900 ">Next</dt>
<dd class="mt-1"><a
class="flex items-center gap-x-1 text-base font-semibold text-slate-500 hover:text-slate-600 "
href="/docs/installation">Installation<svg viewBox="0 0 16 16" aria-hidden="true"
class="h-4 w-4 flex-none fill-current">
<path
d="m9.182 13.423-1.17-1.16 3.505-3.505H3V7.065h8.517l-3.506-3.5L9.181 2.4l5.512 5.511-5.511 5.512Z">
</path>
</svg></a></dd>
</div>
</dl>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -58,7 +58,7 @@ export default (product: string): Product => {
{
question:
'Do I need to buy a monitoring solution to monitor my resources?',
answer: 'PagerDuty needs a seperate monitoring solution that you need to buy which then sends data to PagerDuty for on-call and incident management. OneUptime has a built in monitoring solution as well. You use one product, your team has one dashboard, save time, simplify ops.',
answer: 'PagerDuty needs a separate monitoring solution that you need to buy which then sends data to PagerDuty for on-call and incident management. OneUptime has a built in monitoring solution as well. You use one product, your team has one dashboard, save time, simplify ops.',
},
{
question:
@@ -215,7 +215,7 @@ export default (product: string): Product => {
{
question:
'Do I need to buy a monitoring solution to monitor my resources?',
answer: 'StatusPage.io needs a seperate monitoring solution that you need to buy which then sends data to StatusPage.io. OneUptime has a built in monitoring solution as well. You use one product, your team has one dashboard, save time, simplify ops.',
answer: 'StatusPage.io needs a separate monitoring solution that you need to buy which then sends data to StatusPage.io. OneUptime has a built in monitoring solution as well. You use one product, your team has one dashboard, save time, simplify ops.',
},
{
question:

View File

@@ -59,10 +59,8 @@
}
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/vs2015.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/a11y-dark.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/yaml.min.js"></script>
<script>hljs.highlightAll();</script>
</head>

View File

@@ -314,6 +314,15 @@
<span class="text-sm text-gray-500">On-Call and Alerts</span>
</li>
<li class="flex space-x-3">
<%- include('./Partials/tick-icon') %>
<span class="text-sm text-gray-500">Monitor VM's &amp; Servers</span>
</li>
@@ -324,14 +333,7 @@
<li class="flex space-x-3">
<%- include('./Partials/comingsoon-icon') %>
<span class="text-sm text-gray-500">Monitor VM's &amp; Servers</span>
</li>
<li class="flex space-x-3">

View File

@@ -97,7 +97,12 @@
<ul role="list" class="mt-6 space-y-4">
<li>
<a href="/reference" class="text-sm leading-6 text-gray-600 hover:text-gray-900">API Documentation</a>
<a href="/docs" class="text-sm leading-6 text-gray-600 hover:text-gray-900">Docs</a>
</li>
<li>
<a href="/reference" class="text-sm leading-6 text-gray-600 hover:text-gray-900">API Reference</a>
</li>
<li>

View File

@@ -33,6 +33,29 @@
top: 0;
width: auto;
}
/*Chrome*/
@media screen and (-webkit-min-device-pixel-ratio:0) {
input[type='range']::-webkit-slider-thumb {
width: 20px;
-webkit-appearance: none;
border-radius: 50%;
height: 20px;
cursor: pointer;
background: #4b5563;
}
}
/*Firefox*/
input[type='range']::-moz-range-thumb {
width: 16px;
-webkit-appearance: none;
border-radius: 50%;
height: 16px;
cursor: pointer;
background: #4b5563;
border-color: #4b5563;
}
</style>
<script src="https://cdn.tailwindcss.com"></script>
@@ -55,15 +78,15 @@
</style>
<script>
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
posthog.init('phc_lrbfSHsDc1YOhfbabPI8ncLCKz8eqeGdmu0O6IRKaz1',{api_host:'https://eu.posthog.com', autocapture: false})
!function (t, e) { var o, n, p, r; e.__SV || (window.posthog = e, e._i = [], e.init = function (i, s, a) { function g(t, e) { var o = e.split("."); 2 == o.length && (t = t[o[0]], e = o[1]), t[e] = function () { t.push([e].concat(Array.prototype.slice.call(arguments, 0))) } } (p = t.createElement("script")).type = "text/javascript", p.async = !0, p.src = s.api_host + "/static/array.js", (r = t.getElementsByTagName("script")[0]).parentNode.insertBefore(p, r); var u = e; for (void 0 !== a ? u = e[a] = [] : a = "posthog", u.people = u.people || [], u.toString = function (t) { var e = "posthog"; return "posthog" !== a && (e += "." + a), t || (e += " (stub)"), e }, u.people.toString = function () { return u.toString(1) + ".people (stub)" }, o = "capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []);
posthog.init('phc_lrbfSHsDc1YOhfbabPI8ncLCKz8eqeGdmu0O6IRKaz1', { api_host: 'https://eu.posthog.com', autocapture: false })
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
//check if utm_source is present in the URL and save it to localstorage.
if(posthog){
if (posthog) {
posthog.capture('home/page_view', {
'page': {
'path': window.location.pathname,
@@ -117,4 +140,4 @@
<link rel="icon" href="/img/ou-wb.svg">
<link rel="image_src" type="image/png" href="/img/hou-wb.svg">
<link rel="canonical" href="/">
<link rel="manifest" href="/manifest.json">
<link rel="manifest" href="/manifest.json">

View File

@@ -39,7 +39,7 @@
</div>
</a>
</div>
<h1 class="text-4xl font-bold tracking-tight text-gray-900 sm:text-6xl">How engineers build reliable software.</h1>
<h1 class="text-4xl font-bold tracking-tight text-gray-900 sm:text-6xl">Build reliable software.</h1>
<p class="mt-6 text-xl sm:text-2xl leading-8 text-gray-600">Monitor, Observe, Debug, Resolve. Everything you need to build reliable software in one open source platform.</p>
<div class="mt-10 flex items-center justify-center gap-x-6">
<a href="/accounts/register" class="rounded-md bg-indigo-600 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">Get started</a>

View File

@@ -71,7 +71,7 @@
</div>
<div class="mt-6">
<h2 class="text-3xl font-bold tracking-tight text-gray-900">Monitor Anything.</h2>
<p class="mt-4 text-lg text-gray-500">Websites, API, IPv4, IPv6, Docker containers, Servers, VM's or send data inbound (most of these are coming very soon). OneUptime can monitor any resource you have.</p>
<p class="mt-4 text-lg text-gray-500">Websites, API, IPv4, IPv6, Docker containers, Servers, VM's or send data inbound. OneUptime can monitor any resource you have.</p>
<div class="mt-6">
<a href="/accounts/register" class="rounded-md bg-indigo-600 px-3.5 py-1.5 text-base font-semibold leading-7 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 hover:text-white">Get started</a>

View File

@@ -237,7 +237,7 @@
<div class="overflow-hidden rounded-lg shadow-lg ring-1 ring-black ring-opacity-5">
<div class="relative grid gap-6 bg-white px-5 py-6 sm:gap-8 sm:p-8">
<a href="/reference" class="-m-3 flex items-start rounded-lg p-3 hover:bg-gray-50">
<a href="/docs" class="-m-3 flex items-start rounded-lg p-3 hover:bg-gray-50">
<!-- Heroicon name: outline/lifebuoy -->
<svg class="h-6 w-6 flex-shrink-0 text-indigo-600" xmlns="http://www.w3.org/2000/svg" fill="none"
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
@@ -246,7 +246,21 @@
</svg>
<div class="ml-4">
<p class="text-base font-medium text-gray-900">API Documentation</p>
<p class="text-base font-medium text-gray-900">Docs</p>
<p class="mt-1 text-sm text-gray-500">Learn more about OneUptime by reading our docs.</p>
</div>
</a>
<a href="/reference" class="-m-3 flex items-start rounded-lg p-3 hover:bg-gray-50">
<!-- Heroicon name: outline/lifebuoy -->
<svg class="h-6 w-6 flex-shrink-0 text-indigo-600" xmlns="http://www.w3.org/2000/svg" fill="none"
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
<path stroke-linecap="round" stroke-linejoin="round" d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z" />
</svg>
<div class="ml-4">
<p class="text-base font-medium text-gray-900">API Reference</p>
<p class="mt-1 text-sm text-gray-500">Connect OneUptime with the rest of your software stack.</p>
</div>
</a>

View File

@@ -393,140 +393,200 @@
</div>
</div>
<div class="mx-auto mt-16 max-w-2xl rounded-lg ring-1 ring-gray-200 sm:mt-20 lg:mx-0 lg:flex lg:max-w-none">
<div class="p-8 sm:p-10 lg:flex-auto">
<h3 class="text-2xl font-bold tracking-tight text-gray-900">Active Monitoring</h3>
<p class="mt-6 text-base leading-7 text-gray-600">Pricing for montoring website, API, IP addresses and more.
We pass on the cost of monitoring to you, so you can focus on your core business activities and maintain
uptime. </p>
<div class="mt-10 flex items-center gap-x-4">
<h4 class="flex-none text-sm font-semibold leading-6 text-indigo-600">Whats included</h4>
<div class="h-px flex-auto bg-gray-100"></div>
<div class="mx-auto mt-16 max-w-2xl rounded-lg ring-1 ring-gray-200 sm:mt-20 lg:mx-0 lg:max-w-none">
<div class="lg:flex">
<div class="p-8 sm:p-10 lg:flex-auto">
<h3 class="text-2xl font-bold tracking-tight text-gray-900">Active Monitoring</h3>
<p class="mt-6 text-base leading-7 text-gray-600">Pricing for montoring website, API, IP addresses and
more.
We pass on the cost of monitoring to you, so you can focus on your core business activities and maintain
uptime. </p>
<div class="mt-10 flex items-center gap-x-4">
<h4 class="flex-none text-sm font-semibold leading-6 text-indigo-600">Whats included</h4>
<div class="h-px flex-auto bg-gray-100"></div>
</div>
<ul role="list"
class="mt-8 grid grid-cols-1 gap-4 text-sm leading-6 text-gray-600 sm:grid-cols-2 sm:gap-6">
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Monitor from multiple locations.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Monitor resource every minute.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Logs stored for 90 days. Custom retention available for enterprise customers.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Set custom criteria based on response body, headers, status, etc.
</li>
</ul>
</div>
<ul role="list" class="mt-8 grid grid-cols-1 gap-4 text-sm leading-6 text-gray-600 sm:grid-cols-2 sm:gap-6">
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Monitor from multiple locations.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Monitor resource every minute.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Logs stored for 90 days. Custom retention available for enterprise customers.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Set custom criteria based on response body, headers, status, etc.
</li>
</ul>
</div>
<div class="-mt-2 p-2 lg:mt-0 lg:w-full lg:max-w-md lg:flex-shrink-0">
<div
class="rounded-lg bg-gray-50 py-10 text-center ring-1 ring-inset ring-gray-900/5 lg:flex lg:flex-col lg:justify-center lg:py-16">
<div class="mx-auto max-w-xs px-8">
<p class="text-base font-semibold text-gray-600">Only pay for what you use.</p>
<p class="mt-6 flex items-baseline justify-center gap-x-2">
<div class="text-5xl font-bold tracking-tight text-gray-900">$1</div>
<div class="text-sm font-semibold leading-6 tracking-wide text-gray-600">per monitor per month</div>
</p>
<a href="/accounts/register"
class="mt-8 block w-full hover:text-white rounded-md border border-gray-800 bg-gray-800 py-2 text-center text-sm font-semibold text-white hover:bg-gray-900">Free
14 day trial</a>
<p class="mt-6 text-xs leading-5 text-gray-600">If you have more than 100 monitors, contact us for a
discount.</p>
<div class="-mt-2 p-2 lg:mt-0 lg:w-full lg:max-w-md lg:flex-shrink-0">
<div
class="rounded-lg bg-gray-50 py-10 text-center ring-1 ring-inset ring-gray-900/5 lg:flex lg:flex-col lg:justify-center lg:py-16">
<div class="mx-auto max-w-xs px-8">
<p class="text-base font-semibold text-gray-600">Only pay for what you use.</p>
<p class="mt-6 flex items-baseline justify-center gap-x-2">
<div id="total-monitor-price" class="text-5xl font-bold tracking-tight text-gray-900">$1</div>
<div id="total-monitor-price-description"
class="text-sm font-semibold leading-6 tracking-wide text-gray-600">per monitor per month</div>
</p>
<a href="/accounts/register"
class="mt-8 block w-full hover:text-white rounded-md border border-gray-800 bg-gray-800 py-2 text-center text-sm font-semibold text-white hover:bg-gray-900">Free
14 day trial</a>
<p class="mt-6 text-xs leading-5 text-gray-600">If you have more than 100 monitors, contact us for a
discount.</p>
</div>
</div>
</div>
</div>
<div class="p-8 sm:p-10">
<div class="flex justify-between">
<p class="text-base font-semibold text-gray-500">Select Number of Active
Monitors</p>
<p id="total-number-of-monitors" class="text-base font-semibold text-gray-600">1 Monitor</p>
</div>
<input id="default-range" type="range" value="1" max="100" min="0" step="1"
onchange="updateMonitorPrice(this.value)" oninput="updateMonitorPrice(this.value)"
class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer ">
<div>
<p id="more-than-100-monitors-message" style="display: none;" class="text-base text-gray-600">If you have
more than 100 monitors, contact sales@oneuptime.com for a discount.</p>
</div>
</div>
</div>
<div class="mx-auto mt-16 max-w-2xl rounded-lg ring-1 ring-gray-200 sm:mt-20 lg:mx-0 lg:flex lg:max-w-none">
<div class="p-8 sm:p-10 lg:flex-auto">
<h3 class="text-2xl font-bold tracking-tight text-gray-900">Telemetry: Logs, Traces and Metrics.</h3>
<p class="mt-6 text-base leading-7 text-gray-600">We charge $0.10 for every GB of data ingested (for 15 day
retention). It's the lowest in the industry and 8X cheaper than DataDog. </p>
<div class="mt-10 flex items-center gap-x-4">
<h4 class="flex-none text-sm font-semibold leading-6 text-indigo-600">Whats included</h4>
<div class="h-px flex-auto bg-gray-100"></div>
<div class="mx-auto mt-16 max-w-2xl rounded-lg ring-1 ring-gray-200 sm:mt-20 lg:mx-0 lg:max-w-none">
<div class="lg:flex">
<div class="p-8 sm:p-10 lg:flex-auto">
<h3 class="text-2xl font-bold tracking-tight text-gray-900">Telemetry: Logs, Traces and Metrics.</h3>
<p class="mt-6 text-base leading-7 text-gray-600">We charge $0.10 for every GB of data ingested (for 15
day
retention). It's the lowest in the industry and 8X cheaper than DataDog. </p>
<div class="mt-10 flex items-center gap-x-4">
<h4 class="flex-none text-sm font-semibold leading-6 text-indigo-600">Whats included</h4>
<div class="h-px flex-auto bg-gray-100"></div>
</div>
<ul role="list"
class="mt-8 grid grid-cols-1 gap-4 text-sm leading-6 text-gray-600 sm:grid-cols-2 sm:gap-6">
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Ingest logs, traces and metrics from any service or app.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Custom data retention. We store your data for 15 days by default.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Search TB's of data in seconds.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Native integration with OpenTelemetry.
</li>
</ul>
</div>
<ul role="list" class="mt-8 grid grid-cols-1 gap-4 text-sm leading-6 text-gray-600 sm:grid-cols-2 sm:gap-6">
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Ingest logs, traces and metrics from any service or app.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Custom data retention. We store your data for 15 days by default.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Search TB's of data in seconds.
</li>
<li class="flex gap-x-3">
<svg class="h-6 w-5 flex-none text-indigo-600" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z"
clip-rule="evenodd" />
</svg>
Native integration with OpenTelemetry.
</li>
</ul>
</div>
<div class="-mt-2 p-2 lg:mt-0 lg:w-full lg:max-w-md lg:flex-shrink-0">
<div
class="rounded-lg bg-gray-50 py-10 text-center ring-1 ring-inset ring-gray-900/5 lg:flex lg:flex-col lg:justify-center lg:py-16">
<div class="mx-auto max-w-xs px-8">
<p class="text-base font-semibold text-gray-600">Only pay for what you use.</p>
<p class="mt-6 flex items-baseline justify-center gap-x-2">
<div class="text-5xl font-bold tracking-tight text-gray-900">$0.10</div>
<div class="text-sm font-semibold leading-6 tracking-wide text-gray-600">per GB ingested (15 day
retention)</div>
</p>
<a href="/accounts/register"
class="mt-8 block w-full hover:text-white rounded-md border border-gray-800 bg-gray-800 py-2 text-center text-sm font-semibold text-white hover:bg-gray-900">Free
14 day trial</a>
<p class="mt-6 text-xs leading-5 text-gray-600">If you ingest more than 10 TB of data every month. Contact us for a discount.</p>
<div class="-mt-2 p-2 lg:mt-0 lg:w-full lg:max-w-md lg:flex-shrink-0">
<div
class="rounded-lg bg-gray-50 py-10 text-center ring-1 ring-inset ring-gray-900/5 lg:flex lg:flex-col lg:justify-center lg:py-16">
<div class="mx-auto max-w-xs px-8">
<p class="text-base font-semibold text-gray-600">Only pay for what you use.</p>
<p class="mt-6 flex items-baseline justify-center gap-x-2">
<div id="total-telemetry-price" class="text-5xl font-bold tracking-tight text-gray-900">$0.10</div>
<div id="total-telemetry-price-description"
class="text-sm font-semibold leading-6 tracking-wide text-gray-600">per GB ingested (15 day
retention)</div>
</p>
<a href="/accounts/register"
class="mt-8 block w-full hover:text-white rounded-md border border-gray-800 bg-gray-800 py-2 text-center text-sm font-semibold text-white hover:bg-gray-900">Free
14 day trial</a>
<p class="mt-6 text-xs leading-5 text-gray-600">If you ingest more than 1 TB of data every month.
Contact us for a discount.</p>
</div>
</div>
</div>
</div>
<div class="p-8 sm:p-10">
<div class="flex justify-between">
<p class="text-base font-semibold text-gray-500">GB's ingested per month</p>
<p id="total-number-of-gb-ingested" class="text-base font-semibold text-gray-600">1 GB</p>
</div>
<input id="default-range" type="range" value="1" max="1000" min="0" step="1"
onchange="updateTelemetryPrice(this.value, null)" oninput="updateTelemetryPrice(this.value, null)"
class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer ">
<div>
<p id="more-than-10-tb-ingested-message" style="display: none;" class="text-base text-gray-600">If you are
ingesting more than 1 TB of data every month, contact sales@oneuptime.com for a discount.</p>
</div>
</div>
<div class="p-8 sm:p-10 -mt-8">
<div class="flex justify-between">
<p class="text-base font-semibold text-gray-500">Data Rentention (in days)</p>
<p id="data-rentention-in-days" class="text-base font-semibold text-gray-600">15 Days</p>
</div>
<input id="default-range" type="range" value="15" max="180" min="0" step="1"
onchange="updateTelemetryPrice(null, this.value)" oninput="updateTelemetryPrice(null,this.value)"
class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer ">
<div>
<p id="more-than-6-months-rentention" style="display: none;" class="text-base text-gray-600">If you're
looking for data rention of more than 6 months. contact sales@oneuptime.com for a discount. </p>
</div>
</div>
</div>
@@ -553,11 +613,6 @@
</div>
</div>
</div>
@@ -1336,6 +1391,103 @@
function updateMonitorPrice(monitorCount) {
if (typeof monitorCount !== 'number') {
monitorCount = parseInt(monitorCount);
}
const perMonitorPriceInUSDPerMonth = 1;
const monthlyPrice = monitorCount * perMonitorPriceInUSDPerMonth;
// set the price in the UI
document.getElementById("total-monitor-price").innerHTML = `$${monthlyPrice}`;
// set description
document.getElementById("total-monitor-price-description").innerHTML = `for ${monitorCount} monitors per month.`;
// update monitor count - total-number-of-monitors
document.getElementById("total-number-of-monitors").innerHTML = monitorCount + " Monitors";
if (monitorCount <= 1) {
document.getElementById("total-number-of-monitors").innerHTML = monitorCount + " Monitor";
}
if (monitorCount === 100) {
// show more than 100 monitors message
document.getElementById("more-than-100-monitors-message").style.display = "block";
} else {
// hide more than 100 monitors
document.getElementById("more-than-100-monitors-message").style.display = "none";
}
}
let numberOfGb = 1;
let numberOfDays = 15;
function updateTelemetryPrice(updatedNumberOfGb, updatedNumberOfDays) {
if (typeof updatedNumberOfGb !== 'number' && updatedNumberOfGb) {
updatedNumberOfGb = parseInt(updatedNumberOfGb);
}
if (typeof updatedNumberOfDays !== 'number' && updatedNumberOfDays) {
updatedNumberOfDays = parseInt(updatedNumberOfDays);
}
if (updatedNumberOfGb) {
numberOfGb = updatedNumberOfGb;
}
if (updatedNumberOfDays) {
numberOfDays = updatedNumberOfDays;
}
const perGbPerDayPrice = 0.10 / 15; // 0.10 USD per GB for 15 days.
const monthlyPrice = numberOfGb * numberOfDays * perGbPerDayPrice;
// set the price in the UI
document.getElementById("total-telemetry-price").innerHTML = `$${monthlyPrice.toFixed(2)}`;
// set description
document.getElementById("total-telemetry-price-description").innerHTML = `for ${numberOfGb} GB ingested, retained for ${numberOfDays} days.`;
// update telemetry count - total-number-of-telemetry
document.getElementById("total-number-of-gb-ingested").innerHTML = numberOfGb + " GB";
document.getElementById("data-rentention-in-days").innerHTML = numberOfDays + " Days";
if (numberOfGb === 1000) {
// show more than 100 monitors message
document.getElementById("more-than-10-tb-ingested-message").style.display = "block";
} else {
// hide more than 100 monitors
document.getElementById("more-than-10-tb-ingested-message").style.display = "none";
}
if (numberOfDays === 180) {
// show more than 100 monitors message
document.getElementById("more-than-6-months-rentention").style.display = "block";
} else {
// hide more than 100 monitors
document.getElementById("more-than-6-months-rentention").style.display = "none";
}
}
</script>
<%- include('footer') -%>

View File

@@ -26,7 +26,6 @@ import OneUptimeDate from 'Common/Types/Date';
import PositiveNumber from 'Common/Types/PositiveNumber';
import Route from 'Common/Types/API/Route';
import logger from 'CommonServer/Utils/Logger';
import PartialEntity from 'Common/Types/Database/PartialEntity';
import Email from 'Common/Types/Email';
import Name from 'Common/Types/Name';
import AuthenticationEmail from '../Utils/AuthenticationEmail';
@@ -60,7 +59,10 @@ router.post(
const data: JSONObject = req.body['data'];
/* Creating a type that is a partial of the TBaseModel type. */
const partialUser: PartialEntity<User> = data;
const partialUser: User = BaseModel.fromJSON(
data as JSONObject,
User
) as User;
if (IsBillingEnabled) {
//ALERT: Delete data.role so user don't accidently sign up as master-admin from the API.
@@ -106,10 +108,14 @@ router.post(
let savedUser: User | null = null;
if (alreadySavedUser) {
//@ts-ignore
savedUser = await UserService.updateOneByIdAndFetch({
id: alreadySavedUser.id!,
data: partialUser,
data: {
password: partialUser.password!,
name: partialUser.name!,
companyPhoneNumber: partialUser.companyPhoneNumber!,
companyName: partialUser.companyName!,
},
select: {
email: true,
_id: true,
@@ -121,10 +127,7 @@ router.post(
},
});
} else {
const user: User = BaseModel.fromJSON(
partialUser as JSONObject,
User
) as User;
const user: User = partialUser;
savedUser = await UserService.create({
data: user,
@@ -179,10 +182,18 @@ router.post(
savedUser.id!
);
const token: string = JSONWebToken.sign(
savedUser,
OneUptimeDate.getSecondsInDays(new PositiveNumber(30))
);
const token: string = JSONWebToken.signUserLoginToken({
tokenData: {
userId: savedUser.id!,
email: savedUser.email!,
name: savedUser.name!,
isMasterAdmin: savedUser.isMasterAdmin!,
isGlobalLogin: true, // This is a general login without SSO. So, we will set this to true. This will give access to all the projects that dont require SSO.
},
expiresInSeconds: OneUptimeDate.getSecondsInDays(
new PositiveNumber(30)
),
});
// Set a cookie with token.
CookieUtil.setCookie(res, CookieUtil.getUserTokenKey(), token, {
@@ -272,7 +283,7 @@ router.post(
logger.error(err);
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
}
return Response.sendErrorResponse(
@@ -387,7 +398,7 @@ router.post(
logger.error(err);
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
} catch (err) {
return next(err);
}
@@ -479,7 +490,7 @@ router.post(
logger.error(err);
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
} catch (err) {
return next(err);
}
@@ -496,7 +507,7 @@ router.post(
try {
CookieUtil.removeAllCookies(req, res);
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
} catch (err) {
return next(err);
}
@@ -570,10 +581,18 @@ router.post(
alreadySavedUser.password.toString() ===
user.password!.toString()
) {
const token: string = JSONWebToken.sign(
alreadySavedUser,
OneUptimeDate.getSecondsInDays(new PositiveNumber(30))
);
const token: string = JSONWebToken.signUserLoginToken({
tokenData: {
userId: alreadySavedUser.id!,
email: alreadySavedUser.email!,
name: alreadySavedUser.name!,
isMasterAdmin: alreadySavedUser.isMasterAdmin!,
isGlobalLogin: true, // This is a general login without SSO. So, we will set this to true. This will give access to all the projects that dont require SSO.
},
expiresInSeconds: OneUptimeDate.getSecondsInDays(
new PositiveNumber(30)
),
});
// Set a cookie with token.
CookieUtil.setCookie(

View File

@@ -62,10 +62,10 @@ router.post(
// if found then generate a token and return it.
const token: string = JSONWebToken.sign(
{ resellerId: resellerId },
OneUptimeDate.getDayInSeconds(365)
);
const token: string = JSONWebToken.sign({
data: { resellerId: resellerId },
expiresInSeconds: OneUptimeDate.getDayInSeconds(365),
});
return Response.sendJsonObjectResponse(req, res, {
access: token,

View File

@@ -32,6 +32,7 @@ import Hostname from 'Common/Types/API/Hostname';
import Protocol from 'Common/Types/API/Protocol';
import DatabaseConfig from 'CommonServer/DatabaseConfig';
import CookieUtil from 'CommonServer/Utils/Cookie';
import { Host, HttpProtocol } from 'CommonServer/EnvironmentConfig';
const router: ExpressRouter = Express.getRouter();
@@ -67,7 +68,10 @@ router.get(
isEnabled: true,
},
select: {
_id: true,
signOnURL: true,
issuerURL: true,
projectId: true,
},
props: {
isRoot: true,
@@ -92,310 +96,374 @@ router.get(
);
}
return Response.redirect(req, res, projectSSO.signOnURL);
if (!projectSSO.issuerURL) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Issuer not found')
);
}
const samlRequestUrl: URL = SSOUtil.createSAMLRequestUrl({
acsUrl: URL.fromString(
`${HttpProtocol}${Host}/identity/idp-login/${projectSSO.projectId?.toString()}/${projectSSO.id?.toString()}`
),
signOnUrl: projectSSO.signOnURL!,
issuerUrl: URL.fromString(
`${HttpProtocol}${Host}/${projectSSO.projectId?.toString()}/${projectSSO.id?.toString()}`
),
});
return Response.redirect(req, res, samlRequestUrl);
} catch (err) {
return next(err);
}
}
);
router.get(
'/idp-login/:projectId/:projectSsoId',
async (req: ExpressRequest, res: ExpressResponse): Promise<void> => {
return await loginUserWithSso(req, res);
}
);
router.post(
'/idp-login/:projectId/:projectSsoId',
async (req: ExpressRequest, res: ExpressResponse): Promise<void> => {
try {
const samlResponseBase64: string = req.body.SAMLResponse;
return await loginUserWithSso(req, res);
}
);
const samlResponse: string = Buffer.from(
samlResponseBase64,
'base64'
).toString();
type LoginUserWithSsoFunction = (
req: ExpressRequest,
res: ExpressResponse
) => Promise<void>;
const response: JSONObject = await xml2js.parseStringPromise(
samlResponse
const loginUserWithSso: LoginUserWithSsoFunction = async (
req: ExpressRequest,
res: ExpressResponse
): Promise<void> => {
try {
const samlResponseBase64: string = req.body.SAMLResponse;
if (!samlResponseBase64) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('SAMLResponse not found')
);
}
let issuerUrl: string = '';
let email: Email | null = null;
const samlResponse: string = Buffer.from(
samlResponseBase64,
'base64'
).toString();
if (!req.params['projectId']) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Project ID not found')
);
}
const response: JSONObject = await xml2js.parseStringPromise(
samlResponse
);
if (!req.params['projectSsoId']) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Project SSO ID not found')
);
}
let issuerUrl: string = '';
let email: Email | null = null;
const projectSSO: ProjectSSO | null =
await ProjectSSOService.findOneBy({
query: {
projectId: new ObjectID(req.params['projectId']),
_id: req.params['projectSsoId'],
isEnabled: true,
},
select: {
signOnURL: true,
issuerURL: true,
publicCertificate: true,
teams: {
_id: true,
},
},
props: {
isRoot: true,
},
});
if (!req.params['projectId']) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Project ID not found')
);
}
if (!projectSSO) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('SSO Config not found')
);
}
if (!req.params['projectSsoId']) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Project SSO ID not found')
);
}
// redirect to Identity Provider.
if (!projectSSO.issuerURL) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Issuer URL not found')
);
}
// redirect to Identity Provider.
if (!projectSSO.signOnURL) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Sign on URL not found')
);
}
if (!projectSSO.publicCertificate) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Public Certificate not found')
);
}
try {
SSOUtil.isPayloadValid(response);
if (
!SSOUtil.isSignatureValid(
samlResponse,
projectSSO.publicCertificate
)
) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException(
'Signature is not valid or Public Certificate configured with this SSO provider is not valid'
)
);
}
issuerUrl = SSOUtil.getIssuer(response);
email = SSOUtil.getEmail(response);
} catch (err: unknown) {
if (err instanceof Exception) {
return Response.sendErrorResponse(req, res, err);
}
return Response.sendErrorResponse(
req,
res,
new ServerException()
);
}
if (projectSSO.issuerURL.toString() !== issuerUrl) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Issuer URL does not match')
);
}
// Check if he already belongs to the project, If he does - then log in.
let alreadySavedUser: User | null = await UserService.findOneBy({
query: { email: email },
select: {
_id: true,
name: true,
email: true,
isMasterAdmin: true,
isEmailVerified: true,
profilePictureId: true,
const projectSSO: ProjectSSO | null = await ProjectSSOService.findOneBy(
{
query: {
projectId: new ObjectID(req.params['projectId']),
_id: req.params['projectSsoId'],
isEnabled: true,
},
select: {
signOnURL: true,
issuerURL: true,
publicCertificate: true,
teams: {
_id: true,
},
},
props: {
isRoot: true,
},
}
);
if (!projectSSO) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('SSO Config not found')
);
}
// redirect to Identity Provider.
if (!projectSSO.issuerURL) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Issuer URL not found')
);
}
// redirect to Identity Provider.
if (!projectSSO.signOnURL) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Sign on URL not found')
);
}
if (!projectSSO.publicCertificate) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Public Certificate not found')
);
}
try {
SSOUtil.isPayloadValid(response);
if (
!SSOUtil.isSignatureValid(
samlResponse,
projectSSO.publicCertificate
)
) {
return Response.sendErrorResponse(
req,
res,
new BadRequestException(
'Signature is not valid or Public Certificate configured with this SSO provider is not valid'
)
);
}
issuerUrl = SSOUtil.getIssuer(response);
email = SSOUtil.getEmail(response);
} catch (err: unknown) {
if (err instanceof Exception) {
return Response.sendErrorResponse(req, res, err);
}
return Response.sendErrorResponse(req, res, new ServerException());
}
if (projectSSO.issuerURL.toString() !== issuerUrl) {
logger.error(
'Issuer URL does not match. It should be ' +
projectSSO.issuerURL.toString() +
' but it is ' +
issuerUrl.toString()
);
return Response.sendErrorResponse(
req,
res,
new BadRequestException('Issuer URL does not match')
);
}
// Check if he already belongs to the project, If he does - then log in.
let alreadySavedUser: User | null = await UserService.findOneBy({
query: { email: email },
select: {
_id: true,
name: true,
email: true,
isMasterAdmin: true,
isEmailVerified: true,
profilePictureId: true,
},
props: {
isRoot: true,
},
});
let isNewUser: boolean = false;
if (!alreadySavedUser) {
// this should never happen because user is logged in before he signs in with SSO UNLESS he initiates the login though the IDP.
/// Create a user.
alreadySavedUser = await UserService.createByEmail({
email,
isEmailVerified: true,
generateRandomPassword: true,
props: {
isRoot: true,
},
});
let isNewUser: boolean = false;
isNewUser = true;
}
if (!alreadySavedUser) {
// this should never happen because user is logged in before he signs in with SSO UNLESS he initiates the login though the IDP.
// If he does not then add him to teams that he should belong and log in.
// This should never happen because email is verified before he logs in with SSO.
if (!alreadySavedUser.isEmailVerified && !isNewUser) {
await AuthenticationEmail.sendVerificationEmail(alreadySavedUser!);
/// Create a user.
alreadySavedUser = await UserService.createByEmail(email, {
isRoot: true,
});
isNewUser = true;
}
// If he does not then add him to teams that he should belong and log in.
if (!alreadySavedUser.isEmailVerified && !isNewUser) {
await AuthenticationEmail.sendVerificationEmail(
alreadySavedUser
);
return Response.render(
req,
res,
'/usr/src/app/FeatureSet/Identity/Views/Message.ejs',
{
title: 'Email not verified.',
message:
'Email is not verified. We have sent you an email with the verification link. Please do not forget to check spam.',
}
);
}
// check if the user already belongs to the project
const teamMemberCount: PositiveNumber =
await TeamMemberService.countBy({
query: {
projectId: new ObjectID(
req.params['projectId'] as string
),
userId: alreadySavedUser.id!,
},
props: {
isRoot: true,
},
});
if (teamMemberCount.toNumber() === 0) {
// user not in project, add him to default teams.
if (!projectSSO.teams || projectSSO.teams.length === 0) {
return Response.render(
req,
res,
'/usr/src/app/FeatureSet/Identity/Views/Message.ejs',
{
title: 'No teams added.',
message:
'No teams have been added to this SSO config. Please contact your admin and have default teams added.',
}
);
}
for (const team of projectSSO.teams) {
// add user to team
let teamMember: TeamMember = new TeamMember();
teamMember.projectId = new ObjectID(
req.params['projectId'] as string
);
teamMember.userId = alreadySavedUser.id!;
teamMember.hasAcceptedInvitation = true;
teamMember.invitationAcceptedAt =
OneUptimeDate.getCurrentDate();
teamMember.teamId = team.id!;
teamMember = await TeamMemberService.create({
data: teamMember,
props: {
isRoot: true,
ignoreHooks: true,
},
});
}
}
if (isNewUser) {
return Response.render(
req,
res,
'/usr/src/app/FeatureSet/Identity/Views/Message.ejs',
{
title: 'You have not signed up so far.',
message:
'You need to sign up for an account on OneUptime with this email:' +
email.toString() +
'. Once you have signed up, you can use SSO to log in to your project.',
}
);
}
const projectId: ObjectID = new ObjectID(
req.params['projectId'] as string
);
const token: string = JSONWebToken.sign(
{
userId: alreadySavedUser.id!,
projectId: projectId,
email: email,
isMasterAdmin: false,
},
OneUptimeDate.getSecondsInDays(new PositiveNumber(30))
);
// Refresh Permissions for this user here.
await AccessTokenService.refreshUserAllPermissions(
alreadySavedUser.id!
);
const host: Hostname = await DatabaseConfig.getHost();
const httpProtocol: Protocol =
await DatabaseConfig.getHttpProtocol();
CookieUtil.setCookie(
res,
CookieUtil.getUserSSOKey(projectId),
token,
{
maxAge: OneUptimeDate.getMillisecondsInDays(
new PositiveNumber(30)
),
httpOnly: true,
}
);
return Response.redirect(
return Response.render(
req,
res,
new URL(
httpProtocol,
host,
new Route(DashboardRoute.toString()).addRoute(
'/' + req.params['projectId']
),
'sso_token=' + token
)
'/usr/src/app/FeatureSet/Identity/Views/Message.ejs',
{
title: 'Email not verified.',
message:
'Email is not verified. We have sent you an email with the verification link. Please do not forget to check spam.',
}
);
} catch (err) {
logger.error(err);
Response.sendErrorResponse(req, res, new ServerException());
}
// check if the user already belongs to the project
const teamMemberCount: PositiveNumber = await TeamMemberService.countBy(
{
query: {
projectId: new ObjectID(req.params['projectId'] as string),
userId: alreadySavedUser!.id!,
},
props: {
isRoot: true,
},
}
);
if (teamMemberCount.toNumber() === 0) {
// user not in project, add him to default teams.
if (!projectSSO.teams || projectSSO.teams.length === 0) {
return Response.render(
req,
res,
'/usr/src/app/FeatureSet/Identity/Views/Message.ejs',
{
title: 'No teams added.',
message:
'No teams have been added to this SSO config. Please contact your admin and have default teams added.',
}
);
}
for (const team of projectSSO.teams) {
// add user to team
let teamMember: TeamMember = new TeamMember();
teamMember.projectId = new ObjectID(
req.params['projectId'] as string
);
teamMember.userId = alreadySavedUser.id!;
teamMember.hasAcceptedInvitation = true;
teamMember.invitationAcceptedAt =
OneUptimeDate.getCurrentDate();
teamMember.teamId = team.id!;
teamMember = await TeamMemberService.create({
data: teamMember,
props: {
isRoot: true,
ignoreHooks: true,
},
});
}
}
const projectId: ObjectID = new ObjectID(
req.params['projectId'] as string
);
const ssoToken: string = JSONWebToken.sign({
data: {
userId: alreadySavedUser.id!,
projectId: projectId,
name: alreadySavedUser.name!,
email: email,
isMasterAdmin: false,
isGeneralLogin: false,
},
expiresInSeconds: OneUptimeDate.getSecondsInDays(
new PositiveNumber(30)
),
});
const oneUptimeToken: string = JSONWebToken.signUserLoginToken({
tokenData: {
userId: alreadySavedUser.id!,
email: alreadySavedUser.email!,
name: alreadySavedUser.name!,
isMasterAdmin: alreadySavedUser.isMasterAdmin!,
isGlobalLogin: false, // This is a general login without SSO. So, we will set this to false. This will give access to all the projects that dont require SSO.
},
expiresInSeconds: OneUptimeDate.getSecondsInDays(
new PositiveNumber(30)
),
});
// Set a cookie with token.
CookieUtil.setCookie(
res,
CookieUtil.getUserTokenKey(),
oneUptimeToken,
{
maxAge: OneUptimeDate.getMillisecondsInDays(
new PositiveNumber(30)
),
httpOnly: true,
}
);
CookieUtil.setCookie(
res,
CookieUtil.getUserSSOKey(projectId),
ssoToken,
{
maxAge: OneUptimeDate.getMillisecondsInDays(
new PositiveNumber(30)
),
httpOnly: true,
}
);
// Refresh Permissions for this user here.
await AccessTokenService.refreshUserAllPermissions(
alreadySavedUser.id!
);
const host: Hostname = await DatabaseConfig.getHost();
const httpProtocol: Protocol = await DatabaseConfig.getHttpProtocol();
return Response.redirect(
req,
res,
new URL(
httpProtocol,
host,
new Route(DashboardRoute.toString()).addRoute(
'/' + req.params['projectId']
)
)
);
} catch (err) {
logger.error(err);
Response.sendErrorResponse(req, res, new ServerException());
}
);
};
export default router;

View File

@@ -51,7 +51,7 @@ router.post(
CookieUtil.getUserTokenKey(statusPageId)
); // remove the cookie.
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
} catch (err) {
return next(err);
}
@@ -178,7 +178,7 @@ router.post(
logger.error(err);
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
}
throw new BadDataException(
@@ -320,7 +320,7 @@ router.post(
logger.error(err);
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
} catch (err) {
return next(err);
}
@@ -389,10 +389,12 @@ router.post(
});
if (alreadySavedUser) {
const token: string = JSONWebToken.sign(
alreadySavedUser,
OneUptimeDate.getSecondsInDays(new PositiveNumber(30))
);
const token: string = JSONWebToken.sign({
data: alreadySavedUser,
expiresInSeconds: OneUptimeDate.getSecondsInDays(
new PositiveNumber(30)
),
});
CookieUtil.setCookie(
res,

View File

@@ -25,6 +25,7 @@ import StatusPagePrivateUserService from 'CommonServer/Services/StatusPagePrivat
import HashedString from 'Common/Types/HashedString';
import StatusPageService from 'CommonServer/Services/StatusPageService';
import CookieUtil from 'CommonServer/Utils/Cookie';
import { Host, HttpProtocol } from 'CommonServer/EnvironmentConfig';
const router: ExpressRouter = Express.getRouter();
@@ -65,6 +66,8 @@ router.get(
},
select: {
signOnURL: true,
statusPageId: true,
_id: true,
},
props: {
isRoot: true,
@@ -89,7 +92,17 @@ router.get(
);
}
return Response.redirect(req, res, statusPageSSO.signOnURL);
const samlRequestUrl: URL = SSOUtil.createSAMLRequestUrl({
acsUrl: URL.fromString(
`${HttpProtocol}${Host}/identity/status-page-idp-login/${statusPageSSO.statusPageId?.toString()}/${statusPageSSO.id?.toString()}`
),
signOnUrl: statusPageSSO.signOnURL!,
issuerUrl: URL.fromString(
`${HttpProtocol}${Host}/${statusPageSSO.statusPageId?.toString()}/${statusPageSSO.id?.toString()}`
),
});
return Response.redirect(req, res, samlRequestUrl);
} catch (err) {
return next(err);
}
@@ -270,10 +283,12 @@ router.post(
});
}
const token: string = JSONWebToken.sign(
alreadySavedUser,
OneUptimeDate.getSecondsInDays(new PositiveNumber(30))
);
const token: string = JSONWebToken.sign({
data: alreadySavedUser,
expiresInSeconds: OneUptimeDate.getSecondsInDays(
new PositiveNumber(30)
),
});
CookieUtil.setCookie(
res,

View File

@@ -5,20 +5,27 @@ import SsoAPI from './API/SSO';
import ResellerAPI from './API/Reseller';
import StatusPageSsoAPI from './API/StatusPageSSO';
import StatusPageAuthenticationAPI from './API/StatusPageAuthentication';
import FeatureSet from 'CommonServer/Types/FeatureSet';
const app: ExpressApplication = Express.getExpressApp();
const IdentityFeatureSet: FeatureSet = {
init: async (): Promise<void> => {
const app: ExpressApplication = Express.getExpressApp();
const APP_NAME: string = 'api/identity';
const APP_NAME: string = 'api/identity';
app.use([`/${APP_NAME}`, '/'], AuthenticationAPI);
app.use([`/${APP_NAME}`, '/'], AuthenticationAPI);
app.use([`/${APP_NAME}`, '/'], ResellerAPI);
app.use([`/${APP_NAME}`, '/'], ResellerAPI);
app.use([`/${APP_NAME}`, '/'], SsoAPI);
app.use([`/${APP_NAME}`, '/'], SsoAPI);
app.use([`/${APP_NAME}`, '/'], StatusPageSsoAPI);
app.use([`/${APP_NAME}`, '/'], StatusPageSsoAPI);
app.use(
[`/${APP_NAME}/status-page`, '/status-page'],
StatusPageAuthenticationAPI
);
app.use(
[`/${APP_NAME}/status-page`, '/status-page'],
StatusPageAuthenticationAPI
);
},
};
export default IdentityFeatureSet;

View File

@@ -4,8 +4,34 @@ import Email from 'Common/Types/Email';
import xmldom from 'xmldom';
import xmlCrypto, { FileKeyInfo } from 'xml-crypto';
import logger from 'CommonServer/Utils/Logger';
import OneUptimeDate from 'Common/Types/Date';
import Text from 'Common/Types/Text';
import URL from 'Common/Types/API/URL';
import zlib from 'zlib';
export default class SSOUtil {
public static createSAMLRequestUrl(data: {
acsUrl: URL;
signOnUrl: URL;
issuerUrl: URL;
}): URL {
const { acsUrl, signOnUrl } = data;
const samlRequest: string = `<samlp:AuthnRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="${Text.generateRandomText(
10
).toUpperCase()}" Version="2.0" IssueInstant="${OneUptimeDate.getCurrentDate().toISOString()}" IsPassive="false" AssertionConsumerServiceURL="${acsUrl.toString()}" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ForceAuthn="false"><Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">${data.issuerUrl.toString()}</Issuer></samlp:AuthnRequest>`;
const deflated: Buffer = zlib.deflateRawSync(samlRequest);
const base64Encoded: string = deflated.toString('base64');
return URL.fromString(signOnUrl.toString()).addQueryParam(
'SAMLRequest',
base64Encoded,
true
);
}
public static isPayloadValid(payload: JSONObject): void {
if (
!payload['saml2p:Response'] &&
@@ -18,11 +44,13 @@ export default class SSOUtil {
payload =
(payload['saml2p:Response'] as JSONObject) ||
(payload['samlp:Response'] as JSONObject) ||
(payload['samlp:Response'] as JSONObject);
(payload['samlp:Response'] as JSONObject) ||
(payload['Response'] as JSONObject);
const issuers: JSONArray =
(payload['saml2:Issuer'] as JSONArray) ||
(payload['saml:Issuer'] as JSONArray);
(payload['saml:Issuer'] as JSONArray) ||
(payload['Issuer'] as JSONArray);
if (issuers.length === 0) {
throw new BadRequestException('Issuers not found');
@@ -47,7 +75,8 @@ export default class SSOUtil {
const samlAssertion: JSONArray =
(payload['saml2:Assertion'] as JSONArray) ||
(payload['saml:Assertion'] as JSONArray);
(payload['saml:Assertion'] as JSONArray) ||
(payload['Assertion'] as JSONArray);
if (!samlAssertion || samlAssertion.length === 0) {
throw new BadRequestException('SAML Assertion not found');
@@ -55,7 +84,8 @@ export default class SSOUtil {
const samlSubject: JSONArray =
((samlAssertion[0] as JSONObject)['saml2:Subject'] as JSONArray) ||
((samlAssertion[0] as JSONObject)['saml:Subject'] as JSONArray);
((samlAssertion[0] as JSONObject)['saml:Subject'] as JSONArray) ||
((samlAssertion[0] as JSONObject)['Subject'] as JSONArray);
if (!samlSubject || samlSubject.length === 0) {
throw new BadRequestException('SAML Subject not found');
@@ -63,7 +93,8 @@ export default class SSOUtil {
const samlNameId: JSONArray =
((samlSubject[0] as JSONObject)['saml2:NameID'] as JSONArray) ||
((samlSubject[0] as JSONObject)['saml:NameID'] as JSONArray);
((samlSubject[0] as JSONObject)['saml:NameID'] as JSONArray) ||
((samlSubject[0] as JSONObject)['NameID'] as JSONArray);
if (!samlNameId || samlNameId.length === 0) {
throw new BadRequestException('SAML NAME ID not found');
@@ -120,11 +151,13 @@ export default class SSOUtil {
payload =
(payload['saml2p:Response'] as JSONObject) ||
(payload['samlp:Response'] as JSONObject);
(payload['samlp:Response'] as JSONObject) ||
(payload['Response'] as JSONObject);
const samlAssertion: JSONArray =
(payload['saml2:Assertion'] as JSONArray) ||
(payload['saml:Assertion'] as JSONArray);
(payload['saml:Assertion'] as JSONArray) ||
(payload['Assertion'] as JSONArray);
if (!samlAssertion || samlAssertion.length === 0) {
throw new BadRequestException('SAML Assertion not found');
@@ -132,7 +165,8 @@ export default class SSOUtil {
const samlSubject: JSONArray =
((samlAssertion[0] as JSONObject)['saml2:Subject'] as JSONArray) ||
((samlAssertion[0] as JSONObject)['saml:Subject'] as JSONArray);
((samlAssertion[0] as JSONObject)['saml:Subject'] as JSONArray) ||
((samlAssertion[0] as JSONObject)['Subject'] as JSONArray);
if (!samlSubject || samlSubject.length === 0) {
throw new BadRequestException('SAML Subject not found');
@@ -140,7 +174,8 @@ export default class SSOUtil {
const samlNameId: JSONArray =
((samlSubject[0] as JSONObject)['saml2:NameID'] as JSONArray) ||
((samlSubject[0] as JSONObject)['saml:NameID'] as JSONArray);
((samlSubject[0] as JSONObject)['saml:NameID'] as JSONArray) ||
((samlSubject[0] as JSONObject)['NameID'] as JSONArray);
if (!samlNameId || samlNameId.length === 0) {
throw new BadRequestException('SAML NAME ID not found');
@@ -160,11 +195,13 @@ export default class SSOUtil {
payload =
(payload['saml2p:Response'] as JSONObject) ||
(payload['samlp:Response'] as JSONObject);
(payload['samlp:Response'] as JSONObject) ||
(payload['Response'] as JSONObject);
const issuers: JSONArray =
(payload['saml2:Issuer'] as JSONArray) ||
(payload['saml:Issuer'] as JSONArray);
(payload['saml:Issuer'] as JSONArray) ||
(payload['Issuer'] as JSONArray);
if (issuers.length === 0) {
throw new BadRequestException('Issuers not found');

View File

@@ -32,7 +32,7 @@ router.post(
customTwilioConfig: body['customTwilioConfig'] as any,
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
}
);
@@ -137,7 +137,7 @@ router.post('/test', async (req: ExpressRequest, res: ExpressResponse) => {
);
}
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
});
export default router;

View File

@@ -44,7 +44,7 @@ router.post(
(body['userOnCallLogTimelineId'] as ObjectID) || undefined,
});
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
}
);

View File

@@ -35,7 +35,7 @@ router.post(
}
);
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
}
);
@@ -135,7 +135,7 @@ router.post('/test', async (req: ExpressRequest, res: ExpressResponse) => {
);
}
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
});
export default router;

View File

@@ -98,7 +98,7 @@ router.post('/test', async (req: ExpressRequest, res: ExpressResponse) => {
);
}
return Response.sendEmptyResponse(req, res);
return Response.sendEmptySuccessResponse(req, res);
});
export default router;

View File

@@ -11,7 +11,9 @@ import TwilioConfig from 'Common/Types/CallAndSMS/TwilioConfig';
export const InternalSmtpPassword: string =
process.env['INTERNAL_SMTP_PASSWORD'] || '';
export const InternalSmtpHost: Hostname = new Hostname('haraka');
export const InternalSmtpHost: Hostname = new Hostname(
process.env['INTERNAL_SMTP_HOST'] || 'haraka'
);
export const InternalSmtpPort: Port = new Port(2525);

View File

@@ -7,11 +7,18 @@ import SmsAPI from './API/SMS';
import CallAPI from './API/Call';
import SMTPConfigAPI from './API/SMTPConfig';
import './Utils/Handlebars';
import FeatureSet from 'CommonServer/Types/FeatureSet';
const APP_NAME: string = 'api/notification';
const app: ExpressApplication = Express.getExpressApp();
const NotificationFeatureSet: FeatureSet = {
init: async (): Promise<void> => {
const APP_NAME: string = 'api/notification';
const app: ExpressApplication = Express.getExpressApp();
app.use([`/${APP_NAME}/email`, '/email'], MailAPI);
app.use([`/${APP_NAME}/sms`, '/sms'], SmsAPI);
app.use([`/${APP_NAME}/call`, '/call'], CallAPI);
app.use([`/${APP_NAME}/smtp-config`, '/smtp-config'], SMTPConfigAPI);
app.use([`/${APP_NAME}/email`, '/email'], MailAPI);
app.use([`/${APP_NAME}/sms`, '/sms'], SmsAPI);
app.use([`/${APP_NAME}/call`, '/call'], CallAPI);
app.use([`/${APP_NAME}/smtp-config`, '/smtp-config'], SMTPConfigAPI);
},
};
export default NotificationFeatureSet;

View File

@@ -13,7 +13,8 @@
{{> DetailBoxField title="Current State: " text=currentState }}
{{> DetailBoxField title="Resources Affected: " text=resourcesAffected }}
{{> DetailBoxField title="Severity: " text=incidentSeverity }}
{{> DetailBoxField title="Root Cause: " text=rootCause }}
{{> DetailBoxField title="Root Cause: " text="" }}
{{> DetailBoxField title="" text=rootCause }}
{{> DetailBoxField title="Description: " text="" }}
{{> DetailBoxField title="" text=incidentDescription }}
{{> DetailBoxEnd this }}

View File

@@ -13,7 +13,8 @@
{{> DetailBoxField title="Current State: " text=currentState }}
{{> DetailBoxField title="Resources Affected: " text=resourcesAffected }}
{{> DetailBoxField title="Severity: " text=incidentSeverity }}
{{> DetailBoxField title="Root Cause: " text=rootCause }}
{{> DetailBoxField title="Root Cause: " text="" }}
{{> DetailBoxField title="" text=rootCause }}
{{> DetailBoxField title="Description: " text="" }}
{{> DetailBoxField title="" text=incidentDescription }}
{{> DetailBoxEnd this }}

View File

@@ -11,7 +11,8 @@
{{> DetailBoxStart this }}
{{> DetailBoxField title="Monitor Name:" text=monitorName }}
{{> DetailBoxField title="New Status: " text=currentStatus }}
{{> DetailBoxField title="Root Cause: " text=rootCause }}
{{> DetailBoxField title="Root Cause: " text="" }}
{{> DetailBoxField title="" text=rootCause }}
{{> DetailBoxField title="Status changed at: " text="" }}
{{> DetailBoxField title="" text=statusChangedAt }}
{{> DetailBoxField title="Description: " text="" }}

View File

@@ -0,0 +1,28 @@
{{> Start this}}
{{> Logo this}}
{{> EmailTitle title="ACTION REQUIRED: OneUptime Probe cannot monitor your resources." }}
{{> InfoBlock info="We have detected that the OneUptime Probe is offline and cannot monitor your resources. This may be due to a network issue, a firewall blocking the probe, or the probe being powered off. Please take the necessary steps to bring the probe back online." }}
{{> DetailBoxStart this }}
{{> DetailBoxField title="Probe Name: " text=probeName }}
{{> DetailBoxField title="Probe Description: " text=probeDescription }}
{{#if projectId}}
{{> DetailBoxField title="Project ID: " text=projectId }}
{{else}}
{{> DetailBoxField title="Global Probe: " text="This is a global probe." }}
{{/if}}
{{> DetailBoxField title="Probe ID: " text=probeId }}
{{#if hostname}}
{{> DetailBoxField title="Hostname: " text=hostname }}
{{/if}}
{{> DetailBoxField title="Issue: " text=issue }}
{{> DetailBoxEnd this }}
{{> InfoBlock info=emailReason }}
{{> Footer this}}
{{> End this}}

View File

@@ -1 +0,0 @@
{"manager":"/usr/src/app/FeatureSet/Workers/Utils/Greenlock/Manager.ts","configDir":"./greenlock.d"}

View File

@@ -0,0 +1,50 @@
import DataMigrationBase from './DataMigrationBase';
import LIMIT_MAX from 'Common/Types/Database/LimitMax';
import TelemetryService from 'Model/Models/TelemetryService';
import TelemetryServiceService from 'CommonServer/Services/TelemetryServiceService';
import { BrightColors } from 'Common/Types/BrandColors';
import ArrayUtil from 'Common/Types/ArrayUtil';
export default class AddTelemetryServiceColor extends DataMigrationBase {
public constructor() {
super('AddTelemetryServiceColor');
}
public override async migrate(): Promise<void> {
// get all the users with email isVerified true.
const services: Array<TelemetryService> =
await TelemetryServiceService.findBy({
query: {},
select: {
_id: true,
serviceColor: true,
},
limit: LIMIT_MAX,
skip: 0,
props: {
isRoot: true,
},
});
for (const service of services) {
if (!service.serviceColor) {
(service.serviceColor =
ArrayUtil.selectItemByRandom(BrightColors)),
await TelemetryServiceService.updateOneById({
id: service.id!,
data: {
serviceColor: service.serviceColor,
},
props: {
isRoot: true,
},
});
}
}
}
public override async rollback(): Promise<void> {
return;
}
}

View File

@@ -0,0 +1,43 @@
import DataMigrationBase from './DataMigrationBase';
import LIMIT_MAX from 'Common/Types/Database/LimitMax';
import StatusPageDomainService from 'CommonServer/Services/StatusPageDomainService';
import logger from 'CommonServer/Utils/Logger';
import StatusPageDomain from 'Model/Models/StatusPageDomain';
export default class GenerateNewCertsForStatusPage extends DataMigrationBase {
public constructor() {
super('GenerateNewCertsForStatusPage');
}
public override async migrate(): Promise<void> {
// get all domains in greenlock certs.
const statusPageDomains: Array<StatusPageDomain> =
await StatusPageDomainService.findBy({
query: {},
props: {
isRoot: true,
},
limit: LIMIT_MAX,
skip: 0,
select: {
_id: true,
},
});
// now order these domains
for (const statusPageDomain of statusPageDomains) {
// get status page domain.
try {
await StatusPageDomainService.orderCert(statusPageDomain);
} catch (e) {
logger.error(e);
}
}
}
public override async rollback(): Promise<void> {
return;
}
}

View File

@@ -21,6 +21,9 @@ import MigrateToMeteredSubscription from './MigrateToMeteredSubscription';
import MoveEnableSubscribersToEnableEmailSubscribersOnStatusPage from './MoveEnableSubscribersToEnableEmailSubscribersOnStatusPage';
import UpdateActiveMonitorCountToBillingProvider from './UpdateActiveMonitorCountToBillingProvider';
import UpdateGlobalConfigFromEnv from './UpdateGlobalCongfigFromEnv';
import AddTelemetryServiceColor from './AddTelemetryServiceColor';
import MoveGreenlockCertsToAcmeCerts from './MoveGreenlockCertsToAcmeCerts';
import GenerateNewCertsForStatusPage from './GenerateNewCertsForStatusPage';
// This is the order in which the migrations will be run. Add new migrations to the end of the array.
@@ -47,6 +50,9 @@ const DataMigrations: Array<DataMigrationBase> = [
new ChangeLogSeverityColumnTypeFromTextToNumber(),
new AddAttributeColumnToSpanAndLog(),
new AddSecretKeyToIncomingRequestMonitor(),
new AddTelemetryServiceColor(),
new MoveGreenlockCertsToAcmeCerts(),
new GenerateNewCertsForStatusPage(),
];
export default DataMigrations;

View File

@@ -0,0 +1,77 @@
import GreenlockCertificateService from 'CommonServer/Services/GreenlockCertificateService';
import DataMigrationBase from './DataMigrationBase';
import LIMIT_MAX from 'Common/Types/Database/LimitMax';
import StatusPageDomainService from 'CommonServer/Services/StatusPageDomainService';
import logger from 'CommonServer/Utils/Logger';
import GreenlockCertificate from 'Model/Models/GreenlockCertificate';
import StatusPageDomain from 'Model/Models/StatusPageDomain';
export default class MoveGreenlockCertsToAcmeCerts extends DataMigrationBase {
public constructor() {
super('MoveGreenlockCertsToAcmeCerts');
}
public override async migrate(): Promise<void> {
const allDomains: Array<string> = [];
// get all domains in greenlock certs.
const greenlockCerts: GreenlockCertificate[] =
await GreenlockCertificateService.findBy({
query: {},
select: {
key: true,
},
skip: 0,
limit: LIMIT_MAX,
props: {
isRoot: true,
},
});
for (const greenlockCert of greenlockCerts) {
if (!greenlockCert.key) {
continue;
}
if (allDomains.includes(greenlockCert.key!)) {
// this domain already exists in acme certs.
continue;
}
allDomains.push(greenlockCert.key!);
}
// now order these domains
for (const domain of allDomains) {
// get status page domain.
const statusPageDomain: StatusPageDomain | null =
await StatusPageDomainService.findOneBy({
query: {
fullDomain: domain,
},
props: {
isRoot: true,
},
select: {
_id: true,
},
});
if (!statusPageDomain) {
continue;
}
try {
await StatusPageDomainService.orderCert(statusPageDomain);
} catch (e) {
logger.error(e);
}
}
}
public override async rollback(): Promise<void> {
return;
}
}

View File

@@ -27,14 +27,15 @@ import './Jobs/ScheduledMaintenance/ChangeStateToEnded';
import './Jobs/ScheduledMaintenance/SendNotificationToSubscribers';
import './Jobs/ScheduledMaintenanceStateTimeline/SendNotificationToSubscribers';
// Telemetry Service
import './Jobs/TelemetryService/DeleteOldData';
// Scheduled Event Notes
import './Jobs/ScheduledMaintenancePublicNote/SendNotificationToSubscribers';
// Certs Routers
import StatusPageCerts from './Jobs/StatusPageCerts/StatusPageCerts';
import './Jobs/StatusPageCerts/StatusPageCerts';
// Express
import Express, { ExpressApplication } from 'CommonServer/Utils/Express';
import JobDictionary from './Utils/JobDictionary';
// Monitor Owners
@@ -75,15 +76,12 @@ import AnalyticsTableManagement from './Utils/AnalyticsDatabase/TableManegement'
import './Jobs/Workflow/TimeoutJobs';
import './Jobs/MeteredPlan/ReportTelemetryMeteredPlan';
// Monitor Metrics
import './Jobs/MonitorMetrics/MonitorMetricsByMinute';
import { PromiseVoidFunction } from 'Common/Types/FunctionTypes';
const APP_NAME: string = 'api/workers';
const app: ExpressApplication = Express.getExpressApp();
//cert routes.
app.use(`/${APP_NAME.toLocaleLowerCase()}`, StatusPageCerts);
const WorkersFeatureSet: FeatureSet = {
init: async (): Promise<void> => {
try {

View File

@@ -12,6 +12,7 @@ import {
LogDataIngestMeteredPlan,
TracesDataIngestMetredPlan,
MetricsDataIngestMeteredPlan,
ActiveMonitoringMeteredPlan,
} from 'CommonServer/Types/Billing/MeteredPlan/AllMeteredPlans';
import Sleep from 'Common/Types/Sleep';
@@ -42,24 +43,36 @@ RunCron(
});
for (const project of projects) {
if (project.id) {
await LogDataIngestMeteredPlan.reportQuantityToBillingProvider(
project.id
try {
if (project.id) {
await LogDataIngestMeteredPlan.reportQuantityToBillingProvider(
project.id
);
await Sleep.sleep(1000);
await MetricsDataIngestMeteredPlan.reportQuantityToBillingProvider(
project.id
);
await Sleep.sleep(1000);
await TracesDataIngestMetredPlan.reportQuantityToBillingProvider(
project.id
);
await Sleep.sleep(1000);
await ActiveMonitoringMeteredPlan.reportQuantityToBillingProvider(
project.id!
);
await Sleep.sleep(1000);
}
} catch (error) {
logger.error(
`MeteredPlan:ReportTelemetryMeteredPlan Error while reporting telemetry for project ${project.id}: ${error}`
);
await Sleep.sleep(1000);
await MetricsDataIngestMeteredPlan.reportQuantityToBillingProvider(
project.id
);
await Sleep.sleep(1000);
await TracesDataIngestMetredPlan.reportQuantityToBillingProvider(
project.id
);
await Sleep.sleep(1000);
}
}
}

View File

@@ -0,0 +1,24 @@
import RunCron from '../../Utils/Cron';
import { EVERY_MINUTE } from 'Common/Utils/CronTime';
import OneUptimeDate from 'Common/Types/Date';
import MonitorMetricsByMinuteService from 'CommonServer/Services/MonitorMetricsByMinuteService';
import LessThan from 'Common/Types/BaseDatabase/LessThan';
RunCron(
'MonitorMetrics:HardDeleteMonitorMetricsByMinute',
{ schedule: EVERY_MINUTE, runOnStartup: false },
async () => {
const oneHourAgo: Date = OneUptimeDate.getSomeMinutesAgo(60);
// Delete all monitor metrics older than one hour
await MonitorMetricsByMinuteService.deleteBy({
query: {
createdAt: new LessThan(oneHourAgo),
},
props: {
isRoot: true,
},
});
}
);

View File

@@ -1,456 +1,51 @@
import { EVERY_HOUR, EVERY_MINUTE } from 'Common/Utils/CronTime';
import { EVERY_FIFTEEN_MINUTE } from 'Common/Utils/CronTime';
import RunCron from '../../Utils/Cron';
import { IsDevelopment } from 'CommonServer/EnvironmentConfig';
import StatusPageDomain from 'Model/Models/StatusPageDomain';
import StatusPageDomainService from 'CommonServer/Services/StatusPageDomainService';
// @ts-ignore
import Greenlock from 'greenlock';
import logger from 'CommonServer/Utils/Logger';
import BadDataException from 'Common/Types/Exception/BadDataException';
import Express, {
ExpressRequest,
ExpressResponse,
ExpressRouter,
NextFunction,
} from 'CommonServer/Utils/Express';
import ClusterKeyAuthorization from 'CommonServer/Middleware/ClusterKeyAuthorization';
import { JSONObject } from 'Common/Types/JSON';
import Response from 'CommonServer/Utils/Response';
import LIMIT_MAX from 'Common/Types/Database/LimitMax';
import axios, { AxiosResponse } from 'axios';
const router: ExpressRouter = Express.getRouter();
const greenlock: any = Greenlock.create({
configFile: '/usr/src/app/FeatureSet/Workers/greenlockrc',
packageRoot: `/usr/src/app`,
manager: '/usr/src/app/FeatureSet/Workers/Utils/Greenlock/Manager.ts',
approveDomains: async (opts: any) => {
const domain: StatusPageDomain | null =
await StatusPageDomainService.findOneBy({
query: {
fullDomain: opts.domain,
},
select: {
_id: true,
fullDomain: true,
},
props: {
isRoot: true,
},
});
if (!domain) {
throw new BadDataException(
`Domain ${opts.domain} does not exist in StatusPageDomain`
);
}
return opts; // or Promise.resolve(opts);
},
store: {
module: '/usr/src/app/FeatureSet/Workers/Utils/Greenlock/Store.ts',
},
// Staging for testing environments
// staging: IsDevelopment,
// This should be the contact who receives critical bug and security notifications
// Optionally, you may receive other (very few) updates, such as important new features
maintainerEmail: 'lets-encrypt@oneuptime.com',
// for an RFC 8555 / RFC 7231 ACME client user agent
packageAgent: 'oneuptime/1.0.0',
notify: function (event: string, details: any) {
if ('error' === event) {
logger.error('Greenlock Notify: ' + event);
logger.error(details);
}
logger.info('Greenlock Notify: ' + event);
logger.info(details);
},
agreeToTerms: true,
challenges: {
'http-01': {
module: '/usr/src/app/FeatureSet/Workers/Utils/Greenlock/HttpChallenge.ts',
},
},
});
// Delete
router.delete(
`/certs`,
ClusterKeyAuthorization.isAuthorizedServiceMiddleware,
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
try {
const body: JSONObject = req.body;
if (!body['domain']) {
throw new BadDataException('Domain is required');
}
await greenlock.remove({
subject: body['domain'],
});
return Response.sendEmptyResponse(req, res);
} catch (err) {
next(err);
}
}
);
// Create
router.post(
`/certs`,
ClusterKeyAuthorization.isAuthorizedServiceMiddleware,
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
try {
const body: JSONObject = req.body;
if (!body['domain']) {
throw new BadDataException('Domain is required');
}
await greenlock.add({
subject: body['domain'],
altnames: [body['domain']],
});
return Response.sendEmptyResponse(req, res);
} catch (err) {
next(err);
}
}
);
// Create
router.get(
`/certs`,
ClusterKeyAuthorization.isAuthorizedServiceMiddleware,
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
try {
const body: JSONObject = req.body;
if (!body['domain']) {
throw new BadDataException('Domain is required');
}
const site: JSONObject = await greenlock.get({
servername: body['domain'] as string,
});
return Response.sendJsonObjectResponse(req, res, site);
} catch (err) {
next(err);
}
}
);
RunCron(
'StatusPageCerts:RenewCerts',
{ schedule: IsDevelopment ? EVERY_MINUTE : EVERY_HOUR, runOnStartup: true },
{
schedule: IsDevelopment ? EVERY_FIFTEEN_MINUTE : EVERY_FIFTEEN_MINUTE,
runOnStartup: true,
},
async () => {
logger.info('Renewing Certs...');
await greenlock.renew();
await StatusPageDomainService.renewCertsWhichAreExpiringSoon();
logger.info('Renew Completed...');
}
);
RunCron(
'StatusPageCerts:OrderCerts',
{ schedule: IsDevelopment ? EVERY_MINUTE : EVERY_HOUR, runOnStartup: true },
async () => {
// Fetch all domains where certs are added to greenlock.
const domains: Array<StatusPageDomain> =
await StatusPageDomainService.findBy({
query: {
isAddedToGreenlock: true,
isSslProvisioned: false,
},
select: {
_id: true,
greenlockConfig: true,
fullDomain: true,
},
limit: LIMIT_MAX,
skip: 0,
props: {
isRoot: true,
},
});
logger.info(`Certificates to Order: ${domains.length}`);
for (const domain of domains) {
logger.info(
`StatusPageCerts:OrderCerts - Ordering Certificate ${domain.fullDomain}`
);
greenlock.order(domain.greenlockConfig).catch((err: any) => {
logger.error(
`StatusPageCerts:OrderCerts - Failed for domain ${domain.fullDomain}`
);
logger.error(err);
});
}
}
);
RunCron(
'StatusPageCerts:AddCerts',
{ schedule: IsDevelopment ? EVERY_MINUTE : EVERY_HOUR, runOnStartup: true },
async () => {
const domains: Array<StatusPageDomain> =
await StatusPageDomainService.findBy({
query: {
isAddedToGreenlock: false,
},
select: {
_id: true,
fullDomain: true,
cnameVerificationToken: true,
},
limit: LIMIT_MAX,
skip: 0,
props: {
isRoot: true,
},
});
for (const domain of domains) {
logger.info(
`StatusPageCerts:AddCerts - Checking CNAME ${domain.fullDomain}`
);
// Check CNAME validation and if that fails. Remove certs from Greenlock.
const isValid: boolean = await checkCnameValidation(
domain.fullDomain!,
domain.cnameVerificationToken!
);
if (isValid) {
logger.info(
`StatusPageCerts:AddCerts - CNAME for ${domain.fullDomain} is valid. Adding domain to greenlock.`
);
await StatusPageDomainService.updateOneById({
id: domain.id!,
data: {
isCnameVerified: true,
},
props: {
isRoot: true,
},
});
await greenlock.add({
subject: domain.fullDomain,
altnames: [domain.fullDomain],
});
await StatusPageDomainService.updateOneById({
id: domain.id!,
data: {
isAddedToGreenlock: true,
},
props: {
isRoot: true,
},
});
logger.info(
`StatusPageCerts:AddCerts - ${domain.fullDomain} added to greenlock.`
);
} else {
logger.info(
`StatusPageCerts:AddCerts - CNAME for ${domain.fullDomain} is invalid. Removing cert`
);
}
}
}
);
RunCron(
'StatusPageCerts:RemoveCerts',
{ schedule: IsDevelopment ? EVERY_MINUTE : EVERY_HOUR, runOnStartup: true },
async () => {
// Fetch all domains where certs are added to greenlock.
const domains: Array<StatusPageDomain> =
await StatusPageDomainService.findBy({
query: {
isAddedToGreenlock: true,
},
select: {
_id: true,
fullDomain: true,
cnameVerificationToken: true,
},
limit: LIMIT_MAX,
skip: 0,
props: {
isRoot: true,
},
});
for (const domain of domains) {
logger.info(
`StatusPageCerts:RemoveCerts - Checking CNAME ${domain.fullDomain}`
);
// Check CNAME validation and if that fails. Remove certs from Greenlock.
const isValid: boolean = await checkCnameValidation(
domain.fullDomain!,
domain.cnameVerificationToken!
);
if (!isValid) {
logger.info(
`StatusPageCerts:RemoveCerts - CNAME for ${domain.fullDomain} is invalid. Removing domain from greenlock.`
);
await greenlock.remove({
subject: domain.fullDomain,
});
await StatusPageDomainService.updateOneById({
id: domain.id!,
data: {
isAddedToGreenlock: false,
isCnameVerified: false,
},
props: {
isRoot: true,
},
});
logger.info(
`StatusPageCerts:RemoveCerts - ${domain.fullDomain} removed from greenlock.`
);
} else {
logger.info(
`StatusPageCerts:RemoveCerts - CNAME for ${domain.fullDomain} is valid`
);
}
}
}
);
RunCron(
'StatusPageCerts:CheckSslProvisioningStatus',
{ schedule: IsDevelopment ? EVERY_MINUTE : EVERY_HOUR, runOnStartup: true },
{
schedule: IsDevelopment ? EVERY_FIFTEEN_MINUTE : EVERY_FIFTEEN_MINUTE,
runOnStartup: true,
},
async () => {
// Fetch all domains where certs are added to greenlock.
const domains: Array<StatusPageDomain> =
await StatusPageDomainService.findBy({
query: {
isAddedToGreenlock: true,
},
select: {
_id: true,
fullDomain: true,
cnameVerificationToken: true,
},
limit: LIMIT_MAX,
skip: 0,
props: {
isRoot: true,
},
});
for (const domain of domains) {
logger.info(
`StatusPageCerts:RemoveCerts - Checking CNAME ${domain.fullDomain}`
);
// Check CNAME validation and if that fails. Remove certs from Greenlock.
const isValid: boolean = await isSslProvisioned(
domain.fullDomain!,
domain.cnameVerificationToken!
);
if (!isValid) {
await StatusPageDomainService.updateOneById({
id: domain.id!,
data: {
isSslProvisioned: false,
},
props: {
isRoot: true,
},
});
} else {
await StatusPageDomainService.updateOneById({
id: domain.id!,
data: {
isSslProvisioned: true,
},
props: {
isRoot: true,
},
});
}
}
await StatusPageDomainService.updateSslProvisioningStatusForAllDomains();
}
);
type CheckCnameValidationFunction = (
fulldomain: string,
token: string
) => Promise<boolean>;
const checkCnameValidation: CheckCnameValidationFunction = async (
fulldomain: string,
token: string
): Promise<boolean> => {
try {
const result: AxiosResponse = await axios.get(
'http://' +
fulldomain +
'/status-page-api/cname-verification/' +
token
);
if (result.status === 200) {
return true;
}
return false;
} catch (err) {
logger.info('Failed checking for CNAME ' + fulldomain);
logger.info('Token: ' + token);
logger.info(err);
return false;
RunCron(
'StatusPageCerts:OrderSSL',
{
schedule: IsDevelopment ? EVERY_FIFTEEN_MINUTE : EVERY_FIFTEEN_MINUTE,
runOnStartup: true,
},
async () => {
await StatusPageDomainService.orderSSLForDomainsWhichAreNotOrderedYet();
}
};
);
type IsSSLProvisionedFunction = (
fulldomain: string,
token: string
) => Promise<boolean>;
const isSslProvisioned: IsSSLProvisionedFunction = async (
fulldomain: string,
token: string
): Promise<boolean> => {
try {
const result: AxiosResponse = await axios.get(
'https://' +
fulldomain +
'/status-page-api/cname-verification/' +
token
);
if (result.status === 200) {
return true;
}
return false;
} catch (err) {
return false;
RunCron(
'StatusPageCerts:VerifyCnameWhoseCnameisNotVerified',
{
schedule: IsDevelopment ? EVERY_FIFTEEN_MINUTE : EVERY_FIFTEEN_MINUTE,
runOnStartup: true,
},
async () => {
await StatusPageDomainService.verifyCnameWhoseCnameisNotVerified();
}
};
export default router;
);

View File

@@ -0,0 +1,77 @@
import { IsDevelopment } from 'CommonServer/EnvironmentConfig';
import RunCron from '../../Utils/Cron';
import { EVERY_HOUR, EVERY_MINUTE } from 'Common/Utils/CronTime';
import LIMIT_MAX from 'Common/Types/Database/LimitMax';
import TelemetryService from 'Model/Models/TelemetryService';
import TelemetryServiceService from 'CommonServer/Services/TelemetryServiceService';
import LogService from 'CommonServer/Services/LogService';
import QueryHelper from 'CommonServer/Types/AnalyticsDatabase/QueryHelper';
import OneUptimeDate from 'Common/Types/Date';
import SpanService from 'CommonServer/Services/SpanService';
RunCron(
'TelemetryService:DeleteOldData',
{
schedule: IsDevelopment ? EVERY_MINUTE : EVERY_HOUR,
runOnStartup: false,
},
async () => {
// get a list of all the telemetry services.
const telemetryService: Array<TelemetryService> =
await TelemetryServiceService.findBy({
query: {},
limit: LIMIT_MAX,
skip: 0,
select: {
retainTelemetryDataForDays: true,
projectId: true,
_id: true,
},
props: {
isRoot: true,
},
});
for (const service of telemetryService) {
let dataRententionDays: number | undefined =
service.retainTelemetryDataForDays;
if (!dataRententionDays) {
dataRententionDays = 15; // default to 15 days.
}
// delete logs
await LogService.deleteBy({
query: {
createdAt: QueryHelper.lessThan(
OneUptimeDate.getSomeDaysAgo(dataRententionDays)
),
serviceId: service.id,
projectId: service.projectId,
},
props: {
isRoot: true,
},
});
// delete spans
await SpanService.deleteBy({
query: {
createdAt: QueryHelper.lessThan(
OneUptimeDate.getSomeDaysAgo(dataRententionDays)
),
serviceId: service.id,
projectId: service.projectId,
},
props: {
isRoot: true,
},
});
// TOOD: delete metrics.
}
}
);

Some files were not shown because too many files have changed in this diff Show More