homekit: watch and alert for invalid scrypted server addresses.

This commit is contained in:
Koushik Dutta
2022-05-23 15:38:07 -07:00
parent 3e49d9aa98
commit 4831edc844
3 changed files with 14 additions and 11 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/homekit",
"version": "1.1.7",
"version": "1.1.8",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/homekit",
"version": "1.1.7",
"version": "1.1.8",
"dependencies": {
"@koush/qrcode-terminal": "^0.12.0",
"@koush/werift-src": "file:../../external/werift",

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/homekit",
"version": "1.1.7",
"version": "1.1.8",
"description": "HomeKit Plugin for Scrypted",
"scripts": {
"prepublishOnly": "NODE_ENV=production scrypted-webpack",

View File

@@ -40,10 +40,6 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame
async prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback) {
// console.log('prepareStream', Object.assign({}, request, { connection: request.connection.remoteAddress }));
const videossrc = CameraController.generateSynchronisationSource();
const audiossrc = CameraController.generateSynchronisationSource();
const addressOverride = homekitPlugin.storageSettings.values.addressOverride || undefined;
const { sessionID } = request;
let killResolve: any;
const streamingSessionStartTime = Date.now();
@@ -62,6 +58,14 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame
});
const socketType = request.addressVersion === 'ipv6' ? 'udp6' : 'udp4';
const addressOverride = homekitPlugin.storageSettings.values.addressOverride || undefined;
if (addressOverride) {
const infos = Object.values(os.networkInterfaces()).flat().map(i => i?.address);
if (!infos.find(address => address === addressOverride))
homekitPlugin.log.a('The provided Scrypted Server Address was not found in the list of network addresses and may be invalid: ' + addressOverride);
}
const { socket: videoReturn, port: videoPort } = await getPort(socketType, addressOverride);
const { socket: audioReturn, port: audioPort } = await getPort(socketType, addressOverride);
@@ -70,6 +74,9 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame
closeQuiet(audioReturn);
});
const videossrc = CameraController.generateSynchronisationSource();
const audiossrc = CameraController.generateSynchronisationSource();
const session: CameraStreamingSession = {
aconfig: {
keys: {
@@ -123,10 +130,6 @@ export function createCameraStreamingDelegate(device: ScryptedDevice & VideoCame
if (addressOverride) {
console.log('using address override', addressOverride);
response.addressOverride = addressOverride;
const infos = Object.values(os.networkInterfaces()).flat().map(i => i.address);
if (!infos.find(address => address === addressOverride))
homekitPlugin.log.a('The provided Scrypted Server Address was not found in the list of network addresses and may be invalid: ' + addressOverride);
}
else {
// HAP-NodeJS has weird default address determination behavior. Ideally it should use