aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid Walter Seikel2011-12-12 19:24:18 +1000
committerDavid Walter Seikel2011-12-12 19:24:18 +1000
commit85ae70d895f784632e4a6041024034dbe692dac8 (patch)
treec61a01ca61cfebd8d000e724046d46ae71902319
parentUse 0.0.0.0 as the default internal region IP, but stick with the externally ... (diff)
downloadIGnoble-85ae70d895f784632e4a6041024034dbe692dac8.zip
IGnoble-85ae70d895f784632e4a6041024034dbe692dac8.tar.gz
IGnoble-85ae70d895f784632e4a6041024034dbe692dac8.tar.bz2
IGnoble-85ae70d895f784632e4a6041024034dbe692dac8.tar.xz
Convert to using tmux, though the old screen stuff is still there.
-rwxr-xr-xinstall_opensim.sh9
-rw-r--r--opensim.tmux.conf47
-rwxr-xr-xstart-sim58
-rwxr-xr-xstart-sim-screen96
4 files changed, 180 insertions, 30 deletions
diff --git a/install_opensim.sh b/install_opensim.sh
index 2ef71c2..1967e36 100755
--- a/install_opensim.sh
+++ b/install_opensim.sh
@@ -13,7 +13,7 @@ OSPATH="/opt/opensim"
13USER=$(whoami) 13USER=$(whoami)
14VERSION_CONTROL="off" 14VERSION_CONTROL="off"
15 15
16sudo apt-get install mysql-server screen mono-complete monit mc 16sudo apt-get install mysql-server tmux screen mono-complete monit mc
17sudo /etc/init.d/mysql restart 17sudo /etc/init.d/mysql restart
18 18
19echo "Setting up mySQL" 19echo "Setting up mySQL"
@@ -34,12 +34,15 @@ sudo chown $USER /home/opensim/.screenrc
34echo -e "acladd root,$USER\n" >> /home/opensim/.screenrc 34echo -e "acladd root,$USER\n" >> /home/opensim/.screenrc
35sudo chown opensim:opensim /home/opensim/.screenrc 35sudo chown opensim:opensim /home/opensim/.screenrc
36sudo chmod 644 /home/opensim/.screenrc 36sudo chmod 644 /home/opensim/.screenrc
37sudo cp opensim.tmux.conf /home/opensim/.tmux.conf
38sudo chown $USER /home/opensim/.tmux.conf
39sudo chmod 644 /home/opensim/.tmux.conf
37sudo mkdir -p /var/log/opensim 40sudo mkdir -p /var/log/opensim
38sudo chown opensim:opensim /var/log/opensim 41sudo chown opensim:opensim /var/log/opensim
39sudo chmod 757 /var/log/opensim 42sudo chmod 757 /var/log/opensim
40sudo mkdir -p /var/run/opensim 43sudo mkdir -p /var/run/opensim
41sudo chown opensim:opensim /var/run/opensim 44sudo chown opensim:opensim /var/run/opensim
42sudo chmod 757 /var/run/opensim 45sudo chmod 42770 /var/run/opensim
43sudo mkdir -p $OSPATH/backups $OSPATH/caches/assetcache $OSPATH/config $OSPATH/setup 46sudo mkdir -p $OSPATH/backups $OSPATH/caches/assetcache $OSPATH/config $OSPATH/setup
44sudo chown opensim:opensim $OSPATH 47sudo chown opensim:opensim $OSPATH
45sudo chown -R opensim:opensim $OSPATH 48sudo chown -R opensim:opensim $OSPATH
@@ -111,7 +114,7 @@ sed -i 's@CacheDirectory = ./assetcache@CacheDirectory = caches/assetcache@' Flo
111cd ../../.. 114cd ../../..
112 115
113# Setting screen to be suid. EWWWWWW!!! Security hole!! 116# Setting screen to be suid. EWWWWWW!!! Security hole!!
114#ImReallyParanoid="true" 117ImReallyParanoid="true"
115if [ "x$ImReallyParanoid" = "x" ] 118if [ "x$ImReallyParanoid" = "x" ]
116then 119then
117 sudo chmod u+s /usr/bin/screen 120 sudo chmod u+s /usr/bin/screen
diff --git a/opensim.tmux.conf b/opensim.tmux.conf
new file mode 100644
index 0000000..f264f8a
--- /dev/null
+++ b/opensim.tmux.conf
@@ -0,0 +1,47 @@
1set-option -g prefix C-a
2unbind-key C-b
3bind-key C-a send-prefix
4
5# r reloads the configuration, handy
6bind r source-file ~/.tmux.conf
7
8unbind % # Remove default binding since we’re replacing them.
9bind | split-window -h
10bind - split-window -v
11
12set-option -g bell-action any
13set-option -g bell-on-alert on
14
15set-option -g history-limit 100000
16
17set-option -g mouse-resize-pane on
18set-option -g mouse-select-pane on
19set-option -g mouse-select-window on
20set-option -g mouse-utf8 on
21
22#set-option -g set-remain-on-exit on
23set-option -g set-titles on
24set-option -g set-titles-string '#W'
25
26set-option -g status-interval 1
27set-option -g status-justify centre
28set-option -g status-utf8 on
29
30set-option -g status-left-length 80
31set-option -g status-left '[#H #S:(#I:#T/#W).#P #F]'
32set-option -g status-right-length 80
33set-option -g status-right '%F #(uptime) %T'
34
35set-option -g visual-activity on
36set-option -g visual-content on
37set-option -g visual-silence on
38
39set-option -gw clock-mode-style 24
40set-option -gw mode-mouse on
41
42# Highlight active window
43set-option -gw window-status-current-bg red
44
45# Set window notifications
46set-option -gw monitor-activity on
47
diff --git a/start-sim b/start-sim
index 12c8f8f..df66790 100755
--- a/start-sim
+++ b/start-sim
@@ -2,8 +2,9 @@
2 2
3USER=$(whoami) 3USER=$(whoami)
4console_name="OpenSim_console" 4console_name="OpenSim_console"
5screen_session=opensim/${console_name} 5screen_command="tmux -S /var/run/opensim/opensim-tmux.socket"
6screen_check="screen -ls opensim/" 6screen_session=${console_name}
7screen_window="${screen_command} select-window -t ${screen_session}"
7osversion="current" 8osversion="current"
8bindir=/opt/opensim/${osversion}/bin 9bindir=/opt/opensim/${osversion}/bin
9quiet="" 10quiet=""
@@ -30,67 +31,70 @@ if [ "x$tgt" = "x" ]; then
30 exit 1 31 exit 1
31fi 32fi
32 33
33if [ $USER = "opensim" ]
34then
35 SUDO=""
36else
37 SUDO="sudo -Hu opensim"
38fi
39
40# Would be nice if this worked. 34# Would be nice if this worked.
41export MONO_PATH=${bindir} 35export MONO_PATH=${bindir}
42# Then we would not have to do this, and subsequently write all over the damn bin directory. 36# Then we would not have to do this, and subsequently write all over the damn bin directory.
43cd ${bindir} 37cd ${bindir}
44 38
45if ($screen_check | grep -q ${console_name}); then 39if ( ${screen_command} -q list-sessions 2>/dev/null | grep -q ${console_name}: ); then
46 true 40 true
47else 41else
48 $SUDO screen -d -m -S ${console_name} 42 if [ $USER = "opensim" ]
43 then
44 SUDO=""
45 else
46 SUDO="sudo -Hu opensim"
47 fi
48 # The sudo is only so that the session is owned by opensim, otherwise it's owned by whoewer ran this script, which is a likely security hole.
49 # After the session is created, we rely on the /var/run/opensim directory to be group sticky, so that anyone in the opensim group can attach to the tmux socket.
50 $SUDO ${screen_command} new-session -d -s ${console_name}
49fi 51fi
50 52
53inidir=/opt/opensim/config/${tgt}
54
51if [ "x$tgt" = "xrobust" ]; then 55if [ "x$tgt" = "xrobust" ]; then
52 exe="Robust" 56 exe="Robust"
57 title="ROBUST"
58 roboini="-inifile=${inidir}/Robust.ini"
53else 59else
54 exe="OpenSim" 60 exe="OpenSim"
61 # Grab the first line of the sim.ini file, it should be the sim name in square brackets.
62 title=$(head -n 1 ${inidir}/Regions/sim.ini )
63 # Strip off spaces at either end.
64 shopt -s extglob
65 title=${title##*( )}
66 title=${title%%*( )}
67 shopt -u extglob
68 # Strip off the square brackets at either end.
69 title=${title:1:$(( ${#title} - 2 ))}
55fi 70fi
56 71
57inidir=/opt/opensim/config/${tgt}
58# Grab the first line of the sim.ini file, it should be the sim name in square brackets.
59title=$(head -n 1 ${inidir}/Regions/sim.ini )
60# Strip off spaces at either end.
61shopt -s extglob
62title=${title##*( )}
63title=${title%%*( )}
64shopt -u extglob
65# Strip off the square brackets at either end.
66title=${title:1:$(( ${#title} - 2 ))}
67
68case $(basename $0) in 72case $(basename $0) in
69 "start-sim") 73 "start-sim")
70 cmd="/usr/bin/mono ${bindir}/${exe}.exe -inidirectory=${inidir} -logconfig=${inidir}/${exe}.exe.config" 74 cmd="/usr/bin/mono ${bindir}/${exe}.exe -inidirectory=${inidir} -logconfig=${inidir}/${exe}.exe.config ${roboini}"
71 75
72 # Check if it's already running. 76 # Check if it's already running.
73 if [ ! -e /var/run/opensim/${tgt}.pid ] 77 if [ ! -e /var/run/opensim/${tgt}.pid ]
74 then 78 then
75 $SUDO screen -r ${screen_session} -p "-" -X screen -t "[${title}]" ${cmd} 79 ${screen_command} new-window -dn "[${title}]" -t "${screen_session}" "${cmd}"
76 fi 80 fi
77 ;& 81 ;&
78 82
79 "sim-console") 83 "sim-console")
80 if [ "x$quiet" = "x" ] 84 if [ "x$quiet" = "x" ]
81 then 85 then
82 screen -r ${screen_session} -p "[${title}]" -A 86 ${screen_window}:"[${title}]" \; attach-session -t "${screen_session}"
83 fi 87 fi
84 ;; 88 ;;
85 89
86 "backup-sim") 90 "backup-sim")
87 # Substitute underscores for spaces in the title, then add the full date and time to create the OAR file name. 91 # Substitute underscores for spaces in the title, then add the full date and time to create the OAR file name.
88 cmd="save oar ${inidir}/../../backups/${title// /_}-$(date '+%F_%T').oar" 92 cmd="save oar ${inidir}/../../backups/${title// /_}-$(date '+%F_%T').oar"
89 $SUDO screen -r opensim/OpenSim_console -p "[${title}]" -X stuff "${cmd}$(/bin/echo -ne '\015')" 93 ${screen_window}:"[${title}]" \; send-keys "${cmd}" Enter
90 ;; 94 ;;
91 95
92 "stop-sim") 96 "stop-sim")
93 $SUDO screen -r opensim/OpenSim_console -p "[${title}]" -X stuff "shutdown$(/bin/echo -ne '\015')" 97 ${screen_window}:"[${title}]" \; send-keys "shutdown" Enter
94 ;; 98 ;;
95esac 99esac
96 100
diff --git a/start-sim-screen b/start-sim-screen
new file mode 100755
index 0000000..12c8f8f
--- /dev/null
+++ b/start-sim-screen
@@ -0,0 +1,96 @@
1#!/bin/bash
2
3USER=$(whoami)
4console_name="OpenSim_console"
5screen_session=opensim/${console_name}
6screen_check="screen -ls opensim/"
7osversion="current"
8bindir=/opt/opensim/${osversion}/bin
9quiet=""
10
11if [ "$1" = "-q" ]
12then
13 quiet="true"
14 shift 1
15fi
16
17if [ "x$1" = "x" ]; then
18 pathname=$(pwd)
19 tgt=$(basename $pathname)
20elif [ -d "./$1" ]; then
21 tgt=$1
22elif [ -d "./sim$1" ]; then
23 tgt=sim$1
24fi
25
26if [ "x$tgt" = "x" ]; then
27 echo "usage:"
28 echo " $ $(basename $0) <sim>"
29 echo "where <sim> is one of: " robust sim[0-9][0-9]
30 exit 1
31fi
32
33if [ $USER = "opensim" ]
34then
35 SUDO=""
36else
37 SUDO="sudo -Hu opensim"
38fi
39
40# Would be nice if this worked.
41export MONO_PATH=${bindir}
42# Then we would not have to do this, and subsequently write all over the damn bin directory.
43cd ${bindir}
44
45if ($screen_check | grep -q ${console_name}); then
46 true
47else
48 $SUDO screen -d -m -S ${console_name}
49fi
50
51if [ "x$tgt" = "xrobust" ]; then
52 exe="Robust"
53else
54 exe="OpenSim"
55fi
56
57inidir=/opt/opensim/config/${tgt}
58# Grab the first line of the sim.ini file, it should be the sim name in square brackets.
59title=$(head -n 1 ${inidir}/Regions/sim.ini )
60# Strip off spaces at either end.
61shopt -s extglob
62title=${title##*( )}
63title=${title%%*( )}
64shopt -u extglob
65# Strip off the square brackets at either end.
66title=${title:1:$(( ${#title} - 2 ))}
67
68case $(basename $0) in
69 "start-sim")
70 cmd="/usr/bin/mono ${bindir}/${exe}.exe -inidirectory=${inidir} -logconfig=${inidir}/${exe}.exe.config"
71
72 # Check if it's already running.
73 if [ ! -e /var/run/opensim/${tgt}.pid ]
74 then
75 $SUDO screen -r ${screen_session} -p "-" -X screen -t "[${title}]" ${cmd}
76 fi
77 ;&
78
79 "sim-console")
80 if [ "x$quiet" = "x" ]
81 then
82 screen -r ${screen_session} -p "[${title}]" -A
83 fi
84 ;;
85
86 "backup-sim")
87 # Substitute underscores for spaces in the title, then add the full date and time to create the OAR file name.
88 cmd="save oar ${inidir}/../../backups/${title// /_}-$(date '+%F_%T').oar"
89 $SUDO screen -r opensim/OpenSim_console -p "[${title}]" -X stuff "${cmd}$(/bin/echo -ne '\015')"
90 ;;
91
92 "stop-sim")
93 $SUDO screen -r opensim/OpenSim_console -p "[${title}]" -X stuff "shutdown$(/bin/echo -ne '\015')"
94 ;;
95esac
96