diff --git a/.github/workflows/auto-test.yml b/.github/workflows/auto-test.yml index c0efc64a..a7a01684 100644 --- a/.github/workflows/auto-test.yml +++ b/.github/workflows/auto-test.yml @@ -11,12 +11,14 @@ on: jobs: auto-test: + needs: [ check-linters ] runs-on: ${{ matrix.os }} + timeout-minutes: 15 strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] - node: [14, 16, 17] + node: [ 14, 16, 17, 18 ] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: @@ -28,7 +30,7 @@ jobs: with: node-version: ${{ matrix.node }} cache: 'npm' - - run: npm run install-legacy + - run: npm install - run: npm run build - run: npm test env: @@ -44,7 +46,7 @@ jobs: - name: Use Node.js LTS uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 14 cache: 'npm' - - run: npm run install-legacy + - run: npm install - run: npm run lint diff --git a/package.json b/package.json index 06c2a671..6b21096b 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "node": "14.* || >=16.*" }, "scripts": { - "install-legacy": "npm install --legacy-peer-deps", - "update-legacy": "npm update --legacy-peer-deps", + "install-legacy": "npm install", + "update-legacy": "npm update", "lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .", "lint-fix:js": "eslint --ext \".js,.vue\" --fix --ignore-path .gitignore .", "lint:style": "stylelint \"**/*.{vue,css,scss}\" --ignore-path .gitignore", diff --git a/server/notification-providers/aliyun-sms.js b/server/notification-providers/aliyun-sms.js index fc281511..fa73ffb1 100644 --- a/server/notification-providers/aliyun-sms.js +++ b/server/notification-providers/aliyun-sms.js @@ -93,8 +93,23 @@ class AliyunSMS extends NotificationProvider { param2[key] = param[key]; } + // Escape more characters than encodeURIComponent does. + // For generating Aliyun signature, all characters except A-Za-z0-9~-._ are encoded. + // See https://help.aliyun.com/document_detail/315526.html + // This encoding methods as known as RFC 3986 (https://tools.ietf.org/html/rfc3986) + let moreEscapesTable = function (m) { + return { + "!": "%21", + "*": "%2A", + "'": "%27", + "(": "%28", + ")": "%29" + }[m]; + }; + for (let key in param2) { - data.push(`${encodeURIComponent(key)}=${encodeURIComponent(param2[key])}`); + let value = encodeURIComponent(param2[key]).replace(/[!*'()]/g, moreEscapesTable); + data.push(`${encodeURIComponent(key)}=${value}`); } let StringToSign = `POST&${encodeURIComponent("/")}&${encodeURIComponent(data.join("&"))}`; diff --git a/src/components/PingChart.vue b/src/components/PingChart.vue index ede31955..9bf42e78 100644 --- a/src/components/PingChart.vue +++ b/src/components/PingChart.vue @@ -24,7 +24,7 @@ import timezone from "dayjs/plugin/timezone"; import utc from "dayjs/plugin/utc"; import { LineChart } from "vue-chart-3"; import { useToast } from "vue-toastification"; -import { DOWN, PENDING, MAINTENANCE } from "../util.ts"; +import { DOWN, PENDING, MAINTENANCE, log } from "../util.ts"; dayjs.extend(utc); dayjs.extend(timezone); @@ -219,8 +219,9 @@ export default { watch: { // Update chart data when the selected chart period changes chartPeriodHrs: function (newPeriod) { - if (newPeriod === "0") { - newPeriod = null; + + // eslint-disable-next-line eqeqeq + if (newPeriod == "0") { this.heartbeatList = null; this.$root.storage().removeItem(`chart-period-${this.monitorId}`); } else { @@ -243,7 +244,11 @@ export default { // And mirror latest change to this.heartbeatList this.$watch(() => this.$root.heartbeatList[this.monitorId], (heartbeatList) => { - if (this.chartPeriodHrs !== 0) { + + log.debug("ping_chart", `this.chartPeriodHrs type ${typeof this.chartPeriodHrs}, value: ${this.chartPeriodHrs}`); + + // eslint-disable-next-line eqeqeq + if (this.chartPeriodHrs != "0") { const newBeat = heartbeatList.at(-1); if (newBeat && dayjs.utc(newBeat.time) > dayjs.utc(this.heartbeatList.at(-1)?.time)) { this.heartbeatList.push(heartbeatList.at(-1)); diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index 474a1eba..3fd17cce 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -71,7 +71,7 @@
- +
diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 39c114ad..43f34527 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -421,7 +421,7 @@ export default { }, pushURL() { - return this.$root.baseURL + "/api/push/" + this.monitor.pushToken + "?status=true&msg=OK&ping="; + return this.$root.baseURL + "/api/push/" + this.monitor.pushToken + "?status=up&msg=OK&ping="; }, bodyPlaceholder() { diff --git a/src/util.js b/src/util.js index 07b6ead6..2a56a7dc 100644 --- a/src/util.js +++ b/src/util.js @@ -104,7 +104,7 @@ class Logger { } else if (level === "DEBUG") { if (exports.isDev) { - console.debug(formattedMessage); + console.log(formattedMessage); } } else { diff --git a/src/util.ts b/src/util.ts index b307295a..38d7394d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -115,7 +115,7 @@ class Logger { console.error(formattedMessage); } else if (level === "DEBUG") { if (isDev) { - console.debug(formattedMessage); + console.log(formattedMessage); } } else { console.log(formattedMessage);