aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/InstallItAll.sh
blob: ab1074dd02fd2f5167c456153950850e83aea37d (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
#!/bin/bash

OSPATH="/opt/opensim_TEST"
MYSQL_HOST="localhost"
MYSQL_DB="InfiniteGrid"
MYSQL_USER="opensim"
OS_USER="opensim"

OSVER="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 uuid-runtime monit mc
#sudo /etc/init.d/mysql restart

echo "Setting up mySQL."
#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

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

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  config
sudo chmod g+s     config
sudo chmod 600 config/config.ini

for dir in AssetFiles backups caches config db logs
do
    sudo cp -fr $dir ..
    sudo rm -fr $dir
    sudo ln -fs ../$dir $dir
done

pushd config/ROBUST >/dev/null
sudo ln -fs ../../current/scripts/start-sim start-sim
sudo ln -fs ../../current/scripts/start-sim stop-sim
popd >/dev/null
pushd config/sim01 >/dev/null
sudo ln -fs ../../current/scripts/start-sim backup-sim
sudo ln -fs ../../current/scripts/start-sim start-sim
sudo ln -fs ../../current/scripts/start-sim stop-sim
popd >/dev/null

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 -