mirror of
https://github.com/femtofox/femtofox.git
synced 2026-10-25 18:40:20 -04:00
Merge pull request #383 from femtofox/settings_overhaul_control
Prevent conflicts between Control for Meshtastic and running BBS applications
This commit is contained in:
commit
1eaab50281
7 changed files with 46 additions and 8 deletions
|
|
@ -50,6 +50,9 @@ systemctl enable ttyd
|
||||||
|
|
||||||
echo "Cloning Control for Meshtastic by pdxlocations"
|
echo "Cloning Control for Meshtastic by pdxlocations"
|
||||||
git clone https://github.com/pdxlocations/control.git /opt/control
|
git clone https://github.com/pdxlocations/control.git /opt/control
|
||||||
|
pip install -r /opt/control/requirements.txt
|
||||||
|
chown -R femto /opt/control
|
||||||
|
git config --global --add safe.directory /opt/control # prevents git error when updating
|
||||||
|
|
||||||
echo "Setting MOTD..."
|
echo "Setting MOTD..."
|
||||||
mv /etc/update-motd.d/10-help-text /etc/update-motd.d/10-help-text.bak
|
mv /etc/update-motd.d/10-help-text /etc/update-motd.d/10-help-text.bak
|
||||||
|
|
|
||||||
|
|
@ -532,8 +532,10 @@ meshtastic_settings() {
|
||||||
;;
|
;;
|
||||||
5) # Meshtastic settings)
|
5) # Meshtastic settings)
|
||||||
check_meshtasticd_running && (
|
check_meshtasticd_running && (
|
||||||
dialog --no-collapse --infobox "Loading Meshtastic settings menu...\n\nThis can take up to a minute." 6 45
|
dialog --no-collapse --infobox "Loading Meshtastic settings menu...\n\nStopping conflicting services, will restart after exit...\n\nThis can take up to a minute." 9 50
|
||||||
|
femto-utils.sh -A stop
|
||||||
python /opt/control/main.py --host
|
python /opt/control/main.py --host
|
||||||
|
femto-utils.sh -A start
|
||||||
)
|
)
|
||||||
;;
|
;;
|
||||||
6) #test mesh connectivity)
|
6) #test mesh connectivity)
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,10 @@ wizard() {
|
||||||
;;
|
;;
|
||||||
5) # Full Meshtastic settings menu)
|
5) # Full Meshtastic settings menu)
|
||||||
femto-config -c && (
|
femto-config -c && (
|
||||||
dialog --no-collapse --infobox "Loading Meshtastic settings menu...\n\nThis can take up to a minute." 6 45
|
dialog --no-collapse --infobox "Loading Meshtastic settings menu...\n\nStopping conflicting services, will restart after exit...\n\nThis can take up to a minute." 9 50
|
||||||
|
femto-utils.sh -A stop
|
||||||
python /opt/control/main.py --host
|
python /opt/control/main.py --host
|
||||||
|
femto-utils.sh -A start
|
||||||
)
|
)
|
||||||
;;
|
;;
|
||||||
6) # return to previous menu)
|
6) # return to previous menu)
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ Options are:
|
||||||
-E Generate/overwrite SSH encryption keys
|
-E Generate/overwrite SSH encryption keys
|
||||||
-C "service" Check if service is enabled, disabled, running
|
-C "service" Check if service is enabled, disabled, running
|
||||||
-R "command" Replace colors for dialog menus
|
-R "command" Replace colors for dialog menus
|
||||||
|
-A "stop" Stop/start services that are using the meshtastic API so the Control for Meshtastic settings UI can run without interference. Options: "stop" "start"
|
||||||
-v Get Foxbuntu version
|
-v Get Foxbuntu version
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
@ -222,7 +223,7 @@ replace_colors() {
|
||||||
echo "$input"
|
echo "$input"
|
||||||
}
|
}
|
||||||
|
|
||||||
while getopts ":harsl:ipcnoSEC:R:v" opt; do
|
while getopts ":harsl:ipcnoSEC:R:A:v" opt; do
|
||||||
case ${opt} in
|
case ${opt} in
|
||||||
h) # Option -h (help)
|
h) # Option -h (help)
|
||||||
echo -e "$help"
|
echo -e "$help"
|
||||||
|
|
@ -285,6 +286,36 @@ while getopts ":harsl:ipcnoSEC:R:v" opt; do
|
||||||
R) # replace colors)
|
R) # replace colors)
|
||||||
replace_colors "$OPTARG"
|
replace_colors "$OPTARG"
|
||||||
;;
|
;;
|
||||||
|
A) # Stop/start services that are using the meshtastic API)
|
||||||
|
# this code cycles through all the software packages and looks for ones that are installed, conflict with Control and have a service that is enabled. If it finds such a software package, it either stops or starts it, according to $OPTARG
|
||||||
|
if [[ $OPTARG == "stop" ]]; then
|
||||||
|
action_text="Stopping"
|
||||||
|
action="s"
|
||||||
|
elif [[ $OPTARG == "start" ]]; then
|
||||||
|
action_text="Starting"
|
||||||
|
action="r"
|
||||||
|
else
|
||||||
|
echo "\`$OPTARG\` is not a valid argument for -A. Options are \"stop\" and \"start\"."
|
||||||
|
echo -e "$help"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for file in /usr/local/bin/packages/*.sh; do
|
||||||
|
filename=$(basename "$file")
|
||||||
|
|
||||||
|
[[ "$filename" == femto_* ]] && continue # Skip files starting with "femto_"
|
||||||
|
|
||||||
|
if sudo "$file" -I; then
|
||||||
|
if echo "$(sudo "$file" -C)" | grep -q "\"full control\" Meshtastic software"; then
|
||||||
|
service_state=$(sudo femto-utils.sh -C "$(sudo $file -E)")
|
||||||
|
if [[ $service_state =~ "enabled" ]] ; then
|
||||||
|
echo "$action_text $(sudo $file -N) service..."
|
||||||
|
eval "sudo $file -$action"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
v) # get foxbuntu version)
|
v) # get foxbuntu version)
|
||||||
echo "Foxbuntu v$(grep -oP 'major=\K[0-9]+' /etc/foxbuntu-release).$(grep -oP 'minor=\K[0-9]+' /etc/foxbuntu-release).$(grep -oP 'patch=\K[0-9]+' /etc/foxbuntu-release)$(grep -oP 'hotfix=\K\S+' /etc/foxbuntu-release)"
|
echo "Foxbuntu v$(grep -oP 'major=\K[0-9]+' /etc/foxbuntu-release).$(grep -oP 'minor=\K[0-9]+' /etc/foxbuntu-release).$(grep -oP 'patch=\K[0-9]+' /etc/foxbuntu-release)$(grep -oP 'hotfix=\K\S+' /etc/foxbuntu-release)"
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,13 @@ name="Control for Meshtastic" # software name
|
||||||
author="pdxlocations" # software author - OPTIONAL
|
author="pdxlocations" # software author - OPTIONAL
|
||||||
description="Control for Meshtastic is a fully-featured Meshtastic configuration tool made for running in console, utilizing Curses.\n\nControl is installed by default on Femtofox and is used for Meshtastic configuration in femto-config. Uninstallation is not recommended." # software description - OPTIONAL (but strongly recommended!)
|
description="Control for Meshtastic is a fully-featured Meshtastic configuration tool made for running in console, utilizing Curses.\n\nControl is installed by default on Femtofox and is used for Meshtastic configuration in femto-config. Uninstallation is not recommended." # software description - OPTIONAL (but strongly recommended!)
|
||||||
URL="https://github.com/pdxlocations/control" # software URL. Can contain multiple URLs - OPTIONAL
|
URL="https://github.com/pdxlocations/control" # software URL. Can contain multiple URLs - OPTIONAL
|
||||||
options="hxiuglNADUOLGTI" # script options in use by software package. For example, for a package with no service, exclude `edsrS`
|
options="hxiuglNADUOLGTIC" # script options in use by software package. For example, for a package with no service, exclude `edsrS`
|
||||||
launch="python /opt/control/main.py --host" # command to launch software, if applicable
|
launch="python /opt/control/main.py --host" # command to launch software, if applicable
|
||||||
license="/opt/control/LICENSE" # file to cat to display license
|
license="/opt/control/LICENSE" # file to cat to display license
|
||||||
location="/opt/control" # install location REQUIRED if not apt installed. Generally, we use `/opt/software-name`
|
location="/opt/control" # install location REQUIRED if not apt installed. Generally, we use `/opt/software-name`
|
||||||
license="$location/LICENSE" # file to cat to display license
|
license="$location/LICENSE" # file to cat to display license
|
||||||
license_name="GPL3" # license name, such as MIT, GPL3, custom, whatever. short text string
|
license_name="GPL3" # license name, such as MIT, GPL3, custom, whatever. short text string
|
||||||
conflicts="" # comma delineated plain-text list of packages with which this package conflicts. Blank if none. Use the name as it appears in the $name field of the other package. Extra plaintext is allowed, such as "packageA, packageB, any other software that uses the Meshtastic CLI"
|
conflicts="\"Full control\" Meshtastic software, such as TC²-BBS and Meshing Around - but only while running." # comma delineated plain-text list of packages with which this package conflicts. Blank if none. Use the name as it appears in the $name field of the other package. Extra plaintext is allowed, such as "packageA, packageB, any other software that uses the Meshtastic CLI"
|
||||||
|
|
||||||
# install script
|
# install script
|
||||||
install() {
|
install() {
|
||||||
|
|
@ -29,7 +29,7 @@ install() {
|
||||||
pip install -r $location/requirements.txt
|
pip install -r $location/requirements.txt
|
||||||
chown -R femto $location #give ownership of installation directory to $user
|
chown -R femto $location #give ownership of installation directory to $user
|
||||||
git config --global --add safe.directory $location # prevents git error when updating
|
git config --global --add safe.directory $location # prevents git error when updating
|
||||||
echo "user_message: To launch, run \`python $location/main.py --host\`"
|
echo "user_message: To launch, go to Meshtastic settings. Launching manually may conflict with \`full control\` Meshtastic software such as BBS."
|
||||||
exit 0 # should be `exit 1` if operation failed
|
exit 0 # should be `exit 1` if operation failed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ service_name="mesh_bot" # the name of the service, such as `chrony`. REQUIRED if
|
||||||
location="/opt/meshing-around" # install location REQUIRED if not apt installed. Generally, we use `/opt/software-name`
|
location="/opt/meshing-around" # install location REQUIRED if not apt installed. Generally, we use `/opt/software-name`
|
||||||
license="$location/LICENSE" # file to cat to display license
|
license="$location/LICENSE" # file to cat to display license
|
||||||
license_name="GPL3" # license name, such as MIT, GPL3, custom, whatever. short text string
|
license_name="GPL3" # license name, such as MIT, GPL3, custom, whatever. short text string
|
||||||
conflicts="TC²-BBS, any other \"full control\" style bots" # comma delineated plain-text list of packages with which this package conflicts. Use the name as it appears in the $name field of the other package. Extra plaintext is allowed, such as "packageA, packageB, any other software that uses the Meshtastic CLI"
|
conflicts="TC²-BBS, other \"full control\" Meshtastic software, Control (only when running)." # comma delineated plain-text list of packages with which this package conflicts. Use the name as it appears in the $name field of the other package. Extra plaintext is allowed, such as "packageA, packageB, any other software that uses the Meshtastic CLI"
|
||||||
|
|
||||||
# install script
|
# install script
|
||||||
install() {
|
install() {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ service_name="mesh-bbs" # the name of the service/s, such as `chrony`. REQUIRE
|
||||||
location="/opt/TC2-BBS-mesh" # install location REQUIRED if not apt installed. Generally, we use `/opt/software-name`
|
location="/opt/TC2-BBS-mesh" # install location REQUIRED if not apt installed. Generally, we use `/opt/software-name`
|
||||||
license="$location/LICENSE" # file to cat to display license
|
license="$location/LICENSE" # file to cat to display license
|
||||||
license_name="GPL3" # license name, such as MIT, GPL3, custom, whatever. short text string
|
license_name="GPL3" # license name, such as MIT, GPL3, custom, whatever. short text string
|
||||||
conflicts="Meshing Around, other \"full control\" packages" # comma delineated plain-text list of packages with which this package conflicts. Blank if none. Use the name as it appears in the $name field of the other package. Extra plaintext is allowed, such as "packageA, packageB, any other software that uses the Meshtastic CLI"
|
conflicts="Meshing Around, other \"full control\" Meshtastic software, Control (only when running)." # comma delineated plain-text list of packages with which this package conflicts. Blank if none. Use the name as it appears in the $name field of the other package. Extra plaintext is allowed, such as "packageA, packageB, any other software that uses the Meshtastic CLI"
|
||||||
|
|
||||||
# install script
|
# install script
|
||||||
install() {
|
install() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue