mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Add Webmin repository setup script
This commit is contained in:
@@ -21,7 +21,7 @@ $vers || usage();
|
||||
@files = ("config.cgi", "config-*-linux",
|
||||
"config-solaris", "images", "index.cgi", "mime.types",
|
||||
"miniserv.pl", "os_list.txt", "perlpath.pl", "setup.sh", "setup.pl", "setup.bat",
|
||||
"version", "web-lib.pl", "web-lib-funcs.pl",
|
||||
"setup-repos.sh", "version", "web-lib.pl", "web-lib-funcs.pl",
|
||||
"config_save.cgi", "chooser.cgi", "miniserv.pem",
|
||||
"config-aix", "update-from-repo.sh", "README.md",
|
||||
"newmods.pl", "copyconfig.pl", "config-hpux", "config-freebsd",
|
||||
|
||||
181
setup-repos.sh
Executable file
181
setup-repos.sh
Executable file
@@ -0,0 +1,181 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC1090 disable=SC2059 disable=SC2164 disable=SC2181
|
||||
# setup-repos.sh
|
||||
# Copyright Ilia Rostovtsev <ilia@virtualmin.com>
|
||||
# Configures Webmin repository for RHEL and Debian systems (derivatives)
|
||||
|
||||
webmin_download="https://download.webmin.com"
|
||||
webmin_key="jcameron-key.asc"
|
||||
webmin_key_download="$webmin_download/$webmin_key"
|
||||
debian_repo_file="/etc/apt/sources.list.d/webmin.list"
|
||||
rhel_repo_file="/etc/yum.repos.d/webmin.repo"
|
||||
download_wget="/usr/bin/wget"
|
||||
download="$download_wget -nv"
|
||||
|
||||
# Temporary colors
|
||||
NORMAL=''
|
||||
GREEN=''
|
||||
RED=''
|
||||
ITALIC=''
|
||||
BOLD=''
|
||||
if tty -s; then
|
||||
NORMAL="$(tput sgr0)"
|
||||
GREEN=$(tput setaf 2)
|
||||
RED="$(tput setaf 1)"
|
||||
BOLD=$(tput bold)
|
||||
ITALIC=$(tput sitm)
|
||||
fi
|
||||
|
||||
# Go to temp
|
||||
cd "/tmp" 1>/dev/null 2>&1
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "${RED}Error:${NORMAL} Failed to switch to \`/tmp\` directory!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for OS release file
|
||||
osrelease="/etc/os-release"
|
||||
if [ ! -f "$osrelease" ]; then
|
||||
echo "${RED}Error:${NORMAL} Cannot detect OS!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect OS and package manager and install command
|
||||
. "$osrelease"
|
||||
if [ -n "${ID_LIKE}" ]; then
|
||||
osid="$ID_LIKE"
|
||||
else
|
||||
osid="$ID"
|
||||
fi
|
||||
if [ -z "$osid" ]; then
|
||||
echo "${RED}Error:${NORMAL} Failed to detect OS!"
|
||||
exit 1
|
||||
fi
|
||||
osid=$(echo "$osid" | sed 's/\s.*$//')
|
||||
|
||||
# Setup OS dependent
|
||||
if [ "$osid" = "debian" ]; then
|
||||
package_type=deb
|
||||
install_cmd="apt-get install"
|
||||
install="$install_cmd --quiet --assume-yes"
|
||||
clean="apt-get clean"
|
||||
update="apt-get update"
|
||||
elif [ "$osid" = "rhel" ]; then
|
||||
package_type=rpm
|
||||
if command -pv dnf 1>/dev/null 2>&1; then
|
||||
install_cmd="dnf install"
|
||||
install="$install_cmd -y"
|
||||
clean="dnf clean all"
|
||||
else
|
||||
install_cmd="yum install"
|
||||
install="$install_cmd -y"
|
||||
clean="yum clean all"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ask first
|
||||
printf "Setup Webmin official repository? (y/N) "
|
||||
read -r sslyn
|
||||
if [ "$sslyn" != "y" ] || [ "$sslyn" = "Y" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check for wget or curl or fetch
|
||||
if [ ! -x "$download_wget" ]; then
|
||||
if [ -x "/usr/bin/curl" ]; then
|
||||
download="/usr/bin/curl -f -s -L -O"
|
||||
elif [ -x "/usr/bin/fetch" ]; then
|
||||
download="/usr/bin/fetch"
|
||||
else
|
||||
# Try installing wget
|
||||
echo " Installing required ${ITALIC}wget${NORMAL} package from OS repository .."
|
||||
$install wget 1>/dev/null 2>&1
|
||||
if [ "$?" != "0" ]; then
|
||||
echo " .. failed to install 'wget' package!"
|
||||
exit 1
|
||||
else
|
||||
echo " .. done"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# Check if GPG command is installed
|
||||
if [ "$osid" = "debian" ]; then
|
||||
if [ ! -x /usr/bin/gpg ]; then
|
||||
$update 1>/dev/null 2>&1
|
||||
$install gnupg 1>/dev/null 2>&1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Clean files
|
||||
rm -f "/tmp/$webmin_key"
|
||||
|
||||
# Download key
|
||||
echo " Downloading Webmin key .."
|
||||
download_out=$($download $webmin_key_download 2>/dev/null 2>&1)
|
||||
if [ "$?" != "0" ]; then
|
||||
download_out=$(echo "$download_out" | tr '\n' ' ')
|
||||
echo " ..failed : $download_out"
|
||||
exit
|
||||
else
|
||||
echo " .. done"
|
||||
fi
|
||||
|
||||
# Setup repos
|
||||
case "$package_type" in
|
||||
rpm)
|
||||
# Install our keys
|
||||
echo " Installing Webmin key .."
|
||||
rpm --import $webmin_key
|
||||
cp -f $webmin_key /etc/pki/rpm-gpg/RPM-GPG-KEY-webmin
|
||||
echo " .. done"
|
||||
# Create repo file
|
||||
echo " Setting up Webmin repository .."
|
||||
echo "[webmin-noarch]" >$rhel_repo_file
|
||||
echo "name=Webmin - noarch" >>$rhel_repo_file
|
||||
echo "baseurl=$webmin_download/download/yum" >>$rhel_repo_file
|
||||
echo "enabled=1" >>$rhel_repo_file
|
||||
echo "gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-webmin" >>$rhel_repo_file
|
||||
echo "gpgcheck=1" >>$rhel_repo_file
|
||||
echo " .. done"
|
||||
# Clean meta
|
||||
echo " Cleaning repository metadata .."
|
||||
$clean 1>/dev/null 2>&1
|
||||
echo " .. done"
|
||||
;;
|
||||
deb)
|
||||
# Install our keys
|
||||
echo " Installing Webmin key .."
|
||||
gpg --import $webmin_key 1>/dev/null 2>&1
|
||||
cat $webmin_key | gpg --dearmor > /usr/share/keyrings/debian-webmin.gpg
|
||||
echo " .. done"
|
||||
# Create repo file
|
||||
echo " Setting up Webmin repository .."
|
||||
echo "deb [signed-by=/usr/share/keyrings/debian-webmin.gpg] $webmin_download/download/repository sarge contrib" >$debian_repo_file
|
||||
echo " .. done"
|
||||
# Clean meta
|
||||
echo " Cleaning repository metadata .."
|
||||
$clean 1>/dev/null 2>&1
|
||||
echo " .. done"
|
||||
# Update meta
|
||||
echo " Downloading repository metadata .."
|
||||
$update 1>/dev/null 2>&1
|
||||
echo " .. done"
|
||||
;;
|
||||
*)
|
||||
echo "${RED}Error:${NORMAL} Cannot setup repositories on this system."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Could not setup
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "${RED}Error:${NORMAL} Could not setup repositories!"
|
||||
else
|
||||
if [ ! -x "/usr/bin/webmin" ]; then
|
||||
echo "Webmin package can now be installed using ${GREEN}${BOLD}${ITALIC}$install_cmd webmin${NORMAL} command."
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user