<commit_before>#!/bin/bash -e

######################################################
# 	    Snipe-It Install Script    	             #
#	   Script created by <NAME>             #
#	     <EMAIL>                   #
# This script is just to help streamline the         #
# install process for Debian and CentOS              #
# based distributions. I assume you will be          #
# installing as a subdomain on a fresh OS install.   #
# Right now I'm not going to worry about SMTP setup  #
#                                                    #
# Feel free to modify, but please give               #
# credit where it's due. Thanks!                     #
######################################################

#First things first, let's set some variables and find our distro.
clear
si="Snipe-IT"
hostname="$(hostname)"
hosts=/etc/hosts
distro="$(cat /proc/version)"
file=master.zip
dir=/var/www/snipe-it-master

ans=default
case $distro in
        *Ubuntu*|*Debian*)
                echo "Ubuntu/Debian detected. Carry forth."
                distro=u
                ;;
        *centos*)
                echo "CentOS detected. Carry forth."
                distro=c
                ;;
        *)
                echo "Not sure of this OS. Exiting for safety."
		exit
                ;;
esac

#Get your FQDN.
echo ""
echo "$si install script - Installing $ans"
echo "Q. What is the FQDN of your server? (example: www.yourserver.com)"
read fqdn
echo ""

#Do you want to set your own passwords, or have me generate random ones?
ans=default
until [[ $ans == "yes" ]] || [[ $ans == "no" ]]; do
echo "Q. Do you want me to automatically create the MySQL root & user passwords? (y/n)"
read setpw

case $setpw in
        [yY] | [yY][Ee][Ss] )
                mysqlrootpw="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c8`)"
                mysqluserpw="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c8`)"
                echo "I'm putting this into /root/mysqlpasswords ... PLEASE REMOVE that file after you have recorded the passwords somewhere safe!"
                ans="yes"
                ;;
        [nN] | [n|N][O|o] )
		echo "Q. What do you want your root PW to be?"
                read mysqlrootpw
                echo "Q. What do you want your snipeit user PW to be?"
                read mysqluserpw
				ans="no"
                ;;
        *) echo "Invalid answer. Please type y or n"
                ;;
esac
done

#Snipe says we need a new 32bit key, so let's create one randomly and inject it into the file
random32="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c32`)"

#createstuff.sql will be injected to the database during install. mysqlpasswords.txt is a file that will contain the root and snipeit user passwords.
#Again, this file should be removed, which will be a prompt at the end of the script.
createstufffile=/root/createstuff.sql
passwordfile=/root/mysqlpasswords.txt

echo >> $createstufffile "CREATE DATABASE snipeit;"
echo >> $createstufffile "GRANT ALL PRIVILEGES ON snipeit.* TO snipeit@localhost IDENTIFIED BY '$mysqluserpw';"
echo >> $passwordfile "MySQL Passwords..."
echo >> $passwordfile "Root: $mysqlrootpw"
echo >> $passwordfile "User (snipeit): $mysqluserpw"
echo >> $passwordfile "32 bit random string: $random32"
echo "MySQL ROOT password: $mysql<PASSWORD>"
echo "MySQL USER (snipeit) password: $mysql<PASSWORD>"
echo "32 bit random string: $random32"
echo "These passwords have been exported to /root/mysqlpasswords.txt...I recommend You delete this file for security purposes"

#Let us make it so only root can read the file. Again, this isn't best practice, so please remove these after the install.
chown root:root $passwordfile $creatstufffile
chmod 700 $passwordfile $createstufffile

if [[ $distro == "u" ]]; then
#Update/upgrade Debian/Ubuntu repositories, get the latest version of git.
	apachefile=/etc/apache2/sites-available/$fqdn.conf
	sudo apt-get update ; sudo apt-get -y upgrade ;	sudo apt-get install -y git unzip

	wget https://github.com/snipe/snipe-it/archive/$file
	sudo unzip $file -d /var/www/

	#We already established MySQL root & user PWs, so we dont need to be prompted. Let's go ahead and install Apache, PHP and MySQL.
	sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lamp-server^
	sudo apt-get install -y php5 php5-mcrypt php5-curl php5-mysql

	#Create MySQL accounts
	echo "Create MySQL accounts"
	sudo mysqladmin -u root password $mysqlrootpw
	sudo mysql -u root -p$mysqlrootpw < /root/createstuff.sql

	#Enable mcrypt and rewrite
	sudo php5enmod mcrypt
	sudo a2enmod rewrite
	sudo ls -al /etc/apache2/mods-enabled/rewrite.load

	#Create a new virtual host for Apache.
	echo >> $apachefile ""
	echo >> $apachefile ""
	echo >> $apachefile "<VirtualHost *:80>"<commit_msg>Include installation of php-gd for Ubuntu<commit_after>#!/bin/bash -e

######################################################
# 	    Snipe-It Install Script    	             #
#	   Script created by <NAME>             #
#	     <EMAIL>                   #
# This script is just to help streamline the         #
# install process for Debian and CentOS              #
# based distributions. I assume you will be          #
# installing as a subdomain on a fresh OS install.   #
# Right now I'm not going to worry about SMTP setup  #
#                                                    #
# Feel free to modify, but please give               #
# credit where it's due. Thanks!                     #
######################################################

#First things first, let's set some variables and find our distro.
clear
si="Snipe-IT"
hostname="$(hostname)"
hosts=/etc/hosts
distro="$(cat /proc/version)"
file=master.zip
dir=/var/www/snipe-it-master

ans=default
case $distro in
        *Ubuntu*|*Debian*)
                echo "Ubuntu/Debian detected. Carry forth."
                distro=u
                ;;
        *centos*)
                echo "CentOS detected. Carry forth."
                distro=c
                ;;
        *)
                echo "Not sure of this OS. Exiting for safety."
		exit
                ;;
esac

#Get your FQDN.
echo ""
echo "$si install script - Installing $ans"
echo "Q. What is the FQDN of your server? (example: www.yourserver.com)"
read fqdn
echo ""

#Do you want to set your own passwords, or have me generate random ones?
ans=default
until [[ $ans == "yes" ]] || [[ $ans == "no" ]]; do
echo "Q. Do you want me to automatically create the MySQL root & user passwords? (y/n)"
read setpw

case $setpw in
        [yY] | [yY][Ee][Ss] )
                mysqlrootpw="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c8`)"
                mysqluserpw="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c8`)"
                echo "I'm putting this into /root/mysqlpasswords ... PLEASE REMOVE that file after you have recorded the passwords somewhere safe!"
                ans="yes"
                ;;
        [nN] | [n|N][O|o] )
		echo "Q. What do you want your root PW to be?"
                read mysqlrootpw
                echo "Q. What do you want your snipeit user PW to be?"
                read mysqluserpw
				ans="no"
                ;;
        *) echo "Invalid answer. Please type y or n"
                ;;
esac
done

#Snipe says we need a new 32bit key, so let's create one randomly and inject it into the file
random32="$(echo `< /dev/urandom tr -dc _A-Za-z-0-9 | head -c32`)"

#createstuff.sql will be injected to the database during install. mysqlpasswords.txt is a file that will contain the root and snipeit user passwords.
#Again, this file should be removed, which will be a prompt at the end of the script.
createstufffile=/root/createstuff.sql
passwordfile=/root/mysqlpasswords.txt

echo >> $createstufffile "CREATE DATABASE snipeit;"
echo >> $createstufffile "GRANT ALL PRIVILEGES ON snipeit.* TO snipeit@localhost IDENTIFIED BY '$mysqluserpw';"
echo >> $passwordfile "MySQL Passwords..."
echo >> $passwordfile "Root: $mysqlrootpw"
echo >> $passwordfile "User (snipeit): $mysqluserpw"
echo >> $passwordfile "32 bit random string: $random32"
echo "MySQL ROOT password: $<PASSWORD>"
echo "MySQL USER (snipeit) password: $<PASSWORD>"
echo "32 bit random string: $random32"
echo "These passwords have been exported to /root/mysqlpasswords.txt...I recommend You delete this file for security purposes"

#Let us make it so only root can read the file. Again, this isn't best practice, so please remove these after the install.
chown root:root $passwordfile $creatstufffile
chmod 700 $passwordfile $createstufffile

if [[ $distro == "u" ]]; then
#Update/upgrade Debian/Ubuntu repositories, get the latest version of git.
	apachefile=/etc/apache2/sites-available/$fqdn.conf
	sudo apt-get update ; sudo apt-get -y upgrade ;	sudo apt-get install -y git unzip

	wget https://github.com/snipe/snipe-it/archive/$file
	sudo unzip $file -d /var/www/

	#We already established MySQL root & user PWs, so we dont need to be prompted. Let's go ahead and install Apache, PHP and MySQL.
	sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lamp-server^
	sudo apt-get install -y php5 php5-mcrypt php5-curl php5-mysql php-gd

	#Create MySQL accounts
	echo "Create MySQL accounts"
	sudo mysqladmin -u root password $mysqlrootpw
	sudo mysql -u root -p$mysqlrootpw < /root/createstuff.sql

	#Enable mcrypt and rewrite
	sudo php5enmod mcrypt
	sudo a2enmod rewrite
	sudo ls -al /etc/apache2/mods-enabled/rewrite.load

	#Create a new virtual host for Apache.
	echo >> $apachefile ""
	echo >> $apachefile ""
	echo >> $apachefile "<VirtualHost *:80>"
{'fraction_non_alphanumeric': 0.12344126584931363, 'fraction_numerical': 0.007335219532641727, 'mean_word_length': 2.649713193116635, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 49, 'https://': 2, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3888477', 'n_tokens_mistral': 3096, 'n_tokens_neox': 2804, 'n_words': 1079}