diff --git a/Audio/CW/adn.ambe b/Audio/CW/adn.ambe new file mode 100644 index 0000000..b7f6fd1 Binary files /dev/null and b/Audio/CW/adn.ambe differ diff --git a/Audio/CW/freedmr.ambe b/Audio/CW/freedmr.ambe deleted file mode 100644 index e56b8d6..0000000 Binary files a/Audio/CW/freedmr.ambe and /dev/null differ diff --git a/Audio/cy_GB/adn.ambe b/Audio/cy_GB/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/cy_GB/adn.ambe differ diff --git a/Audio/cy_GB/freedmr.ambe b/Audio/cy_GB/freedmr.ambe deleted file mode 100644 index 41d0271..0000000 Binary files a/Audio/cy_GB/freedmr.ambe and /dev/null differ diff --git a/Audio/de_DE/adn.ambe b/Audio/de_DE/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/de_DE/adn.ambe differ diff --git a/Audio/el_GR/adn.ambe b/Audio/el_GR/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/el_GR/adn.ambe differ diff --git a/Audio/el_GR/freedmr.ambe b/Audio/el_GR/freedmr.ambe deleted file mode 100644 index 828312b..0000000 Binary files a/Audio/el_GR/freedmr.ambe and /dev/null differ diff --git a/Audio/en_GB/adn.ambe b/Audio/en_GB/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/en_GB/adn.ambe differ diff --git a/Audio/en_GB/freedmr.ambe b/Audio/en_GB/freedmr.ambe deleted file mode 100644 index d6d3f22..0000000 Binary files a/Audio/en_GB/freedmr.ambe and /dev/null differ diff --git a/Audio/en_GB_2/adn.ambe b/Audio/en_GB_2/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/en_GB_2/adn.ambe differ diff --git a/Audio/en_GB_2/freedmr.ambe b/Audio/en_GB_2/freedmr.ambe deleted file mode 100644 index d6d3f22..0000000 Binary files a/Audio/en_GB_2/freedmr.ambe and /dev/null differ diff --git a/Audio/es_ES/adn.ambe b/Audio/es_ES/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/es_ES/adn.ambe differ diff --git a/Audio/es_ES/freedmr.ambe b/Audio/es_ES/freedmr.ambe deleted file mode 100644 index be242e9..0000000 Binary files a/Audio/es_ES/freedmr.ambe and /dev/null differ diff --git a/Audio/fr_FR/adn.ambe b/Audio/fr_FR/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/fr_FR/adn.ambe differ diff --git a/Audio/fr_FR/freedmr.ambe b/Audio/fr_FR/freedmr.ambe deleted file mode 100644 index 41bff87..0000000 Binary files a/Audio/fr_FR/freedmr.ambe and /dev/null differ diff --git a/Audio/pt_PT/adn.ambe b/Audio/pt_PT/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/pt_PT/adn.ambe differ diff --git a/Audio/pt_PT/freedmr.ambe b/Audio/pt_PT/freedmr.ambe deleted file mode 100644 index cf1601e..0000000 Binary files a/Audio/pt_PT/freedmr.ambe and /dev/null differ diff --git a/Audio/th_TH/adn.ambe b/Audio/th_TH/adn.ambe new file mode 100644 index 0000000..fea8c88 Binary files /dev/null and b/Audio/th_TH/adn.ambe differ diff --git a/Audio/th_TH/freedmr.ambe b/Audio/th_TH/freedmr.ambe deleted file mode 100644 index 53b634c..0000000 Binary files a/Audio/th_TH/freedmr.ambe and /dev/null differ diff --git a/README.md b/README.md index c2d88e7..2d06544 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -### FreeDMR Peer Server is a (now very diverged) fork of the hblink3 project ### +### ADN Systems DMR Peer Server is a fork from FreeDMR by G7RZU hacknix ### -FreeDMR Peer Server - software to assist in building a peer mesh network - -Please see the wiki for documentation. +Launched on April 21, 2024, by a visionary group of 20 international amateur radio enthusiasts, +ADN Systems operates on an Open Bridge Protocol (OBP), fostering a decentralized network +devoid of hierarchical structures. diff --git a/bridge.py b/bridge.py index 86d6dc3..b38fc4e 100755 --- a/bridge.py +++ b/bridge.py @@ -655,7 +655,7 @@ class routerHBP(HBSYSTEM): self.STATUS[_slot]['lastSeq'] = _seq #Save this packet self.STATUS[_slot]['lastData'] = _data - + for _bridge in BRIDGES: diff --git a/bridge_master.py b/bridge_master.py index e8fb2a6..2edc20f 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -821,7 +821,7 @@ def ident(): _say.append(words[_lang]['silence']) _say.append(words[_lang]['silence']) - _say.append(words[_lang]['freedmr']) + _say.append(words[_lang]['adn']) #test #_say.append(AMBEobj.readSingleFile('alpha.ambe')) diff --git a/config.py b/config.py index b90081f..49cd204 100755 --- a/config.py +++ b/config.py @@ -96,7 +96,7 @@ def acl_build(_acl, _max): if (const.ID_MIN <= id <= _max): acl.append((id, id)) else: - sys.exit('ACL CREATION ERROR, VALUE OUT OF RANGE ({} - {}) IN SINGLE ID ENTRY: {}'.format(const.ID_MIN, _max, entry)) + sys.exit('ACL CREATION ERROR, VALUE OUT OF RANGE ({} - {}) IN SINGLE ID ENTRY: {}'.format(const.ID_MIN, _max, entry)) return (action, acl) @@ -180,15 +180,15 @@ def build_config(_config_file): 'PEER_FILE': config.get(section, 'PEER_FILE', fallback='peer_ids.json'), 'SUBSCRIBER_FILE': config.get(section, 'SUBSCRIBER_FILE', fallback='subscriber_ids.json'), 'TGID_FILE': config.get(section, 'TGID_FILE', fallback='talkgroup_ids.json'), - 'PEER_URL': config.get(section, 'PEER_URL', fallback='https://freedmr-lh.gb7fr.org.uk/json/peer_ids.json'), - 'SUBSCRIBER_URL': config.get(section, 'SUBSCRIBER_URL', fallback='https://freedmr-lh.gb7fr.org.uk/json/subscriber_ids.json'), - 'TGID_URL': config.get(section, 'TGID_URL', fallback='https://freedmr-lh.gb7fr.org.uk/json/talkgroup_ids.json'), + 'PEER_URL': config.get(section, 'PEER_URL', fallback='https://adn.systems/files/peer_ids.json'), + 'SUBSCRIBER_URL': config.get(section, 'SUBSCRIBER_URL', fallback='https://adn.systems/files/subscriber_ids.json'), + 'TGID_URL': config.get(section, 'TGID_URL', fallback='https://adn.systems/files/talkgroup_ids.json'), 'STALE_TIME': config.getint(section, 'STALE_DAYS', fallback=1) * 86400, 'SUB_MAP_FILE': config.get(section, 'SUB_MAP_FILE', fallback='sub_map.pkl'), 'LOCAL_SUBSCRIBER_FILE': config.get(section, 'LOCAL_SUBSCRIBER_FILE', fallback='local_subscribers.json'), - 'SERVER_ID_URL': config.get(section, 'SERVER_ID_URL', fallback='https://freedmr-lh.gb7fr.org.uk/json/server_ids.tsv'), + 'SERVER_ID_URL': config.get(section, 'SERVER_ID_URL', fallback='https://adn.systems/files/server_ids.tsv'), 'SERVER_ID_FILE': config.get(section, 'SERVER_ID_FILE', fallback='server_ids.tsv'), - 'CHECKSUM_URL': config.get(section, 'CHECKSUM_URL', fallback='https://freedmr-lh.gb7fr.org.uk/file_checksums.json'), + 'CHECKSUM_URL': config.get(section, 'CHECKSUM_URL', fallback='https://adn.systems/files/file_checksums.json'), 'CHECKSUM_FILE': config.get(section, 'CHECKSUM_FILE', fallback='file_checksums.json'), 'KEYS_FILE': config.get(section, 'KEYS_FILE', fallback='keys.json') }) @@ -310,7 +310,7 @@ def build_config(_config_file): 'REPEAT': config.getboolean(section, 'REPEAT', fallback=True), 'MAX_PEERS': config.getint(section, 'MAX_PEERS', fallback=1), 'IP': config.get(section, 'IP', fallback='127.0.0.1'), - 'PORT': config.getint(section, 'PORT', fallback=54000), + 'PORT': config.getint(section, 'PORT', fallback=56400), 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE', fallback=''), 'utf-8'), 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME',fallback=5), 'USE_ACL': config.getboolean(section, 'USE_ACL', fallback=False), @@ -327,7 +327,7 @@ def build_config(_config_file): 'GENERATOR': config.getint(section, 'GENERATOR', fallback=100), 'ANNOUNCEMENT_LANGUAGE': config.get(section, 'ANNOUNCEMENT_LANGUAGE', fallback='en_GB'), 'ALLOW_UNREG_ID': config.getboolean(section,'ALLOW_UNREG_ID', fallback=False), - 'PROXY_CONTROL' : config.getboolean(section,'PROXY_CONTROL', fallback=True), + 'PROXY_CONTROL' : config.getboolean(section,'PROXY_CONTROL', fallback=False), 'OVERRIDE_IDENT_TG': config.get(section, 'OVERRIDE_IDENT_TG', fallback=False) }}) CONFIG['SYSTEMS'][section].update({'PEERS': {}}) @@ -362,7 +362,7 @@ def build_config(_config_file): try: addr_info = socket.getaddrinfo(CONFIG['SYSTEMS'][section]['TARGET_IP'],CONFIG['SYSTEMS'][section]['TARGET_PORT'],socket.AF_INET6, socket.IPPROTO_IP) except gaierror: - addr_info = socket.getaddrinfo(CONFIG['SYSTEMS'][section]['TARGET_IP'],CONFIG['SYSTEMS'][section]['TARGET_PORT'],socket.AF_INET, socket.IPPROTO_IP) + addr_info = socket.getaddrinfo(CONFIG['SYSTEMS'][section]['TARGET_IP'],CONFIG['SYSTEMS'][section]['TARGET_PORT'],socket.AF_INET, socket.IPPROTO_IP) elif CONFIG['SYSTEMS'][section]['IP'] and IsIPv6Address(CONFIG['SYSTEMS'][section]['IP']): addr_info = socket.getaddrinfo(CONFIG['SYSTEMS'][section]['TARGET_IP'],CONFIG['SYSTEMS'][section]['TARGET_PORT'],socket.AF_INET6, socket.IPPROTO_IP) @@ -412,7 +412,7 @@ if __name__ == '__main__': # Ensure we have a path for the config file, if one wasn't specified, then use the execution directory if not cli_args.CONFIG_FILE: - cli_args.CONFIG_FILE = os.path.dirname(os.path.abspath(__file__))+'/freedmr.cfg' + cli_args.CONFIG_FILE = os.path.dirname(os.path.abspath(__file__))+'/config/adn.cfg' CONFIG = build_config(cli_args.CONFIG_FILE) pprint(CONFIG) diff --git a/FreeDMR-MINIMAL.cfg b/config/ADN-MINIMAL.cfg similarity index 94% rename from FreeDMR-MINIMAL.cfg rename to config/ADN-MINIMAL.cfg index 383fc08..957b5dd 100755 --- a/FreeDMR-MINIMAL.cfg +++ b/config/ADN-MINIMAL.cfg @@ -21,7 +21,7 @@ REPEAT: True MAX_PEERS: 1 EXPORT_AMBE: False IP: 127.0.0.1 -PORT: 54000 +PORT: 56400 PASSPHRASE: GROUP_HANGTIME: 5 USE_ACL: True @@ -38,6 +38,6 @@ VOICE_IDENT: True ANNOUNCEMENT_LANGUAGE: en_GB GENERATOR: 100 ALLOW_UNREG_ID: False -PROXY_CONTROL: True +PROXY_CONTROL: False OVERRIDE_IDENT_TG: diff --git a/FreeDMR-SAMPLE-commented.cfg b/config/ADN-SAMPLE-commented.cfg similarity index 94% rename from FreeDMR-SAMPLE-commented.cfg rename to config/ADN-SAMPLE-commented.cfg index 979a8f3..3989e91 100755 --- a/FreeDMR-SAMPLE-commented.cfg +++ b/config/ADN-SAMPLE-commented.cfg @@ -91,10 +91,10 @@ REPORT_CLIENTS: 127.0.0.1 # CRITICAL - only serious events [LOGGER] -LOG_FILE: /tmp/hblink.log +LOG_FILE: /tmp/adn-dmr.log LOG_HANDLERS: console-timed LOG_LEVEL: DEBUG -LOG_NAME: FreeDMR +LOG_NAME: ADN # DOWNLOAD AND IMPORT SUBSCRIBER, PEER and TGID ALIASES # Ok, not the TGID, there's no master list I know of to download @@ -104,18 +104,20 @@ LOG_NAME: FreeDMR # download again. Don't be an ass and change this to less than a few days. [ALIASES] TRY_DOWNLOAD: True -PATH: ./ +PATH: ./data 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 -TGID_URL: http://downloads.freedmr.uk/downloads/talkgroup_ids.json +PEER_URL: https://adn.systems/files/peer_ids.json +SUBSCRIBER_URL: https://adn.systems/files/subscriber_ids.json +TGID_URL: https://adn.systems/files/talkgroup_ids.json LOCAL_SUBSCRIBER_FILE: local_subcriber_ids.json STALE_DAYS: 1 -SERVER_ID_URL: http://downloads.freedmr.uk/downloads/FreeDMR_Hosts.csv +SUB_MAP_FILE: +SERVER_ID_URL: https://adn.systems/files/server_ids.tsv SERVER_ID_FILE: server_ids.tsv - +CHECKSUM_URL: https://adn.systems/files/file_checksums.json +CHECKSUM_FILE: file_checksums.json #Control server shared allstar instance via dial / AMI [ALLSTAR] @@ -208,4 +210,4 @@ DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: en_GB GENERATOR: 1 ALLOW_UNREG_ID: False -PROXY_CONTROL: True +PROXY_CONTROL: False diff --git a/FreeDMR-SAMPLE.cfg b/config/ADN-SAMPLE.cfg similarity index 80% rename from FreeDMR-SAMPLE.cfg rename to config/ADN-SAMPLE.cfg index fbeb09e..7d877aa 100755 --- a/FreeDMR-SAMPLE.cfg +++ b/config/ADN-SAMPLE.cfg @@ -29,19 +29,19 @@ LOG_NAME: FreeDMR [ALIASES] TRY_DOWNLOAD: True -PATH: ./ +PATH: ./data PEER_FILE: peer_ids.json SUBSCRIBER_FILE: subscriber_ids.json TGID_FILE: talkgroup_ids.json -PEER_URL: https://freedmr-lh.gb7fr.org.uk/json/peer_ids.json -SUBSCRIBER_URL: https://freedmr-lh.gb7fr.org.uk/json/subscriber_ids.json -TGID_URL: https://freedmr-lh.gb7fr.org.uk/json/talkgroup_ids.json +PEER_URL: https://adn.systems/files/peer_ids.json +SUBSCRIBER_URL: https://adn.systems/files/subscriber_ids.json +TGID_URL: https://adn.systems/files/talkgroup_ids.json LOCAL_SUBSCRIBER_FILE: local_subcriber_ids.json STALE_DAYS: 1 SUB_MAP_FILE: -SERVER_ID_URL: https://freedmr-lh.gb7fr.org.uk/json/server_ids.tsv +SERVER_ID_URL: https://adn.systems/files/server_ids.tsv SERVER_ID_FILE: server_ids.tsv -CHECKSUM_URL: https://freedmr-lh.gb7fr.org.uk/file_checksums.json +CHECKSUM_URL: https://adn.systems/files/file_checksums.json CHECKSUM_FILE: file_checksums.json @@ -77,7 +77,7 @@ REPEAT: True MAX_PEERS: 1 EXPORT_AMBE: False IP: 127.0.0.1 -PORT: 54000 +PORT: 56400 PASSPHRASE: GROUP_HANGTIME: 5 USE_ACL: True @@ -94,5 +94,5 @@ DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: en_GB GENERATOR: 100 ALLOW_UNREG_ID: False -PROXY_CONTROL: True +PROXY_CONTROL: False OVERRIDE_IDENT_TG: diff --git a/loro.cfg b/config/loro.cfg similarity index 100% rename from loro.cfg rename to config/loro.cfg diff --git a/playback_file.cfg b/config/playback_file.cfg similarity index 100% rename from playback_file.cfg rename to config/playback_file.cfg diff --git a/docker-configs/docker-compose_install.sh b/docker-configs/docker-compose_install.sh index 8d22a75..0947c6a 100644 --- a/docker-configs/docker-compose_install.sh +++ b/docker-configs/docker-compose_install.sh @@ -138,7 +138,7 @@ DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: en_GB GENERATOR: 100 ALLOW_UNREG_ID: False -PROXY_CONTROL: True +PROXY_CONTROL: False OVERRIDE_IDENT_TG: #Echo (Loro / Parrot) server diff --git a/docker-configs/freedmr.cfg b/docker-configs/freedmr.cfg index 50d2194..2a553d1 100644 --- a/docker-configs/freedmr.cfg +++ b/docker-configs/freedmr.cfg @@ -66,7 +66,7 @@ DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: en_GB GENERATOR: 100 ALLOW_UNREG_ID: False -PROXY_CONTROL: True +PROXY_CONTROL: False OVERRIDE_IDENT_TG: #Echo (Loro / Parrot) server diff --git a/hblink-SAMPLE.cfg b/hblink-SAMPLE.cfg deleted file mode 100755 index a3b616c..0000000 --- a/hblink-SAMPLE.cfg +++ /dev/null @@ -1,241 +0,0 @@ -# PROGRAM-WIDE PARAMETERS GO HERE -# 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 -# - how often the Master maintenance loop runs -# 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 -# -# ACLs: -# -# 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 be aware that, as of now, the configuration stanzas still need the ACL -# sections configured even if you're not using them. -# -# REGISTRATION ACLS ARE ALWAYS USED, ONLY SUBSCRIBER AND TGID MAY BE DISABLED!!! -# -# The 'action' May be PERMIT|DENY -# Each entry may be a single radio id, or a hypenated range (e.g. 1-2999) -# Format: -# ACL = 'action:id|start-end|,id|start-end,....' -# --for example-- -# SUB_ACL: DENY:1,1000-2000,4500-60000,17 -# -# ACL Types: -# REG_ACL: peer radio IDs for registration (only used on HBP master systems) -# SUB_ACL: subscriber IDs for end-users -# TGID_TS1_ACL: destination talkgroup IDs on Timeslot 1 -# TGID_TS2_ACL: destination talkgroup IDs on Timeslot 2 -# -# ACLs may be repeated for individual systems if needed for granularity -# Global ACLs will be processed BEFORE the system level ACLs -# Packets will be matched against all ACLs, GLOBAL first. If a packet 'passes' -# All elements, processing continues. Packets are discarded at the first -# negative match, or 'reject' from an ACL element. -# -# 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 -# traffic is passed as TS 1 between OpenBridges -[GLOBAL] -PATH: ./ -PING_TIME: 5 -MAX_MISSED: 3 -USE_ACL: True -REG_ACL: PERMIT:ALL -SUB_ACL: DENY:1 -TGID_TS1_ACL: PERMIT:ALL -TGID_TS2_ACL: PERMIT:ALL - - -# NOT YET WORKING: NETWORK REPORTING CONFIGURATION -# Enabling "REPORT" will configure a socket-based reporting -# system that will send the configuration and other items -# to a another process (local or remote) that may process -# the information for some useful purpose, like a web dashboard. -# -# REPORT - True to enable, False to disable -# REPORT_INTERVAL - Seconds between reports -# REPORT_PORT - TCP port to listen on if "REPORT_NETWORKS" = NETWORK -# REPORT_CLIENTS - comma separated list of IPs you will allow clients -# to connect on. Entering a * will allow all. -# -# ****FOR NOW MUST BE TRUE - USE THE LOOPBACK IF YOU DON'T USE THIS!!!**** -[REPORTS] -REPORT: True -REPORT_INTERVAL: 60 -REPORT_PORT: 4321 -REPORT_CLIENTS: 127.0.0.1 - - -# SYSTEM LOGGER CONFIGURAITON -# This allows the logger to be configured without chaning the individual -# python logger stuff. LOG_FILE should be a complete path/filename for *your* -# system -- use /dev/null for non-file handlers. -# LOG_HANDLERS may be any of the following, please, no spaces in the -# list if you use several: -# null -# console -# console-timed -# file -# file-timed -# syslog -# LOG_LEVEL may be any of the standard syslog logging levels, though -# as of now, DEBUG, INFO, WARNING and CRITICAL are the only ones -# used. -# -[LOGGER] -LOG_FILE: /tmp/hblink.log -LOG_HANDLERS: console-timed -LOG_LEVEL: DEBUG -LOG_NAME: HBlink - -# DOWNLOAD AND IMPORT SUBSCRIBER, PEER and TGID ALIASES -# 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 -# HBlink to use, and will NOT be used in HBlink directly. -# 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. -[ALIASES] -TRY_DOWNLOAD: True -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 - -# OPENBRIDGE INSTANCES - DUPLICATE SECTION FOR MULTIPLE CONNECTIONS -# OpenBridge is a protocol originall created by DMR+ for connection between an -# 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 -# Brandemiester network. -# 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 -# 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 -# 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. -# other parameters follow the other system types. -# -# ACLs: -# OpenBridge does not 'register', so registration ACL is meaningless. -# OpenBridge passes all traffic on TS1, so there is only 1 TGID ACL. -# Otherwise ACLs work as described in the global stanza -[OBP-1] -MODE: OPENBRIDGE -ENABLED: True -IP: -PORT: 62035 -NETWORK_ID: 3129100 -PASSPHRASE: password -TARGET_IP: 1.2.3.4 -TARGET_PORT: 62035 -USE_ACL: True -SUB_ACL: DENY:1 -TGID_ACL: PERMIT:ALL - -# MASTER INSTANCES - DUPLICATE SECTION FOR MULTIPLE MASTERS -# HomeBrew Protocol Master instances go here. -# 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 -# and unused by anything else. -# Repeat - if True, the master repeats traffic to peers, False, it does nothing. -# -# MAX_PEERS -- maximun number of peers that may be connect to this master -# at any given time. This is very handy if you're allowing hotspots to -# connect, or using a limited computer like a Raspberry Pi. -# -# ACLs: -# See comments in the GLOBAL stanza -[MASTER-1] -MODE: MASTER -ENABLED: True -REPEAT: True -MAX_PEERS: 10 -EXPORT_AMBE: False -IP: -PORT: 54000 -PASSPHRASE: s3cr37w0rd -GROUP_HANGTIME: 5 -USE_ACL: True -REG_ACL: DENY:1 -SUB_ACL: DENY:1 -TGID_TS1_ACL: PERMIT:ALL -TGID_TS2_ACL: PERMIT:ALL - -# PEER INSTANCES - DUPLICATE SECTION FOR MULTIPLE PEERS -# There are a LOT of errors in the HB Protocol specifications on this one! -# 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. -# Latitude is an 8-digit unsigned floating point number. -# Longitude is a 9-digit signed floating point number. -# Height is in meters -# Setting Loose to True relaxes the validation on packets received from the master. -# This will allow HBlink to connect to a non-compliant system such as XLXD, DMR+ etc. -# -# ACLs: -# See comments in the GLOBAL stanza -[REPEATER-1] -MODE: PEER -ENABLED: True -LOOSE: False -EXPORT_AMBE: False -IP: -PORT: 54001 -MASTER_IP: 172.16.1.1 -MASTER_PORT: 54000 -PASSPHRASE: homebrew -CALLSIGN: W1ABC -RADIO_ID: 312000 -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 - -[XLX-1] -MODE: XLXPEER -ENABLED: True -LOOSE: True -EXPORT_AMBE: False -IP: -PORT: 54002 -MASTER_IP: 172.16.1.1 -MASTER_PORT: 62030 -PASSPHRASE: passw0rd -CALLSIGN: W1ABC -RADIO_ID: 312000 -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 -XLXMODULE: 4004 -USE_ACL: True -SUB_ACL: DENY:1 -TGID_TS1_ACL: PERMIT:ALL -TGID_TS2_ACL: PERMIT:ALL diff --git a/playback_file.py b/playback_file.py index 2d13158..cf76cdf 100644 --- a/playback_file.py +++ b/playback_file.py @@ -209,7 +209,7 @@ if __name__ == '__main__': # Ensure we have a path for the config file, if one wasn't specified, then use the default (top of file) if not cli_args.CONFIG_FILE: - cli_args.CONFIG_FILE = os.path.dirname(os.path.abspath(__file__))+'/playback_file.cfg' + cli_args.CONFIG_FILE = os.path.dirname(os.path.abspath(__file__))+'/config/playback_file.cfg' # Call the external routine to build the configuration dictionary CONFIG = config.build_config(cli_args.CONFIG_FILE)