@iobroker/socket-classes 2.0.2 → 2.0.3
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.
- package/README.md +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/passportSocket.d.ts +16 -6
- package/dist/lib/passportSocket.js +25 -19
- package/dist/lib/passportSocket.js.map +1 -1
- package/dist/lib/socketAdmin.d.ts +1 -2
- package/dist/lib/socketAdmin.js +7 -40
- package/dist/lib/socketAdmin.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import passport from 'passport';
|
|
|
2
2
|
import cookieParser from 'cookie-parser';
|
|
3
3
|
export { SocketCommandsAdmin } from './lib/socketCommandsAdmin';
|
|
4
4
|
export { SocketCommands, type SupportedFeature } from './lib/socketCommands';
|
|
5
|
-
export { SocketCommon } from './lib/socketCommon';
|
|
5
|
+
export { SocketCommon, type Server } from './lib/socketCommon';
|
|
6
6
|
export { SocketAdmin } from './lib/socketAdmin';
|
|
7
|
-
import { authorize as passportSocket, type PassportHttpRequest } from './lib/passportSocket';
|
|
8
|
-
export { passport, cookieParser, passportSocket, type PassportHttpRequest };
|
|
7
|
+
import { authorize as passportSocket, type PassportHttpRequest, type Store } from './lib/passportSocket';
|
|
8
|
+
export { passport, cookieParser, passportSocket, type PassportHttpRequest, type Store };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAOvB,mBAPF,kBAAQ,CAOE;AANjB,kEAAyC;AAMtB,uBANZ,uBAAY,CAMY;AAL/B,iEAAgE;AAAvD,0HAAA,mBAAmB,OAAA;AAC5B,uDAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAOvB,mBAPF,kBAAQ,CAOE;AANjB,kEAAyC;AAMtB,uBANZ,uBAAY,CAMY;AAL/B,iEAAgE;AAAvD,0HAAA,mBAAmB,OAAA;AAC5B,uDAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,mDAA+D;AAAtD,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,0GAAA,WAAW,OAAA;AACpB,yDAAyG;AACxE,+FADX,0BAAc,OACW"}
|
|
@@ -10,20 +10,27 @@ export interface PassportHttpRequest extends IncomingMessage {
|
|
|
10
10
|
sessionID: string;
|
|
11
11
|
user: {
|
|
12
12
|
logged_in: boolean;
|
|
13
|
+
user?: string;
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
export interface Store {
|
|
16
|
-
get: (
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
get: (sessionId: string, cb: (err: Error, session: {
|
|
18
|
+
cookie: {
|
|
19
|
+
originalMaxAge: number;
|
|
20
|
+
expires: string;
|
|
21
|
+
httpOnly: boolean;
|
|
22
|
+
path: string;
|
|
19
23
|
};
|
|
20
|
-
|
|
24
|
+
passport: {
|
|
25
|
+
user: string;
|
|
26
|
+
};
|
|
27
|
+
}) => void) => void;
|
|
21
28
|
}
|
|
22
|
-
export declare function authorize(
|
|
29
|
+
export declare function authorize(auth: {
|
|
23
30
|
passport: passport.PassportStatic & {
|
|
24
31
|
_key: string;
|
|
25
32
|
};
|
|
26
|
-
cookieParser: (secret: string |
|
|
33
|
+
cookieParser: (secret: string | string[] | undefined, options?: {
|
|
27
34
|
decode?(val: string): string;
|
|
28
35
|
}) => express.RequestHandler;
|
|
29
36
|
checkUser?: (user: string, pass: string, cb: (error: Error | null, result?: {
|
|
@@ -31,4 +38,7 @@ export declare function authorize(options: {
|
|
|
31
38
|
}) => void) => void;
|
|
32
39
|
fail: (data: PassportHttpRequest, message: string, critical: boolean, accept: (err: boolean) => void) => void;
|
|
33
40
|
success: (data: PassportHttpRequest, accept: (err: boolean) => void) => void;
|
|
41
|
+
secret?: string;
|
|
42
|
+
store?: Store;
|
|
43
|
+
userProperty?: string;
|
|
34
44
|
}): (req: IncomingMessage, accept: (err: boolean) => void) => void;
|
|
@@ -30,14 +30,7 @@ function getQuery(url) {
|
|
|
30
30
|
}
|
|
31
31
|
return result;
|
|
32
32
|
}
|
|
33
|
-
function authorize(
|
|
34
|
-
const defaults = {
|
|
35
|
-
key: 'connect.sid',
|
|
36
|
-
secret: null,
|
|
37
|
-
store: null,
|
|
38
|
-
userProperty: 'user',
|
|
39
|
-
};
|
|
40
|
-
const auth = Object.assign({}, defaults, options);
|
|
33
|
+
function authorize(auth) {
|
|
41
34
|
if (!auth.passport) {
|
|
42
35
|
throw new Error("passport is required to use require('passport'), please install passport");
|
|
43
36
|
}
|
|
@@ -47,43 +40,56 @@ function authorize(options) {
|
|
|
47
40
|
return function (req, accept) {
|
|
48
41
|
const extendedReq = req;
|
|
49
42
|
extendedReq.query = getQuery(extendedReq.url);
|
|
50
|
-
if (
|
|
51
|
-
return
|
|
43
|
+
if (auth.checkUser && extendedReq.query.user && extendedReq.query.pass) {
|
|
44
|
+
return auth.checkUser(extendedReq.query.user, extendedReq.query.pass, (error, result) => {
|
|
52
45
|
if (error) {
|
|
53
46
|
return auth.fail(extendedReq, 'Cannot check user', false, accept);
|
|
54
47
|
}
|
|
55
48
|
if (!result) {
|
|
56
49
|
return auth.fail(extendedReq, 'User not found', false, accept);
|
|
57
50
|
}
|
|
58
|
-
extendedReq
|
|
59
|
-
extendedReq
|
|
51
|
+
extendedReq.user = result;
|
|
52
|
+
extendedReq.user.user = extendedReq.query.user;
|
|
53
|
+
extendedReq.user.logged_in = true;
|
|
60
54
|
auth.success(extendedReq, accept);
|
|
61
55
|
});
|
|
62
56
|
}
|
|
63
57
|
extendedReq.cookie = parseCookie(auth, extendedReq.headers.cookie || '');
|
|
64
58
|
if (extendedReq.cookie) {
|
|
65
|
-
extendedReq.sessionID = extendedReq.cookie[
|
|
59
|
+
extendedReq.sessionID = extendedReq.cookie['connect.sid'] || '';
|
|
66
60
|
}
|
|
67
|
-
extendedReq
|
|
61
|
+
extendedReq.user = {
|
|
68
62
|
logged_in: false,
|
|
69
63
|
};
|
|
70
64
|
auth.store?.get(extendedReq.sessionID, (err, session) => {
|
|
65
|
+
// session looks like:
|
|
66
|
+
// {
|
|
67
|
+
// cookie: {
|
|
68
|
+
// originalMaxAge: 5999991,
|
|
69
|
+
// expires: '2025-02-07T17:15:06.466Z',
|
|
70
|
+
// httpOnly: true,
|
|
71
|
+
// path: '/',
|
|
72
|
+
// },
|
|
73
|
+
// passport: {
|
|
74
|
+
// user: 'admin',
|
|
75
|
+
// },
|
|
76
|
+
// };
|
|
71
77
|
if (err) {
|
|
72
78
|
return auth.fail(extendedReq, `Error in session store:\n${err.message}`, true, accept);
|
|
73
79
|
}
|
|
74
80
|
if (!session) {
|
|
75
81
|
return auth.fail(extendedReq, 'No session found', false, accept);
|
|
76
82
|
}
|
|
77
|
-
if (!session
|
|
83
|
+
if (!session.passport) {
|
|
78
84
|
return auth.fail(extendedReq, 'Passport was not initialized', true, accept);
|
|
79
85
|
}
|
|
80
|
-
const userKey = session
|
|
81
|
-
if (
|
|
86
|
+
const userKey = session.passport.user;
|
|
87
|
+
if (!userKey) {
|
|
82
88
|
return auth.fail(extendedReq, 'User not authorized through passport. (User Property not found)', false, accept);
|
|
83
89
|
}
|
|
84
90
|
// extendedReq.user
|
|
85
|
-
extendedReq
|
|
86
|
-
extendedReq
|
|
91
|
+
extendedReq.user = session.passport;
|
|
92
|
+
extendedReq.user.logged_in = true;
|
|
87
93
|
auth.success(extendedReq, accept);
|
|
88
94
|
});
|
|
89
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passportSocket.js","sourceRoot":"","sources":["../../src/lib/passportSocket.ts"],"names":[],"mappings":";AAAA,yGAAyG;AACzG,0EAA0E;;
|
|
1
|
+
{"version":3,"file":"passportSocket.js","sourceRoot":"","sources":["../../src/lib/passportSocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ export declare class SocketAdmin extends SocketCommon {
|
|
|
18
18
|
__getIsNoDisconnect(): boolean;
|
|
19
19
|
__initAuthentication(authOptions: {
|
|
20
20
|
store: Store;
|
|
21
|
-
userKey: string;
|
|
22
21
|
secret: string;
|
|
23
22
|
}): void;
|
|
24
23
|
__getUserFromSocket(socket: WebSocketClient, callback: (error: string | null, user?: string) => void): void;
|
|
@@ -38,5 +37,5 @@ export declare class SocketAdmin extends SocketCommon {
|
|
|
38
37
|
subscribe(type: SocketSubscribeTypes, pattern: string): void;
|
|
39
38
|
subscribeFile(id: string, patternFile: string): void;
|
|
40
39
|
sendCommand(obj: ioBroker.Message): void;
|
|
41
|
-
updateRatings(uuid
|
|
40
|
+
updateRatings(uuid?: string, isAutoUpdate?: boolean): Promise<Ratings | null>;
|
|
42
41
|
}
|
package/dist/lib/socketAdmin.js
CHANGED
|
@@ -1,37 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
35
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
6
|
exports.SocketAdmin = void 0;
|
|
37
7
|
/**
|
|
@@ -43,8 +13,8 @@ exports.SocketAdmin = void 0;
|
|
|
43
13
|
*/
|
|
44
14
|
const socketCommon_1 = require("./socketCommon");
|
|
45
15
|
const socketCommandsAdmin_1 = require("./socketCommandsAdmin");
|
|
46
|
-
const
|
|
47
|
-
const
|
|
16
|
+
const passport_1 = __importDefault(require("passport"));
|
|
17
|
+
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
48
18
|
const passportSocket_1 = require("./passportSocket");
|
|
49
19
|
class SocketAdmin extends socketCommon_1.SocketCommon {
|
|
50
20
|
adminCommands;
|
|
@@ -82,11 +52,8 @@ class SocketAdmin extends socketCommon_1.SocketCommon {
|
|
|
82
52
|
__initAuthentication(authOptions) {
|
|
83
53
|
this.store = authOptions.store;
|
|
84
54
|
this.server?.use((0, passportSocket_1.authorize)({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
// @ts-expect-error fix later
|
|
88
|
-
cookieParser,
|
|
89
|
-
key: authOptions.userKey, // the name of the cookie where express/connect stores its session_id
|
|
55
|
+
passport: passport_1.default,
|
|
56
|
+
cookieParser: cookie_parser_1.default,
|
|
90
57
|
secret: authOptions.secret, // the session_secret to parse the cookie
|
|
91
58
|
store: authOptions.store, // we NEED to use a sessionstore. no memorystore, please
|
|
92
59
|
success: this.#onAuthorizeSuccess, // *optional* callback on success - read more below
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketAdmin.js","sourceRoot":"","sources":["../../src/lib/socketAdmin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socketAdmin.js","sourceRoot":"","sources":["../../src/lib/socketAdmin.ts"],"names":[],"mappings":"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"}
|