279 lines
12 KiB
Bash
Executable file
279 lines
12 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# Configure MySQL
|
|
# Copyright (C) 2017 AleaJactaEst
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program 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 Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
declare DEBUG=0
|
|
|
|
usage()
|
|
{
|
|
cat << EOF
|
|
usage:$0 [options]
|
|
prepare mysql (create directory, update configuration)
|
|
|
|
options:
|
|
-h, --help : Show this help
|
|
-d, --debug : Show debug message
|
|
EOF
|
|
}
|
|
|
|
#####################
|
|
# MAIN
|
|
#####################
|
|
source /opt/ext/servercontainer_function.sh
|
|
msg_info "[$(basename $0):$LINENO] => START"
|
|
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
-h|--help)
|
|
usage
|
|
exit 1
|
|
;;
|
|
-d|--debug)
|
|
DEBUG=1
|
|
shift
|
|
;;
|
|
*)
|
|
msg_error "options '$1' not recognize"
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
####################################
|
|
# Load Environment
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Load environment"
|
|
if [[ ! -f /opt/khanat_config.sh ]]
|
|
then
|
|
msg_critical "[$(basename $0):$LINENO] missing /opt/khanat_config.sh"
|
|
fi
|
|
source /opt/khanat_config.sh
|
|
|
|
if [[ ! -f /home/gameserver/.bashrc ]]
|
|
then
|
|
msg_critical "[$(basename $0):$LINENO] Missing /home/gameserver/.bashrc"
|
|
fi
|
|
source /home/gameserver/.bashrc
|
|
|
|
|
|
####################################
|
|
# Start mysql & apache
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Start mysql"
|
|
# start/restart service mysql & apache
|
|
sudo service mysql start || exit 2
|
|
|
|
# Wait mysql start
|
|
msg_info "[$(basename $0):$LINENO] Check database is started"
|
|
sleep 1
|
|
until sudo /usr/bin/mysqladmin ping >/dev/null 2>&1
|
|
do
|
|
echo -n "."
|
|
sleep 1
|
|
done
|
|
echo ""
|
|
sleep 1
|
|
|
|
msg_debug "start apache"
|
|
sudo service apache2 start || msg_critical "[$(basename $0):$LINENO] Impossible to start apache"
|
|
|
|
|
|
####################################
|
|
# Create account
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Create account"
|
|
# Create account shard on MySQL
|
|
mysql -u root -e "CREATE USER IF NOT EXISTS 'shard'@'localhost' IDENTIFIED BY '';" || msg_critical "[$(basename $0):$LINENO] create use impossible"
|
|
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'shard'@'localhost' WITH GRANT OPTION;" || msg_critical "[$(basename $0):$LINENO] update privileges impossible"
|
|
|
|
|
|
####################################
|
|
# launch web configuration for khanat
|
|
####################################
|
|
## TODO : check if database is installed before launch this command
|
|
msg_debug "[$(basename $0):$LINENO] launch web configuration for khanat"
|
|
httpcode=$(curl -L -w "%{http_code}" 'http://localhost:40916/setup/install.php' \
|
|
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
|
|
-H 'Accept-Language: en-US' \
|
|
-H 'Connection: keep-alive' \
|
|
-H 'Cookie: PHPSESSID=9jr1ssig58929bp777nrj2fa92' \
|
|
-H 'DNT: 1' \
|
|
-H 'Host: localhost:40916' \
|
|
-H 'Referer: http://localhost:40916/setup/install.php' \
|
|
-H 'Upgrade-Insecure-Requests: 1' \
|
|
-H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \
|
|
-H 'Content-Type: application/x-www-form-urlencoded' \
|
|
--data 'roleService=on'\
|
|
'&roleSupport=on'\
|
|
'&roleDomain=on'\
|
|
'&privatePhpDirectory=..%2Fprivate_php%2F'\
|
|
'&nelSetupPassword=admin'\
|
|
'&nelSqlHostname=localhost'\
|
|
'&nelSqlUsername=root'\
|
|
'&nelSqlPassword='\
|
|
'&nelDatabase=nel'\
|
|
'&toolDatabase=nel_tool'\
|
|
'&toolsAdminUsername=admin'\
|
|
'&toolsAdminPassword=admin'\
|
|
'&amsSqlHostname=localhost'\
|
|
'&amsSqlUsername=root'\
|
|
'&amsSqlPassword='\
|
|
'&amsDatabase=nel_ams'\
|
|
'&amsLibDatabase=nel_ams_lib'\
|
|
'&amsAdminUsername=admin'\
|
|
'&amsAdminPassword=admin'\
|
|
'&nelDomainName=Lirria'\
|
|
'&domainDatabase=ring_mini01'\
|
|
'&submit=Configure' \
|
|
-o $KHANAT_HOME/log/configure/world_setup.html || msg_critical "[$(basename $0):$LINENO] curl error (impossible to create world)")
|
|
|
|
if [[ $httpcode != "200" ]]
|
|
then
|
|
msg_critical "[$(basename $0):$LINENO] impossible to create world (http return:$httpcode)"
|
|
fi
|
|
|
|
chown_gameserver $KHANAT_HOME/log/configure/world_setup.html
|
|
|
|
# Check account is create
|
|
grep "Domain role successfully installed" $KHANAT_HOME/log/configure/world_setup.html >/dev/null || msg_critical "[$(basename $0):$LINENO] Missing message 'Domain role successfully installed'"
|
|
|
|
|
|
####################################
|
|
# Get IP ADDRESS
|
|
####################################
|
|
msg_debug "Get IP ADDRESS"
|
|
tmp=$(hostname -I)
|
|
export addressip=${tmp//[[:blank:]]/}
|
|
|
|
|
|
####################################
|
|
## Configure Domain
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure Domain"
|
|
mysql -u root -e "use nel;
|
|
INSERT INTO nel.domain (domain_id, domain_name, status, patch_version, backup_patch_url, patch_urls, login_address, session_manager_address, ring_db_name, web_host, web_host_php, description) VALUES ('12', 'Lirria', 'ds_open', '$KHANAT_CLIENT_VERSION', '$addressip:23001', '$addressip/patch', '$addressip:49998', '$addressip:49999', 'ring_mini01', '$addressip:30000', '$addressip:40916', NULL);" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure Domain"
|
|
|
|
|
|
####################################
|
|
# Configure nel.shard
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure nel.shard"
|
|
mysql -u root -e "use nel;
|
|
INSERT INTO nel.shard (ShardId, domain_id, WsAddr, NbPlayers, Name, Online, Version, FixedSessionId, State, MOTD) VALUES ('302', '12', '$addressip:', '0', 'Lirria shard', '0', '', '0', 'ds_open', '');" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure nel.shard"
|
|
|
|
####################################
|
|
# Configure nel_tool.neltool_domains
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure nel_tool.neltool_domains"
|
|
mysql -u root -e "use nel;
|
|
INSERT INTO nel_tool.neltool_domains (domain_id, domain_name, domain_as_host, domain_as_port, domain_rrd_path, domain_las_admin_path, domain_las_local_path, domain_application, domain_sql_string, domain_hd_check, domain_mfs_web, domain_cs_sql_string) VALUES ('12', 'Lirria', '$addressip', '46700', '/home/gameserver/khanat/server/save_shard/rrd_graphs', '', '', 'ryzom_open', '', '0', NULL, NULL);" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure nel_tool.neltool_domains"
|
|
|
|
|
|
####################################
|
|
# configure nel_tool.neltool_shards
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure nel_tool.neltool_shards"
|
|
mysql -u root -e "use nel;
|
|
INSERT INTO nel_tool.neltool_shards (shard_id, shard_name, shard_as_id, shard_domain_id, shard_lang, shard_restart) VALUES ('302', 'open', 'open', '12', 'fr', '0');" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure nel_tool.neltool_shards"
|
|
|
|
|
|
####################################
|
|
# configure nel_tool.neltool_user_domains
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure nel_tool.neltool_user_domains"
|
|
mysql -u root -e "use nel;
|
|
INSERT INTO nel_tool.neltool_user_domains (user_domain_id, user_domain_user_id, user_domain_domain_id) VALUES ('1', '1', '12');" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure nel_tool.neltool_user_domains"
|
|
|
|
|
|
####################################
|
|
# configure nel_tool.neltool_user_shards
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure nel_tool.neltool_user_shards"
|
|
mysql -u root -e "use nel;
|
|
INSERT INTO nel_tool.neltool_user_shards (user_shard_id, user_shard_user_id, user_shard_shard_id, user_shard_domain_id) VALUES ('1', '1', '302', '12');" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure nel_tool.neltool_user_shards"
|
|
|
|
|
|
####################################
|
|
# configure ring_mini01.sessions
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Configure ring_mini01.sessions"
|
|
mysql -u root -e "use ring_mini01;
|
|
INSERT INTO ring_mini01.sessions (session_id, session_type, title, owner, plan_date, start_date, description, orientation, level, rule_type, access_type, state, host_shard_id, subscription_slots, reserved_slots, free_slots, estimated_duration, final_duration, folder_id, lang, icone, anim_mode, race_filter, religion_filter, guild_filter, shard_filter, level_filter, subscription_closed, newcomer) VALUES ('302', 'st_mainland', '', '0', '2005-09-21 12:41:33.000000', '2005-08-31 00:00:00.000000', '', 'so_other', 'sl_a', 'rt_strict', 'at_private', 'ss_planned', '0', '0', '0', '0', 'et_short', '0', '0', '', '', 'am_dm', '', '', 'gf_only_my_guild', 'sf_shard00,sf_shard01,sf_shard02,sf_shard03,sf_shard04,sf_shard05,sf_shard06,sf_shard07,sf_shard08,sf_shard09,sf_shard10,sf_shard11,sf_shard12,sf_shard13,sf_shard14,sf_shard15,sf_shard16,sf_shard17,sf_shard18,sf_shard19,sf_shard20,sf_shard21,sf_shard22,sf_shard23,sf_shard24,sf_shard25,sf_shard26,sf_shard27,sf_shard28,sf_shard29,sf_shard30', 'lf_a,lf_b,lf_c,lf_d,lf_e,lf_f', '0', '0');" || msg_critical "[$(basename $0):$LINENO] MYSQL - Configure ring_mini01.sessions"
|
|
|
|
|
|
####################################
|
|
## Create one user 'tester' (password : tester)
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Create one user"
|
|
declare accountuser="tester"
|
|
declare passworduser="tester"
|
|
httpcode=$(curl -L -w "%{http_code}" 'http://localhost:40916/ams/index.php' \
|
|
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
|
|
-H 'Accept-Language: en-US' \
|
|
-H 'Connection: keep-alive' \
|
|
-H 'Cookie: PHPSESSID=lsoumn9f0ljgm3vo3hgjdead03' \
|
|
-H 'DNT: 1' \
|
|
-H 'Host: localhost:40916' \
|
|
-H 'Referer: http://localhost:40916/ams/index.php?page=register' \
|
|
-H 'Upgrade-Insecure-Requests: 1' \
|
|
-H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \
|
|
-H 'Content-Type: application/x-www-form-urlencoded' \
|
|
--data 'Username='"$accountuser"'&Password='"$passworduser"'&ConfirmPass='"$passworduser"'&Email=tester%40khaganat.net&TaC=on&function=add_user' \
|
|
-o $KHANAT_HOME/log/configure/world_account_tester.log || msg_critical "[$(basename $0):$LINENO] curl - Create one user")
|
|
|
|
if [[ $httpcode != "200" ]]
|
|
then
|
|
msg_critical "[$(basename $0):$LINENO] curl - Create one user"
|
|
fi
|
|
|
|
|
|
####################################
|
|
# configure nel.permission
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Create nel.permission"
|
|
mysql -u root -e "use nel;
|
|
UPDATE nel.permission SET AccessPrivilege = 'OPEN,DEV,RESTRICTED';
|
|
" || msg_critical "[$(basename $0):$LINENO] mysql - Create nel.permission"
|
|
|
|
####################################
|
|
# configure default nel.permission (use when we create account)
|
|
# OPEN (1), DEV (2), RESTRICTED (4) 1 + 2 + 4 = 7
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Update default permission"
|
|
mysql -u root -e "use nel_ams_lib;
|
|
UPDATE settings SET Value = 7 WHERE settings.Setting = 'Domain_Auto_Add';
|
|
" || msg_critical "[$(basename $0):$LINENO] mysql - Update default permission"
|
|
|
|
####################################
|
|
# Stop Database & apache
|
|
####################################
|
|
msg_debug "[$(basename $0):$LINENO] Stop Database & apache"
|
|
# start/restart service mysql & apache
|
|
sudo service apache2 stop || msg_critical "[$(basename $0):$LINENO] apache2 stop"
|
|
sudo service mysql stop || msg_critical "[$(basename $0):$LINENO] mysql stop"
|
|
|
|
# Change right for file mysql
|
|
# TODO - remove creation of this file
|
|
chown_gameserver "$KHANAT_HOME/database/mysql_upgrade_info"
|
|
|
|
####################################
|
|
# End
|
|
####################################
|
|
msg_info "[$(basename $0):$LINENO] => END"
|
|
|