forked from jfederico/scalelite-run
-
Notifications
You must be signed in to change notification settings - Fork 0
/
init-recordings-bigbluebutton.sh
161 lines (139 loc) · 5.11 KB
/
init-recordings-bigbluebutton.sh
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
157
158
159
160
161
#!/bin/bash -ex
usage() {
set +x
cat 1>&2 <<HERE
Script for integrating BigBlueButton Recordings with Scaleite.
USAGE:
wget -qO- https://raw.githubusercontent.com/jfederico/scalelite-run/master/init-recordings-bigbluebutton.sh | bash -s -- [OPTIONS]
OPTIONS
-h <scalelite-hostname> Configure server with <scalelite-hostname> (required)
-u <scalelite-username> Scalelite username <scalelite-username> (optional)
-p <scalelite-ssh-port> SSH port in Scalelite server <scalelite-ssh-port> (optional)
-r <id_rsa-file> File with id_rsa private key to be used to ssh into Scalelite server <scalelite-id_rsa> (optional)
EXAMPLES:
Sample options for setup a BigBlueButton server
-s scalelite.example.com
-s scalelite.example.com -u scalelite
-s scalelite.example.com -u scalelite -p 2222
-s scalelite.example.com -u scalelite -p 2222 -r id_rsa-example
HERE
exit 0
}
main() {
export DEBIAN_FRONTEND=noninteractive
while builtin getopts "h:u:p:r" opt "${@}"; do
case $opt in
h)
HOST=$OPTARG
if [ "$HOST" == "scalelite.example.com" ]; then
err "You must specify a valid hostname (not the hostname given in the docs)."
fi
;;
u)
USER=$OPTARG
;;
p)
PORT=$OPTARG
;;
r)
ID_RSA=$OPTARG
;;
esac
done
if [ ! -z "$HOST" ]; then
check_host $HOST
else
usage
fi
}
check_root() {
if [ $EUID != 0 ]; then err "You must run this command as root."; fi
}
check_host() {
if [ ! -z "$HOST" ]; then
need_pkg dnsutils apt-transport-https net-tools
DIG_IP=$(dig +short $1 | grep '^[.0-9]*$' | tail -n1)
if [ -z "$DIG_IP" ]; then err "Unable to resolve $1 to an IP address using DNS lookup."; fi
fi
}
err() {
echo "$1" >&2
exit 1
}
need_pkg() {
check_root
if [ ! "$SOURCES_FETCHED" = true ]; then
apt-get update
SOURCES_FETCHED=true
fi
if ! dpkg -s ${@:1} >/dev/null 2>&1; then
LC_CTYPE=C.UTF-8 apt-get install -yq ${@:1}
fi
}
main "$@" || exit 1
# We can proceed with the setup
if grep -q scalelite-spool /etc/group
then
echo "Group <scalelite-spool> exists"
else
echo "Group <scalelite-spool> does not exist. Create it with GID 2000..."
groupadd -g 2000 scalelite-spool
fi
if grep -q bigbluebutton /etc/passwd
then
echo "User <bigbluebutton> exists"
else
echo 'User <bigbluebutton> does not exist. Add the bigbluebutton user using group <scalelite-spool>...'
useradd -m -d /home/bigbluebutton -s /bin/bash bigbluebutton
fi
usermod -a -G scalelite-spool bigbluebutton
if [ -d "/home/bigbluebutton" ]
then
echo "Home Directory for <bigbluebutton> was found"
else
echo "Home Directory for <bigbluebutton> was not found"
mkdir /home/bigbluebutton
chown bigbluebutton.bigbluebutton /home/bigbluebutton/
fi
echo 'Generate ssh key pair...'
su - bigbluebutton -s /bin/bash -c "ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_rsa" || true
echo 'Generate ssh config...'
if [ -f "/home/bigbluebutton/.ssh/config" ]; then
echo "file /home/bigbluebutton/.ssh/config exists"
rm /home/bigbluebutton/.ssh/config
fi
echo "Host scalelite-spool" | sudo tee -a /home/bigbluebutton/.ssh/config
echo " HostName $HOST" | sudo tee -a /home/bigbluebutton/.ssh/config
echo " User ${USER:-bigbluebutton}" | sudo tee -a /home/bigbluebutton/.ssh/config
echo " Port ${PORT:-22}" | sudo tee -a /home/bigbluebutton/.ssh/config
echo " IdentityFile /home/bigbluebutton/.ssh/${ID_RSA:-id_rsa}" | sudo tee -a /home/bigbluebutton/.ssh/config
chown bigbluebutton.bigbluebutton /home/bigbluebutton/.ssh/config
echo 'Add recording transfer scripts...'
POST_PUBLISH_DIR=/usr/local/bigbluebutton/core/scripts/post_publish
if [ -f "$POST_PUBLISH_DIR/scalelite_post_publish.rb" ]; then
echo "file $POST_PUBLISH_DIR/scalelite_post_publish.rb exists"
rm $POST_PUBLISH_DIR/scalelite_post_publish.rb
fi
wget -P $POST_PUBLISH_DIR https://raw.githubusercontent.com/blindsidenetworks/scalelite/master/bigbluebutton/scalelite_post_publish.rb
chmod +x $POST_PUBLISH_DIR/scalelite_post_publish.rb
echo 'Add recording transfer settings...'
CORE_SCRIPTS_DIR=/usr/local/bigbluebutton/core/scripts
if [ -f "$CORE_SCRIPTS_DIR/scalelite.yml" ]; then
echo "file $CORE_SCRIPTS_DIR/scalelite.yml exists"
rm $CORE_SCRIPTS_DIR/scalelite.yml
fi
wget https://raw.githubusercontent.com/blindsidenetworks/scalelite/master/bigbluebutton/scalelite.yml -P $CORE_SCRIPTS_DIR
sed -e '/spool_dir/ s/^#*/#/' -i $CORE_SCRIPTS_DIR/scalelite.yml
sed -e '/extra_rsync_opts/ s/^#*/#/' -i $CORE_SCRIPTS_DIR/scalelite.yml
echo 'spool_dir: scalelite-spool:/var/bigbluebutton/spool' | tee -a $CORE_SCRIPTS_DIR/scalelite.yml
echo 'extra_rsync_opts: ["-av", "--no-owner", "--chmod=F664"]' | tee -a $CORE_SCRIPTS_DIR/scalelite.yml
public_key=$(cat /home/bigbluebutton/.ssh/id_rsa.pub)
set +x
echo "**********************************************************************"
echo "Add this key to /home/bigbluebutton/.ssh/authorized_keys in scalelite:"
echo "**********************************************************************"
echo
echo "$public_key"
echo
echo "**********************************************************************"
exit 0