Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2023-02-18 15:19:06 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2023-02-18 15:19:06 +0300
commitebdc6bcd8cb21c0d14086a5bdec336b506157cdf (patch)
tree1877206fc8b8c06d89b967c3ba2b54963836133b
parent3fb0d365dd6abffb9421cc462d1eb99886a99c4e (diff)
parent1f18b35269cb8e68cd54c1aed57f5984d9535415 (diff)
Merge branch 'master' into testing
-rw-r--r--package-lock.json56
-rw-r--r--package.json4
-rw-r--r--src/ClassLoader/DefaultClassLoader.js2
-rw-r--r--src/Exception/Http/PreconditionFailedError.js18
-rw-r--r--src/Network/ApiRequest.js4
-rw-r--r--src/PassLink/Action/Connect.js84
-rw-r--r--src/errors.js4
7 files changed, 63 insertions, 109 deletions
diff --git a/package-lock.json b/package-lock.json
index 13ea0cb..e417efb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,12 +6,12 @@
"packages": {
"": {
"name": "passwords-client",
- "version": "1.0.0",
+ "version": "1.0.0.BUILD",
"license": "ISC",
"dependencies": {
"eventemitter3": "^4.0.7",
- "libsodium-wrappers": "^0.7.9",
- "pako": "^2.0.4",
+ "libsodium": "0.7.10",
+ "libsodium-wrappers": "0.7.10",
"url-parse": "^1.5.3",
"uuid": "^8.3.2"
}
@@ -22,23 +22,18 @@
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
"node_modules/libsodium": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz",
- "integrity": "sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A=="
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.10.tgz",
+ "integrity": "sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ=="
},
"node_modules/libsodium-wrappers": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz",
- "integrity": "sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ==",
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz",
+ "integrity": "sha512-pO3F1Q9NPLB/MWIhehim42b/Fwb30JNScCNh8TcQ/kIc+qGLQch8ag8wb0keK3EP5kbGakk1H8Wwo7v+36rNQg==",
"dependencies": {
"libsodium": "^0.7.0"
}
},
- "node_modules/pako": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz",
- "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg=="
- },
"node_modules/querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
@@ -47,12 +42,12 @@
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"node_modules/url-parse": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
- "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dependencies": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
@@ -74,23 +69,18 @@
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
"libsodium": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz",
- "integrity": "sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A=="
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.10.tgz",
+ "integrity": "sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ=="
},
"libsodium-wrappers": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz",
- "integrity": "sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ==",
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz",
+ "integrity": "sha512-pO3F1Q9NPLB/MWIhehim42b/Fwb30JNScCNh8TcQ/kIc+qGLQch8ag8wb0keK3EP5kbGakk1H8Wwo7v+36rNQg==",
"requires": {
"libsodium": "^0.7.0"
}
},
- "pako": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz",
- "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg=="
- },
"querystringify": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
@@ -99,12 +89,12 @@
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
"url-parse": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
- "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
diff --git a/package.json b/package.json
index 89a6834..25e4258 100644
--- a/package.json
+++ b/package.json
@@ -27,8 +27,8 @@
},
"dependencies": {
"eventemitter3": "^4.0.7",
- "libsodium-wrappers": "^0.7.9",
- "pako": "^2.0.4",
+ "libsodium": "0.7.10",
+ "libsodium-wrappers": "0.7.10",
"url-parse": "^1.5.3",
"uuid": "^8.3.2"
}
diff --git a/src/ClassLoader/DefaultClassLoader.js b/src/ClassLoader/DefaultClassLoader.js
index d749664..00ff4b3 100644
--- a/src/ClassLoader/DefaultClassLoader.js
+++ b/src/ClassLoader/DefaultClassLoader.js
@@ -66,6 +66,7 @@ import InvalidEncryptedTextLength from "../Exception/Encryption/InvalidEncrypted
import HashService from "../Services/HashService";
import Logger from "../Logger/Logger";
import DefectField from "../Model/CustomField/DefectField";
+import PreconditionFailedError from "../Exception/Http/PreconditionFailedError";
export default class DefaultClassLoader extends BasicClassLoader {
@@ -147,6 +148,7 @@ export default class DefaultClassLoader extends BasicClassLoader {
'exception.http.403' : ForbiddenError,
'exception.http.404' : NotFoundError,
'exception.http.405' : MethodNotAllowedError,
+ 'exception.http.412' : PreconditionFailedError,
'exception.http.429' : TooManyRequestsError,
'exception.http.500' : InternalServerError,
'exception.http.502' : BadGatewayError,
diff --git a/src/Exception/Http/PreconditionFailedError.js b/src/Exception/Http/PreconditionFailedError.js
new file mode 100644
index 0000000..12fbad3
--- /dev/null
+++ b/src/Exception/Http/PreconditionFailedError.js
@@ -0,0 +1,18 @@
+import HttpError from './HttpError';
+
+export default class PreconditionFailedError extends HttpError {
+
+ /**
+ * @returns {String}
+ */
+ get name() {
+ return 'PreconditionFailedError';
+ }
+
+ /**
+ * @param {Response} response
+ */
+ constructor(response) {
+ super(response, 'Precondition failed');
+ }
+} \ No newline at end of file
diff --git a/src/Network/ApiRequest.js b/src/Network/ApiRequest.js
index 1e975af..a4ce535 100644
--- a/src/Network/ApiRequest.js
+++ b/src/Network/ApiRequest.js
@@ -282,8 +282,8 @@ export default class ApiRequest {
* @private
*/
_getHttpError(response) {
- if([400, 401, 403, 404, 405, 429, 500, 502, 503, 504].indexOf(response.status) !== -1) {
- return this._api.getClass(`exception.${response.status}`, response);
+ if([400, 401, 403, 404, 405, 412, 429, 500, 502, 503, 504].indexOf(response.status) !== -1) {
+ return this._api.getClass(`exception.http.${response.status}`, response);
}
if(response.status > 99) {
return this._api.getClass('exception.http', response);
diff --git a/src/PassLink/Action/Connect.js b/src/PassLink/Action/Connect.js
index fbfda88..cc9a0f3 100644
--- a/src/PassLink/Action/Connect.js
+++ b/src/PassLink/Action/Connect.js
@@ -44,10 +44,10 @@ export default class Connect extends PassLinkAction {
*
* @return {Promise<null|object>|null}
*/
- getTheme() {
+ async getTheme() {
if(this._theme !== null) return this._theme;
- return this._decodeTheme();
+ return await this._loadTheme();
}
/**
@@ -111,77 +111,19 @@ export default class Connect extends PassLinkAction {
*
* @private
*/
- async _decodeTheme() {
- if(this._parameters.hasOwnProperty('t')) {
- let pako = await import(/* webpackChunkName: "pako" */ 'pako'),
- base64 = this._parameters.t,
- zipped = atob(base64),
- data = pako.inflate(zipped, {to: 'string'});
-
- return this._themeFromV1(data);
- } else if(this._parameters.hasOwnProperty('theme')) {
- let pako = await import(/* webpackChunkName: "pako" */ 'pako'),
- base64 = this._parameters.theme,
- zipped = atob(base64),
- data = pako.inflate(zipped, {to: 'string'});
-
- return this._themeFromJson(data);
- }
- return null;
- }
-
- /**
- * @param {String} data
- * @return {Object|null}
- * @private
- */
- _themeFromJson(data) {
- let theme = JSON.parse(data);
-
- if(theme.hasOwnProperty('color')) {
- theme['color.primary'] = theme.color;
- delete theme.color;
- }
- if(theme.hasOwnProperty('txtColor')) {
- theme['color.text'] = theme.txtColor;
- delete theme.txtColor;
- }
- if(theme.hasOwnProperty('bgColor')) {
- theme['color.background'] = theme.bgColor;
- delete theme.bgColor;
- }
- if(theme.hasOwnProperty('background') && theme.background.substr(0, 8) !== 'https://') {
- theme.background = this._parameters.baseUrl + theme.background;
- }
- if(theme.hasOwnProperty('logo')) {
- theme.logo = this._parameters.baseUrl + theme.logo;
- }
-
- this._theme = theme;
-
- return theme;
- }
-
- /**
- * @param {String} data
- * @return {Object|null}
- * @private
- */
- _themeFromV1(data) {
- let parts = data.split('|');
- if(parts.length !== 6) return null;
-
- let theme = {};
+ async _loadTheme() {
+ let url = `${this._parameters.baseUrl}index.php/apps/passwords/link/connect/theme`,
+ request = new HttpRequest(url);
- theme['label'] = parts[0];
- theme['logo'] = `${this._parameters.baseUrl}/${parts[1]}`;
- theme['background'] = parts[2].substr(0, 3) === '://' ? `https${parts[2]}`:`${this._parameters.baseUrl}/${parts[2]}`;
- theme['color.primary'] = parts[3].length === 6 ? '#' + parts[3]:parts[3];
- theme['color.text'] = parts[4].length === 6 ? '#' + parts[4]:parts[4];
- theme['color.background'] = parts[5].length === 6 ? '#' + parts[5]:parts[5];
+ let data = {id: this._parameters.id};
- this._theme = theme;
+ try {
+ let response = await request.setData(data).send();
+ this._theme = response.getData();
- return theme;
+ return response.getData();
+ } catch(e) {
+ return null;
+ }
}
} \ No newline at end of file
diff --git a/src/errors.js b/src/errors.js
index 225f4a5..5305bba 100644
--- a/src/errors.js
+++ b/src/errors.js
@@ -14,6 +14,7 @@ import NotFoundError from "./Exception/Http/NotFoundError";
import ServiceUnavailableError from "./Exception/Http/ServiceUnavailableError";
import TooManyRequestsError from "./Exception/Http/TooManyRequestsError";
import UnauthorizedError from "./Exception/Http/UnauthorizedError";
+import PreconditionFailedError from "./Exception/Http/PreconditionFailedError";
import InvalidLink from "./Exception/PassLink/InvalidLink";
import UnknownAction from "./Exception/PassLink/UnknownAction";
import ChallengeTypeNotSupported from "./Exception/ChallengeTypeNotSupported";
@@ -51,5 +52,6 @@ export {
ResponseContentTypeError,
ResponseDecodingError,
TokenTypeNotSupported,
- UnknownPropertyError
+ UnknownPropertyError,
+ PreconditionFailedError
}; \ No newline at end of file