diff --git a/server/model/status_page.js b/server/model/status_page.js
index 2d90b6392..a65a7da1b 100644
--- a/server/model/status_page.js
+++ b/server/model/status_page.js
@@ -56,7 +56,10 @@ class StatusPage extends BeanModel {
await StatusPage.getStatusPageData(statusPage).then( (page) => {
if (page.config?.googleAnalyticsId) {
- head.append($(googleAnalytics.getGoogleAnalyticsScript(page.config.googleAnalyticsId)));
+ let escapedGoogleAnalyticsScript = jsesc(googleAnalytics.getGoogleAnalyticsScript(page.config.googleAnalyticsId), {
+ "isScriptContext": true
+ });
+ head.append($(escapedGoogleAnalyticsScript));
}
});
diff --git a/server/modules/google-analytics.js b/server/modules/google-analytics.js
index 2c10e5841..4e0c95b24 100644
--- a/server/modules/google-analytics.js
+++ b/server/modules/google-analytics.js
@@ -1,30 +1,27 @@
-let GoogleAnalytics = (() => {
- /**
- * Returns a string that represents the javascript that is required to insert the Google Analytics scripts
- * into a webpage.
- * @param tagId Google UA/G/AW/DC Property ID to use with the Google Analytics script.
- * @returns {string}
- */
- function getGoogleAnalyticsScript(tagId) {
- return "" +
- "";
- }
+/**
+ * Returns true if the tag conforms to the format of 1-2 Letters followed by a dash and 8 numbers.
+ * This should take care of the following property tag formats:
+ * UA-########, G-########, AW-########, DC-########
+ * @param {String} tagInput Google UA/G/AW/DC Property ID
+ * @returns {boolean}
+ */
+function isValidTag(tagInput) {
+ const re = /^\w{1,2}-\d{8}$/g;
+ return tagInput.match(re) != null;
+}
- /**
- * Returns true if the tag conforms to the format of 1-2 Letters followed by a dash and 8 numbers.
- * This should take care of the following property tag formats:
- * UA-########, G-########, AW-########, DC-########
- * @param {String} tagInput Google UA/G/AW/DC Property ID
- * @returns {boolean}
- */
- function isValidTag(tagInput) {
- const re = /^\w{1,2}-\d{8}$/g;
- return tagInput.match(re) != null;
- }
- return {
- getGoogleAnalyticsScript: getGoogleAnalyticsScript,
- isValidTag: isValidTag
- };
-})();
+/**
+ * Returns a string that represents the javascript that is required to insert the Google Analytics scripts
+ * into a webpage.
+ * @param tagId Google UA/G/AW/DC Property ID to use with the Google Analytics script.
+ * @returns {string}
+ */
+function getGoogleAnalyticsScript(tagId) {
+ return "" +
+ "";
+}
-module.exports = GoogleAnalytics;
+module.exports = {
+ getGoogleAnalyticsScript,
+ isValidTag,
+};