diff --git a/README.md b/README.md index 58cee32..fe9041d 100644 --- a/README.md +++ b/README.md @@ -992,7 +992,7 @@ Unsubscribe from file changes in ioBroker DB --> ## Changelog -### 2.0.2 (2025-02-07) +### **WORK IN PROGRESS** * (@GermanBluefox) Code migrated to TypeScript ### 1.6.2 (2024-12-01) diff --git a/dist/index.d.ts b/dist/index.d.ts index 229ca02..5e0d57e 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -2,7 +2,7 @@ import passport from 'passport'; import cookieParser from 'cookie-parser'; export { SocketCommandsAdmin } from './lib/socketCommandsAdmin'; export { SocketCommands, type SupportedFeature } from './lib/socketCommands'; -export { SocketCommon } from './lib/socketCommon'; +export { SocketCommon, type Server } from './lib/socketCommon'; export { SocketAdmin } from './lib/socketAdmin'; -import { authorize as passportSocket, type PassportHttpRequest } from './lib/passportSocket'; -export { passport, cookieParser, passportSocket, type PassportHttpRequest }; +import { authorize as passportSocket, type PassportHttpRequest, type Store } from './lib/passportSocket'; +export { passport, cookieParser, passportSocket, type PassportHttpRequest, type Store }; diff --git a/dist/index.js.map b/dist/index.js.map index 9408866..7fc8141 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -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,mDAAkD;AAAzC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,0GAAA,WAAW,OAAA;AACpB,yDAA6F;AAC5D,+FADX,0BAAc,OACW"} \ No newline at end of file +{"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"} \ No newline at end of file diff --git a/dist/lib/passportSocket.d.ts b/dist/lib/passportSocket.d.ts index 27acd5f..fbd43ea 100644 --- a/dist/lib/passportSocket.d.ts +++ b/dist/lib/passportSocket.d.ts @@ -10,20 +10,27 @@ export interface PassportHttpRequest extends IncomingMessage { sessionID: string; user: { logged_in: boolean; + user?: string; }; } export interface Store { - get: (key: string, cb: (err: Error, session: Record) => void) => void; + passport: { + user: string; + }; + }) => void) => void; } -export declare function authorize(options: { +export declare function authorize(auth: { passport: passport.PassportStatic & { _key: string; }; - cookieParser: (secret: string | null, options?: { + cookieParser: (secret: string | string[] | undefined, options?: { decode?(val: string): string; }) => express.RequestHandler; checkUser?: (user: string, pass: string, cb: (error: Error | null, result?: { @@ -31,4 +38,7 @@ export declare function authorize(options: { }) => void) => void; fail: (data: PassportHttpRequest, message: string, critical: boolean, accept: (err: boolean) => void) => void; success: (data: PassportHttpRequest, accept: (err: boolean) => void) => void; + secret?: string; + store?: Store; + userProperty?: string; }): (req: IncomingMessage, accept: (err: boolean) => void) => void; diff --git a/dist/lib/passportSocket.js b/dist/lib/passportSocket.js index b59c1bd..70abcb0 100644 --- a/dist/lib/passportSocket.js +++ b/dist/lib/passportSocket.js @@ -30,14 +30,7 @@ function getQuery(url) { } return result; } -function authorize(options) { - const defaults = { - key: 'connect.sid', - secret: null, - store: null, - userProperty: 'user', - }; - const auth = Object.assign({}, defaults, options); +function authorize(auth) { if (!auth.passport) { throw new Error("passport is required to use require('passport'), please install passport"); } @@ -47,43 +40,56 @@ function authorize(options) { return function (req, accept) { const extendedReq = req; extendedReq.query = getQuery(extendedReq.url); - if (options.checkUser && extendedReq.query.user && extendedReq.query.pass) { - return options.checkUser(extendedReq.query.user, extendedReq.query.pass, (error, result) => { + if (auth.checkUser && extendedReq.query.user && extendedReq.query.pass) { + return auth.checkUser(extendedReq.query.user, extendedReq.query.pass, (error, result) => { if (error) { return auth.fail(extendedReq, 'Cannot check user', false, accept); } if (!result) { return auth.fail(extendedReq, 'User not found', false, accept); } - extendedReq[auth.userProperty] = result; - extendedReq[auth.userProperty].logged_in = true; + extendedReq.user = result; + extendedReq.user.user = extendedReq.query.user; + extendedReq.user.logged_in = true; auth.success(extendedReq, accept); }); } extendedReq.cookie = parseCookie(auth, extendedReq.headers.cookie || ''); if (extendedReq.cookie) { - extendedReq.sessionID = extendedReq.cookie[auth.key] || ''; + extendedReq.sessionID = extendedReq.cookie['connect.sid'] || ''; } - extendedReq[auth.userProperty] = { + extendedReq.user = { logged_in: false, }; auth.store?.get(extendedReq.sessionID, (err, session) => { + // session looks like: + // { + // cookie: { + // originalMaxAge: 5999991, + // expires: '2025-02-07T17:15:06.466Z', + // httpOnly: true, + // path: '/', + // }, + // passport: { + // user: 'admin', + // }, + // }; if (err) { return auth.fail(extendedReq, `Error in session store:\n${err.message}`, true, accept); } if (!session) { return auth.fail(extendedReq, 'No session found', false, accept); } - if (!session[auth.passport._key]) { + if (!session.passport) { return auth.fail(extendedReq, 'Passport was not initialized', true, accept); } - const userKey = session[auth.passport._key].user; - if (typeof userKey === 'undefined') { + const userKey = session.passport.user; + if (!userKey) { return auth.fail(extendedReq, 'User not authorized through passport. (User Property not found)', false, accept); } // extendedReq.user - extendedReq[auth.userProperty] = userKey; - extendedReq[auth.userProperty].logged_in = true; + extendedReq.user = session.passport; + extendedReq.user.logged_in = true; auth.success(extendedReq, accept); }); }; diff --git a/dist/lib/passportSocket.js.map b/dist/lib/passportSocket.js.map index 134107c..9f255a5 100644 --- a/dist/lib/passportSocket.js.map +++ b/dist/lib/passportSocket.js.map @@ -1 +1 @@ -{"version":3,"file":"passportSocket.js","sourceRoot":"","sources":["../../src/lib/passportSocket.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"passportSocket.js","sourceRoot":"","sources":["../../src/lib/passportSocket.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/socketAdmin.d.ts b/dist/lib/socketAdmin.d.ts index e4a96e5..761928c 100644 --- a/dist/lib/socketAdmin.d.ts +++ b/dist/lib/socketAdmin.d.ts @@ -18,7 +18,6 @@ export declare class SocketAdmin extends SocketCommon { __getIsNoDisconnect(): boolean; __initAuthentication(authOptions: { store: Store; - userKey: string; secret: string; }): void; __getUserFromSocket(socket: WebSocketClient, callback: (error: string | null, user?: string) => void): void; @@ -38,5 +37,5 @@ export declare class SocketAdmin extends SocketCommon { subscribe(type: SocketSubscribeTypes, pattern: string): void; subscribeFile(id: string, patternFile: string): void; sendCommand(obj: ioBroker.Message): void; - updateRatings(uuid: string, isAutoUpdate?: boolean): Promise; + updateRatings(uuid?: string, isAutoUpdate?: boolean): Promise; } diff --git a/dist/lib/socketAdmin.js b/dist/lib/socketAdmin.js index ec99f46..626653c 100644 --- a/dist/lib/socketAdmin.js +++ b/dist/lib/socketAdmin.js @@ -1,37 +1,7 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", { value: true }); exports.SocketAdmin = void 0; /** @@ -43,8 +13,8 @@ exports.SocketAdmin = void 0; */ const socketCommon_1 = require("./socketCommon"); const socketCommandsAdmin_1 = require("./socketCommandsAdmin"); -const passport = __importStar(require("passport")); -const cookieParser = __importStar(require("cookie-parser")); +const passport_1 = __importDefault(require("passport")); +const cookie_parser_1 = __importDefault(require("cookie-parser")); const passportSocket_1 = require("./passportSocket"); class SocketAdmin extends socketCommon_1.SocketCommon { adminCommands; @@ -82,11 +52,8 @@ class SocketAdmin extends socketCommon_1.SocketCommon { __initAuthentication(authOptions) { this.store = authOptions.store; this.server?.use((0, passportSocket_1.authorize)({ - // @ts-expect-error fix later - passport, - // @ts-expect-error fix later - cookieParser, - key: authOptions.userKey, // the name of the cookie where express/connect stores its session_id + passport: passport_1.default, + cookieParser: cookie_parser_1.default, secret: authOptions.secret, // the session_secret to parse the cookie store: authOptions.store, // we NEED to use a sessionstore. no memorystore, please success: this.#onAuthorizeSuccess, // *optional* callback on success - read more below diff --git a/dist/lib/socketAdmin.js.map b/dist/lib/socketAdmin.js.map index b4e8b36..b7866f4 100644 --- a/dist/lib/socketAdmin.js.map +++ b/dist/lib/socketAdmin.js.map @@ -1 +1 @@ -{"version":3,"file":"socketAdmin.js","sourceRoot":"","sources":["../../src/lib/socketAdmin.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"socketAdmin.js","sourceRoot":"","sources":["../../src/lib/socketAdmin.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 229ca02..5e0d57e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,7 @@ import passport from 'passport'; import cookieParser from 'cookie-parser'; export { SocketCommandsAdmin } from './lib/socketCommandsAdmin'; export { SocketCommands, type SupportedFeature } from './lib/socketCommands'; -export { SocketCommon } from './lib/socketCommon'; +export { SocketCommon, type Server } from './lib/socketCommon'; export { SocketAdmin } from './lib/socketAdmin'; -import { authorize as passportSocket, type PassportHttpRequest } from './lib/passportSocket'; -export { passport, cookieParser, passportSocket, type PassportHttpRequest }; +import { authorize as passportSocket, type PassportHttpRequest, type Store } from './lib/passportSocket'; +export { passport, cookieParser, passportSocket, type PassportHttpRequest, type Store }; diff --git a/src/lib/passportSocket.ts b/src/lib/passportSocket.ts index c7e35fc..cf1734f 100644 --- a/src/lib/passportSocket.ts +++ b/src/lib/passportSocket.ts @@ -20,17 +20,36 @@ export interface PassportHttpRequest extends IncomingMessage { query: Record; cookie: Record | undefined; sessionID: string; - user: { logged_in: boolean }; + user: { logged_in: boolean; user?: string }; } export interface Store { - get: (key: string, cb: (err: Error, session: Record) => void) => void; + get: ( + sessionId: string, + cb: ( + err: Error, + session: { + cookie: { + originalMaxAge: number; + expires: string; + httpOnly: boolean; + path: string; + }; + passport: { + user: string; + }; + }, + ) => void, + ) => void; } function parseCookie( auth: { - cookieParser: (secret: string | null, options?: { decode?(val: string): string }) => express.RequestHandler; - secret: string | null; + cookieParser: ( + secret: string | undefined | string[], + options?: { decode?(val: string): string }, + ) => express.RequestHandler; + secret?: string; }, cookieHeader: string, ): Record | undefined { @@ -65,9 +84,12 @@ function getQuery(url: string | undefined): Record { return result; } -export function authorize(options: { +export function authorize(auth: { passport: passport.PassportStatic & { _key: string }; - cookieParser: (secret: string | null, options?: { decode?(val: string): string }) => express.RequestHandler; + cookieParser: ( + secret: string | string[] | undefined, + options?: { decode?(val: string): string }, + ) => express.RequestHandler; checkUser?: ( user: string, pass: string, @@ -75,16 +97,10 @@ export function authorize(options: { ) => void; fail: (data: PassportHttpRequest, message: string, critical: boolean, accept: (err: boolean) => void) => void; success: (data: PassportHttpRequest, accept: (err: boolean) => void) => void; + secret?: string; + store?: Store; + userProperty?: string; }): (req: IncomingMessage, accept: (err: boolean) => void) => void { - const defaults: { key: string; secret: null | string; store: Store | null; userProperty: 'user' } = { - key: 'connect.sid', - secret: null, - store: null, - userProperty: 'user', - }; - - const auth = Object.assign({}, defaults, options); - if (!auth.passport) { throw new Error("passport is required to use require('passport'), please install passport"); } @@ -99,8 +115,8 @@ export function authorize(options: { const extendedReq = req as PassportHttpRequest; extendedReq.query = getQuery(extendedReq.url); - if (options.checkUser && extendedReq.query.user && extendedReq.query.pass) { - return options.checkUser( + if (auth.checkUser && extendedReq.query.user && extendedReq.query.pass) { + return auth.checkUser( extendedReq.query.user, extendedReq.query.pass, (error: Error | null, result?: { logged_in: boolean }) => { @@ -111,8 +127,9 @@ export function authorize(options: { return auth.fail(extendedReq, 'User not found', false, accept); } - extendedReq[auth.userProperty] = result; - extendedReq[auth.userProperty].logged_in = true; + extendedReq.user = result; + extendedReq.user.user = extendedReq.query.user; + extendedReq.user.logged_in = true; auth.success(extendedReq, accept); }, ); @@ -120,28 +137,54 @@ export function authorize(options: { extendedReq.cookie = parseCookie(auth, extendedReq.headers.cookie || ''); if (extendedReq.cookie) { - extendedReq.sessionID = extendedReq.cookie[auth.key] || ''; + extendedReq.sessionID = extendedReq.cookie['connect.sid'] || ''; } - extendedReq[auth.userProperty] = { + extendedReq.user = { logged_in: false, }; auth.store?.get( extendedReq.sessionID, - (err: Error, session: Record) => { + ( + err: Error, + session: { + cookie: { + originalMaxAge: number; + expires: string; + httpOnly: boolean; + path: string; + }; + passport: { + user: string; + }; + }, + ): void => { + // session looks like: + // { + // cookie: { + // originalMaxAge: 5999991, + // expires: '2025-02-07T17:15:06.466Z', + // httpOnly: true, + // path: '/', + // }, + // passport: { + // user: 'admin', + // }, + // }; + if (err) { return auth.fail(extendedReq, `Error in session store:\n${err.message}`, true, accept); } if (!session) { return auth.fail(extendedReq, 'No session found', false, accept); } - if (!session[auth.passport._key]) { + if (!session.passport) { return auth.fail(extendedReq, 'Passport was not initialized', true, accept); } - const userKey = session[auth.passport._key].user; + const userKey = session.passport.user; - if (typeof userKey === 'undefined') { + if (!userKey) { return auth.fail( extendedReq, 'User not authorized through passport. (User Property not found)', @@ -151,8 +194,8 @@ export function authorize(options: { } // extendedReq.user - extendedReq[auth.userProperty] = userKey; - extendedReq[auth.userProperty].logged_in = true; + extendedReq.user = session.passport as { logged_in: boolean; user?: string }; + extendedReq.user.logged_in = true; auth.success(extendedReq, accept); }, ); diff --git a/src/lib/socketAdmin.ts b/src/lib/socketAdmin.ts index d4fb8d6..71c9b31 100644 --- a/src/lib/socketAdmin.ts +++ b/src/lib/socketAdmin.ts @@ -7,8 +7,8 @@ */ import { type Server, SocketCommon, type SocketIoOptions, type SocketSettings } from './socketCommon'; import { SocketCommandsAdmin } from './socketCommandsAdmin'; -import * as passport from 'passport'; -import * as cookieParser from 'cookie-parser'; +import passport from 'passport'; +import cookieParser from 'cookie-parser'; import { authorize, type PassportHttpRequest, type Store } from './passportSocket'; import type { Socket as WebSocketClient, SocketIO } from '@iobroker/ws-server'; import type { AddressInfo } from 'node:net'; @@ -63,16 +63,13 @@ export class SocketAdmin extends SocketCommon { } }; - __initAuthentication(authOptions: { store: Store; userKey: string; secret: string }): void { + __initAuthentication(authOptions: { store: Store; secret: string }): void { this.store = authOptions.store; this.server?.use( authorize({ - // @ts-expect-error fix later - passport, - // @ts-expect-error fix later + passport: passport as passport.PassportStatic & { _key: string }, cookieParser, - key: authOptions.userKey, // the name of the cookie where express/connect stores its session_id secret: authOptions.secret, // the session_secret to parse the cookie store: authOptions.store, // we NEED to use a sessionstore. no memorystore, please success: this.#onAuthorizeSuccess, // *optional* callback on success - read more below @@ -242,7 +239,7 @@ export class SocketAdmin extends SocketCommon { } } - updateRatings(uuid: string, isAutoUpdate?: boolean): Promise { + updateRatings(uuid?: string, isAutoUpdate?: boolean): Promise { return this.adminCommands.updateRatings(uuid, isAutoUpdate); } } diff --git a/tsconfig.json b/tsconfig.json index fe0e83c..443316a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,11 +5,9 @@ // do not compile anything; this file is just to configure type checking // the compilation is configured in tsconfig.build.json "noEmit": true, - // check JS files, but do not compile them => tsconfig.build.json "allowJs": true, "checkJs": true, - "skipLibCheck": true, // Don't report errors in 3rd party definitions "noEmitOnError": true, "declaration": true, @@ -20,20 +18,8 @@ "esModuleInterop": true, // this is necessary for the automatic typing of the adapter config "resolveJsonModule": true, - - // Set this to false if you want to disable the very strict rules (not recommended) "strict": true, - // Or enable some of those features for more fine-grained control - // "strictNullChecks": true, - // "strictPropertyInitialization": true, - // "strictBindCallApply": true, - // "noImplicitAny": true, - // "noUnusedLocals": true, - // "noUnusedParameters": true, - - // Consider targeting es2019 or higher if you only support Node.js 12+ "target": "es2022", - "sourceMap": true, "inlineSourceMap": false, "useUnknownInCatchVariables": false,