Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.54 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. gitCode=/darkstar/sourcecode
  4. serverCode=/darkstar/ffxi
  5. rootSqlPassword=password
  6. dbUser=darkstar
  7. dbPassword=password
  8. dbName=dspdb
  9. dsversion=30161206_3
  10.  
  11. # User ID
  12. userID=$(id|awk '{print$1}'|cut -d "(" -f2|sed 's/)//')
  13. groupID=$(id|awk '{print$2}'|cut -d "(" -f2|sed 's/)//')
  14.  
  15. depend-s () {
  16. echo "Installing System Requirements"
  17. sudo add-apt-repository ppa:ubuntu-toolchain-r/test
  18. sudo apt-get update
  19. 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
  20. sudo pip install --upgrade pip
  21. sudo pip install --upgrade virtualenv
  22. sudo pip install sqlalchemy pymysql beautifulsoup4 pyyaml
  23. sudo rm /usr/bin/gcc /usr/bin/g++ /usr/bin/cpp
  24. sudo ln -s /usr/bin/gcc-5 /usr/bin/gcc
  25. sudo ln -s /usr/bin/g++-5 /usr/bin/g++
  26. sudo ln -s /usr/bin/cpp-5 /usr/bin/cpp
  27. }
  28.  
  29. pullcode () {
  30.  
  31. if [ "$(ls -A $gitCode)" ]; then
  32.  
  33. echo "Directory is not Empty, updating"
  34.  
  35. dsp_update
  36.  
  37. else
  38. #echo "$gitCode is Empty"
  39. #echo 'Installing and configuring system requirements. '
  40.  
  41. # Fetch new code from GIT
  42. echo 'Fetching Server source code.'
  43. git clone http://github.com/DarkstarProject/darkstar.git/ $gitCode/
  44. git clone https://github.com/AdamGagorik/pydarkstar $gitCode/auctionhouse/
  45. echo 'Source code downloaded. Now compiling the code.'
  46.  
  47. compiler
  48. fi
  49. }
  50.  
  51. dsp_update () {
  52.  
  53. cd $gitCode/
  54. var4="$(git pull)"
  55.  
  56. if [[ $var4 == *"up-to-date"* ]] ; then
  57.  
  58. echo "Darkstar is up to date"
  59.  
  60. else
  61.  
  62. # Recompile code
  63. echo 'Recompiling Code'
  64.  
  65. compiler
  66.  
  67. fi
  68. }
  69.  
  70. compiler () {
  71. echo '----- Force Recompiling Code -----'
  72.  
  73. #serverCode=/darkstar/ffxi
  74.  
  75. rm -rf $serverCode
  76.  
  77. read -p "Press any key to continue... " -n1 -s
  78.  
  79. # Moving code
  80. mkdir $serverCode
  81.  
  82. echo 'Copying code'
  83.  
  84. cp -Rf $gitCode/* $serverCode/
  85.  
  86. # Compiling code
  87. echo 'Compiling code'
  88. chmod +x $serverCode/autogen.sh
  89.  
  90. cd $serverCode; ./autogen.sh; ./configure --enable-debug=gdb; make -j 4
  91. clear
  92. echo 'Code compile complete.'
  93.  
  94. }
  95.  
  96. db-user-s () {
  97. # Create Server Database and User
  98.  
  99. mysql -uroot -p$rootSqlPassword <<MYSQL_SCRIPT
  100. CREATE DATABASE $dbName;
  101. CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbPassword';
  102. GRANT ALL PRIVILEGES ON $dbName .* TO '$dbUser'@'localhost';
  103. FLUSH PRIVILEGES;
  104. EXIT
  105. MYSQL_SCRIPT
  106. }
  107.  
  108. db-init-s () {
  109. mysql -uroot -p$rootSqlPassword <<MYSQL_SCRIPT
  110. CREATE DATABASE $dbName;
  111. GRANT ALL PRIVILEGES ON $dbName .* TO '$dbUser'@'localhost';
  112. FLUSH PRIVILEGES;
  113. EXIT
  114. MYSQL_SCRIPT
  115.  
  116. # Importing Databases into SQL
  117. cd $serverCode/sql/; for f in $serverCode/sql/*.sql;do mysql $dbName -u $dbUser -p$dbPassword < $f;done
  118. }
  119.  
  120. dsconf-s () {
  121.  
  122. #serverCode=/darkstar/ffxi
  123. #sudo chown pi:pi $serverCode/version.info
  124. #perl -pi -e 's/CLIENT_VER: 30161103_1/CLIENT_VER: '$dsversion'/g' $serverCode/version.info
  125.  
  126. # Updating Darkstar configuration file
  127. perl -pi -e 's/mysql_login: root/mysql_login: '$dbUser'/g' $serverCode/conf/login_darkstar.conf
  128. perl -pi -e 's/mysql_password: root/mysql_password: '$dbPassword'/g' $serverCode/conf/login_darkstar.conf
  129. perl -pi -e 's/mysql_database: dspdb/mysql_database: '$dbName'/g' $serverCode/conf/login_darkstar.conf
  130. perl -pi -e 's/mysql_login: root/mysql_login: '$dbUser'/g' $serverCode/conf/map_darkstar.conf
  131. perl -pi -e 's/mysql_password: root/mysql_password: '$dbPassword'/g' $serverCode/conf/map_darkstar.conf
  132. perl -pi -e 's/mysql_database: dspdb/mysql_database: '$dbName'/g' $serverCode/conf/map_darkstar.conf
  133. perl -pi -e 's/mysql_login: root/mysql_login: '$dbUser'/g' $serverCode/conf/search_server.conf
  134. perl -pi -e 's/mysql_password: root/mysql_password: '$dbPassword'/g' $serverCode/conf/search_server.conf
  135. perl -pi -e 's/mysql_database: dspdb/mysql_database: '$dbName'/g' $serverCode/conf/search_server.conf
  136.  
  137. #perl -pi -e 's/ map_config.mysql_login = "root";/ map_config.mysql_login = "'$dbUser'";/g' $serverCode/src/map/map.cpp
  138. #perl -pi -e 's/ map_config.mysql_password = "root";/ map_config.mysql_password = "'$dbPassword'";/g' $serverCode/src/map/map.cpp
  139. #perl -pi -e 's/ map_config.mysql_database = "dspdb";/ map_config.mysql_database = "'$dbName'";/g' $serverCode/src/map/map.cpp
  140. #perl -pi -e 's/ search_config.mysql_login = "root";/ search_config.mysql_login = "'$dbUser'";/g' $serverCode/src/search/search.cpp
  141. #perl -pi -e 's/ search_config.mysql_password = "root";/ search_config.mysql_password = "'$dbPassword'";/g' $serverCode/src/search/search.cpp
  142. #perl -pi -e 's/ search_config.mysql_database = "dspdb";/ search_config.mysql_database = "'$dbName'";/g' $serverCode/src/search/search.cpp
  143.  
  144. }
  145.  
  146. zoneupdate () {
  147. # IP Information
  148. publicIP=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com)
  149.  
  150. # Setting external IP in Database zone_settings
  151. mysql -u$dbUser -p$dbPassword <<MYSQL_SCRIPT
  152. USE $dbName;
  153. UPDATE zone_settings SET zoneip = $publicIP;
  154. EXIT
  155. MYSQL_SCRIPT
  156.  
  157. }
  158.  
  159. ah_update () {
  160. # Populate AH
  161. chmod +x $serverCode/auctionhouse/bin/*.py
  162.  
  163. # Updating configuration file
  164. perl -pi -e 's/database: dspdb/database: '$dbName'/g' $serverCode/auctionhouse/bin/config.yaml
  165. perl -pi -e 's/username: root/username: '$dbUser'/g' $serverCode/auctionhouse/bin/config.yaml
  166. perl -pi -e 's/password: \?\?\?\?/password: '$dbPassword'/g' $serverCode/auctionhouse/bin/config.yaml
  167. }
  168.  
  169. service_sh () {
  170.  
  171. # Create Start/Stop/Restart script
  172. sudo touch /etc/init.d/ffxi;sudo chown $userID:$groupID /etc/init.d/ffxi;sudo chmod 755 /etc/init.d/ffxi
  173. 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
  174. }
  175.  
  176. # Cases
  177. case "$1" in
  178.  
  179. "" )
  180. echo "Usage install | -update -recompile -db-init -dsconf"
  181. ;;
  182.  
  183. install )
  184. depend-s
  185. pullcode
  186. db-user-s
  187. ;;
  188.  
  189. -depend )
  190. depend-s
  191. ;;
  192.  
  193. -update )
  194. pullcode
  195. ;;
  196.  
  197. -recompile )
  198. compiler
  199. ;;
  200.  
  201. -db-user )
  202. db-user-s
  203. ;;
  204.  
  205. -db-init )
  206. db-init-s
  207. ;;
  208.  
  209. -dsconf )
  210. dsconf-s
  211. ;;
  212.  
  213. *)
  214. exit 1
  215. ;;
  216. esac
  217.  
  218. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement