mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-16 22:26:16 -08:00
fix(stalker): preserve explicit portal identity (#941)
This commit is contained in:
1 parent
2d5c4fa4f9
commit
272e0e772e
17 files changed
+912
-215
No files matched your search
@@ -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');
|
||||
}
|
||||
Reference in new issue
Block a user