summaryrefslogtreecommitdiff
path: root/src/bin/mydbgen
blob: b6efbf0488a3a27c6ba277a7b0155931421e0f6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/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

DBFILE=../data/$DBSQL

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
SQLPASS_PREFIX=""
if [ ! -z "$cc" ] ; then
	SQLPASS_PREFIX="-p"
	SQLPASS=$cc
fi
stty $OLD_TTY

mysqlshow -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$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 $SQLPASS_PREFIX$SQLPASS $SQLDB"
MYSQLSHOW="mysqlshow -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS $SQLDB"
MYSQL="mysql -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$SQLPASS $SQLDB"

echo ""

$MYSQLSHOW | grep -q $SQLDB
if test "$?" = "1" ; then
	echo -n "Unable to find databse, creating... "
	mysql -h$SQLHOST -u$SQLUSER $SQLPASS_PREFIX$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
	echo "done!"
fi

echo ""

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
	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 "mysql"
	echo "{"
	echo "	database = \"$SQLDB\""
	echo "	server = \"$SQLHOST\""
	echo "	username = \"$SQLUSER\""
	echo "	password = \"$SQLPASS\""
	echo "	port = \"$SQLPORT\""
	echo "	updatedelay = \"60\""
	echo "}"
	echo ""
else
	echo "The following operations failed:"
	echo "$FAILED"
fi

exit