merged private-call-dev with master
This commit is contained in:
commit
596f7b309e
|
@ -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'),
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
|
@ -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)
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue