mirror of
https://github.com/anope/anope.git
synced 2026-06-26 07:36:39 +02:00
0731a633f8
git-svn-id: svn://svn.anope.org/anope/trunk@59 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@40 5417fbe8-f217-4b02-8779-1006273d7864
208 lines
5.1 KiB
Bash
Executable File
208 lines
5.1 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $Id$
|
|
|
|
# Location of the .sql file with the schema
|
|
DBSQL="tables.sql"
|
|
|
|
# Schema Version
|
|
SVER="1"
|
|
|
|
# Local Version, defaults to 0
|
|
LVER="0"
|
|
|
|
TFILE="/tmp/.anopedb.$$"
|
|
|
|
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
|
|
c="\c"
|
|
else
|
|
n="-n"
|
|
fi
|
|
|
|
# Fix for bug 10
|
|
for try in HOME/services anope/data ../data data .. .
|
|
do
|
|
if [ -f "$try/$DBSQL" ]; then
|
|
DBFILE="$try/$DBSQL"
|
|
fi
|
|
done
|
|
|
|
if [ ! -f "./$DBFILE" ] ; then
|
|
echo "Error: Required file $DBSQL was not found!";
|
|
exit
|
|
fi
|
|
|
|
echo ""
|
|
echo "This script will guide you through the process of configuring your Anope"
|
|
echo "installation to make use of MySQL support. This script must be used for both"
|
|
echo "new installs as well as for upgrading for users who have a previous version"
|
|
echo "of Anope installed"
|
|
|
|
while [ -z "$SQLHOST" ] ; do
|
|
echo ""
|
|
echo "What is the hostname of your MySQL server?"
|
|
echo $n "-> $c"
|
|
read cc
|
|
if [ ! -z "$cc" ] ; then
|
|
SQLHOST=$cc
|
|
fi
|
|
done
|
|
|
|
while [ -z "$SQLUSER" ] ; do
|
|
echo ""
|
|
echo "What is your MySQL username?"
|
|
echo $n "-> $c"
|
|
read cc
|
|
if [ ! -z "$cc" ] ; then
|
|
SQLUSER=$cc
|
|
fi
|
|
done
|
|
|
|
OLD_TTY=`stty -g`
|
|
|
|
echo ""
|
|
echo "What is your MySQL password?"
|
|
echo $n "-> $c"
|
|
stty -echo echonl
|
|
read cc
|
|
if [ ! -z "$cc" ] ; then
|
|
SQLPASS=$cc
|
|
fi
|
|
stty $OLD_TTY
|
|
|
|
mysqlshow -h$SQLHOST -u$SQLUSER -p$SQLPASS >/dev/null 2>&1
|
|
if test "$?" = "1" ; then
|
|
echo "Error: Unable to login, verify your login/password and hostname"
|
|
exit
|
|
fi
|
|
|
|
while [ -z "$SQLDB" ] ; do
|
|
echo ""
|
|
echo "What is the name of the Anope SQL database?"
|
|
echo $n "-> $c"
|
|
read cc
|
|
if [ ! -z "$cc" ] ; then
|
|
SQLDB=$cc
|
|
fi
|
|
done
|
|
|
|
MYSQLDUMP="mysqldump -h$SQLHOST -u$SQLUSER -p$SQLPASS $SQLDB"
|
|
MYSQLSHOW="mysqlshow -h$SQLHOST -u$SQLUSER -p$SQLPASS $SQLDB"
|
|
MYSQL="mysql -h$SQLHOST -u$SQLUSER -p$SQLPASS $SQLDB"
|
|
|
|
echo ""
|
|
|
|
$MYSQLSHOW | grep -q $SQLDB
|
|
if test "$?" = "1" ; then
|
|
echo -n "Unable to find databse, creating... "
|
|
mysql -h$SQLHOST -u$SQLUSER -p$SQLPASS -Bs -e "create database $SQLDB" >/dev/null 2>&1
|
|
if test "$?" = "0" ; then
|
|
echo "done!"
|
|
else
|
|
echo "failed!"
|
|
FAILED="$FAILED 'database creation'"
|
|
fi
|
|
fi
|
|
|
|
$MYSQL -Bs -e "show tables like 'anope_os_core'" | grep -q anope_os_core
|
|
if test "$?" = "1" ; then
|
|
echo -n "Unable to find Anope schema, creating... "
|
|
$MYSQL < $DBFILE
|
|
if test "$?" = "0" ; then
|
|
echo "done!"
|
|
else
|
|
echo "failed!"
|
|
FAILED="$FAILED 'schema creation'"
|
|
fi
|
|
else
|
|
# Introduced on Anope 1.6.0 -> Table anope_info
|
|
$MYSQL -Bs -e "show tables like 'anope_info'" | grep -q anope_info
|
|
if test "$?" = "1" ; then
|
|
echo -n "Unable to find Anope info table, creating... "
|
|
echo "CREATE TABLE anope_info (version int, date datetime) TYPE=MyISAM" > $TFILE
|
|
mysql -h$SQLHOST -u$SQLUSER -p$SQLPASS $SQLDB < $TFILE >/dev/null 2>&1
|
|
if test "$?" = "0" ; then
|
|
echo "done!"
|
|
|
|
else
|
|
echo "failed!"
|
|
FAILED="$FAILED 'anope_info table'"
|
|
fi
|
|
else
|
|
LVER="$($MYSQL -sB -e "select version from anope_info")"
|
|
if test "x$LVER" = "x" ; then
|
|
LVER=0
|
|
fi
|
|
fi
|
|
|
|
# Introduced on Anope 1.5.14.5 -> anope_cs_info.memomax
|
|
$MYSQL -Bs -e "describe anope_cs_info memomax" 2> /dev/null | grep -q memomax
|
|
if test "$?" = "1" ; then
|
|
echo -n "Unable to find anope_cs_info.memomax, altering... "
|
|
echo "ALTER TABLE anope_cs_info ADD memomax smallint unsigned NOT NULL default 0" > $TFILE
|
|
mysql -h$SQLHOST -u$SQLUSER -p$SQLPASS $SQLDB < $TFILE >/dev/null 2>&1
|
|
if test "$?" = "0" ; then
|
|
echo "done!"
|
|
|
|
else
|
|
echo "failed!"
|
|
FAILED="$FAILED 'anope_cs_info.ttb alter'"
|
|
fi
|
|
fi
|
|
|
|
# Introduced on Anope 1.5.14.5 -> anope_cs_info.ttb
|
|
$MYSQL -Bs -e "describe anope_cs_info ttb" 2> /dev/null | grep -q ttb
|
|
if test "$?" = "1" ; then
|
|
echo -n "Unable to find anope_cs_info.ttb, altering... "
|
|
echo "ALTER TABLE anope_cs_info ADD ttb smallint NOT NULL default 0" > $TFILE
|
|
mysql -h$SQLHOST -u$SQLUSER -p$SQLPASS $SQLDB < $TFILE >/dev/null 2>&1
|
|
if test "$?" = "0" ; then
|
|
echo "done!"
|
|
|
|
else
|
|
echo "failed!"
|
|
FAILED="$FAILED 'anope_cs_info.ttb alter'"
|
|
fi
|
|
fi
|
|
|
|
|
|
fi
|
|
|
|
# Insert initial version number. This will have to be redesigned for 1.7
|
|
if [ $LVER -ne $SVER ]; then
|
|
echo -n "Inserting initial version number... "
|
|
$MYSQL -Bs -e "delete from anope_info"
|
|
echo "INSERT INTO anope_info (version, date) VALUES ($SVER, now())" > $TFILE
|
|
$MYSQL < $TFILE >/dev/null 2>&1
|
|
if test "$?" = "0" ; then
|
|
echo "done!"
|
|
else
|
|
echo "failed!"
|
|
FAILED="$FAILED 'version insert'"
|
|
fi
|
|
fi
|
|
|
|
rm -f $TFILE
|
|
if test "x$FAILED" = "x" ; then
|
|
# Try to find out more about this installation
|
|
SQLSOCK="$(mysql_config --socket 2> /dev/null)"
|
|
SQLPORT="$(mysql_config --port 2> /dev/null)"
|
|
echo ""
|
|
echo "Your MySQL setup is complete and your Anope schema is up to date. Make"
|
|
echo "sure you configure MySQL on your services.conf file prior to launching"
|
|
echo "Anope with MySQL support. Your configuration values are:"
|
|
echo ""
|
|
echo "MysqlHost \"$SQLHOST\""
|
|
echo "MysqlUser \"$SQLUSER\""
|
|
echo "MysqlPass \"$SQLPASS\""
|
|
echo "MysqlName \"$SQLDB\""
|
|
echo "MysqlSock \"$SQLSOCK\""
|
|
echo "MysqlPort \"$SQLPORT\""
|
|
echo ""
|
|
else
|
|
echo "The following operations failed:"
|
|
echo "$FAILED"
|
|
fi
|
|
|
|
exit
|