Add install_functions (unmodified from SVN)
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
################################################################
|
||||
# Title:.......Automatic install/update OScam #
|
||||
# Author:......Prilly #
|
||||
# Support:.....prilly@speedbox.me #
|
||||
# Date:........15 Mars 2016 #
|
||||
# Description:.Automaticaly install OScam with systemd support #
|
||||
# Updates OScam to latest or specific SVN version #
|
||||
################################################################
|
||||
|
||||
run_install(){
|
||||
if [ $(whoami) != "root" ]; then
|
||||
dialog --title "OScam Installer" --msgbox "\n Only ROOT can run this script!" 7 70
|
||||
return 1
|
||||
elif [ -f ${daemon_dir}/oscam1 ]; then
|
||||
dialog --title "OScam Installer" --msgbox "\n OScam already installed! Try running OScam upgrade instead!" 7 70
|
||||
return 1
|
||||
else
|
||||
dialog --title "Confirmation" --yesno "\n Install OScam CardServer?" 7 70
|
||||
if [ ${?} -eq 1 2>/dev/null ]; then
|
||||
return 1
|
||||
else
|
||||
check_distrib
|
||||
if [ ${?} -eq 0 2>/dev/null ]; then
|
||||
set_instances_count
|
||||
install_reader_fw
|
||||
copy_files
|
||||
compile_oscam
|
||||
restart_oscam
|
||||
dialog --title "OScam Installer" --msgbox "\n Installation completed ok!\n Webif: http://IP-of-server:888[1-9]\n Webif user/pass = root/root" 9 70
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
run_update(){
|
||||
dialog --title "OScam Installer" --msgbox "To run an upgrade of OScam, the install routine must have been run once earlier.
|
||||
This script does NOT support upgrading OScam without OScam has been initially installed by the script.
|
||||
IMPORTANT: SysV is now replaced with Systemd, use systemctl start|stop|restart oscam(1-9).service" 13 70
|
||||
if [ $(whoami) != "root" ]; then
|
||||
dialog --title "OScam Installer" --msgbox "\n Only ROOT can run this script!" 7 70
|
||||
return 1
|
||||
elif [ ! -d ${conf_dir}/oscam1 ]; then
|
||||
dialog --title "OScam Installer" --msgbox "\n OScam not installed! Try running OScam install instead!" 7 70
|
||||
return 1
|
||||
else
|
||||
dialog --title "Confirmation" --yesno "\n Update OScam CardServer?" 7 70
|
||||
if [ ${?} -eq 1 2>/dev/null ]; then
|
||||
return 1
|
||||
else
|
||||
check_distrib
|
||||
if [ ${?} -eq 0 2>/dev/null ]; then
|
||||
set_instances_count
|
||||
copy_files
|
||||
compile_oscam
|
||||
restart_oscam
|
||||
dialog --title "OScam Installer" --msgbox "\n OScam CardServer upgrade completed!" 7 70
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
check_distrib(){
|
||||
local cd_os=""
|
||||
local cd_ver=""
|
||||
if [ -f /etc/lsb-release ]; then
|
||||
. /etc/lsb-release
|
||||
cd_os="${DISTRIB_ID}"
|
||||
cd_ver="${DISTRIB_RELEASE}"
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
cd_os="Debian"
|
||||
cd_ver="$(cat /etc/debian_version)"
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
cd_os="Red Hat"
|
||||
cd_ver="$(cat /etc/redhat-release)"
|
||||
elif [ -f /etc/SuSE-release ]; then
|
||||
cd_os="SuSE"
|
||||
cd_ver="$(cat /etc/SuSE-release)"
|
||||
else
|
||||
cd_os="$(uname -s)"
|
||||
cd_ver="$(uname -r)"
|
||||
fi
|
||||
if [ "${cd_os}" = "Debian" ] || [ "${cd_os}" = "Ubuntu" ]; then
|
||||
install_dep_deb
|
||||
return 0
|
||||
else
|
||||
dialog --title "OScam Installer" --msgbox "\n Your distribution: ${cd_os} ${cd_ver} is unsupported" 7 70
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_dep_deb(){
|
||||
apt-get update
|
||||
apt-get -y install cmake sudo curl git build-essential libssl-dev libncurses-dev dialog
|
||||
apt-get -y install usbutils libusb-dev libusb-1.0-0 libusb-1.0-0-dev
|
||||
}
|
||||
|
||||
set_instances_count(){
|
||||
local instances_count=$(find ${conf_dir}/oscam? -maxdepth 0 -type d 2>/dev/null | wc -l)
|
||||
if [ ${instances_count} -eq 0 2>/dev/null ]; then
|
||||
exec 3>&1
|
||||
local instances_var=$(dialog --title "OScam Installer" --inputbox "\n How many instances should be installed? (1->9):" 8 70 2>&1 1>&3)
|
||||
exec 3>&-;
|
||||
while [ ! ${instances_var} -gt 0 ] || [ ! ${instances_var} -le 9 ]; do
|
||||
dialog --title "OScam Installer" --msgbox "\n Error -> valid range is: (1 to 9)" 7 70
|
||||
exec 3>&1
|
||||
local instances_var=$(dialog --title "OScam Installer" --inputbox "\n How many instances should be installed? (1->9):" 8 70 2>&1 1>&3)
|
||||
exec 3>&-;
|
||||
done
|
||||
instances=${instances_var}
|
||||
else
|
||||
instances=${instances_count}
|
||||
fi
|
||||
}
|
||||
|
||||
install_reader_fw(){
|
||||
dialog --title "Confirmation" --yesno "\n Install HID Omnikey USB card reader firmware?\n OMNIKEY: 512x, 532x, 1021, 3x21, 6121" 8 70
|
||||
if [ ${?} -eq 0 2>/dev/null ]; then
|
||||
apt-get -y install pcscd pcsc-tools libpcsclite-dev
|
||||
if [ $(getconf LONG_BIT) -eq 64 2>/dev/null ]; then
|
||||
tar -xvzf pcsc/${fw_hid_64}.tar.gz -C pcsc
|
||||
cd pcsc/${fw_hid_64}
|
||||
./install
|
||||
else
|
||||
tar -xvzf pcsc/${fw_hid_86}.tar.gz -C pcsc
|
||||
cd pcsc/${fw_hid_86}
|
||||
./install
|
||||
fi
|
||||
cd - >/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
copy_files(){
|
||||
if [ ! -d ${conf_dir} ]; then
|
||||
mkdir -p ${conf_dir}
|
||||
fi
|
||||
for i in $(seq 1 ${instances}); do
|
||||
if [ ! -f ${sysd_dir}/oscam${i}.service ]; then
|
||||
cp script/systemd/oscam${i}.service ${sysd_dir}/oscam${i}.service
|
||||
else
|
||||
cp -u script/systemd/oscam${i}.service ${sysd_dir}/oscam${i}.service
|
||||
fi
|
||||
if [ ! -d ${log_dir}/oscam${i} ]; then
|
||||
mkdir -p ${log_dir}/oscam${i}
|
||||
fi
|
||||
if [ ! -d ${conf_dir}/oscam${i} ]; then
|
||||
mkdir -p ${conf_dir}/oscam${i}
|
||||
fi
|
||||
if [ ! -f ${conf_dir}/oscam${i}/oscam.conf ]; then
|
||||
cp config/oscam${i}.conf ${conf_dir}/oscam${i}/oscam.conf
|
||||
fi
|
||||
chmod 755 ${sysd_dir}/oscam${i}.service
|
||||
chmod 755 -R ${conf_dir}/oscam${i}
|
||||
systemctl enable oscam${i}.service
|
||||
done
|
||||
}
|
||||
|
||||
compile_oscam(){
|
||||
local co_build_opt="OSCAM_BIN=oscam"
|
||||
local now=$(date +"%m_%d_%Y")
|
||||
exec 3>&1
|
||||
local compile_var=$(dialog --title "OScam Installer" --inputbox "\n Compile OScam source: version or HEAD?: (10255/HEAD)" 8 70 2>&1 1>&3)
|
||||
exec 3>&-;
|
||||
if [ ${compile_var} -eq ${compile_var} 2>/dev/null ]; then
|
||||
git clone --depth 1 --branch ${compile_var} ${git_url} ${work_dir}/oscam-svn
|
||||
else
|
||||
git clone --depth 1 ${git_url} ${work_dir}/oscam-svn
|
||||
fi
|
||||
cd ${work_dir}/oscam-svn
|
||||
make config
|
||||
if [ $(dpkg-query -W -f='${Status}' libpcsclite* 2>/dev/null | grep -c "ok installed") -eq 1 2>/dev/null ]; then
|
||||
dialog --title "Confirmation" --yesno "\n Found libpcsclite -> Add USE_PCSC=1 to build option? (Default YES)" 7 80
|
||||
if [ ${?} -eq 0 2>/dev/null ]; then
|
||||
co_build_opt+=" USE_PCSC=1"
|
||||
fi
|
||||
fi
|
||||
if [ $(dpkg-query -W -f='${Status}' libusb-1.0-0-dev 2>/dev/null | grep -c "ok installed") -eq 1 2>/dev/null ]; then
|
||||
dialog --title "Confirmation" --yesno "\n Found libusb -> Add USE_LIBUSB=1 to build option? (Default YES)" 7 80
|
||||
if [ ${?} -eq 0 2>/dev/null ]; then
|
||||
co_build_opt+=" USE_LIBUSB=1"
|
||||
fi
|
||||
fi
|
||||
make ${co_build_opt}
|
||||
cd - >/dev/null
|
||||
for i in $(seq 1 ${instances}); do
|
||||
if [ -f ${sysd_dir}/oscam${i}.service ]; then
|
||||
systemctl stop oscam${i}.service
|
||||
else
|
||||
killall -9 oscam${i}
|
||||
fi
|
||||
if [ -f ${daemon_dir}/oscam${i} ]; then
|
||||
mv -f ${daemon_dir}/oscam${i} ${daemon_dir}/old_oscam${i}_${now}
|
||||
fi
|
||||
cp ${work_dir}/oscam-svn/oscam ${daemon_dir}/oscam${i}
|
||||
chmod 755 ${daemon_dir}/oscam${i}
|
||||
done
|
||||
rm -rf ${work_dir}/oscam-svn
|
||||
dialog --title "OScam Installer" --msgbox "\n OScam CardServer compiled successfully!" 7 70
|
||||
}
|
||||
|
||||
restart_oscam(){
|
||||
for i in $(seq 1 ${instances}); do
|
||||
if [ -f ${sysd_dir}/oscam${i}.service ]; then
|
||||
systemctl stop oscam${i}.service
|
||||
systemctl start oscam${i}.service
|
||||
else
|
||||
dialog --title "OScam Installer" --msgbox "\n ${sysd_dir}/oscam${i}.service file is missing!" 7 70
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
Reference in New Issue
Block a user