Files
bash/apache_tools_v2.sh
2023-03-12 17:56:29 +01:00

216 lines
5.7 KiB
Bash
Executable File

#!/usr/bin/env bash
underline="\033[4m"
red="\033[1;31m"
green="\033[1;32m"
yellow="\033[1;33m"
bold="\033[1m"
reset="\033[0m"
homebrew_path=$(brew --prefix)
editeur=/usr/local/bin/bbedit
# apache
v_apache=$(apachectl -v | sed -n '1p' | awk -F":" '{print $2}' | xargs)
conf_apache=$(httpd -V | grep 'SERVER_CONFIG_FILE' | awk -F "\"" '{print $2}')
document_root=$(grep -e '^DocumentRoot' "$conf_apache" | awk '{print $2}' | sed 's/\"//g')
log_apa=$(grep -e '^ErrorLog' "$conf_apache" | awk -F "\"" '{print $2}')
access_apa=$(grep -e 'CustomLog' "$conf_apache" | grep -v "#" | awk -F "\"" '{print $2}')
vhost=$(grep -e 'httpd-vhosts.conf' "$conf_apache" | awk '{print $2}')
ssl=$(grep -e 'httpd-ssl.conf' "$conf_apache" | awk '{print $2}')
config_apache=()
config_apache+=("$conf_apache")
config_apache+=("$vhost")
config_apache+=("$ssl")
# PHP
declare -a additionnal=()
add_ini() {
# Current php version (from httpd.conf)
ip=$(grep -E SetHandler $conf_apache | grep -v \# | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}:[0-9]{4}")
x=${ip: -2}
current_simple_php_version="${x:0:1}.${x:1}"
current_php_version="php@${x:0:1}.${x:1}"
v_php=$($homebrew_path/opt/$current_php_version/bin/php -v)
php_ini="$homebrew_path/etc/php/$current_simple_php_version/php.ini"
conf_php=()
conf_php+=("$php_ini")
conf_php+=("$homebrew_path/etc/php/$current_simple_php_version/php-fpm.d/www.conf")
addconf_php=$(find "$homebrew_path/etc/php/$current_simple_php_version/conf.d" -name "*.ini" | sort -n)
z=0
additionnal=()
for i in $addconf_php
do
additionnal+=("$addconf_dir$i")
done
conf_php+=(${additionnal[@]})
}
# MySQL
my=$(mysql --help | grep -A1 'Default options' | grep '.my.cnf')
conf_mysql=($my)
v_mysql=$(mysql -V | awk -F"," '{print $1}' | xargs)
# Functions
error_log(){
tail -f "$log_apa" &
tailpid=$!
sleep 0.25
read -p "< Press Enter to quit tail ! >"
kill $tailpid
}
acces_log(){
tail -f "$access_apa" &
tailpid=$!
sleep 0.25
read -p "< Press Enter to quit tail ! >"
kill $tailpid
}
entete(){
v_php_short=$(echo "$v_php" | sed -n '1p' )
printf "Apache: %s\n" "$v_apache"
printf "PHP: %s\n" "$v_php_short"
printf "MySQL: %s\n" "$v_mysql"
echo ""
}
versions(){
echo -e "\n${underline}Apache/PHP/MySQL Version:${reset}\n"
apachectl -v
echo ""
$homebrew_path/opt/$current_php_version/bin/php -v
echo ""
mysql --version
echo ""
read -p "< Press Enter>"
}
conf_files(){
echo -e "\n${underline}Apache/PHP/MySQL Configuration files:${reset}\n"
echo -e "\033[4mApache:\033[0m " #&& echo $conf_apache
for line in "${config_apache[@]}"
do
echo -e "$line"
done
echo
echo -e "\033[4mPHP:\033[0m " # && echo "$conf_php"
for line in "${conf_php[@]}"
do
echo -e "$line"
done
echo
echo -e "\033[4mMySQL:\033[0m "
for line in "${conf_mysql[@]}"
do
echo -e "$line"
done
echo
read -p "< Press Enter>"
}
submenu(){
options2=("${additionnal[@]}" "(M)enu")
echo "Edit which file ?: "
select opt in "${options2[@]}"; do
[[ $opt == "(M)enu" ]] || [[ $REPLY == "m" ]] || [[ $REPLY == "M" ]] && menu;
[[ -z $opt ]] && echo "Wrong choice !"
[[ -n $opt ]] && "$editeur" "$opt";
done
}
switch_php(){
php_installed_array=()
for i in $(ls $homebrew_path/etc/php/); do
[[ -d "$homebrew_path/etc/php/$i" ]] && php_installed_array+=("$i");
done
php_installed_array+=("(M)enu" "Help")
echo -e "\nCurrent PHP: $current_simple_php_version"
echo "Switch to PHP: "
select version in "${php_installed_array[@]}"; do
[[ $version == "(M)enu" ]] || [[ $REPLY == "m" ]] || [[ $REPLY == "M" ]] && menu;
[[ $version == "Help" ]] && echo "Only currently PHP installed are displayed. To switch to another PHP version, install it before (brew install php@8.3) !";
[[ -z $version ]] && [ "$version" != "Help" ] && echo "Wrong choice !"
[[ -n $version ]] && [ "$version" != "Help" ] && echo "$version" | xargs -p -n 1 sphp && menu;
done
}
# Main menu
menu(){
add_ini
options=(
"Apache (r)estart"
"(E)dit httpd.conf"
"Edit httpd-v(h)osts.conf"
"Edit httpd-(s)sl.conf"
"error_(l)og Apache"
"(a)ccess_log Apache"
"Edit (P)HP.ini"
"Edit additio(n)nals *.ini files"
"Open PHP (i)nfo page in browser"
"S(w)itch to PHP version"
"Apache/PHP/MySQL (V)ersion"
"Apache/PHP/MySQL (C)onfiguration files"
"(Q)uit"
)
# --> sphp:<--
# mod-php: https://gist.github.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/
# php-fpm: https://gist.github.com/rozsival/10289d1e2006c68009ace0478306ecd2/
# Brew PHP switcher
# https://github.com/philcook/brew-php-switcher#readme
echo -e "\n\033[1mApache Tools: \033[0m\n"
entete
select option in "${options[@]}"; do
case "$REPLY" in
1|r|R) sudo apachectl -k restart ; menu ;;
2|e|E) "$editeur" "$conf_apache" ;; # httpd.conf
3|h|H) "$editeur" "$vhost" ; menu ;; # httpd-vhost.conf
4|s|S) "$editeur" "$ssl" ; menu ;; # httpd-ssl.conf
5|l|L) command -v ttab >/dev/null 2>&1 && ttab tail -f "$log_apa" || error_log ; menu ;;
6|a|A) command -v ttab >/dev/null 2>&1 && ttab tail -f "$access_apa" || acces_log ; menu ;;
7|p|P) "$editeur" "$php_ini" ; menu ;; # php.ini
8|n|N) submenu ;;
9|i|I) echo '<?php echo phpinfo(); ?>' > $document_root/php-info.php && open 'http://localhost/php-info.php' ;;
10|w|W) switch_php; menu ;;
#read -e -n 3 -p "Which PHP version? (7.4/8.0/8.1/8.2/8.3): " choice
#if [[ "$choice" == "7.4" ]] || [[ "$choice" == "8.0" ]] || [[ "$choice" == "8.1" ]] || [[ "$choice" == "8.2" ]] || [[ "$choice" == "8.3" ]]; then echo "$choice" | xargs -p -n 1 sphp ; fi ; menu ;;
11|v|V) versions ; menu ;;
12|c|C) conf_files ; menu ;;
13|q|Q) exit 0 ;;
esac
done
}
menu