123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- #!/bin/bash
- ##########################################################################
- ## Copyright (C) 2004-2013 L2J DataPack ##
- ## ##
- ## This file is part of L2J DataPack. ##
- ## ##
- ## L2J DataPack is free software: you can redistribute it and/or modify ##
- ## it under the terms of the GNU General Public License as published by ##
- ## the Free Software Foundation, either version 3 of the License, or ##
- ## (at your option) any later version. ##
- ## ##
- ## L2J DataPack is distributed in the hope that it will be useful, ##
- ## but WITHOUT ANY WARRANTY; without even the implied warranty of ##
- ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ##
- ## General Public License for more details. ##
- ## ##
- ## You should have received a copy of the GNU General Public License ##
- ## along with this program. If not, see <http://www.gnu.org/licenses/>. ##
- ##########################################################################
- ## WARNING! WARNING! WARNING! WARNING! ##
- ## ##
- ## DON'T USE NOTEPAD TO CHANGE THIS FILE ##
- ## INSTEAD USE SOME DECENT TEXT EDITOR. ##
- ## NEWLINE CHARACTERS DIFFER BETWEEN DOS/ ##
- ## WINDOWS AND UNIX. ##
- ## ##
- ## USING NOTEPAD TO SAVE THIS FILE WILL ##
- ## LEAVE IT IN A BROKEN STATE!!! ##
- ############################################
- ## Writen by DrLecter ##
- ## License: GNU GPL ##
- ## Based on Tiago Tagliaferri's script ##
- ## E-mail: tiago_tagliaferri@msn.com ##
- ## From "L2J-DataPack" ##
- ## Bug reports: http://trac.l2jdp.com/ ##
- ############################################
- trap finish 2
- configure() {
- echo "#############################################"
- echo "# You entered script configuration area #"
- echo "# No change will be performed in your DB #"
- echo "# I will just ask you some questions about #"
- echo "# your hosts and DB. #"
- echo "#############################################"
- MYSQLDUMPPATH=`which -a mysqldump 2>/dev/null`
- MYSQLPATH=`which -a mysql 2>/dev/null`
- if [ $? -ne 0 ]; then
- echo "We were unable to find MySQL binaries on your path"
- while :
- do
- echo -ne "\nPlease enter MySQL binaries directory (no trailing slash): "
- read MYSQLBINPATH
- if [ -e "$MYSQLBINPATH" ] && [ -d "$MYSQLBINPATH" ] && \
- [ -e "$MYSQLBINPATH/mysqldump" ] && [ -e "$MYSQLBINPATH/mysql" ]; then
- MYSQLDUMPPATH="$MYSQLBINPATH/mysqldump"
- MYSQLPATH="$MYSQLBINPATH/mysql"
- break
- else
- echo "The data you entered is invalid. Please verify and try again."
- exit 1
- fi
- done
- fi
- #LS
- echo -ne "\nPlease enter MySQL Login Server hostname (default localhost): "
- read LSDBHOST
- if [ -z "$LSDBHOST" ]; then
- LSDBHOST="localhost"
- fi
- echo -ne "\nPlease enter MySQL Login Server database name (default l2jls): "
- read LSDB
- if [ -z "$LSDB" ]; then
- LSDB="l2jls"
- fi
- echo -ne "\nPlease enter MySQL Login Server user (default root): "
- read LSUSER
- if [ -z "$LSUSER" ]; then
- LSUSER="root"
- fi
- echo -ne "\nPlease enter MySQL Login Server $LSUSER's password (won't be displayed) :"
- stty -echo
- read LSPASS
- stty echo
- echo ""
- if [ -z "$LSPASS" ]; then
- echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"
- elif [ "$LSUSER" == "$LSPASS" ]; then
- echo "You're not too brilliant choosing passwords huh?"
- fi
- #CB
- echo -ne "\nPlease enter MySQL Community Server hostname (default localhost): "
- read CBDBHOST
- if [ -z "$CBDBHOST" ]; then
- CBDBHOST="localhost"
- fi
- echo -ne "\nPlease enter MySQL Community Server database name (default l2jcs): "
- read CBDB
- if [ -z "$CBDB" ]; then
- CBDB="l2jcs"
- fi
- echo -ne "\nPlease enter MySQL Community Server user (default root): "
- read CBUSER
- if [ -z "$CBUSER" ]; then
- CBUSER="root"
- fi
- echo -ne "\nPlease enter MySQL Community Server $CBUSER's password (won't be displayed) :"
- stty -echo
- read CBPASS
- stty echo
- echo ""
- if [ -z "$CBPASS" ]; then
- echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"
- elif [ "$CBUSER" == "$CBPASS" ]; then
- echo "You're not too brilliant choosing passwords huh?"
- fi
- #GS
- echo -ne "\nPlease enter MySQL Game Server hostname (default localhost): "
- read GSDBHOST
- if [ -z "$GSDBHOST" ]; then
- GSDBHOST="localhost"
- fi
- echo -ne "\nPlease enter MySQL Game Server database name (default l2jgs): "
- read GSDB
- if [ -z "$GSDB" ]; then
- GSDB="l2jgs"
- fi
- echo -ne "\nPlease enter MySQL Game Server user (default root): "
- read GSUSER
- if [ -z "$GSUSER" ]; then
- GSUSER="root"
- fi
- echo -ne "\nPlease enter MySQL Game Server $GSUSER's password (won't be displayed): "
- stty -echo
- read GSPASS
- stty echo
- echo ""
- if [ -z "$GSPASS" ]; then
- echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"
- elif [ "$GSUSER" == "$GSPASS" ]; then
- echo "You're not too brilliant choosing passwords huh?"
- fi
- save_config $1
- }
- save_config() {
- if [ -n "$1" ]; then
- CONF="$1"
- else
- CONF="database_installer.rc"
- fi
- echo ""
- echo "With these data I can generate a configuration file which can be read"
- echo "on future updates. WARNING: this file will contain clear text passwords!"
- echo -ne "Shall I generate config file $CONF? (Y/n):"
- read SAVE
- if [ "$SAVE" == "y" -o "$SAVE" == "Y" -o "$SAVE" == "" ];then
- cat <<EOF>$CONF
- #Configuration settings for L2J-Datapack database installer script
- MYSQLDUMPPATH=$MYSQLDUMPPATH
- MYSQLPATH=$MYSQLPATH
- LSDBHOST=$LSDBHOST
- LSDB=$LSDB
- LSUSER=$LSUSER
- LSPASS=$LSPASS
- CBDBHOST=$CBDBHOST
- CBDB=$CBDB
- CBUSER=$CBUSER
- CBPASS=$CBPASS
- GSDBHOST=$GSDBHOST
- GSDB=$GSDB
- GSUSER=$GSUSER
- GSPASS=$GSPASS
- EOF
- chmod 600 $CONF
- echo "Configuration saved as $CONF"
- echo "Permissions changed to 600 (rw- --- ---)"
- elif [ "$SAVE" != "n" -a "$SAVE" != "N" ]; then
- save_config
- fi
- }
- load_config() {
- if [ -n "$1" ]; then
- CONF="$1"
- else
- CONF="database_installer.rc"
- fi
- if [ -e "$CONF" ] && [ -f "$CONF" ]; then
- . $CONF
- else
- echo "Settings file not found: $CONF"
- echo "You can specify an alternate settings filename:"
- echo $0 config_filename
- echo ""
- echo "If file doesn't exist it can be created"
- echo "If nothing is specified script will try to work with ./database_installer.rc"
- echo ""
- configure $CONF
- fi
- }
- ls_backup(){
- while :
- do
- clear
- echo ""
- echo -ne "Do you want to make a backup copy of your LSDB? (y/n): "
- read LSB
- if [ "$LSB" == "Y" -o "$LSB" == "y" ]; then
- echo "Trying to make a backup of your Login Server DataBase."
- $MYSQLDUMPPATH --add-drop-table -h $LSDBHOST -u $LSUSER --password=$LSPASS $LSDB > ls_backup.sql
- if [ $? -ne 0 ];then
- clear
- echo ""
- echo "There was a problem accesing your LS database, either it wasnt created or authentication data is incorrect."
- exit 1
- fi
- break
- elif [ "$LSB" == "n" -o "$LSB" == "N" ]; then
- break
- fi
- done
- ls_ask
- }
- ls_ask(){
- clear
- echo ""
- echo "LOGINSERVER DATABASE install type:"
- echo ""
- echo "(f) Full: WARNING! I'll destroy ALL of your existing login"
- echo " data."
- echo ""
- echo "(u) Upgrade: I'll do my best to preserve all login data."
- echo ""
- echo "(s) Skip: I'll take you to the communityserver database"
- echo " installation and upgrade options."
- echo ""
- echo "(q) Quit"
- echo ""
- echo -ne "LOGINSERVER DB install type: "
- read LSASK
- case "$LSASK" in
- "f"|"F") ls_cleanup I;;
- "u"|"U") ls_upgrade U;;
- "s"|"S") cs_backup;;
- "q"|"Q") finish;;
- *) ls_ask;;
- esac
- }
- ls_cleanup(){
- clear
- echo "Deleting Login Server tables for new content."
- $MYL < ls_cleanup.sql
- ls_install
- }
- ls_upgrade(){
- clear
- echo ""
- echo "Upgrading structure of Login Server tables."
- echo ""
- for file in $(ls ../sql/login/updates/*.sql);do
- $MYL --force < $file 2>> ls_error.log
- done
- ls_install
- }
- ls_install(){
- clear
- if [ "$1" == "I" ]; then
- echo ""
- echo "Installing new Login Server content."
- echo ""
- else
- echo ""
- echo "Upgrading Login Server content."
- echo ""
- fi
- for login in $(ls ../sql/login/*.sql);do
- echo "Installing loginserver table : $login"
- $MYL < $login
- done
- cs_ask
- }
- cs_backup(){
- while :
- do
- clear
- echo ""
- echo -ne "Do you want to make a backup copy of your CBDB? (y/n): "
- read CSB
- if [ "$CSB" == "Y" -o "$CSB" == "y" ]; then
- echo "Trying to make a backup of your Community Server DataBase."
- $MYSQLDUMPPATH --add-drop-table -h $CBDBHOST -u $CBUSER --password=$CBPASS $CBDB > cs_backup.sql
- if [ $? -ne 0 ];then
- clear
- echo ""
- echo "There was a problem accesing your CB database, either it wasnt created or authentication data is incorrect."
- exit 1
- fi
- break
- elif [ "$CSB" == "n" -o "$CSB" == "N" ]; then
- break
- fi
- done
- cs_ask
- }
- cs_ask(){
- clear
- echo ""
- echo "COMMUNITY SERVER DATABASE install type:"
- echo ""
- echo "(f) Full: WARNING! I'll destroy ALL of your existing community"
- echo " data (i really mean it: mail, forum, memo.. ALL)"
- echo ""
- echo "(u) Upgrade: I'll do my best to preserve all of your community"
- echo " data."
- echo ""
- echo "(s) Skip: I'll take you to the gameserver database"
- echo " installation and upgrade options."
- echo ""
- echo "(q) Quit"
- echo ""
- echo -ne "COMMUNITYSERVER DB install type: "
- read CSASK
- case "$CSASK" in
- "f"|"F") cs_cleanup I;;
- "u"|"U") cs_upgrade U;;
- "s"|"S") gs_backup;;
- "q"|"Q") finish;;
- *) cs_ask;;
- esac
- }
- cs_cleanup(){
- clear
- echo "Deleting Community Server tables for new content."
- $MYC < cs_cleanup.sql
- cs_install
- }
- cs_upgrade(){
- clear
- echo ""
- echo "Upgrading structure of Community Server tables."
- echo ""
- for file in $(ls ../sql/community/updates/*sql);do
- $MYC --force < $file 2>> cs_error.log
- done
- cs_install
- }
- cs_install(){
- clear
- if [ "$1" == "I" ]; then
- echo ""
- echo "Installing new Community Server content."
- echo ""
- else
- echo ""
- echo "Upgrading Community Server content."
- echo ""
- fi
- for cb in $(ls ../sql/community/*.sql);do
- echo "Installing Communityserver table : $cb"
- $MYC < $cb
- done
- gs_ask
- }
- gs_backup(){
- while :
- do
- clear
- echo ""
- echo -ne "Do you want to make a backup copy of your GSDB? (y/n): "
- read GSB
- if [ "$GSB" == "Y" -o "$GSB" == "y" ]; then
- echo "Trying to create a Game Server DataBase."
- $MYSQLDUMPPATH --add-drop-table -h $GSDBHOST -u $GSUSER --password=$GSPASS $GSDB > gs_backup.sql
- if [ $? -ne 0 ];then
- clear
- echo ""
- echo "There was a problem accesing your GS database, either it wasnt created or authentication data is incorrect."
- exit 1
- fi
- break
- elif [ "$GSB" == "n" -o "$GSB" == "N" ]; then
- break
- fi
- done
- gs_ask
- }
- gs_ask(){
- clear
- echo ""
- echo "GAME SERVER DATABASE install:"
- echo ""
- echo "(f) Full: WARNING! I'll destroy ALL of your existing character"
- echo " data (i really mean it: items, pets.. ALL)"
- echo ""
- echo "(u) Upgrade: I'll do my best to preserve all of your character"
- echo " data."
- echo ""
- echo "(s) Skip: We'll get into the last set of questions (cummulative"
- echo " updates, custom stuff...)"
- echo ""
- echo "(q) Quit"
- echo ""
- echo -ne "GAMESERVER DB install type: "
- read GSASK
- case "$GSASK" in
- "f"|"F") gs_cleanup I;;
- "u"|"U") gs_upgrade U;;
- "s"|"S") custom_ask;;
- "q"|"Q") finish;;
- *) gs_ask;;
- esac
- }
- gs_cleanup(){
- clear
- echo "Deleting all Game Server tables for new content."
- $MYG < gs_cleanup.sql
- gs_install
- }
- gs_upgrade(){
- clear
- echo ""
- echo "Upgrading structure of Game Server tables (this could take awhile, be patient)"
- echo ""
- for file in $(ls ../sql/game/updates/*.sql);do
- $MYG --force < $file 2>> gs_error.log
- done
- gs_install
- }
- gs_install(){
- clear
- if [ "$1" == "I" ]; then
- echo ""
- echo "Installing new Game Server content."
- echo ""
- else
- echo ""
- echo "Upgrading Game Server content."
- echo ""
- fi
- for gs in $(ls ../sql/game/*.sql);do
- echo "Installing GameServer table : $gs"
- $MYG < $gs
- done
- custom_ask
- }
- custom_ask(){
- clear
- echo ""
- echo "L2J provides some Custom Server Tables for non-retail modifications"
- echo "in order to avoid override the original Server Tables."
- echo ""
- echo "Remember that in order to get these additions actually working"
- echo "you need to edit your configuration files."
- echo ""
- echo -ne "Install Custom Server Tables: (y) yes or (n) no ?"
- read CSASK
- case "$CSASK" in
- "y"|"Y") custom_install;;
- "n"|"N") mod_ask;;
- *) custom_ask;;
- esac
- }
- custom_install(){
- clear
- echo ""
- echo "Installing Custom content."
- for custom in $(ls ../sql/game/custom/*.sql);do
- echo "Installing custom table: $custom"
- $MYG < $custom
- done
- clear
- mod_ask
- }
- mod_ask(){
- clear
- echo ""
- echo "L2J provides a basic infraestructure for some non-retail features"
- echo "(aka L2J mods) to get enabled with a minimum of changes."
- echo ""
- echo "Some of these mods would require extra tables in order to work"
- echo "and those tables could be created now if you wanted to."
- echo ""
- echo "Remember that in order to get these additions actually working"
- echo "you need to edit your configuration files."
- echo ""
- echo -ne "Install Mod Server Tables: (y) yes or (n) no ?"
- read MDASK
- case "$MDASK" in
- "y"|"Y") mod_install;;
- "n"|"N") finish;;
- *) mod_ask;;
- esac
- }
- mod_install(){
- clear
- echo ""
- echo "Installing Mods content."
- for mod in $(ls ../sql/game/mods/*.sql);do
- echo "Installing custom mod table : $mod"
- $MYG < $mod
- done
- clear
- finish
- }
- finish(){
- clear
- echo "L2JDP Database Installer"
- echo ""
- echo "Thanks for using our software."
- echo "visit http://www.l2jdp.com for more info about"
- echo "the L2J DataPack Project."
- exit 0
- }
- clear
- load_config $1
- MYL="$MYSQLPATH -h $LSDBHOST -u $LSUSER --password=$LSPASS -D $LSDB"
- MYG="$MYSQLPATH -h $GSDBHOST -u $GSUSER --password=$GSPASS -D $GSDB"
- MYC="$MYSQLPATH -h $CBDBHOST -u $CBUSER --password=$CBPASS -D $CBDB"
- ls_backup
|