mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev
This commit is contained in:
222
interface/package-lock.json
generated
222
interface/package-lock.json
generated
@@ -12,10 +12,10 @@
|
|||||||
"@emotion/styled": "^11.8.1",
|
"@emotion/styled": "^11.8.1",
|
||||||
"@msgpack/msgpack": "^2.7.2",
|
"@msgpack/msgpack": "^2.7.2",
|
||||||
"@mui/icons-material": "^5.6.2",
|
"@mui/icons-material": "^5.6.2",
|
||||||
"@mui/material": "^5.6.4",
|
"@mui/material": "^5.7.0",
|
||||||
"@table-library/react-table-library": "^3.1.0",
|
"@table-library/react-table-library": "^3.1.2",
|
||||||
"@types/lodash": "^4.14.182",
|
"@types/lodash": "^4.14.182",
|
||||||
"@types/node": "^17.0.31",
|
"@types/node": "^17.0.33",
|
||||||
"@types/react": "^17.0.43",
|
"@types/react": "^17.0.43",
|
||||||
"@types/react-dom": "^17.0.14",
|
"@types/react-dom": "^17.0.14",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"http-proxy-middleware": "^2.0.6",
|
"http-proxy-middleware": "^2.0.6",
|
||||||
"jwt-decode": "^3.1.2",
|
"jwt-decode": "^3.1.2",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"notistack": "^2.0.4",
|
"notistack": "^2.0.5",
|
||||||
"parse-ms": "^3.0.0",
|
"parse-ms": "^3.0.0",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-app-rewired": "^2.2.1",
|
"react-app-rewired": "^2.2.1",
|
||||||
@@ -2856,17 +2856,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/base": {
|
"node_modules/@mui/base": {
|
||||||
"version": "5.0.0-alpha.79",
|
"version": "5.0.0-alpha.80",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.79.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.80.tgz",
|
||||||
"integrity": "sha512-/lZLF027BkiEjM8MIYoeS/FEhTKf+41ePU9SOijMGrCin1Y0Igucw+IHa1fF8HXD7wDbFKqHuso3J1jMG8wyNw==",
|
"integrity": "sha512-sPSYwJzwNMaqpksdLuOhpQQLrhtpBH4sNnMSgkzJzo7Jo4HF9ivjNpq27Zh5+sdRe5MTt0gcBT0QSMO6zML1Aw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@emotion/is-prop-valid": "^1.1.2",
|
"@emotion/is-prop-valid": "^1.1.2",
|
||||||
|
"@mui/private-classnames": "^5.7.0",
|
||||||
"@mui/types": "^7.1.3",
|
"@mui/types": "^7.1.3",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"@popperjs/core": "^2.11.5",
|
"@popperjs/core": "^2.11.5",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^17.0.2"
|
"react-is": "^17.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2913,20 +2914,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/material": {
|
"node_modules/@mui/material": {
|
||||||
"version": "5.6.4",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.7.0.tgz",
|
||||||
"integrity": "sha512-7TD+u/SExZK2a55w6reX56oPk37gKr/M/XGt156X+m0d9LhzOsW864nkErIX/H8oSkX/6kCimxu1FDsO+gjiVw==",
|
"integrity": "sha512-s1TSuUK5upNzGY5ZFHfJyzEt9fijn4cE+kEdEq7jGF+vpZIYXsDooH07+dNJ9+cJjYo6f9Fq1q5fPkknRC2Trw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@mui/base": "5.0.0-alpha.79",
|
"@mui/base": "5.0.0-alpha.80",
|
||||||
"@mui/system": "^5.6.4",
|
"@mui/private-classnames": "^5.7.0",
|
||||||
|
"@mui/system": "^5.7.0",
|
||||||
"@mui/types": "^7.1.3",
|
"@mui/types": "^7.1.3",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"@types/react-transition-group": "^4.4.4",
|
"@types/react-transition-group": "^4.4.4",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"csstype": "^3.0.11",
|
"csstype": "^3.0.11",
|
||||||
"hoist-non-react-statics": "^3.3.2",
|
"hoist-non-react-statics": "^3.3.2",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^17.0.2",
|
"react-is": "^17.0.2",
|
||||||
"react-transition-group": "^4.4.2"
|
"react-transition-group": "^4.4.2"
|
||||||
},
|
},
|
||||||
@@ -2956,14 +2958,26 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@mui/private-classnames": {
|
||||||
|
"version": "5.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@mui/private-classnames/-/private-classnames-5.7.0.tgz",
|
||||||
|
"integrity": "sha512-OSB4ybzpYiS11rQ3VtbcJz/CS19lC0r0Hk14iRZwPtVgapnL1hKsGtmgRviZLxpLk/cZUKaxaJDuuzI/extCoA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/mui"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@mui/private-theming": {
|
"node_modules/@mui/private-theming": {
|
||||||
"version": "5.6.2",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.7.0.tgz",
|
||||||
"integrity": "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg==",
|
"integrity": "sha512-r/6JAWAHV1IFASZnceJPe9QT/s12ia/okGbmCUO4MEPdsWcNKye1RVKSwVgLATaX3YwPxDljWguIQrM3R2gZNA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -2983,13 +2997,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/styled-engine": {
|
"node_modules/@mui/styled-engine": {
|
||||||
"version": "5.6.1",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.7.0.tgz",
|
||||||
"integrity": "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ==",
|
"integrity": "sha512-JTvp+6lbAXYqgf/YInwR+hd4F8Fhg5PxMBwKTFsdKbaZFvyBD95hzKcxRmO9Y/NdjwFYWm5bBhcZAT4r2g1kZA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@emotion/cache": "^11.7.1",
|
"@emotion/cache": "^11.7.1",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -3013,18 +3027,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/system": {
|
"node_modules/@mui/system": {
|
||||||
"version": "5.6.4",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.7.0.tgz",
|
||||||
"integrity": "sha512-7rsWED1wMFMePySJobsBerFZNu7ga580QSi3Zd6sJR8nVj12qD3yIdfvxA70/PxJ/805KbIT0GX7edKI+hpyhA==",
|
"integrity": "sha512-M0vemfcfaRQzqLUmVRIsAVb0rx2ULHisHED6njoJqtjH58gbVb497mH+K1vI+Lh29fKR6Ki2mx3egxVi7mUn9w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@mui/private-theming": "^5.6.2",
|
"@mui/private-theming": "^5.7.0",
|
||||||
"@mui/styled-engine": "^5.6.1",
|
"@mui/styled-engine": "^5.7.0",
|
||||||
"@mui/types": "^7.1.3",
|
"@mui/types": "^7.1.3",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"csstype": "^3.0.11",
|
"csstype": "^3.0.11",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
@@ -3065,14 +3079,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/utils": {
|
"node_modules/@mui/utils": {
|
||||||
"version": "5.6.1",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.7.0.tgz",
|
||||||
"integrity": "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ==",
|
"integrity": "sha512-uWpDIEXl7bWYkJwKQQ4Rdhc2dcotVETRYuLy29V6qLYZyAbs7AMKwDDz0XKy3RMNmU7S2R/jEeSb9xjXscQUHQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@types/prop-types": "^15.7.4",
|
"@types/prop-types": "^15.7.5",
|
||||||
"@types/react-is": "^16.7.1 || ^17.0.0",
|
"@types/react-is": "^16.7.1 || ^17.0.0",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^17.0.2"
|
"react-is": "^17.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3549,14 +3563,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@table-library/react-table-library": {
|
"node_modules/@table-library/react-table-library": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.2.tgz",
|
||||||
"integrity": "sha512-YCWmLPdElk/4+VPSxDcgQXlJx+jxYH2xJwr8NXm9e1AEy17K8mtrjzD5SQXDOiVT8vSOzD21eEldfIaI/kooHA==",
|
"integrity": "sha512-zfjIvcEP114KFh5WyZzbPQHtaxiSr0LHHgm+A8El6YG/SQ7D+i88RUdwiBu3uuKXTY7OV+5v/GESEiioZo150w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clsx": "1.1.1",
|
"clsx": "1.1.1",
|
||||||
"react-virtualized-auto-sizer": "1.0.6",
|
"react-virtualized-auto-sizer": "1.0.6",
|
||||||
"react-window": "1.8.6",
|
"react-window": "1.8.6"
|
||||||
"use-double-click": "1.0.5"
|
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": ">= 11",
|
"@emotion/react": ">= 11",
|
||||||
@@ -3763,9 +3776,9 @@
|
|||||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "17.0.31",
|
"version": "17.0.33",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz",
|
||||||
"integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q=="
|
"integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/parse-json": {
|
"node_modules/@types/parse-json": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@@ -12150,9 +12163,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/notistack": {
|
"node_modules/notistack": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.5.tgz",
|
||||||
"integrity": "sha512-kOJmKvTG91ElMzi4aHu82BDe1liQ0zMrBp+TnWJptgowDsTbeTKbZmsRqJNIj145BmlOtZsEE9xjcrN46zVo3w==",
|
"integrity": "sha512-Ig2T1Muqkc1PaSQcEDrK7diKv6cBxw02Iq6uv074ySfgq524TV5lK41diAb6OSsaiWfp3aRt+T3+0MF8m2EcJQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clsx": "^1.1.0",
|
"clsx": "^1.1.0",
|
||||||
"hoist-non-react-statics": "^3.3.0"
|
"hoist-non-react-statics": "^3.3.0"
|
||||||
@@ -16609,19 +16622,6 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/use-double-click": {
|
|
||||||
"version": "1.0.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/use-double-click/-/use-double-click-1.0.5.tgz",
|
|
||||||
"integrity": "sha512-71LUca6NtzpzHYlcfM/dOdmwvmvpMbzeIVQpN87w+DctpLiMCXtZpsN8FNWPgHpPBtNhvucPUHIDh5al8D8C7w==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8",
|
|
||||||
"npm": ">=5"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"react": ">=16.8",
|
|
||||||
"react-dom": ">=16.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/util-deprecate": {
|
"node_modules/util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
@@ -19569,17 +19569,18 @@
|
|||||||
"integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw=="
|
"integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw=="
|
||||||
},
|
},
|
||||||
"@mui/base": {
|
"@mui/base": {
|
||||||
"version": "5.0.0-alpha.79",
|
"version": "5.0.0-alpha.80",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.79.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.80.tgz",
|
||||||
"integrity": "sha512-/lZLF027BkiEjM8MIYoeS/FEhTKf+41ePU9SOijMGrCin1Y0Igucw+IHa1fF8HXD7wDbFKqHuso3J1jMG8wyNw==",
|
"integrity": "sha512-sPSYwJzwNMaqpksdLuOhpQQLrhtpBH4sNnMSgkzJzo7Jo4HF9ivjNpq27Zh5+sdRe5MTt0gcBT0QSMO6zML1Aw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@emotion/is-prop-valid": "^1.1.2",
|
"@emotion/is-prop-valid": "^1.1.2",
|
||||||
|
"@mui/private-classnames": "^5.7.0",
|
||||||
"@mui/types": "^7.1.3",
|
"@mui/types": "^7.1.3",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"@popperjs/core": "^2.11.5",
|
"@popperjs/core": "^2.11.5",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^17.0.2"
|
"react-is": "^17.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -19592,57 +19593,63 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/material": {
|
"@mui/material": {
|
||||||
"version": "5.6.4",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.7.0.tgz",
|
||||||
"integrity": "sha512-7TD+u/SExZK2a55w6reX56oPk37gKr/M/XGt156X+m0d9LhzOsW864nkErIX/H8oSkX/6kCimxu1FDsO+gjiVw==",
|
"integrity": "sha512-s1TSuUK5upNzGY5ZFHfJyzEt9fijn4cE+kEdEq7jGF+vpZIYXsDooH07+dNJ9+cJjYo6f9Fq1q5fPkknRC2Trw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@mui/base": "5.0.0-alpha.79",
|
"@mui/base": "5.0.0-alpha.80",
|
||||||
"@mui/system": "^5.6.4",
|
"@mui/private-classnames": "^5.7.0",
|
||||||
|
"@mui/system": "^5.7.0",
|
||||||
"@mui/types": "^7.1.3",
|
"@mui/types": "^7.1.3",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"@types/react-transition-group": "^4.4.4",
|
"@types/react-transition-group": "^4.4.4",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"csstype": "^3.0.11",
|
"csstype": "^3.0.11",
|
||||||
"hoist-non-react-statics": "^3.3.2",
|
"hoist-non-react-statics": "^3.3.2",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^17.0.2",
|
"react-is": "^17.0.2",
|
||||||
"react-transition-group": "^4.4.2"
|
"react-transition-group": "^4.4.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@mui/private-classnames": {
|
||||||
|
"version": "5.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@mui/private-classnames/-/private-classnames-5.7.0.tgz",
|
||||||
|
"integrity": "sha512-OSB4ybzpYiS11rQ3VtbcJz/CS19lC0r0Hk14iRZwPtVgapnL1hKsGtmgRviZLxpLk/cZUKaxaJDuuzI/extCoA=="
|
||||||
|
},
|
||||||
"@mui/private-theming": {
|
"@mui/private-theming": {
|
||||||
"version": "5.6.2",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.7.0.tgz",
|
||||||
"integrity": "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg==",
|
"integrity": "sha512-r/6JAWAHV1IFASZnceJPe9QT/s12ia/okGbmCUO4MEPdsWcNKye1RVKSwVgLATaX3YwPxDljWguIQrM3R2gZNA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/styled-engine": {
|
"@mui/styled-engine": {
|
||||||
"version": "5.6.1",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.7.0.tgz",
|
||||||
"integrity": "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ==",
|
"integrity": "sha512-JTvp+6lbAXYqgf/YInwR+hd4F8Fhg5PxMBwKTFsdKbaZFvyBD95hzKcxRmO9Y/NdjwFYWm5bBhcZAT4r2g1kZA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@emotion/cache": "^11.7.1",
|
"@emotion/cache": "^11.7.1",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/system": {
|
"@mui/system": {
|
||||||
"version": "5.6.4",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.7.0.tgz",
|
||||||
"integrity": "sha512-7rsWED1wMFMePySJobsBerFZNu7ga580QSi3Zd6sJR8nVj12qD3yIdfvxA70/PxJ/805KbIT0GX7edKI+hpyhA==",
|
"integrity": "sha512-M0vemfcfaRQzqLUmVRIsAVb0rx2ULHisHED6njoJqtjH58gbVb497mH+K1vI+Lh29fKR6Ki2mx3egxVi7mUn9w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@mui/private-theming": "^5.6.2",
|
"@mui/private-theming": "^5.7.0",
|
||||||
"@mui/styled-engine": "^5.6.1",
|
"@mui/styled-engine": "^5.7.0",
|
||||||
"@mui/types": "^7.1.3",
|
"@mui/types": "^7.1.3",
|
||||||
"@mui/utils": "^5.6.1",
|
"@mui/utils": "^5.7.0",
|
||||||
"clsx": "^1.1.1",
|
"clsx": "^1.1.1",
|
||||||
"csstype": "^3.0.11",
|
"csstype": "^3.0.11",
|
||||||
"prop-types": "^15.7.2"
|
"prop-types": "^15.8.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/types": {
|
"@mui/types": {
|
||||||
@@ -19652,14 +19659,14 @@
|
|||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"@mui/utils": {
|
"@mui/utils": {
|
||||||
"version": "5.6.1",
|
"version": "5.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.7.0.tgz",
|
||||||
"integrity": "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ==",
|
"integrity": "sha512-uWpDIEXl7bWYkJwKQQ4Rdhc2dcotVETRYuLy29V6qLYZyAbs7AMKwDDz0XKy3RMNmU7S2R/jEeSb9xjXscQUHQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.17.2",
|
"@babel/runtime": "^7.17.2",
|
||||||
"@types/prop-types": "^15.7.4",
|
"@types/prop-types": "^15.7.5",
|
||||||
"@types/react-is": "^16.7.1 || ^17.0.0",
|
"@types/react-is": "^16.7.1 || ^17.0.0",
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^17.0.2"
|
"react-is": "^17.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -19947,14 +19954,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@table-library/react-table-library": {
|
"@table-library/react-table-library": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@table-library/react-table-library/-/react-table-library-3.1.2.tgz",
|
||||||
"integrity": "sha512-YCWmLPdElk/4+VPSxDcgQXlJx+jxYH2xJwr8NXm9e1AEy17K8mtrjzD5SQXDOiVT8vSOzD21eEldfIaI/kooHA==",
|
"integrity": "sha512-zfjIvcEP114KFh5WyZzbPQHtaxiSr0LHHgm+A8El6YG/SQ7D+i88RUdwiBu3uuKXTY7OV+5v/GESEiioZo150w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"clsx": "1.1.1",
|
"clsx": "1.1.1",
|
||||||
"react-virtualized-auto-sizer": "1.0.6",
|
"react-virtualized-auto-sizer": "1.0.6",
|
||||||
"react-window": "1.8.6",
|
"react-window": "1.8.6"
|
||||||
"use-double-click": "1.0.5"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@tootallnate/once": {
|
"@tootallnate/once": {
|
||||||
@@ -20150,9 +20156,9 @@
|
|||||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "17.0.31",
|
"version": "17.0.33",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz",
|
||||||
"integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q=="
|
"integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ=="
|
||||||
},
|
},
|
||||||
"@types/parse-json": {
|
"@types/parse-json": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@@ -26292,9 +26298,9 @@
|
|||||||
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
|
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
|
||||||
},
|
},
|
||||||
"notistack": {
|
"notistack": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.5.tgz",
|
||||||
"integrity": "sha512-kOJmKvTG91ElMzi4aHu82BDe1liQ0zMrBp+TnWJptgowDsTbeTKbZmsRqJNIj145BmlOtZsEE9xjcrN46zVo3w==",
|
"integrity": "sha512-Ig2T1Muqkc1PaSQcEDrK7diKv6cBxw02Iq6uv074ySfgq524TV5lK41diAb6OSsaiWfp3aRt+T3+0MF8m2EcJQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"clsx": "^1.1.0",
|
"clsx": "^1.1.0",
|
||||||
"hoist-non-react-statics": "^3.3.0"
|
"hoist-non-react-statics": "^3.3.0"
|
||||||
@@ -29412,12 +29418,6 @@
|
|||||||
"prepend-http": "^2.0.0"
|
"prepend-http": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"use-double-click": {
|
|
||||||
"version": "1.0.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/use-double-click/-/use-double-click-1.0.5.tgz",
|
|
||||||
"integrity": "sha512-71LUca6NtzpzHYlcfM/dOdmwvmvpMbzeIVQpN87w+DctpLiMCXtZpsN8FNWPgHpPBtNhvucPUHIDh5al8D8C7w==",
|
|
||||||
"requires": {}
|
|
||||||
},
|
|
||||||
"util-deprecate": {
|
"util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
|||||||
@@ -8,10 +8,10 @@
|
|||||||
"@emotion/styled": "^11.8.1",
|
"@emotion/styled": "^11.8.1",
|
||||||
"@msgpack/msgpack": "^2.7.2",
|
"@msgpack/msgpack": "^2.7.2",
|
||||||
"@mui/icons-material": "^5.6.2",
|
"@mui/icons-material": "^5.6.2",
|
||||||
"@mui/material": "^5.6.4",
|
"@mui/material": "^5.7.0",
|
||||||
"@table-library/react-table-library": "^3.1.0",
|
"@table-library/react-table-library": "^3.1.2",
|
||||||
"@types/lodash": "^4.14.182",
|
"@types/lodash": "^4.14.182",
|
||||||
"@types/node": "^17.0.31",
|
"@types/node": "^17.0.33",
|
||||||
"@types/react": "^17.0.43",
|
"@types/react": "^17.0.43",
|
||||||
"@types/react-dom": "^17.0.14",
|
"@types/react-dom": "^17.0.14",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"http-proxy-middleware": "^2.0.6",
|
"http-proxy-middleware": "^2.0.6",
|
||||||
"jwt-decode": "^3.1.2",
|
"jwt-decode": "^3.1.2",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"notistack": "^2.0.4",
|
"notistack": "^2.0.5",
|
||||||
"parse-ms": "^3.0.0",
|
"parse-ms": "^3.0.0",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-app-rewired": "^2.2.1",
|
"react-app-rewired": "^2.2.1",
|
||||||
|
|||||||
@@ -38,3 +38,4 @@ export function updateLogSettings(logSettings: LogSettings): AxiosPromise<LogSet
|
|||||||
export function readLogEntries(): AxiosPromise<LogEntries> {
|
export function readLogEntries(): AxiosPromise<LogEntries> {
|
||||||
return AXIOS_BIN.get('/fetchLog');
|
return AXIOS_BIN.get('/fetchLog');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,22 @@ const HelpInformation: FC = () => {
|
|||||||
|
|
||||||
const { me } = useContext(AuthenticatedContext);
|
const { me } = useContext(AuthenticatedContext);
|
||||||
|
|
||||||
const onDownload = async (endpoint: string) => {
|
const saveFile = (json: any, endpoint: string) => {
|
||||||
|
const a = document.createElement('a');
|
||||||
|
const filename = 'emsesp_' + endpoint + '.json';
|
||||||
|
a.href = URL.createObjectURL(
|
||||||
|
new Blob([JSON.stringify(json, null, 2)], {
|
||||||
|
type: 'text/plain'
|
||||||
|
})
|
||||||
|
);
|
||||||
|
a.setAttribute('download', filename);
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
document.body.removeChild(a);
|
||||||
|
enqueueSnackbar('File downloaded', { variant: 'info' });
|
||||||
|
};
|
||||||
|
|
||||||
|
const callAPI = async (endpoint: string) => {
|
||||||
try {
|
try {
|
||||||
const response = await EMSESP.API({
|
const response = await EMSESP.API({
|
||||||
device: 'system',
|
device: 'system',
|
||||||
@@ -34,19 +49,33 @@ const HelpInformation: FC = () => {
|
|||||||
if (response.status !== 200) {
|
if (response.status !== 200) {
|
||||||
enqueueSnackbar('API call failed', { variant: 'error' });
|
enqueueSnackbar('API call failed', { variant: 'error' });
|
||||||
} else {
|
} else {
|
||||||
const json = response.data;
|
saveFile(response.data, endpoint);
|
||||||
const a = document.createElement('a');
|
}
|
||||||
const filename = 'emsesp_' + endpoint + '.json';
|
} catch (error: unknown) {
|
||||||
a.href = URL.createObjectURL(
|
enqueueSnackbar(extractErrorMessage(error, 'Problem with downloading'), { variant: 'error' });
|
||||||
new Blob([JSON.stringify(json, null, 2)], {
|
}
|
||||||
type: 'text/plain'
|
};
|
||||||
})
|
|
||||||
);
|
const downloadSettings = async () => {
|
||||||
a.setAttribute('download', filename);
|
try {
|
||||||
document.body.appendChild(a);
|
const response = await EMSESP.getSettings();
|
||||||
a.click();
|
if (response.status !== 200) {
|
||||||
document.body.removeChild(a);
|
enqueueSnackbar('Unable to get settings', { variant: 'error' });
|
||||||
enqueueSnackbar('File downloaded', { variant: 'info' });
|
} else {
|
||||||
|
saveFile(response.data, 'settings');
|
||||||
|
}
|
||||||
|
} catch (error: unknown) {
|
||||||
|
enqueueSnackbar(extractErrorMessage(error, 'Problem with downloading'), { variant: 'error' });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const downloadCustomizations = async () => {
|
||||||
|
try {
|
||||||
|
const response = await EMSESP.getCustomizations();
|
||||||
|
if (response.status !== 200) {
|
||||||
|
enqueueSnackbar('Unable to get customizations', { variant: 'error' });
|
||||||
|
} else {
|
||||||
|
saveFile(response.data, 'customizations');
|
||||||
}
|
}
|
||||||
} catch (error: unknown) {
|
} catch (error: unknown) {
|
||||||
enqueueSnackbar(extractErrorMessage(error, 'Problem with downloading'), { variant: 'error' });
|
enqueueSnackbar(extractErrorMessage(error, 'Problem with downloading'), { variant: 'error' });
|
||||||
@@ -103,7 +132,7 @@ const HelpInformation: FC = () => {
|
|||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText>
|
<ListItemText>
|
||||||
To report an issue or request a feature, please
|
To report an issue or request a feature, please
|
||||||
<Link component="button" variant="body1" onClick={() => onDownload('info')}>
|
<Link component="button" variant="body1" onClick={() => callAPI('info')}>
|
||||||
download
|
download
|
||||||
</Link>
|
</Link>
|
||||||
the debug information and include in a new
|
the debug information and include in a new
|
||||||
@@ -131,7 +160,7 @@ const HelpInformation: FC = () => {
|
|||||||
startIcon={<DownloadIcon />}
|
startIcon={<DownloadIcon />}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
color="primary"
|
color="primary"
|
||||||
onClick={() => onDownload('settings')}
|
onClick={() => downloadSettings()}
|
||||||
>
|
>
|
||||||
settings
|
settings
|
||||||
</Button>
|
</Button>
|
||||||
@@ -139,7 +168,7 @@ const HelpInformation: FC = () => {
|
|||||||
startIcon={<DownloadIcon />}
|
startIcon={<DownloadIcon />}
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
color="primary"
|
color="primary"
|
||||||
onClick={() => onDownload('customizations')}
|
onClick={() => downloadCustomizations()}
|
||||||
>
|
>
|
||||||
customizations
|
customizations
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -86,3 +86,11 @@ export function resetCustomizations(): AxiosPromise<void> {
|
|||||||
export function API(apiCall: APIcall): AxiosPromise<void> {
|
export function API(apiCall: APIcall): AxiosPromise<void> {
|
||||||
return AXIOS_API.post('/', apiCall);
|
return AXIOS_API.post('/', apiCall);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getSettings(): AxiosPromise<void> {
|
||||||
|
return AXIOS.get('/getSettings');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getCustomizations(): AxiosPromise<void> {
|
||||||
|
return AXIOS.get('/getCustomizations');
|
||||||
|
}
|
||||||
|
|||||||
@@ -1193,16 +1193,19 @@ rest_server.get(SYSTEM_INFO_ENDPOINT, (req, res) => {
|
|||||||
res.json(emsesp_info)
|
res.json(emsesp_info)
|
||||||
})
|
})
|
||||||
|
|
||||||
const SYSTEM_SETTINGS_ENDPOINT = API_ENDPOINT_ROOT + 'system/settings'
|
const GET_SETTINGS_ENDPOINT = REST_ENDPOINT_ROOT + 'getSettings'
|
||||||
rest_server.post(SYSTEM_SETTINGS_ENDPOINT, (req, res) => {
|
rest_server.get(GET_SETTINGS_ENDPOINT, (req, res) => {
|
||||||
console.log('System Settings POST: ' + JSON.stringify(req.body))
|
console.log('System Settings:')
|
||||||
res.sendStatus(200)
|
|
||||||
})
|
|
||||||
rest_server.get(SYSTEM_SETTINGS_ENDPOINT, (req, res) => {
|
|
||||||
console.log('System Settings GET')
|
|
||||||
res.json(settings)
|
res.json(settings)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const GET_CUSTOMIZATIONS_ENDPOINT = REST_ENDPOINT_ROOT + 'getCustomizations'
|
||||||
|
rest_server.get(GET_CUSTOMIZATIONS_ENDPOINT, (req, res) => {
|
||||||
|
console.log('Customizations:')
|
||||||
|
// not implemented yet
|
||||||
|
res.sendStatus(200)
|
||||||
|
})
|
||||||
|
|
||||||
// start server
|
// start server
|
||||||
const expressServer = rest_server.listen(port, () =>
|
const expressServer = rest_server.listen(port, () =>
|
||||||
console.log(`Mock server for EMS-ESP is up and running at http://localhost:${port}`),
|
console.log(`Mock server for EMS-ESP is up and running at http://localhost:${port}`),
|
||||||
|
|||||||
@@ -689,8 +689,6 @@ void System::commands_init() {
|
|||||||
|
|
||||||
// these commands will return data in JSON format
|
// these commands will return data in JSON format
|
||||||
Command::add(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info, F("show system status"));
|
Command::add(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info, F("show system status"));
|
||||||
Command::add(EMSdevice::DeviceType::SYSTEM, F_(settings), System::command_settings, F("fetch system settings"), CommandFlag::ADMIN_ONLY);
|
|
||||||
Command::add(EMSdevice::DeviceType::SYSTEM, F_(customizations), System::command_customizations, F("fetch system customizations"));
|
|
||||||
Command::add(EMSdevice::DeviceType::SYSTEM, F_(commands), System::command_commands, F("fetch system commands"));
|
Command::add(EMSdevice::DeviceType::SYSTEM, F_(commands), System::command_commands, F("fetch system commands"));
|
||||||
|
|
||||||
#if defined(EMSESP_DEBUG)
|
#if defined(EMSESP_DEBUG)
|
||||||
@@ -973,34 +971,6 @@ bool System::saveSettings(const char * filename, const char * section, JsonObjec
|
|||||||
return false; // not found
|
return false; // not found
|
||||||
}
|
}
|
||||||
|
|
||||||
// export all settings to JSON text
|
|
||||||
// we need to keep the original format so the import/upload works as we just replace files
|
|
||||||
// http://ems-esp/api/system/settings
|
|
||||||
bool System::command_settings(const char * value, const int8_t id, JsonObject & output) {
|
|
||||||
output["type"] = "settings";
|
|
||||||
|
|
||||||
JsonObject node = output.createNestedObject("System");
|
|
||||||
node["version"] = EMSESP_APP_VERSION;
|
|
||||||
|
|
||||||
extractSettings(NETWORK_SETTINGS_FILE, "Network", output);
|
|
||||||
extractSettings(AP_SETTINGS_FILE, "AP", output);
|
|
||||||
extractSettings(MQTT_SETTINGS_FILE, "MQTT", output);
|
|
||||||
extractSettings(NTP_SETTINGS_FILE, "NTP", output);
|
|
||||||
extractSettings(OTA_SETTINGS_FILE, "OTA", output);
|
|
||||||
extractSettings(SECURITY_SETTINGS_FILE, "Security", output);
|
|
||||||
extractSettings(EMSESP_SETTINGS_FILE, "Settings", output);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// http://ems-esp/api/system/customizations
|
|
||||||
// we need to keep the original format so the import/upload works as we just replace file
|
|
||||||
bool System::command_customizations(const char * value, const int8_t id, JsonObject & output) {
|
|
||||||
output["type"] = "customizations";
|
|
||||||
extractSettings(EMSESP_CUSTOMIZATION_FILE, "Customizations", output);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// export status information including the device information
|
// export status information including the device information
|
||||||
// http://ems-esp/api/system/info
|
// http://ems-esp/api/system/info
|
||||||
bool System::command_info(const char * value, const int8_t id, JsonObject & output) {
|
bool System::command_info(const char * value, const int8_t id, JsonObject & output) {
|
||||||
|
|||||||
@@ -61,8 +61,6 @@ class System {
|
|||||||
static bool command_watch(const char * value, const int8_t id);
|
static bool command_watch(const char * value, const int8_t id);
|
||||||
|
|
||||||
static bool command_info(const char * value, const int8_t id, JsonObject & output);
|
static bool command_info(const char * value, const int8_t id, JsonObject & output);
|
||||||
static bool command_settings(const char * value, const int8_t id, JsonObject & output);
|
|
||||||
static bool command_customizations(const char * value, const int8_t id, JsonObject & output);
|
|
||||||
static bool command_commands(const char * value, const int8_t id, JsonObject & output);
|
static bool command_commands(const char * value, const int8_t id, JsonObject & output);
|
||||||
|
|
||||||
std::string reset_reason(uint8_t cpu) const;
|
std::string reset_reason(uint8_t cpu) const;
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define EMSESP_APP_VERSION "3.4.0b17"
|
#define EMSESP_APP_VERSION "3.4.0b18"
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ WebAPIService::WebAPIService(AsyncWebServer * server, SecurityManager * security
|
|||||||
, _apiHandler("/api", std::bind(&WebAPIService::webAPIService_post, this, _1, _2), 256) { // for POSTS, must use 'Content-Type: application/json' in header
|
, _apiHandler("/api", std::bind(&WebAPIService::webAPIService_post, this, _1, _2), 256) { // for POSTS, must use 'Content-Type: application/json' in header
|
||||||
server->on("/api", HTTP_GET, std::bind(&WebAPIService::webAPIService_get, this, _1)); // for GETS
|
server->on("/api", HTTP_GET, std::bind(&WebAPIService::webAPIService_get, this, _1)); // for GETS
|
||||||
server->addHandler(&_apiHandler);
|
server->addHandler(&_apiHandler);
|
||||||
|
|
||||||
|
// for settings
|
||||||
|
server->on(GET_SETTINGS_PATH, HTTP_GET, securityManager->wrapRequest(std::bind(&WebAPIService::getSettings, this, _1), AuthenticationPredicates::IS_ADMIN));
|
||||||
|
server->on(GET_CUSTOMIZATIONS_PATH,
|
||||||
|
HTTP_GET,
|
||||||
|
securityManager->wrapRequest(std::bind(&WebAPIService::getCustomizations, this, _1), AuthenticationPredicates::IS_ADMIN));
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP GET
|
// HTTP GET
|
||||||
@@ -150,4 +156,37 @@ void WebAPIService::parse(AsyncWebServerRequest * request, JsonObject & input) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebAPIService::getSettings(AsyncWebServerRequest * request) {
|
||||||
|
auto * response = new AsyncJsonResponse(false, EMSESP_JSON_SIZE_XLARGE_DYN);
|
||||||
|
JsonObject root = response->getRoot();
|
||||||
|
|
||||||
|
root["type"] = "settings";
|
||||||
|
|
||||||
|
JsonObject node = root.createNestedObject("System");
|
||||||
|
node["version"] = EMSESP_APP_VERSION;
|
||||||
|
|
||||||
|
System::extractSettings(NETWORK_SETTINGS_FILE, "Network", root);
|
||||||
|
System::extractSettings(AP_SETTINGS_FILE, "AP", root);
|
||||||
|
System::extractSettings(MQTT_SETTINGS_FILE, "MQTT", root);
|
||||||
|
System::extractSettings(NTP_SETTINGS_FILE, "NTP", root);
|
||||||
|
System::extractSettings(OTA_SETTINGS_FILE, "OTA", root);
|
||||||
|
System::extractSettings(SECURITY_SETTINGS_FILE, "Security", root);
|
||||||
|
System::extractSettings(EMSESP_SETTINGS_FILE, "Settings", root);
|
||||||
|
|
||||||
|
response->setLength();
|
||||||
|
request->send(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebAPIService::getCustomizations(AsyncWebServerRequest * request) {
|
||||||
|
auto * response = new AsyncJsonResponse(false, EMSESP_JSON_SIZE_XLARGE_DYN);
|
||||||
|
JsonObject root = response->getRoot();
|
||||||
|
|
||||||
|
root["type"] = "customizations";
|
||||||
|
|
||||||
|
System::extractSettings(EMSESP_CUSTOMIZATION_FILE, "Customizations", root);
|
||||||
|
|
||||||
|
response->setLength();
|
||||||
|
request->send(response);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
#define WebAPIService_h
|
#define WebAPIService_h
|
||||||
|
|
||||||
#define EMSESP_API_SERVICE_PATH "/api"
|
#define EMSESP_API_SERVICE_PATH "/api"
|
||||||
|
#define GET_SETTINGS_PATH "/rest/getSettings"
|
||||||
|
#define GET_CUSTOMIZATIONS_PATH "/rest/getCustomizations"
|
||||||
|
|
||||||
namespace emsesp {
|
namespace emsesp {
|
||||||
|
|
||||||
@@ -46,6 +48,9 @@ class WebAPIService {
|
|||||||
static uint16_t api_fails_;
|
static uint16_t api_fails_;
|
||||||
|
|
||||||
void parse(AsyncWebServerRequest * request, JsonObject & input);
|
void parse(AsyncWebServerRequest * request, JsonObject & input);
|
||||||
|
|
||||||
|
void getSettings(AsyncWebServerRequest * request);
|
||||||
|
void getCustomizations(AsyncWebServerRequest * request);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace emsesp
|
} // namespace emsesp
|
||||||
|
|||||||
Reference in New Issue
Block a user