Makefile 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. include .env
  2. #---------------------------------------------------------------
  3. # Section utilized by various shell scripts within Deployment_Scripts
  4. start-linux:
  5. `pwd`/Start-Linux.sh
  6. run-server:
  7. `pwd`/Deployment_Scripts/run.sh
  8. run-client:
  9. ant -f Client_Base/build.xml runclient
  10. combined-install:
  11. `pwd`/Deployment_Scripts/combined-install.sh
  12. docker-install:
  13. `pwd`/Deployment_Scripts/docker-install.sh
  14. get-updates:
  15. `pwd`/Deployment_Scripts/get-updates.sh
  16. compile:
  17. `pwd`/Deployment_Scripts/get-updates.sh
  18. #---------------------------------------------------------------
  19. # MariaDB-only server container control section
  20. start:
  21. docker-compose -f docker-compose.yml up -d
  22. stop:
  23. docker-compose -f docker-compose.yml down -v
  24. restart:
  25. docker-compose -f docker-compose.yml down -v
  26. docker-compose -f docker-compose.yml up -d
  27. logs:
  28. docker-compose -f docker-compose.yml logs -f
  29. #---------------------------------------------------------------
  30. # Sets a specified username to be in a specified group in a specified database
  31. # Call via "make rank-mariadb db=cabbage group=0 username=wolf"
  32. rank-mariadb:
  33. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  34. @[ "${group}" ] || ( echo ">> group is not set"; exit 1 )
  35. @[ "${username}" ] || ( echo ">> username is not set"; exit 1 )
  36. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} -e "USE ${db}; UPDATE players SET group_id = '${group}' WHERE players.username = '${username}';"
  37. # Sets a specified username to be in a specified group in a specified database
  38. # Call via "make rank-sqlite db=cabbage group=0 username=wolf"
  39. rank-sqlite:
  40. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  41. @[ "${group}" ] || ( echo ">> group is not set"; exit 1 )
  42. @[ "${username}" ] || ( echo ">> username is not set"; exit 1 )
  43. sqlite3 server/inc/sqlite/${db}.db "UPDATE players SET group_id = '${group}' WHERE players.username = '${username}';" ".exit"
  44. # Changes a specified username to be a new username in a specified database
  45. # Call via "make namechange-mariadb db=cabbage oldname=wolf newname=wolf2"
  46. namechange-mariadb:
  47. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  48. @[ "${oldname}" ] || ( echo ">> oldname is not set"; exit 1 )
  49. @[ "${newname}" ] || ( echo ">> newname is not set"; exit 1 )
  50. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} -e "USE ${db}; UPDATE players SET username = '${newname}' WHERE players.username = '${oldname}';"
  51. # Changes a specified username to be a new username in a specified database
  52. # Call via "make namechange-sqlite db=cabbage oldname=wolf newname=wolf2"
  53. namechange-sqlite:
  54. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  55. @[ "${oldname}" ] || ( echo ">> oldname is not set"; exit 1 )
  56. @[ "${newname}" ] || ( echo ">> newname is not set"; exit 1 )
  57. sqlite3 server/inc/sqlite/${db}.db "UPDATE players SET username = '${newname}' WHERE players.username = '${oldname}';" ".exit"
  58. # Creates a database that the user specifies the name of
  59. # Call via "make create-mariadb db=cabbage"
  60. create-mariadb:
  61. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  62. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} -e "create database ${db};"
  63. # Imports the core.sql file to a specified database
  64. # Call via "make import-authentic-mariadb db=preservation"
  65. import-authentic-mariadb:
  66. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  67. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/core.sql
  68. # Imports the core.sqlite file to a specified database
  69. # Call via "make import-authentic-sqlite db=preservation"
  70. import-authentic-sqlite:
  71. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  72. cat server/database/sqlite/core.sqlite | sqlite3 server/inc/sqlite/${db}.db
  73. # Imports the addon sql files to a specified database
  74. # Call via "make import-custom-mariadb db=cabbage"
  75. import-custom-mariadb:
  76. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  77. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/core.sql
  78. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_auctionhouse.sql
  79. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_bank_presets.sql
  80. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_clans.sql
  81. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_equipment_tab.sql
  82. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_harvesting.sql
  83. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_npc_kill_counting.sql
  84. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/addons/add_runecraft.sql
  85. # Imports the addon sqlite files to a specified database
  86. # Call via "make import-custom-sqlite db=cabbage"
  87. import-custom-sqlite:
  88. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  89. cat server/database/sqlite/core.sqlite | sqlite3 server/inc/sqlite/${db}.db
  90. cat server/database/sqlite/addons/add_auctionhouse.sqlite | sqlite3 server/inc/sqlite/${db}.db
  91. cat server/database/sqlite/addons/add_bank_presets.sqlite | sqlite3 server/inc/sqlite/${db}.db
  92. cat server/database/sqlite/addons/add_clans.sqlite | sqlite3 server/inc/sqlite/${db}.db
  93. cat server/database/sqlite/addons/add_equipment_tab.sqlite | sqlite3 server/inc/sqlite/${db}.db
  94. cat server/database/sqlite/addons/add_npc_kill_counting.sqlite | sqlite3 server/inc/sqlite/${db}.db
  95. # Imports the retro.sql file to a specified database
  96. # Call via "make import-retro-mariadb db=2001scape"
  97. import-retro-mariadb:
  98. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  99. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} < server/database/mysql/retro.sql
  100. # Imports the retro.sqlite file to a specified database
  101. # Call via "make import-retro-sqlite db=2001scape"
  102. import-retro-sqlite:
  103. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  104. rm server/inc/sqlite/${db}.db
  105. cat server/database/sqlite/retro.sqlite | sqlite3 server/inc/sqlite/${db}.db
  106. # Creates a database export of the specified database and saves to the output directory specified in the .env file. Good for utilizing as a crontab.
  107. # Call via "make backup-mariadb db=cabbage"
  108. backup-mariadb:
  109. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  110. mkdir -p $(MYSQL_DUMPS_DIR)
  111. chmod -R 777 $(MYSQL_DUMPS_DIR)
  112. docker exec mariadb mysqldump -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db} --single-transaction --quick --lock-tables=false | zip > $(MYSQL_DUMPS_DIR)/`date "+%Y%m%d-%H%M-%Z"`-${db}.zip
  113. backup-mariadb-bash:
  114. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  115. $(shell ./Deployment_Scripts/backup-mariadb.sh ${MYSQL_DUMPS_DIR} ${db})
  116. # Creates a database export of the specified database and saves to the output directory specified in the .env file. Good for utilizing as a crontab.
  117. # Call via "make backup-sqlite db=cabbage"
  118. backup-sqlite:
  119. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  120. mkdir -p $(MYSQL_DUMPS_DIR)
  121. chmod -R 777 $(MYSQL_DUMPS_DIR)
  122. echo .dump | sqlite3 server/inc/sqlite/${db}.db | zip > $(MYSQL_DUMPS_DIR)/`date "+%Y%m%d-%H%M-%Z"`-${db}.zip
  123. # Unzips a database backup zip file in the output directory specified in the .env file and then imports it into the specified database as a database restoration from backup method
  124. # Call via "make restore-mariadb name=20191017-0226-EDT-cabbage.zip db=cabbage"
  125. restore-mariadb:
  126. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  127. @[ "${name}" ] || ( echo ">> name is not set"; exit 1 )
  128. unzip -p $(MYSQL_DUMPS_DIR)/${name} | docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} ${db}
  129. # Unzips a database backup zip file in the output directory specified in the .env file and then imports it into the specified database as a database restoration from backup method
  130. # Call via "make restore-mariadb name=20191017-0226-EDT-cabbage.zip db=cabbage"
  131. restore-sqlite:
  132. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  133. @[ "${name}" ] || ( echo ">> name is not set"; exit 1 )
  134. rm server/inc/sqlite/${db}.db
  135. echo .read | unzip -p $(MYSQL_DUMPS_DIR)/${name} | sqlite3 server/inc/sqlite/${db}.db
  136. # Deletes database backup zip files odler than the number of days specified. Good for utilizing as a crontab.
  137. # Call via "clear-backups days=90"
  138. clear-backups:
  139. @[ "${days}" ] || ( echo ">> days is not set"; exit 1 )
  140. find $(MYSQL_DUMPS_DIR)/*.zip -mtime +${days} -exec rm -f {} \;
  141. # Truncates database log tables that account for backup size bloat on heavy bot worlds
  142. # Call via "truncate db=uranium"
  143. truncate:
  144. @[ "${db}" ] || ( echo ">> db is not set"; exit 1 )
  145. docker exec -i mariadb mysql -u${MARIADB_ROOT_USER} -p${MARIADB_ROOT_PASSWORD} -e "USE ${db}; TRUNCATE generic_logs; TRUNCATE droplogs; TRUNCATE chat_logs; TRUNCATE logins; TRUNCATE trade_logs; TRUNCATE private_message_logs; TRUNCATE live_feeds;"