Files
iptvnator/libs/shared/interfaces/src/lib/stalker-identity.utils.ts
T

59 lines
1.9 KiB
TypeScript

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');
}