fix(stalker): preserve explicit portal identity (#941)

This commit is contained in:
4gray authored and GitHub committed 2026-05-15 18:34:49 +02:00
1 parent 2d5c4fa4f9
commit 272e0e772e
17 files changed
+912 -215

No files matched your search

+1
View File
@@ -43,6 +43,7 @@ export * from './lib/xtream-vod-stream.interface';
// Stalker interfaces
export * from './lib/stalker-item.normalizer';
export * from './lib/stalker-identity.utils';
export * from './lib/stalker-portal-item.interface';
export * from './lib/stalker-serial-details.interface';
export * from './lib/stalker-vod-details.interface';
@@ -0,0 +1,58 @@
export const LEGACY_DEFAULT_STALKER_SERIAL = 'BEDACD4569BAF';
const STALKER_CFDUID_LENGTH = 32;
const STALKER_SERIAL_CFDUID_SUFFIX = 'e030245495acd6ebfc1';
export interface StalkerPortalIdentity {
serialNumber?: string;
deviceId1?: string;
deviceId2?: string;
signature1?: string;
signature2?: string;
}
export function normalizeStalkerIdentityValue(
value: string | undefined | null
): string | undefined {
const trimmed = value?.trim();
return trimmed ? trimmed : undefined;
}
export function normalizeStalkerSerialNumber(
serialNumber: string | undefined | null
): string | undefined {
const trimmed = normalizeStalkerIdentityValue(serialNumber);
if (
!trimmed ||
trimmed.toUpperCase() === LEGACY_DEFAULT_STALKER_SERIAL
) {
return undefined;
}
return trimmed;
}
export function normalizeStalkerPortalIdentity(
identity: StalkerPortalIdentity | undefined | null
): StalkerPortalIdentity {
const serialNumber = normalizeStalkerSerialNumber(identity?.serialNumber);
const deviceId1 = normalizeStalkerIdentityValue(identity?.deviceId1);
const deviceId2 = normalizeStalkerIdentityValue(identity?.deviceId2);
const signature1 = normalizeStalkerIdentityValue(identity?.signature1);
const signature2 = normalizeStalkerIdentityValue(identity?.signature2);
return {
...(serialNumber ? { serialNumber } : {}),
...(deviceId1 ? { deviceId1 } : {}),
...(deviceId2 ? { deviceId2 } : {}),
...(signature1 ? { signature1 } : {}),
...(signature2 ? { signature2 } : {}),
};
}
export function buildStalkerSerialCfduid(serialNumber: string): string {
const serialPrefix = serialNumber.toLowerCase().replace(/[^a-f0-9]/g, '');
return `${serialPrefix}${STALKER_SERIAL_CFDUID_SUFFIX}`
.slice(0, STALKER_CFDUID_LENGTH)
.padEnd(STALKER_CFDUID_LENGTH, '0');
}