This is a YSF Reflector implemented in python3, mainly compatible with g4klx reflector.
With the enhanced blocking list you are able to mute calls based on
This rules only mute traffic from the gateway to the reflector. For gateways and ip-adresses of gateways are additional rules for bi-directional blocking implemented which could be used to stop delivering traffic to a specific gateway (for example on multinet-setups to have a network insulated for a specific time because of special conditions or stoping traffic to guys sniffing traffic and transporting it into systems that are unwanted - 'wild bridges' for example).
It is also possible to use (by default enabled in the YSFReflector.ini) a callsign check based on a regular expression to check the callsign plausibility in callsign-format and length.
The result of this check can be overdriven by a whitelist-entry in the blocklist (for example: N0CALL is blocked by default by this expression but could be allowed for special bridging situations).
Here you see a matrix documenting the behavior of the blocking-lists and configuration of regular expression (RE)-check:
Within this table following descriptions for the cell-values should help understanding the table:
There is also a functionality implemented that prohibits parallel transmissions that can happen if two senders transmit at the same time. Here the principle 'first-comes-first-serves' is realized, so the second station in time will just be muted to not disturb the audio.
[Protections]
#timeout Tx [sec]
Timeout = 240
#Wild PTT time window [sec]
WildPTTTime = 5
#Wild PTT stream count
WildPTTCount = 3
#time to callsign reactivation after timeout or WildPTT [sec]
Treactivate = 1800
in practice: if you exceed the timeout time (Timeout value) (for example you have the PTT pressed in your pocket) you are "parked", you can listen but not speak for "Treactivate" value, in seconds.
same thing if the PTT is pressed "wildly" several times in a time window
Depending on your used operating system and python3-installation you just have to take care that following libraries are installed:
In most installations this packages are already installed, otherwise you easily can install them with your system-package-manager (for example Debian: apt) or you use pip3 install
The configuration file (YSFReflector.ini) is based on the origin YSFReflector.ini of G4KLX's YSFReflector but with added new configuration-items. So If you know the old reflector-software - configuring this one would be straight forward.
For getting the best user experience it is recommended to configure your pYSFReflector with the following parameter in the YSFReflector.ini:
FileRotate=0
This results in having only one logfile for each program and having it rotated by your linux-system with logrotate if configured.
If you are using the php-based Dashbord by DG9VH (https://github.com/dg9vh/YSFReflector-Dashboard) please leave it at FileRotate=1
, if you are using the websockets based version (recommended at https://github.com/dg9vh/WSYSFDash) you can use FileRotate=0
. Take care to configure the dashboard's logtailer.ini in sync to this.
To configure log rotation in Linux take a look at https://www.tecmint.com/install-logrotate-to-manage-log-rotation-in-linux/.
actually the FileLevel-Logging is done in 3 variant loglevels: 0 to 2. Here is a short description what is logged in the different levels: