#!/bin/bash set -e GIT_BRANCH=$1 GIT_REPO=https://ognproject.evlt.uma.es/gitea/opengnsys/ogrepository.git GIT_SSL_NO_VERIFY=true INSTALL_DIR=/opt/opengnsys/ogrepository DOWNLOAD_DIR=/tmp/ogrepository DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND export GIT_SSL_NO_VERIFY clone_repository() { local BRANCH=$1 rm -rf $DOWNLOAD_DIR git clone -b "$BRANCH" $GIT_REPO $DOWNLOAD_DIR chown -R ogrepository:ogrepository $DOWNLOAD_DIR } 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 } install_updcast () { apt install $DOWNLOAD_DIR/packets/udpcast_20230924_amd64.deb } add_user_ogrepository() { if ! id "ogrepository" &>/dev/null; then echo "User ogrepository does not exist, creating it" useradd -r -s /bin/bash ogrepository fi if [ ! -f /etc/sudoers.d/ogrepository ]; then echo "User ogrepository does not have sudo permissions, adding it" echo 'ogrepository ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/ogrepository 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 ogrepository:ogrepository $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 } 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 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 ogrepository:ogrepository $INSTALL_DIR } ## Main program check_root install_ext_repo install_dependencies install_external_packages install_uftp install_updcast add_user_ogrepository clone_repository "$GIT_BRANCH" create_directories install_files install_ogrepo-api_service