#!/bin/bash cd / sudo cat > /bin/menu-update <<- "EOF" #!/bin/bash while : ; do choix=$(whiptail --title "Raspbian Proyect HP3ICC / update FDMR-Monitor OA4DOA" --menu "Nota Importante: antes de iniciar la actualizacion, el proceso de actualizacion borrara por completo todas las configuraciones, al finalizar la actualizacion el servicio se reinniciara automaticamente. " 17 50 4 \ 1 " Update FreeDMR " \ 2 " Update FDMR-Monitor " \ 3 " Menu Principal " 3>&1 1>&2 2>&3) exitstatus=$? #on recupere ce choix #exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your chosen option:" $choix else echo "You chose cancel."; break; fi # case : action en fonction du choix case $choix in 1) menu-up-fdm ;; 2) menu-up-fdmon ;; 3) break; esac done exit 0 EOF # sudo cat > /bin/menu-up-fdm <<- "EOF" #!/bin/bash while : ; do choix=$(whiptail --title "Raspbian Proyect HP3ICC / update FreeDMR" --menu "Nota Importante: debe debe agregar todos sus obp en la opcion numero uno, ( 1-Lista de OBP )antes de iniciar la actualizacion, el proceso de actualizacion borrara por completo la carpeta /opt/FreeDMR, al finalizar la actualizacion el servicio Freedmr se reinniciara automaticamente. " 18 55 5 \ 1 " List OBP " \ 2 " List Rules " \ 3 " shell extra " \ 4 " Iniciar Actualizacion FreeDMR " \ 5 " Menu Principal " 3>&1 1>&2 2>&3) exitstatus=$? #on recupere ce choix #exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your chosen option:" $choix else echo "You chose cancel."; break; fi # case : action en fonction du choix case $choix in 1) sudo nano /opt/obp.txt ;; 2) sudo nano /opt/rules.txt ;; 3) sudo nano /opt/extra-1.sh && chmod +x /opt/extra* ;; 4) sh /opt/fdmr-update.sh ;; 5) break; esac done exit 0 EOF # # sudo cat > /bin/menu-up-fdmon <<- "EOF" #!/bin/bash while : ; do choix=$(whiptail --title "Raspbian Proyect HP3ICC / update FDMR-Monitor OA4DOA" --menu "Nota Importante: antes de iniciar la actualizacion, el proceso de actualizacion borrara por completo todas las configuraciones, al finalizar la actualizacion el servicio se reinniciara automaticamente. " 17 50 4 \ 1 " shell extra " \ 2 " Iniciar Actualizacion FDMR-Monitor " \ 3 " Menu Principal " 3>&1 1>&2 2>&3) exitstatus=$? #on recupere ce choix #exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your chosen option:" $choix else echo "You chose cancel."; break; fi # case : action en fonction du choix case $choix in 1) sudo nano /opt/extra-2.sh && chmod +x /opt/extra* ;; 2) sh /opt/monitor-update.sh ;; 3) break; esac done exit 0 EOF ######################################### FreeDMR Update ############################################################### sudo cat > /opt/conf.txt <<- "EOFA1" [D-APRS] MODE: MASTER ENABLED: True REPEAT: False MAX_PEERS: 1 EXPORT_AMBE: False IP: PORT: 52555 PASSPHRASE: GROUP_HANGTIME: 0 USE_ACL: True REG_ACL: DENY:1 SUB_ACL: DENY:1 TGID_TS1_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL DEFAULT_UA_TIMER: 10 SINGLE_MODE: False VOICE_IDENT: False TS1_STATIC: TS2_STATIC: DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: es_ES GENERATOR: 2 ALLOW_UNREG_ID: True PROXY_CONTROL: False OVERRIDE_IDENT_TG: [EchoTest] MODE: PEER ENABLED: True LOOSE: True EXPORT_AMBE: False IP: #127.0.0.1 PORT: 49060 MASTER_IP: 127.0.0.1 MASTER_PORT: 49061 PASSPHRASE: passw0rd CALLSIGN: ECHOTEST RADIO_ID: 9990 RX_FREQ: 449000000 TX_FREQ: 444000000 TX_POWER: 25 COLORCODE: 1 SLOTS: 3 LATITUDE: 38.0000 LONGITUDE: -095.0000 HEIGHT: 75 LOCATION: Local Parrot DESCRIPTION: This is a cool repeater URL: www.w1abc.org SOFTWARE_ID: 20170620 PACKAGE_ID: MMDVM_HBlink GROUP_HANGTIME: 3 OPTIONS: #TS2=9990;DIAL=0;VOICE=0;TIMER=0 USE_ACL: True SUB_ACL: DENY:1 TGID_TS1_ACL: DENY:ALL TGID_TS2_ACL: PERMIT:9990 TS1_STATIC: TS2_STATIC:9990 DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: en_GB GENERATOR: 0 DEFAULT_UA_TIMER: 999 SINGLE_MODE: True VOICE_IDENT: False EOFA1 ## sudo cat > /opt/fdmr-update.sh <<- "EOF" #!/bin/bash variable=$(grep "SERVER_ID:" /opt/FreeDMR/config/FreeDMR.cfg | grep -Eo '[0-9]{1,9}') if [ -z "$variable" ] then variable=0000 fi sudo systemctl stop freedmr.service sudo systemctl stop proxy.service sudo systemctl stop fdmrparrot.service rm -r /opt/FreeDMR cd /opt git clone https://gitlab.hacknix.net/hacknix/FreeDMR.git sudo rm /opt/FreeDMR/hotspot_proxy_v2.py cd FreeDMR mkdir config mkdir /var/log/FreeDMR chmod +x /opt/FreeDMR/install.sh ./install.sh # cp /opt/FreeDMR/FreeDMR-SAMPLE.cfg /opt/FreeDMR-SAMPLE.cfg cd /opt/ sudo cat FreeDMR-SAMPLE.cfg conf.txt obp.txt >> /opt/FreeDMR/config/FreeDMR.cfg sudo sed -i 's/file-timed/console-timed/' /opt/FreeDMR/config/FreeDMR.cfg sudo sed -i 's/INFO/DEBUG/' /opt/FreeDMR/config/FreeDMR.cfg sudo sed -i 's/freedmr.log/\/var\/log\/FreeDMR\/FreeDMR.log/' /opt/FreeDMR/config/FreeDMR.cfg sudo sed -i 's/ANNOUNCEMENT_LANGUAGE: en_GB/ANNOUNCEMENT_LANGUAGE: CW/' /opt/FreeDMR/config/FreeDMR.cfg #sudo sed -i "s/TGID_URL:/#TGID_URL:/g" /opt/FreeDMR/config/FreeDMR.cfg #sed '37 a TGID_URL: https://freedmr.cymru/talkgroups/talkgroup_ids_json.php' -i /opt/FreeDMR/config/FreeDMR.cfg sudo sed -i "s/SERVER_ID: .*/SERVER_ID: $variable/g" /opt/FreeDMR/config/FreeDMR.cfg rm /opt/conf.txt rm /opt/FreeDMR-SAMPLE.cfg cd /opt/FreeDMR/ mv loro.cfg /opt/FreeDMR/playback.cfg sudo sed -i 's/54915/49061/' /opt/FreeDMR/playback.cfg sudo cat /opt/rules.txt >> /opt/FreeDMR/config/rules.py sudo chmod +x /opt/FreeDMR/config/* cp /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py /opt/FreeDMR/hotspot_proxy_v2.py cp /opt/FDMR-Monitor/proxy/proxy.cfg /opt/FreeDMR/proxy.cfg cp /opt/FDMR-Monitor/proxy/proxy_db.py /opt/FreeDMR/proxy_db.py sudo chmod +x /opt/FreeDMR/*.py sudo chmod +x /opt/FreeDMR/config/*.py sh /opt/extra-1.sh sudo systemctl daemon-reload sudo systemctl start proxy.service sudo systemctl start freedmr.service sudo systemctl start fdmrparrot.service sudo systemctl restart fdmr_mon.service ###### EOF ######################################### FDMR-Monitor Update ############################################################### sudo cat > monitor-update.sh <<- "EOFB1" #!/bin/bash variable1=$(grep "REPORT_NAME =" /opt/FDMR-Monitor/fdmr-mon.cfg) variable2=$(grep "THEME_COLOR =" /opt/FDMR-Monitor/fdmr-mon.cfg) variable3=$(grep "COLOR_TEXT =" /opt/FDMR-Monitor/fdmr-mon.cfg) variable4=$(grep "COLOR_1 =" /opt/FDMR-Monitor/fdmr-mon.cfg) variable5=$(grep "COLOR_2 =" /opt/FDMR-Monitor/fdmr-mon.cfg) sudo systemctl stop fdmr_mon.service sudo systemctl stop proxy.service if [ -d "/var/www/fdmr" ]; then rm -r /var/www/fdmr/ #echo "found file" else echo "file not found" fi if [ -d "/opt/FDMR-Monitor" ] then rm -r /opt/FDMR-Monitor #echo "found file" fi ## #FDMR-Monitor cd /opt sudo git clone https://github.com/yuvelq/FDMR-Monitor.git cd FDMR-Monitor sudo git checkout Self_Service sudo chmod +x install.sh sudo sed -i 's/RELOAD_TIME = 15/RELOAD_TIME = 1/' /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sudo sed -i 's/FREQUENCY = 10/FREQUENCY = 120/' /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sudo chmod 644 /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sed '33 a ' -i /opt/FDMR-Monitor/html/sysinfo.php #### sudo sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/html/*.* sudo sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/sysinfo/*.* #### sudo sed -i 's/localhost_2-day.png/localhost_1-day.png/' /opt/FDMR-Monitor/html/sysinfo.php sudo sed -i "s/HBMonv2/FDMR-Monitor/g" /opt/FDMR-Monitor/sysinfo/*.sh sudo chmod +x /opt/FDMR-Monitor/sysinfo/cpu.sh sudo chmod +x /opt/FDMR-Monitor/sysinfo/graph.sh sudo chmod +x /opt/FDMR-Monitor/sysinfo/rrd-db.sh sudo sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sudo sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sudo sed -i "s/PRIVATE_NETWORK = True/PRIVATE_NETWORK = False/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg #sudo sed -i "s/TGID_URL =/#TGID_URL =/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg #sed '63 a #TGID_URL = https://freedmr.cymru/talkgroups/talkgroup_ids_json.php' -i /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg #sed '64 a #TGID_URL = https://freedmr.cymru/talkgroups/talkgroup_ids_flags_json.php' -i /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg cd /opt/FDMR-Monitor/ #sudo rm /opt/FDMR-Monitor/install.sh ################ sudo apt-get install rrdtool -y sudo sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/html/*.* sudo sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/sysinfo/*.* # Install the required support programs pip3 install -r requirements.txt pip install pyopenssl --upgrade cd /opt/FDMR-Monitor/ cp /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg /opt/FDMR-Monitor/fdmr-mon.cfg ############################### sudo sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sudo sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sudo sed -i "s/\/freedmr.cfg/\/config\/FreeDMR.cfg/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sudo sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/proxy/proxy_db.py sudo sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/proxy/proxy_db.py sudo sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/proxy/proxy.cfg sudo sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/proxy/proxy.cfg ################# cp /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py /opt/FreeDMR/hotspot_proxy_v2.py cp /opt/FDMR-Monitor/proxy/proxy.cfg /opt/FreeDMR/proxy.cfg cp /opt/FDMR-Monitor/proxy/proxy_db.py /opt/FreeDMR/proxy_db.py wget https://www.freedmr.uk/wp-content/uploads/2021/04/favicon.ico -O /opt/FDMR-Monitor/html/favicon.ico sed '6 a ' -i /opt/FDMR-Monitor/html/index.php wget https://www.freedmr.uk/wp-content/uploads/2021/04/Free_DMR_logo_250x141_72.png -O /opt/FDMR-Monitor/html/img/logo.png # sudo cat > /opt/FDMR-Monitor/html/buttons.php <<- "EOF" Home   EOF # mkdir /var/www/fdmr/ cp -r /opt/FDMR-Monitor/html/* /var/www/fdmr/ sudo chown www-data:www-data /var/www/fdmr/ -R cp /opt/FDMR-Monitor/utils/logrotate/fdmr_mon /etc/logrotate.d/ cat > /opt/FDMR-Monitor/templates/main_table.html <<- "EOF"
 .: Server Activity :.  {% if _table['MASTERS']|length >0 %} {% for _master in _table['MASTERS'] %} {% for _client, _cdata in _table['MASTERS'][_master]['PEERS'].items() %} {% if _cdata[1]['TS'] == True or _cdata[2]['TS'] == True %} {% if _cdata[1]['TRX'] == "RX" %} {% endif %} {% if _cdata[2]['TRX'] == "RX" %} {% endif %} {% endif %} {% endfor %} {% endfor %} {% else %}
Systems M&P Source Destination
M: {{_master}} {{ _cdata[1]['SUB']|safe }} [TS {{ 1 if _cdata[1]['TS'] == True else 2 }}] {{ _cdata[1]['DEST']|safe }}M: {{_master}} {{ _cdata[2]['SUB']|safe }} [TS {{ 1 if _cdata[1]['TS'] == True else 2 }}] {{ _cdata[2]['DEST']|safe }}
Waiting for Data from FreeDMR Server ...
{% endif %} {% for _peer, _pdata in _table['PEERS'].items() %} {% if _pdata[1]['TS'] == True or _pdata[2]['TS'] == True %} {% if _pdata[1]['TRX'] == "RX" %} P: {{_peer}} {{ _pdata[1]['SUB']|safe }} [TS {{ 1 if _pdata[1]['TS'] == True else 2 }}] {{ _cdata[1]['DEST']|safe }} {% endif %} {% if _pdata[2]['TRX'] == "RX" %} P: {{_peer}} {{ _pdata[2]['SUB']|safe }} [TS {{ 1 if _pdata[1]['TS'] == True else 2 }}] {{ _pdata[2]['DEST']|safe }} {% endif %} {% endif %} {% endfor %}
{% if _table['OPENBRIDGES']|length >0 %} Systems OpenBridge Active Incoming Calls {% for _openbridge in _table['OPENBRIDGES'] %} {% set rx = namespace(value=0) %} {% if _table['OPENBRIDGES'][_openbridge]['STREAMS']|length >0 %} {% for entry in _table['OPENBRIDGES'][_openbridge]['STREAMS'] if _table['OPENBRIDGES'][_openbridge]['STREAMS'][entry][0]=='RX' %} {% set rx.value=1 %} {% endfor %} {% if rx.value == 1 %} {{ _openbridge}} {% for entry in _table['OPENBRIDGES'][_openbridge]['STREAMS'] if _table['OPENBRIDGES'][_openbridge]['STREAMS'][entry][0] == 'RX' %}[{{ _table['OPENBRIDGES'][_openbridge]['STREAMS'][entry][0] }}: {{ _table['OPENBRIDGES'][_openbridge]['STREAMS'][entry][1] }} >> {{ _table['OPENBRIDGES'][_openbridge]['STREAMS'][entry][2] }}]  {% endfor %} {% endif %} {% endif %} {% endfor %} {% endif %}
{% if _table['SETUP']['LASTHEARD'] == True %}
.: Lastheard :. {% for itm in lastheard %} {% if not itm[7] %} {% else %} {% endif %} {% endfor %}
Date Time Callsign (DMR-Id) Name TG# TG Name TX (s) System
{{ itm[0][:10] }} {{ itm[0][11:] }}{{ itm[6] }} {{ itm[7][0] }} ({{ itm[6] }}) {{ itm[7][1] }}{{ itm[4] }} {{ '' if not itm[5] else itm[5]|safe }} {{ 'DATA' if not itm[1] else itm[1]|int }} {{ itm[3] }}
{% endif %}
.: Connected to Server :.
{% if _table['MASTERS']|length >0 %}
  LINKS:
{% for _master in _table['MASTERS'] %} {% if _table['MASTERS'][_master]['PEERS']|length >0 %} {% for _client, _cdata in _table['MASTERS'][_master]['PEERS'].items() %} {{_cdata['CALLSIGN']}}    DMR ID: {{ _client }}
{% if _cdata['RX_FREQ'] == 'N/A' and _cdata['TX_FREQ'] == 'N/A' %}    Type: IP Network
{% else %}    Type: Radio ({{ _cdata['SLOTS'] }})
{% endif %}    Hardware: {{_cdata['PACKAGE_ID'] }}
   Soft_Ver: {{_cdata['SOFTWARE_ID'] }}
   Info: {{_cdata['LOCATION']}}
   Master: {{_master}}
  {% endfor %} {% endif %} {% endfor %}
{% endif %} {% if _table['PEERS']|length >0 %}

PEERS:

{% for _peer, _pdata in _table['PEERS'].items() %}   {{_pdata['CALLSIGN']}}   {% if _table['PEERS'][_peer]['STATS']['CONNECTION'] == 'YES' %} Connected {% else %} Disconnected {% endif %}
{% endfor %}
{% endif %}
EOF # sudo sed -i "s/Copyright (c) 2016-.*/Copyright (c) \"2016\") {\$cdate=\"2016-\".date(\"Y\");} echo \$cdate; ?>
/g" /var/www/fdmr/*.php sudo sed -i "s/meta name=\"description.*/meta name=\"description\" content=\"Copyright (c) 2016-22.The Regents of the K0USY Group. All rights reserved. Version OA4DOA 2022 (v270422)\">/g" /var/www/fdmr/*.php sudo sed -i '166 s/hotpink/#ad02fd/g' /var/www/fdmr/css/styles.php sudo sed -i '217 s/color:white/color:black/' /var/www/fdmr/css/styles.php sudo sed -i "251d" /var/www/fdmr/css/styles.php sed '250 a ' -i /var/www/fdmr/css/styles.php sed '21 a # For custom color, select: pro' -i /opt/FDMR-Monitor/fdmr-mon.cfg sed '24 a COLOR_TEXT = #fff519' -i /opt/FDMR-Monitor/fdmr-mon.cfg sed '25 a COLOR_1 = #000080' -i /opt/FDMR-Monitor/fdmr-mon.cfg sed '26 a COLOR_2 = #193dff' -i /opt/FDMR-Monitor/fdmr-mon.cfg #sed '27 a COLOR_BACKGROUND = 5a5958' -i /opt/FDMR-Monitor/fdmr-mon.cfg sed '45 a $cd1 = strtolower($config["GLOBAL"]["COLOR_1"]);' -i /var/www/fdmr/include/config.php sed '46 a $cd2 = strtolower($config["GLOBAL"]["COLOR_2"]);' -i /var/www/fdmr/include/config.php sed '47 a $cd3 = strtolower($config["GLOBAL"]["COLOR_TEXT"]);' -i /var/www/fdmr/include/config.php sed '48 a $cd3 = strtolower($config["GLOBAL"]["COLOR_TEXT"]);' -i /var/www/fdmr/include/config.php sed '49 a $cd4 = strtolower($config["GLOBAL"]["COLOR_BACKGROUND"]);' -i /var/www/fdmr/include/config.php sed '66 a } elseif ($theme == "pro") {' -i /var/www/fdmr/include/config.php sed '67 a $tc = "background-image: linear-gradient(to bottom, $cd1 0%, $cd2 100%);color:$cd3;";' -i /var/www/fdmr/include/config.php sudo sed -i "s/THEME_COLOR = .*/THEME_COLOR = pro/g" /opt/FDMR-Monitor/fdmr-mon.cfg #sudo sed -i "s/PEER_URL = .*/PEER_URL = https:\/\/freedmr-lh.gb7fr.org.uk\/json\/peer_ids.json/g" /opt/FDMR-Monitor/fdmr-mon.cfg #sudo sed -i "s/SUBSCRIBER_URL = .*/SUBSCRIBER_URL = https:\/\/freedmr-lh.gb7fr.org.uk\/json\/subscriber_ids.json/g" /opt/FDMR-Monitor/fdmr-mon.cfg sudo sed -i "s/TGID_URL = .*/TGID_URL = https:\/\/freedmr.cymru\/talkgroups\/talkgroup_ids_json.php/g" /opt/FDMR-Monitor/fdmr-mon.cfg python3 mon_db.py --create python3 mon_db.py --update systemctl stop apache2 systemctl disable apache2 ##################### sudo sed -i "s/All rights reserved.
.*/All rights reserved.
\"2018\") {\$cdate=\"2018-\".date(\"Y\");} echo \$cdate; ?>\" target=\"_blank\" href=https:\/\/gitlab.com\/hp3icc\/FDMR\/>Proyect: FDMR+<\/a>
/g" /var/www/fdmr/*.php chmod +x /opt/FDMR-Monitor/sysinfo/* sh /opt/FDMR-Monitor/sysinfo/rrd-db.sh sh /opt/extra-2.sh systemctl start fdmr_mon.service systemctl start proxy.service EOFB1 ########################################## End Update Files ############################################################## sudo chmod +x /opt/fdmr-update.sh sudo chmod +x /opt/monitor-update.sh sudo chmod +x /bin/menu* menu-update