blob: 81ff54fc31ceaf939d7528e2519cf2aa1a3da11b (
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
|
#!/bin/bash
OSPATH="/opt/opensim"
MYSQL_HOST="localhost"
MYSQL_DB="InfiniteGrid"
MYSQL_USER="opensim"
OS_USER="opensim"
OSVER="0.8.2.1"
# Figure out where we are, most of this mess is to troll through soft links.
PRG="$0"
while [ -h "${PRG}" ] ; do
ls=$(ls -ld "${PRG}")
link=`expr "${ls}" : '.*-> \(.*\)$'`
if expr "${link}" : '.*/.*' > /dev/null; then
PRG="${link}"
else
PRG=$(dirname "${PRG}")/"${link}"
fi
done
PRGDIR=$(dirname "${PRG}")
pushd ${PRGDIR} >/dev/null
PRGDIR=$(pwd)
popd >/dev/null
# This should all be safe for pre existing installs that are being updated.
MYSQL_PASSWORD=$1
# Try to get old database credentials if they exist.
if [ -f ${OSPATH}/config/config.ini ]; then
# Get the database credentials.
declare -A creds
while read -d ';' p; do
k=$(echo ${p} | cut -d '=' -f 1)
v=$(echo ${p} | cut -d '=' -f 2)
creds[${k}]="${v}"
done < <(sudo grep ConnectionString ${OSPATH}/config/config.ini | cut -d '"' -f 2)
# The above seems the best way to get bash to let the creds assignments survive outside the loop.
MYSQL_HOST="${creds[Data Source]}"
MYSQL_DB="${creds[Database]}"
MYSQL_USER="${creds[User ID]}"
MYSQL_PASSWORD="${creds[Password]}"
fi
if [ -z $MYSQL_PASSWORD ]; then
MYSQL_PASSWORD="OpenSimSucks${RANDOM}"
fi
USER=$(whoami)
echo "Installing software."
sudo apt-get install mysql-server tmux mono-complete mono-gmcs nant nunit uuid-runtime monit mc
sudo /etc/init.d/mysql restart
echo "Setting up OpenSim users."
# "create user if not exists" doesn't exist until MySQL 5.7, so we have to put up with a warning, which we can ignore.
mysql -u root -p -h localhost << zzzzEOFzzz
create database if not exists $MYSQL_DB;
create user $OS_USER identified by '$MYSQL_PASSWORD';
create user $OS_USER@localhost identified by '$MYSQL_PASSWORD';
grant all on $MYSQL_DB.* to $OS_USER;
grant all on $MYSQL_DB.* to $OS_USER@localhost;
FLUSH PRIVILEGES;
zzzzEOFzzz
echo "Setting up OpenSim."
sudo adduser --system --shell /bin/false --group $OS_USER
sudo addgroup $USER $OS_USER
echo "Building OpenSim."
./runprebuild.sh
./nant-color
#xbuild /target:clean
#xbuild /p:TargetFrameworkVersion="v4.5"
echo "Setting up OpenSim."
sudo rm -fr $OSPATH/opensim-IG_*
sudo mkdir -p $OSPATH/opensim-IG_$OSVER
sudo cp -fr $PRGDIR/* $OSPATH/opensim-IG_$OSVER
cd $OSPATH
sudo ln -fs opensim-IG_$OSVER current
cd current
for dir in AssetFiles backups caches config db logs
do
if [ ! -f ../$dir ]; then
sudo cp -fr $dir ..
sudo rm -fr $dir
sudo ln -fs ../$dir $dir
fi
done
pushd config/ROBUST >/dev/null
sudo ln -fs ../../current/scripts/common.sh common.sh
sudo ln -fs ../../current/scripts/start-sim start-sim
sudo ln -fs ../../current/scripts/start-sim stop-sim
popd >/dev/null
echo "Securing OpenSim."
sudo chown -R $OS_USER:$OS_USER $OSPATH
sudo chmod -R 775 $OSPATH
sudo chmod -R a-x $OSPATH
sudo chmod -R a+X $OSPATH
sudo chmod -R g+w $OSPATH
sudo chmod -R a+x $OSPATH/current/scripts/*.sh
sudo chmod a+x $OSPATH/current/scripts/show-console
sudo chmod a+x $OSPATH/current/scripts/start-sim
sudo chmod ug+rwx $OSPATH/config
sudo chmod g+s $OSPATH/config
sudo chmod 600 $OSPATH/config/config.ini
sudo sed -i "s@MYSQL_HOST@${MYSQL_HOST}@g" config/config.ini
sudo sed -i "s@MYSQL_DB@${MYSQL_DB}@g" config/config.ini
sudo sed -i "s@MYSQL_USER@${MYSQL_USER}@g" config/config.ini
sudo chmod 600 config/config.ini
sudo sed -i "s@MYSQL_PASSWORD@${MYSQL_PASSWORD}@g" config/config.ini
sudo chmod 600 config/config.ini
sudo cp scripts/opensim.tmux.conf /home/$OS_USER/.tmux.conf
sudo chown $USER /home/$OS_USER/.tmux.conf
sudo chmod 644 /home/$OS_USER/.tmux.conf
sudo scripts/fix_var_run.sh
sudo cat scripts/opensim-crontab.txt | sudo crontab -u $OS_USER -
echo "Done installing OpenSim."
|