@oneuptime/common 7.0.2990 → 7.0.3010

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/Models/AnalyticsModels/ExceptionInstance.ts +488 -0
  2. package/Models/AnalyticsModels/Index.ts +2 -0
  3. package/Models/AnalyticsModels/Span.ts +2 -2
  4. package/Models/DatabaseModels/Index.ts +4 -0
  5. package/Models/DatabaseModels/TelemetryException.ts +978 -0
  6. package/Server/API/StatusAPI.ts +63 -51
  7. package/Server/EnvironmentConfig.ts +3 -0
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1724610006927-MigrationName.ts +93 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/1724613666632-MigrationName.ts +60 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/1724659071843-MigrationName.ts +17 -0
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  12. package/Server/Infrastructure/Queue.ts +36 -1
  13. package/Server/Infrastructure/QueueWorker.ts +2 -2
  14. package/Server/Services/DatabaseService.ts +4 -5
  15. package/Server/Services/ExceptionInstanceService.ts +11 -0
  16. package/Server/Services/Index.ts +5 -0
  17. package/Server/Services/StatusPageDomainService.ts +118 -59
  18. package/Server/Services/TelemetryExceptionService.ts +10 -0
  19. package/Server/Types/Database/Permissions/Index.ts +1 -1
  20. package/Server/Types/Database/UpdateByID.ts +1 -1
  21. package/Server/Utils/Greenlock/Greenlock.ts +331 -204
  22. package/Server/Utils/Logger.ts +8 -2
  23. package/Server/Utils/Telemetry.ts +109 -25
  24. package/Types/Code/CodeType.ts +1 -0
  25. package/Types/Database/PartialEntity.ts +14 -1
  26. package/Types/Date.ts +9 -1
  27. package/Types/Icon/IconProp.ts +2 -0
  28. package/Types/Permission.ts +39 -0
  29. package/UI/Components/ActionCard/ActionCard.tsx +66 -0
  30. package/UI/Components/Alerts/Alert.tsx +69 -60
  31. package/UI/Components/Card/Card.tsx +1 -0
  32. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +4 -17
  33. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +1005 -0
  34. package/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.ts +3 -0
  35. package/UI/Components/Charts/ChartLibrary/Utils/ChartColors.ts +117 -0
  36. package/UI/Components/Charts/ChartLibrary/Utils/Cx.ts +8 -0
  37. package/UI/Components/Charts/ChartLibrary/Utils/GetYAxisDomain.ts +15 -0
  38. package/UI/Components/Charts/ChartLibrary/Utils/HasOnlyOneValueForKey.ts +19 -0
  39. package/UI/Components/Charts/ChartLibrary/Utils/UseWindowOnResize.ts +17 -0
  40. package/UI/Components/Charts/Line/LineChart.tsx +58 -225
  41. package/UI/Components/Charts/Types/ChartCurve.ts +7 -0
  42. package/UI/Components/Charts/Types/DataPoint.ts +7 -0
  43. package/UI/Components/Charts/Types/SeriesPoint.ts +7 -0
  44. package/UI/Components/Charts/Types/SeriesPoints.ts +6 -0
  45. package/UI/Components/Charts/Types/XAxis/XAxis.ts +21 -0
  46. package/UI/Components/Charts/Types/XAxis/XAxisMaxMin.ts +3 -0
  47. package/UI/Components/Charts/Types/XAxis/XAxisPrecision.ts +26 -0
  48. package/UI/Components/Charts/Types/XAxis/XAxisType.ts +6 -0
  49. package/UI/Components/Charts/Types/XValue.ts +3 -0
  50. package/UI/Components/Charts/Types/YAxis/YAxis.ts +22 -0
  51. package/UI/Components/Charts/Types/YAxis/YAxisMaxMin.ts +3 -0
  52. package/UI/Components/Charts/Types/YAxis/YAxisType.ts +5 -0
  53. package/UI/Components/Charts/Types/YValue.ts +3 -0
  54. package/UI/Components/Charts/Utils/DataPoint.ts +188 -0
  55. package/UI/Components/Charts/Utils/XAxis.ts +267 -0
  56. package/UI/Components/Detail/Detail.tsx +6 -1
  57. package/UI/Components/GanttChart/Row/Row.tsx +4 -2
  58. package/UI/Components/GanttChart/Row/RowLabel.tsx +7 -3
  59. package/UI/Components/Icon/Icon.tsx +16 -0
  60. package/UI/Components/LogsViewer/LogsViewer.tsx +1 -1
  61. package/UI/Components/Types/FieldType.ts +1 -0
  62. package/UI/Config.ts +2 -0
  63. package/UI/Utils/Telemetry.ts +7 -2
  64. package/Utils/Crypto.ts +11 -0
  65. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +445 -0
  66. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -0
  67. package/build/dist/Models/AnalyticsModels/Index.js +2 -0
  68. package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
  69. package/build/dist/Models/AnalyticsModels/Span.js +2 -2
  70. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  71. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  72. package/build/dist/Models/DatabaseModels/TelemetryException.js +1010 -0
  73. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -0
  74. package/build/dist/Server/API/StatusAPI.js +52 -44
  75. package/build/dist/Server/API/StatusAPI.js.map +1 -1
  76. package/build/dist/Server/EnvironmentConfig.js +1 -0
  77. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  78. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1724610006927-MigrationName.js +38 -0
  79. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1724610006927-MigrationName.js.map +1 -0
  80. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1724613666632-MigrationName.js +26 -0
  81. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1724613666632-MigrationName.js.map +1 -0
  82. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1724659071843-MigrationName.js +12 -0
  83. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1724659071843-MigrationName.js.map +1 -0
  84. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  85. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  86. package/build/dist/Server/Infrastructure/Queue.js +20 -1
  87. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  88. package/build/dist/Server/Infrastructure/QueueWorker.js +2 -2
  89. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  90. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  91. package/build/dist/Server/Services/ExceptionInstanceService.js +9 -0
  92. package/build/dist/Server/Services/ExceptionInstanceService.js.map +1 -0
  93. package/build/dist/Server/Services/Index.js +4 -0
  94. package/build/dist/Server/Services/Index.js.map +1 -1
  95. package/build/dist/Server/Services/StatusPageDomainService.js +101 -53
  96. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  97. package/build/dist/Server/Services/TelemetryExceptionService.js +9 -0
  98. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -0
  99. package/build/dist/Server/Types/Database/Permissions/Index.js.map +1 -1
  100. package/build/dist/Server/Utils/Greenlock/Greenlock.js +234 -157
  101. package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
  102. package/build/dist/Server/Utils/Logger.js +5 -1
  103. package/build/dist/Server/Utils/Logger.js.map +1 -1
  104. package/build/dist/Server/Utils/Telemetry.js +63 -22
  105. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  106. package/build/dist/Types/Code/CodeType.js +1 -0
  107. package/build/dist/Types/Code/CodeType.js.map +1 -1
  108. package/build/dist/Types/Database/PartialEntity.js +3 -0
  109. package/build/dist/Types/Database/PartialEntity.js.map +1 -1
  110. package/build/dist/Types/Date.js +7 -1
  111. package/build/dist/Types/Date.js.map +1 -1
  112. package/build/dist/Types/Icon/IconProp.js +2 -0
  113. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  114. package/build/dist/Types/Permission.js +33 -0
  115. package/build/dist/Types/Permission.js.map +1 -1
  116. package/build/dist/UI/Components/ActionCard/ActionCard.js +27 -0
  117. package/build/dist/UI/Components/ActionCard/ActionCard.js.map +1 -0
  118. package/build/dist/UI/Components/Alerts/Alert.js +36 -45
  119. package/build/dist/UI/Components/Alerts/Alert.js.map +1 -1
  120. package/build/dist/UI/Components/Card/Card.js +1 -1
  121. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  122. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +4 -9
  123. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  124. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +388 -0
  125. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -0
  126. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js +2 -0
  127. package/build/dist/UI/Components/Charts/ChartLibrary/Types/ChartDataPoint.js.map +1 -0
  128. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js +88 -0
  129. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js.map +1 -0
  130. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/Cx.js +7 -0
  131. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/Cx.js.map +1 -0
  132. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/GetYAxisDomain.js +7 -0
  133. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/GetYAxisDomain.js.map +1 -0
  134. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/HasOnlyOneValueForKey.js +14 -0
  135. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/HasOnlyOneValueForKey.js.map +1 -0
  136. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/UseWindowOnResize.js +14 -0
  137. package/build/dist/UI/Components/Charts/ChartLibrary/Utils/UseWindowOnResize.js.map +1 -0
  138. package/build/dist/UI/Components/Charts/Line/LineChart.js +30 -136
  139. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  140. package/build/dist/UI/Components/Charts/Types/ChartCurve.js +8 -0
  141. package/build/dist/UI/Components/Charts/Types/ChartCurve.js.map +1 -0
  142. package/build/dist/UI/Components/Charts/Types/DataPoint.js +2 -0
  143. package/build/dist/UI/Components/Charts/Types/DataPoint.js.map +1 -0
  144. package/build/dist/UI/Components/Charts/Types/SeriesPoint.js +2 -0
  145. package/build/dist/UI/Components/Charts/Types/SeriesPoint.js.map +1 -0
  146. package/build/dist/UI/Components/Charts/Types/SeriesPoints.js +2 -0
  147. package/build/dist/UI/Components/Charts/Types/SeriesPoints.js.map +1 -0
  148. package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js +8 -0
  149. package/build/dist/UI/Components/Charts/Types/XAxis/XAxis.js.map +1 -0
  150. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisMaxMin.js +2 -0
  151. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisMaxMin.js.map +1 -0
  152. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js +27 -0
  153. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisPrecision.js.map +1 -0
  154. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisType.js +7 -0
  155. package/build/dist/UI/Components/Charts/Types/XAxis/XAxisType.js.map +1 -0
  156. package/build/dist/UI/Components/Charts/Types/XValue.js +2 -0
  157. package/build/dist/UI/Components/Charts/Types/XValue.js.map +1 -0
  158. package/build/dist/UI/Components/Charts/Types/YAxis/YAxis.js +8 -0
  159. package/build/dist/UI/Components/Charts/Types/YAxis/YAxis.js.map +1 -0
  160. package/build/dist/UI/Components/Charts/Types/YAxis/YAxisMaxMin.js +2 -0
  161. package/build/dist/UI/Components/Charts/Types/YAxis/YAxisMaxMin.js.map +1 -0
  162. package/build/dist/UI/Components/Charts/Types/YAxis/YAxisType.js +6 -0
  163. package/build/dist/UI/Components/Charts/Types/YAxis/YAxisType.js.map +1 -0
  164. package/build/dist/UI/Components/Charts/Types/YValue.js +2 -0
  165. package/build/dist/UI/Components/Charts/Types/YValue.js.map +1 -0
  166. package/build/dist/UI/Components/Charts/Utils/DataPoint.js +109 -0
  167. package/build/dist/UI/Components/Charts/Utils/DataPoint.js.map +1 -0
  168. package/build/dist/UI/Components/Charts/Utils/XAxis.js +241 -0
  169. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -0
  170. package/build/dist/UI/Components/Detail/Detail.js +5 -1
  171. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  172. package/build/dist/UI/Components/GanttChart/Row/Row.js +2 -2
  173. package/build/dist/UI/Components/GanttChart/Row/Row.js.map +1 -1
  174. package/build/dist/UI/Components/GanttChart/Row/RowLabel.js +3 -3
  175. package/build/dist/UI/Components/GanttChart/Row/RowLabel.js.map +1 -1
  176. package/build/dist/UI/Components/Icon/Icon.js +6 -0
  177. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  178. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +1 -1
  179. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  180. package/build/dist/UI/Components/Types/FieldType.js +1 -0
  181. package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
  182. package/build/dist/UI/Config.js +1 -0
  183. package/build/dist/UI/Config.js.map +1 -1
  184. package/build/dist/UI/Utils/Telemetry.js +6 -3
  185. package/build/dist/UI/Utils/Telemetry.js.map +1 -1
  186. package/build/dist/Utils/Crypto.js +10 -0
  187. package/build/dist/Utils/Crypto.js.map +1 -0
  188. package/package.json +15 -13
  189. package/UI/Components/Charts/Bar/Bar.tsx +0 -0
  190. package/UI/Components/Charts/Base/BaseChart.tsx +0 -0
  191. package/UI/Components/Charts/Tooltip/Tooltip.tsx +0 -84
  192. package/build/dist/UI/Components/Charts/Bar/Bar.js +0 -2
  193. package/build/dist/UI/Components/Charts/Bar/Bar.js.map +0 -1
  194. package/build/dist/UI/Components/Charts/Base/BaseChart.js +0 -2
  195. package/build/dist/UI/Components/Charts/Base/BaseChart.js.map +0 -1
  196. package/build/dist/UI/Components/Charts/Tooltip/Tooltip.js +0 -34
  197. package/build/dist/UI/Components/Charts/Tooltip/Tooltip.js.map +0 -1
@@ -13,185 +13,262 @@ import Text from "Common/Types/Text";
13
13
  import AcmeCertificate from "Common/Models/DatabaseModels/AcmeCertificate";
14
14
  import AcmeChallenge from "Common/Models/DatabaseModels/AcmeChallenge";
15
15
  import acme from "acme-client";
16
+ import Telemetry from "../Telemetry";
16
17
  export default class GreenlockUtil {
17
18
  static async renewAllCertsWhichAreExpiringSoon(data) {
18
- logger.debug("Renewing all certificates");
19
- // get all certificates which are expiring soon
20
- const certificates = await AcmeCertificateService.findBy({
21
- query: {
22
- expiresAt: QueryHelper.lessThanEqualTo(OneUptimeDate.addRemoveDays(OneUptimeDate.getCurrentDate(), 40)),
23
- },
24
- limit: LIMIT_MAX,
25
- skip: 0,
26
- select: {
27
- domain: true,
28
- },
29
- sort: {
30
- expiresAt: SortOrder.Ascending,
31
- },
32
- props: {
33
- isRoot: true,
34
- },
35
- });
36
- // order certificate for each domain
37
- for (const certificate of certificates) {
38
- if (!certificate.domain) {
39
- continue;
40
- }
41
- try {
42
- //validate cname
43
- const isValidCname = await data.validateCname(certificate.domain);
44
- if (!isValidCname) {
45
- // if cname is not valid then remove the domain
46
- await GreenlockUtil.removeDomain(certificate.domain);
47
- await data.notifyDomainRemoved(certificate.domain);
19
+ return await Telemetry.startActiveSpan({
20
+ name: "GreenlockUtil.renewAllCertsWhichAreExpiringSoon",
21
+ fn: async (span) => {
22
+ try {
23
+ logger.debug("Renewing all certificates");
24
+ // get all certificates which are expiring soon
25
+ const certificates = await AcmeCertificateService.findBy({
26
+ query: {
27
+ expiresAt: QueryHelper.lessThanEqualTo(OneUptimeDate.addRemoveDays(OneUptimeDate.getCurrentDate(), 40)),
28
+ },
29
+ limit: LIMIT_MAX,
30
+ skip: 0,
31
+ select: {
32
+ domain: true,
33
+ },
34
+ sort: {
35
+ expiresAt: SortOrder.Ascending,
36
+ },
37
+ props: {
38
+ isRoot: true,
39
+ },
40
+ });
41
+ logger.debug(`Found ${certificates.length} certificates which are expiring soon`);
42
+ // order certificate for each domain
43
+ for (const certificate of certificates) {
44
+ if (!certificate.domain) {
45
+ continue;
46
+ }
47
+ logger.debug(`Renewing certificate for domain: ${certificate.domain}`);
48
+ try {
49
+ //validate cname
50
+ const isValidCname = await data.validateCname(certificate.domain);
51
+ if (!isValidCname) {
52
+ logger.debug(`CNAME is not valid for domain: ${certificate.domain}`);
53
+ // if cname is not valid then remove the domain
54
+ await GreenlockUtil.removeDomain(certificate.domain);
55
+ await data.notifyDomainRemoved(certificate.domain);
56
+ logger.error(`Cname is not valid for domain: ${certificate.domain}`);
57
+ }
58
+ else {
59
+ logger.debug(`CNAME is valid for domain: ${certificate.domain}`);
60
+ await GreenlockUtil.orderCert({
61
+ domain: certificate.domain,
62
+ validateCname: data.validateCname,
63
+ });
64
+ logger.debug(`Certificate renewed for domain: ${certificate.domain}`);
65
+ }
66
+ }
67
+ catch (e) {
68
+ logger.error(`Error renewing certificate for domain: ${certificate.domain}`);
69
+ logger.error(e);
70
+ }
71
+ }
72
+ Telemetry.endSpan(span);
48
73
  }
49
- else {
50
- await GreenlockUtil.orderCert({
51
- domain: certificate.domain,
52
- validateCname: data.validateCname,
74
+ catch (e) {
75
+ logger.error("Error renewing all certificates");
76
+ logger.error(e);
77
+ // record exception
78
+ Telemetry.recordExceptionMarkSpanAsErrorAndEndSpan({
79
+ span,
80
+ exception: e,
53
81
  });
82
+ throw e;
54
83
  }
55
- }
56
- catch (e) {
57
- logger.error(`Error renewing certificate for domain: ${certificate.domain}`);
58
- logger.error(e);
59
- }
60
- }
84
+ },
85
+ });
61
86
  }
62
87
  static async removeDomain(domain) {
63
- // remove certificate for this domain.
64
- await AcmeCertificateService.deleteBy({
65
- query: {
66
- domain: domain,
88
+ return await Telemetry.startActiveSpan({
89
+ name: "GreenlockUtil.orderCert",
90
+ options: {
91
+ attributes: {
92
+ domain: domain,
93
+ },
67
94
  },
68
- limit: 1,
69
- skip: 0,
70
- props: {
71
- isRoot: true,
95
+ fn: async (span) => {
96
+ try {
97
+ // remove certificate for this domain.
98
+ await AcmeCertificateService.deleteBy({
99
+ query: {
100
+ domain: domain,
101
+ },
102
+ limit: 1,
103
+ skip: 0,
104
+ props: {
105
+ isRoot: true,
106
+ },
107
+ });
108
+ Telemetry.endSpan(span);
109
+ }
110
+ catch (err) {
111
+ logger.error(`Error removing domain: ${domain}`);
112
+ Telemetry.recordExceptionMarkSpanAsErrorAndEndSpan({
113
+ span,
114
+ exception: err,
115
+ });
116
+ throw err;
117
+ }
72
118
  },
73
119
  });
74
120
  }
75
121
  static async orderCert(data) {
76
- try {
77
- let { domain } = data;
78
- domain = domain.trim().toLowerCase();
79
- const acmeAccountKeyInBase64 = LetsEncryptAccountKey;
80
- if (!acmeAccountKeyInBase64) {
81
- throw new ServerException("No lets encrypt account key found in environment variables. Please add one.");
82
- }
83
- let acmeAccountKey = Buffer.from(acmeAccountKeyInBase64, "base64").toString();
84
- acmeAccountKey = Text.replaceAll(acmeAccountKey, "\\n", "\n");
85
- //validate cname
86
- const isValidCname = await data.validateCname(domain);
87
- if (!isValidCname) {
88
- await GreenlockUtil.removeDomain(domain);
89
- logger.error(`Cname is not valid for domain: ${domain}`);
90
- throw new BadDataException("Cname is not valid for domain " + domain);
91
- }
92
- const client = new acme.Client({
93
- directoryUrl: acme.directory.letsencrypt.production,
94
- accountKey: acmeAccountKey,
95
- });
96
- const [certificateKey, certificateRequest] = await acme.crypto.createCsr({
97
- commonName: domain,
98
- });
99
- const certificate = await client.auto({
100
- csr: certificateRequest,
101
- email: LetsEncryptNotificationEmail.toString(),
102
- termsOfServiceAgreed: true,
103
- challengePriority: ["http-01"], // only http-01 challenge is supported by oneuptime
104
- challengeCreateFn: async (authz, challenge, keyAuthorization) => {
105
- // Satisfy challenge here
106
- /* http-01 */
107
- if (challenge.type === "http-01") {
108
- const acmeChallenge = new AcmeChallenge();
109
- acmeChallenge.challenge = keyAuthorization;
110
- acmeChallenge.token = challenge.token;
111
- acmeChallenge.domain = authz.identifier.value;
112
- await AcmeChallengeService.create({
113
- data: acmeChallenge,
114
- props: {
115
- isRoot: true,
116
- },
117
- });
118
- }
122
+ return await Telemetry.startActiveSpan({
123
+ name: "GreenlockUtil.orderCert",
124
+ options: {
125
+ attributes: {
126
+ domain: data.domain,
119
127
  },
120
- challengeRemoveFn: async (authz, challenge) => {
121
- // Clean up challenge here
122
- if (challenge.type === "http-01") {
123
- await AcmeChallengeService.deleteBy({
128
+ },
129
+ fn: async (span) => {
130
+ try {
131
+ logger.debug(`GreenlockUtil - Ordering certificate for domain: ${data.domain}`);
132
+ let { domain } = data;
133
+ domain = domain.trim().toLowerCase();
134
+ const acmeAccountKeyInBase64 = LetsEncryptAccountKey;
135
+ if (!acmeAccountKeyInBase64) {
136
+ throw new ServerException("No lets encrypt account key found in environment variables. Please add one.");
137
+ }
138
+ let acmeAccountKey = Buffer.from(acmeAccountKeyInBase64, "base64").toString();
139
+ acmeAccountKey = Text.replaceAll(acmeAccountKey, "\\n", "\n");
140
+ //validate cname
141
+ logger.debug(`Validating cname for domain: ${domain}`);
142
+ const isValidCname = await data.validateCname(domain);
143
+ if (!isValidCname) {
144
+ logger.debug(`CNAME is not valid for domain: ${domain}`);
145
+ logger.debug(`Removing domain: ${domain}`);
146
+ await GreenlockUtil.removeDomain(domain);
147
+ logger.error(`Cname is not valid for domain: ${domain}`);
148
+ throw new BadDataException("Cname is not valid for domain " + domain);
149
+ }
150
+ logger.debug(`Cname is valid for domain: ${domain}`);
151
+ const client = new acme.Client({
152
+ directoryUrl: acme.directory.letsencrypt.production,
153
+ accountKey: acmeAccountKey,
154
+ });
155
+ const [certificateKey, certificateRequest] = await acme.crypto.createCsr({
156
+ commonName: domain,
157
+ });
158
+ logger.debug(`Ordering certificate for domain: ${domain}`);
159
+ const certificate = await client.auto({
160
+ csr: certificateRequest,
161
+ email: LetsEncryptNotificationEmail.toString(),
162
+ termsOfServiceAgreed: true,
163
+ challengePriority: ["http-01"], // only http-01 challenge is supported by oneuptime
164
+ challengeCreateFn: async (authz, challenge, keyAuthorization) => {
165
+ // Satisfy challenge here
166
+ /* http-01 */
167
+ if (challenge.type === "http-01") {
168
+ logger.debug(`Creating challenge for domain: ${authz.identifier.value}`);
169
+ const acmeChallenge = new AcmeChallenge();
170
+ acmeChallenge.challenge = keyAuthorization;
171
+ acmeChallenge.token = challenge.token;
172
+ acmeChallenge.domain = authz.identifier.value;
173
+ await AcmeChallengeService.create({
174
+ data: acmeChallenge,
175
+ props: {
176
+ isRoot: true,
177
+ },
178
+ });
179
+ logger.debug(`Challenge created for domain: ${authz.identifier.value}`);
180
+ }
181
+ },
182
+ challengeRemoveFn: async (authz, challenge) => {
183
+ // Clean up challenge here
184
+ logger.debug(`Removing challenge for domain: ${authz.identifier.value}`);
185
+ if (challenge.type === "http-01") {
186
+ await AcmeChallengeService.deleteBy({
187
+ query: {
188
+ domain: authz.identifier.value,
189
+ },
190
+ limit: 1,
191
+ skip: 0,
192
+ props: {
193
+ isRoot: true,
194
+ },
195
+ });
196
+ }
197
+ logger.debug(`Challenge removed for domain: ${authz.identifier.value}`);
198
+ },
199
+ });
200
+ logger.debug(`Certificate ordered for domain: ${domain}`);
201
+ // get expires at date from certificate
202
+ const cert = acme.crypto.readCertificateInfo(certificate);
203
+ const issuedAt = cert.notBefore;
204
+ const expiresAt = cert.notAfter;
205
+ logger.debug(`Certificate expires at: ${expiresAt}`);
206
+ logger.debug(`Certificate issued at: ${issuedAt}`);
207
+ // check if the certificate is already in the database.
208
+ const existingCertificate = await AcmeCertificateService.findOneBy({
209
+ query: {
210
+ domain: domain,
211
+ },
212
+ select: {
213
+ _id: true,
214
+ },
215
+ props: {
216
+ isRoot: true,
217
+ },
218
+ });
219
+ if (existingCertificate) {
220
+ logger.debug(`Updating certificate for domain: ${domain}`);
221
+ // update the certificate
222
+ await AcmeCertificateService.updateBy({
124
223
  query: {
125
- domain: authz.identifier.value,
224
+ domain: domain,
126
225
  },
127
226
  limit: 1,
128
227
  skip: 0,
228
+ data: {
229
+ certificate: certificate.toString(),
230
+ certificateKey: certificateKey.toString(),
231
+ issuedAt: issuedAt,
232
+ expiresAt: expiresAt,
233
+ },
129
234
  props: {
130
235
  isRoot: true,
131
236
  },
132
237
  });
238
+ logger.debug(`Certificate updated for domain: ${domain}`);
133
239
  }
134
- },
135
- });
136
- // get expires at date from certificate
137
- const cert = acme.crypto.readCertificateInfo(certificate);
138
- const issuedAt = cert.notBefore;
139
- const expiresAt = cert.notAfter;
140
- // check if the certificate is already in the database.
141
- const existingCertificate = await AcmeCertificateService.findOneBy({
142
- query: {
143
- domain: domain,
144
- },
145
- select: {
146
- _id: true,
147
- },
148
- props: {
149
- isRoot: true,
150
- },
151
- });
152
- if (existingCertificate) {
153
- // update the certificate
154
- await AcmeCertificateService.updateBy({
155
- query: {
156
- domain: domain,
157
- },
158
- limit: 1,
159
- skip: 0,
160
- data: {
161
- certificate: certificate.toString(),
162
- certificateKey: certificateKey.toString(),
163
- issuedAt: issuedAt,
164
- expiresAt: expiresAt,
165
- },
166
- props: {
167
- isRoot: true,
168
- },
169
- });
170
- }
171
- else {
172
- // create the certificate
173
- const acmeCertificate = new AcmeCertificate();
174
- acmeCertificate.domain = domain;
175
- acmeCertificate.certificate = certificate.toString();
176
- acmeCertificate.certificateKey = certificateKey.toString();
177
- acmeCertificate.issuedAt = issuedAt;
178
- acmeCertificate.expiresAt = expiresAt;
179
- await AcmeCertificateService.create({
180
- data: acmeCertificate,
181
- props: {
182
- isRoot: true,
183
- },
184
- });
185
- }
186
- }
187
- catch (e) {
188
- logger.error(`Error ordering certificate for domain: ${data.domain}`);
189
- logger.error(e);
190
- if (e instanceof Exception) {
191
- throw e;
192
- }
193
- throw new ServerException(`Unable to order certificate for ${data.domain}. Please contact support at support@oneuptime.com for more information.`);
194
- }
240
+ else {
241
+ logger.debug(`Creating certificate for domain: ${domain}`);
242
+ // create the certificate
243
+ const acmeCertificate = new AcmeCertificate();
244
+ acmeCertificate.domain = domain;
245
+ acmeCertificate.certificate = certificate.toString();
246
+ acmeCertificate.certificateKey = certificateKey.toString();
247
+ acmeCertificate.issuedAt = issuedAt;
248
+ acmeCertificate.expiresAt = expiresAt;
249
+ await AcmeCertificateService.create({
250
+ data: acmeCertificate,
251
+ props: {
252
+ isRoot: true,
253
+ },
254
+ });
255
+ logger.debug(`Certificate created for domain: ${domain}`);
256
+ }
257
+ Telemetry.endSpan(span);
258
+ }
259
+ catch (e) {
260
+ logger.error(`Error ordering certificate for domain: ${data.domain}`);
261
+ Telemetry.recordExceptionMarkSpanAsErrorAndEndSpan({
262
+ span,
263
+ exception: e,
264
+ });
265
+ if (e instanceof Exception) {
266
+ throw e;
267
+ }
268
+ throw new ServerException(`Unable to order certificate for ${data.domain}. Please contact support at support@oneuptime.com for more information.`);
269
+ }
270
+ },
271
+ });
195
272
  }
196
273
  }
197
274
  //# sourceMappingURL=Greenlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Greenlock.js","sourceRoot":"","sources":["../../../../../Server/Utils/Greenlock/Greenlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Greenlock.js","sourceRoot":"","sources":["../../../../../Server/Utils/Greenlock/Greenlock.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,11 @@ export default class logger {
68
68
  }
69
69
  }
70
70
  static emit(data) {
71
- OneUptimeTelemetry.getLogger().emit({
71
+ const logger = OneUptimeTelemetry.getLogger();
72
+ if (logger === null) {
73
+ return;
74
+ }
75
+ logger.emit({
72
76
  body: this.serializeLogBody(data.body),
73
77
  severityNumber: data.severityNumber,
74
78
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../../Server/Utils/Logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../../Server/Utils/Logger.ts"],"names":[],"mappings":"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"}