#!/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