mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-11-22 13:22:28 +00:00
1e39d967c5
* Add basic apk to scripts * Add common service script * Fix alpine bugs * Add flatpak installations * chore: update scripts, add common-service-script to shellcheckrc
208 lines
5.6 KiB
Bash
Executable File
208 lines
5.6 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
# Load common script functions
|
|
. ../common-script.sh
|
|
|
|
# Function to install packages based on the package manager
|
|
install_package() {
|
|
PACKAGE=$1
|
|
if ! command_exists "$PACKAGE"; then
|
|
case "$PACKAGER" in
|
|
pacman)
|
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm "$PACKAGE"
|
|
;;
|
|
apk)
|
|
"$ESCALATION_TOOL" "$PACKAGER" add "$PACKAGE"
|
|
;;
|
|
*)
|
|
"$ESCALATION_TOOL" "$PACKAGER" install -y "$PACKAGE"
|
|
;;
|
|
esac
|
|
else
|
|
echo "$PACKAGE is already installed."
|
|
fi
|
|
}
|
|
|
|
# Function to setup and configure SSH
|
|
setup_ssh() {
|
|
printf "%b\n" "${YELLOW}Setting up SSH...${RC}"
|
|
|
|
# Detect package manager and install appropriate SSH package
|
|
case "$PACKAGER" in
|
|
apt-get|nala)
|
|
install_package openssh-server
|
|
SSH_SERVICE="ssh"
|
|
;;
|
|
pacman)
|
|
install_package openssh
|
|
SSH_SERVICE="sshd"
|
|
;;
|
|
apk)
|
|
install_package openssh
|
|
SSH_SERVICE="sshd"
|
|
;;
|
|
*)
|
|
install_package openssh-server
|
|
SSH_SERVICE="sshd"
|
|
;;
|
|
esac
|
|
|
|
startAndEnableService "$SSH_SERVICE"
|
|
|
|
LOCAL_IP=$(ip -4 addr show | awk '/inet / {print $2}' | tail -n 1)
|
|
|
|
printf "%b\n" "${GREEN}Your local IP address is: $LOCAL_IP${RC}"
|
|
|
|
if isServiceActive "$SSH_SERVICE"; then
|
|
printf "%b\n" "${GREEN}SSH is up and running.${RC}"
|
|
else
|
|
printf "%b\n" "${RED}Failed to start SSH.${RC}"
|
|
fi
|
|
}
|
|
|
|
# Function to setup and configure Samba
|
|
setup_samba() {
|
|
printf "%b\n" "${YELLOW}Setting up Samba...${RC}"
|
|
|
|
# Install Samba if not installed
|
|
install_package samba
|
|
|
|
SAMBA_CONFIG="/etc/samba/smb.conf"
|
|
|
|
if [ -f "$SAMBA_CONFIG" ]; then
|
|
printf "%b\n" "${YELLOW}Samba configuration file already exists in $SAMBA_CONFIG.${RC}"
|
|
printf "%b" "Do you want to modify the existing Samba configuration? (Y/n): "
|
|
read -r MODIFY_SAMBA
|
|
if [ "$MODIFY_SAMBA" = "Y" ] || [ "$MODIFY_SAMBA" = "y" ]; then
|
|
"$ESCALATION_TOOL" "$EDITOR" "$SAMBA_CONFIG"
|
|
fi
|
|
else
|
|
printf "%b\n" "${YELLOW}No existing Samba configuration found. Setting up a new one...${RC}"
|
|
|
|
# Prompt user for shared directory path
|
|
printf "%b" "Enter the path for the Samba share (default: /srv/samba/share): "
|
|
read -r SHARED_DIR
|
|
SHARED_DIR=${SHARED_DIR:-/srv/samba/share}
|
|
|
|
# Create the shared directory if it doesn't exist
|
|
"$ESCALATION_TOOL" mkdir -p "$SHARED_DIR"
|
|
"$ESCALATION_TOOL" chmod -R 0777 "$SHARED_DIR"
|
|
|
|
# Add a new Samba user
|
|
printf "%b" "Enter Samba username: "
|
|
read -r SAMBA_USER
|
|
|
|
# Loop until the passwords match
|
|
while true; do
|
|
printf "Enter Samba password: "
|
|
stty -echo
|
|
read -r SAMBA_PASSWORD
|
|
stty echo
|
|
printf "Confirm Samba password: "
|
|
stty -echo
|
|
read -r SAMBA_PASSWORD_CONFIRM
|
|
stty echo
|
|
printf "\n"
|
|
if [ "$SAMBA_PASSWORD" = "$SAMBA_PASSWORD_CONFIRM" ]; then
|
|
printf "%b\n" "${GREEN}Passwords match.${RC}"
|
|
break
|
|
else
|
|
printf "%b\n" "${RED}Passwords do not match. Please try again.${RC}"
|
|
fi
|
|
done
|
|
|
|
# Add the user and set the password
|
|
"$ESCALATION_TOOL" smbpasswd -a "$SAMBA_USER"
|
|
|
|
# Configure Samba settings
|
|
"$ESCALATION_TOOL" tee "$SAMBA_CONFIG" > /dev/null <<EOL
|
|
[global]
|
|
workgroup = WORKGROUP
|
|
server string = Samba Server
|
|
security = user
|
|
map to guest = bad user
|
|
dns proxy = no
|
|
|
|
[Share]
|
|
path = $SHARED_DIR
|
|
browsable = yes
|
|
writable = yes
|
|
guest ok = no
|
|
read only = no
|
|
valid users = $SAMBA_USER
|
|
EOL
|
|
fi
|
|
|
|
for service in smb nmb; do
|
|
startAndEnableService "$service"
|
|
done
|
|
|
|
if isServiceActive smb && isServiceActive nmb; then
|
|
printf "%b\n" "${GREEN}Samba is up and running.${RC}"
|
|
printf "%b\n" "${YELLOW}Samba share available at: $SHARED_DIR${RC}"
|
|
else
|
|
printf "%b\n" "${RED}Failed to start Samba.${RC}"
|
|
fi
|
|
}
|
|
|
|
# Function to configure firewall (optional)
|
|
configure_firewall() {
|
|
printf "%b\n" "${BLUE}Configuring firewall...${RC}"
|
|
|
|
if command_exists ufw; then
|
|
"$ESCALATION_TOOL" ufw allow OpenSSH
|
|
"$ESCALATION_TOOL" ufw allow Samba
|
|
"$ESCALATION_TOOL" ufw enable
|
|
printf "%b\n" "${GREEN}Firewall configured for SSH and Samba.${RC}"
|
|
else
|
|
printf "%b\n" "${YELLOW}UFW is not installed. Skipping firewall configuration.${RC}"
|
|
fi
|
|
}
|
|
|
|
setup_ssh_samba(){
|
|
printf "%b\n" "Samba and SSH Setup Script"
|
|
printf "%b\n" "--------------------------"
|
|
clear
|
|
|
|
# Display menu
|
|
printf "%b\n" "Select an option:"
|
|
printf "%b\n" "1. Setup SSH"
|
|
printf "%b\n" "2. Setup Samba"
|
|
printf "%b\n" "3. Configure Firewall"
|
|
printf "%b\n" "4. Setup All"
|
|
printf "%b\n" "5. Exit"
|
|
|
|
printf "%b" "Enter your choice (1-5): "
|
|
read CHOICE
|
|
|
|
case "$CHOICE" in
|
|
1)
|
|
setup_ssh
|
|
;;
|
|
2)
|
|
setup_samba
|
|
;;
|
|
3)
|
|
configure_firewall
|
|
;;
|
|
4)
|
|
setup_ssh
|
|
setup_samba
|
|
configure_firewall
|
|
;;
|
|
5)
|
|
printf "%b\n" "${GREEN}Exiting.${RC}"
|
|
exit 0
|
|
;;
|
|
*)
|
|
printf "%b\n" "${RED}Invalid choice. Please enter a number between 1 and 5.${RC}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
printf "%b\n" "${GREEN}Setup completed.${RC}"
|
|
}
|
|
|
|
checkEnv
|
|
checkEscalationTool
|
|
setup_ssh_samba |