xml edits

This commit is contained in:
Frank Harris 2026-04-29 20:12:28 -04:00
parent 72db4fe9ba
commit c64c3acc1a
4 changed files with 119 additions and 12 deletions

View file

@ -84,24 +84,55 @@ rm -f dayzmod1.9.0.tar
dbPass=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8)
srvID=${PWD##*/}
dbID=server_${srvID}
mysqlServerID=2
# Panel DB connection (where gsp_mysql_servers / gsp_mysql_databases live)
panelDB=panel
panelPrefix=gsp_
panelHost=mysql.iaregamer.com
panelPort=3307
panelUser=remoteuser
panelPass=Pkloyn7yvpht!
# Resolve target game DB server/profile from panel metadata (default: mysql_server_id=2 -> MySQL 5.7)
mysqlProfile=$(mysql -N -B -u${panelUser} -p${panelPass} -h${panelHost} -P${panelPort} -e "SELECT mysql_ip,mysql_port,COALESCE(NULLIF(mysql_admin_user,''),'root'),mysql_root_passwd FROM ${panelDB}.${panelPrefix}mysql_servers WHERE mysql_server_id = ${mysqlServerID} LIMIT 1")
if [ -z "${mysqlProfile}" ]; then
echo "ERROR: Could not resolve mysql server profile id ${mysqlServerID} from ${panelDB}.${panelPrefix}mysql_servers"
exit 1
fi
IFS=$'\t' read -r mysqlHost mysqlPort mysqlAdminUser mysqlAdminPass <<EOF
${mysqlProfile}
EOF
mysqlPort=${mysqlPort:-3306}
# sed -i "s/dayz_dayzmod/${dbID}/g" 1.9.0_fresh.sql
sed -i "s/Host = .*/Host = mysql.iaregamer.com/g" cfg/hiveext.ini
sed -i "s/Port = .*/Port = 3307/g" cfg/hiveext.ini
sed -i "s/Host = .*/Host = ${mysqlHost}/g" cfg/hiveext.ini
sed -i "s/Port = .*/Port = 3306/g" cfg/hiveext.ini
sed -i "s/Database = .*/Database = ${dbID}/g" cfg/hiveext.ini
sed -i "s/Username = .*/Username = ${dbID}/g" cfg/hiveext.ini
sed -i "s/Password = .*/Password = ${dbPass}/g" cfg/hiveext.ini
sed -i "s/Port = .*/Port = ${mysqlPort}/g" cfg/hiveext.ini
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "CREATE DATABASE IF NOT EXISTS ${dbID}"
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "GRANT ALL ON ${dbID}.* TO '${dbID}'@'localhost' IDENTIFIED BY '${dbPass}'"
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "GRANT ALL ON ${dbID}.* TO 'dayzhivemind'@'%' IDENTIFIED BY 'Pkloyn7yvpht!'"
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "GRANT ALL ON ${dbID}.* TO '${dbID}'@'%' IDENTIFIED BY '${dbPass}'"
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "FLUSH PRIVILEGES;"
mysql --force -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -D ${dbID} < 1.9.0_fresh.sql
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE DATABASE IF NOT EXISTS \`${dbID}\`"
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "DELETE FROM panel.gsp_mysql_databases WHERE db_user = '${dbID}'"
mysql -uremoteuser -pPkloyn7yvpht! -hmysql.iaregamer.com -P3307 -e "INSERT INTO panel.gsp_mysql_databases(mysql_server_id, home_id, db_user, db_passwd, db_name, enabled) VALUES (2,${srvID},'${dbID}','${dbPass}','${dbID}',1)"
# MySQL 5.7/8 compatible user creation + grants
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE USER IF NOT EXISTS '${dbID}'@'localhost' IDENTIFIED BY '${dbPass}'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE USER IF NOT EXISTS '${dbID}'@'%' IDENTIFIED BY '${dbPass}'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE USER IF NOT EXISTS 'dayzhivemind'@'%' IDENTIFIED BY 'Pkloyn7yvpht!'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "GRANT ALL ON \`${dbID}\`.* TO '${dbID}'@'localhost'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "GRANT ALL ON \`${dbID}\`.* TO '${dbID}'@'%'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "GRANT ALL ON \`${dbID}\`.* TO 'dayzhivemind'@'%'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "FLUSH PRIVILEGES;"
# Import with compatibility flags for routines/events under binary logging
mysql --force --init-command="SET SESSION sql_mode=''; SET SESSION log_bin_trust_function_creators=1;" -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -D ${dbID} < 1.9.0_fresh.sql
mysql -u${panelUser} -p${panelPass} -h${panelHost} -P${panelPort} -e "DELETE FROM ${panelDB}.${panelPrefix}mysql_databases WHERE db_user = '${dbID}'"
mysql -u${panelUser} -p${panelPass} -h${panelHost} -P${panelPort} -e "INSERT INTO ${panelDB}.${panelPrefix}mysql_databases(mysql_server_id, home_id, db_user, db_passwd, db_name, enabled, db_mysql_ip, db_mysql_port, db_admin_user, db_admin_passwd) VALUES (${mysqlServerID},${srvID},'${dbID}','${dbPass}','${dbID}',1,'${mysqlHost}','${mysqlPort}','${mysqlAdminUser}','${mysqlAdminPass}')"
# Create alsoRun.bat -----------------------------------

View file

@ -72,8 +72,60 @@ wget http://files.iaregamer.com/addons/arma2Addons.tar.gz .
wget http://files.iaregamer.com/addons/epochmod-1.0.7.1.tar.gz .
tar -zxvf arma2Addons.tar.gz
tar -zxvf epoch_mod.tar.gz
chmod +x setup_db.sh
./setup_db.sh
#Create Database ---------------------------------------
dbPass=$(</dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8)
srvID=${PWD##*/}
dbID=server_${srvID}
mysqlServerID=2
# Panel DB connection (where gsp_mysql_servers / gsp_mysql_databases live)
panelDB=panel
panelPrefix=gsp_
panelHost=mysql.iaregamer.com
panelPort=3307
panelUser=remoteuser
panelPass=Pkloyn7yvpht!
# Resolve target game DB server/profile from panel metadata (default: mysql_server_id=2 -> MySQL 5.7)
mysqlProfile=$(mysql -N -B -u${panelUser} -p${panelPass} -h${panelHost} -P${panelPort} -e "SELECT mysql_ip,mysql_port,COALESCE(NULLIF(mysql_admin_user,''),'root'),mysql_root_passwd FROM ${panelDB}.${panelPrefix}mysql_servers WHERE mysql_server_id = ${mysqlServerID} LIMIT 1")
if [ -z "${mysqlProfile}" ]; then
echo "ERROR: Could not resolve mysql server profile id ${mysqlServerID} from ${panelDB}.${panelPrefix}mysql_servers"
exit 1
fi
IFS=$'\t' read -r mysqlHost mysqlPort mysqlAdminUser mysqlAdminPass <<EOF
${mysqlProfile}
EOF
mysqlPort=${mysqlPort:-3306}
sed -i "s/dayzhivemind/${dbID}/g" epoch.sql
sed -i "s/Host = .*/Host = ${mysqlHost}/g" cfg/hiveext.ini
sed -i "s/Database = .*/Database = ${dbID}/g" cfg/hiveext.ini
sed -i "s/Username = .*/Username = ${dbID}/g" cfg/hiveext.ini
sed -i "s/Password = .*/Password = ${dbPass}/g" cfg/hiveext.ini
sed -i "s/Port = .*/Port = ${mysqlPort}/g" cfg/hiveext.ini
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE DATABASE IF NOT EXISTS \`${dbID}\`"
# MySQL 5.7/8 compatible user creation + grants
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE USER IF NOT EXISTS '${dbID}'@'localhost' IDENTIFIED BY '${dbPass}'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "CREATE USER IF NOT EXISTS '${dbID}'@'%' IDENTIFIED BY '${dbPass}'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "GRANT ALL ON \`${dbID}\`.* TO '${dbID}'@'localhost'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "GRANT ALL ON \`${dbID}\`.* TO '${dbID}'@'%'"
mysql -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -e "FLUSH PRIVILEGES;"
# Import with compatibility flags for routines/events under binary logging
mysql --force --init-command="SET SESSION sql_mode=''; SET SESSION log_bin_trust_function_creators=1;" -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -D ${dbID} < epoch.sql
mysql --force --init-command="SET SESSION sql_mode=''; SET SESSION log_bin_trust_function_creators=1;" -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -D ${dbID} < add_events.sql
mysql --force --init-command="SET SESSION sql_mode=''; SET SESSION log_bin_trust_function_creators=1;" -u${mysqlAdminUser} -p${mysqlAdminPass} -h${mysqlHost} -P${mysqlPort} -D ${dbID} < update1071.sql
mysql -u${panelUser} -p${panelPass} -h${panelHost} -P${panelPort} -e "DELETE FROM ${panelDB}.${panelPrefix}mysql_databases WHERE db_user = '${dbID}'"
mysql -u${panelUser} -p${panelPass} -h${panelHost} -P${panelPort} -e "INSERT INTO ${panelDB}.${panelPrefix}mysql_databases(mysql_server_id, home_id, db_user, db_passwd, db_name, enabled, db_mysql_ip, db_mysql_port, db_admin_user, db_admin_passwd) VALUES (${mysqlServerID},${srvID},'${dbID}','${dbPass}','${dbID}',1,'${mysqlHost}','${mysqlPort}','${mysqlAdminUser}','${mysqlAdminPass}')"
rm *.sh
rm *.gz

View file

@ -52,6 +52,10 @@ $install_queries[0] = array(
`db_passwd` varchar(50) NOT NULL,
`db_name` varchar(50) NOT NULL,
`enabled` int(11) NOT NULL,
`db_mysql_ip` varchar(255) NULL,
`db_mysql_port` int(11) NULL,
`db_admin_user` varchar(64) NULL,
`db_admin_passwd` varchar(255) NULL,
PRIMARY KEY (`db_id`),
UNIQUE KEY (`mysql_server_id`,`db_name`),
UNIQUE KEY (`mysql_server_id`,`db_user`)

View file

@ -0,0 +1,20 @@
-- GSP migration: persist MySQL connection profile snapshot in gsp_mysql_databases
-- Run this against the panel database (adjust prefix if needed).
ALTER TABLE `gsp_mysql_databases`
ADD COLUMN `db_mysql_ip` varchar(255) NULL AFTER `enabled`,
ADD COLUMN `db_mysql_port` int(11) NULL AFTER `db_mysql_ip`,
ADD COLUMN `db_admin_user` varchar(64) NULL AFTER `db_mysql_port`,
ADD COLUMN `db_admin_passwd` varchar(255) NULL AFTER `db_admin_user`;
-- Backfill from gsp_mysql_servers for existing rows.
UPDATE `gsp_mysql_databases` d
JOIN `gsp_mysql_servers` s ON s.mysql_server_id = d.mysql_server_id
SET d.db_mysql_ip = s.mysql_ip,
d.db_mysql_port = s.mysql_port,
d.db_admin_user = COALESCE(NULLIF(s.mysql_admin_user, ''), 'root'),
d.db_admin_passwd = s.mysql_root_passwd
WHERE d.db_mysql_ip IS NULL
OR d.db_mysql_port IS NULL
OR d.db_admin_user IS NULL
OR d.db_admin_passwd IS NULL;