From d5f02b2cf9437924045df896e77b6692f1cabf48 Mon Sep 17 00:00:00 2001 From: Adam Radovits Date: Mon, 27 Aug 2018 19:46:27 +0000 Subject: [PATCH 1/5] Added OpenSUSE install script --- INSTALL/opensuse.sh | 182 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 INSTALL/opensuse.sh diff --git a/INSTALL/opensuse.sh b/INSTALL/opensuse.sh new file mode 100644 index 00000000..655868c2 --- /dev/null +++ b/INSTALL/opensuse.sh @@ -0,0 +1,182 @@ +#!/bin/bash +echo "=========================================================" +echo "==!! Shinobi : The Open Source CCTV and NVR Solution !!==" +echo "=========================================================" +echo "To answer yes type the letter (y) in lowercase and press ENTER." +echo "Default is no (N). Skip any components you already have or don't need." +echo "=============" +if [ ! -e "./conf.json" ]; then + cp conf.sample.json conf.json +fi +if [ ! -e "./super.json" ]; then + echo "Default Superuser : admin@shinobi.video" + echo "Default Password : admin" + sudo cp super.sample.json super.json + echo "Shinobi - Do you want to enable superuser access?" + echo "This may be useful if passwords are forgotten or" + echo "if you would like to limit accessibility of an" + echo "account for business scenarios." + echo "(y)es or (N)o" + read createSuperJson + if [ "$createSuperJson" = "y" ] || [ "$createSuperJson" = "Y" ]; then + echo "Default Superuser : admin@shinobi.video" + echo "Default Password : admin" + echo "* You can edit these settings in \"super.json\" located in the Shinobi directory." + sudo cp super.sample.json super.json + fi +fi +echo "Shinobi - Run yum update" +sudo zypper refresh +sudo zypper install -y make +echo "=============" +echo "Shinobi - Do you want to Install FFMPEG?" +echo "(y)es or (N)o" +read ffmpeginstall +if [ "$ffmpeginstall" = "y" ] || [ "$ffmpeginstall" = "Y" ]; then + echo "Shinobi - Do you want to Install FFMPEG with `apt` or download a static version provided with `npm`?" + echo "(a)pt or (N)pm" + echo "Press [ENTER] for default (npm)" + read ffmpegstaticinstall + if [ "$ffmpegstaticinstall" = "a" ] || [ "$ffmpegstaticinstall" = "A" ]; then + # Install ffmpeg and ffmpeg-devel + sudo zypper install -y ffmpeg ffmpeg-devel + else + sudo npm install ffmpeg-static@2.2.1 + fi +fi +echo "Shinobi - Do you want to Install Node.js?" +echo "(y)es or (N)o" +read nodejsinstall +if [ "$nodejsinstall" = "y" ] || [ "$nodejsinstall" = "Y" ]; then + sudo zypper install -y nodejs8 +fi +echo "=============" +echo "Shinobi - Do you want to use MariaDB or SQLite3?" +echo "SQLite3 is better for small installs" +echo "MariaDB (MySQL) is better for large installs" +echo "(S)QLite3 or (M)ariaDB?" +echo "Press [ENTER] for default (MariaDB)" +read sqliteormariadb +if [ "$sqliteormariadb" = "S" ] || [ "$sqliteormariadb" = "s" ]; then + sudo npm install jsonfile + sudo zypper install -y sqlite3 sqlite3-devel + sudo npm install sqlite3 + node ./tools/modifyConfiguration.js databaseType=sqlite3 + if [ ! -e "./shinobi.sqlite" ]; then + echo "Creating shinobi.sqlite for SQLite3..." + sudo cp sql/shinobi.sample.sqlite shinobi.sqlite + else + echo "shinobi.sqlite already exists. Continuing..." + fi +else + echo "=============" + echo "Shinobi - Do you want to Install MariaDB?" + echo "(y)es or (N)o" + read mysqlagree + if [ "$mysqlagree" = "y" ] || [ "$mysqlagree" = "Y" ]; then + sudo zypper install -y mariadb + #Start mysql and enable on boot + sudo systemctl start mariadb + sudo systemctl enable mariadb + #Run mysql install + sudo mysql_secure_installation + fi + echo "=============" + echo "Shinobi - Database Installation" + echo "(y)es or (N)o" + read mysqlagreeData + if [ "$mysqlagreeData" = "y" ] || [ "$mysqlagreeData" = "Y" ]; then + echo "What is your SQL Username?" + read sqluser + echo "What is your SQL Password?" + read sqlpass + sudo mysql -u $sqluser -p$sqlpass -e "source sql/user.sql" || true + sudo mysql -u $sqluser -p$sqlpass -e "source sql/framework.sql" || true + echo "Shinobi - Do you want to create a new user for viewing and managing cameras in Shinobi? You can do this later in the Superuser panel." + echo "(y)es or (N)o" + read mysqlDefaultData + if [ "$mysqlDefaultData" = "y" ] || [ "$mysqlDefaultData" = "Y" ]; then + escapeReplaceQuote='\\"' + groupKey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 7 | head -n 1) + userID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1) + userEmail=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1)"@"$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1)".com" + userPasswordPlain=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1) + userPasswordMD5=$(echo -n "$userPasswordPlain" | md5sum | awk '{print $1}') + userDetails='{"days":"10"}' + userDetails=$(echo "$userDetails" | sed -e 's/"/'$escapeReplaceQuote'/g') + echo $userDetailsNew + apiIP='0.0.0.0' + apiKey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) + apiDetails='{"auth_socket":"1","get_monitors":"1","control_monitors":"1","get_logs":"1","watch_stream":"1","watch_snapshot":"1","watch_videos":"1","delete_videos":"1"}' + apiDetails=$(echo "$apiDetails" | sed -e 's/"/'$escapeReplaceQuote'/g') + rm sql/default_user.sql || true + echo "USE ccio;INSERT INTO Users (\`ke\`,\`uid\`,\`auth\`,\`mail\`,\`pass\`,\`details\`) VALUES (\"$groupKey\",\"$userID\",\"$apiKey\",\"$userEmail\",\"$userPasswordMD5\",\"$userDetails\");INSERT INTO API (\`code\`,\`ke\`,\`uid\`,\`ip\`,\`details\`) VALUES (\"$apiKey\",\"$groupKey\",\"$userID\",\"$apiIP\",\"$apiDetails\");" > "sql/default_user.sql" + sudo mysql -u $sqluser -p$sqlpass --database ccio -e "source sql/default_user.sql" > "INSTALL/log.txt" + echo "The following details will be shown again at the end of the installation." + echo "=====================================" + echo "======= Login Credentials =======" + echo "|| Username : $userEmail" + echo "|| Password : $userPasswordPlain" + echo "|| API Key : $apiKey" + echo "=====================================" + echo "=====================================" + echo "** To change these settings login to either to the Superuser panel or login to the dashboard as the user that was just created and open the Settings window. **" + fi + fi +fi +echo "=============" +echo "Shinobi - Install NPM Libraries" +sudo npm install +echo "=============" +echo "Shinobi - Install PM2" +sudo npm install pm2 -g +echo "Shinobi - Finished" +sudo chmod -R 755 . +touch INSTALL/installed.txt +if [ "$mysqlDefaultData" = "y" ] || [ "$mysqlDefaultData" = "Y" ]; then + echo "=====================================" > INSTALL/installed.txt + echo "======= Login Credentials =======" >> INSTALL/installed.txt + echo "|| Username : $userEmail" >> INSTALL/installed.txt + echo "|| Password : $userPasswordPlain" >> INSTALL/installed.txt + echo "|| API Key : $apiKey" >> INSTALL/installed.txt + echo "=====================================" >> INSTALL/installed.txt + echo "=====================================" >> INSTALL/installed.txt +fi +echo "Shinobi - Start Shinobi and set to start on boot?" +echo "(y)es or (N)o" +read startShinobi +if [ "$startShinobi" = "y" ] || [ "$startShinobi" = "Y" ]; then + sudo pm2 start camera.js + sudo pm2 start cron.js + sudo pm2 startup + sudo pm2 save + sudo pm2 list +fi +if [ "$mysqlDefaultData" = "y" ] || [ "$mysqlDefaultData" = "Y" ]; then + echo "details written to INSTALL/installed.txt" + echo "=====================================" + echo "======= Login Credentials =======" + echo "|| Username : $userEmail" + echo "|| Password : $userPasswordPlain" + echo "|| API Key : $apiKey" + echo "=====================================" + echo "=====================================" +fi +if [ ! "$sqliteormariadb" = "M" ] && [ ! "$sqliteormariadb" = "m" ]; then + echo "=====================================" + echo "||===== Install Completed =====||" + echo "=====================================" + echo "|| Login with the Superuser and create a new user!!" + echo "||===================================" + echo "|| Open http://$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1):8080/super in your web browser." + echo "||===================================" + echo "|| Default Superuser : admin@shinobi.video" + echo "|| Default Password : admin" + echo "=====================================" + echo "=====================================" +else + echo "+=================================+" + echo "||===== Install Completed =====||" + echo "|| Access the main Shinobi panel at http://$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1):8080 in your web browser." + echo "+=================================+" +fi From fe2727efa7efc75a526326e33110362e09654abe Mon Sep 17 00:00:00 2001 From: Adam Radovits Date: Mon, 27 Aug 2018 19:52:05 +0000 Subject: [PATCH 2/5] Added OpenSUSE support --- INSTALL/now.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/INSTALL/now.sh b/INSTALL/now.sh index 55ee23f5..86c4d1b3 100644 --- a/INSTALL/now.sh +++ b/INSTALL/now.sh @@ -8,6 +8,7 @@ echo "1. Ubuntu" echo "2. CentOS" echo "3. MacOS" echo "4. FreeBSD" +echo "5. OpenSUSE" echo "========" read oschoicee case $oschoicee in @@ -27,6 +28,11 @@ INSTALL/macos.sh chmod +x INSTALL/freebsd.sh INSTALL/freebsd.sh ;; +"5") +chmod +x INSTALL/opensuse.sh +INSTALL/opensuse.sh + ;; + *) echo "Choice not found." ;; From ab9f0ec4f4f654036bb0c4247da97961cd0624bd Mon Sep 17 00:00:00 2001 From: Adam Radovits Date: Mon, 27 Aug 2018 20:02:02 +0000 Subject: [PATCH 3/5] NodeJS install fix --- INSTALL/opensuse.sh | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/INSTALL/opensuse.sh b/INSTALL/opensuse.sh index 655868c2..6575ffa7 100644 --- a/INSTALL/opensuse.sh +++ b/INSTALL/opensuse.sh @@ -25,31 +25,39 @@ if [ ! -e "./super.json" ]; then sudo cp super.sample.json super.json fi fi -echo "Shinobi - Run yum update" +echo "Shinobi - Run zypper update" sudo zypper refresh sudo zypper install -y make echo "=============" +echo "Shinobi - Do you want to Install Node.js?" +echo "(y)es or (N)o" +NODEJSINSTALL=0 +read nodejsinstall +if [ "$nodejsinstall" = "y" ] || [ "$nodejsinstall" = "Y" ]; then + sudo zypper install -y nodejs8 + NODEJSINSTALL=1 +fi +echo "=============" echo "Shinobi - Do you want to Install FFMPEG?" echo "(y)es or (N)o" read ffmpeginstall if [ "$ffmpeginstall" = "y" ] || [ "$ffmpeginstall" = "Y" ]; then - echo "Shinobi - Do you want to Install FFMPEG with `apt` or download a static version provided with `npm`?" - echo "(a)pt or (N)pm" - echo "Press [ENTER] for default (npm)" - read ffmpegstaticinstall - if [ "$ffmpegstaticinstall" = "a" ] || [ "$ffmpegstaticinstall" = "A" ]; then - # Install ffmpeg and ffmpeg-devel - sudo zypper install -y ffmpeg ffmpeg-devel + # Without nodejs8 package we can't use npm command + if [ "$NODEJSINSTALL" -eq "1" ]; then + echo "Shinobi - Do you want to Install FFMPEG with `zypper --version` or download a static version provided with `npm --version`?" + echo "(z)ypper or (N)pm" + echo "Press [ENTER] for default (npm)" + read ffmpegstaticinstall + if [ "$ffmpegstaticinstall" = "z" ] || [ "$ffmpegstaticinstall" = "Z" ]; then + # Install ffmpeg and ffmpeg-devel + sudo zypper install -y ffmpeg ffmpeg-devel + else + sudo npm install ffmpeg-static@2.2.1 + fi else - sudo npm install ffmpeg-static@2.2.1 + sudo zypper install -y ffmpeg ffmpeg-devel fi fi -echo "Shinobi - Do you want to Install Node.js?" -echo "(y)es or (N)o" -read nodejsinstall -if [ "$nodejsinstall" = "y" ] || [ "$nodejsinstall" = "Y" ]; then - sudo zypper install -y nodejs8 -fi echo "=============" echo "Shinobi - Do you want to use MariaDB or SQLite3?" echo "SQLite3 is better for small installs" From 698229a3f8058f066cc354d5d8f7a8ba429191b2 Mon Sep 17 00:00:00 2001 From: Adam Radovits Date: Mon, 27 Aug 2018 20:04:16 +0000 Subject: [PATCH 4/5] Small npm fix --- INSTALL/opensuse.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL/opensuse.sh b/INSTALL/opensuse.sh index 6575ffa7..f81e4f64 100644 --- a/INSTALL/opensuse.sh +++ b/INSTALL/opensuse.sh @@ -44,7 +44,7 @@ read ffmpeginstall if [ "$ffmpeginstall" = "y" ] || [ "$ffmpeginstall" = "Y" ]; then # Without nodejs8 package we can't use npm command if [ "$NODEJSINSTALL" -eq "1" ]; then - echo "Shinobi - Do you want to Install FFMPEG with `zypper --version` or download a static version provided with `npm --version`?" + echo "Shinobi - Do you want to Install FFMPEG with `zypper --version` or download a static version provided with npm `npm --version`?" echo "(z)ypper or (N)pm" echo "Press [ENTER] for default (npm)" read ffmpegstaticinstall From 0a69ba9a685f7e610ff1754f0b59c624aa5147f6 Mon Sep 17 00:00:00 2001 From: Adam Radovits Date: Mon, 27 Aug 2018 20:10:21 +0000 Subject: [PATCH 5/5] Small typo --- INSTALL/opensuse.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL/opensuse.sh b/INSTALL/opensuse.sh index f81e4f64..b408a768 100644 --- a/INSTALL/opensuse.sh +++ b/INSTALL/opensuse.sh @@ -25,7 +25,7 @@ if [ ! -e "./super.json" ]; then sudo cp super.sample.json super.json fi fi -echo "Shinobi - Run zypper update" +echo "Shinobi - Run zypper refresh" sudo zypper refresh sudo zypper install -y make echo "============="