#!/bin/bash cd / # sudo cat > /bin/menu-fdmr <<- "EOF" #!/bin/bash if [[ $EUID -ne 0 ]]; then whiptail --title "sudo su" --msgbox "requiere ser usuario root , escriba (sudo su) antes de entrar a menu / requires root user, type (sudo su) before entering menu" 0 50 exit 0 fi while : ; do choix=$(whiptail --title "Raspbian Proyect HP3ICC FDMR+" --menu "move up or down with the keyboard arrows and select your option by pressing enter:" 23 56 13 \ 1 " Edit FreeDMR Server " \ 2 " Edit Interlink " \ 3 " Edit FDMR-Monitor " \ 4 " Edit Port HTTP " \ 5 " Start-Restart FreeDMR Server " \ 6 " Start-Restart FDMR-Monitor " \ 7 " Stop FreeDMR SERVER " \ 8 " Stop FDMR-Monitor " \ 9 " D-APRS " \ 10 " Menu update " 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/FreeDMR/config/FreeDMR.cfg ;; 2) sudo nano /opt/FreeDMR/config/rules.py ;; 3) sudo nano /opt/FDMR-Monitor/fdmr-mon.cfg ;; 4) sudo nano /lib/systemd/system/http.server-fdmr.service && systemctl daemon-reload && systemctl restart http.server-fdmr.service ;; 5) sudo systemctl start mariadb.service sudo systemctl enable mariadb.service sudo systemctl stop fdmrparrot.service sudo systemctl start fdmrparrot.service sudo systemctl enable fdmrparrot.service sudo systemctl stop proxy.service sudo systemctl start proxy.service sudo systemctl enable proxy.service sudo systemctl stop freedmr.service sudo systemctl start freedmr.service sudo systemctl enable freedmr.service ;; 6) cronedit.sh '*/5 * * * *' 'sh /opt/FDMR-Monitor/sysinfo/graph.sh' add cronedit.sh '*/2 * * * *' 'sh /opt/FDMR-Monitor/sysinfo/cpu.sh' add sudo systemctl start mariadb.service sudo systemctl enable mariadb.service sudo systemctl stop fdmr_mon.service sudo systemctl start fdmr_mon.service sudo systemctl enable fdmr_mon.service sudo systemctl stop http.server-fdmr.service sudo systemctl start http.server-fdmr.service sudo systemctl enable http.server-fdmr.service;; 7) sudo systemctl stop fdmrparrot.service sudo systemctl disable fdmrparrot.service sudo systemctl stop proxy.service sudo systemctl disable proxy.service sudo systemctl stop freedmr.service sudo systemctl disable freedmr.service sudo systemctl stop mariadb.service sudo systemctl disable mariadb.service ;; 8) cronedit.sh '*/5 * * * *' 'sh /opt/FDMR-Monitor/sysinfo/graph.sh' remove cronedit.sh '*/2 * * * *' 'sh /opt/FDMR-Monitor/sysinfo/cpu.sh' remove sudo systemctl stop fdmr_mon.service sudo systemctl stop http.server-fdmr.service sudo systemctl disable fdmr_mon.service sudo systemctl disable http.server-fdmr.service;; 9) menu-igate ;; 10) bash -c "$(curl -fsSL https://gitlab.com/hp3icc/fdmr/-/raw/main/update.sh)"; esac done exit 0 EOF ### chmod +x /bin/menu* #### if [ -d "/opt/D-APRS" ] then echo "found file" else bash -c "$(curl -fsSL https://raw.githubusercontent.com/hp3icc/D-APRS/main/emq-daprs.sh)" fi #### sudo cat > /bin/menu-update <<- "EOF" #!/bin/bash if [[ $EUID -ne 0 ]]; then whiptail --title "sudo su" --msgbox "requiere ser usuario root , escriba (sudo su) antes de entrar a menu / requires root user, type (sudo su) before entering menu" 0 50 exit 0 fi 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 if [[ $EUID -ne 0 ]]; then whiptail --title "sudo su" --msgbox "requiere ser usuario root , escriba (sudo su) antes de entrar a menu / requires root user, type (sudo su) before entering menu" 0 50 exit 0 fi 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 if [[ $EUID -ne 0 ]]; then whiptail --title "sudo su" --msgbox "requiere ser usuario root , escriba (sudo su) antes de entrar a menu / requires root user, type (sudo su) before entering menu" 0 50 exit 0 fi 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 <<- "EOFD1" #!/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 ################## #Service sudo cat > /lib/systemd/system/proxy.service <<- "EOF" [Unit] Description= Proxy Service After=multi-user.target [Service] #User=root #Type=simple #Restart=always #RestartSec=3 #StandardOutput=null ExecStart=/usr/bin/python3 /opt/FreeDMR/hotspot_proxy_v2.py -c /opt/FreeDMR/proxy.cfg Restart=on-failure [Install] WantedBy=multi-user.target EOF ######### sudo cat > /lib/systemd/system/freedmr.service <<- "EOF" [Unit] Description=FreeDmr After=multi-user.target [Service] #User=root #Type=simple #Restart=always #RestartSec=3 #StandardOutput=null ExecStart=/usr/bin/python3 /opt/FreeDMR/bridge_master.py -c /opt/FreeDMR/config/FreeDMR.cfg -r /opt/FreeDMR/config/rules.py Restart=on-failure [Install] WantedBy=multi-user.target EOF ### sudo cat > /lib/systemd/system/fdmrparrot.service <<- "EOF" [Unit] Description=Freedmr Parrot After=network-online.target syslog.target Wants=network-online.target [Service] #StandardOutput=null WorkingDirectory=/opt/FreeDMR #RestartSec=3 ExecStart=/usr/bin/python3 /opt/FreeDMR/playback.py -c /opt/FreeDMR/playback.cfg #Restart=on-abort Restart=on-failure [Install] WantedBy=multi-user.target EOF # 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 # if [ "$(cat /opt/FreeDMR/FreeDMR-SAMPLE.cfg | grep 'TOPO_FILE')" != "" ]; then sed -i 's/TOPO_FILE:.*/TOPO_FILE: topography.json/' /opt/FreeDMR/FreeDMR-SAMPLE.cfg else sed '45 a TOPO_FILE: topography.json' -i /opt/FreeDMR/FreeDMR-SAMPLE.cfg fi sed -i "s/ANNOUNCEMENT_LANGUAGE:.*/ANNOUNCEMENT_LANGUAGE: es_ES/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg sed -i "s/SINGLE_MODE:.*/SINGLE_MODE: False/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg sed -i "s/VOICE_IDENT:.*/VOICE_IDENT: False/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg sed -i "s/VALIDATE_SERVER_IDS:.*/VALIDATE_SERVER_IDS: False/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg sed -i "s/ALLOW_UNREG_ID:.*/ALLOW_UNREG_ID: True/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg sed -i "s/PROXY_CONTROL:.*/PROXY_CONTROL: False/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg sed -i "s/54000/56000/g" /opt/FreeDMR/FreeDMR-SAMPLE.cfg 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 sed -i 's/file-timed/console-timed/' /opt/FreeDMR/config/FreeDMR.cfg sed -i 's/INFO/DEBUG/' /opt/FreeDMR/config/FreeDMR.cfg sed -i 's/freedmr.log/\/var\/log\/FreeDMR\/FreeDMR.log/' /opt/FreeDMR/config/FreeDMR.cfg #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 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 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 ###### EOFD1 ######################################### FDMR-Monitor Update ############################################################### sudo cat > /opt/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 sudo systemctl stop http.server-fdmr.service ############################################################## # service update ############################################################ cat > /lib/systemd/system/fdmr_mon.service <<- "EOF" [Unit] Description=FDMR Monitor # To make the network-online.target available # systemctl enable systemd-networkd-wait-online.service #After=network-online.target syslog.target #Wants=network-online.target [Service] #User=root #Type=simple #Restart=always #RestartSec=3 #StandardOutput=null WorkingDirectory=/opt/FDMR-Monitor ExecStart=python3 /opt/FDMR-Monitor/monitor.py #Restart=on-abort Restart=on-failure [Install] WantedBy=multi-user.target EOF # 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 sed -i 's/RELOAD_TIME = 15/RELOAD_TIME = 1/' /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg 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 #### sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/html/*.* sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/sysinfo/*.* sed -i "s/1100/1200/g" /opt/FDMR-Monitor/html/*.* sed -i "s/1100/1200/g" /opt/FDMR-Monitor/html/css/*.* sed -i "s/1100/1200/g" /opt/FDMR-Monitor/templates/*.* sed -i 's/b1eee9/3bb43d/' /opt/FDMR-Monitor/html/css/*.* #### sed -i 's/localhost_2-day.png/localhost_1-day.png/' /opt/FDMR-Monitor/html/sysinfo.php 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 sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg sed -i "s/PRIVATE_NETWORK = True/PRIVATE_NETWORK = False/g" /opt/FDMR-Monitor/fdmr-mon_SAMPLE.cfg cd /opt/FDMR-Monitor/ #sudo rm /opt/FDMR-Monitor/install.sh ################ sudo apt-get install rrdtool -y sed -i "s/www\/html/www\/fdmr/g" /opt/FDMR-Monitor/html/*.* 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 ############################### sed -i "s/PEER_URL =.*/PEER_URL = https:\/\/freedmr-lh.gb7fr.org.uk\/json\/peer_ids.json/g" /opt/FDMR-Monitor/fdmr-mon.cfg sed -i "s/SUBSCRIBER_URL =.*/SUBSCRIBER_URL = http:\/\/datafiles.ddns.net:8888\/user.csv/g" /opt/FDMR-Monitor/fdmr-mon.cfg sed -i "s/SUBSCRIBER_FILE =.*/SUBSCRIBER_FILE = user.csv/g" /opt/FDMR-Monitor/fdmr-mon.cfg sed -i "s/TGID_URL =.*/TGID_URL = https:\/\/freedmr-lh.gb7fr.org.uk\/json\/talkgroup_ids.json/g" /opt/FDMR-Monitor/fdmr-mon.cfg sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sed -i "s/\/freedmr.cfg/\/config\/FreeDMR.cfg/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/proxy/proxy_db.py sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/proxy/proxy_db.py sed -i "s/root/emqte1/g" /opt/FDMR-Monitor/proxy/proxy.cfg sed -i "s/test/selfcare/g" /opt/FDMR-Monitor/proxy/proxy.cfg sed -i "s/54000/56000/g" /opt/FDMR-Monitor/proxy/proxy_db.py sed -i "s/54000/56000/g" /opt/FDMR-Monitor/proxy/proxy.cfg sed -i "s/54100/56100/g" /opt/FDMR-Monitor/proxy/proxy_db.py sed -i "s/54100/56100/g" /opt/FDMR-Monitor/proxy/proxy.cfg sed -i "s/54000/56000/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py sed -i "s/54100/56100/g" /opt/FDMR-Monitor/proxy/hotspot_proxy_v2.py ################# 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