Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- gitCode=/darkstar/sourcecode
- serverCode=/darkstar/ffxi
- rootSqlPassword=password
- dbUser=darkstar
- dbPassword=password
- dbName=dspdb
- dsversion=30161206_3
- # User ID
- userID=$(id|awk '{print$1}'|cut -d "(" -f2|sed 's/)//')
- groupID=$(id|awk '{print$2}'|cut -d "(" -f2|sed 's/)//')
- depend-s () {
- echo "Installing System Requirements"
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- sudo apt-get update
- sudo apt-get install -y python-dev build-essential git mysql-server libmysqlclient-dev libluajit-5.1-dev libzmq3-dev autoconf pkg-config python-pip g++-5 screen
- sudo pip install --upgrade pip
- sudo pip install --upgrade virtualenv
- sudo pip install sqlalchemy pymysql beautifulsoup4 pyyaml
- sudo rm /usr/bin/gcc /usr/bin/g++ /usr/bin/cpp
- sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc
- sudo ln -s /usr/bin/g++-5 /usr/bin/g++
- sudo ln -s /usr/bin/cpp-5 /usr/bin/cpp
- }
- pullcode () {
- if [ "$(ls -A $gitCode)" ]; then
- echo "Directory is not Empty, updating"
- dsp_update
- else
- #echo "$gitCode is Empty"
- #echo 'Installing and configuring system requirements. '
- # Fetch new code from GIT
- echo 'Fetching Server source code.'
- git clone http://github.com/DarkstarProject/darkstar.git/ $gitCode/
- git clone https://github.com/AdamGagorik/pydarkstar $gitCode/auctionhouse/
- echo 'Source code downloaded. Now compiling the code.'
- compiler
- fi
- }
- dsp_update () {
- cd $gitCode/
- var4="$(git pull)"
- if [[ $var4 == *"up-to-date"* ]] ; then
- echo "Darkstar is up to date"
- else
- # Recompile code
- echo 'Recompiling Code'
- compiler
- fi
- }
- compiler () {
- echo '----- Force Recompiling Code -----'
- #serverCode=/darkstar/ffxi
- rm -rf $serverCode
- read -p "Press any key to continue... " -n1 -s
- # Moving code
- mkdir $serverCode
- echo 'Copying code'
- cp -Rf $gitCode/* $serverCode/
- # Compiling code
- echo 'Compiling code'
- chmod +x $serverCode/autogen.sh
- cd $serverCode; ./autogen.sh; ./configure --enable-debug=gdb; make -j 4
- clear
- echo 'Code compile complete.'
- }
- db-user-s () {
- # Create Server Database and User
- mysql -uroot -p$rootSqlPassword <<MYSQL_SCRIPT
- CREATE DATABASE $dbName;
- CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbPassword';
- GRANT ALL PRIVILEGES ON $dbName .* TO '$dbUser'@'localhost';
- FLUSH PRIVILEGES;
- EXIT
- MYSQL_SCRIPT
- }
- db-init-s () {
- mysql -uroot -p$rootSqlPassword <<MYSQL_SCRIPT
- CREATE DATABASE $dbName;
- GRANT ALL PRIVILEGES ON $dbName .* TO '$dbUser'@'localhost';
- FLUSH PRIVILEGES;
- EXIT
- MYSQL_SCRIPT
- # Importing Databases into SQL
- cd $serverCode/sql/; for f in $serverCode/sql/*.sql;do mysql $dbName -u $dbUser -p$dbPassword < $f;done
- }
- dsconf-s () {
- #serverCode=/darkstar/ffxi
- #sudo chown pi:pi $serverCode/version.info
- #perl -pi -e 's/CLIENT_VER: 30161103_1/CLIENT_VER: '$dsversion'/g' $serverCode/version.info
- # Updating Darkstar configuration file
- perl -pi -e 's/mysql_login: root/mysql_login: '$dbUser'/g' $serverCode/conf/login_darkstar.conf
- perl -pi -e 's/mysql_password: root/mysql_password: '$dbPassword'/g' $serverCode/conf/login_darkstar.conf
- perl -pi -e 's/mysql_database: dspdb/mysql_database: '$dbName'/g' $serverCode/conf/login_darkstar.conf
- perl -pi -e 's/mysql_login: root/mysql_login: '$dbUser'/g' $serverCode/conf/map_darkstar.conf
- perl -pi -e 's/mysql_password: root/mysql_password: '$dbPassword'/g' $serverCode/conf/map_darkstar.conf
- perl -pi -e 's/mysql_database: dspdb/mysql_database: '$dbName'/g' $serverCode/conf/map_darkstar.conf
- perl -pi -e 's/mysql_login: root/mysql_login: '$dbUser'/g' $serverCode/conf/search_server.conf
- perl -pi -e 's/mysql_password: root/mysql_password: '$dbPassword'/g' $serverCode/conf/search_server.conf
- perl -pi -e 's/mysql_database: dspdb/mysql_database: '$dbName'/g' $serverCode/conf/search_server.conf
- #perl -pi -e 's/ map_config.mysql_login = "root";/ map_config.mysql_login = "'$dbUser'";/g' $serverCode/src/map/map.cpp
- #perl -pi -e 's/ map_config.mysql_password = "root";/ map_config.mysql_password = "'$dbPassword'";/g' $serverCode/src/map/map.cpp
- #perl -pi -e 's/ map_config.mysql_database = "dspdb";/ map_config.mysql_database = "'$dbName'";/g' $serverCode/src/map/map.cpp
- #perl -pi -e 's/ search_config.mysql_login = "root";/ search_config.mysql_login = "'$dbUser'";/g' $serverCode/src/search/search.cpp
- #perl -pi -e 's/ search_config.mysql_password = "root";/ search_config.mysql_password = "'$dbPassword'";/g' $serverCode/src/search/search.cpp
- #perl -pi -e 's/ search_config.mysql_database = "dspdb";/ search_config.mysql_database = "'$dbName'";/g' $serverCode/src/search/search.cpp
- }
- zoneupdate () {
- # IP Information
- publicIP=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com)
- # Setting external IP in Database zone_settings
- mysql -u$dbUser -p$dbPassword <<MYSQL_SCRIPT
- USE $dbName;
- UPDATE zone_settings SET zoneip = $publicIP;
- EXIT
- MYSQL_SCRIPT
- }
- ah_update () {
- # Populate AH
- chmod +x $serverCode/auctionhouse/bin/*.py
- # Updating configuration file
- perl -pi -e 's/database: dspdb/database: '$dbName'/g' $serverCode/auctionhouse/bin/config.yaml
- perl -pi -e 's/username: root/username: '$dbUser'/g' $serverCode/auctionhouse/bin/config.yaml
- perl -pi -e 's/password: \?\?\?\?/password: '$dbPassword'/g' $serverCode/auctionhouse/bin/config.yaml
- }
- service_sh () {
- # Create Start/Stop/Restart script
- sudo touch /etc/init.d/ffxi;sudo chown $userID:$groupID /etc/init.d/ffxi;sudo chmod 755 /etc/init.d/ffxi
- echo -e "#!/bin/bash\nFF_DIR='"$serverCode"'\ncase \"\$1\" in\n start)\n cd \$FF_DIR/\n /usr/bin/screen -dmS lobby \$FF_DIR/dsconnect\n echo 'Lobby has Started.'\n /usr/bin/screen -dmS game \$FF_DIR/dsgame\n echo 'Game has Started.'\n /usr/bin/screen -dmS search \$FF_DIR/dssearch\n echo 'Search has Started.'\n cd \$FF_DIR/auctionhouse/bin/\n /usr/bin/screen -dmS auction \$FF_DIR/auctionhouse/bin/broker.py\n echo 'Auction House has Started.'\n ;;\n stop)\n /usr/bin/screen -XS lobby quit\n echo 'Lobby has been Shutdown.'\n /usr/bin/screen -XS game quit\n echo 'Game has been Shutdown.'\n /usr/bin/screen -XS search quit\n echo 'Search has been Shutdown.'\n /usr/bin/screen -XS auction quit\n echo 'Auction House has been Shutdown.'\n ;;\n restart)\n /usr/bin/screen -XS lobby quit\n echo 'Lobby has been Shutdown.'\n /usr/bin/screen -XS game quit\n echo 'Game has been Shutdown.'\n /usr/bin/screen -XS search quit\n echo 'Search has been Shutdown.'\n /usr/bin/screen -XS auction quit\n echo 'Auction House has been Shutdown.'\n sleep 30\n cd \$FF_DIR/\n /usr/bin/screen -dmS lobby \$FF_DIR/dsconnect\n echo 'Lobby has Started.'\n /usr/bin/screen -dmS game \$FF_DIR/dsgame\n echo 'Game has Started.'\n /usr/bin/screen -dmS search \$FF_DIR/dssearch\n echo 'Search has Started.'\n cd \$FF_DIR/auctionhouse/bin/\n /usr/bin/screen -dmS auction \$FF_DIR/auctionhouse/bin/broker.py\n echo 'Auction House has Started.'\n ;;\n *)\n echo \"Usage: FFXI-Server {start|stop|restart}\" >&2\n exit 3\n ;;\nesac" > /etc/init.d/ffxi
- }
- # Cases
- case "$1" in
- "" )
- echo "Usage install | -update -recompile -db-init -dsconf"
- ;;
- install )
- depend-s
- pullcode
- db-user-s
- ;;
- -depend )
- depend-s
- ;;
- -update )
- pullcode
- ;;
- -recompile )
- compiler
- ;;
- -db-user )
- db-user-s
- ;;
- -db-init )
- db-init-s
- ;;
- -dsconf )
- dsconf-s
- ;;
- *)
- exit 1
- ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement