116 lines
3.3 KiB
Bash
116 lines
3.3 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
|
|
REPO_IP=${1:-"127.0.0.1"}
|
|
CORE_IP=${2:-"127.0.0.1"}
|
|
OGUSER=${3:-"opengnsys"}
|
|
OGPASS=${4:-"og"}
|
|
INSTALL_DIR=/opt/opengnsys/ogrepository
|
|
DOWNLOAD_DIR=${5:-"/tmp/ogrepository"}
|
|
DEBIAN_FRONTEND=noninteractive
|
|
OGUSER_HOME=/opt/opengnsys
|
|
export DEBIAN_FRONTEND
|
|
export GIT_SSL_NO_VERIFY
|
|
|
|
|
|
check_root() {
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo "This script must be run as root" 1>&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
install_uftp() {
|
|
apt install uftp -y
|
|
systemctl stop uftp
|
|
systemctl disable uftp
|
|
}
|
|
|
|
install_updcast () {
|
|
apt install $DOWNLOAD_DIR/packets/udpcast_20230924_amd64.deb
|
|
}
|
|
|
|
add_user_ogrepository() {
|
|
if ! id "$OGUSER" &>/dev/null; then
|
|
echo "User ogrepository does not exist, creating it"
|
|
useradd -m -d $OGUSER_HOME -r -s /bin/bash $OGUSER
|
|
fi
|
|
if [ ! -d $OGUSER_HOME/.ssh ] ; then
|
|
mkdir -p $OGUSER_HOME/.ssh
|
|
cp /tmp/oginstall/ssh-keys/opengnsys $OGUSER_HOME/.ssh/id_ed25519
|
|
cp /tmp/oginstall/ssh-keys/opengnsys.pub $OGUSER_HOME/.ssh/id_ed25519.pub
|
|
cat /tmp/oginstall/ssh-keys/opengnsys.pub >> $OGUSER_HOME/.ssh/authorized_keys
|
|
chown -R $OGUSER:$OGUSER $OGUSER_HOME/.ssh
|
|
chmod 0600 $OGUSER_HOME/.ssh/*
|
|
|
|
fi
|
|
if [ ! -f /etc/sudoers.d/$OGUSER ]; then
|
|
echo "User $OGUSER does not have sudo permissions, adding it"
|
|
echo "$OGUSER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/"$OGUSER"
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
create_directories() {
|
|
mkdir -p $INSTALL_DIR
|
|
mkdir -p $INSTALL_DIR/images $INSTALL_DIR/images_trash/ $INSTALL_DIR/bin/ $INSTALL_DIR/etc/ $INSTALL_DIR/log/ $INSTALL_DIR/api/
|
|
chown -R $OGUSER:$OGUSER $INSTALL_DIR
|
|
}
|
|
|
|
install_dependencies() {
|
|
apt update -y
|
|
apt install -y git python3 python3-pip python3-flask python3-paramiko python3-psutil python3-flasgger debian-archive-keyring samba gunicorn wakeonlan
|
|
}
|
|
|
|
install_ext_repo() {
|
|
cp $DOWNLOAD_DIR/installer/files/ctorrent.sources /etc/apt/sources.list.d/ctorrent.sources
|
|
apt update -y
|
|
}
|
|
|
|
install_external_packages() {
|
|
apt install -y bittorrent bittornado ctorrent
|
|
}
|
|
|
|
install_ogrepo-api_service() {
|
|
cp -r $DOWNLOAD_DIR/installer/files/ogrepo-api.service /etc/systemd/system/ogrepo-api.service
|
|
sed -i "s/%%OGREPOSITORY_USER%%/$OGUSER/g" /etc/systemd/system/ogrepo-api.service
|
|
systemctl enable --now ogrepo-api
|
|
}
|
|
|
|
install_files() {
|
|
cp -pr $DOWNLOAD_DIR/bin/* $INSTALL_DIR/bin/
|
|
cp -pr $DOWNLOAD_DIR/etc/* $INSTALL_DIR/etc/
|
|
cp -pr $DOWNLOAD_DIR/api/* $INSTALL_DIR/api/
|
|
chown -R $OGUSER:$OGUSER $INSTALL_DIR
|
|
chmod 755 $INSTALL_DIR/bin/*
|
|
echo IPlocal="$REPO_IP" > $INSTALL_DIR/etc/ogAdmRepo.cfg
|
|
echo IPcore="$CORE_IP" >> $INSTALL_DIR/etc/ogAdmRepo.cfg
|
|
sudo chown $OGUSER:$OGUSER $INSTALL_DIR/etc/ogAdmRepo.cfg
|
|
}
|
|
|
|
configure_samba() {
|
|
echo "include = /etc/samba/smb.conf.ogrepository" >> /etc/samba/smb.conf
|
|
cp $DOWNLOAD_DIR/installer/files/ogrepo-smb.conf /etc/samba/smb.conf.ogrepository
|
|
sed -i "s/%%OGREPOSITORY_USER%%/$OGUSER/g" /etc/samba/smb.conf.ogrepository
|
|
systemctl restart smbd
|
|
# Create default user ogrepository
|
|
(echo $OGPASS; echo $OGPASS) | smbpasswd -s -a $OGUSER
|
|
|
|
}
|
|
|
|
## Main program
|
|
|
|
install_dependencies
|
|
add_user_ogrepository
|
|
install_ext_repo
|
|
install_external_packages
|
|
install_uftp
|
|
install_updcast
|
|
create_directories
|
|
install_files
|
|
install_ogrepo-api_service
|
|
configure_samba
|