merged private-call-dev with master

This commit is contained in:
KF7EEL 2020-10-15 15:52:25 -07:00
commit 596f7b309e
12 changed files with 1333 additions and 676 deletions

0
.gitattributes vendored Normal file → Executable file
View File

0
Dockerfile Normal file → Executable file
View File

1191
bridge.py

File diff suppressed because it is too large Load Diff

View File

@ -288,6 +288,7 @@ def build_config(_config_file):
'TARGET_SOCK': (gethostbyname(config.get(section, 'TARGET_IP')), config.getint(section, 'TARGET_PORT')), 'TARGET_SOCK': (gethostbyname(config.get(section, 'TARGET_IP')), config.getint(section, 'TARGET_PORT')),
'TARGET_IP': gethostbyname(config.get(section, 'TARGET_IP')), 'TARGET_IP': gethostbyname(config.get(section, 'TARGET_IP')),
'TARGET_PORT': config.getint(section, 'TARGET_PORT'), 'TARGET_PORT': config.getint(section, 'TARGET_PORT'),
'BOTH_SLOTS': config.getboolean(section, 'BOTH_SLOTS'),
'USE_ACL': config.getboolean(section, 'USE_ACL'), 'USE_ACL': config.getboolean(section, 'USE_ACL'),
'SUB_ACL': config.get(section, 'SUB_ACL'), 'SUB_ACL': config.get(section, 'SUB_ACL'),
'TG1_ACL': config.get(section, 'TGID_ACL'), 'TG1_ACL': config.get(section, 'TGID_ACL'),

127
hblink-750.cfg Executable file
View File

@ -0,0 +1,127 @@
[GLOBAL]
PATH: ./
PING_TIME: 5
MAX_MISSED: 3
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPORTS]
REPORT: False
REPORT_INTERVAL: 60
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1
[LOGGER]
LOG_FILE: /tmp/hblink.log
LOG_HANDLERS: console-timed
LOG_LEVEL: INFO
LOG_NAME: 444.750
[ALIASES]
TRY_DOWNLOAD: False
PATH: ./
PEER_FILE: peer_ids.json
SUBSCRIBER_FILE: subscriber_ids.json
TGID_FILE: talkgroup_ids.json
PEER_URL: https://www.radioid.net/static/rptrs.json
SUBSCRIBER_URL: https://www.radioid.net/static/users.json
STALE_DAYS: 7
[OBP]
MODE: OPENBRIDGE
ENABLED: True
IP:
PORT: 50100
NETWORK_ID: 1
PASSPHRASE: deadbeef
#TARGET_IP: olympic.k0usy.org
TARGET_IP: 127.0.0.1
#TARGET_PORT: 50666
TARGET_PORT: 50101
BOTH_SLOTS: True
USE_ACL: False
SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL
[444.750]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 5
EXPORT_AMBE: False
IP:
PORT: 50001
PASSPHRASE: jimmy
GROUP_HANGTIME: 10
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:8
TGID_TS2_ACL: PERMIT:3120
[TWO]
MODE: MASTER
ENABLED: False
REPEAT: True
MAX_PEERS: 5
EXPORT_AMBE: False
IP:
PORT:50002
PASSPHRASE: jimmy
GROUP_HANGTIME: 10
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:8
TGID_TS2_ACL: PERMIT:3120
[THREE]
MODE: MASTER
ENABLED: False
REPEAT: True
MAX_PEERS: 5
EXPORT_AMBE: False
IP:
PORT:50003
PASSPHRASE: jimmy
GROUP_HANGTIME: 10
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:8
TGID_TS2_ACL: PERMIT:3120
[KS-DMR]
MODE: PEER
ENABLED: False
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54001
MASTER_IP: olympic.k0usy.org
MASTER_PORT: 62071
PASSPHRASE: c0ffee
CALLSIGN: W1ABC
RADIO_ID: 312312
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: This is a cool repeater
URL: www.w1abc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

127
hblink-800.cfg Executable file
View File

@ -0,0 +1,127 @@
[GLOBAL]
PATH: ./
PING_TIME: 5
MAX_MISSED: 3
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL
[REPORTS]
REPORT: False
REPORT_INTERVAL: 60
REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1
[LOGGER]
LOG_FILE: /tmp/hblink.log
LOG_HANDLERS: console-timed
LOG_LEVEL: INFO
LOG_NAME: 444.800
[ALIASES]
TRY_DOWNLOAD: False
PATH: ./
PEER_FILE: peer_ids.json
SUBSCRIBER_FILE: subscriber_ids.json
TGID_FILE: talkgroup_ids.json
PEER_URL: https://www.radioid.net/static/rptrs.json
SUBSCRIBER_URL: https://www.radioid.net/static/users.json
STALE_DAYS: 7
[OBP]
MODE: OPENBRIDGE
ENABLED: True
IP:
PORT: 50101
NETWORK_ID: 2
PASSPHRASE: deadbeef
#TARGET_IP: olympic.k0usy.org
TARGET_IP: 127.0.0.1
#TARGET_PORT: 50666
TARGET_PORT: 50100
BOTH_SLOTS: True
USE_ACL: False
SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL
[444.800]
MODE: MASTER
ENABLED: True
REPEAT: True
MAX_PEERS: 5
EXPORT_AMBE: False
IP:
PORT: 50011
PASSPHRASE: jimmy
GROUP_HANGTIME: 10
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:8
TGID_TS2_ACL: PERMIT:3120
[TWO]
MODE: MASTER
ENABLED: False
REPEAT: True
MAX_PEERS: 5
EXPORT_AMBE: False
IP:
PORT:50012
PASSPHRASE: jimmy
GROUP_HANGTIME: 10
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:8
TGID_TS2_ACL: PERMIT:3120
[THREE]
MODE: MASTER
ENABLED: False
REPEAT: True
MAX_PEERS: 5
EXPORT_AMBE: False
IP:
PORT:50013
PASSPHRASE: jimmy
GROUP_HANGTIME: 10
USE_ACL: False
REG_ACL: DENY:1
SUB_ACL: DENY:1
TGID_TS1_ACL: DENY:8
TGID_TS2_ACL: PERMIT:3120
[KS-DMR]
MODE: PEER
ENABLED: False
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54011
MASTER_IP: olympic.k0usy.org
MASTER_PORT: 62071
PASSPHRASE: c0ffee
CALLSIGN: W1ABC
RADIO_ID: 312312
RX_FREQ: 449000000
TX_FREQ: 444000000
TX_POWER: 25
COLORCODE: 1
SLOTS: 1
LATITUDE: 38.0000
LONGITUDE: -095.0000
HEIGHT: 75
LOCATION: Anywhere, USA
DESCRIPTION: This is a cool repeater
URL: www.w1abc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:
USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

View File

@ -1,255 +1,258 @@
# PROGRAM-WIDE PARAMETERS GO HERE # PROGRAM-WIDE PARAMETERS GO HERE
# PATH - working path for files, leave it alone unless you NEED to change it # PATH - working path for files, leave it alone unless you NEED to change it
# PING_TIME - the interval that peers will ping the master, and re-try registraion # PING_TIME - the interval that peers will ping the master, and re-try registraion
# - how often the Master maintenance loop runs # - how often the Master maintenance loop runs
# MAX_MISSED - how many pings are missed before we give up and re-register # MAX_MISSED - how many pings are missed before we give up and re-register
# - number of times the master maintenance loop runs before de-registering a peer # - number of times the master maintenance loop runs before de-registering a peer
# #
# ACLs: # ACLs:
# #
# Access Control Lists are a very powerful tool for administering your system. # Access Control Lists are a very powerful tool for administering your system.
# But they consume packet processing time. Disable them if you are not using them. # But they consume packet processing time. Disable them if you are not using them.
# But be aware that, as of now, the configuration stanzas still need the ACL # But be aware that, as of now, the configuration stanzas still need the ACL
# sections configured even if you're not using them. # sections configured even if you're not using them.
# #
# REGISTRATION ACLS ARE ALWAYS USED, ONLY SUBSCRIBER AND TGID MAY BE DISABLED!!! # REGISTRATION ACLS ARE ALWAYS USED, ONLY SUBSCRIBER AND TGID MAY BE DISABLED!!!
# #
# The 'action' May be PERMIT|DENY # The 'action' May be PERMIT|DENY
# Each entry may be a single radio id, or a hypenated range (e.g. 1-2999) # Each entry may be a single radio id, or a hypenated range (e.g. 1-2999)
# Format: # Format:
# ACL = 'action:id|start-end|,id|start-end,....' # ACL = 'action:id|start-end|,id|start-end,....'
# --for example-- # --for example--
# SUB_ACL: DENY:1,1000-2000,4500-60000,17 # SUB_ACL: DENY:1,1000-2000,4500-60000,17
# #
# ACL Types: # ACL Types:
# REG_ACL: peer radio IDs for registration (only used on HBP master systems) # REG_ACL: peer radio IDs for registration (only used on HBP master systems)
# SUB_ACL: subscriber IDs for end-users # SUB_ACL: subscriber IDs for end-users
# TGID_TS1_ACL: destination talkgroup IDs on Timeslot 1 # TGID_TS1_ACL: destination talkgroup IDs on Timeslot 1
# TGID_TS2_ACL: destination talkgroup IDs on Timeslot 2 # TGID_TS2_ACL: destination talkgroup IDs on Timeslot 2
# #
# ACLs may be repeated for individual systems if needed for granularity # ACLs may be repeated for individual systems if needed for granularity
# Global ACLs will be processed BEFORE the system level ACLs # Global ACLs will be processed BEFORE the system level ACLs
# Packets will be matched against all ACLs, GLOBAL first. If a packet 'passes' # Packets will be matched against all ACLs, GLOBAL first. If a packet 'passes'
# All elements, processing continues. Packets are discarded at the first # All elements, processing continues. Packets are discarded at the first
# negative match, or 'reject' from an ACL element. # negative match, or 'reject' from an ACL element.
# #
# If you do not wish to use ACLs, set them to 'PERMIT:ALL' # If you do not wish to use ACLs, set them to 'PERMIT:ALL'
# TGID_TS1_ACL in the global stanza is used for OPENBRIDGE systems, since all # TGID_TS1_ACL in the global stanza is used for OPENBRIDGE systems, since all
# traffic is passed as TS 1 between OpenBridges # traffic is passed as TS 1 between OpenBridges
[GLOBAL] [GLOBAL]
PATH: ./ PATH: ./
PING_TIME: 5 PING_TIME: 5
MAX_MISSED: 3 MAX_MISSED: 3
USE_ACL: True USE_ACL: True
REG_ACL: PERMIT:ALL REG_ACL: PERMIT:ALL
SUB_ACL: DENY:1 SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL
# APRS - BY IU7IGU # APRS - BY IU7IGU
# Enabling "APRS" will configure APRS-Beaconing of Master's connection # Enabling "APRS" will configure APRS-Beaconing of Master's connection
# like repeater and hotspots. # like repeater and hotspots.
# REPORT_INTERVAL in Minute (ALLOW only > 3 Minutes) # REPORT_INTERVAL in Minute (ALLOW only > 3 Minutes)
# CALLSIGN: Callsign that will pubblish data on aprs server # CALLSIGN: Callsign that will pubblish data on aprs server
# MESSAGE: This message will print on APRS description together RX and TX Frequency # MESSAGE: This message will print on APRS description together RX and TX Frequency
[APRS] [APRS]
ENABLED: False ENABLED: False
REPORT_INTERVAL: 5 REPORT_INTERVAL: 5
CALLSIGN:HB1LNK-11 CALLSIGN:HB1LNK-11
SERVER:euro.aprs2.net SERVER:euro.aprs2.net
MESSAGE:Connesso ad HBLINK MESSAGE:Connesso ad HBLINK
# NOT YET WORKING: NETWORK REPORTING CONFIGURATION # NOT YET WORKING: NETWORK REPORTING CONFIGURATION
# Enabling "REPORT" will configure a socket-based reporting # Enabling "REPORT" will configure a socket-based reporting
# system that will send the configuration and other items # system that will send the configuration and other items
# to a another process (local or remote) that may process # to a another process (local or remote) that may process
# the information for some useful purpose, like a web dashboard. # the information for some useful purpose, like a web dashboard.
# #
# REPORT - True to enable, False to disable # REPORT - True to enable, False to disable
# REPORT_INTERVAL - Seconds between reports # REPORT_INTERVAL - Seconds between reports
# REPORT_PORT - TCP port to listen on if "REPORT_NETWORKS" = NETWORK # REPORT_PORT - TCP port to listen on if "REPORT_NETWORKS" = NETWORK
# REPORT_CLIENTS - comma separated list of IPs you will allow clients # REPORT_CLIENTS - comma separated list of IPs you will allow clients
# to connect on. Entering a * will allow all. # to connect on. Entering a * will allow all.
# #
# ****FOR NOW MUST BE TRUE - USE THE LOOPBACK IF YOU DON'T USE THIS!!!**** # ****FOR NOW MUST BE TRUE - USE THE LOOPBACK IF YOU DON'T USE THIS!!!****
[REPORTS] [REPORTS]
REPORT: True REPORT: True
REPORT_INTERVAL: 60 REPORT_INTERVAL: 60
REPORT_PORT: 4321 REPORT_PORT: 4321
REPORT_CLIENTS: 127.0.0.1 REPORT_CLIENTS: 127.0.0.1
# SYSTEM LOGGER CONFIGURAITON # SYSTEM LOGGER CONFIGURAITON
# This allows the logger to be configured without chaning the individual # This allows the logger to be configured without chaning the individual
# python logger stuff. LOG_FILE should be a complete path/filename for *your* # python logger stuff. LOG_FILE should be a complete path/filename for *your*
# system -- use /dev/null for non-file handlers. # system -- use /dev/null for non-file handlers.
# LOG_HANDLERS may be any of the following, please, no spaces in the # LOG_HANDLERS may be any of the following, please, no spaces in the
# list if you use several: # list if you use several:
# null # null
# console # console
# console-timed # console-timed
# file # file
# file-timed # file-timed
# syslog # syslog
# LOG_LEVEL may be any of the standard syslog logging levels, though # LOG_LEVEL may be any of the standard syslog logging levels, though
# as of now, DEBUG, INFO, WARNING and CRITICAL are the only ones # as of now, DEBUG, INFO, WARNING and CRITICAL are the only ones
# used. # used.
# #
[LOGGER] [LOGGER]
LOG_FILE: /tmp/hblink.log LOG_FILE: /tmp/hblink.log
LOG_HANDLERS: console-timed LOG_HANDLERS: console-timed
LOG_LEVEL: DEBUG LOG_LEVEL: DEBUG
LOG_NAME: HBlink LOG_NAME: HBlink
# DOWNLOAD AND IMPORT SUBSCRIBER, PEER and TGID ALIASES # DOWNLOAD AND IMPORT SUBSCRIBER, PEER and TGID ALIASES
# Ok, not the TGID, there's no master list I know of to download # Ok, not the TGID, there's no master list I know of to download
# This is intended as a facility for other applcations built on top of # This is intended as a facility for other applcations built on top of
# HBlink to use, and will NOT be used in HBlink directly. # HBlink to use, and will NOT be used in HBlink directly.
# STALE_DAYS is the number of days since the last download before we # STALE_DAYS is the number of days since the last download before we
# download again. Don't be an ass and change this to less than a few days. # download again. Don't be an ass and change this to less than a few days.
[ALIASES] [ALIASES]
TRY_DOWNLOAD: True TRY_DOWNLOAD: True
PATH: ./ PATH: ./
PEER_FILE: peer_ids.json PEER_FILE: peer_ids.json
SUBSCRIBER_FILE: subscriber_ids.json SUBSCRIBER_FILE: subscriber_ids.json
TGID_FILE: talkgroup_ids.json TGID_FILE: talkgroup_ids.json
PEER_URL: https://www.radioid.net/static/rptrs.json PEER_URL: https://www.radioid.net/static/rptrs.json
SUBSCRIBER_URL: https://www.radioid.net/static/users.json SUBSCRIBER_URL: https://www.radioid.net/static/users.json
STALE_DAYS: 7 STALE_DAYS: 7
# OPENBRIDGE INSTANCES - DUPLICATE SECTION FOR MULTIPLE CONNECTIONS # OPENBRIDGE INSTANCES - DUPLICATE SECTION FOR MULTIPLE CONNECTIONS
# OpenBridge is a protocol originall created by DMR+ for connection between an # OpenBridge is a protocol originall created by DMR+ for connection between an
# IPSC2 server and Brandmeister. It has been implemented here at the suggestion # IPSC2 server and Brandmeister. It has been implemented here at the suggestion
# of the Brandmeister team as a way to legitimately connect HBlink to the # of the Brandmeister team as a way to legitimately connect HBlink to the
# Brandemiester network. # Brandemiester network.
# It is recommended to name the system the ID of the Brandmeister server that # It is recommended to name the system the ID of the Brandmeister server that
# it connects to, but is not necessary. TARGET_IP and TARGET_PORT are of the # it connects to, but is not necessary. TARGET_IP and TARGET_PORT are of the
# Brandmeister or IPSC2 server you are connecting to. PASSPHRASE is the password # Brandmeister or IPSC2 server you are connecting to. PASSPHRASE is the password
# that must be agreed upon between you and the operator of the server you are # that must be agreed upon between you and the operator of the server you are
# connecting to. NETWORK_ID is a number in the format of a DMR Radio ID that # connecting to. NETWORK_ID is a number in the format of a DMR Radio ID that
# will be sent to the other server to identify this connection. # will be sent to the other server to identify this connection.
# other parameters follow the other system types. # other parameters follow the other system types.
# #
# ACLs: # ACLs:
# OpenBridge does not 'register', so registration ACL is meaningless. # OpenBridge does not 'register', so registration ACL is meaningless.
# OpenBridge passes all traffic on TS1, so there is only 1 TGID ACL. # Proper OpenBridge passes all traffic on TS1.
# Otherwise ACLs work as described in the global stanza # HBlink can extend OPB to use both slots for unit calls only.
[OBP-1] # Setting "BOTH_SLOTS" True ONLY affects unit traffic!
MODE: OPENBRIDGE # Otherwise ACLs work as described in the global stanza
ENABLED: True [OBP-1]
IP: MODE: OPENBRIDGE
PORT: 62035 ENABLED: True
NETWORK_ID: 3129100 IP:
PASSPHRASE: password PORT: 62035
TARGET_IP: 1.2.3.4 NETWORK_ID: 3129100
TARGET_PORT: 62035 PASSPHRASE: password
USE_ACL: True TARGET_IP: 1.2.3.4
SUB_ACL: DENY:1 TARGET_PORT: 62035
TGID_ACL: PERMIT:ALL BOTH_SLOTS: True
USE_ACL: True
# MASTER INSTANCES - DUPLICATE SECTION FOR MULTIPLE MASTERS SUB_ACL: DENY:1
# HomeBrew Protocol Master instances go here. TGID_ACL: PERMIT:ALL
# IP may be left blank if there's one interface on your system.
# Port should be the port you want this master to listen on. It must be unique # MASTER INSTANCES - DUPLICATE SECTION FOR MULTIPLE MASTERS
# and unused by anything else. # HomeBrew Protocol Master instances go here.
# Repeat - if True, the master repeats traffic to peers, False, it does nothing. # IP may be left blank if there's one interface on your system.
# # Port should be the port you want this master to listen on. It must be unique
# MAX_PEERS -- maximun number of peers that may be connect to this master # and unused by anything else.
# at any given time. This is very handy if you're allowing hotspots to # Repeat - if True, the master repeats traffic to peers, False, it does nothing.
# connect, or using a limited computer like a Raspberry Pi. #
# # MAX_PEERS -- maximun number of peers that may be connect to this master
# ACLs: # at any given time. This is very handy if you're allowing hotspots to
# See comments in the GLOBAL stanza # connect, or using a limited computer like a Raspberry Pi.
[MASTER-1] #
MODE: MASTER # ACLs:
ENABLED: True # See comments in the GLOBAL stanza
APRS_ENABLED: False [MASTER-1]
REPEAT: True MODE: MASTER
MAX_PEERS: 10 ENABLED: True
EXPORT_AMBE: False APRS_ENABLED: False
IP: REPEAT: True
PORT: 54000 MAX_PEERS: 10
PASSPHRASE: s3cr37w0rd EXPORT_AMBE: False
GROUP_HANGTIME: 5 IP:
USE_ACL: True PORT: 54000
REG_ACL: DENY:1 PASSPHRASE: s3cr37w0rd
SUB_ACL: DENY:1 GROUP_HANGTIME: 5
TGID_TS1_ACL: PERMIT:ALL USE_ACL: True
TGID_TS2_ACL: PERMIT:ALL REG_ACL: DENY:1
SUB_ACL: DENY:1
# PEER INSTANCES - DUPLICATE SECTION FOR MULTIPLE PEERS TGID_TS1_ACL: PERMIT:ALL
# There are a LOT of errors in the HB Protocol specifications on this one! TGID_TS2_ACL: PERMIT:ALL
# MOST of these items are just strings and will be properly dealt with by the program
# The TX & RX Frequencies are 9-digit numbers, and are the frequency in Hz. # PEER INSTANCES - DUPLICATE SECTION FOR MULTIPLE PEERS
# Latitude is an 8-digit unsigned floating point number. # There are a LOT of errors in the HB Protocol specifications on this one!
# Longitude is a 9-digit signed floating point number. # MOST of these items are just strings and will be properly dealt with by the program
# Height is in meters # The TX & RX Frequencies are 9-digit numbers, and are the frequency in Hz.
# Setting Loose to True relaxes the validation on packets received from the master. # Latitude is an 8-digit unsigned floating point number.
# This will allow HBlink to connect to a non-compliant system such as XLXD, DMR+ etc. # Longitude is a 9-digit signed floating point number.
# # Height is in meters
# ACLs: # Setting Loose to True relaxes the validation on packets received from the master.
# See comments in the GLOBAL stanza # This will allow HBlink to connect to a non-compliant system such as XLXD, DMR+ etc.
[REPEATER-1] #
MODE: PEER # ACLs:
ENABLED: True # See comments in the GLOBAL stanza
LOOSE: False [REPEATER-1]
EXPORT_AMBE: False MODE: PEER
IP: ENABLED: True
PORT: 54001 LOOSE: False
MASTER_IP: 172.16.1.1 EXPORT_AMBE: False
MASTER_PORT: 54000 IP:
PASSPHRASE: homebrew PORT: 54001
CALLSIGN: W1ABC MASTER_IP: 172.16.1.1
RADIO_ID: 312000 MASTER_PORT: 54000
RX_FREQ: 449000000 PASSPHRASE: homebrew
TX_FREQ: 444000000 CALLSIGN: W1ABC
TX_POWER: 25 RADIO_ID: 312000
COLORCODE: 1 RX_FREQ: 449000000
SLOTS: 1 TX_FREQ: 444000000
LATITUDE: 38.0000 TX_POWER: 25
LONGITUDE: -095.0000 COLORCODE: 1
HEIGHT: 75 SLOTS: 1
LOCATION: Anywhere, USA LATITUDE: 38.0000
DESCRIPTION: This is a cool repeater LONGITUDE: -095.0000
URL: www.w1abc.org HEIGHT: 75
SOFTWARE_ID: 20170620 LOCATION: Anywhere, USA
PACKAGE_ID: MMDVM_HBlink DESCRIPTION: This is a cool repeater
GROUP_HANGTIME: 5 URL: www.w1abc.org
OPTIONS: SOFTWARE_ID: 20170620
USE_ACL: True PACKAGE_ID: MMDVM_HBlink
SUB_ACL: DENY:1 GROUP_HANGTIME: 5
TGID_TS1_ACL: PERMIT:ALL OPTIONS:
TGID_TS2_ACL: PERMIT:ALL USE_ACL: True
SUB_ACL: DENY:1
[XLX-1] TGID_TS1_ACL: PERMIT:ALL
MODE: XLXPEER TGID_TS2_ACL: PERMIT:ALL
ENABLED: True
LOOSE: True [XLX-1]
EXPORT_AMBE: False MODE: XLXPEER
IP: ENABLED: True
PORT: 54002 LOOSE: True
MASTER_IP: 172.16.1.1 EXPORT_AMBE: False
MASTER_PORT: 62030 IP:
PASSPHRASE: passw0rd PORT: 54002
CALLSIGN: W1ABC MASTER_IP: 172.16.1.1
RADIO_ID: 312000 MASTER_PORT: 62030
RX_FREQ: 449000000 PASSPHRASE: passw0rd
TX_FREQ: 444000000 CALLSIGN: W1ABC
TX_POWER: 25 RADIO_ID: 312000
COLORCODE: 1 RX_FREQ: 449000000
SLOTS: 1 TX_FREQ: 444000000
LATITUDE: 38.0000 TX_POWER: 25
LONGITUDE: -095.0000 COLORCODE: 1
HEIGHT: 75 SLOTS: 1
LOCATION: Anywhere, USA LATITUDE: 38.0000
DESCRIPTION: This is a cool repeater LONGITUDE: -095.0000
URL: www.w1abc.org HEIGHT: 75
SOFTWARE_ID: 20170620 LOCATION: Anywhere, USA
PACKAGE_ID: MMDVM_HBlink DESCRIPTION: This is a cool repeater
GROUP_HANGTIME: 5 URL: www.w1abc.org
XLXMODULE: 4004 SOFTWARE_ID: 20170620
USE_ACL: True PACKAGE_ID: MMDVM_HBlink
SUB_ACL: DENY:1 GROUP_HANGTIME: 5
TGID_TS1_ACL: PERMIT:ALL XLXMODULE: 4004
TGID_TS2_ACL: PERMIT:ALL USE_ACL: True
SUB_ACL: DENY:1
TGID_TS1_ACL: PERMIT:ALL
TGID_TS2_ACL: PERMIT:ALL

View File

@ -171,8 +171,8 @@ class OPENBRIDGE(DatagramProtocol):
_stream_id = _data[16:20] _stream_id = _data[16:20]
#logger.debug('(%s) DMRD - Seqence: %s, RF Source: %s, Destination ID: %s', self._system, int_id(_seq), int_id(_rf_src), int_id(_dst_id)) #logger.debug('(%s) DMRD - Seqence: %s, RF Source: %s, Destination ID: %s', self._system, int_id(_seq), int_id(_rf_src), int_id(_dst_id))
# Sanity check for OpenBridge -- all calls must be on Slot 1 # Sanity check for OpenBridge -- all calls must be on Slot 1 for Brandmeister or DMR+. Other HBlinks can process timeslot on OPB if the flag is set
if _slot != 1: if _slot != 1 and not self._config['BOTH_SLOTS'] and not _call_type == 'unit':
logger.error('(%s) OpenBridge packet discarded because it was not received on slot 1. SID: %s, TGID %s', self._system, int_id(_rf_src), int_id(_dst_id)) logger.error('(%s) OpenBridge packet discarded because it was not received on slot 1. SID: %s, TGID %s', self._system, int_id(_rf_src), int_id(_dst_id))
return return
@ -934,7 +934,7 @@ if __name__ == '__main__':
if cli_args.LOG_LEVEL: if cli_args.LOG_LEVEL:
CONFIG['LOGGER']['LOG_LEVEL'] = cli_args.LOG_LEVEL CONFIG['LOGGER']['LOG_LEVEL'] = cli_args.LOG_LEVEL
logger = log.config_logging(CONFIG['LOGGER']) logger = log.config_logging(CONFIG['LOGGER'])
logger.info('APRS IMPLEMENTATION BY IU7IGU email: iu7igu@yahoo.com \n\nCopyright (c) 2013, 2014, 2015, 2016, 2018, 2019\n\tThe Regents of the K0USY Group. All rights reserved.') logger.info('APRS IMPLEMENTATION BY IU7IGU email: iu7igu@yahoo.com \n APRS per master config by KF7EEL - KF7EEL@qsl.net \n\nCopyright (c) 2013, 2014, 2015, 2016, 2018, 2019, 2020\n\tThe Regents of the K0USY Group. All rights reserved.')
logger.debug('(GLOBAL) Logging system started, anything from here on gets logged') logger.debug('(GLOBAL) Logging system started, anything from here on gets logged')
# Set up the signal handler # Set up the signal handler

16
rules-750.py Executable file
View File

@ -0,0 +1,16 @@
BRIDGES = {
'1/2': [
{'SYSTEM': '444.750', 'TS': 1, 'TGID': 2, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},
{'SYSTEM': 'OBP', 'TS': 1, 'TGID': 2, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
],
'KANSAS': [
{'SYSTEM': '444.750', 'TS': 2, 'TGID': 3120, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},
{'SYSTEM': 'OBP', 'TS': 1, 'TGID': 3120, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
]
}
UNIT = ['444.750', 'OBP']
if __name__ == '__main__':
from pprint import pprint
pprint(BRIDGES)

16
rules-800.py Executable file
View File

@ -0,0 +1,16 @@
BRIDGES = {
'1/2': [
{'SYSTEM': '444.800', 'TS': 1, 'TGID': 2, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},
{'SYSTEM': 'OBP', 'TS': 1, 'TGID': 2, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
],
'KANSAS': [
{'SYSTEM': '444.800', 'TS': 2, 'TGID': 3120, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []},
{'SYSTEM': 'OBP', 'TS': 1, 'TGID': 3120, 'ACTIVE': True, 'TIMEOUT': 5,'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
]
}
UNIT = ["444.800", "OBP"]
if __name__ == '__main__':
from pprint import pprint
pprint(BRIDGES)

View File

@ -47,6 +47,18 @@ BRIDGES = {
] ]
} }
'''
list the names of each system that should bridge unit to unit (individual) calls.
'''
UNIT = ['ONE', 'TWO']
'''
This is for testing the syntax of the file. It won't eliminate all errors, but running this file
like it were a Python program itself will tell you if the syntax is correct!
'''
if __name__ == '__main__': if __name__ == '__main__':
from pprint import pprint from pprint import pprint
pprint(BRIDGES) pprint(BRIDGES)
print(UNIT)

0
voice_lib.py Normal file → Executable file
View File