ericgla / RTC-Call-Monitor

Voice/video call detection by monitoring of UDP packet rate with notification via webhooks
36 stars 6 forks source link

Protocol not supported #1

Open L-I-Am opened 3 years ago

L-I-Am commented 3 years ago

Hi,

I'm experimenting with your project to detect calls for homeassistant but when I run it, I get the following logs: `<6>RtcCallMonitor.TrafficMonitor[0] loaded provider discord, 2 network prefixes

<6>RtcCallMonitor.TrafficMonitor[0] loaded provider googlemeet, 1 network prefixes <6>RtcCallMonitor.TrafficMonitor[0] loaded provider gotomeeting, 36 network prefixes <6>RtcCallMonitor.TrafficMonitor[0] loaded provider msteams, 6 network prefixes <6>RtcCallMonitor.TrafficMonitor[0] loaded provider slack, 1 network prefixes <6>RtcCallMonitor.TrafficMonitor[0] loaded provider webex, 15 network prefixes <6>RtcCallMonitor.TrafficMonitor[0] loaded provider zoom, 69 network prefixes <6>RtcCallMonitor.NetworkListener[0] monitoring traffic on 192.168.0.13 <3>RtcCallMonitor.Worker[0] Protocol not supported` The only changes I made to the appsettings.json are: `"Application": { "LocalNetwork": "192.168.0.0/24", "CallStartWebhook": "http://192.168.0.32:8123/api/webhook/start_call", "CallEndWebhook": "http://192.168.0.32:8123/api/webhook/stop_call" },` I also tried to set a debug logging level in the appsettings but this didn't provide any more information. Any idea what's going on?
ericgla commented 3 years ago

What OS are you running? If you are using macOS, but sure to run sudo RtcCallMonitor to run the application with elevated privileges.

L-I-Am commented 3 years ago

Hi, thank you for the quick response! I'm running on ubuntu. I run it using sudo dotnet run as stated on your repo. This is using dotnet 5.0.201 .

ericgla commented 3 years ago

I just pushed a change that should fix your issue.

L-I-Am commented 3 years ago

this does seem to fix the error but now a new one rose.

<3>RtcCallMonitor.Worker[0] Socket.IOControl handles Windows-specific control codes and is not supported on this platform.

It seems IOControl is not supported for Linux.

ericgla commented 3 years ago

It looks likeIOControl is in fact Windows only, and SetRawSocketOption should be used as a cross platform replacement. I'll see if I can get it running next week, otherwise PRs are welcome!

L-I-Am commented 3 years ago

I haven't worked with .NET before, so I won't be much help here. Thank you for taking a look at it!

L-I-Am commented 3 years ago

Hi, I see you've pushed a commit with the commit-message "Refactor socket options for cross-platform compatibility", I assumed this would've fixed the issue, but it seems it's still using the IOControl. I just wanted to inform you that I've tested the new main-branch again and the problem still exists (don't want to push or anything, just wanted to inform).

sfgabe commented 3 years ago

Having the same issue on MacOSX. Full error:

RtcCallMonitor.Worker[0] System.PlatformNotSupportedException: Socket.IOControl handles Windows-specific control codes and is not supported on this platform. at System.Net.Sockets.SocketPal.WindowsIoctl(SafeSocketHandle handle, Int32 ioControlCode, Byte[] optionInValue, Byte[] optionOutValue, Int32& optionLength) at System.Net.Sockets.Socket.IOControl(Int32 ioControlCode, Byte[] optionInValue, Byte[] optionOutValue) at RtcCallMonitor.NetworkListener.CreateAndBindSocket() in /src/NetworkListener.cs:line 38 at RtcCallMonitor.NetworkListener.Start() in /src/NetworkListener.cs:line 61 at RtcCallMonitor.TrafficMonitor.Start() in /src/TrafficMonitor.cs:line 73 at RtcCallMonitor.Worker.ExecuteAsync(CancellationToken stoppingToken) in /src/Worker.cs:line 29