Merge branch 'master' into socket-reporting
This commit is contained in:
commit
547d6e23ed
@ -132,7 +132,7 @@ def build_acl(_sub_acl):
|
|||||||
acl_file.ACL[i] = hex_str_3(acl_file.ACL[i])
|
acl_file.ACL[i] = hex_str_3(acl_file.ACL[i])
|
||||||
logger.info('ACL file found and ACL entries imported')
|
logger.info('ACL file found and ACL entries imported')
|
||||||
ACL_ACTION = acl_file.ACL_ACTION
|
ACL_ACTION = acl_file.ACL_ACTION
|
||||||
ACL = acl_file.ACL_ACTION
|
ACL = acl_file.ACL
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logger.info('ACL file not found or invalid - all subscriber IDs are valid')
|
logger.info('ACL file not found or invalid - all subscriber IDs are valid')
|
||||||
ACL_ACTION = 'NONE'
|
ACL_ACTION = 'NONE'
|
||||||
|
@ -373,7 +373,7 @@ class confbridgeIPSC(IPSC):
|
|||||||
if _system['SYSTEM'] == self._system:
|
if _system['SYSTEM'] == self._system:
|
||||||
|
|
||||||
# TGID matches an ACTIVATION trigger
|
# TGID matches an ACTIVATION trigger
|
||||||
if _dst_group in _system['ON']:
|
if _dst_group in _system['ON'] and _ts == _system['TS']:
|
||||||
# Set the matching rule as ACTIVE
|
# Set the matching rule as ACTIVE
|
||||||
if _system['ACTIVE'] == False:
|
if _system['ACTIVE'] == False:
|
||||||
_system['ACTIVE'] = True
|
_system['ACTIVE'] = True
|
||||||
@ -388,7 +388,7 @@ class confbridgeIPSC(IPSC):
|
|||||||
self._logger.info('(%s) Bridge: %s, timeout timer reset to: %s', self._system, _bridge, _system['TIMER'] - now)
|
self._logger.info('(%s) Bridge: %s, timeout timer reset to: %s', self._system, _bridge, _system['TIMER'] - now)
|
||||||
|
|
||||||
# TGID matches an DE-ACTIVATION trigger
|
# TGID matches an DE-ACTIVATION trigger
|
||||||
if _dst_group in _system['OFF']:
|
if _dst_group in _system['OFF'] and _ts == _system['TS']:
|
||||||
# Set the matching rule as ACTIVE
|
# Set the matching rule as ACTIVE
|
||||||
if _system['ACTIVE'] == True:
|
if _system['ACTIVE'] == True:
|
||||||
_system['ACTIVE'] = False
|
_system['ACTIVE'] = False
|
||||||
|
@ -1079,7 +1079,7 @@ if __name__ == '__main__':
|
|||||||
if cli_args.LOG_HANDLERS:
|
if cli_args.LOG_HANDLERS:
|
||||||
CONFIG['LOGGER']['LOG_HANDLERS'] = cli_args.LOG_HANDLERS
|
CONFIG['LOGGER']['LOG_HANDLERS'] = cli_args.LOG_HANDLERS
|
||||||
logger = config_logging(CONFIG['LOGGER'])
|
logger = config_logging(CONFIG['LOGGER'])
|
||||||
logger.info('DMRlink \'dmrlink.py\' (c) 2013 - 2015 N0MJS & the K0USY Group - SYSTEM STARTING...')
|
logger.info('DMRlink \'dmrlink.py\' (c) 2013 - 2017 N0MJS & the K0USY Group - SYSTEM STARTING...')
|
||||||
|
|
||||||
# Set signal handers so that we can gracefully exit if need be
|
# Set signal handers so that we can gracefully exit if need be
|
||||||
def sig_handler(_signal, _frame):
|
def sig_handler(_signal, _frame):
|
||||||
|
@ -84,6 +84,7 @@ LOG_NAME: DMRlink
|
|||||||
# 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
|
||||||
|
LOCAL_FILE: False
|
||||||
PATH: ./
|
PATH: ./
|
||||||
PEER_FILE: peer_ids.csv
|
PEER_FILE: peer_ids.csv
|
||||||
SUBSCRIBER_FILE: subscriber_ids.csv
|
SUBSCRIBER_FILE: subscriber_ids.csv
|
||||||
|
@ -194,6 +194,7 @@ def build_config(_config_file):
|
|||||||
CONFIG['SYSTEMS'][section]['LOCAL']['FLAGS'] = '\x00\x00'+chr(FLAG_1)+chr(FLAG_2)
|
CONFIG['SYSTEMS'][section]['LOCAL']['FLAGS'] = '\x00\x00'+chr(FLAG_1)+chr(FLAG_2)
|
||||||
|
|
||||||
except ConfigParser.Error, err:
|
except ConfigParser.Error, err:
|
||||||
|
print(err)
|
||||||
sys.exit('Could not parse configuration file, exiting...')
|
sys.exit('Could not parse configuration file, exiting...')
|
||||||
|
|
||||||
return CONFIG
|
return CONFIG
|
||||||
@ -221,4 +222,4 @@ if __name__ == '__main__':
|
|||||||
cli_args.CONFIG_FILE = os.path.dirname(os.path.abspath(__file__))+'/dmrlink.cfg'
|
cli_args.CONFIG_FILE = os.path.dirname(os.path.abspath(__file__))+'/dmrlink.cfg'
|
||||||
|
|
||||||
|
|
||||||
pprint(build_config(cli_args.CONFIG_FILE))
|
pprint(build_config(cli_args.CONFIG_FILE))
|
||||||
|
164
mk-dmrlink
164
mk-dmrlink
@ -1,5 +1,11 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
|
currentdir=`pwd`
|
||||||
|
|
||||||
|
echo "Current working directory is" $currentdir
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
#################################################
|
#################################################
|
||||||
# #
|
# #
|
||||||
# Install DMRlink in seperate directories by #
|
# Install DMRlink in seperate directories by #
|
||||||
@ -25,10 +31,6 @@ echo "Required programs installed, continuing"
|
|||||||
# You need multiple ipsc directories, dmrlink.py and dmrlink.cfg
|
# You need multiple ipsc directories, dmrlink.py and dmrlink.cfg
|
||||||
# The needed files are copied to /opt/dmrlink
|
# The needed files are copied to /opt/dmrlink
|
||||||
|
|
||||||
# Put scripts in /opt/dmrlink
|
|
||||||
# cp /srv/DMRlink/get_ids.sh /opt/dmrlink # should be linked to /etc/cron.daily
|
|
||||||
# cp /srv/DMRlink/init.d/bridge /opt/dmrlink/rc.bridge
|
|
||||||
|
|
||||||
# Make needed directories
|
# Make needed directories
|
||||||
mkdir -p /opt/dmrlink/ambe_audio/
|
mkdir -p /opt/dmrlink/ambe_audio/
|
||||||
mkdir -p /opt/dmrlink/bridge/
|
mkdir -p /opt/dmrlink/bridge/
|
||||||
@ -36,127 +38,109 @@ echo "Required programs installed, continuing"
|
|||||||
mkdir -p /opt/dmrlink/log/
|
mkdir -p /opt/dmrlink/log/
|
||||||
mkdir -p /opt/dmrlink/playback/
|
mkdir -p /opt/dmrlink/playback/
|
||||||
mkdir -p /opt/dmrlink/play_group/
|
mkdir -p /opt/dmrlink/play_group/
|
||||||
mkdir -p /opt/dmrlink/record/
|
mkdir -p /opt/dmrlink/proxy/
|
||||||
mkdir -p /opt/dmrlink/rcm/
|
mkdir -p /opt/dmrlink/rcm/
|
||||||
|
mkdir -p /opt/dmrlink/record/
|
||||||
mkdir -p /opt/dmrlink/samples
|
mkdir -p /opt/dmrlink/samples
|
||||||
mkdir -p /var/log/dmrlink
|
mkdir -p /var/log/dmrlink
|
||||||
|
|
||||||
cd /opt/dmrlink
|
cd /opt/dmrlink
|
||||||
|
|
||||||
# Put common files in /opt/dmrlink
|
# Put common files in /opt/dmrlink
|
||||||
cp /srv/DMRlink/get_ids.sh /opt/dmrlink
|
# cp $currentdir/peer_ids.csv /opt/dmrlink
|
||||||
cp /srv/DMRlink/peer_ids.csv /opt/dmrlink
|
# cp $currentdir/subscriber_ids.csv /opt/dmrlink
|
||||||
cp /srv/DMRlink/subscriber_ids.csv /opt/dmrlink
|
# cp $currentdir/talkgroup_ids.csv /opt/dmrlink
|
||||||
cp /srv/DMRlink/talkgroup_ids.csv /opt/dmrlink
|
|
||||||
|
|
||||||
# Copy ipsc directory into each app directory
|
# Copy ipsc directory into each app directory
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/ambe_audio/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/ambe_audio/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/bridge/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/bridge/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/confbridge/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/confbridge/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/log/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/log/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/playback/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/playback/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/play_group/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/play_group/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/record/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/proxy/
|
||||||
cp -rf /srv/DMRlink/ipsc/ /opt/dmrlink/rcm/
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/rcm/
|
||||||
|
cp -rf $currentdir/ipsc/ /opt/dmrlink/record/
|
||||||
|
|
||||||
# Put a copy of the samples together for easy reference
|
# Put a copy of the samples together for easy reference
|
||||||
cp /srv/DMRlink/bridge_rules_SAMPLE.py /opt/dmrlink/samples
|
cp $currentdir/bridge_rules_SAMPLE.py /opt/dmrlink/samples
|
||||||
cp /srv/DMRlink/confbridge_rules_SAMPLE.py /opt/dmrlink/samples
|
cp $currentdir/confbridge_rules_SAMPLE.py /opt/dmrlink/samples
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/samples
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/samples
|
||||||
cp /srv/DMRlink/known_bridges_SAMPLE.py /opt/dmrlink/samples
|
cp $currentdir/known_bridges_SAMPLE.py /opt/dmrlink/samples
|
||||||
cp /srv/DMRlink/playback_config_SAMPLE.py /opt/dmrlink/samples
|
cp $currentdir/playback_config_SAMPLE.py /opt/dmrlink/samples
|
||||||
cp /srv/DMRlink/ambe_audio.cfg /opt/dmrlink/samples
|
cp $currentdir/ambe_audio.cfg /opt/dmrlink/samples
|
||||||
cp /srv/DMRlink/sub_acl_SAMPLE.py /opt/dmrlink/samples
|
cp $currentdir/sub_acl_SAMPLE.py /opt/dmrlink/samples
|
||||||
|
|
||||||
# Put the doc together for easy reference
|
# Put the doc together for easy reference
|
||||||
cp -rf /srv/DMRlink/documents /opt/dmrlink
|
cp -rf $currentdir/documents /opt/dmrlink
|
||||||
cp /srv/DMRlink/LICENSE.txt /opt/dmrlink/documents
|
cp $currentdir/LICENSE.txt /opt/dmrlink/documents
|
||||||
cp /srv/DMRlink/requirements.txt /opt/dmrlink/documents
|
cp $currentdir/requirements.txt /opt/dmrlink/documents
|
||||||
cp /srv/DMRlink/ambe_audio_commands.txt /opt/dmrlink/documents
|
cp $currentdir/ambe_audio_commands.txt /opt/dmrlink/documents
|
||||||
|
|
||||||
# ambe_audio
|
# ambe_audio
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/ambe_audio/
|
cp $currentdir/dmrlink.py /opt/dmrlink/ambe_audio/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/ambe_audio/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/ambe_audio/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/ambe_audio/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/ambe_audio/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/ambe_audio/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/ambe_audio.cfg /opt/dmrlink/ambe_audio/
|
cp $currentdir/ambe_audio.cfg /opt/dmrlink/ambe_audio/
|
||||||
cp /srv/DMRlink/ambe_audio.py /opt/dmrlink/ambe_audio/
|
cp $currentdir/ambe_audio.py /opt/dmrlink/ambe_audio/
|
||||||
cp /srv/DMRlink/ambe_audio_commands.txt /opt/dmrlink/ambe_audio/
|
cp $currentdir/ambe_audio_commands.txt /opt/dmrlink/ambe_audio/
|
||||||
cp /srv/DMRlink/template.bin /opt/dmrlink/ambe_audio/
|
cp $currentdir/template.bin /opt/dmrlink/ambe_audio/
|
||||||
|
|
||||||
# Bridge app
|
# Bridge app
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/bridge/
|
cp $currentdir/dmrlink.py /opt/dmrlink/bridge/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/bridge/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/bridge/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/bridge/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/bridge/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/bridge/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/bridge.py /opt/dmrlink/bridge/
|
cp $currentdir/bridge.py /opt/dmrlink/bridge/
|
||||||
cp /srv/DMRlink/bridge_rules_SAMPLE.py /opt/dmrlink/bridge/
|
cp $currentdir/bridge_rules_SAMPLE.py /opt/dmrlink/bridge/
|
||||||
cp /srv/DMRlink/known_bridges_SAMPLE.py /opt/dmrlink/bridge/
|
cp $currentdir/known_bridges_SAMPLE.py /opt/dmrlink/bridge/
|
||||||
cp /srv/DMRlink/sub_acl_SAMPLE.py /opt/dmrlink/bridge/
|
cp $currentdir/sub_acl_SAMPLE.py /opt/dmrlink/bridge/
|
||||||
|
|
||||||
# ConfBridge app
|
# ConfBridge app
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/confbridge/
|
cp $currentdir/dmrlink.py /opt/dmrlink/confbridge/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/confbridge/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/confbridge/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/confbridge/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/confbridge/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/confbridge/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/confbridge.py /opt/dmrlink/confbridge/
|
cp $currentdir/confbridge.py /opt/dmrlink/confbridge/
|
||||||
cp /srv/DMRlink/confbridge_rules_SAMPLE.py /opt/dmrlink/confbridge/
|
cp $currentdir/confbridge_rules_SAMPLE.py /opt/dmrlink/confbridge/
|
||||||
# Need these?
|
cp $currentdir/known_bridges_SAMPLE.py /opt/dmrlink/confbridge/
|
||||||
cp /srv/DMRlink/known_bridges_SAMPLE.py /opt/dmrlink/confbridge/
|
cp $currentdir/sub_acl_SAMPLE.py /opt/dmrlink/confbridge/
|
||||||
cp /srv/DMRlink/sub_acl_SAMPLE.py /opt/dmrlink/confbridge/
|
|
||||||
|
|
||||||
# Log app
|
# Log app
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/log/
|
cp $currentdir/dmrlink.py /opt/dmrlink/log/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/log/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/log/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/log/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/log/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/log/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/log.py /opt/dmrlink/log/
|
cp $currentdir/log.py /opt/dmrlink/log/
|
||||||
|
|
||||||
# Playback (Parrot)
|
# Playback (Parrot)
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/playback/
|
cp $currentdir/dmrlink.py /opt/dmrlink/playback/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/playback/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/playback/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/playback/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/playback/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/playback/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/playback.py /opt/dmrlink/playback/
|
cp $currentdir/playback.py /opt/dmrlink/playback/
|
||||||
cp /srv/DMRlink/playback_config_SAMPLE.py /opt/dmrlink/playback/
|
cp $currentdir/playback_config_SAMPLE.py /opt/dmrlink/playback/
|
||||||
|
|
||||||
# Play Group app
|
# Play Group app
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/play_group/
|
cp $currentdir/dmrlink.py /opt/dmrlink/play_group/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/play_group/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/play_group/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/play_group/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/play_group/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/play_group/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/play_group.py /opt/dmrlink/play_group/
|
cp $currentdir/play_group.py /opt/dmrlink/play_group/
|
||||||
|
|
||||||
# record app
|
# proxy app
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/record/
|
cp $currentdir/dmrlink.py /opt/dmrlink/proxy/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/record/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/proxy/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/record/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/record/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/record/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/record.py /opt/dmrlink/record/
|
cp $currentdir/proxy.py /opt/dmrlink/proxy/
|
||||||
|
cp $currentdir/known_bridges_SAMPLE.py /opt/dmrlink/proxy/
|
||||||
|
cp $currentdir/sub_acl_SAMPLE.py /opt/dmrlink/proxy/
|
||||||
|
|
||||||
# rcm app
|
# rcm app
|
||||||
cp /srv/DMRlink/dmrlink.py /opt/dmrlink/rcm/
|
cp $currentdir/dmrlink.py /opt/dmrlink/rcm/
|
||||||
cp /srv/DMRlink/dmrlink_config.py /opt/dmrlink/rcm/
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/rcm/
|
||||||
cp /srv/DMRlink/dmrlink_log.py /opt/dmrlink/rcm/
|
|
||||||
cp /srv/DMRlink/template.py /opt/dmrlink/rcm/
|
|
||||||
cp /srv/DMRlink/dmrlink_SAMPLE.cfg /opt/dmrlink/rcm/
|
|
||||||
#
|
#
|
||||||
cp /srv/DMRlink/rcm_db_log.py /opt/dmrlink/rcm/
|
cp $currentdir/rcm_db_log.py /opt/dmrlink/rcm/
|
||||||
cp /srv/DMRlink/rcm.py /opt/dmrlink/rcm/
|
cp $currentdir/rcm.py /opt/dmrlink/rcm/
|
||||||
cp /srv/DMRlink/pickle_stat_reader.py /opt/dmrlink/rcm/
|
|
||||||
|
|
||||||
|
# record app
|
||||||
|
cp $currentdir/dmrlink.py /opt/dmrlink/record/
|
||||||
|
cp $currentdir/dmrlink_SAMPLE.cfg /opt/dmrlink/record/
|
||||||
|
#
|
||||||
|
cp $currentdir/record.py /opt/dmrlink/record/
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user