From 5d19717c680783ae97af4f2c6e0da67b50104a7d Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Thu, 25 Mar 2021 18:28:19 +0000 Subject: [PATCH 01/10] Editing Readme.md adding muting-matrix and short description --- README.md | 13 +++++++++++++ img/Muting-Matrix.png | Bin 0 -> 18292 bytes 2 files changed, 13 insertions(+) create mode 100644 img/Muting-Matrix.png diff --git a/README.md b/README.md index 528589a..726acf2 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,19 @@ It is also possible to use (by default enabled in the YSFReflector.ini) a callsi 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). +### Muting Matrix +Here you see a matrix documenting the behavior of the blocking-lists and configuration of regular expression (RE)-check: + +![Muting-Matrix](img/Muting-Matrix.png "Muting-Matrix") + +Within this table following descriptions for the cell-values should help understanding the table: +* X: Any value +* YES: set and matches with callsign/gateway/ip-address +* NO: not set +* 1: check via RE enabled, normal operation +* 0: check via RE disabled, but passes everything +* -1: check via RE disabled, but only pass whitelist + ### Avoiding Parallel Incomming Transmissions 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. diff --git a/img/Muting-Matrix.png b/img/Muting-Matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..dcadfb2c7a534da5497f97444a66de62d4347887 GIT binary patch literal 18292 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 literal 0 HcmV?d00001 From eb0b7e3334feff03ae8c1d8a03f2e5480415b68f Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Fri, 26 Mar 2021 21:22:13 +0000 Subject: [PATCH 02/10] Updated PNG --- img/Muting-Matrix.png | Bin 18292 -> 20087 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/img/Muting-Matrix.png b/img/Muting-Matrix.png index dcadfb2c7a534da5497f97444a66de62d4347887..44f0177ea78be182cc5c36c24b4909b056fc9859 100644 GIT binary patch literal 20087 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 From 89cc2380f9e86af676f4c9d5cb68923b8154a882 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Fri, 26 Mar 2021 21:29:50 +0000 Subject: [PATCH 03/10] Sorting included packages in alphabetic order and removed dublettes --- README.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 726acf2..6800203 100644 --- a/README.md +++ b/README.md @@ -33,19 +33,18 @@ There is also a functionality implemented that prohibits parallel transmissions ## Easy Installation And Upgrade Depending on your used operating system and python3-installation you just have to take care that following libraries are installed: -* socket -* threading -* queue -* sys -* os -* time -* re +* bisect * configparser * datetime +* os +* queue +* re * signal -* datetime -* bisect +* socket * struct +* sys +* threading +* time 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 -command. From a3713b224b3e26c1e1435a3816cb8699eccbc139 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 09:50:39 +0100 Subject: [PATCH 04/10] Added API documentation --- API.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 API.md diff --git a/API.md b/API.md new file mode 100644 index 0000000..9254b80 --- /dev/null +++ b/API.md @@ -0,0 +1,75 @@ +# API-Call Documentation +## Introduction +As many of us know YSFReflectors use the YSF protocol to communicate with endpoints. These original commands are well +documented at http://ycs-wiki.xreflector.net/doku.php?id=start:protocols:ysf thanks to the YCS-team for hosting them. +pYSFReflector has also an extended set of commands you can use for fetching infos on the state of different things +when running the reflector. + +This document will show the commands and the replys expected from the reflector. + +## How To Issue A Call +First of all, it is very easy to have a command sent to a reflector. Simply use a command similar to this: + +`echo -n "YSFS" | nc -u 127.0.0.1 42000 -w 2 && echo` + +or in a more general form: + +`echo -n "" | nc -u -w 2 && echo` + +This line will send the chosen command to the reflector and prints out it's reply. + +## List Of Extended API-Commands +Here we will not describe the standard-commands in the YSF protocol but the extended commandset by the pYSFReflector. + +The format of the answer will be the corresponding answer-code and some values separated by `:` for each object in scope. +Several objects are separated by `;`. + +### QSRU - Query Reflector Uptime +#### Reply +`ASRU;57234;` + +#### Description +Uptime of reflector in seconds + +### QSRI - Query Reflector Info +#### Reply +`ASRI;62829:DE Germany:YSF262 BM263:pYSFReflector:20210326:1;` + +#### Description +ID:Name:Description:Software-Name:Version:Connections-Count + +### QGWL - Query Gateway List +#### Reply +`AGWL;DL-LNK:161.97.73.43:57313;2622-DL:178.238.234.72:42000;DG9VH:84.58.124.6:42140;` + +#### Description +Callsign:IP-Address:Port + +### QLHL - Query Last Heard List +#### Reply +`ALHL;DG9VH:DG9VH:ALL:724:29-03-2021 07-32-13:0;2622-DL:DN3VH:ALL:723:29-03-2021 07-31-52:0;` + +#### Description +Callsign:Gateway:Target:Position in List:Timestamp + +### QREJ - +#### Reply + +#### Description + +### QLHD - +#### Reply + +#### Description + +### QRED - +#### Reply + +#### Description + +### QACL - Query Access Control List-Statistics +#### Reply +`AACL;CS/0|AL/0|GW/0|IP/0;` + +#### Description +CS/Number of muted Callsigns|AL/Number of whitelisted Callsigns|GW/Number of muted Gateways|IP/Number of muted IP-Adresses \ No newline at end of file From 05a76168f0e33a7439eb8218acc025425e774cea Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 11:19:49 +0100 Subject: [PATCH 05/10] moved to documentation --- API.md => documentation/API.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) rename API.md => documentation/API.md (89%) diff --git a/API.md b/documentation/API.md similarity index 89% rename from API.md rename to documentation/API.md index 9254b80..f72d826 100644 --- a/API.md +++ b/documentation/API.md @@ -54,22 +54,25 @@ Callsign:Gateway:Target:Position in List:Timestamp ### QREJ - #### Reply +`AREJ;` #### Description ### QLHD - #### Reply +`ALHD;` #### Description ### QRED - #### Reply +`ARED;` #### Description ### QACL - Query Access Control List-Statistics #### Reply -`AACL;CS/0|AL/0|GW/0|IP/0;` +`AACL;CS/2|AL/1|GW/1|IP/0;CS:DN3VH;CS:DG9VH;AL:N0CALL;GW:DN3VH;` #### Description -CS/Number of muted Callsigns|AL/Number of whitelisted Callsigns|GW/Number of muted Gateways|IP/Number of muted IP-Adresses \ No newline at end of file +CS/Number of muted Callsigns|AL/Number of whitelisted Callsigns|GW/Number of muted Gateways|IP/Number of muted IP-Adresses;List of Entries from deny.db From c73453167277c233ebbab4679f6576ba3e8af4b0 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 14:10:36 +0100 Subject: [PATCH 06/10] Updates --- documentation/API.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/documentation/API.md b/documentation/API.md index f72d826..67546ff 100644 --- a/documentation/API.md +++ b/documentation/API.md @@ -2,13 +2,13 @@ ## Introduction As many of us know YSFReflectors use the YSF protocol to communicate with endpoints. These original commands are well documented at http://ycs-wiki.xreflector.net/doku.php?id=start:protocols:ysf thanks to the YCS-team for hosting them. -pYSFReflector has also an extended set of commands you can use for fetching infos on the state of different things +pYSFReflector has also an extended set of commands you can use for fetching information on the state of different things when running the reflector. -This document will show the commands and the replys expected from the reflector. +This document will show the commands, and the replies expected from the reflector. ## How To Issue A Call -First of all, it is very easy to have a command sent to a reflector. Simply use a command similar to this: +First it is very easy to have a command sent to a reflector. Simply use a command similar to this: `echo -n "YSFS" | nc -u 127.0.0.1 42000 -w 2 && echo` @@ -16,12 +16,12 @@ or in a more general form: `echo -n "" | nc -u -w 2 && echo` -This line will send the chosen command to the reflector and prints out it's reply. +This line will send the chosen command to the reflector and prints out its reply. ## List Of Extended API-Commands -Here we will not describe the standard-commands in the YSF protocol but the extended commandset by the pYSFReflector. +Here we will not describe the standard-commands in the YSF protocol, but the extended command set by the pYSFReflector. -The format of the answer will be the corresponding answer-code and some values separated by `:` for each object in scope. +The format of the answer will be the corresponding answer-code, and some values separated by `:` for each object in scope. Several objects are separated by `;`. ### QSRU - Query Reflector Uptime @@ -36,7 +36,7 @@ Uptime of reflector in seconds `ASRI;62829:DE Germany:YSF262 BM263:pYSFReflector:20210326:1;` #### Description -ID:Name:Description:Software-Name:Version:Connections-Count +ID:Name:Description:Software-Name:Version:Status of Regular Expression Check (can be -1/0/1) ### QGWL - Query Gateway List #### Reply @@ -50,21 +50,23 @@ Callsign:IP-Address:Port `ALHL;DG9VH:DG9VH:ALL:724:29-03-2021 07-32-13:0;2622-DL:DN3VH:ALL:723:29-03-2021 07-31-52:0;` #### Description -Callsign:Gateway:Target:Position in List:Timestamp +Gateway:Callsign:Target:Timestamp:Position in List -### QREJ - +### QREJ - Query Rejected Callsigns/Gateways/IP-Addresses #### Reply -`AREJ;` +`AREJ;DG9VH/CS:DG9VH400:ALL:-1:29-03-2021 12-17-08:-1;` #### Description -### QLHD - + +### QLHD - Query Last Heard List (with distinct callsigns) #### Reply -`ALHD;` +`ALHD;2622-DL:DO7VN:ALL:2:29-03-2021 12-13-27:6;2622-DL:DH1VY:ALL:1:29-03-2021 11-45-30:0;` #### Description +Gateway:Callsign:Target:Timestamp:Position in List -### QRED - +### QRED - Query Rejected Callsigns/Gateways/IP-Addresses (with distinct data) #### Reply `ARED;` @@ -75,4 +77,4 @@ Callsign:Gateway:Target:Position in List:Timestamp `AACL;CS/2|AL/1|GW/1|IP/0;CS:DN3VH;CS:DG9VH;AL:N0CALL;GW:DN3VH;` #### Description -CS/Number of muted Callsigns|AL/Number of whitelisted Callsigns|GW/Number of muted Gateways|IP/Number of muted IP-Adresses;List of Entries from deny.db +CS/Number of muted Callsigns|AL/Number of whitelisted Callsigns|GW/Number of muted Gateways|IP/Number of muted IP-Addresses;List of Entries from deny.db From 34c4dec4d0a5a1c35736a4b2011e217fea4ec704 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 16:32:51 +0100 Subject: [PATCH 07/10] Updated --- documentation/API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/API.md b/documentation/API.md index 67546ff..ed4d797 100644 --- a/documentation/API.md +++ b/documentation/API.md @@ -68,7 +68,7 @@ Gateway:Callsign:Target:Timestamp:Position in List ### QRED - Query Rejected Callsigns/Gateways/IP-Addresses (with distinct data) #### Reply -`ARED;` +`ARED;DG9VH/CS:DG9VH1A:ALL:-1:29-03-2021 15-18-54:-1;` #### Description From 0efb9eb7a008ee34030133dffc012ed9938ff959 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 16:33:57 +0100 Subject: [PATCH 08/10] Updated --- documentation/API.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/documentation/API.md b/documentation/API.md index ed4d797..f3f422f 100644 --- a/documentation/API.md +++ b/documentation/API.md @@ -57,7 +57,7 @@ Gateway:Callsign:Target:Timestamp:Position in List `AREJ;DG9VH/CS:DG9VH400:ALL:-1:29-03-2021 12-17-08:-1;` #### Description - +XXX TODO ### QLHD - Query Last Heard List (with distinct callsigns) #### Reply @@ -71,6 +71,7 @@ Gateway:Callsign:Target:Timestamp:Position in List `ARED;DG9VH/CS:DG9VH1A:ALL:-1:29-03-2021 15-18-54:-1;` #### Description +XXX TODO ### QACL - Query Access Control List-Statistics #### Reply From 643604e3de19c51c4a026255d00c6a514f17de56 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 17:13:51 +0100 Subject: [PATCH 09/10] Updated --- documentation/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/API.md b/documentation/API.md index f3f422f..f43c3ba 100644 --- a/documentation/API.md +++ b/documentation/API.md @@ -57,7 +57,7 @@ Gateway:Callsign:Target:Timestamp:Position in List `AREJ;DG9VH/CS:DG9VH400:ALL:-1:29-03-2021 12-17-08:-1;` #### Description -XXX TODO +Gateway/Rule that matched:Callsign:Target:Placeholder (Ignore):Timestamp:Placeholder (Ignore); ### QLHD - Query Last Heard List (with distinct callsigns) #### Reply @@ -71,7 +71,7 @@ Gateway:Callsign:Target:Timestamp:Position in List `ARED;DG9VH/CS:DG9VH1A:ALL:-1:29-03-2021 15-18-54:-1;` #### Description -XXX TODO +Gateway/Rule that matched:Callsign:Target:Placeholder (Ignore):Timestamp:Placeholder (Ignore); ### QACL - Query Access Control List-Statistics #### Reply From 9d43e6445ebf292311e1b443ad8f1a4f4671f6e8 Mon Sep 17 00:00:00 2001 From: Kim Huebel Date: Mon, 29 Mar 2021 18:05:35 +0100 Subject: [PATCH 10/10] Updated --- documentation/API.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/API.md b/documentation/API.md index f43c3ba..b62569f 100644 --- a/documentation/API.md +++ b/documentation/API.md @@ -50,7 +50,7 @@ Callsign:IP-Address:Port `ALHL;DG9VH:DG9VH:ALL:724:29-03-2021 07-32-13:0;2622-DL:DN3VH:ALL:723:29-03-2021 07-31-52:0;` #### Description -Gateway:Callsign:Target:Timestamp:Position in List +Gateway:Callsign:Target:id_stream:StartTime:Duration ### QREJ - Query Rejected Callsigns/Gateways/IP-Addresses #### Reply @@ -64,7 +64,7 @@ Gateway/Rule that matched:Callsign:Target:Placeholder (Ignore):Timestamp:Placeho `ALHD;2622-DL:DO7VN:ALL:2:29-03-2021 12-13-27:6;2622-DL:DH1VY:ALL:1:29-03-2021 11-45-30:0;` #### Description -Gateway:Callsign:Target:Timestamp:Position in List +Gateway:Callsign:Target:id_stream:StartTime:Duration ### QRED - Query Rejected Callsigns/Gateways/IP-Addresses (with distinct data) #### Reply