Browse Source

app functions for changing passwords

Bob Mottram 8 years ago
parent
commit
9f9f825f87

+ 4
- 0
src/freedombone-app-babel View File

@@ -33,6 +33,10 @@ VARIANTS=''
33 33
 ENABLE_BABEL="no"
34 34
 BABEL_PORT=6696
35 35
 
36
+function change_password_babel {
37
+    echo -n ''
38
+}
39
+
36 40
 function reconfigure_babel {
37 41
     echo -n ''
38 42
 }

+ 28
- 24
src/freedombone-app-batman View File

@@ -33,12 +33,16 @@ VARIANTS='mesh'
33 33
 ENABLE_BATMAN="no"
34 34
 BATMAN_CELLID='any'
35 35
 
36
-function configure_firewall_for_batma {
36
+function change_password_batman {
37
+    echo -n ''
38
+}
39
+
40
+function configure_firewall_for_batman {
37 41
     if grep -Fxq "configure_firewall_for_batman" $COMPLETION_FILE; then
38
-		return
42
+        return
39 43
     fi
40 44
     if [[ $ENABLE_BATMAN != "yes" ]]; then
41
-		return
45
+        return
42 46
     fi
43 47
 
44 48
     function_check save_firewall_settings
@@ -72,13 +76,13 @@ function restore_remote_batman {
72 76
 
73 77
 function remove_batman {
74 78
     if ! grep -Fxq "install_batman" $COMPLETION_FILE; then
75
-		return
79
+        return
76 80
     fi
77 81
 
78 82
     ${PROJECT_NAME}-mesh-install -f batman --remove yes
79 83
     if [ ! "$?" = "0" ]; then
80
-		echo $'Failed to remove batman'
81
-		exit 79353
84
+        echo $'Failed to remove batman'
85
+        exit 79353
82 86
     fi
83 87
     sed -i '/install_batman/d' $COMPLETION_FILE
84 88
     sed -i '/configure_firewall_for_batman/d' $COMPLETION_FILE
@@ -90,15 +94,15 @@ function mesh_install_batman {
90 94
     chroot "$rootdir" apt-get -y install wireless-tools rfkill
91 95
 
92 96
     if ! grep -q "batman_adv" $rootdir/etc/modules; then
93
-		echo 'batman_adv' >> $rootdir/etc/modules
97
+        echo 'batman_adv' >> $rootdir/etc/modules
94 98
     fi
95 99
 
96 100
     BATMAN_SCRIPT=$rootdir/var/lib/batman
97 101
 
98 102
     if [ -f /usr/local/bin/${PROJECT_NAME}-mesh-batman ]; then
99
-		cp /usr/local/bin/${PROJECT_NAME}-mesh-batman $BATMAN_SCRIPT
103
+        cp /usr/local/bin/${PROJECT_NAME}-mesh-batman $BATMAN_SCRIPT
100 104
     else
101
-		cp /usr/bin/${PROJECT_NAME}-mesh-batman $BATMAN_SCRIPT
105
+        cp /usr/bin/${PROJECT_NAME}-mesh-batman $BATMAN_SCRIPT
102 106
     fi
103 107
 
104 108
     BATMAN_DAEMON=$rootdir/etc/systemd/system/batman.service
@@ -124,32 +128,32 @@ function mesh_install_batman {
124 128
 
125 129
 function install_batman {
126 130
     if [ $INSTALLING_MESH ]; then
127
-		mesh_install_batman
128
-		return
131
+        mesh_install_batman
132
+        return
129 133
     fi
130 134
     if grep -Fxq "install_batman" $COMPLETION_FILE; then
131
-		return
135
+        return
132 136
     fi
133 137
     if [[ $ENABLE_BATMAN != "yes" ]]; then
134
-		return
138
+        return
135 139
     fi
136 140
 
137 141
     ${PROJECT_NAME}-mesh-install -f batman
138 142
     if [ ! "$?" = "0" ]; then
139
-		echo $'Failed to install batman'
140
-		exit 72524
143
+        echo $'Failed to install batman'
144
+        exit 72524
141 145
     fi
142 146
 
143 147
     if ! grep -q "Mesh Networking (B.A.T.M.A.N)" /home/$MY_USERNAME/README; then
144
-		echo '' >> /home/$MY_USERNAME/README
145
-		echo '' >> /home/$MY_USERNAME/README
146
-		echo 'Mesh Networking (B.A.T.M.A.N)' >> /home/$MY_USERNAME/README
147
-		echo '=============================' >> /home/$MY_USERNAME/README
148
-		echo "Mesh ESSID: $WIFI_SSID" >> /home/$MY_USERNAME/README
149
-		echo "Mesh cell ID: $BATMAN_CELLID" >> /home/$MY_USERNAME/README
150
-		echo "Mesh wifi channel: $WIFI_CHANNEL" >> /home/$MY_USERNAME/README
151
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
152
-		chmod 600 /home/$MY_USERNAME/README
148
+        echo '' >> /home/$MY_USERNAME/README
149
+        echo '' >> /home/$MY_USERNAME/README
150
+        echo 'Mesh Networking (B.A.T.M.A.N)' >> /home/$MY_USERNAME/README
151
+        echo '=============================' >> /home/$MY_USERNAME/README
152
+        echo "Mesh ESSID: $WIFI_SSID" >> /home/$MY_USERNAME/README
153
+        echo "Mesh cell ID: $BATMAN_CELLID" >> /home/$MY_USERNAME/README
154
+        echo "Mesh wifi channel: $WIFI_CHANNEL" >> /home/$MY_USERNAME/README
155
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
156
+        chmod 600 /home/$MY_USERNAME/README
153 157
     fi
154 158
 
155 159
     function_check configure_firewall_for_batman

+ 21
- 0
src/freedombone-app-blog View File

@@ -38,6 +38,27 @@ FULLBLOG_COMMIT='bf5fe9486160be4da86d8987d3e5c977e1dc6d32'
38 38
 MY_BLOG_TITLE="My Blog"
39 39
 MY_BLOG_SUBTITLE="Another ${PROJECT_NAME} Blog"
40 40
 
41
+function change_password_blog {
42
+    if ! grep -q "Blog domain:" $COMPLETION_FILE; then
43
+        return
44
+        echo "Blog domain:$FULLBLOG_DOMAIN_NAME" >> $COMPLETION_FILE
45
+    fi
46
+    FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | head -n 1 | awk -F ':' '{print $2}')
47
+
48
+    BLOG_USERNAME="$1"
49
+    BLOG_PASSWORD="$2"
50
+    if [ ${#BLOG_PASSWORD} -lt 8 ]; then
51
+        echo $'Blog password is too short'
52
+        return
53
+    fi
54
+    BLOG_PASSWORD_HASH=$(${PROJECT_NAME}-sec --bloghash "$BLOG_PASSWORD")
55
+    if [ ${#BLOG_PASSWORD_HASH} -lt 8 ]; then
56
+        echo $'Blog admin password could not be hashed'
57
+        exit 625728
58
+    fi
59
+    sed -i "s|password =.*|password = $BLOG_PASSWORD_HASH|g" /var/www/$FULLBLOG_DOMAIN_NAME/htdocs/config/users/$BLOG_USERNAME.ini
60
+}
61
+
41 62
 function reconfigure_blog {
42 63
     echo -n ''
43 64
 }

+ 4
- 0
src/freedombone-app-blogstatic View File

@@ -35,6 +35,10 @@ PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes"
35 35
 PELICAN_PLUGINS_REPO="https://github.com/getpelican/pelican-plugins"
36 36
 DEFAULT_BLOG_TITLE=$"Freedombone Blog"
37 37
 
38
+function change_password_blogstatic {
39
+    echo -n ''
40
+}
41
+
38 42
 function reconfigure_blogstatic {
39 43
     echo -n ''
40 44
 }

+ 451
- 447
src/freedombone-app-cjdns View File

@@ -41,499 +41,503 @@ CJDNS_COMMIT='13189fde111d0500427a7a0ce06a970753527bca'
41 41
 CJDCMD_REPO="https://github.com/inhies/cjdcmd"
42 42
 CJDCMD_COMMIT='973cca6ed0eecf9041c3403a40193c0b1291b808'
43 43
 
44
+function change_password_cjdns {
45
+    echo -n ''
46
+}
47
+
44 48
 function reconfigure_cjdns {
45
-	echo -n ''
49
+    echo -n ''
46 50
 }
47 51
 
48 52
 function upgrade_cjdns {
49
-	if ! grep -Fxq "install_cjdns" $COMPLETION_FILE; then
50
-		return
51
-	fi
52
-	function_check set_repo_commit
53
-	set_repo_commit /etc/cjdns "cjdns commit" "$CJDNS_COMMIT" $CJDNS_REPO
53
+    if ! grep -Fxq "install_cjdns" $COMPLETION_FILE; then
54
+        return
55
+    fi
56
+    function_check set_repo_commit
57
+    set_repo_commit /etc/cjdns "cjdns commit" "$CJDNS_COMMIT" $CJDNS_REPO
54 58
 }
55 59
 
56 60
 function configure_firewall_for_cjdns {
57
-	if grep -Fxq "configure_firewall_for_cjdns" $COMPLETION_FILE; then
58
-		return
59
-	fi
60
-	if [[ $ENABLE_CJDNS != "yes" ]]; then
61
-		return
62
-	fi
63
-	ip6tables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
64
-	ip6tables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
65
-	ip6tables -A INPUT -p udp --dport $CJDNS_PORT -j ACCEPT
66
-	ip6tables -A INPUT -p tcp --dport $CJDNS_PORT -j ACCEPT
67
-
68
-	function_check save_firewall_settings
69
-	save_firewall_settings
70
-	echo 'configure_firewall_for_cjdns' >> $COMPLETION_FILE
61
+    if grep -Fxq "configure_firewall_for_cjdns" $COMPLETION_FILE; then
62
+        return
63
+    fi
64
+    if [[ $ENABLE_CJDNS != "yes" ]]; then
65
+        return
66
+    fi
67
+    ip6tables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
68
+    ip6tables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
69
+    ip6tables -A INPUT -p udp --dport $CJDNS_PORT -j ACCEPT
70
+    ip6tables -A INPUT -p tcp --dport $CJDNS_PORT -j ACCEPT
71
+
72
+    function_check save_firewall_settings
73
+    save_firewall_settings
74
+    echo 'configure_firewall_for_cjdns' >> $COMPLETION_FILE
71 75
 }
72 76
 
73 77
 function get_cjdns_public_key {
74
-	if [ -f /home/$MY_USERNAME/README ]; then
75
-		if grep -q "cjdns public key" /home/$MY_USERNAME/README; then
76
-			if [ ! $CJDNS_PUBLIC_KEY ]; then
77
-				CJDNS_PUBLIC_KEY=$(cat /home/$MY_USERNAME/README | grep "cjdns public key" | awk -F ':' '{print $2}' | sed 's/^ *//')
78
-			fi
79
-		fi
80
-	fi
78
+    if [ -f /home/$MY_USERNAME/README ]; then
79
+        if grep -q "cjdns public key" /home/$MY_USERNAME/README; then
80
+            if [ ! $CJDNS_PUBLIC_KEY ]; then
81
+                CJDNS_PUBLIC_KEY=$(cat /home/$MY_USERNAME/README | grep "cjdns public key" | awk -F ':' '{print $2}' | sed 's/^ *//')
82
+            fi
83
+        fi
84
+    fi
81 85
 }
82 86
 
83 87
 function get_cjdns_private_key {
84
-	if [ -f /home/$MY_USERNAME/README ]; then
85
-		if grep -q "cjdns private key" /home/$MY_USERNAME/README; then
86
-			if [ ! $CJDNS_PRIVATE_KEY ]; then
87
-				CJDNS_PRIVATE_KEY=$(cat /home/$MY_USERNAME/README | grep "cjdns private key" | awk -F ':' '{print $2}' | sed 's/^ *//')
88
-			fi
89
-		fi
90
-	fi
88
+    if [ -f /home/$MY_USERNAME/README ]; then
89
+        if grep -q "cjdns private key" /home/$MY_USERNAME/README; then
90
+            if [ ! $CJDNS_PRIVATE_KEY ]; then
91
+                CJDNS_PRIVATE_KEY=$(cat /home/$MY_USERNAME/README | grep "cjdns private key" | awk -F ':' '{print $2}' | sed 's/^ *//')
92
+            fi
93
+        fi
94
+    fi
91 95
 }
92 96
 
93 97
 function get_cjdns_ipv6_address {
94
-	if [ -f /home/$MY_USERNAME/README ]; then
95
-		if grep -q "cjdns IPv6 address" /home/$MY_USERNAME/README; then
96
-			if [ ! $CJDNS_IPV6 ]; then
97
-				CJDNS_IPV6=$(cat /home/$MY_USERNAME/README | grep "cjdns IPv6 address" | awk -F ':' '{print $2}' | sed 's/^ *//')
98
-			fi
99
-		fi
100
-	fi
98
+    if [ -f /home/$MY_USERNAME/README ]; then
99
+        if grep -q "cjdns IPv6 address" /home/$MY_USERNAME/README; then
100
+            if [ ! $CJDNS_IPV6 ]; then
101
+                CJDNS_IPV6=$(cat /home/$MY_USERNAME/README | grep "cjdns IPv6 address" | awk -F ':' '{print $2}' | sed 's/^ *//')
102
+            fi
103
+        fi
104
+    fi
101 105
 }
102 106
 
103 107
 function get_cjdns_port {
104
-	if [ -f /home/$MY_USERNAME/README ]; then
105
-		if grep -q "cjdns port" /home/$MY_USERNAME/README; then
106
-			if [ ! $CJDNS_PORT ]; then
107
-				CJDNS_PORT=$(cat /home/$MY_USERNAME/README | grep "cjdns port" | awk -F ':' '{print $2}' | sed 's/^ *//')
108
-			fi
109
-		fi
110
-	fi
108
+    if [ -f /home/$MY_USERNAME/README ]; then
109
+        if grep -q "cjdns port" /home/$MY_USERNAME/README; then
110
+            if [ ! $CJDNS_PORT ]; then
111
+                CJDNS_PORT=$(cat /home/$MY_USERNAME/README | grep "cjdns port" | awk -F ':' '{print $2}' | sed 's/^ *//')
112
+            fi
113
+        fi
114
+    fi
111 115
 }
112 116
 
113 117
 function get_cjdns_password {
114
-	if [ -f /home/$MY_USERNAME/README ]; then
115
-		if grep -q "cjdns password" /home/$MY_USERNAME/README; then
116
-			if [ ! $CJDNS_PASSWORD ]; then
117
-				CJDNS_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "cjdns password" | awk -F ':' '{print $2}' | sed 's/^ *//')
118
-			fi
119
-		fi
120
-	fi
118
+    if [ -f /home/$MY_USERNAME/README ]; then
119
+        if grep -q "cjdns password" /home/$MY_USERNAME/README; then
120
+            if [ ! $CJDNS_PASSWORD ]; then
121
+                CJDNS_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "cjdns password" | awk -F ':' '{print $2}' | sed 's/^ *//')
122
+            fi
123
+        fi
124
+    fi
121 125
 }
122 126
 
123 127
 function backup_local_cjdns {
124
-	echo -n ''
128
+    echo -n ''
125 129
 }
126 130
 
127 131
 function restore_local_cjdns {
128
-	if [ -d $USB_MOUNT/backup/cjdns ]; then
129
-		echo $"Restoring cjdns installation"
130
-		temp_restore_dir=/root/tempcjdns
131
-		function_check restore_directory_from_usb
132
-		restore_directory_from_usb $temp_restore_dir cjdns
133
-		rm -rf /etc/cjdns
134
-		cp -r $temp_restore_dir/etc/cjdns /etc/
135
-		if [ ! "$?" = "0" ]; then
136
-			function_check set_user_permissions
137
-			set_user_permissions
138
-			function_check backup_unmount_drive
139
-			backup_unmount_drive
140
-			exit 8472
141
-		fi
142
-		rm -rf $temp_restore_dir
143
-	fi
132
+    if [ -d $USB_MOUNT/backup/cjdns ]; then
133
+        echo $"Restoring cjdns installation"
134
+        temp_restore_dir=/root/tempcjdns
135
+        function_check restore_directory_from_usb
136
+        restore_directory_from_usb $temp_restore_dir cjdns
137
+        rm -rf /etc/cjdns
138
+        cp -r $temp_restore_dir/etc/cjdns /etc/
139
+        if [ ! "$?" = "0" ]; then
140
+            function_check set_user_permissions
141
+            set_user_permissions
142
+            function_check backup_unmount_drive
143
+            backup_unmount_drive
144
+            exit 8472
145
+        fi
146
+        rm -rf $temp_restore_dir
147
+    fi
144 148
 }
145 149
 
146 150
 function backup_remote_cjdns {
147
-	echo -n ''
151
+    echo -n ''
148 152
 }
149 153
 
150 154
 function restore_remote_cjdns {
151
-	if [ -d $SERVER_DIRECTORY/backup/cjdns ]; then
152
-		echo $"Restoring cjdns installation"
153
-		temp_restore_dir=/root/tempcjdns
154
-		function_check restore_directory_from_friend
155
-		restore_directory_from_friend $temp_restore_dir cjdns
156
-		rm -rf /etc/cjdns
157
-		cp -r $temp_restore_dir/etc/cjdns /etc/
158
-		if [ ! "$?" = "0" ]; then
159
-			exit 7438
160
-		fi
161
-		rm -rf $temp_restore_dir
162
-	fi
155
+    if [ -d $SERVER_DIRECTORY/backup/cjdns ]; then
156
+        echo $"Restoring cjdns installation"
157
+        temp_restore_dir=/root/tempcjdns
158
+        function_check restore_directory_from_friend
159
+        restore_directory_from_friend $temp_restore_dir cjdns
160
+        rm -rf /etc/cjdns
161
+        cp -r $temp_restore_dir/etc/cjdns /etc/
162
+        if [ ! "$?" = "0" ]; then
163
+            exit 7438
164
+        fi
165
+        rm -rf $temp_restore_dir
166
+    fi
163 167
 }
164 168
 
165 169
 function remove_cjdns {
166
-	if ! grep -Fxq "install_cjdns" $COMPLETION_FILE; then
167
-		return
168
-	fi
169
-	service cjdns stop
170
-	ip6tables -D nat -D POSTROUTING -o tun0 -j MASQUERADE
171
-	ip6tables -D FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
172
-	ip6tables -D INPUT -p udp --dport $CJDNS_PORT -j ACCEPT
173
-	ip6tables -D INPUT -p tcp --dport $CJDNS_PORT -j ACCEPT
174
-	function_check save_firewall_settings
175
-	save_firewall_settings
176
-
177
-	rm -rf /etc/cjdns
178
-	sed -i '/install_cjdns/d' $COMPLETION_FILE
179
-	sed -i '/cjdns /d' $COMPLETION_FILE
180
-	sed -i '/configure_firewall_for_cjdns/d' $COMPLETION_FILE
170
+    if ! grep -Fxq "install_cjdns" $COMPLETION_FILE; then
171
+        return
172
+    fi
173
+    service cjdns stop
174
+    ip6tables -D nat -D POSTROUTING -o tun0 -j MASQUERADE
175
+    ip6tables -D FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
176
+    ip6tables -D INPUT -p udp --dport $CJDNS_PORT -j ACCEPT
177
+    ip6tables -D INPUT -p tcp --dport $CJDNS_PORT -j ACCEPT
178
+    function_check save_firewall_settings
179
+    save_firewall_settings
180
+
181
+    rm -rf /etc/cjdns
182
+    sed -i '/install_cjdns/d' $COMPLETION_FILE
183
+    sed -i '/cjdns /d' $COMPLETION_FILE
184
+    sed -i '/configure_firewall_for_cjdns/d' $COMPLETION_FILE
181 185
 }
182 186
 
183 187
 function install_cjdns_main {
184
-	if [[ $ENABLE_CJDNS != "yes" ]]; then
185
-		return
186
-	fi
187
-
188
-	if grep -Fxq "install_cjdns_main" $COMPLETION_FILE; then
189
-		return
190
-	fi
191
-
192
-	apt-get -y install nodejs git build-essential nmap
193
-
194
-	# if a README exists then obtain the cjdns parameters
195
-	function_check get_cjdns_ipv6_address
196
-	get_cjdns_ipv6_address
197
-
198
-	function_check get_cjdns_public_key
199
-	get_cjdns_public_key
200
-
201
-	function_check get_cjdns_private_key
202
-	get_cjdns_private_key
203
-
204
-	function_check get_cjdns_port
205
-	get_cjdns_port
206
-
207
-	function_check get_cjdns_password
208
-	get_cjdns_password
209
-
210
-	# special compile settings for running ./do on the Beaglebone Black
211
-	if [[ $INSTALLING_ON_BBB == "yes" ]]; then
212
-		CFLAGS="-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -ffast-math -mfloat-abi=hard -marm -Wno-error=maybe-uninitialized"
213
-		export LDFLAGS="$CFLAGS"
214
-	fi
215
-
216
-	if [ ! -d /etc/cjdns ]; then
217
-		function_check git_pull
218
-		git_clone $CJDNS_REPO /etc/cjdns
219
-		cd /etc/cjdns
220
-
221
-		git checkout $CJDNS_COMMIT -b $CJDNS_COMMIT
222
-		if ! grep -q "cjdns commit" $COMPLETION_FILE; then
223
-			echo "cjdns commit:$CJDNS_COMMIT" >> $COMPLETION_FILE
224
-		else
225
-			sed -i "s/cjdns commit.*/cjdns commit:$CJDNS_COMMIT/g" $COMPLETION_FILE
226
-		fi
227
-
228
-		./do
229
-		if [ ! "$?" = "0" ]; then
230
-			exit 7439
231
-		fi
232
-		# create a configuration
233
-		if [ ! -f /etc/cjdns/cjdroute.conf ]; then
234
-			./cjdroute --genconf > /etc/cjdns/cjdroute.conf
235
-			if [ ! "$?" = "0" ]; then
236
-				exit 5922
237
-			fi
238
-		fi
239
-		# create a user to run as
240
-		useradd cjdns
241
-	else
242
-		cd /etc/cjdns
243
-		function_check git_pull
244
-		git_pull $CJDNS_REPO
245
-		./do
246
-		if [ ! "$?" = "0" ]; then
247
-			exit 9926
248
-		fi
249
-	fi
250
-
251
-	# set permissions
252
-	chown -R cjdns:cjdns /etc/cjdns
253
-	chmod 600 /etc/cjdns/cjdroute.conf
254
-
255
-	/sbin/ip tuntap add mode tun user cjdns dev cjdroute0
256
-
257
-	# insert values into the configuration file
258
-	if [ $CJDNS_PRIVATE_KEY ]; then
259
-		sed -i "s/\"privateKey\":.*/\"privateKey\": \"$CJDNS_PRIVATE_KEY\",/g" /etc/cjdns/cjdroute.conf
260
-	else
261
-		CJDNS_PRIVATE_KEY=$(cat /etc/cjdns/cjdroute.conf | grep '"privateKey"' | awk -F '"' '{print $4}' | sed -n 1p)
262
-	fi
263
-	if [ $CJDNS_PUBLIC_KEY ]; then
264
-		sed -i "s/\"publicKey\":.*/\"publicKey\": \"$CJDNS_PUBLIC_KEY\",/g" /etc/cjdns/cjdroute.conf
265
-	else
266
-		CJDNS_PUBLIC_KEY=$(cat /etc/cjdns/cjdroute.conf | grep '"publicKey"' | awk -F '"' '{print $4}' | sed -n 1p)
267
-	fi
268
-	if [ $CJDNS_IPV6 ]; then
269
-		sed -i "s/\"ipv6\":.*/\"ipv6\": \"$CJDNS_IPV6\",/g" /etc/cjdns/cjdroute.conf
270
-	else
271
-		CJDNS_IPV6=$(cat /etc/cjdns/cjdroute.conf | grep '"ipv6"' | awk -F '"' '{print $4}' | sed -n 1p)
272
-	fi
273
-	if [ $CJDNS_PASSWORD ]; then
274
-		sed -i "0,/{\"password\":.*/s//{\"password\": \"$CJDNS_PASSWORD\"}/g" /etc/cjdns/cjdroute.conf
275
-	else
276
-		CJDNS_PASSWORD=$(cat /etc/cjdns/cjdroute.conf | grep '"password"' | awk -F '"' '{print $4}' | sed -n 1p)
277
-	fi
278
-	if [ $CJDNS_PORT ]; then
279
-		sed -i "s/\"bind\": \"0.0.0.0:.*/\"bind\": \"0.0.0.0:$CJDNS_PORT\",/g" /etc/cjdns/cjdroute.conf
280
-	else
281
-		CJDNS_PORT=$(cat /etc/cjdns/cjdroute.conf | grep '"bind": "0.0.0.0:' | awk -F '"' '{print $4}' | awk -F ':' '{print $2}' | sed -n 1p)
282
-	fi
283
-
284
-	function_check enable_ipv6
285
-	enable_ipv6
286
-
287
-	echo '#!/bin/sh -e' > /etc/init.d/cjdns
288
-	echo '### BEGIN INIT INFO' >> /etc/init.d/cjdns
289
-	echo '# hyperboria.sh - An init script (/etc/init.d/) for cjdns' >> /etc/init.d/cjdns
290
-	echo '# Provides:          cjdroute' >> /etc/init.d/cjdns
291
-	echo '# Required-Start:    $remote_fs $network' >> /etc/init.d/cjdns
292
-	echo '# Required-Stop:     $remote_fs $network' >> /etc/init.d/cjdns
293
-	echo '# Default-Start:     2 3 4 5' >> /etc/init.d/cjdns
294
-	echo '# Default-Stop:      0 1 6' >> /etc/init.d/cjdns
295
-	echo '# Short-Description: Cjdns router' >> /etc/init.d/cjdns
296
-	echo '# Description:       A routing engine designed for security, scalability, speed and ease of use.' >> /etc/init.d/cjdns
297
-	echo '# cjdns git repo:    https://github.com/cjdelisle/cjdns/' >> /etc/init.d/cjdns
298
-	echo '### END INIT INFO' >> /etc/init.d/cjdns
299
-	echo '' >> /etc/init.d/cjdns
300
-	echo 'PROG="cjdroute"' >> /etc/init.d/cjdns
301
-	echo 'GIT_PATH="/etc/cjdns"' >> /etc/init.d/cjdns
302
-	echo 'PROG_PATH="/etc/cjdns"' >> /etc/init.d/cjdns
303
-	echo 'CJDNS_CONFIG="cjdroute.conf"' >> /etc/init.d/cjdns
304
-	echo 'CJDNS_USER="cjdns"' >> /etc/init.d/cjdns
305
-	echo "CJDNS_IP='$CJDNS_IPV6'" >> /etc/init.d/cjdns
306
-	echo '' >> /etc/init.d/cjdns
307
-	echo 'start() {' >> /etc/init.d/cjdns
308
-	echo '     # Start it up with the user cjdns' >> /etc/init.d/cjdns
309
-	echo '     if [ $(pgrep cjdroute | wc -l) != 0 ];' >> /etc/init.d/cjdns
310
-	echo '     then' >> /etc/init.d/cjdns
311
-	echo '         echo "cjdroute is already running. Doing nothing..."' >> /etc/init.d/cjdns
312
-	echo '     else' >> /etc/init.d/cjdns
313
-	echo '         echo " * Starting cjdroute"' >> /etc/init.d/cjdns
314
-	echo '         su -c "$PROG_PATH/$PROG < $PROG_PATH/$CJDNS_CONFIG" - $CJDNS_USER' >> /etc/init.d/cjdns
315
-	echo '         /sbin/ip addr add $CJDNS_IP/8 dev tun0' >> /etc/init.d/cjdns
316
-	echo '         /sbin/ip link set mtu 1312 dev tun0' >> /etc/init.d/cjdns
317
-	echo '         /sbin/ip link set tun0 up' >> /etc/init.d/cjdns
318
-	echo '         /sbin/ip tuntap add mode tun user cjdns dev tun0' >> /etc/init.d/cjdns
319
-	echo '     fi' >> /etc/init.d/cjdns
320
-	echo '}' >> /etc/init.d/cjdns
321
-	echo '' >> /etc/init.d/cjdns
322
-	echo 'stop() {' >> /etc/init.d/cjdns
323
-	echo '' >> /etc/init.d/cjdns
324
-	echo '     if [ $(pgrep cjdroute | wc -l) != 2 ];' >> /etc/init.d/cjdns
325
-	echo '     then' >> /etc/init.d/cjdns
326
-	echo '         echo "cjdns isnt running."' >> /etc/init.d/cjdns
327
-	echo '     else' >> /etc/init.d/cjdns
328
-	echo '         echo "Killing cjdroute"' >> /etc/init.d/cjdns
329
-	echo '         killall cjdroute' >> /etc/init.d/cjdns
330
-	echo '     fi' >> /etc/init.d/cjdns
331
-	echo '}' >> /etc/init.d/cjdns
332
-	echo '' >> /etc/init.d/cjdns
333
-	echo 'status() {' >> /etc/init.d/cjdns
334
-	echo '     if [ $(pgrep cjdroute | wc -l) != 0 ];' >> /etc/init.d/cjdns
335
-	echo '     then' >> /etc/init.d/cjdns
336
-	echo '         echo "Cjdns is running"' >> /etc/init.d/cjdns
337
-	echo '     else' >> /etc/init.d/cjdns
338
-	echo '         echo "Cjdns is not running"' >> /etc/init.d/cjdns
339
-	echo '     fi' >> /etc/init.d/cjdns
340
-	echo '}' >> /etc/init.d/cjdns
341
-	echo '' >> /etc/init.d/cjdns
342
-	echo ' update() {' >> /etc/init.d/cjdns
343
-	echo '     cd $GIT_PATH' >> /etc/init.d/cjdns
344
-	echo '     echo "Updating..."' >> /etc/init.d/cjdns
345
-	echo '     git pull' >> /etc/init.d/cjdns
346
-	echo '     ./do' >> /etc/init.d/cjdns
347
-	echo '}' >> /etc/init.d/cjdns
348
-	echo '' >> /etc/init.d/cjdns
349
-	echo '## Check to see if we are running as root first.' >> /etc/init.d/cjdns
350
-	echo 'if [ "$(id -u)" != "0" ]; then' >> /etc/init.d/cjdns
351
-	echo '    echo "This script must be run as root" 1>&2' >> /etc/init.d/cjdns
352
-	echo '    exit 1' >> /etc/init.d/cjdns
353
-	echo 'fi' >> /etc/init.d/cjdns
354
-	echo '' >> /etc/init.d/cjdns
355
-	echo 'case $1 in' >> /etc/init.d/cjdns
356
-	echo '     start)' >> /etc/init.d/cjdns
357
-	echo '         start' >> /etc/init.d/cjdns
358
-	echo '         exit 0' >> /etc/init.d/cjdns
359
-	echo '     ;;' >> /etc/init.d/cjdns
360
-	echo '     stop)' >> /etc/init.d/cjdns
361
-	echo '         stop' >> /etc/init.d/cjdns
362
-	echo '         exit 0' >> /etc/init.d/cjdns
363
-	echo '     ;;' >> /etc/init.d/cjdns
364
-	echo '     reload|restart|force-reload)' >> /etc/init.d/cjdns
365
-	echo '         stop' >> /etc/init.d/cjdns
366
-	echo '         sleep 1' >> /etc/init.d/cjdns
367
-	echo '         start' >> /etc/init.d/cjdns
368
-	echo '         exit 0' >> /etc/init.d/cjdns
369
-	echo '     ;;' >> /etc/init.d/cjdns
370
-	echo '     status)' >> /etc/init.d/cjdns
371
-	echo '         status' >> /etc/init.d/cjdns
372
-	echo '         exit 0' >> /etc/init.d/cjdns
373
-	echo '     ;;' >> /etc/init.d/cjdns
374
-	echo '     update|upgrade)' >> /etc/init.d/cjdns
375
-	echo '         update' >> /etc/init.d/cjdns
376
-	echo '         stop' >> /etc/init.d/cjdns
377
-	echo '         sleep 2' >> /etc/init.d/cjdns
378
-	echo '         start' >> /etc/init.d/cjdns
379
-	echo '         exit 0' >> /etc/init.d/cjdns
380
-	echo '     ;;' >> /etc/init.d/cjdns
381
-	echo '     **)' >> /etc/init.d/cjdns
382
-	echo '         echo "Usage: $0 (start|stop|restart|status|update)" 1>&2' >> /etc/init.d/cjdns
383
-	echo '         exit 1' >> /etc/init.d/cjdns
384
-	echo '     ;;' >> /etc/init.d/cjdns
385
-	echo 'esac' >> /etc/init.d/cjdns
386
-	chmod +x /etc/init.d/cjdns
387
-	update-rc.d cjdns defaults
388
-	service cjdns start
389
-	if [ ! "$?" = "0" ]; then
390
-		systemctl status cjdns.service
391
-		exit 8260
392
-	fi
393
-
394
-	apt-get -y install radvd
395
-	echo 'interface eth0' > /etc/radvd.conf
396
-	echo '{' >> /etc/radvd.conf
397
-	echo '    AdvSendAdvert on;' >> /etc/radvd.conf
398
-	echo '    prefix fdfc::1/64' >> /etc/radvd.conf
399
-	echo '    {' >> /etc/radvd.conf
400
-	echo '        AdvRouterAddr on;' >> /etc/radvd.conf
401
-	echo '    };' >> /etc/radvd.conf
402
-	echo '};' >> /etc/radvd.conf
403
-	systemctl restart radvd
404
-	if [ ! "$?" = "0" ]; then
405
-		systemctl status radvd.service
406
-		exit 4395
407
-	fi
408
-
409
-	if ! grep -q "# Mesh Networking (cjdns)" /etc/network/interfaces; then
410
-		echo '' >> /etc/network/interfaces
411
-		echo '# Mesh Networking (cjdns)' >> /etc/network/interfaces
412
-		echo 'iface eth0 inet6 static' >> /etc/network/interfaces
413
-		echo '    pre-up modprobe ipv6' >> /etc/network/interfaces
414
-		echo '    address fdfc:0000:0000:0000:0000:0000:0000:0001' >> /etc/network/interfaces
415
-		echo '    netmask 64' >> /etc/network/interfaces
416
-		service network-manager restart
417
-		if [ ! "$?" = "0" ]; then
418
-			systemctl status networking.service
419
-			exit 6949
420
-		fi
421
-	fi
422
-
423
-	if ! grep -q $"Mesh Networking (cjdns)" /home/$MY_USERNAME/README; then
424
-		CURRENT_IP_ADDRESS=$(ip addr show | grep "inet " | sed -n 2p | awk -F ' ' '{print $2}' | awk -F '/' '{print $1}')
425
-
426
-		echo '' >> /home/$MY_USERNAME/README
427
-		echo '' >> /home/$MY_USERNAME/README
428
-		echo $'Mesh Networking (cjdns)' >> /home/$MY_USERNAME/README
429
-		echo '=======================' >> /home/$MY_USERNAME/README
430
-		echo $"cjdns IPv6 address: $CJDNS_IPV6" >> /home/$MY_USERNAME/README
431
-		echo $"cjdns public key: $CJDNS_PUBLIC_KEY" >> /home/$MY_USERNAME/README
432
-		echo $"cjdns private key: $CJDNS_PRIVATE_KEY" >> /home/$MY_USERNAME/README
433
-		echo $"cjdns password: $CJDNS_PASSWORD" >> /home/$MY_USERNAME/README
434
-		echo $"cjdns port: $CJDNS_PORT" >> /home/$MY_USERNAME/README
435
-		echo '' >> /home/$MY_USERNAME/README
436
-		echo $"Forward port $CJDNS_PORT from your internet router to the ${PROJECT_NAME}" >> /home/$MY_USERNAME/README
437
-		echo '' >> /home/$MY_USERNAME/README
438
-		echo $'Below is an example of your connection credentials' >> /home/$MY_USERNAME/README
439
-		echo $'that you can give to other people so they can connect' >> /home/$MY_USERNAME/README
440
-		echo $'to you using your default password' >> /home/$MY_USERNAME/README
441
-		echo $'Adding a unique password for each user is advisable' >> /home/$MY_USERNAME/README
442
-		echo $'so that leaks can be isolated.' >> /home/$MY_USERNAME/README
443
-		echo '' >> /home/$MY_USERNAME/README
444
-		echo "\"$CURRENT_IP_ADDRESS:$CJDNS_PORT\":{\"password\":\"$CJDNS_PASSWORD\",\"publicKey\":\"$CJDNS_PUBLIC_KEY\"}" >> /home/$MY_USERNAME/README
445
-		echo '' >> /home/$MY_USERNAME/README
446
-		echo $'More is not better. 3-5 cjdns peers is good. 30 peers is bad.' >> /home/$MY_USERNAME/README
447
-		echo '' >> /home/$MY_USERNAME/README
448
-		echo $'NEVER USE A PUBLIC PEER. These degrade the network and make it centralized.' >> /home/$MY_USERNAME/README
449
-		echo $'Each node can handle many peers, but no node can handle the entire internet.' >> /home/$MY_USERNAME/README
450
-		echo $'As this network grows any public peer will simply become saturated and' >> /home/$MY_USERNAME/README
451
-		echo $'useless causing issues for the entire network.' >> /home/$MY_USERNAME/README
452
-		echo $'Please report anyone offering you a public peer as they are promoting shared' >> /home/$MY_USERNAME/README
453
-		echo $'passwords which could lead to people pretending to be you. A peering pass' >> /home/$MY_USERNAME/README
454
-		echo $'should not contain someone elses nickname or info but should contain yours' >> /home/$MY_USERNAME/README
455
-		echo $'to ensure it is not shared. It also helps when editing the conf to know who' >> /home/$MY_USERNAME/README
456
-		echo $'each password is for.' >> /home/$MY_USERNAME/README
457
-		echo '' >> /home/$MY_USERNAME/README
458
-		echo $'Possible cjdns destinations of interest:' >> /home/$MY_USERNAME/README
459
-		echo '    http://transitiontech.ca/faq' >> /home/$MY_USERNAME/README
460
-		echo '    http://cjdns.ca/hypeirc.txt' >> /home/$MY_USERNAME/README
461
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
462
-		chmod 600 /home/$MY_USERNAME/README
463
-	fi
464
-
465
-	function_check configure_firewall_for_cjdns
466
-	configure_firewall_for_cjdns
467
-
468
-	echo 'install_cjdns_main' >> $COMPLETION_FILE
188
+    if [[ $ENABLE_CJDNS != "yes" ]]; then
189
+        return
190
+    fi
191
+
192
+    if grep -Fxq "install_cjdns_main" $COMPLETION_FILE; then
193
+        return
194
+    fi
195
+
196
+    apt-get -y install nodejs git build-essential nmap
197
+
198
+    # if a README exists then obtain the cjdns parameters
199
+    function_check get_cjdns_ipv6_address
200
+    get_cjdns_ipv6_address
201
+
202
+    function_check get_cjdns_public_key
203
+    get_cjdns_public_key
204
+
205
+    function_check get_cjdns_private_key
206
+    get_cjdns_private_key
207
+
208
+    function_check get_cjdns_port
209
+    get_cjdns_port
210
+
211
+    function_check get_cjdns_password
212
+    get_cjdns_password
213
+
214
+    # special compile settings for running ./do on the Beaglebone Black
215
+    if [[ $INSTALLING_ON_BBB == "yes" ]]; then
216
+        CFLAGS="-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -ffast-math -mfloat-abi=hard -marm -Wno-error=maybe-uninitialized"
217
+        export LDFLAGS="$CFLAGS"
218
+    fi
219
+
220
+    if [ ! -d /etc/cjdns ]; then
221
+        function_check git_pull
222
+        git_clone $CJDNS_REPO /etc/cjdns
223
+        cd /etc/cjdns
224
+
225
+        git checkout $CJDNS_COMMIT -b $CJDNS_COMMIT
226
+        if ! grep -q "cjdns commit" $COMPLETION_FILE; then
227
+            echo "cjdns commit:$CJDNS_COMMIT" >> $COMPLETION_FILE
228
+        else
229
+            sed -i "s/cjdns commit.*/cjdns commit:$CJDNS_COMMIT/g" $COMPLETION_FILE
230
+        fi
231
+
232
+        ./do
233
+        if [ ! "$?" = "0" ]; then
234
+            exit 7439
235
+        fi
236
+        # create a configuration
237
+        if [ ! -f /etc/cjdns/cjdroute.conf ]; then
238
+            ./cjdroute --genconf > /etc/cjdns/cjdroute.conf
239
+            if [ ! "$?" = "0" ]; then
240
+                exit 5922
241
+            fi
242
+        fi
243
+        # create a user to run as
244
+        useradd cjdns
245
+    else
246
+        cd /etc/cjdns
247
+        function_check git_pull
248
+        git_pull $CJDNS_REPO
249
+        ./do
250
+        if [ ! "$?" = "0" ]; then
251
+            exit 9926
252
+        fi
253
+    fi
254
+
255
+    # set permissions
256
+    chown -R cjdns:cjdns /etc/cjdns
257
+    chmod 600 /etc/cjdns/cjdroute.conf
258
+
259
+    /sbin/ip tuntap add mode tun user cjdns dev cjdroute0
260
+
261
+    # insert values into the configuration file
262
+    if [ $CJDNS_PRIVATE_KEY ]; then
263
+        sed -i "s/\"privateKey\":.*/\"privateKey\": \"$CJDNS_PRIVATE_KEY\",/g" /etc/cjdns/cjdroute.conf
264
+    else
265
+        CJDNS_PRIVATE_KEY=$(cat /etc/cjdns/cjdroute.conf | grep '"privateKey"' | awk -F '"' '{print $4}' | sed -n 1p)
266
+    fi
267
+    if [ $CJDNS_PUBLIC_KEY ]; then
268
+        sed -i "s/\"publicKey\":.*/\"publicKey\": \"$CJDNS_PUBLIC_KEY\",/g" /etc/cjdns/cjdroute.conf
269
+    else
270
+        CJDNS_PUBLIC_KEY=$(cat /etc/cjdns/cjdroute.conf | grep '"publicKey"' | awk -F '"' '{print $4}' | sed -n 1p)
271
+    fi
272
+    if [ $CJDNS_IPV6 ]; then
273
+        sed -i "s/\"ipv6\":.*/\"ipv6\": \"$CJDNS_IPV6\",/g" /etc/cjdns/cjdroute.conf
274
+    else
275
+        CJDNS_IPV6=$(cat /etc/cjdns/cjdroute.conf | grep '"ipv6"' | awk -F '"' '{print $4}' | sed -n 1p)
276
+    fi
277
+    if [ $CJDNS_PASSWORD ]; then
278
+        sed -i "0,/{\"password\":.*/s//{\"password\": \"$CJDNS_PASSWORD\"}/g" /etc/cjdns/cjdroute.conf
279
+    else
280
+        CJDNS_PASSWORD=$(cat /etc/cjdns/cjdroute.conf | grep '"password"' | awk -F '"' '{print $4}' | sed -n 1p)
281
+    fi
282
+    if [ $CJDNS_PORT ]; then
283
+        sed -i "s/\"bind\": \"0.0.0.0:.*/\"bind\": \"0.0.0.0:$CJDNS_PORT\",/g" /etc/cjdns/cjdroute.conf
284
+    else
285
+        CJDNS_PORT=$(cat /etc/cjdns/cjdroute.conf | grep '"bind": "0.0.0.0:' | awk -F '"' '{print $4}' | awk -F ':' '{print $2}' | sed -n 1p)
286
+    fi
287
+
288
+    function_check enable_ipv6
289
+    enable_ipv6
290
+
291
+    echo '#!/bin/sh -e' > /etc/init.d/cjdns
292
+    echo '### BEGIN INIT INFO' >> /etc/init.d/cjdns
293
+    echo '# hyperboria.sh - An init script (/etc/init.d/) for cjdns' >> /etc/init.d/cjdns
294
+    echo '# Provides:          cjdroute' >> /etc/init.d/cjdns
295
+    echo '# Required-Start:    $remote_fs $network' >> /etc/init.d/cjdns
296
+    echo '# Required-Stop:     $remote_fs $network' >> /etc/init.d/cjdns
297
+    echo '# Default-Start:     2 3 4 5' >> /etc/init.d/cjdns
298
+    echo '# Default-Stop:      0 1 6' >> /etc/init.d/cjdns
299
+    echo '# Short-Description: Cjdns router' >> /etc/init.d/cjdns
300
+    echo '# Description:       A routing engine designed for security, scalability, speed and ease of use.' >> /etc/init.d/cjdns
301
+    echo '# cjdns git repo:    https://github.com/cjdelisle/cjdns/' >> /etc/init.d/cjdns
302
+    echo '### END INIT INFO' >> /etc/init.d/cjdns
303
+    echo '' >> /etc/init.d/cjdns
304
+    echo 'PROG="cjdroute"' >> /etc/init.d/cjdns
305
+    echo 'GIT_PATH="/etc/cjdns"' >> /etc/init.d/cjdns
306
+    echo 'PROG_PATH="/etc/cjdns"' >> /etc/init.d/cjdns
307
+    echo 'CJDNS_CONFIG="cjdroute.conf"' >> /etc/init.d/cjdns
308
+    echo 'CJDNS_USER="cjdns"' >> /etc/init.d/cjdns
309
+    echo "CJDNS_IP='$CJDNS_IPV6'" >> /etc/init.d/cjdns
310
+    echo '' >> /etc/init.d/cjdns
311
+    echo 'start() {' >> /etc/init.d/cjdns
312
+    echo '     # Start it up with the user cjdns' >> /etc/init.d/cjdns
313
+    echo '     if [ $(pgrep cjdroute | wc -l) != 0 ];' >> /etc/init.d/cjdns
314
+    echo '     then' >> /etc/init.d/cjdns
315
+    echo '         echo "cjdroute is already running. Doing nothing..."' >> /etc/init.d/cjdns
316
+    echo '     else' >> /etc/init.d/cjdns
317
+    echo '         echo " * Starting cjdroute"' >> /etc/init.d/cjdns
318
+    echo '         su -c "$PROG_PATH/$PROG < $PROG_PATH/$CJDNS_CONFIG" - $CJDNS_USER' >> /etc/init.d/cjdns
319
+    echo '         /sbin/ip addr add $CJDNS_IP/8 dev tun0' >> /etc/init.d/cjdns
320
+    echo '         /sbin/ip link set mtu 1312 dev tun0' >> /etc/init.d/cjdns
321
+    echo '         /sbin/ip link set tun0 up' >> /etc/init.d/cjdns
322
+    echo '         /sbin/ip tuntap add mode tun user cjdns dev tun0' >> /etc/init.d/cjdns
323
+    echo '     fi' >> /etc/init.d/cjdns
324
+    echo '}' >> /etc/init.d/cjdns
325
+    echo '' >> /etc/init.d/cjdns
326
+    echo 'stop() {' >> /etc/init.d/cjdns
327
+    echo '' >> /etc/init.d/cjdns
328
+    echo '     if [ $(pgrep cjdroute | wc -l) != 2 ];' >> /etc/init.d/cjdns
329
+    echo '     then' >> /etc/init.d/cjdns
330
+    echo '         echo "cjdns isnt running."' >> /etc/init.d/cjdns
331
+    echo '     else' >> /etc/init.d/cjdns
332
+    echo '         echo "Killing cjdroute"' >> /etc/init.d/cjdns
333
+    echo '         killall cjdroute' >> /etc/init.d/cjdns
334
+    echo '     fi' >> /etc/init.d/cjdns
335
+    echo '}' >> /etc/init.d/cjdns
336
+    echo '' >> /etc/init.d/cjdns
337
+    echo 'status() {' >> /etc/init.d/cjdns
338
+    echo '     if [ $(pgrep cjdroute | wc -l) != 0 ];' >> /etc/init.d/cjdns
339
+    echo '     then' >> /etc/init.d/cjdns
340
+    echo '         echo "Cjdns is running"' >> /etc/init.d/cjdns
341
+    echo '     else' >> /etc/init.d/cjdns
342
+    echo '         echo "Cjdns is not running"' >> /etc/init.d/cjdns
343
+    echo '     fi' >> /etc/init.d/cjdns
344
+    echo '}' >> /etc/init.d/cjdns
345
+    echo '' >> /etc/init.d/cjdns
346
+    echo ' update() {' >> /etc/init.d/cjdns
347
+    echo '     cd $GIT_PATH' >> /etc/init.d/cjdns
348
+    echo '     echo "Updating..."' >> /etc/init.d/cjdns
349
+    echo '     git pull' >> /etc/init.d/cjdns
350
+    echo '     ./do' >> /etc/init.d/cjdns
351
+    echo '}' >> /etc/init.d/cjdns
352
+    echo '' >> /etc/init.d/cjdns
353
+    echo '## Check to see if we are running as root first.' >> /etc/init.d/cjdns
354
+    echo 'if [ "$(id -u)" != "0" ]; then' >> /etc/init.d/cjdns
355
+    echo '    echo "This script must be run as root" 1>&2' >> /etc/init.d/cjdns
356
+    echo '    exit 1' >> /etc/init.d/cjdns
357
+    echo 'fi' >> /etc/init.d/cjdns
358
+    echo '' >> /etc/init.d/cjdns
359
+    echo 'case $1 in' >> /etc/init.d/cjdns
360
+    echo '     start)' >> /etc/init.d/cjdns
361
+    echo '         start' >> /etc/init.d/cjdns
362
+    echo '         exit 0' >> /etc/init.d/cjdns
363
+    echo '     ;;' >> /etc/init.d/cjdns
364
+    echo '     stop)' >> /etc/init.d/cjdns
365
+    echo '         stop' >> /etc/init.d/cjdns
366
+    echo '         exit 0' >> /etc/init.d/cjdns
367
+    echo '     ;;' >> /etc/init.d/cjdns
368
+    echo '     reload|restart|force-reload)' >> /etc/init.d/cjdns
369
+    echo '         stop' >> /etc/init.d/cjdns
370
+    echo '         sleep 1' >> /etc/init.d/cjdns
371
+    echo '         start' >> /etc/init.d/cjdns
372
+    echo '         exit 0' >> /etc/init.d/cjdns
373
+    echo '     ;;' >> /etc/init.d/cjdns
374
+    echo '     status)' >> /etc/init.d/cjdns
375
+    echo '         status' >> /etc/init.d/cjdns
376
+    echo '         exit 0' >> /etc/init.d/cjdns
377
+    echo '     ;;' >> /etc/init.d/cjdns
378
+    echo '     update|upgrade)' >> /etc/init.d/cjdns
379
+    echo '         update' >> /etc/init.d/cjdns
380
+    echo '         stop' >> /etc/init.d/cjdns
381
+    echo '         sleep 2' >> /etc/init.d/cjdns
382
+    echo '         start' >> /etc/init.d/cjdns
383
+    echo '         exit 0' >> /etc/init.d/cjdns
384
+    echo '     ;;' >> /etc/init.d/cjdns
385
+    echo '     **)' >> /etc/init.d/cjdns
386
+    echo '         echo "Usage: $0 (start|stop|restart|status|update)" 1>&2' >> /etc/init.d/cjdns
387
+    echo '         exit 1' >> /etc/init.d/cjdns
388
+    echo '     ;;' >> /etc/init.d/cjdns
389
+    echo 'esac' >> /etc/init.d/cjdns
390
+    chmod +x /etc/init.d/cjdns
391
+    update-rc.d cjdns defaults
392
+    service cjdns start
393
+    if [ ! "$?" = "0" ]; then
394
+        systemctl status cjdns.service
395
+        exit 8260
396
+    fi
397
+
398
+    apt-get -y install radvd
399
+    echo 'interface eth0' > /etc/radvd.conf
400
+    echo '{' >> /etc/radvd.conf
401
+    echo '    AdvSendAdvert on;' >> /etc/radvd.conf
402
+    echo '    prefix fdfc::1/64' >> /etc/radvd.conf
403
+    echo '    {' >> /etc/radvd.conf
404
+    echo '        AdvRouterAddr on;' >> /etc/radvd.conf
405
+    echo '    };' >> /etc/radvd.conf
406
+    echo '};' >> /etc/radvd.conf
407
+    systemctl restart radvd
408
+    if [ ! "$?" = "0" ]; then
409
+        systemctl status radvd.service
410
+        exit 4395
411
+    fi
412
+
413
+    if ! grep -q "# Mesh Networking (cjdns)" /etc/network/interfaces; then
414
+        echo '' >> /etc/network/interfaces
415
+        echo '# Mesh Networking (cjdns)' >> /etc/network/interfaces
416
+        echo 'iface eth0 inet6 static' >> /etc/network/interfaces
417
+        echo '    pre-up modprobe ipv6' >> /etc/network/interfaces
418
+        echo '    address fdfc:0000:0000:0000:0000:0000:0000:0001' >> /etc/network/interfaces
419
+        echo '    netmask 64' >> /etc/network/interfaces
420
+        service network-manager restart
421
+        if [ ! "$?" = "0" ]; then
422
+            systemctl status networking.service
423
+            exit 6949
424
+        fi
425
+    fi
426
+
427
+    if ! grep -q $"Mesh Networking (cjdns)" /home/$MY_USERNAME/README; then
428
+        CURRENT_IP_ADDRESS=$(ip addr show | grep "inet " | sed -n 2p | awk -F ' ' '{print $2}' | awk -F '/' '{print $1}')
429
+
430
+        echo '' >> /home/$MY_USERNAME/README
431
+        echo '' >> /home/$MY_USERNAME/README
432
+        echo $'Mesh Networking (cjdns)' >> /home/$MY_USERNAME/README
433
+        echo '=======================' >> /home/$MY_USERNAME/README
434
+        echo $"cjdns IPv6 address: $CJDNS_IPV6" >> /home/$MY_USERNAME/README
435
+        echo $"cjdns public key: $CJDNS_PUBLIC_KEY" >> /home/$MY_USERNAME/README
436
+        echo $"cjdns private key: $CJDNS_PRIVATE_KEY" >> /home/$MY_USERNAME/README
437
+        echo $"cjdns password: $CJDNS_PASSWORD" >> /home/$MY_USERNAME/README
438
+        echo $"cjdns port: $CJDNS_PORT" >> /home/$MY_USERNAME/README
439
+        echo '' >> /home/$MY_USERNAME/README
440
+        echo $"Forward port $CJDNS_PORT from your internet router to the ${PROJECT_NAME}" >> /home/$MY_USERNAME/README
441
+        echo '' >> /home/$MY_USERNAME/README
442
+        echo $'Below is an example of your connection credentials' >> /home/$MY_USERNAME/README
443
+        echo $'that you can give to other people so they can connect' >> /home/$MY_USERNAME/README
444
+        echo $'to you using your default password' >> /home/$MY_USERNAME/README
445
+        echo $'Adding a unique password for each user is advisable' >> /home/$MY_USERNAME/README
446
+        echo $'so that leaks can be isolated.' >> /home/$MY_USERNAME/README
447
+        echo '' >> /home/$MY_USERNAME/README
448
+        echo "\"$CURRENT_IP_ADDRESS:$CJDNS_PORT\":{\"password\":\"$CJDNS_PASSWORD\",\"publicKey\":\"$CJDNS_PUBLIC_KEY\"}" >> /home/$MY_USERNAME/README
449
+        echo '' >> /home/$MY_USERNAME/README
450
+        echo $'More is not better. 3-5 cjdns peers is good. 30 peers is bad.' >> /home/$MY_USERNAME/README
451
+        echo '' >> /home/$MY_USERNAME/README
452
+        echo $'NEVER USE A PUBLIC PEER. These degrade the network and make it centralized.' >> /home/$MY_USERNAME/README
453
+        echo $'Each node can handle many peers, but no node can handle the entire internet.' >> /home/$MY_USERNAME/README
454
+        echo $'As this network grows any public peer will simply become saturated and' >> /home/$MY_USERNAME/README
455
+        echo $'useless causing issues for the entire network.' >> /home/$MY_USERNAME/README
456
+        echo $'Please report anyone offering you a public peer as they are promoting shared' >> /home/$MY_USERNAME/README
457
+        echo $'passwords which could lead to people pretending to be you. A peering pass' >> /home/$MY_USERNAME/README
458
+        echo $'should not contain someone elses nickname or info but should contain yours' >> /home/$MY_USERNAME/README
459
+        echo $'to ensure it is not shared. It also helps when editing the conf to know who' >> /home/$MY_USERNAME/README
460
+        echo $'each password is for.' >> /home/$MY_USERNAME/README
461
+        echo '' >> /home/$MY_USERNAME/README
462
+        echo $'Possible cjdns destinations of interest:' >> /home/$MY_USERNAME/README
463
+        echo '    http://transitiontech.ca/faq' >> /home/$MY_USERNAME/README
464
+        echo '    http://cjdns.ca/hypeirc.txt' >> /home/$MY_USERNAME/README
465
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
466
+        chmod 600 /home/$MY_USERNAME/README
467
+    fi
468
+
469
+    function_check configure_firewall_for_cjdns
470
+    configure_firewall_for_cjdns
471
+
472
+    echo 'install_cjdns_main' >> $COMPLETION_FILE
469 473
 }
470 474
 
471 475
 function install_cjdns_tools {
472
-	if grep -Fxq "install_cjdns_tools" $COMPLETION_FILE; then
473
-		return
474
-	fi
475
-	if [[ $ENABLE_CJDNS != "yes" ]]; then
476
-		return
477
-	fi
478
-	if [ ! -d /etc/cjdns ]; then
479
-		install_cjdns
480
-	fi
481
-
482
-	function_check select_go_version
483
-	select_go_version
484
-
485
-	apt-get -y install golang mercurial
486
-	if [ ! -f ~/.bashrc ]; then
487
-		touch ~/.bashrc
488
-	fi
489
-
490
-	if [ ! -d /home/git ]; then
491
-		# add a gogs user account
492
-		adduser --disabled-login --gecos 'Gogs' git
493
-
494
-		# install Go
495
-		if ! grep -q "export GOPATH=" ~/.bashrc; then
496
-			echo "export GOPATH=$GOPATH" >> ~/.bashrc
497
-		fi
498
-		systemctl set-environment GOPATH=$GOPATH
499
-		if ! grep -q "systemctl set-environment GOPATH=" ~/.bashrc; then
500
-			echo "systemctl set-environment GOPATH=$GOPATH" >> ~/.bashrc
501
-		fi
502
-		if [ ! -d $GOPATH ]; then
503
-			mkdir -p $GOPATH
504
-		fi
505
-	fi
506
-
507
-	if ! grep -q "export GOPATH=" ~/.bashrc; then
508
-		echo "export GOPATH=$GOPATH" >> ~/.bashrc
509
-	fi
510
-	expected_go_path='export PATH=$PATH:'${GOPATH}'/bin'
511
-	export PATH=$PATH:${GOPATH}/bin
512
-	if ! grep -q "$expected_go_path" ~/.bashrc; then
513
-		echo "$expected_go_path" >> ~/.bashrc
514
-	fi
515
-	export PATH=$PATH:$GOPATH/bin
516
-	CJDCMD_REPO2=$(echo "$CJDCMD_REPO" | sed 's|https://||g')
517
-	go get $CJDCMD_REPO2
518
-	if [ ! -f $GOPATH/bin/cjdcmd ]; then
519
-		echo $'cjdcmd was not compiled. Check your golang installation'
520
-		exit 7439
521
-	fi
522
-	cp $GOPATH/bin/cjdcmd /usr/bin
523
-
524
-	# initialise from the cjdns config
525
-	/usr/bin/cjdcmd cjdnsadmin -file /etc/cjdns/cjdroute.conf
526
-
527
-	echo 'install_cjdns_tools' >> $COMPLETION_FILE
476
+    if grep -Fxq "install_cjdns_tools" $COMPLETION_FILE; then
477
+        return
478
+    fi
479
+    if [[ $ENABLE_CJDNS != "yes" ]]; then
480
+        return
481
+    fi
482
+    if [ ! -d /etc/cjdns ]; then
483
+        install_cjdns
484
+    fi
485
+
486
+    function_check select_go_version
487
+    select_go_version
488
+
489
+    apt-get -y install golang mercurial
490
+    if [ ! -f ~/.bashrc ]; then
491
+        touch ~/.bashrc
492
+    fi
493
+
494
+    if [ ! -d /home/git ]; then
495
+        # add a gogs user account
496
+        adduser --disabled-login --gecos 'Gogs' git
497
+
498
+        # install Go
499
+        if ! grep -q "export GOPATH=" ~/.bashrc; then
500
+            echo "export GOPATH=$GOPATH" >> ~/.bashrc
501
+        fi
502
+        systemctl set-environment GOPATH=$GOPATH
503
+        if ! grep -q "systemctl set-environment GOPATH=" ~/.bashrc; then
504
+            echo "systemctl set-environment GOPATH=$GOPATH" >> ~/.bashrc
505
+        fi
506
+        if [ ! -d $GOPATH ]; then
507
+            mkdir -p $GOPATH
508
+        fi
509
+    fi
510
+
511
+    if ! grep -q "export GOPATH=" ~/.bashrc; then
512
+        echo "export GOPATH=$GOPATH" >> ~/.bashrc
513
+    fi
514
+    expected_go_path='export PATH=$PATH:'${GOPATH}'/bin'
515
+    export PATH=$PATH:${GOPATH}/bin
516
+    if ! grep -q "$expected_go_path" ~/.bashrc; then
517
+        echo "$expected_go_path" >> ~/.bashrc
518
+    fi
519
+    export PATH=$PATH:$GOPATH/bin
520
+    CJDCMD_REPO2=$(echo "$CJDCMD_REPO" | sed 's|https://||g')
521
+    go get $CJDCMD_REPO2
522
+    if [ ! -f $GOPATH/bin/cjdcmd ]; then
523
+        echo $'cjdcmd was not compiled. Check your golang installation'
524
+        exit 7439
525
+    fi
526
+    cp $GOPATH/bin/cjdcmd /usr/bin
527
+
528
+    # initialise from the cjdns config
529
+    /usr/bin/cjdcmd cjdnsadmin -file /etc/cjdns/cjdroute.conf
530
+
531
+    echo 'install_cjdns_tools' >> $COMPLETION_FILE
528 532
 }
529 533
 
530 534
 function install_cjdns {
531
-	if grep -Fxq "install_cjdns" $COMPLETION_FILE; then
532
-		return
533
-	fi
534
-	install_cjdns_main
535
-	install_cjdns_tools
536
-	echo 'install_cjdns' >> $COMPLETION_FILE
535
+    if grep -Fxq "install_cjdns" $COMPLETION_FILE; then
536
+        return
537
+    fi
538
+    install_cjdns_main
539
+    install_cjdns_tools
540
+    echo 'install_cjdns' >> $COMPLETION_FILE
537 541
 }
538 542
 
539 543
 # NOTE: deliberately no exit 0

+ 171
- 167
src/freedombone-app-dlna View File

@@ -30,206 +30,210 @@
30 30
 
31 31
 VARIANTS='full media'
32 32
 
33
+function change_password_dlna {
34
+    echo -n ''
35
+}
36
+
33 37
 function reconfigure_dlna {
34
-	echo ''
38
+    echo ''
35 39
 }
36 40
 
37 41
 function upgrade_dlna {
38
-	echo ''
42
+    echo ''
39 43
 }
40 44
 
41 45
 function configure_firewall_for_dlna {
42
-	if grep -Fxq "configure_firewall_for_dlna" $COMPLETION_FILE; then
43
-		return
44
-	fi
45
-	if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then
46
-		# docker does its own firewalling
47
-		return
48
-	fi
49
-	iptables -A INPUT -p udp --dport 1900 -j ACCEPT
50
-	iptables -A INPUT -p tcp --dport 8200 -j ACCEPT
51
-	function_check save_firewall_settings
52
-	save_firewall_settings
53
-
54
-	OPEN_PORTS+=('DLNA     1900')
55
-	OPEN_PORTS+=('DLNA     8200')
56
-	echo 'configure_firewall_for_dlna' >> $COMPLETION_FILE
46
+    if grep -Fxq "configure_firewall_for_dlna" $COMPLETION_FILE; then
47
+        return
48
+    fi
49
+    if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then
50
+        # docker does its own firewalling
51
+        return
52
+    fi
53
+    iptables -A INPUT -p udp --dport 1900 -j ACCEPT
54
+    iptables -A INPUT -p tcp --dport 8200 -j ACCEPT
55
+    function_check save_firewall_settings
56
+    save_firewall_settings
57
+
58
+    OPEN_PORTS+=('DLNA     1900')
59
+    OPEN_PORTS+=('DLNA     8200')
60
+    echo 'configure_firewall_for_dlna' >> $COMPLETION_FILE
57 61
 }
58 62
 
59 63
 function backup_local_dlna {
60
-	source_directory=/var/cache/minidlna
61
-	if [ -d $source_directory ]; then
62
-		dest_directory=dlna
63
-		echo $"Backing up $source_directory to $dest_directory"
64
+    source_directory=/var/cache/minidlna
65
+    if [ -d $source_directory ]; then
66
+        dest_directory=dlna
67
+        echo $"Backing up $source_directory to $dest_directory"
64 68
 
65
-		function_check backup_directory_to_usb
66
-		backup_directory_to_usb $source_directory $dest_directory
69
+        function_check backup_directory_to_usb
70
+        backup_directory_to_usb $source_directory $dest_directory
67 71
 
68
-		echo $"Backup to $dest_directory complete"
69
-	fi
72
+        echo $"Backup to $dest_directory complete"
73
+    fi
70 74
 }
71 75
 
72 76
 function restore_local_dlna {
73
-	if [ -d /var/cache/minidlna ]; then
74
-		if [ -d $USB_MOUNT/backup/dlna ]; then
75
-			echo $"Restoring DLNA cache"
76
-			temp_restore_dir=/root/tempdlna
77
-			function_check restore_directory_from_usb
78
-			restore_directory_from_usb $temp_restore_dir dlna
79
-			cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/
80
-			if [ ! "$?" = "0" ]; then
81
-				rm -rf $temp_restore_dir
82
-				function_check set_user_permissions
83
-				set_user_permissions
84
-				function_check backup_unmount_drive
85
-				backup_unmount_drive
86
-				exit 982572
87
-			fi
88
-			rm -rf $temp_restore_dir
89
-		fi
90
-	fi
77
+    if [ -d /var/cache/minidlna ]; then
78
+        if [ -d $USB_MOUNT/backup/dlna ]; then
79
+            echo $"Restoring DLNA cache"
80
+            temp_restore_dir=/root/tempdlna
81
+            function_check restore_directory_from_usb
82
+            restore_directory_from_usb $temp_restore_dir dlna
83
+            cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/
84
+            if [ ! "$?" = "0" ]; then
85
+                rm -rf $temp_restore_dir
86
+                function_check set_user_permissions
87
+                set_user_permissions
88
+                function_check backup_unmount_drive
89
+                backup_unmount_drive
90
+                exit 982572
91
+            fi
92
+            rm -rf $temp_restore_dir
93
+        fi
94
+    fi
91 95
 }
92 96
 
93 97
 function backup_remote_dlna {
94
-	if [ -d /var/cache/minidlna ]; then
95
-		echo $"Backing up DLNA cache"
96
-		backup_directory_to_friend /var/cache/minidlna dlna
97
-		echo $"Backup of DLNA cache complete"
98
-	fi
98
+    if [ -d /var/cache/minidlna ]; then
99
+        echo $"Backing up DLNA cache"
100
+        backup_directory_to_friend /var/cache/minidlna dlna
101
+        echo $"Backup of DLNA cache complete"
102
+    fi
99 103
 }
100 104
 
101 105
 function restore_remote_dlna {
102
-	if [ -d /var/cache/minidlna ]; then
103
-		if [ -d $SERVER_DIRECTORY/backup/dlna ]; then
104
-			echo $"Restoring DLNA cache"
105
-			temp_restore_dir=/root/tempdlna
106
-			function_check restore_directory_from_friend
107
-			restore_directory_from_friend $temp_restore_dir dlna
108
-			cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/
109
-			if [ ! "$?" = "0" ]; then
110
-				exit 982
111
-			fi
112
-			rm -rf $temp_restore_dir
113
-			echo $"Restore of DLNA complete"
114
-		fi
115
-	fi
106
+    if [ -d /var/cache/minidlna ]; then
107
+        if [ -d $SERVER_DIRECTORY/backup/dlna ]; then
108
+            echo $"Restoring DLNA cache"
109
+            temp_restore_dir=/root/tempdlna
110
+            function_check restore_directory_from_friend
111
+            restore_directory_from_friend $temp_restore_dir dlna
112
+            cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/
113
+            if [ ! "$?" = "0" ]; then
114
+                exit 982
115
+            fi
116
+            rm -rf $temp_restore_dir
117
+            echo $"Restore of DLNA complete"
118
+        fi
119
+    fi
116 120
 }
117 121
 
118 122
 function remove_dlna {
119
-	if ! grep -Fxq "install_dlna" $COMPLETION_FILE; then
120
-		return
121
-	fi
122
-	service minidlna stop
123
-	apt-get -y remove --purge minidlna
124
-	if [ -f /etc/minidlna.conf ]; then
125
-		rm /etc/minidlna.conf
126
-	fi
127
-	iptables -D INPUT -p udp --dport 1900 -j ACCEPT
128
-	iptables -D INPUT -p tcp --dport 8200 -j ACCEPT
129
-	function_check save_firewall_settings
130
-	save_firewall_settings
131
-	sed -i '/install_dlna/d' $COMPLETION_FILE
123
+    if ! grep -Fxq "install_dlna" $COMPLETION_FILE; then
124
+        return
125
+    fi
126
+    service minidlna stop
127
+    apt-get -y remove --purge minidlna
128
+    if [ -f /etc/minidlna.conf ]; then
129
+        rm /etc/minidlna.conf
130
+    fi
131
+    iptables -D INPUT -p udp --dport 1900 -j ACCEPT
132
+    iptables -D INPUT -p tcp --dport 8200 -j ACCEPT
133
+    function_check save_firewall_settings
134
+    save_firewall_settings
135
+    sed -i '/install_dlna/d' $COMPLETION_FILE
132 136
 }
133 137
 
134 138
 function install_dlna_main {
135
-	if grep -Fxq "install_dlna_main" $COMPLETION_FILE; then
136
-		return
137
-	fi
138
-
139
-	apt-get -y install minidlna
140
-
141
-	if [ ! -f /etc/minidlna.conf ]; then
142
-		echo $"ERROR: minidlna does not appear to have installed. $CHECK_MESSAGE"
143
-		exit 55
144
-	fi
145
-
146
-	sed -i "s|media_dir=/var/lib/minidlna|media_dir=A,/home/$MY_USERNAME/Music|g" /etc/minidlna.conf
147
-	if ! grep -q "/home/$MY_USERNAME/Pictures" /etc/minidlna.conf; then
148
-		echo "media_dir=P,/home/$MY_USERNAME/Pictures" >> /etc/minidlna.conf
149
-	fi
150
-	if ! grep -q "/home/$MY_USERNAME/Videos" /etc/minidlna.conf; then
151
-		echo "media_dir=V,/home/$MY_USERNAME/Videos" >> /etc/minidlna.conf
152
-	fi
153
-	if ! grep -q "$USB_MOUNT/Music" /etc/minidlna.conf; then
154
-		echo "media_dir=A,$USB_MOUNT/Music" >> /etc/minidlna.conf
155
-	fi
156
-	if ! grep -q "$USB_MOUNT/Pictures" /etc/minidlna.conf; then
157
-		echo "media_dir=P,$USB_MOUNT/Pictures" >> /etc/minidlna.conf
158
-	fi
159
-	if ! grep -q "$USB_MOUNT/Videos" /etc/minidlna.conf; then
160
-		echo "media_dir=V,$USB_MOUNT/Videos" >> /etc/minidlna.conf
161
-	fi
162
-	sed -i 's/#root_container=./root_container=B/g' /etc/minidlna.conf
163
-	if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
164
-		sed -i 's/#network_interface=/network_interface=eth0/g' /etc/minidlna.conf
165
-	else
166
-		sed -i 's/#network_interface=/network_interface=$WIFI_INTERFACE/g' /etc/minidlna.conf
167
-	fi
168
-	sed -i "s/#friendly_name=/friendly_name=\"${PROJECT_NAME} Media\"/g" /etc/minidlna.conf
169
-	sed -i 's|#db_dir=/var/cache/minidlna|db_dir=/var/cache/minidlna|g' /etc/minidlna.conf
170
-	sed -i 's/#inotify=yes/inotify=yes/g' /etc/minidlna.conf
171
-	sed -i 's/#notify_interval=895/notify_interval=300/g' /etc/minidlna.conf
172
-	sed -i "s|#presentation_url=/|presentation_url=http://localhost:8200|g" /etc/minidlna.conf
173
-	service minidlna force-reload
174
-	service minidlna reload
175
-
176
-	sed -i 's/fs.inotify.max_user_watches*/fs.inotify.max_user_watches=65536/g' /etc/sysctl.conf
177
-	if ! grep -q "max_user_watches" $COMPLETION_FILE; then
178
-		echo 'fs.inotify.max_user_watches=65536' >> /etc/sysctl.conf
179
-	fi
180
-	/sbin/sysctl -p
181
-
182
-	function_check configure_firewall_for_dlna
183
-	configure_firewall_for_dlna
184
-	echo 'install_dlna_main' >> $COMPLETION_FILE
139
+    if grep -Fxq "install_dlna_main" $COMPLETION_FILE; then
140
+        return
141
+    fi
142
+
143
+    apt-get -y install minidlna
144
+
145
+    if [ ! -f /etc/minidlna.conf ]; then
146
+        echo $"ERROR: minidlna does not appear to have installed. $CHECK_MESSAGE"
147
+        exit 55
148
+    fi
149
+
150
+    sed -i "s|media_dir=/var/lib/minidlna|media_dir=A,/home/$MY_USERNAME/Music|g" /etc/minidlna.conf
151
+    if ! grep -q "/home/$MY_USERNAME/Pictures" /etc/minidlna.conf; then
152
+        echo "media_dir=P,/home/$MY_USERNAME/Pictures" >> /etc/minidlna.conf
153
+    fi
154
+    if ! grep -q "/home/$MY_USERNAME/Videos" /etc/minidlna.conf; then
155
+        echo "media_dir=V,/home/$MY_USERNAME/Videos" >> /etc/minidlna.conf
156
+    fi
157
+    if ! grep -q "$USB_MOUNT/Music" /etc/minidlna.conf; then
158
+        echo "media_dir=A,$USB_MOUNT/Music" >> /etc/minidlna.conf
159
+    fi
160
+    if ! grep -q "$USB_MOUNT/Pictures" /etc/minidlna.conf; then
161
+        echo "media_dir=P,$USB_MOUNT/Pictures" >> /etc/minidlna.conf
162
+    fi
163
+    if ! grep -q "$USB_MOUNT/Videos" /etc/minidlna.conf; then
164
+        echo "media_dir=V,$USB_MOUNT/Videos" >> /etc/minidlna.conf
165
+    fi
166
+    sed -i 's/#root_container=./root_container=B/g' /etc/minidlna.conf
167
+    if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
168
+        sed -i 's/#network_interface=/network_interface=eth0/g' /etc/minidlna.conf
169
+    else
170
+        sed -i 's/#network_interface=/network_interface=$WIFI_INTERFACE/g' /etc/minidlna.conf
171
+    fi
172
+    sed -i "s/#friendly_name=/friendly_name=\"${PROJECT_NAME} Media\"/g" /etc/minidlna.conf
173
+    sed -i 's|#db_dir=/var/cache/minidlna|db_dir=/var/cache/minidlna|g' /etc/minidlna.conf
174
+    sed -i 's/#inotify=yes/inotify=yes/g' /etc/minidlna.conf
175
+    sed -i 's/#notify_interval=895/notify_interval=300/g' /etc/minidlna.conf
176
+    sed -i "s|#presentation_url=/|presentation_url=http://localhost:8200|g" /etc/minidlna.conf
177
+    service minidlna force-reload
178
+    service minidlna reload
179
+
180
+    sed -i 's/fs.inotify.max_user_watches*/fs.inotify.max_user_watches=65536/g' /etc/sysctl.conf
181
+    if ! grep -q "max_user_watches" $COMPLETION_FILE; then
182
+        echo 'fs.inotify.max_user_watches=65536' >> /etc/sysctl.conf
183
+    fi
184
+    /sbin/sysctl -p
185
+
186
+    function_check configure_firewall_for_dlna
187
+    configure_firewall_for_dlna
188
+    echo 'install_dlna_main' >> $COMPLETION_FILE
185 189
 }
186 190
 
187 191
 function script_for_attaching_usb_drive {
188
-	if grep -Fxq "script_for_attaching_usb_drive" $COMPLETION_FILE; then
189
-		return
190
-	fi
191
-	echo '#!/bin/bash' > /usr/bin/attach-music
192
-	echo 'remove-music' >> /usr/bin/attach-music
193
-	echo "if [ ! -d $USB_MOUNT ]; then" >> /usr/bin/attach-music
194
-	echo "  mkdir $USB_MOUNT" >> /usr/bin/attach-music
195
-	echo 'fi' >> /usr/bin/attach-music
196
-	echo "mount /dev/sda1 $USB_MOUNT" >> /usr/bin/attach-music
197
-	echo "chown root:root $USB_MOUNT" >> /usr/bin/attach-music
198
-	echo "chown -R minidlna:minidlna $USB_MOUNT/*" >> /usr/bin/attach-music
199
-	echo 'service minidlna restart' >> /usr/bin/attach-music
200
-	echo 'minidlnad -R' >> /usr/bin/attach-music
201
-	chmod +x /usr/bin/attach-music
202
-	ln -s /usr/bin/attach-music /usr/bin/attach-usb
203
-	ln -s /usr/bin/attach-music /usr/bin/attach-videos
204
-	ln -s /usr/bin/attach-music /usr/bin/attach-pictures
205
-	ln -s /usr/bin/attach-music /usr/bin/attach-media
206
-
207
-	echo '#!/bin/bash' > /usr/bin/remove-music
208
-	echo "if [ -d $USB_MOUNT ]; then" >> /usr/bin/remove-music
209
-	echo "  umount $USB_MOUNT" >> /usr/bin/remove-music
210
-	echo "  rm -rf $USB_MOUNT" >> /usr/bin/remove-music
211
-	echo 'fi' >> /usr/bin/remove-music
212
-	chmod +x /usr/bin/remove-music
213
-	ln -s /usr/bin/remove-music /usr/bin/detach-music
214
-	ln -s /usr/bin/remove-music /usr/bin/detach-usb
215
-	ln -s /usr/bin/remove-music /usr/bin/remove-usb
216
-	ln -s /usr/bin/remove-music /usr/bin/detach-media
217
-	ln -s /usr/bin/remove-music /usr/bin/remove-media
218
-	ln -s /usr/bin/remove-music /usr/bin/detach-videos
219
-	ln -s /usr/bin/remove-music /usr/bin/remove-videos
220
-	ln -s /usr/bin/remove-music /usr/bin/detach-pictures
221
-	ln -s /usr/bin/remove-music /usr/bin/remove-pictures
222
-
223
-	echo 'script_for_attaching_usb_drive' >> $COMPLETION_FILE
192
+    if grep -Fxq "script_for_attaching_usb_drive" $COMPLETION_FILE; then
193
+        return
194
+    fi
195
+    echo '#!/bin/bash' > /usr/bin/attach-music
196
+    echo 'remove-music' >> /usr/bin/attach-music
197
+    echo "if [ ! -d $USB_MOUNT ]; then" >> /usr/bin/attach-music
198
+    echo "  mkdir $USB_MOUNT" >> /usr/bin/attach-music
199
+    echo 'fi' >> /usr/bin/attach-music
200
+    echo "mount /dev/sda1 $USB_MOUNT" >> /usr/bin/attach-music
201
+    echo "chown root:root $USB_MOUNT" >> /usr/bin/attach-music
202
+    echo "chown -R minidlna:minidlna $USB_MOUNT/*" >> /usr/bin/attach-music
203
+    echo 'service minidlna restart' >> /usr/bin/attach-music
204
+    echo 'minidlnad -R' >> /usr/bin/attach-music
205
+    chmod +x /usr/bin/attach-music
206
+    ln -s /usr/bin/attach-music /usr/bin/attach-usb
207
+    ln -s /usr/bin/attach-music /usr/bin/attach-videos
208
+    ln -s /usr/bin/attach-music /usr/bin/attach-pictures
209
+    ln -s /usr/bin/attach-music /usr/bin/attach-media
210
+
211
+    echo '#!/bin/bash' > /usr/bin/remove-music
212
+    echo "if [ -d $USB_MOUNT ]; then" >> /usr/bin/remove-music
213
+    echo "  umount $USB_MOUNT" >> /usr/bin/remove-music
214
+    echo "  rm -rf $USB_MOUNT" >> /usr/bin/remove-music
215
+    echo 'fi' >> /usr/bin/remove-music
216
+    chmod +x /usr/bin/remove-music
217
+    ln -s /usr/bin/remove-music /usr/bin/detach-music
218
+    ln -s /usr/bin/remove-music /usr/bin/detach-usb
219
+    ln -s /usr/bin/remove-music /usr/bin/remove-usb
220
+    ln -s /usr/bin/remove-music /usr/bin/detach-media
221
+    ln -s /usr/bin/remove-music /usr/bin/remove-media
222
+    ln -s /usr/bin/remove-music /usr/bin/detach-videos
223
+    ln -s /usr/bin/remove-music /usr/bin/remove-videos
224
+    ln -s /usr/bin/remove-music /usr/bin/detach-pictures
225
+    ln -s /usr/bin/remove-music /usr/bin/remove-pictures
226
+
227
+    echo 'script_for_attaching_usb_drive' >> $COMPLETION_FILE
224 228
 }
225 229
 
226 230
 function install_dlna {
227
-	if grep -Fxq "install_dlna" $COMPLETION_FILE; then
228
-		return
229
-	fi
230
-	install_dlna_main
231
-	script_for_attaching_usb_drive
232
-	echo 'install_dlna' >> $COMPLETION_FILE
231
+    if grep -Fxq "install_dlna" $COMPLETION_FILE; then
232
+        return
233
+    fi
234
+    install_dlna_main
235
+    script_for_attaching_usb_drive
236
+    echo 'install_dlna' >> $COMPLETION_FILE
233 237
 }
234 238
 
235 239
 # NOTE: deliberately no exit 0

+ 4
- 0
src/freedombone-app-emacs View File

@@ -30,6 +30,10 @@
30 30
 
31 31
 VARIANTS='all'
32 32
 
33
+function change_password_emacs {
34
+    echo -n ''
35
+}
36
+
33 37
 function reconfigure_emacs {
34 38
     echo -n ''
35 39
 }

+ 760
- 756
src/freedombone-app-gnusocial
File diff suppressed because it is too large
View File


+ 4
- 0
src/freedombone-app-gogs View File

@@ -38,6 +38,10 @@ GIT_CODE=
38 38
 GIT_ONION_PORT=8090
39 39
 GIT_ADMIN_PASSWORD=
40 40
 
41
+function change_password_gogs {
42
+    echo -n ''
43
+}
44
+
41 45
 function gogs_parameters {
42 46
     CURR_ARCH=
43 47
     if [[ $ARCHITECTURE == *"386" || $ARCHITECTURE == *"686" ]]; then

+ 4
- 0
src/freedombone-app-hubzilla View File

@@ -40,6 +40,10 @@ HUBZILLA_ADMIN_PASSWORD=
40 40
 HUBZILLA_COMMIT='8aee932525d0bc341713fe7052e2a5ab318a69c0'
41 41
 HUBZILLA_ADDONS_COMMIT='4456f097e3faf2adeab696ad08e3f213e82199bd'
42 42
 
43
+function change_password_hubzilla {
44
+    echo -n ''
45
+}
46
+
43 47
 function get_mariadb_hubzilla_admin_password {
44 48
     if [ -f /home/$MY_USERNAME/README ]; then
45 49
         if grep -q "MariaDB Hubzilla admin password" /home/$MY_USERNAME/README; then

+ 4
- 0
src/freedombone-app-ipfs View File

@@ -41,6 +41,10 @@ IPFS_JS_RONIN_VERSION='0.3.11'
41 41
 IPFS_KEY_LENGTH=2048
42 42
 IPFS_GO_VERSION=0.4.2
43 43
 
44
+function change_password_ipfs {
45
+    echo -n ''
46
+}
47
+
44 48
 function reconfigure_ipfs {
45 49
     echo -n ''
46 50
 }

+ 229
- 225
src/freedombone-app-irc View File

@@ -36,277 +36,281 @@ IRC_ONION_PORT=6697
36 36
 # An optional password to log into IRC. This applies to all users
37 37
 IRC_PASSWORD=
38 38
 
39
+function change_password_irc {
40
+    echo -n ''
41
+}
42
+
39 43
 function reconfigure_irc {
40
-	echo -n ''
44
+    echo -n ''
41 45
 }
42 46
 
43 47
 function upgrade_irc {
44
-	echo -n ''
48
+    echo -n ''
45 49
 }
46 50
 
47 51
 function backup_local_irc {
48
-	echo -n ''
52
+    echo -n ''
49 53
 }
50 54
 
51 55
 function restore_local_irc {
52
-	echo -n ''
56
+    echo -n ''
53 57
 }
54 58
 
55 59
 function backup_remote_irc {
56
-	echo -n ''
60
+    echo -n ''
57 61
 }
58 62
 
59 63
 function restore_remote_irc {
60
-	echo -n ''
64
+    echo -n ''
61 65
 }
62 66
 
63 67
 function remove_irc {
64
-	if ! grep -Fxq "install_irc" $COMPLETION_FILE; then
65
-		return
66
-	fi
67
-	systemctl stop ngircd
68
-	apt-get -y remove --purge ngircd
69
-	apt-get -y remove --purge irssi
70
-	if [ -d /etc/ngircd ]; then
71
-		rm -rf /etc/ngircd
72
-	fi
73
-	iptables -D INPUT -p tcp --dport $IRC_PORT  -j ACCEPT
74
-	iptables -D INPUT -p tcp --dport 1024:65535 --sport $IRC_PORT -j ACCEPT
75
-	function_check save_firewall_settings
76
-	save_firewall_settings
77
-	function_check remove_onion_service
78
-	remove_onion_service irc ${IRC_ONION_PORT}
79
-	sed -i '/install_irc/d' $COMPLETION_FILE
80
-	sed -i '/IRC /d' $COMPLETION_FILE
81
-	sed -i '/configure_firewall_for_irc/d' $COMPLETION_FILE
68
+    if ! grep -Fxq "install_irc" $COMPLETION_FILE; then
69
+        return
70
+    fi
71
+    systemctl stop ngircd
72
+    apt-get -y remove --purge ngircd
73
+    apt-get -y remove --purge irssi
74
+    if [ -d /etc/ngircd ]; then
75
+        rm -rf /etc/ngircd
76
+    fi
77
+    iptables -D INPUT -p tcp --dport $IRC_PORT  -j ACCEPT
78
+    iptables -D INPUT -p tcp --dport 1024:65535 --sport $IRC_PORT -j ACCEPT
79
+    function_check save_firewall_settings
80
+    save_firewall_settings
81
+    function_check remove_onion_service
82
+    remove_onion_service irc ${IRC_ONION_PORT}
83
+    sed -i '/install_irc/d' $COMPLETION_FILE
84
+    sed -i '/IRC /d' $COMPLETION_FILE
85
+    sed -i '/configure_firewall_for_irc/d' $COMPLETION_FILE
82 86
 }
83 87
 
84 88
 function configure_firewall_for_irc {
85
-	if [ ! -d /etc/ngircd ]; then
86
-		return
87
-	fi
88
-	if grep -Fxq "configure_firewall_for_irc" $COMPLETION_FILE; then
89
-		return
90
-	fi
91
-	if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then
92
-		# docker does its own firewalling
93
-		return
94
-	fi
95
-	if [[ $ONION_ONLY != "no" ]]; then
96
-		return
97
-	fi
98
-	iptables -A INPUT -p tcp --dport $IRC_PORT  -j ACCEPT
99
-	iptables -I INPUT -p tcp --dport 1024:65535 --sport $IRC_PORT -j ACCEPT
100
-	function_check save_firewall_settings
101
-	save_firewall_settings
89
+    if [ ! -d /etc/ngircd ]; then
90
+        return
91
+    fi
92
+    if grep -Fxq "configure_firewall_for_irc" $COMPLETION_FILE; then
93
+        return
94
+    fi
95
+    if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then
96
+        # docker does its own firewalling
97
+        return
98
+    fi
99
+    if [[ $ONION_ONLY != "no" ]]; then
100
+        return
101
+    fi
102
+    iptables -A INPUT -p tcp --dport $IRC_PORT  -j ACCEPT
103
+    iptables -I INPUT -p tcp --dport 1024:65535 --sport $IRC_PORT -j ACCEPT
104
+    function_check save_firewall_settings
105
+    save_firewall_settings
102 106
 
103
-	OPEN_PORTS+=("IRC      $IRC_PORT")
104
-	echo 'configure_firewall_for_irc' >> $COMPLETION_FILE
107
+    OPEN_PORTS+=("IRC      $IRC_PORT")
108
+    echo 'configure_firewall_for_irc' >> $COMPLETION_FILE
105 109
 }
106 110
 
107 111
 function install_irc_server {
108
-	if grep -Fxq "install_irc_server" $COMPLETION_FILE; then
109
-		return
110
-	fi
111
-	apt-get -y install ngircd
112
+    if grep -Fxq "install_irc_server" $COMPLETION_FILE; then
113
+        return
114
+    fi
115
+    apt-get -y install ngircd
112 116
 
113
-	if [ ! -d /etc/ngircd ]; then
114
-		echo $"ERROR: ngircd does not appear to have installed. $CHECK_MESSAGE"
115
-		exit 53
116
-	fi
117
+    if [ ! -d /etc/ngircd ]; then
118
+        echo $"ERROR: ngircd does not appear to have installed. $CHECK_MESSAGE"
119
+        exit 53
120
+    fi
117 121
 
118
-	if [ ! -f /etc/ssl/certs/ngircd.dhparam ]; then
119
-		${PROJECT_NAME}-addcert -h ngircd --dhkey $DH_KEYLENGTH
120
-		function_check check_certificates
121
-		check_certificates ngircd
122
-	fi
122
+    if [ ! -f /etc/ssl/certs/ngircd.dhparam ]; then
123
+        ${PROJECT_NAME}-addcert -h ngircd --dhkey $DH_KEYLENGTH
124
+        function_check check_certificates
125
+        check_certificates ngircd
126
+    fi
123 127
 
124
-	DEFAULTDOMAIN=$DEFAULT_DOMAIN_NAME
125
-	if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
126
-		DEFAULTDOMAIN="${DEFAULT_DOMAIN_NAME}.local"
127
-	fi
128
+    DEFAULTDOMAIN=$DEFAULT_DOMAIN_NAME
129
+    if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
130
+        DEFAULTDOMAIN="${DEFAULT_DOMAIN_NAME}.local"
131
+    fi
128 132
 
129
-	# create a login password if needed
130
-	if [ ! $IRC_PASSWORD ]; then
131
-		IRC_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
132
-	fi
133
+    # create a login password if needed
134
+    if [ ! $IRC_PASSWORD ]; then
135
+        IRC_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
136
+    fi
133 137
 
134
-	echo '**************************************************' > /etc/ngircd/motd
135
-	echo $'*           F R E E D O M B O N E   I R C        *' >> /etc/ngircd/motd
136
-	echo '*                                                *' >> /etc/ngircd/motd
137
-	echo $'*               Freedom in the Cloud             *' >> /etc/ngircd/motd
138
-	echo '**************************************************' >> /etc/ngircd/motd
139
-	sed -i 's|MotdFile = /etc/ngircd/ngircd.motd|MotdFile = /etc/ngircd/motd|g' /etc/ngircd/ngircd.conf
140
-	sed -i "s/irc@irc.example.com/$MY_EMAIL_ADDRESS/g" /etc/ngircd/ngircd.conf
141
-	sed -i "s/irc.example.net/$DEFAULTDOMAIN/g" /etc/ngircd/ngircd.conf
142
-	sed -i "s|Yet another IRC Server running on Debian GNU/Linux|IRC Server of $DEFAULTDOMAIN|g" /etc/ngircd/ngircd.conf
143
-	sed -i 's/;Password = wealllikedebian/Password =/g' /etc/ngircd/ngircd.conf
144
-	sed -i 's|;CertFile = /etc/ssl/certs/server.crt|CertFile = /etc/ssl/certs/ngircd.crt|g' /etc/ngircd/ngircd.conf
145
-	sed -i 's|;DHFile = /etc/ngircd/dhparams.pem|DHFile = /etc/ssl/certs/ngircd.dhparam|g' /etc/ngircd/ngircd.conf
146
-	sed -i 's|;KeyFile = /etc/ssl/private/server.key|KeyFile = /etc/ssl/private/ngircd.key|g' /etc/ngircd/ngircd.conf
147
-	sed -i "s/;Ports =.*/Ports = $IRC_PORT/1" /etc/ngircd/ngircd.conf
148
-	sed -i "s/;Ports =.*/Ports = $IRC_PORT/2" /etc/ngircd/ngircd.conf
149
-	sed -i "s/;Name = #ngircd/Name = #${PROJECT_NAME}/g" /etc/ngircd/ngircd.conf
150
-	sed -i "s/;Topic = Our ngircd testing channel/Topic = ${PROJECT_NAME} chat channel/g" /etc/ngircd/ngircd.conf
151
-	sed -i 's/;MaxUsers = 23/MaxUsers = 23/g' /etc/ngircd/ngircd.conf
152
-	sed -i "s|;KeyFile = /etc/ngircd/#chan.key|KeyFile = /etc/ngircd/#${PROJECT_NAME}.key|g" /etc/ngircd/ngircd.conf
153
-	sed -i "s/;CloakHost = cloaked.host/CloakHost = ${PROJECT_NAME}/g" /etc/ngircd/ngircd.conf
154
-	IRC_SALT="$(create_password 30)"
155
-	if [ -f $IMAGE_PASSWORD_FILE ]; then
156
-		IRC_OPERATOR_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
157
-	else
158
-		IRC_OPERATOR_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
159
-	fi
160
-	sed -i "s|;CloakHostSalt = abcdefghijklmnopqrstuvwxyz|CloakHostSalt = $IRC_SALT|g" /etc/ngircd/ngircd.conf
161
-	sed -i 's/;ConnectIPv4 = yes/ConnectIPv4 = yes/g' /etc/ngircd/ngircd.conf
162
-	sed -i 's/;MorePrivacy = no/MorePrivacy = yes/g' /etc/ngircd/ngircd.conf
163
-	sed -i 's/;RequireAuthPing = no/RequireAuthPing = no/g' /etc/ngircd/ngircd.conf
164
-	sed -i "s/;Name = TheOper/Name = $MY_USERNAME/g" /etc/ngircd/ngircd.conf
165
-	sed -i "s/;Password = ThePwd/Password = $IRC_OPERATOR_PASSWORD/g" /etc/ngircd/ngircd.conf
166
-	sed -i 's|;Listen =.*|Listen = 0.0.0.0,0.0.0.0:9050,127.0.0.1,127.0.0.1:9050|g' /etc/ngircd/ngircd.conf
167
-	if [ $IRC_PASSWORD ]; then
168
-		sed -i "0,/RE/s/Password =.*/Password =$IRC_PASSWORD/" /etc/ngircd/ngircd.conf
169
-	fi
170
-	# If we are on a mesh then DNS is not available
171
-	if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
172
-		sed -i "s/;DNS =.*/DNS = no/g" /etc/ngircd/ngircd.conf
173
-	fi
174
-	# upgrade a cypher
175
-	sed -i 's|SECURE128|SECURE256|g' /etc/ngircd/ngircd.conf
176
-	mkdir /var/run/ircd
177
-	chown -R irc:irc /var/run/ircd
178
-	mkdir /var/run/ngircd
179
-	touch /var/run/ngircd/ngircd.pid
180
-	chown -R irc:irc /var/run/ngircd
138
+    echo '**************************************************' > /etc/ngircd/motd
139
+    echo $'*           F R E E D O M B O N E   I R C        *' >> /etc/ngircd/motd
140
+    echo '*                                                *' >> /etc/ngircd/motd
141
+    echo $'*               Freedom in the Cloud             *' >> /etc/ngircd/motd
142
+    echo '**************************************************' >> /etc/ngircd/motd
143
+    sed -i 's|MotdFile = /etc/ngircd/ngircd.motd|MotdFile = /etc/ngircd/motd|g' /etc/ngircd/ngircd.conf
144
+    sed -i "s/irc@irc.example.com/$MY_EMAIL_ADDRESS/g" /etc/ngircd/ngircd.conf
145
+    sed -i "s/irc.example.net/$DEFAULTDOMAIN/g" /etc/ngircd/ngircd.conf
146
+    sed -i "s|Yet another IRC Server running on Debian GNU/Linux|IRC Server of $DEFAULTDOMAIN|g" /etc/ngircd/ngircd.conf
147
+    sed -i 's/;Password = wealllikedebian/Password =/g' /etc/ngircd/ngircd.conf
148
+    sed -i 's|;CertFile = /etc/ssl/certs/server.crt|CertFile = /etc/ssl/certs/ngircd.crt|g' /etc/ngircd/ngircd.conf
149
+    sed -i 's|;DHFile = /etc/ngircd/dhparams.pem|DHFile = /etc/ssl/certs/ngircd.dhparam|g' /etc/ngircd/ngircd.conf
150
+    sed -i 's|;KeyFile = /etc/ssl/private/server.key|KeyFile = /etc/ssl/private/ngircd.key|g' /etc/ngircd/ngircd.conf
151
+    sed -i "s/;Ports =.*/Ports = $IRC_PORT/1" /etc/ngircd/ngircd.conf
152
+    sed -i "s/;Ports =.*/Ports = $IRC_PORT/2" /etc/ngircd/ngircd.conf
153
+    sed -i "s/;Name = #ngircd/Name = #${PROJECT_NAME}/g" /etc/ngircd/ngircd.conf
154
+    sed -i "s/;Topic = Our ngircd testing channel/Topic = ${PROJECT_NAME} chat channel/g" /etc/ngircd/ngircd.conf
155
+    sed -i 's/;MaxUsers = 23/MaxUsers = 23/g' /etc/ngircd/ngircd.conf
156
+    sed -i "s|;KeyFile = /etc/ngircd/#chan.key|KeyFile = /etc/ngircd/#${PROJECT_NAME}.key|g" /etc/ngircd/ngircd.conf
157
+    sed -i "s/;CloakHost = cloaked.host/CloakHost = ${PROJECT_NAME}/g" /etc/ngircd/ngircd.conf
158
+    IRC_SALT="$(create_password 30)"
159
+    if [ -f $IMAGE_PASSWORD_FILE ]; then
160
+        IRC_OPERATOR_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
161
+    else
162
+        IRC_OPERATOR_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
163
+    fi
164
+    sed -i "s|;CloakHostSalt = abcdefghijklmnopqrstuvwxyz|CloakHostSalt = $IRC_SALT|g" /etc/ngircd/ngircd.conf
165
+    sed -i 's/;ConnectIPv4 = yes/ConnectIPv4 = yes/g' /etc/ngircd/ngircd.conf
166
+    sed -i 's/;MorePrivacy = no/MorePrivacy = yes/g' /etc/ngircd/ngircd.conf
167
+    sed -i 's/;RequireAuthPing = no/RequireAuthPing = no/g' /etc/ngircd/ngircd.conf
168
+    sed -i "s/;Name = TheOper/Name = $MY_USERNAME/g" /etc/ngircd/ngircd.conf
169
+    sed -i "s/;Password = ThePwd/Password = $IRC_OPERATOR_PASSWORD/g" /etc/ngircd/ngircd.conf
170
+    sed -i 's|;Listen =.*|Listen = 0.0.0.0,0.0.0.0:9050,127.0.0.1,127.0.0.1:9050|g' /etc/ngircd/ngircd.conf
171
+    if [ $IRC_PASSWORD ]; then
172
+        sed -i "0,/RE/s/Password =.*/Password =$IRC_PASSWORD/" /etc/ngircd/ngircd.conf
173
+    fi
174
+    # If we are on a mesh then DNS is not available
175
+    if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
176
+        sed -i "s/;DNS =.*/DNS = no/g" /etc/ngircd/ngircd.conf
177
+    fi
178
+    # upgrade a cypher
179
+    sed -i 's|SECURE128|SECURE256|g' /etc/ngircd/ngircd.conf
180
+    mkdir /var/run/ircd
181
+    chown -R irc:irc /var/run/ircd
182
+    mkdir /var/run/ngircd
183
+    touch /var/run/ngircd/ngircd.pid
184
+    chown -R irc:irc /var/run/ngircd
181 185
 
182
-	IRC_ONION_HOSTNAME=$(add_onion_service irc ${IRC_PORT} ${IRC_ONION_PORT})
183
-	if ! grep -q $"IRC onion domain" $COMPLETION_FILE; then
184
-		echo "IRC onion domain:$IRC_ONION_HOSTNAME" >> $COMPLETION_FILE
185
-	fi
186
+    IRC_ONION_HOSTNAME=$(add_onion_service irc ${IRC_PORT} ${IRC_ONION_PORT})
187
+    if ! grep -q $"IRC onion domain" $COMPLETION_FILE; then
188
+        echo "IRC onion domain:$IRC_ONION_HOSTNAME" >> $COMPLETION_FILE
189
+    fi
186 190
 
187
-	systemctl restart ngircd
191
+    systemctl restart ngircd
188 192
 
189
-	# keep the daemon running
190
-	echo '' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
191
-	echo '# keep irc daemon running' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
192
-	echo 'IRC_RUNNING=$(pgrep ngircd > /dev/null && echo Running)' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
193
-	echo 'if [ ! $IRC_RUNNING ]; then' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
194
-	echo '  systemctl start ngircd' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
195
-	echo '  echo -n $CURRENT_DATE >> $LOGFILE' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
196
-	echo '  echo " IRC daemon restarted" >> $LOGFILE' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
197
-	echo 'fi' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
193
+    # keep the daemon running
194
+    echo '' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
195
+    echo '# keep irc daemon running' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
196
+    echo 'IRC_RUNNING=$(pgrep ngircd > /dev/null && echo Running)' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
197
+    echo 'if [ ! $IRC_RUNNING ]; then' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
198
+    echo '  systemctl start ngircd' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
199
+    echo '  echo -n $CURRENT_DATE >> $LOGFILE' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
200
+    echo '  echo " IRC daemon restarted" >> $LOGFILE' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
201
+    echo 'fi' >> /usr/bin/$WATCHDOG_SCRIPT_NAME
198 202
 
199
-	if ! grep -q $"IRC Server" /home/$MY_USERNAME/README; then
200
-		echo '' >> /home/$MY_USERNAME/README
201
-		echo '' >> /home/$MY_USERNAME/README
202
-		echo $'IRC Server' >> /home/$MY_USERNAME/README
203
-		echo '==========' >> /home/$MY_USERNAME/README
204
-		echo $'To connect to your IRC server in irssi:' >> /home/$MY_USERNAME/README
205
-		echo '' >> /home/$MY_USERNAME/README
206
-		if [[ $ONION_ONLY != 'yes' ]]; then
207
-			echo "  irssi" >> /home/$MY_USERNAME/README
208
-			echo "  /server add -auto -ssl $DEFAULTDOMAIN $IRC_PORT" >> /home/$MY_USERNAME/README
209
-			echo "  /connect $DEFAULT_DOMAIN_NAME" >> /home/$MY_USERNAME/README
210
-		else
211
-			echo "  usetorwith irssi" >> /home/$MY_USERNAME/README
212
-			echo "  /server add -auto $IRC_ONION_HOSTNAME $IRC_PORT" >> /home/$MY_USERNAME/README
213
-			echo "  /connect $IRC_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
214
-		fi
215
-		echo "  /join #${PROJECT_NAME}" >> /home/$MY_USERNAME/README
216
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
217
-		chmod 600 /home/$MY_USERNAME/README
218
-	fi
203
+    if ! grep -q $"IRC Server" /home/$MY_USERNAME/README; then
204
+        echo '' >> /home/$MY_USERNAME/README
205
+        echo '' >> /home/$MY_USERNAME/README
206
+        echo $'IRC Server' >> /home/$MY_USERNAME/README
207
+        echo '==========' >> /home/$MY_USERNAME/README
208
+        echo $'To connect to your IRC server in irssi:' >> /home/$MY_USERNAME/README
209
+        echo '' >> /home/$MY_USERNAME/README
210
+        if [[ $ONION_ONLY != 'yes' ]]; then
211
+            echo "  irssi" >> /home/$MY_USERNAME/README
212
+            echo "  /server add -auto -ssl $DEFAULTDOMAIN $IRC_PORT" >> /home/$MY_USERNAME/README
213
+            echo "  /connect $DEFAULT_DOMAIN_NAME" >> /home/$MY_USERNAME/README
214
+        else
215
+            echo "  usetorwith irssi" >> /home/$MY_USERNAME/README
216
+            echo "  /server add -auto $IRC_ONION_HOSTNAME $IRC_PORT" >> /home/$MY_USERNAME/README
217
+            echo "  /connect $IRC_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
218
+        fi
219
+        echo "  /join #${PROJECT_NAME}" >> /home/$MY_USERNAME/README
220
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
221
+        chmod 600 /home/$MY_USERNAME/README
222
+    fi
219 223
 
220
-	function_check configure_firewall_for_irc
221
-	configure_firewall_for_irc
222
-	echo 'install_irc_server' >> $COMPLETION_FILE
224
+    function_check configure_firewall_for_irc
225
+    configure_firewall_for_irc
226
+    echo 'install_irc_server' >> $COMPLETION_FILE
223 227
 }
224 228
 
225 229
 function install_irc_client {
226
-	if grep -Fxq "install_irc_client" $COMPLETION_FILE; then
227
-		return
228
-	fi
229
-	apt-get -y install irssi
230
+    if grep -Fxq "install_irc_client" $COMPLETION_FILE; then
231
+        return
232
+    fi
233
+    apt-get -y install irssi
230 234
 
231
-	if [ ! -d /home/$MY_USERNAME/.irssi ]; then
232
-		mkdir /home/$MY_USERNAME/.irssi
233
-	fi
235
+    if [ ! -d /home/$MY_USERNAME/.irssi ]; then
236
+        mkdir /home/$MY_USERNAME/.irssi
237
+    fi
234 238
 
235
-	echo 'servers = (' > /home/$MY_USERNAME/.irssi/config
236
-	echo '  {' >> /home/$MY_USERNAME/.irssi/config
237
-	echo '    address = "chat.freenode.net";' >> /home/$MY_USERNAME/.irssi/config
238
-	echo '    chatnet = "Freenode";' >> /home/$MY_USERNAME/.irssi/config
239
-	echo '    port = "6667";' >> /home/$MY_USERNAME/.irssi/config
240
-	echo '    autoconnect = "no";' >> /home/$MY_USERNAME/.irssi/config
241
-	echo '  },' >> /home/$MY_USERNAME/.irssi/config
242
-	echo '  {' >> /home/$MY_USERNAME/.irssi/config
243
-	echo '    address = "irc.oftc.net";' >> /home/$MY_USERNAME/.irssi/config
244
-	echo '    chatnet = "OFTC";' >> /home/$MY_USERNAME/.irssi/config
245
-	echo '    port = "6667";' >> /home/$MY_USERNAME/.irssi/config
246
-	echo '    autoconnect = "yes";' >> /home/$MY_USERNAME/.irssi/config
247
-	echo '  },' >> /home/$MY_USERNAME/.irssi/config
248
-	echo '  {' >> /home/$MY_USERNAME/.irssi/config
249
-	echo "    address = \"127.0.0.1\";" >> /home/$MY_USERNAME/.irssi/config
250
-	if [[ $ONION_ONLY == 'no' ]]; then
251
-		echo "    port = \"${IRC_PORT}\";" >> /home/$MY_USERNAME/.irssi/config
252
-		echo '    use_ssl = "yes";' >> /home/$MY_USERNAME/.irssi/config
253
-	else
254
-		IRC_ONION_HOSTNAME=$(cat $COMPLETION_FILE | grep "IRC onion domain" | awk -F ':' '{print $2}')
255
-		echo "    port = \"${IRC_ONION_PORT}\";" >> /home/$MY_USERNAME/.irssi/config
256
-		echo '    use_ssl = "no";' >> /home/$MY_USERNAME/.irssi/config
257
-	fi
258
-	echo '    chatnet = "Freedombone";' >> /home/$MY_USERNAME/.irssi/config
259
-	echo '    ssl_verify = "no";' >> /home/$MY_USERNAME/.irssi/config
260
-	echo '    autoconnect = "yes";' >> /home/$MY_USERNAME/.irssi/config
261
-	if [ $IRC_PASSWORD ]; then
262
-		echo "    password = \"${IRC_PASSWORD}\";" >> /home/$MY_USERNAME/.irssi/config
263
-	fi
264
-	echo '  }' >> /home/$MY_USERNAME/.irssi/config
265
-	echo ');' >> /home/$MY_USERNAME/.irssi/config
266
-	echo '' >> /home/$MY_USERNAME/.irssi/config
267
-	echo 'chatnets = {' >> /home/$MY_USERNAME/.irssi/config
268
-	echo '  Freedombone = {' >> /home/$MY_USERNAME/.irssi/config
269
-	echo '    type = "IRC";' >> /home/$MY_USERNAME/.irssi/config
270
-	echo '    max_kicks = "1";' >> /home/$MY_USERNAME/.irssi/config
271
-	echo '    max_msgs = "4";' >> /home/$MY_USERNAME/.irssi/config
272
-	echo '    max_whois = "1";' >> /home/$MY_USERNAME/.irssi/config
273
-	echo '  };' >> /home/$MY_USERNAME/.irssi/config
274
-	echo '  Freenode = {' >> /home/$MY_USERNAME/.irssi/config
275
-	echo '    type = "IRC";' >> /home/$MY_USERNAME/.irssi/config
276
-	echo '    max_kicks = "1";' >> /home/$MY_USERNAME/.irssi/config
277
-	echo '    max_msgs = "4";' >> /home/$MY_USERNAME/.irssi/config
278
-	echo '    max_whois = "1";' >> /home/$MY_USERNAME/.irssi/config
279
-	echo '  };' >> /home/$MY_USERNAME/.irssi/config
280
-	echo '  OFTC = {' >> /home/$MY_USERNAME/.irssi/config
281
-	echo '    type = "IRC";' >> /home/$MY_USERNAME/.irssi/config
282
-	echo '    max_kicks = "1";' >> /home/$MY_USERNAME/.irssi/config
283
-	echo '    max_msgs = "1";' >> /home/$MY_USERNAME/.irssi/config
284
-	echo '    max_whois = "1";' >> /home/$MY_USERNAME/.irssi/config
285
-	echo '  };' >> /home/$MY_USERNAME/.irssi/config
286
-	echo '};' >> /home/$MY_USERNAME/.irssi/config
287
-	echo '' >> /home/$MY_USERNAME/.irssi/config
288
-	echo 'channels = (' >> /home/$MY_USERNAME/.irssi/config
289
-	echo '  { name = "#freedombone"; chatnet = "Freedombone"; autojoin = "Yes"; },' >> /home/$MY_USERNAME/.irssi/config
290
-	echo ');' >> /home/$MY_USERNAME/.irssi/config
291
-	echo '' >> /home/$MY_USERNAME/.irssi/config
292
-	echo 'settings = {' >> /home/$MY_USERNAME/.irssi/config
293
-	echo "  core = { real_name = \"$MY_NAME\"; user_name = \"$MY_USERNAME\"; nick = \"$MY_USERNAME\"; };" >> /home/$MY_USERNAME/.irssi/config
294
-	echo '  "fe-text" = { actlist_sort = "refnum"; };' >> /home/$MY_USERNAME/.irssi/config
295
-	echo '};' >> /home/$MY_USERNAME/.irssi/config
296
-	echo 'ignores = ( { level = "CTCPS"; } );' >> /home/$MY_USERNAME/.irssi/config
239
+    echo 'servers = (' > /home/$MY_USERNAME/.irssi/config
240
+    echo '  {' >> /home/$MY_USERNAME/.irssi/config
241
+    echo '    address = "chat.freenode.net";' >> /home/$MY_USERNAME/.irssi/config
242
+    echo '    chatnet = "Freenode";' >> /home/$MY_USERNAME/.irssi/config
243
+    echo '    port = "6667";' >> /home/$MY_USERNAME/.irssi/config
244
+    echo '    autoconnect = "no";' >> /home/$MY_USERNAME/.irssi/config
245
+    echo '  },' >> /home/$MY_USERNAME/.irssi/config
246
+    echo '  {' >> /home/$MY_USERNAME/.irssi/config
247
+    echo '    address = "irc.oftc.net";' >> /home/$MY_USERNAME/.irssi/config
248
+    echo '    chatnet = "OFTC";' >> /home/$MY_USERNAME/.irssi/config
249
+    echo '    port = "6667";' >> /home/$MY_USERNAME/.irssi/config
250
+    echo '    autoconnect = "yes";' >> /home/$MY_USERNAME/.irssi/config
251
+    echo '  },' >> /home/$MY_USERNAME/.irssi/config
252
+    echo '  {' >> /home/$MY_USERNAME/.irssi/config
253
+    echo "    address = \"127.0.0.1\";" >> /home/$MY_USERNAME/.irssi/config
254
+    if [[ $ONION_ONLY == 'no' ]]; then
255
+        echo "    port = \"${IRC_PORT}\";" >> /home/$MY_USERNAME/.irssi/config
256
+        echo '    use_ssl = "yes";' >> /home/$MY_USERNAME/.irssi/config
257
+    else
258
+        IRC_ONION_HOSTNAME=$(cat $COMPLETION_FILE | grep "IRC onion domain" | awk -F ':' '{print $2}')
259
+        echo "    port = \"${IRC_ONION_PORT}\";" >> /home/$MY_USERNAME/.irssi/config
260
+        echo '    use_ssl = "no";' >> /home/$MY_USERNAME/.irssi/config
261
+    fi
262
+    echo '    chatnet = "Freedombone";' >> /home/$MY_USERNAME/.irssi/config
263
+    echo '    ssl_verify = "no";' >> /home/$MY_USERNAME/.irssi/config
264
+    echo '    autoconnect = "yes";' >> /home/$MY_USERNAME/.irssi/config
265
+    if [ $IRC_PASSWORD ]; then
266
+        echo "    password = \"${IRC_PASSWORD}\";" >> /home/$MY_USERNAME/.irssi/config
267
+    fi
268
+    echo '  }' >> /home/$MY_USERNAME/.irssi/config
269
+    echo ');' >> /home/$MY_USERNAME/.irssi/config
270
+    echo '' >> /home/$MY_USERNAME/.irssi/config
271
+    echo 'chatnets = {' >> /home/$MY_USERNAME/.irssi/config
272
+    echo '  Freedombone = {' >> /home/$MY_USERNAME/.irssi/config
273
+    echo '    type = "IRC";' >> /home/$MY_USERNAME/.irssi/config
274
+    echo '    max_kicks = "1";' >> /home/$MY_USERNAME/.irssi/config
275
+    echo '    max_msgs = "4";' >> /home/$MY_USERNAME/.irssi/config
276
+    echo '    max_whois = "1";' >> /home/$MY_USERNAME/.irssi/config
277
+    echo '  };' >> /home/$MY_USERNAME/.irssi/config
278
+    echo '  Freenode = {' >> /home/$MY_USERNAME/.irssi/config
279
+    echo '    type = "IRC";' >> /home/$MY_USERNAME/.irssi/config
280
+    echo '    max_kicks = "1";' >> /home/$MY_USERNAME/.irssi/config
281
+    echo '    max_msgs = "4";' >> /home/$MY_USERNAME/.irssi/config
282
+    echo '    max_whois = "1";' >> /home/$MY_USERNAME/.irssi/config
283
+    echo '  };' >> /home/$MY_USERNAME/.irssi/config
284
+    echo '  OFTC = {' >> /home/$MY_USERNAME/.irssi/config
285
+    echo '    type = "IRC";' >> /home/$MY_USERNAME/.irssi/config
286
+    echo '    max_kicks = "1";' >> /home/$MY_USERNAME/.irssi/config
287
+    echo '    max_msgs = "1";' >> /home/$MY_USERNAME/.irssi/config
288
+    echo '    max_whois = "1";' >> /home/$MY_USERNAME/.irssi/config
289
+    echo '  };' >> /home/$MY_USERNAME/.irssi/config
290
+    echo '};' >> /home/$MY_USERNAME/.irssi/config
291
+    echo '' >> /home/$MY_USERNAME/.irssi/config
292
+    echo 'channels = (' >> /home/$MY_USERNAME/.irssi/config
293
+    echo '  { name = "#freedombone"; chatnet = "Freedombone"; autojoin = "Yes"; },' >> /home/$MY_USERNAME/.irssi/config
294
+    echo ');' >> /home/$MY_USERNAME/.irssi/config
295
+    echo '' >> /home/$MY_USERNAME/.irssi/config
296
+    echo 'settings = {' >> /home/$MY_USERNAME/.irssi/config
297
+    echo "  core = { real_name = \"$MY_NAME\"; user_name = \"$MY_USERNAME\"; nick = \"$MY_USERNAME\"; };" >> /home/$MY_USERNAME/.irssi/config
298
+    echo '  "fe-text" = { actlist_sort = "refnum"; };' >> /home/$MY_USERNAME/.irssi/config
299
+    echo '};' >> /home/$MY_USERNAME/.irssi/config
300
+    echo 'ignores = ( { level = "CTCPS"; } );' >> /home/$MY_USERNAME/.irssi/config
297 301
 
298
-	chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.irssi
302
+    chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.irssi
299 303
 
300
-	echo 'install_irc_client' >> $COMPLETION_FILE
304
+    echo 'install_irc_client' >> $COMPLETION_FILE
301 305
 }
302 306
 
303 307
 function install_irc {
304
-	if grep -Fxq "install_irc" $COMPLETION_FILE; then
305
-		return
306
-	fi
307
-	install_irc_server
308
-	install_irc_client
309
-	echo 'install_irc' >> $COMPLETION_FILE
308
+    if grep -Fxq "install_irc" $COMPLETION_FILE; then
309
+        return
310
+    fi
311
+    install_irc_server
312
+    install_irc_client
313
+    echo 'install_irc' >> $COMPLETION_FILE
310 314
 }
311 315
 
312 316
 # NOTE: deliberately no exit 0

+ 4
- 0
src/freedombone-app-librevault View File

@@ -37,6 +37,10 @@ LIBREVAULT_REPO="https://github.com/Librevault/librevault"
37 37
 LIBREVAULT_COMMIT='86a6aefcb5cc458f4d42195368fbcff2871f98e3'
38 38
 LIBREVAULT_PORT=42345
39 39
 
40
+function change_password_librevault {
41
+    echo -n ''
42
+}
43
+
40 44
 function reconfigure_librevault {
41 45
     echo -n ''
42 46
     # TODO

+ 361
- 357
src/freedombone-app-mediagoblin View File

@@ -37,389 +37,393 @@ MEDIAGOBLIN_COMMIT='d1ac2d52fd8859c3f32fa38e4836ffe9615e5bba'
37 37
 MEDIAGOBLIN_ADMIN_PASSWORD=
38 38
 MEDIAGOBLIN_ONION_PORT=8096
39 39
 
40
+function change_password_mediagoblin {
41
+    echo -n ''
42
+}
43
+
40 44
 function reconfigure_mediagoblin {
41
-	echo -n ''
45
+    echo -n ''
42 46
 }
43 47
 
44 48
 function upgrade_mediagoblin {
45
-	echo -n ''
49
+    echo -n ''
46 50
 }
47 51
 
48 52
 function backup_local_mediagoblin {
49
-	echo -n ''
53
+    echo -n ''
50 54
 }
51 55
 
52 56
 function restore_local_mediagoblin {
53
-	echo -n ''
57
+    echo -n ''
54 58
 }
55 59
 
56 60
 function backup_remote_mediagoblin {
57
-	if grep -q "Mediagoblin domain" $COMPLETION_FILE; then
58
-		MEDIAGOBLIN_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Mediagoblin domain" | awk -F ':' '{print $2}')
59
-		function_check suspend_site
60
-		suspend_site ${MEDIAGOBLIN_DOMAIN_NAME}
61
+    if grep -q "Mediagoblin domain" $COMPLETION_FILE; then
62
+        MEDIAGOBLIN_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Mediagoblin domain" | awk -F ':' '{print $2}')
63
+        function_check suspend_site
64
+        suspend_site ${MEDIAGOBLIN_DOMAIN_NAME}
61 65
 
62
-		echo $"Backing up Mediagoblin"
66
+        echo $"Backing up Mediagoblin"
63 67
 
64
-		backup_directory_to_friend /var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs mediagoblin
68
+        backup_directory_to_friend /var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs mediagoblin
65 69
 
66
-		function_check restart_site
67
-		restart_site
70
+        function_check restart_site
71
+        restart_site
68 72
 
69
-		echo $"Backup of Mediagoblin complete"
70
-	fi
73
+        echo $"Backup of Mediagoblin complete"
74
+    fi
71 75
 }
72 76
 
73 77
 function restore_remote_mediagoblin {
74
-	if grep -q "Mediagoblin domain" $COMPLETION_FILE; then
75
-		MEDIAGOBLIN_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Mediagoblin domain" | awk -F ':' '{print $2}')
76
-		if [ -d $SERVER_DIRECTORY/backup/mediagoblin ]; then
77
-			echo $"Restoring Mediagoblin installation"
78
-			temp_restore_dir=/root/tempmediagoblin
79
-			function_check restore_directory_from_friend
80
-			restore_directory_from_friend $temp_restore_dir mediagoblin
81
-			cp -r $temp_restore_dir/* /
82
-			if [ ! "$?" = "0" ]; then
83
-				exit 5626
84
-			fi
85
-			rm -rf $temp_restore_dir
86
-			echo $"Restore of Mediagoblin complete"
87
-		fi
88
-		chown -hR mediagoblin:www-data /var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs
89
-	fi
78
+    if grep -q "Mediagoblin domain" $COMPLETION_FILE; then
79
+        MEDIAGOBLIN_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Mediagoblin domain" | awk -F ':' '{print $2}')
80
+        if [ -d $SERVER_DIRECTORY/backup/mediagoblin ]; then
81
+            echo $"Restoring Mediagoblin installation"
82
+            temp_restore_dir=/root/tempmediagoblin
83
+            function_check restore_directory_from_friend
84
+            restore_directory_from_friend $temp_restore_dir mediagoblin
85
+            cp -r $temp_restore_dir/* /
86
+            if [ ! "$?" = "0" ]; then
87
+                exit 5626
88
+            fi
89
+            rm -rf $temp_restore_dir
90
+            echo $"Restore of Mediagoblin complete"
91
+        fi
92
+        chown -hR mediagoblin:www-data /var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs
93
+    fi
90 94
 }
91 95
 
92 96
 function remove_mediagoblin {
93
-	echo -n ''
97
+    echo -n ''
94 98
 }
95 99
 
96 100
 function install_mediagoblin {
97
-	if [ ! $MEDIAGOBLIN_DOMAIN_NAME ]; then
98
-		return
99
-	fi
100
-
101
-	MEDIAGOBLIN_WORKING_DIRECTORY=/var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs
102
-
103
-	# update to a new commit if needed
104
-	function_check set_repo_commit
105
-	set_repo_commit $MEDIAGOBLIN_WORKING_DIRECTORY "Mediagoblin commit" "$MEDIAGOBLIN_COMMIT" $MEDIAGOBLIN_REPO
106
-	if [ -d $MEDIAGOBLIN_WORKING_DIRECTORY ]; then
107
-		chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
108
-	fi
109
-
110
-	if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
111
-		return
112
-	fi
113
-
114
-	apt-get -y install git-core python python-dev python-lxml python-pil
115
-	apt-get -y install python-virtualenv npm nodejs-legacy automake
116
-	apt-get -y install fcgiwrap
117
-
118
-	#apt-get -y install postgresql postgresql-client python-psycopg2
119
-	#apt-get -y install python-gst-1.0 libjpeg62-turbo-dev gstreamer1.0-plugins-base python-gobject
120
-	#apt-get -y install gstreamer1.0-plugins-good gstreamer1.0-libav libav-tools gstreamer0.10-tools
121
-	#apt-get -y install python-numpy python-scipy libsndfile1-dev python-gst0.10-dev
122
-	#apt-get -y install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer1.0-tools
123
-	#su -c "createuser -A -D mediagoblin" - postgres
124
-	#su -c "createdb -E UNICODE -O mediagoblin mediagoblin" - postgres
125
-
126
-	useradd -c "GNU MediaGoblin system account" -d /var/lib/mediagoblin -m -r -g www-data mediagoblin
127
-	groupadd mediagoblin
128
-	usermod --append -G mediagoblin mediagoblin
129
-
130
-	if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY ]; then
131
-		mkdir -p $MEDIAGOBLIN_WORKING_DIRECTORY
132
-	fi
133
-
134
-	function_check git_clone
135
-	git_clone $MEDIAGOBLIN_REPO $MEDIAGOBLIN_WORKING_DIRECTORY
136
-	cd $MEDIAGOBLIN_WORKING_DIRECTORY
137
-	git checkout $MEDIAGOBLIN_COMMIT -b $MEDIAGOBLIN_COMMIT
138
-	git submodule init
139
-	git submodule update
140
-
141
-	if ! grep -q "Mediagoblin commit" $COMPLETION_FILE; then
142
-		echo "Mediagoblin commit:$MEDIAGOBLIN_COMMIT" >> $COMPLETION_FILE
143
-	else
144
-		sed -i "s/Mediagoblin commit.*/Mediagoblin commit:$MEDIAGOBLIN_COMMIT/g" $COMPLETION_FILE
145
-	fi
146
-
147
-	chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
148
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bootstrap.sh" - mediagoblin
149
-	if [ ! "$?" = "0" ]; then
150
-		exit 278826
151
-	fi
152
-
153
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./configure" - mediagoblin
154
-	if [ ! "$?" = "0" ]; then
155
-		exit 462826
156
-	fi
157
-
158
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && make" - mediagoblin
159
-	if [ ! "$?" = "0" ]; then
160
-		exit 738229
161
-	fi
162
-
163
-	if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev ]; then
164
-		mkdir $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
165
-	fi
166
-	chmod 750 $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
167
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install flup==1.0.3.dev-20110405" - mediagoblin
168
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade billiard" - mediagoblin
169
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade Paste" - mediagoblin
170
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade amqp" - mediagoblin
171
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade anyjson" - mediagoblin
172
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade py-bcrypt" - mediagoblin
173
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade wtforms" - mediagoblin
174
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade python-dateutil" - mediagoblin
175
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade alembic" - mediagoblin
176
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade waitress" - mediagoblin
177
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade imagesize" - mediagoblin
178
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade alabaster" - mediagoblin
179
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade snowballstemmer" - mediagoblin
180
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade docutils" - mediagoblin
181
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade Pygments" - mediagoblin
182
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade beautifulsoup4" - mediagoblin
183
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade WebOb" - mediagoblin
184
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade py" - mediagoblin
185
-	su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade execnet" - mediagoblin
186
-
187
-	# create some directories
188
-	mkdir /var/log/mediagoblin
189
-	chown -hR mediagoblin:www-data /var/log/mediagoblin
190
-	mkdir /var/run/mediagoblin
191
-	chown -hR mediagoblin:www-data /var/run/mediagoblin
192
-
193
-	if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
194
-		echo $'mediagoblin.ini not found'
195
-		exit 737529
196
-	fi
197
-	if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/paste.ini ]; then
198
-		echo $'paste.ini not found'
199
-		exit 52762
200
-	fi
201
-
202
-	cp -av mediagoblin.ini mediagoblin_local.ini
203
-	cp -av paste.ini paste_local.ini
204
-
205
-	chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
206
-
207
-	# init with systemd
208
-	echo '[Unit]' > /etc/systemd/system/mediagoblin-celeryd.service
209
-	echo 'Description=Mediagoblin Celeryd' >> /etc/systemd/system/mediagoblin-celeryd.service
210
-	echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin-celeryd.service
211
-	echo 'After=network.target' >> /etc/systemd/system/mediagoblin-celeryd.service
212
-	echo '' >> /etc/systemd/system/mediagoblin-celeryd.service
213
-	echo '[Service]' >> /etc/systemd/system/mediagoblin-celeryd.service
214
-	echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin-celeryd.service
215
-	echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin-celeryd.service
216
-	echo 'Type=simple' >> /etc/systemd/system/mediagoblin-celeryd.service
217
-	echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin-celeryd.service
218
-	echo "Environment=MEDIAGOBLIN_CONFIG=$MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin_local.ini \\" >> /etc/systemd/system/mediagoblin-celeryd.service
219
-	echo '    CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery' >> /etc/systemd/system/mediagoblin-celeryd.service
220
-	echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/bin/celery worker \\" >> /etc/systemd/system/mediagoblin-celeryd.service
221
-	echo '    --logfile=/var/log/mediagoblin/celery.log \' >> /etc/systemd/system/mediagoblin-celeryd.service
222
-	echo '    --loglevel=INFO' >> /etc/systemd/system/mediagoblin-celeryd.service
223
-	echo 'PIDFile=/var/run/mediagoblin/mediagoblin-celeryd.pid' >> /etc/systemd/system/mediagoblin-celeryd.service
224
-	echo '' >> /etc/systemd/system/mediagoblin-celeryd.service
225
-	echo '[Install]' >> /etc/systemd/system/mediagoblin-celeryd.service
226
-	echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin-celeryd.service
227
-
228
-	echo '[Unit]' > /etc/systemd/system/mediagoblin-paster.service
229
-	echo 'Description=Mediagoblin' >> /etc/systemd/system/mediagoblin-paster.service
230
-	echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin-paster.service
231
-	echo 'After=network.target' >> /etc/systemd/system/mediagoblin-paster.service
232
-	echo '' >> /etc/systemd/system/mediagoblin-paster.service
233
-	echo '[Service]' >> /etc/systemd/system/mediagoblin-paster.service
234
-	echo 'Type=forking' >> /etc/systemd/system/mediagoblin-paster.service
235
-	echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin-paster.service
236
-	echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin-paster.service
237
-	echo 'Environment=CELERY_ALWAYS_EAGER=false' >> /etc/systemd/system/mediagoblin-paster.service
238
-	echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin-paster.service
239
-	echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/bin/paster serve \\" >> /etc/systemd/system/mediagoblin-paster.service
240
-	echo "    $MEDIAGOBLIN_WORKING_DIRECTORY/paste_local.ini \\" >> /etc/systemd/system/mediagoblin-paster.service
241
-	echo '    --pid-file=/var/run/mediagoblin/mediagoblin.pid \' >> /etc/systemd/system/mediagoblin-paster.service
242
-	echo '    --log-file=/var/log/mediagoblin/mediagoblin.log \' >> /etc/systemd/system/mediagoblin-paster.service
243
-	echo '    --daemon \' >> /etc/systemd/system/mediagoblin-paster.service
244
-	echo '    --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543' >> /etc/systemd/system/mediagoblin-paster.service
245
-	echo "ExecStop=$MEDIAGOBLIN_WORKING_DIRECTORY/bin/paster serve \\" >> /etc/systemd/system/mediagoblin-paster.service
246
-	echo '    --pid-file=/var/run/mediagoblin/mediagoblin.pid \' >> /etc/systemd/system/mediagoblin-paster.service
247
-	echo "    $MEDIAGOBLIN_WORKING_DIRECTORY/paste_local.ini stop" >> /etc/systemd/system/mediagoblin-paster.service
248
-	echo 'PIDFile=/var/run/mediagoblin/mediagoblin.pid' >> /etc/systemd/system/mediagoblin-paster.service
249
-	echo '' >> /etc/systemd/system/mediagoblin-paster.service
250
-	echo '[Install]' >> /etc/systemd/system/mediagoblin-paster.service
251
-	echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin-paster.service
252
-	systemctl daemon-reload
253
-	systemctl enable mediagoblin-celeryd
254
-	systemctl enable mediagoblin-paster
255
-	systemctl daemon-reload
256
-	systemctl start mediagoblin-celeryd
257
-	systemctl start mediagoblin-paster
258
-
259
-	MEDIAGOBLIN_ONION_HOSTNAME=$(add_onion_service mediagoblin 80 ${MEDIAGOBLIN_ONION_PORT})
260
-	if ! grep -q "Mediagoblin onion domain" $COMPLETION_FILE; then
261
-		echo "Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}" >> $COMPLETION_FILE
262
-	else
263
-		sed -i "s|Mediagoblin onion domain.*|Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}|g" $COMPLETION_FILE
264
-	fi
265
-	if [[ $MEDIAGOBLIN_ONION_HOSTNAME == *"not found"* ]]; then
266
-		echo $'Problem creating onion address for mediagoblin'
267
-		exit 672652
268
-	fi
269
-
270
-	# web config
271
-	MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
272
-	function_check nginx_http_redirect
273
-	nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
274
-	if [[ $ONION_ONLY == 'no' ]]; then
275
-		echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
276
-		echo '  listen 443 ssl;' >> $MEDIAGOBLIN_VIRTUAL_HOST
277
-		echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
278
-		echo '  # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
279
-		echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
280
-		echo '  include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
281
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
282
-		echo '  autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
283
-		echo '  default_type  application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
284
-		echo '  sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
285
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
286
-		function_check nginx_limits
287
-		nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
288
-		function_check nginx_ssl
289
-		nginx_ssl $MEDIAGOBLIN_DOMAIN_NAME
290
-		function_check nginx_disable_sniffing
291
-		nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
292
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
293
-		echo '  # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
294
-		echo '  gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
295
-		echo '  gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
296
-		echo '  gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
297
-		echo '  gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
298
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
299
-		echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
300
-		echo '  # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
301
-		echo '  # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
302
-		echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
303
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
304
-		echo "  server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
305
-		echo '  access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
306
-		echo '  error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
307
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
308
-		echo '  # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
309
-		echo '  location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
310
-		echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
311
-		echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
312
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
313
-		echo '  # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
314
-		echo '  location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
315
-		echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
316
-		echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
317
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
318
-		echo '  # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
319
-		echo '  location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
320
-		echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
321
-		echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
322
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
323
-		echo '  # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
324
-		echo '  location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
325
-		echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
326
-		echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
327
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
328
-		echo '  # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
329
-		echo '  location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
330
-		echo '    fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
331
-		echo '    include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
332
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
333
-		echo '    # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
334
-		echo '      # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
335
-		echo '    fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
336
-		echo '    fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
337
-		echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
338
-		echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
339
-		echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
340
-	else
341
-		echo -n '' > $MEDIAGOBLIN_VIRTUAL_HOST
342
-	fi
343
-
344
-	echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
345
-	echo "  listen 127.0.0.1:${MEDIAGOBLIN_ONION_PORT} default_server;" >> $MEDIAGOBLIN_VIRTUAL_HOST
346
-	echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
347
-	echo '  # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
348
-	echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
349
-	echo '  include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
350
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
351
-	echo '  autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
352
-	echo '  default_type  application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
353
-	echo '  sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
354
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
355
-	function_check nginx_limits
356
-	nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
357
-	function_check nginx_disable_sniffing
358
-	nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
359
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
360
-	echo '  # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
361
-	echo '  gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
362
-	echo '  gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
363
-	echo '  gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
364
-	echo '  gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
365
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
366
-	echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
367
-	echo '  # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
368
-	echo '  # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
369
-	echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
370
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
371
-	echo "  server_name $MEDIAGOBLIN_ONION_HOSTNAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
372
-	echo '  access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
373
-	echo '  error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
374
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
375
-	echo '  # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
376
-	echo '  location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
377
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
378
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
379
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
380
-	echo '  # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
381
-	echo '  location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
382
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
383
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
384
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
385
-	echo '  # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
386
-	echo '  location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
387
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
388
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
389
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
390
-	echo '  # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
391
-	echo '  location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
392
-	echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
393
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
394
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
395
-	echo '  # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
396
-	echo '  location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
397
-	echo '    fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
398
-	echo '    include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
399
-	echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
400
-	echo '    # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
401
-	echo '      # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
402
-	echo '    fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
403
-	echo '    fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
404
-	echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
405
-	echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
406
-
407
-	function_check create_site_certificate
408
-	create_site_certificate $MEDIAGOBLIN_DOMAIN_NAME
409
-
410
-	nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
411
-	systemctl restart php5-fpm
412
-	systemctl restart nginx
413
-
414
-	add_ddns_domain $MEDIAGOBLIN_DOMAIN_NAME
415
-
416
-	if ! grep -q "Mediagoblin domain" $COMPLETION_FILE; then
417
-		echo "Mediagoblin domain:$MEDIAGOBLIN_DOMAIN_NAME" >> $COMPLETION_FILE
418
-	else
419
-		sed -i "s/Mediagoblin domain.*/Mediagoblin domain:$MEDIAGOBLIN_DOMAIN_NAME/g" $COMPLETION_FILE
420
-	fi
421
-
422
-	echo 'install_mediagoblin' >> $COMPLETION_FILE
101
+    if [ ! $MEDIAGOBLIN_DOMAIN_NAME ]; then
102
+        return
103
+    fi
104
+
105
+    MEDIAGOBLIN_WORKING_DIRECTORY=/var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs
106
+
107
+    # update to a new commit if needed
108
+    function_check set_repo_commit
109
+    set_repo_commit $MEDIAGOBLIN_WORKING_DIRECTORY "Mediagoblin commit" "$MEDIAGOBLIN_COMMIT" $MEDIAGOBLIN_REPO
110
+    if [ -d $MEDIAGOBLIN_WORKING_DIRECTORY ]; then
111
+        chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
112
+    fi
113
+
114
+    if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
115
+        return
116
+    fi
117
+
118
+    apt-get -y install git-core python python-dev python-lxml python-pil
119
+    apt-get -y install python-virtualenv npm nodejs-legacy automake
120
+    apt-get -y install fcgiwrap
121
+
122
+    #apt-get -y install postgresql postgresql-client python-psycopg2
123
+    #apt-get -y install python-gst-1.0 libjpeg62-turbo-dev gstreamer1.0-plugins-base python-gobject
124
+    #apt-get -y install gstreamer1.0-plugins-good gstreamer1.0-libav libav-tools gstreamer0.10-tools
125
+    #apt-get -y install python-numpy python-scipy libsndfile1-dev python-gst0.10-dev
126
+    #apt-get -y install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer1.0-tools
127
+    #su -c "createuser -A -D mediagoblin" - postgres
128
+    #su -c "createdb -E UNICODE -O mediagoblin mediagoblin" - postgres
129
+
130
+    useradd -c "GNU MediaGoblin system account" -d /var/lib/mediagoblin -m -r -g www-data mediagoblin
131
+    groupadd mediagoblin
132
+    usermod --append -G mediagoblin mediagoblin
133
+
134
+    if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY ]; then
135
+        mkdir -p $MEDIAGOBLIN_WORKING_DIRECTORY
136
+    fi
137
+
138
+    function_check git_clone
139
+    git_clone $MEDIAGOBLIN_REPO $MEDIAGOBLIN_WORKING_DIRECTORY
140
+    cd $MEDIAGOBLIN_WORKING_DIRECTORY
141
+    git checkout $MEDIAGOBLIN_COMMIT -b $MEDIAGOBLIN_COMMIT
142
+    git submodule init
143
+    git submodule update
144
+
145
+    if ! grep -q "Mediagoblin commit" $COMPLETION_FILE; then
146
+        echo "Mediagoblin commit:$MEDIAGOBLIN_COMMIT" >> $COMPLETION_FILE
147
+    else
148
+        sed -i "s/Mediagoblin commit.*/Mediagoblin commit:$MEDIAGOBLIN_COMMIT/g" $COMPLETION_FILE
149
+    fi
150
+
151
+    chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
152
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bootstrap.sh" - mediagoblin
153
+    if [ ! "$?" = "0" ]; then
154
+        exit 278826
155
+    fi
156
+
157
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./configure" - mediagoblin
158
+    if [ ! "$?" = "0" ]; then
159
+        exit 462826
160
+    fi
161
+
162
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && make" - mediagoblin
163
+    if [ ! "$?" = "0" ]; then
164
+        exit 738229
165
+    fi
166
+
167
+    if [ ! -d $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev ]; then
168
+        mkdir $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
169
+    fi
170
+    chmod 750 $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev
171
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install flup==1.0.3.dev-20110405" - mediagoblin
172
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade billiard" - mediagoblin
173
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade Paste" - mediagoblin
174
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade amqp" - mediagoblin
175
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade anyjson" - mediagoblin
176
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade py-bcrypt" - mediagoblin
177
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade wtforms" - mediagoblin
178
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade python-dateutil" - mediagoblin
179
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade alembic" - mediagoblin
180
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade waitress" - mediagoblin
181
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade imagesize" - mediagoblin
182
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade alabaster" - mediagoblin
183
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade snowballstemmer" - mediagoblin
184
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade docutils" - mediagoblin
185
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade Pygments" - mediagoblin
186
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade beautifulsoup4" - mediagoblin
187
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade WebOb" - mediagoblin
188
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade py" - mediagoblin
189
+    su -c "cd $MEDIAGOBLIN_WORKING_DIRECTORY && ./bin/easy_install --upgrade execnet" - mediagoblin
190
+
191
+    # create some directories
192
+    mkdir /var/log/mediagoblin
193
+    chown -hR mediagoblin:www-data /var/log/mediagoblin
194
+    mkdir /var/run/mediagoblin
195
+    chown -hR mediagoblin:www-data /var/run/mediagoblin
196
+
197
+    if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin.ini ]; then
198
+        echo $'mediagoblin.ini not found'
199
+        exit 737529
200
+    fi
201
+    if [ ! -f $MEDIAGOBLIN_WORKING_DIRECTORY/paste.ini ]; then
202
+        echo $'paste.ini not found'
203
+        exit 52762
204
+    fi
205
+
206
+    cp -av mediagoblin.ini mediagoblin_local.ini
207
+    cp -av paste.ini paste_local.ini
208
+
209
+    chown -hR mediagoblin:www-data $MEDIAGOBLIN_WORKING_DIRECTORY
210
+
211
+    # init with systemd
212
+    echo '[Unit]' > /etc/systemd/system/mediagoblin-celeryd.service
213
+    echo 'Description=Mediagoblin Celeryd' >> /etc/systemd/system/mediagoblin-celeryd.service
214
+    echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin-celeryd.service
215
+    echo 'After=network.target' >> /etc/systemd/system/mediagoblin-celeryd.service
216
+    echo '' >> /etc/systemd/system/mediagoblin-celeryd.service
217
+    echo '[Service]' >> /etc/systemd/system/mediagoblin-celeryd.service
218
+    echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin-celeryd.service
219
+    echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin-celeryd.service
220
+    echo 'Type=simple' >> /etc/systemd/system/mediagoblin-celeryd.service
221
+    echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin-celeryd.service
222
+    echo "Environment=MEDIAGOBLIN_CONFIG=$MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin_local.ini \\" >> /etc/systemd/system/mediagoblin-celeryd.service
223
+    echo '    CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery' >> /etc/systemd/system/mediagoblin-celeryd.service
224
+    echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/bin/celery worker \\" >> /etc/systemd/system/mediagoblin-celeryd.service
225
+    echo '    --logfile=/var/log/mediagoblin/celery.log \' >> /etc/systemd/system/mediagoblin-celeryd.service
226
+    echo '    --loglevel=INFO' >> /etc/systemd/system/mediagoblin-celeryd.service
227
+    echo 'PIDFile=/var/run/mediagoblin/mediagoblin-celeryd.pid' >> /etc/systemd/system/mediagoblin-celeryd.service
228
+    echo '' >> /etc/systemd/system/mediagoblin-celeryd.service
229
+    echo '[Install]' >> /etc/systemd/system/mediagoblin-celeryd.service
230
+    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin-celeryd.service
231
+
232
+    echo '[Unit]' > /etc/systemd/system/mediagoblin-paster.service
233
+    echo 'Description=Mediagoblin' >> /etc/systemd/system/mediagoblin-paster.service
234
+    echo 'After=syslog.target' >> /etc/systemd/system/mediagoblin-paster.service
235
+    echo 'After=network.target' >> /etc/systemd/system/mediagoblin-paster.service
236
+    echo '' >> /etc/systemd/system/mediagoblin-paster.service
237
+    echo '[Service]' >> /etc/systemd/system/mediagoblin-paster.service
238
+    echo 'Type=forking' >> /etc/systemd/system/mediagoblin-paster.service
239
+    echo 'User=mediagoblin' >> /etc/systemd/system/mediagoblin-paster.service
240
+    echo 'Group=mediagoblin' >> /etc/systemd/system/mediagoblin-paster.service
241
+    echo 'Environment=CELERY_ALWAYS_EAGER=false' >> /etc/systemd/system/mediagoblin-paster.service
242
+    echo "WorkingDirectory=$MEDIAGOBLIN_WORKING_DIRECTORY" >> /etc/systemd/system/mediagoblin-paster.service
243
+    echo "ExecStart=$MEDIAGOBLIN_WORKING_DIRECTORY/bin/paster serve \\" >> /etc/systemd/system/mediagoblin-paster.service
244
+    echo "    $MEDIAGOBLIN_WORKING_DIRECTORY/paste_local.ini \\" >> /etc/systemd/system/mediagoblin-paster.service
245
+    echo '    --pid-file=/var/run/mediagoblin/mediagoblin.pid \' >> /etc/systemd/system/mediagoblin-paster.service
246
+    echo '    --log-file=/var/log/mediagoblin/mediagoblin.log \' >> /etc/systemd/system/mediagoblin-paster.service
247
+    echo '    --daemon \' >> /etc/systemd/system/mediagoblin-paster.service
248
+    echo '    --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543' >> /etc/systemd/system/mediagoblin-paster.service
249
+    echo "ExecStop=$MEDIAGOBLIN_WORKING_DIRECTORY/bin/paster serve \\" >> /etc/systemd/system/mediagoblin-paster.service
250
+    echo '    --pid-file=/var/run/mediagoblin/mediagoblin.pid \' >> /etc/systemd/system/mediagoblin-paster.service
251
+    echo "    $MEDIAGOBLIN_WORKING_DIRECTORY/paste_local.ini stop" >> /etc/systemd/system/mediagoblin-paster.service
252
+    echo 'PIDFile=/var/run/mediagoblin/mediagoblin.pid' >> /etc/systemd/system/mediagoblin-paster.service
253
+    echo '' >> /etc/systemd/system/mediagoblin-paster.service
254
+    echo '[Install]' >> /etc/systemd/system/mediagoblin-paster.service
255
+    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/mediagoblin-paster.service
256
+    systemctl daemon-reload
257
+    systemctl enable mediagoblin-celeryd
258
+    systemctl enable mediagoblin-paster
259
+    systemctl daemon-reload
260
+    systemctl start mediagoblin-celeryd
261
+    systemctl start mediagoblin-paster
262
+
263
+    MEDIAGOBLIN_ONION_HOSTNAME=$(add_onion_service mediagoblin 80 ${MEDIAGOBLIN_ONION_PORT})
264
+    if ! grep -q "Mediagoblin onion domain" $COMPLETION_FILE; then
265
+        echo "Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}" >> $COMPLETION_FILE
266
+    else
267
+        sed -i "s|Mediagoblin onion domain.*|Mediagoblin onion domain:${MEDIAGOBLIN_ONION_HOSTNAME}|g" $COMPLETION_FILE
268
+    fi
269
+    if [[ $MEDIAGOBLIN_ONION_HOSTNAME == *"not found"* ]]; then
270
+        echo $'Problem creating onion address for mediagoblin'
271
+        exit 672652
272
+    fi
273
+
274
+    # web config
275
+    MEDIAGOBLIN_VIRTUAL_HOST=/etc/nginx/sites-available/$MEDIAGOBLIN_DOMAIN_NAME
276
+    function_check nginx_http_redirect
277
+    nginx_http_redirect $MEDIAGOBLIN_DOMAIN_NAME
278
+    if [[ $ONION_ONLY == 'no' ]]; then
279
+        echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
280
+        echo '  listen 443 ssl;' >> $MEDIAGOBLIN_VIRTUAL_HOST
281
+        echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
282
+        echo '  # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
283
+        echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
284
+        echo '  include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
285
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
286
+        echo '  autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
287
+        echo '  default_type  application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
288
+        echo '  sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
289
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
290
+        function_check nginx_limits
291
+        nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
292
+        function_check nginx_ssl
293
+        nginx_ssl $MEDIAGOBLIN_DOMAIN_NAME
294
+        function_check nginx_disable_sniffing
295
+        nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
296
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
297
+        echo '  # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
298
+        echo '  gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
299
+        echo '  gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
300
+        echo '  gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
301
+        echo '  gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
302
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
303
+        echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
304
+        echo '  # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
305
+        echo '  # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
306
+        echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
307
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
308
+        echo "  server_name $MEDIAGOBLIN_DOMAIN_NAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
309
+        echo '  access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
310
+        echo '  error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
311
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
312
+        echo '  # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
313
+        echo '  location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
314
+        echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
315
+        echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
316
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
317
+        echo '  # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
318
+        echo '  location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
319
+        echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
320
+        echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
321
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
322
+        echo '  # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
323
+        echo '  location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
324
+        echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
325
+        echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
326
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
327
+        echo '  # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
328
+        echo '  location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
329
+        echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
330
+        echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
331
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
332
+        echo '  # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
333
+        echo '  location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
334
+        echo '    fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
335
+        echo '    include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
336
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
337
+        echo '    # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
338
+        echo '      # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
339
+        echo '    fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
340
+        echo '    fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
341
+        echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
342
+        echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
343
+        echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
344
+    else
345
+        echo -n '' > $MEDIAGOBLIN_VIRTUAL_HOST
346
+    fi
347
+
348
+    echo 'server {' >> $MEDIAGOBLIN_VIRTUAL_HOST
349
+    echo "  listen 127.0.0.1:${MEDIAGOBLIN_ONION_PORT} default_server;" >> $MEDIAGOBLIN_VIRTUAL_HOST
350
+    echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
351
+    echo '  # Stock useful config options, but ignore them :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
352
+    echo '  #################################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
353
+    echo '  include /etc/nginx/mime.types;' >> $MEDIAGOBLIN_VIRTUAL_HOST
354
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
355
+    echo '  autoindex off;' >> $MEDIAGOBLIN_VIRTUAL_HOST
356
+    echo '  default_type  application/octet-stream;' >> $MEDIAGOBLIN_VIRTUAL_HOST
357
+    echo '  sendfile on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
358
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
359
+    function_check nginx_limits
360
+    nginx_limits $MEDIAGOBLIN_DOMAIN_NAME '20m'
361
+    function_check nginx_disable_sniffing
362
+    nginx_disable_sniffing $MEDIAGOBLIN_DOMAIN_NAME
363
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
364
+    echo '  # Gzip' >> $MEDIAGOBLIN_VIRTUAL_HOST
365
+    echo '  gzip on;' >> $MEDIAGOBLIN_VIRTUAL_HOST
366
+    echo '  gzip_min_length 1024;' >> $MEDIAGOBLIN_VIRTUAL_HOST
367
+    echo '  gzip_buffers 4 32k;' >> $MEDIAGOBLIN_VIRTUAL_HOST
368
+    echo '  gzip_types text/plain application/x-javascript text/javascript text/xml text/css;' >> $MEDIAGOBLIN_VIRTUAL_HOST
369
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
370
+    echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
371
+    echo '  # Mounting MediaGoblin stuff' >> $MEDIAGOBLIN_VIRTUAL_HOST
372
+    echo '  # This is the section you should read' >> $MEDIAGOBLIN_VIRTUAL_HOST
373
+    echo '  #####################################' >> $MEDIAGOBLIN_VIRTUAL_HOST
374
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
375
+    echo "  server_name $MEDIAGOBLIN_ONION_HOSTNAME;" >> $MEDIAGOBLIN_VIRTUAL_HOST
376
+    echo '  access_log /var/log/nginx/mediagoblin.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
377
+    echo '  error_log /var/log/nginx/mediagoblin.error.log;' >> $MEDIAGOBLIN_VIRTUAL_HOST
378
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
379
+    echo '  # MediaGoblins stock static files: CSS, JS, etc.' >> $MEDIAGOBLIN_VIRTUAL_HOST
380
+    echo '  location /mgoblin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
381
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/mediagoblin/static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
382
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
383
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
384
+    echo '  # Instance specific media:' >> $MEDIAGOBLIN_VIRTUAL_HOST
385
+    echo '  location /mgoblin_media/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
386
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/media/public/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
387
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
388
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
389
+    echo '  # Theme static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
390
+    echo '  location /theme_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
391
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/theme_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
392
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
393
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
394
+    echo '  # Plugin static files (usually symlinked in)' >> $MEDIAGOBLIN_VIRTUAL_HOST
395
+    echo '  location /plugin_static/ {' >> $MEDIAGOBLIN_VIRTUAL_HOST
396
+    echo "    alias $MEDIAGOBLIN_WORKING_DIRECTORY/user_dev/plugin_static/;" >> $MEDIAGOBLIN_VIRTUAL_HOST
397
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
398
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
399
+    echo '  # Mounting MediaGoblin itself via FastCGI.' >> $MEDIAGOBLIN_VIRTUAL_HOST
400
+    echo '  location / {' >> $MEDIAGOBLIN_VIRTUAL_HOST
401
+    echo '    fastcgi_pass 127.0.0.1:26543;' >> $MEDIAGOBLIN_VIRTUAL_HOST
402
+    echo '    include /etc/nginx/fastcgi_params;' >> $MEDIAGOBLIN_VIRTUAL_HOST
403
+    echo '' >> $MEDIAGOBLIN_VIRTUAL_HOST
404
+    echo '    # our understanding vs nginxs handling of script_name vs' >> $MEDIAGOBLIN_VIRTUAL_HOST
405
+    echo '      # path_info dont match :)' >> $MEDIAGOBLIN_VIRTUAL_HOST
406
+    echo '    fastcgi_param PATH_INFO $fastcgi_script_name;' >> $MEDIAGOBLIN_VIRTUAL_HOST
407
+    echo '    fastcgi_param SCRIPT_NAME "";' >> $MEDIAGOBLIN_VIRTUAL_HOST
408
+    echo '  }' >> $MEDIAGOBLIN_VIRTUAL_HOST
409
+    echo '}' >> $MEDIAGOBLIN_VIRTUAL_HOST
410
+
411
+    function_check create_site_certificate
412
+    create_site_certificate $MEDIAGOBLIN_DOMAIN_NAME
413
+
414
+    nginx_ensite $MEDIAGOBLIN_DOMAIN_NAME
415
+    systemctl restart php5-fpm
416
+    systemctl restart nginx
417
+
418
+    add_ddns_domain $MEDIAGOBLIN_DOMAIN_NAME
419
+
420
+    if ! grep -q "Mediagoblin domain" $COMPLETION_FILE; then
421
+        echo "Mediagoblin domain:$MEDIAGOBLIN_DOMAIN_NAME" >> $COMPLETION_FILE
422
+    else
423
+        sed -i "s/Mediagoblin domain.*/Mediagoblin domain:$MEDIAGOBLIN_DOMAIN_NAME/g" $COMPLETION_FILE
424
+    fi
425
+
426
+    echo 'install_mediagoblin' >> $COMPLETION_FILE
423 427
 }
424 428
 
425 429
 # NOTE: deliberately no exit 0

+ 216
- 212
src/freedombone-app-mumble View File

@@ -39,257 +39,261 @@ VOIP_PORT=64738
39 39
 VOIP_DATABASE="mumble-server.sqlite"
40 40
 VOIP_CONFIG_FILE="mumble-server.ini"
41 41
 
42
+function change_password_mumble {
43
+    echo -n ''
44
+}
45
+
42 46
 function reconfigure_mumble {
43
-	echo -n ''
47
+    echo -n ''
44 48
 }
45 49
 
46 50
 function upgrade_mumble {
47
-	echo -n ''
51
+    echo -n ''
48 52
 }
49 53
 
50 54
 function backup_local_mumble {
51
-	if [ -f /etc/mumble-server.ini ]; then
52
-		echo $"Backing up Mumble settings"
53
-		temp_backup_dir=/root/tempvoipbackup
54
-		if [ ! -d $temp_backup_dir ]; then
55
-			mkdir -p $temp_backup_dir
56
-		fi
57
-		cp -f /etc/mumble-server.ini $temp_backup_dir
58
-		cp -f /var/lib/mumble-server/mumble-server.sqlite $temp_backup_dir
59
-		backup_directory_to_usb $temp_backup_dir voip
60
-		echo $"Mumble settings backup complete"
61
-	fi
55
+    if [ -f /etc/mumble-server.ini ]; then
56
+        echo $"Backing up Mumble settings"
57
+        temp_backup_dir=/root/tempvoipbackup
58
+        if [ ! -d $temp_backup_dir ]; then
59
+            mkdir -p $temp_backup_dir
60
+        fi
61
+        cp -f /etc/mumble-server.ini $temp_backup_dir
62
+        cp -f /var/lib/mumble-server/mumble-server.sqlite $temp_backup_dir
63
+        backup_directory_to_usb $temp_backup_dir voip
64
+        echo $"Mumble settings backup complete"
65
+    fi
62 66
 }
63 67
 
64 68
 function restore_local_mumble {
65
-	if [ -d $USB_MOUNT/backup/voip ]; then
66
-		echo $"Restoring VoIP settings"
67
-		temp_restore_dir=/root/tempvoip
68
-		function_check restore_directory_from_usb
69
-		restore_directory_from_usb $temp_restore_dir voip
70
-		cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
71
-		if [ ! "$?" = "0" ]; then
72
-			rm -rf $temp_restore_dir
73
-			function_check set_user_permissions
74
-			set_user_permissions
75
-			function_check backup_unmount_drive
76
-			backup_unmount_drive
77
-			exit 3679
78
-		fi
79
-		cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
80
-		if [ ! "$?" = "0" ]; then
81
-			rm -rf $temp_restore_dir
82
-			function_check set_user_permissions
83
-			set_user_permissions
84
-			function_check backup_unmount_drive
85
-			backup_unmount_drive
86
-			exit 276
87
-		fi
88
-		rm -rf $temp_restore_dir
89
-		cp /etc/ssl/certs/mumble* /var/lib/mumble-server
90
-		cp /etc/ssl/private/mumble* /var/lib/mumble-server
91
-		chown -R mumble-server:mumble-server /var/lib/mumble-server
92
-		service mumble-server restart
93
-	fi
69
+    if [ -d $USB_MOUNT/backup/voip ]; then
70
+        echo $"Restoring VoIP settings"
71
+        temp_restore_dir=/root/tempvoip
72
+        function_check restore_directory_from_usb
73
+        restore_directory_from_usb $temp_restore_dir voip
74
+        cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
75
+        if [ ! "$?" = "0" ]; then
76
+            rm -rf $temp_restore_dir
77
+            function_check set_user_permissions
78
+            set_user_permissions
79
+            function_check backup_unmount_drive
80
+            backup_unmount_drive
81
+            exit 3679
82
+        fi
83
+        cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
84
+        if [ ! "$?" = "0" ]; then
85
+            rm -rf $temp_restore_dir
86
+            function_check set_user_permissions
87
+            set_user_permissions
88
+            function_check backup_unmount_drive
89
+            backup_unmount_drive
90
+            exit 276
91
+        fi
92
+        rm -rf $temp_restore_dir
93
+        cp /etc/ssl/certs/mumble* /var/lib/mumble-server
94
+        cp /etc/ssl/private/mumble* /var/lib/mumble-server
95
+        chown -R mumble-server:mumble-server /var/lib/mumble-server
96
+        service mumble-server restart
97
+    fi
94 98
 }
95 99
 
96 100
 function backup_remote_mumble {
97
-	if [ -f /etc/mumble-server.ini ]; then
98
-		echo $"Backing up VoIP settings"
99
-		if [ ! -d /root/tempvoipbackup ]; then
100
-			mkdir -p /root/tempvoipbackup
101
-		fi
102
-		cp -f /etc/mumble-server.ini /root/tempvoipbackup
103
-		cp -f /var/lib/mumble-server/mumble-server.sqlite /root/tempvoipbackup
104
-		backup_directory_to_friend /root/tempvoipbackup voip
105
-		echo $"Backup of VoIP settings complete"
106
-	fi
101
+    if [ -f /etc/mumble-server.ini ]; then
102
+        echo $"Backing up VoIP settings"
103
+        if [ ! -d /root/tempvoipbackup ]; then
104
+            mkdir -p /root/tempvoipbackup
105
+        fi
106
+        cp -f /etc/mumble-server.ini /root/tempvoipbackup
107
+        cp -f /var/lib/mumble-server/mumble-server.sqlite /root/tempvoipbackup
108
+        backup_directory_to_friend /root/tempvoipbackup voip
109
+        echo $"Backup of VoIP settings complete"
110
+    fi
107 111
 }
108 112
 
109 113
 function restore_remote_mumble {
110
-	if [ -d $SERVER_DIRECTORY/backup/voip ]; then
111
-		echo $"Restoring Mumble settings"
112
-		temp_restore_dir=/root/tempvoip
113
-		function_check restore_directory_from_friend
114
-		restore_directory_from_friend $temp_restore_dir voip
115
-		cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
116
-		if [ ! "$?" = "0" ]; then
117
-			rm -rf $temp_restore_dir
118
-			exit 7823
119
-		fi
120
-		cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
121
-		if [ ! "$?" = "0" ]; then
122
-			rm -rf $temp_restore_dir
123
-			exit 7823
124
-		fi
125
-		cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
126
-		if [ ! "$?" = "0" ]; then
127
-			rm -rf $temp_restore_dir
128
-			exit 276
129
-		fi
130
-		rm -rf $temp_restore_dir
131
-		cp /etc/ssl/certs/mumble* /var/lib/mumble-server
132
-		cp /etc/ssl/private/mumble* /var/lib/mumble-server
133
-		chown -R mumble-server:mumble-server /var/lib/mumble-server
134
-		service mumble-server restart
135
-		echo $"Restore of Mumble complete"
136
-	fi
114
+    if [ -d $SERVER_DIRECTORY/backup/voip ]; then
115
+        echo $"Restoring Mumble settings"
116
+        temp_restore_dir=/root/tempvoip
117
+        function_check restore_directory_from_friend
118
+        restore_directory_from_friend $temp_restore_dir voip
119
+        cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
120
+        if [ ! "$?" = "0" ]; then
121
+            rm -rf $temp_restore_dir
122
+            exit 7823
123
+        fi
124
+        cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
125
+        if [ ! "$?" = "0" ]; then
126
+            rm -rf $temp_restore_dir
127
+            exit 7823
128
+        fi
129
+        cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
130
+        if [ ! "$?" = "0" ]; then
131
+            rm -rf $temp_restore_dir
132
+            exit 276
133
+        fi
134
+        rm -rf $temp_restore_dir
135
+        cp /etc/ssl/certs/mumble* /var/lib/mumble-server
136
+        cp /etc/ssl/private/mumble* /var/lib/mumble-server
137
+        chown -R mumble-server:mumble-server /var/lib/mumble-server
138
+        service mumble-server restart
139
+        echo $"Restore of Mumble complete"
140
+    fi
137 141
 }
138 142
 
139 143
 function remove_mumble {
140
-	if !grep -Fxq "install_mumble" $COMPLETION_FILE; then
141
-		if ! grep -Fxq "install_voip" $COMPLETION_FILE; then
142
-			return
143
-		fi
144
-	fi
145
-	apt-get -y remove --purge mumble-server
146
-	if [[ $ONION_ONLY == "no" ]]; then
147
-		iptables -D INPUT -p udp --dport $VOIP_PORT -j ACCEPT
148
-		iptables -D INPUT -p tcp --dport $VOIP_PORT -j ACCEPT
149
-		function_check save_firewall_settings
150
-		save_firewall_settings
151
-	fi
152
-	if [ -f /etc/mumble-server.ini ]; then
153
-		rm /etc/mumble-server.ini
154
-	fi
155
-	function_check remove_onion_service
156
-	remove_onion_service voip ${VOIP_PORT}
157
-	sed -i '/install_mumble/d' $COMPLETION_FILE
158
-	sed -i '/install_voip/d' $COMPLETION_FILE
159
-	sed -i '/configure_firewall_for_voip/d' $COMPLETION_FILE
160
-	sed -i '/VoIP /d' $COMPLETION_FILE
144
+    if !grep -Fxq "install_mumble" $COMPLETION_FILE; then
145
+        if ! grep -Fxq "install_voip" $COMPLETION_FILE; then
146
+            return
147
+        fi
148
+    fi
149
+    apt-get -y remove --purge mumble-server
150
+    if [[ $ONION_ONLY == "no" ]]; then
151
+        iptables -D INPUT -p udp --dport $VOIP_PORT -j ACCEPT
152
+        iptables -D INPUT -p tcp --dport $VOIP_PORT -j ACCEPT
153
+        function_check save_firewall_settings
154
+        save_firewall_settings
155
+    fi
156
+    if [ -f /etc/mumble-server.ini ]; then
157
+        rm /etc/mumble-server.ini
158
+    fi
159
+    function_check remove_onion_service
160
+    remove_onion_service voip ${VOIP_PORT}
161
+    sed -i '/install_mumble/d' $COMPLETION_FILE
162
+    sed -i '/install_voip/d' $COMPLETION_FILE
163
+    sed -i '/configure_firewall_for_voip/d' $COMPLETION_FILE
164
+    sed -i '/VoIP /d' $COMPLETION_FILE
161 165
 }
162 166
 
163 167
 function get_voip_server_password {
164
-	if [ -f /home/$MY_USERNAME/README ]; then
165
-		if grep -q "VoIP server password" /home/$MY_USERNAME/README; then
166
-			if [ ! $VOIP_SERVER_PASSWORD ]; then
167
-				VOIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "VoIP server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
168
-			fi
169
-		else
170
-			if grep -q "Mumble server password" /home/$MY_USERNAME/README; then
171
-				if [ ! $VOIP_SERVER_PASSWORD ]; then
172
-					VOIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Mumble server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
173
-				fi
174
-			fi
175
-		fi
176
-	fi
168
+    if [ -f /home/$MY_USERNAME/README ]; then
169
+        if grep -q "VoIP server password" /home/$MY_USERNAME/README; then
170
+            if [ ! $VOIP_SERVER_PASSWORD ]; then
171
+                VOIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "VoIP server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
172
+            fi
173
+        else
174
+            if grep -q "Mumble server password" /home/$MY_USERNAME/README; then
175
+                if [ ! $VOIP_SERVER_PASSWORD ]; then
176
+                    VOIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Mumble server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
177
+                fi
178
+            fi
179
+        fi
180
+    fi
177 181
 }
178 182
 
179 183
 function configure_firewall_for_voip {
180
-	if grep -Fxq "configure_firewall_for_voip" $COMPLETION_FILE; then
181
-		return
182
-	fi
183
-	if [[ $ONION_ONLY != "no" ]]; then
184
-		return
185
-	fi
186
-	iptables -A INPUT -p udp --dport $VOIP_PORT -j ACCEPT
187
-	iptables -A INPUT -p tcp --dport $VOIP_PORT -j ACCEPT
188
-	function_check save_firewall_settings
189
-	save_firewall_settings
184
+    if grep -Fxq "configure_firewall_for_voip" $COMPLETION_FILE; then
185
+        return
186
+    fi
187
+    if [[ $ONION_ONLY != "no" ]]; then
188
+        return
189
+    fi
190
+    iptables -A INPUT -p udp --dport $VOIP_PORT -j ACCEPT
191
+    iptables -A INPUT -p tcp --dport $VOIP_PORT -j ACCEPT
192
+    function_check save_firewall_settings
193
+    save_firewall_settings
190 194
 
191
-	OPEN_PORTS+=("Mumble   $VOIP_PORT")
192
-	echo 'configure_firewall_for_voip' >> $COMPLETION_FILE
195
+    OPEN_PORTS+=("Mumble   $VOIP_PORT")
196
+    echo 'configure_firewall_for_voip' >> $COMPLETION_FILE
193 197
 }
194 198
 
195 199
 function install_mumble {
196
-	if grep -Fxq "install_mumble" $COMPLETION_FILE; then
197
-		return
198
-	fi
199
-	if grep -Fxq "install_voip" $COMPLETION_FILE; then
200
-		return
201
-	fi
202
-	apt-get -y install mumble-server
200
+    if grep -Fxq "install_mumble" $COMPLETION_FILE; then
201
+        return
202
+    fi
203
+    if grep -Fxq "install_voip" $COMPLETION_FILE; then
204
+        return
205
+    fi
206
+    apt-get -y install mumble-server
203 207
 
204
-	function_check get_voip_server_password
205
-	get_voip_server_password
206
-	if [ ! $VOIP_SERVER_PASSWORD ]; then
207
-		if [ -f $IMAGE_PASSWORD_FILE ]; then
208
-			VOIP_SERVER_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
209
-		else
210
-			VOIP_SERVER_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
211
-			if [ ${#VOIP_SERVER_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
212
-				VOIP_SERVER_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
213
-			fi
214
-		fi
215
-	fi
208
+    function_check get_voip_server_password
209
+    get_voip_server_password
210
+    if [ ! $VOIP_SERVER_PASSWORD ]; then
211
+        if [ -f $IMAGE_PASSWORD_FILE ]; then
212
+            VOIP_SERVER_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
213
+        else
214
+            VOIP_SERVER_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
215
+            if [ ${#VOIP_SERVER_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
216
+                VOIP_SERVER_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
217
+            fi
218
+        fi
219
+    fi
216 220
 
217
-	# Make an ssl cert for the server
218
-	if [ ! -f /etc/ssl/certs/mumble.dhparam ]; then
219
-		${PROJECT_NAME}-addcert -h mumble --dhkey $DH_KEYLENGTH
220
-		function_check check_certificates
221
-		check_certificates mumble
222
-	fi
221
+    # Make an ssl cert for the server
222
+    if [ ! -f /etc/ssl/certs/mumble.dhparam ]; then
223
+        ${PROJECT_NAME}-addcert -h mumble --dhkey $DH_KEYLENGTH
224
+        function_check check_certificates
225
+        check_certificates mumble
226
+    fi
223 227
 
224
-	# Check that the cert was created
225
-	if [ ! -f /etc/ssl/certs/mumble.crt ]; then
226
-		echo $'VoIP server certificate not created'
227
-		exit 57892
228
-	fi
229
-	if [ ! -f /etc/ssl/private/mumble.key ]; then
230
-		echo $'VoIP server key not created'
231
-		exit 57893
232
-	fi
233
-	if [ ! -d /var/lib/mumble-server ]; then
234
-		mkdir /var/lib/mumble-server
235
-	fi
236
-	cp /etc/ssl/certs/mumble.* /var/lib/mumble-server
237
-	cp /etc/ssl/private/mumble.key /var/lib/mumble-server
238
-	chown -R mumble-server:mumble-server /var/lib/mumble-server
228
+    # Check that the cert was created
229
+    if [ ! -f /etc/ssl/certs/mumble.crt ]; then
230
+        echo $'VoIP server certificate not created'
231
+        exit 57892
232
+    fi
233
+    if [ ! -f /etc/ssl/private/mumble.key ]; then
234
+        echo $'VoIP server key not created'
235
+        exit 57893
236
+    fi
237
+    if [ ! -d /var/lib/mumble-server ]; then
238
+        mkdir /var/lib/mumble-server
239
+    fi
240
+    cp /etc/ssl/certs/mumble.* /var/lib/mumble-server
241
+    cp /etc/ssl/private/mumble.key /var/lib/mumble-server
242
+    chown -R mumble-server:mumble-server /var/lib/mumble-server
239 243
 
240
-	sed -i "s|welcometext=.*|welcometext=\"<br />Welcome to $DEFAULT_DOMAIN_NAME <b>VoIP</b>.<br />Chat freely!<br />\"|g" /etc/mumble-server.ini
244
+    sed -i "s|welcometext=.*|welcometext=\"<br />Welcome to $DEFAULT_DOMAIN_NAME <b>VoIP</b>.<br />Chat freely!<br />\"|g" /etc/mumble-server.ini
241 245
 
242
-	if [[ $VOIP_SERVER_PASSWORD && $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
243
-		sed -i "s|serverpassword=.*|serverpassword=$VOIP_SERVER_PASSWORD|g" /etc/mumble-server.ini
244
-	fi
246
+    if [[ $VOIP_SERVER_PASSWORD && $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
247
+        sed -i "s|serverpassword=.*|serverpassword=$VOIP_SERVER_PASSWORD|g" /etc/mumble-server.ini
248
+    fi
245 249
 
246
-	sed -i 's|#autobanAttempts.*|autobanAttempts = 10|g' /etc/mumble-server.ini
247
-	sed -i 's|#autobanTimeframe.*|autobanTimeframe = 120|g' /etc/mumble-server.ini
248
-	sed -i 's|#autobanTime.*|autobanTime = 300|g' /etc/mumble-server.ini
249
-	sed -i 's|#sendversion=.*|sendversion=False|g' /etc/mumble-server.ini
250
-	sed -i 's|sendversion=.*|sendversion=False|g' /etc/mumble-server.ini
251
-	if ! grep -q "allowping" /etc/mumble-server.ini; then
252
-		echo 'allowping=False' >> /etc/mumble-server.ini
253
-	fi
254
-	sed -i 's|allowping=.*|allowping=False|g' /etc/mumble-server.ini
255
-	sed -i 's|#sslCert=.*|sslCert=/var/lib/mumble-server/mumble.crt|g' /etc/mumble-server.ini
256
-	sed -i 's|#sslKey=.*|sslKey=/var/lib/mumble-server/mumble.key|g' /etc/mumble-server.ini
257
-	sed -i 's|#certrequired=.*|certrequired=True|g' /etc/mumble-server.ini
258
-	sed -i 's|users=100|users=10|g' /etc/mumble-server.ini
259
-	sed -i 's|#channelnestinglimit=10|channelnestinglimit=10|g' /etc/mumble-server.ini
260
-	sed -i 's|#textmessagelength=.*|textmessagelength=1000|g' /etc/mumble-server.ini
261
-	sed -i 's|textmessagelength=.*|textmessagelength=1000|g' /etc/mumble-server.ini
262
-	sed -i 's|#imagemessagelength=.*|imagemessagelength=131072|g' /etc/mumble-server.ini
263
-	sed -i 's|#allowhtml=.*|allowhtml=False|g' /etc/mumble-server.ini
264
-	sed -i 's|allowhtml=.*|allowhtml=False|g' /etc/mumble-server.ini
265
-	sed -i "s|port=.*|port=${VOIP_PORT}|g" /etc/mumble-server.ini
250
+    sed -i 's|#autobanAttempts.*|autobanAttempts = 10|g' /etc/mumble-server.ini
251
+    sed -i 's|#autobanTimeframe.*|autobanTimeframe = 120|g' /etc/mumble-server.ini
252
+    sed -i 's|#autobanTime.*|autobanTime = 300|g' /etc/mumble-server.ini
253
+    sed -i 's|#sendversion=.*|sendversion=False|g' /etc/mumble-server.ini
254
+    sed -i 's|sendversion=.*|sendversion=False|g' /etc/mumble-server.ini
255
+    if ! grep -q "allowping" /etc/mumble-server.ini; then
256
+        echo 'allowping=False' >> /etc/mumble-server.ini
257
+    fi
258
+    sed -i 's|allowping=.*|allowping=False|g' /etc/mumble-server.ini
259
+    sed -i 's|#sslCert=.*|sslCert=/var/lib/mumble-server/mumble.crt|g' /etc/mumble-server.ini
260
+    sed -i 's|#sslKey=.*|sslKey=/var/lib/mumble-server/mumble.key|g' /etc/mumble-server.ini
261
+    sed -i 's|#certrequired=.*|certrequired=True|g' /etc/mumble-server.ini
262
+    sed -i 's|users=100|users=10|g' /etc/mumble-server.ini
263
+    sed -i 's|#channelnestinglimit=10|channelnestinglimit=10|g' /etc/mumble-server.ini
264
+    sed -i 's|#textmessagelength=.*|textmessagelength=1000|g' /etc/mumble-server.ini
265
+    sed -i 's|textmessagelength=.*|textmessagelength=1000|g' /etc/mumble-server.ini
266
+    sed -i 's|#imagemessagelength=.*|imagemessagelength=131072|g' /etc/mumble-server.ini
267
+    sed -i 's|#allowhtml=.*|allowhtml=False|g' /etc/mumble-server.ini
268
+    sed -i 's|allowhtml=.*|allowhtml=False|g' /etc/mumble-server.ini
269
+    sed -i "s|port=.*|port=${VOIP_PORT}|g" /etc/mumble-server.ini
266 270
 
267
-	VOIP_ONION_HOSTNAME=$(add_onion_service voip ${VOIP_PORT} ${VOIP_PORT})
268
-	if ! grep -q $"VoIP onion domain" $COMPLETION_FILE; then
269
-		echo "VoIP onion domain:$VOIP_ONION_HOSTNAME" >> $COMPLETION_FILE
270
-	fi
271
+    VOIP_ONION_HOSTNAME=$(add_onion_service voip ${VOIP_PORT} ${VOIP_PORT})
272
+    if ! grep -q $"VoIP onion domain" $COMPLETION_FILE; then
273
+        echo "VoIP onion domain:$VOIP_ONION_HOSTNAME" >> $COMPLETION_FILE
274
+    fi
271 275
 
272
-	systemctl restart mumble-server
276
+    systemctl restart mumble-server
273 277
 
274
-	if ! grep -q $"Mumble Server" /home/$MY_USERNAME/README; then
275
-		echo '' >> /home/$MY_USERNAME/README
276
-		echo '' >> /home/$MY_USERNAME/README
277
-		echo $'Mumble Server' >> /home/$MY_USERNAME/README
278
-		echo '=============' >> /home/$MY_USERNAME/README
279
-		echo $"Mumble onion domain:$VOIP_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
280
-		echo $'Mumble server username: mumble-server' >> /home/$MY_USERNAME/README
281
-		if [[ $SYSTEM_TYPE != "VARIANT_MESH" ]]; then
282
-			echo $"Mumble server password: $VOIP_SERVER_PASSWORD" >> /home/$MY_USERNAME/README
283
-		fi
284
-		echo '' >> /home/$MY_USERNAME/README
285
-		echo $'To connect to the Mumble server use your username and the server password shown above.' >> /home/$MY_USERNAME/README
286
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
287
-		chmod 600 /home/$MY_USERNAME/README
288
-	fi
278
+    if ! grep -q $"Mumble Server" /home/$MY_USERNAME/README; then
279
+        echo '' >> /home/$MY_USERNAME/README
280
+        echo '' >> /home/$MY_USERNAME/README
281
+        echo $'Mumble Server' >> /home/$MY_USERNAME/README
282
+        echo '=============' >> /home/$MY_USERNAME/README
283
+        echo $"Mumble onion domain:$VOIP_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
284
+        echo $'Mumble server username: mumble-server' >> /home/$MY_USERNAME/README
285
+        if [[ $SYSTEM_TYPE != "VARIANT_MESH" ]]; then
286
+            echo $"Mumble server password: $VOIP_SERVER_PASSWORD" >> /home/$MY_USERNAME/README
287
+        fi
288
+        echo '' >> /home/$MY_USERNAME/README
289
+        echo $'To connect to the Mumble server use your username and the server password shown above.' >> /home/$MY_USERNAME/README
290
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
291
+        chmod 600 /home/$MY_USERNAME/README
292
+    fi
289 293
 
290
-	function_check configure_firewall_for_voip
291
-	configure_firewall_for_voip
292
-	echo 'install_mumble' >> $COMPLETION_FILE
294
+    function_check configure_firewall_for_voip
295
+    configure_firewall_for_voip
296
+    echo 'install_mumble' >> $COMPLETION_FILE
293 297
 }
294 298
 
295 299
 # NOTE: deliberately no exit 0

+ 4
- 0
src/freedombone-app-rss View File

@@ -42,6 +42,10 @@ RSS_READER_PATH=/etc/share/tt-rss
42 42
 RSS_READER_GNUSOCIAL_REPO="https://github.com/bashrc/ttrss-gnusocial"
43 43
 RSS_READER_GNUSOCIAL_COMMIT='20b2535e3f2b0ddc0117b584bdcaa6bf7a2d9fa2'
44 44
 
45
+function change_password_rss {
46
+    echo -n ''
47
+}
48
+
45 49
 function get_mariadb_rss_admin_password {
46 50
     if [ -f /home/$MY_USERNAME/README ]; then
47 51
         if grep -q "RSS reader admin password" /home/$MY_USERNAME/README; then

+ 235
- 231
src/freedombone-app-searx View File

@@ -38,259 +38,263 @@ SEARX_ONION_HOSTNAME=
38 38
 SEARX_LOGIN_TEXT=$"Search engine login"
39 39
 SEARX_PASSWORD=
40 40
 
41
+function change_password_searx {
42
+    echo -n ''
43
+}
44
+
41 45
 function reconfigure_searx {
42
-	echo -n ''
46
+    echo -n ''
43 47
 }
44 48
 
45 49
 function upgrade_searx {
46
-	if ! grep -Fxq "install_searx" $COMPLETION_FILE; then
47
-		return
48
-	fi
49
-
50
-	set_repo_commit $SEARX_PATH/searx "Search engine commit" "$SEARX_COMMIT" $SEARX_REPO
51
-	if grep "Search engine key" $COMPLETION_FILE; then
52
-		if [ -f ${SEARX_PATH}/searx/searx/settings.yml ]; then
53
-			# note: this might change to a --tor option in a later version
54
-			if ! grep 'socks5://127.0.0.1:9050' ${SEARX_PATH}/searx/searx/settings.yml; then
55
-				echo 'outgoing: # communication with search engines' >> ${SEARX_PATH}/searx/searx/settings.yml
56
-				echo '    proxies:' >> ${SEARX_PATH}/searx/searx/settings.yml
57
-				echo '        http : socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
58
-				echo '        https: socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
59
-			fi
60
-			SEARX_SECRET_KEY=$(cat $COMPLETION_FILE | grep "Search engine key" | awk -F ':' '{print $2}')
61
-			sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings.yml
62
-			if [ -f /var/lib/tor/hidden_service_searx/hostname ]; then
63
-				SEARX_ONION_HOSTNAME=$(echo /var/lib/tor/hidden_service_searx/hostname)
64
-				sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings.yml
65
-			fi
66
-		fi
67
-	fi
50
+    if ! grep -Fxq "install_searx" $COMPLETION_FILE; then
51
+        return
52
+    fi
53
+
54
+    set_repo_commit $SEARX_PATH/searx "Search engine commit" "$SEARX_COMMIT" $SEARX_REPO
55
+    if grep "Search engine key" $COMPLETION_FILE; then
56
+        if [ -f ${SEARX_PATH}/searx/searx/settings.yml ]; then
57
+            # note: this might change to a --tor option in a later version
58
+            if ! grep 'socks5://127.0.0.1:9050' ${SEARX_PATH}/searx/searx/settings.yml; then
59
+                echo 'outgoing: # communication with search engines' >> ${SEARX_PATH}/searx/searx/settings.yml
60
+                echo '    proxies:' >> ${SEARX_PATH}/searx/searx/settings.yml
61
+                echo '        http : socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
62
+                echo '        https: socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
63
+            fi
64
+            SEARX_SECRET_KEY=$(cat $COMPLETION_FILE | grep "Search engine key" | awk -F ':' '{print $2}')
65
+            sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings.yml
66
+            if [ -f /var/lib/tor/hidden_service_searx/hostname ]; then
67
+                SEARX_ONION_HOSTNAME=$(echo /var/lib/tor/hidden_service_searx/hostname)
68
+                sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings.yml
69
+            fi
70
+        fi
71
+    fi
68 72
 }
69 73
 
70 74
 function backup_local_searx {
71
-	echo -n ''
75
+    echo -n ''
72 76
 }
73 77
 
74 78
 function restore_local_searx {
75
-	echo -n ''
79
+    echo -n ''
76 80
 }
77 81
 
78 82
 function backup_remote_searx {
79
-	echo -n ''
83
+    echo -n ''
80 84
 }
81 85
 
82 86
 function restore_remote_searx {
83
-	echo -n ''
87
+    echo -n ''
84 88
 }
85 89
 
86 90
 function remove_searx {
87
-	if ! grep -Fxq "install_searx" $COMPLETION_FILE; then
88
-		return
89
-	fi
90
-	systemctl stop searx
91
-	systemctl disable searx
92
-	rm /etc/systemd/system/searx.service
93
-	function_check remove_onion_service
94
-	remove_onion_service searx ${SEARX_ONION_PORT}
95
-	userdel -r searx
96
-	nginx_dissite searx
97
-	if [ -f /etc/nginx/sites-available/searx ]; then
98
-		rm /etc/nginx/sites-available/searx
99
-	fi
100
-	if [ -d ${SEARX_PATH}/searx ]; then
101
-		rm -rf ${SEARX_PATH}/searx
102
-	fi
103
-	sed -i '/install_searx/d' $COMPLETION_FILE
104
-	sed -i '/Search engine /d' $COMPLETION_FILE
91
+    if ! grep -Fxq "install_searx" $COMPLETION_FILE; then
92
+        return
93
+    fi
94
+    systemctl stop searx
95
+    systemctl disable searx
96
+    rm /etc/systemd/system/searx.service
97
+    function_check remove_onion_service
98
+    remove_onion_service searx ${SEARX_ONION_PORT}
99
+    userdel -r searx
100
+    nginx_dissite searx
101
+    if [ -f /etc/nginx/sites-available/searx ]; then
102
+        rm /etc/nginx/sites-available/searx
103
+    fi
104
+    if [ -d ${SEARX_PATH}/searx ]; then
105
+        rm -rf ${SEARX_PATH}/searx
106
+    fi
107
+    sed -i '/install_searx/d' $COMPLETION_FILE
108
+    sed -i '/Search engine /d' $COMPLETION_FILE
105 109
 }
106 110
 
107 111
 function install_searx {
108
-	# Note: currently socks5 outgoing proxies to other search engines does not work
109
-	if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
110
-		return
111
-	fi
112
-	if [ ! -d /etc/nginx ]; then
113
-		echo $'Webserver is not installed'
114
-		exit 62429
115
-	fi
116
-
117
-	if grep -Fxq "install_searx" $COMPLETION_FILE; then
118
-		return
119
-	fi
120
-
121
-	apt-get -y install python-pip libyaml-dev python-werkzeug python-babel python-lxml apache2-utils
122
-	apt-get -y install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev uwsgi uwsgi-plugin-python libapache2-mod-uwsgi
123
-
124
-	pip install --upgrade pip
125
-
126
-	pip install certifi
127
-	if [ ! "$?" = "0" ]; then
128
-		echo $'Failed to install certifi'
129
-		exit 737692
130
-	fi
131
-
132
-	pip install pyyaml
133
-	if [ ! "$?" = "0" ]; then
134
-		echo $'Failed to install pyyaml'
135
-		exit 469242
136
-	fi
137
-
138
-	pip install flask --upgrade
139
-	if [ ! "$?" = "0" ]; then
140
-		echo $'Failed to install flask'
141
-		exit 888575
142
-	fi
143
-
144
-	pip install flask_restless --upgrade
145
-	if [ ! "$?" = "0" ]; then
146
-		echo $'Failed to install flask_restless'
147
-		exit 54835
148
-	fi
149
-
150
-	pip install flask_babel --upgrade
151
-	if [ ! "$?" = "0" ]; then
152
-		echo $'Failed to install flask_babel'
153
-		exit 63738
154
-	fi
155
-
156
-	if [ ! -d $SEARX_PATH ]; then
157
-		mkdir -p $SEARX_PATH
158
-	fi
159
-
160
-	# clone the repo
161
-	cd $SEARX_PATH
162
-	function_check git_clone
163
-	git_clone $SEARX_REPO searx
164
-	git checkout $SEARX_COMMIT -b $SEARX_COMMIT
165
-	if ! grep -q "Search engine commit" $COMPLETION_FILE; then
166
-		echo "Search engine commit:$SEARX_COMMIT" >> $COMPLETION_FILE
167
-	else
168
-		sed -i "s/Search engine commit.*/Search engine commit:$SEARX_COMMIT/g" $COMPLETION_FILE
169
-	fi
170
-
171
-	# create an onion service
172
-	SEARX_ONION_HOSTNAME=$(add_onion_service searx 80 ${SEARX_ONION_PORT})
173
-	if ! grep "Search engine onion domain" $COMPLETION_FILE; then
174
-		echo "Search engine onion domain:${SEARX_ONION_HOSTNAME}" >> $COMPLETION_FILE
175
-	else
176
-		sed -i "s|Search engine onion domain.*|Search engine onion domain:${SEARX_ONION_HOSTNAME}|g" $COMPLETION_FILE
177
-	fi
178
-
179
-	# an unprivileged user to run as
180
-	useradd -d ${SEARX_PATH}/searx/ -s /bin/false searx
181
-	adduser searx debian-tor
182
-
183
-	# daemon
184
-	echo '[Unit]' > /etc/systemd/system/searx.service
185
-	echo 'Description=Searx (search engine)' >> /etc/systemd/system/searx.service
186
-	echo 'After=syslog.target' >> /etc/systemd/system/searx.service
187
-	echo 'After=network.target' >> /etc/systemd/system/searx.service
188
-	echo '' >> /etc/systemd/system/searx.service
189
-	echo '[Service]' >> /etc/systemd/system/searx.service
190
-	echo 'Type=simple' >> /etc/systemd/system/searx.service
191
-	echo 'User=searx' >> /etc/systemd/system/searx.service
192
-	echo 'Group=searx' >> /etc/systemd/system/searx.service
193
-	echo "WorkingDirectory=${SEARX_PATH}/searx" >> /etc/systemd/system/searx.service
194
-	echo "ExecStart=/usr/bin/python ${SEARX_PATH}/searx/searx/webapp.py" >> /etc/systemd/system/searx.service
195
-	echo 'Restart=always' >> /etc/systemd/system/searx.service
196
-	echo 'Environment="USER=searx"' >> /etc/systemd/system/searx.service
197
-	echo '' >> /etc/systemd/system/searx.service
198
-	echo '[Install]' >> /etc/systemd/system/searx.service
199
-	echo 'WantedBy=multi-user.target' >> /etc/systemd/system/searx.service
200
-
201
-	# create a webserver file
202
-	echo 'server {' > /etc/nginx/sites-available/searx
203
-	echo "    listen 127.0.0.1:${SEARX_ONION_PORT} default_server;" >> /etc/nginx/sites-available/searx
204
-	echo "    root ${SEARX_PATH}/searx;" >> /etc/nginx/sites-available/searx
205
-	echo "    server_name ${SEARX_ONION_HOSTNAME};" >> /etc/nginx/sites-available/searx
206
-	echo '    access_log off;' >> /etc/nginx/sites-available/searx
207
-	echo "    error_log /var/log/searx_error.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/searx
208
-	echo '' >> /etc/nginx/sites-available/searx
209
-	function_check nginx_limits
210
-	nginx_limits searx '1M'
211
-	function_check nginx_disable_sniffing
212
-	nginx_disable_sniffing searx
213
-	echo '    add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/searx
214
-	echo '' >> /etc/nginx/sites-available/searx
215
-	echo '    location / {' >> /etc/nginx/sites-available/searx
216
-	echo '        proxy_pass http://localhost:8888;' >> /etc/nginx/sites-available/searx
217
-	echo '        proxy_set_header Host $host;' >> /etc/nginx/sites-available/searx
218
-	echo '        proxy_set_header X-Real-IP $remote_addr;' >> /etc/nginx/sites-available/searx
219
-	echo '        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' >> /etc/nginx/sites-available/searx
220
-	echo '        proxy_set_header X-Remote-Port $remote_port;' >> /etc/nginx/sites-available/searx
221
-	echo '        proxy_set_header X-Forwarded-Proto $scheme;' >> /etc/nginx/sites-available/searx
222
-	echo '        proxy_redirect off;' >> /etc/nginx/sites-available/searx
223
-
224
-	echo "        auth_basic \"${SEARX_LOGIN_TEXT}\";" >> /etc/nginx/sites-available/searx
225
-	echo '        auth_basic_user_file /etc/nginx/.htpasswd;' >> /etc/nginx/sites-available/searx
226
-	echo '    }' >> /etc/nginx/sites-available/searx
227
-	echo '' >> /etc/nginx/sites-available/searx
228
-	echo '    fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/searx
229
-	echo '' >> /etc/nginx/sites-available/searx
230
-	echo '    error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/searx
231
-	echo '    error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/searx
232
-	echo '' >> /etc/nginx/sites-available/searx
233
-	echo '    location = /robots.txt {' >> /etc/nginx/sites-available/searx
234
-	echo '        allow all;' >> /etc/nginx/sites-available/searx
235
-	echo '        log_not_found off;' >> /etc/nginx/sites-available/searx
236
-	echo '        access_log off;' >> /etc/nginx/sites-available/searx
237
-	echo '    }' >> /etc/nginx/sites-available/searx
238
-	echo '}' >> /etc/nginx/sites-available/searx
239
-
240
-	# replace the secret key
241
-	if ! grep "Search engine key" $COMPLETION_FILE; then
242
-		SEARX_SECRET_KEY="$(create_password 30)"
243
-		echo "Search engine key:${SEARX_SECRET_KEY}" >> $COMPLETION_FILE
244
-	else
245
-		SEARX_SECRET_KEY=$(cat $COMPLETION_FILE | grep "Search engine key" | awk -F ':' '{print $2}')
246
-	fi
247
-	sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings.yml
248
-	sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings_robot.yml
249
-	sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings.yml
250
-	sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings_robot.yml
251
-
252
-	# note: this might change to a --tor option in a later version
253
-	if ! grep 'socks5://127.0.0.1:9050' ${SEARX_PATH}/searx/searx/settings.yml; then
254
-		echo 'outgoing: # communication with search engines' >> ${SEARX_PATH}/searx/searx/settings.yml
255
-		echo '    proxies:' >> ${SEARX_PATH}/searx/searx/settings.yml
256
-		echo '        http : socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
257
-		echo '        https: socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
258
-	fi
259
-
260
-	chown -R searx:searx ${SEARX_PATH}/searx
261
-
262
-	# enable the site
263
-	nginx_ensite searx
264
-
265
-	# restart the web server
266
-	systemctl restart php5-fpm
267
-	systemctl restart nginx
268
-
269
-	# start the daemon
270
-	systemctl enable searx.service
271
-	systemctl daemon-reload
272
-	systemctl start searx.service
273
-
274
-	if ! grep -q "Your search engine password is" /home/$MY_USERNAME/README; then
275
-		if [ ${#SEARX_PASSWORD} -lt 8 ]; then
276
-			if [ -f $IMAGE_PASSWORD_FILE ]; then
277
-				SEARX_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
278
-			else
279
-				SEARX_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
280
-			fi
281
-		fi
282
-		echo "$SEARX_PASSWORD" | htpasswd -i -s -c /etc/nginx/.htpasswd $MY_USERNAME
283
-		echo '' >> /home/$MY_USERNAME/README
284
-		echo '' >> /home/$MY_USERNAME/README
285
-		echo $'Search Engine' >> /home/$MY_USERNAME/README
286
-		echo '=============' >> /home/$MY_USERNAME/README
287
-		echo $"Search engine onion domain: ${SEARX_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
288
-		echo $"Your search engine password is: $SEARX_PASSWORD" >> /home/$MY_USERNAME/README
289
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
290
-		chmod 600 /home/$MY_USERNAME/README
291
-	fi
292
-
293
-	echo 'install_searx' >> $COMPLETION_FILE
112
+    # Note: currently socks5 outgoing proxies to other search engines does not work
113
+    if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
114
+        return
115
+    fi
116
+    if [ ! -d /etc/nginx ]; then
117
+        echo $'Webserver is not installed'
118
+        exit 62429
119
+    fi
120
+
121
+    if grep -Fxq "install_searx" $COMPLETION_FILE; then
122
+        return
123
+    fi
124
+
125
+    apt-get -y install python-pip libyaml-dev python-werkzeug python-babel python-lxml apache2-utils
126
+    apt-get -y install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev uwsgi uwsgi-plugin-python libapache2-mod-uwsgi
127
+
128
+    pip install --upgrade pip
129
+
130
+    pip install certifi
131
+    if [ ! "$?" = "0" ]; then
132
+        echo $'Failed to install certifi'
133
+        exit 737692
134
+    fi
135
+
136
+    pip install pyyaml
137
+    if [ ! "$?" = "0" ]; then
138
+        echo $'Failed to install pyyaml'
139
+        exit 469242
140
+    fi
141
+
142
+    pip install flask --upgrade
143
+    if [ ! "$?" = "0" ]; then
144
+        echo $'Failed to install flask'
145
+        exit 888575
146
+    fi
147
+
148
+    pip install flask_restless --upgrade
149
+    if [ ! "$?" = "0" ]; then
150
+        echo $'Failed to install flask_restless'
151
+        exit 54835
152
+    fi
153
+
154
+    pip install flask_babel --upgrade
155
+    if [ ! "$?" = "0" ]; then
156
+        echo $'Failed to install flask_babel'
157
+        exit 63738
158
+    fi
159
+
160
+    if [ ! -d $SEARX_PATH ]; then
161
+        mkdir -p $SEARX_PATH
162
+    fi
163
+
164
+    # clone the repo
165
+    cd $SEARX_PATH
166
+    function_check git_clone
167
+    git_clone $SEARX_REPO searx
168
+    git checkout $SEARX_COMMIT -b $SEARX_COMMIT
169
+    if ! grep -q "Search engine commit" $COMPLETION_FILE; then
170
+        echo "Search engine commit:$SEARX_COMMIT" >> $COMPLETION_FILE
171
+    else
172
+        sed -i "s/Search engine commit.*/Search engine commit:$SEARX_COMMIT/g" $COMPLETION_FILE
173
+    fi
174
+
175
+    # create an onion service
176
+    SEARX_ONION_HOSTNAME=$(add_onion_service searx 80 ${SEARX_ONION_PORT})
177
+    if ! grep "Search engine onion domain" $COMPLETION_FILE; then
178
+        echo "Search engine onion domain:${SEARX_ONION_HOSTNAME}" >> $COMPLETION_FILE
179
+    else
180
+        sed -i "s|Search engine onion domain.*|Search engine onion domain:${SEARX_ONION_HOSTNAME}|g" $COMPLETION_FILE
181
+    fi
182
+
183
+    # an unprivileged user to run as
184
+    useradd -d ${SEARX_PATH}/searx/ -s /bin/false searx
185
+    adduser searx debian-tor
186
+
187
+    # daemon
188
+    echo '[Unit]' > /etc/systemd/system/searx.service
189
+    echo 'Description=Searx (search engine)' >> /etc/systemd/system/searx.service
190
+    echo 'After=syslog.target' >> /etc/systemd/system/searx.service
191
+    echo 'After=network.target' >> /etc/systemd/system/searx.service
192
+    echo '' >> /etc/systemd/system/searx.service
193
+    echo '[Service]' >> /etc/systemd/system/searx.service
194
+    echo 'Type=simple' >> /etc/systemd/system/searx.service
195
+    echo 'User=searx' >> /etc/systemd/system/searx.service
196
+    echo 'Group=searx' >> /etc/systemd/system/searx.service
197
+    echo "WorkingDirectory=${SEARX_PATH}/searx" >> /etc/systemd/system/searx.service
198
+    echo "ExecStart=/usr/bin/python ${SEARX_PATH}/searx/searx/webapp.py" >> /etc/systemd/system/searx.service
199
+    echo 'Restart=always' >> /etc/systemd/system/searx.service
200
+    echo 'Environment="USER=searx"' >> /etc/systemd/system/searx.service
201
+    echo '' >> /etc/systemd/system/searx.service
202
+    echo '[Install]' >> /etc/systemd/system/searx.service
203
+    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/searx.service
204
+
205
+    # create a webserver file
206
+    echo 'server {' > /etc/nginx/sites-available/searx
207
+    echo "    listen 127.0.0.1:${SEARX_ONION_PORT} default_server;" >> /etc/nginx/sites-available/searx
208
+    echo "    root ${SEARX_PATH}/searx;" >> /etc/nginx/sites-available/searx
209
+    echo "    server_name ${SEARX_ONION_HOSTNAME};" >> /etc/nginx/sites-available/searx
210
+    echo '    access_log off;' >> /etc/nginx/sites-available/searx
211
+    echo "    error_log /var/log/searx_error.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/searx
212
+    echo '' >> /etc/nginx/sites-available/searx
213
+    function_check nginx_limits
214
+    nginx_limits searx '1M'
215
+    function_check nginx_disable_sniffing
216
+    nginx_disable_sniffing searx
217
+    echo '    add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/searx
218
+    echo '' >> /etc/nginx/sites-available/searx
219
+    echo '    location / {' >> /etc/nginx/sites-available/searx
220
+    echo '        proxy_pass http://localhost:8888;' >> /etc/nginx/sites-available/searx
221
+    echo '        proxy_set_header Host $host;' >> /etc/nginx/sites-available/searx
222
+    echo '        proxy_set_header X-Real-IP $remote_addr;' >> /etc/nginx/sites-available/searx
223
+    echo '        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;' >> /etc/nginx/sites-available/searx
224
+    echo '        proxy_set_header X-Remote-Port $remote_port;' >> /etc/nginx/sites-available/searx
225
+    echo '        proxy_set_header X-Forwarded-Proto $scheme;' >> /etc/nginx/sites-available/searx
226
+    echo '        proxy_redirect off;' >> /etc/nginx/sites-available/searx
227
+
228
+    echo "        auth_basic \"${SEARX_LOGIN_TEXT}\";" >> /etc/nginx/sites-available/searx
229
+    echo '        auth_basic_user_file /etc/nginx/.htpasswd;' >> /etc/nginx/sites-available/searx
230
+    echo '    }' >> /etc/nginx/sites-available/searx
231
+    echo '' >> /etc/nginx/sites-available/searx
232
+    echo '    fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/searx
233
+    echo '' >> /etc/nginx/sites-available/searx
234
+    echo '    error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/searx
235
+    echo '    error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/searx
236
+    echo '' >> /etc/nginx/sites-available/searx
237
+    echo '    location = /robots.txt {' >> /etc/nginx/sites-available/searx
238
+    echo '        allow all;' >> /etc/nginx/sites-available/searx
239
+    echo '        log_not_found off;' >> /etc/nginx/sites-available/searx
240
+    echo '        access_log off;' >> /etc/nginx/sites-available/searx
241
+    echo '    }' >> /etc/nginx/sites-available/searx
242
+    echo '}' >> /etc/nginx/sites-available/searx
243
+
244
+    # replace the secret key
245
+    if ! grep "Search engine key" $COMPLETION_FILE; then
246
+        SEARX_SECRET_KEY="$(create_password 30)"
247
+        echo "Search engine key:${SEARX_SECRET_KEY}" >> $COMPLETION_FILE
248
+    else
249
+        SEARX_SECRET_KEY=$(cat $COMPLETION_FILE | grep "Search engine key" | awk -F ':' '{print $2}')
250
+    fi
251
+    sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings.yml
252
+    sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings_robot.yml
253
+    sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings.yml
254
+    sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings_robot.yml
255
+
256
+    # note: this might change to a --tor option in a later version
257
+    if ! grep 'socks5://127.0.0.1:9050' ${SEARX_PATH}/searx/searx/settings.yml; then
258
+        echo 'outgoing: # communication with search engines' >> ${SEARX_PATH}/searx/searx/settings.yml
259
+        echo '    proxies:' >> ${SEARX_PATH}/searx/searx/settings.yml
260
+        echo '        http : socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
261
+        echo '        https: socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
262
+    fi
263
+
264
+    chown -R searx:searx ${SEARX_PATH}/searx
265
+
266
+    # enable the site
267
+    nginx_ensite searx
268
+
269
+    # restart the web server
270
+    systemctl restart php5-fpm
271
+    systemctl restart nginx
272
+
273
+    # start the daemon
274
+    systemctl enable searx.service
275
+    systemctl daemon-reload
276
+    systemctl start searx.service
277
+
278
+    if ! grep -q "Your search engine password is" /home/$MY_USERNAME/README; then
279
+        if [ ${#SEARX_PASSWORD} -lt 8 ]; then
280
+            if [ -f $IMAGE_PASSWORD_FILE ]; then
281
+                SEARX_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
282
+            else
283
+                SEARX_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
284
+            fi
285
+        fi
286
+        echo "$SEARX_PASSWORD" | htpasswd -i -s -c /etc/nginx/.htpasswd $MY_USERNAME
287
+        echo '' >> /home/$MY_USERNAME/README
288
+        echo '' >> /home/$MY_USERNAME/README
289
+        echo $'Search Engine' >> /home/$MY_USERNAME/README
290
+        echo '=============' >> /home/$MY_USERNAME/README
291
+        echo $"Search engine onion domain: ${SEARX_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
292
+        echo $"Your search engine password is: $SEARX_PASSWORD" >> /home/$MY_USERNAME/README
293
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
294
+        chmod 600 /home/$MY_USERNAME/README
295
+    fi
296
+
297
+    echo 'install_searx' >> $COMPLETION_FILE
294 298
 }
295 299
 
296 300
 # NOTE: deliberately no exit 0

+ 373
- 369
src/freedombone-app-sip View File

@@ -37,416 +37,420 @@ VOIP_TURN_PORT=3478
37 37
 VOIP_TURN_TLS_PORT=5349
38 38
 VOIP_TURN_NONCE=
39 39
 
40
+function change_password_sip {
41
+    echo -n ''
42
+}
43
+
40 44
 function reconfigure_sip {
41
-	echo -n ''
45
+    echo -n ''
42 46
 }
43 47
 
44 48
 function upgrade_sip {
45
-	# remove the original sipwitch daemon if it exists
46
-	if [ -f /etc/init.d/sipwitch ]; then
47
-		rm -f /etc/init.d/sipwitch
48
-	fi
49
+    # remove the original sipwitch daemon if it exists
50
+    if [ -f /etc/init.d/sipwitch ]; then
51
+        rm -f /etc/init.d/sipwitch
52
+    fi
49 53
 }
50 54
 
51 55
 function backup_local_sip {
52
-	if [ -f /etc/sipwitch.conf ]; then
53
-		echo $"Backing up SIP settings"
54
-		temp_backup_dir=/root/tempsipbackup
55
-		if [ ! -d $temp_backup_dir ]; then
56
-			mkdir -p $temp_backup_dir
57
-		fi
58
-		cp -f /etc/sipwitch.conf $temp_backup_dir
59
-		backup_directory_to_usb $temp_backup_dir sip
60
-		echo $"SIP settings backup complete"
61
-	fi
56
+    if [ -f /etc/sipwitch.conf ]; then
57
+        echo $"Backing up SIP settings"
58
+        temp_backup_dir=/root/tempsipbackup
59
+        if [ ! -d $temp_backup_dir ]; then
60
+            mkdir -p $temp_backup_dir
61
+        fi
62
+        cp -f /etc/sipwitch.conf $temp_backup_dir
63
+        backup_directory_to_usb $temp_backup_dir sip
64
+        echo $"SIP settings backup complete"
65
+    fi
62 66
 }
63 67
 
64 68
 function restore_local_sip {
65
-	if [ -d $USB_MOUNT/backup/sip ]; then
66
-		echo $"Restoring SIP settings"
67
-		temp_restore_dir=/root/tempsip
68
-		function_check restore_directory_from_usb
69
-		restore_directory_from_usb $temp_restore_dir sip
70
-		cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
71
-		if [ ! "$?" = "0" ]; then
72
-			rm -rf $temp_restore_dir
73
-			function_check set_user_permissions
74
-			set_user_permissions
75
-			backup_unmount_drive
76
-			exit 3679
77
-		fi
78
-		rm -rf $temp_restore_dir
79
-		service sipwitch restart
80
-		echo $"Restore of SIP settings complete"
81
-	fi
69
+    if [ -d $USB_MOUNT/backup/sip ]; then
70
+        echo $"Restoring SIP settings"
71
+        temp_restore_dir=/root/tempsip
72
+        function_check restore_directory_from_usb
73
+        restore_directory_from_usb $temp_restore_dir sip
74
+        cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
75
+        if [ ! "$?" = "0" ]; then
76
+            rm -rf $temp_restore_dir
77
+            function_check set_user_permissions
78
+            set_user_permissions
79
+            backup_unmount_drive
80
+            exit 3679
81
+        fi
82
+        rm -rf $temp_restore_dir
83
+        service sipwitch restart
84
+        echo $"Restore of SIP settings complete"
85
+    fi
82 86
 }
83 87
 
84 88
 function backup_remote_sip {
85
-	if [ -f /etc/sipwitch.conf ]; then
86
-		echo $"Backing up SIP settings"
87
-		temp_backup_dir=/root/tempsipbackup
88
-		if [ ! -d $temp_backup_dir ]; then
89
-			mkdir -p $temp_backup_dir
90
-		fi
91
-		cp -f /etc/sipwitch.conf $temp_backup_dir
92
-		backup_directory_to_friend $temp_backup_dir sip
93
-		echo $"Backup SIP settings complete"
94
-	fi
89
+    if [ -f /etc/sipwitch.conf ]; then
90
+        echo $"Backing up SIP settings"
91
+        temp_backup_dir=/root/tempsipbackup
92
+        if [ ! -d $temp_backup_dir ]; then
93
+            mkdir -p $temp_backup_dir
94
+        fi
95
+        cp -f /etc/sipwitch.conf $temp_backup_dir
96
+        backup_directory_to_friend $temp_backup_dir sip
97
+        echo $"Backup SIP settings complete"
98
+    fi
95 99
 }
96 100
 
97 101
 function restore_remote_sip {
98
-	echo -n ''
102
+    echo -n ''
99 103
 }
100 104
 
101 105
 function remove_sip {
102
-	if ! grep -Fxq "install_sip" $COMPLETION_FILE; then
103
-		return
104
-	fi
105
-	iptables -D INPUT -p udp --dport $VOIP_TURN_PORT -j ACCEPT
106
-	iptables -D INPUT -p tcp --dport $VOIP_TURN_PORT -j ACCEPT
107
-	iptables -D INPUT -p tcp --dport $VOIP_TURN_TLS_PORT -j ACCEPT
108
-	iptables -D INPUT -p udp --dport $SIP_PORT -j ACCEPT
109
-	iptables -D INPUT -p tcp --dport $SIP_PORT -j ACCEPT
110
-	iptables -D INPUT -p udp --dport $SIP_TLS_PORT -j ACCEPT
111
-	iptables -D INPUT -p tcp --dport $SIP_TLS_PORT -j ACCEPT
112
-	function_check save_firewall_settings
113
-	save_firewall_settings
114
-
115
-	function_check remove_onion_service
116
-	remove_onion_service sip ${SIP_PORT}
117
-
118
-	apt-get -y remove --purge sipwitch
119
-	apt-get -y remove --purge turnserver
120
-	if [ -f /etc/sipwitch.conf ]; then
121
-		rm /etc/sipwitch.conf
122
-	fi
123
-	if [ -d /etc/turnserver ]; then
124
-		rm -rf /etc/turnserver
125
-	fi
126
-	sed -i '/install_sip/d' $COMPLETION_FILE
127
-	sed -i '/configure_firewall_for_voip_turn/d' $COMPLETION_FILE
128
-	sed -i '/configure_firewall_for_sip4/d' $COMPLETION_FILE
106
+    if ! grep -Fxq "install_sip" $COMPLETION_FILE; then
107
+        return
108
+    fi
109
+    iptables -D INPUT -p udp --dport $VOIP_TURN_PORT -j ACCEPT
110
+    iptables -D INPUT -p tcp --dport $VOIP_TURN_PORT -j ACCEPT
111
+    iptables -D INPUT -p tcp --dport $VOIP_TURN_TLS_PORT -j ACCEPT
112
+    iptables -D INPUT -p udp --dport $SIP_PORT -j ACCEPT
113
+    iptables -D INPUT -p tcp --dport $SIP_PORT -j ACCEPT
114
+    iptables -D INPUT -p udp --dport $SIP_TLS_PORT -j ACCEPT
115
+    iptables -D INPUT -p tcp --dport $SIP_TLS_PORT -j ACCEPT
116
+    function_check save_firewall_settings
117
+    save_firewall_settings
118
+
119
+    function_check remove_onion_service
120
+    remove_onion_service sip ${SIP_PORT}
121
+
122
+    apt-get -y remove --purge sipwitch
123
+    apt-get -y remove --purge turnserver
124
+    if [ -f /etc/sipwitch.conf ]; then
125
+        rm /etc/sipwitch.conf
126
+    fi
127
+    if [ -d /etc/turnserver ]; then
128
+        rm -rf /etc/turnserver
129
+    fi
130
+    sed -i '/install_sip/d' $COMPLETION_FILE
131
+    sed -i '/configure_firewall_for_voip_turn/d' $COMPLETION_FILE
132
+    sed -i '/configure_firewall_for_sip4/d' $COMPLETION_FILE
129 133
 }
130 134
 
131 135
 function configure_firewall_for_voip_turn {
132
-	if grep -Fxq "configure_firewall_for_voip_turn" $COMPLETION_FILE; then
133
-		return
134
-	fi
135
-	if [[ $ONION_ONLY != "no" ]]; then
136
-		return
137
-	fi
138
-	iptables -A INPUT -p udp --dport $VOIP_TURN_PORT -j ACCEPT
139
-	iptables -A INPUT -p tcp --dport $VOIP_TURN_PORT -j ACCEPT
140
-	iptables -A INPUT -p tcp --dport $VOIP_TURN_TLS_PORT -j ACCEPT
141
-	function_check save_firewall_settings
142
-	save_firewall_settings
143
-
144
-	OPEN_PORTS+=("TURN     $VOIP_TURN_PORT")
145
-	OPEN_PORTS+=("TURN TLS $VOIP_TURN_TLS_PORT")
146
-	echo 'configure_firewall_for_voip_turn' >> $COMPLETION_FILE
136
+    if grep -Fxq "configure_firewall_for_voip_turn" $COMPLETION_FILE; then
137
+        return
138
+    fi
139
+    if [[ $ONION_ONLY != "no" ]]; then
140
+        return
141
+    fi
142
+    iptables -A INPUT -p udp --dport $VOIP_TURN_PORT -j ACCEPT
143
+    iptables -A INPUT -p tcp --dport $VOIP_TURN_PORT -j ACCEPT
144
+    iptables -A INPUT -p tcp --dport $VOIP_TURN_TLS_PORT -j ACCEPT
145
+    function_check save_firewall_settings
146
+    save_firewall_settings
147
+
148
+    OPEN_PORTS+=("TURN     $VOIP_TURN_PORT")
149
+    OPEN_PORTS+=("TURN TLS $VOIP_TURN_TLS_PORT")
150
+    echo 'configure_firewall_for_voip_turn' >> $COMPLETION_FILE
147 151
 }
148 152
 
149 153
 
150 154
 function configure_firewall_for_sip4 {
151
-	if grep -Fxq "configure_firewall_for_sip4" $COMPLETION_FILE; then
152
-		return
153
-	fi
154
-	if [[ $ONION_ONLY != "no" ]]; then
155
-		return
156
-	fi
157
-	iptables -A INPUT -p udp --dport $SIP_PORT -j ACCEPT
158
-	iptables -A INPUT -p tcp --dport $SIP_PORT -j ACCEPT
159
-	iptables -A INPUT -p udp --dport $SIP_TLS_PORT -j ACCEPT
160
-	iptables -A INPUT -p tcp --dport $SIP_TLS_PORT -j ACCEPT
161
-	function_check save_firewall_settings
162
-	save_firewall_settings
163
-
164
-	OPEN_PORTS+=("SIP      $SIP_PORT")
165
-	OPEN_PORTS+=("SIP TLS  $SIP_TLS_PORT")
166
-	echo 'configure_firewall_for_sip4' >> $COMPLETION_FILE
155
+    if grep -Fxq "configure_firewall_for_sip4" $COMPLETION_FILE; then
156
+        return
157
+    fi
158
+    if [[ $ONION_ONLY != "no" ]]; then
159
+        return
160
+    fi
161
+    iptables -A INPUT -p udp --dport $SIP_PORT -j ACCEPT
162
+    iptables -A INPUT -p tcp --dport $SIP_PORT -j ACCEPT
163
+    iptables -A INPUT -p udp --dport $SIP_TLS_PORT -j ACCEPT
164
+    iptables -A INPUT -p tcp --dport $SIP_TLS_PORT -j ACCEPT
165
+    function_check save_firewall_settings
166
+    save_firewall_settings
167
+
168
+    OPEN_PORTS+=("SIP      $SIP_PORT")
169
+    OPEN_PORTS+=("SIP TLS  $SIP_TLS_PORT")
170
+    echo 'configure_firewall_for_sip4' >> $COMPLETION_FILE
167 171
 }
168 172
 
169 173
 function get_sip_server_password {
170
-	if [ -f /home/$MY_USERNAME/README ]; then
171
-		if grep -q "SIP server password" /home/$MY_USERNAME/README; then
172
-			if [ ! $SIP_SERVER_PASSWORD ]; then
173
-				SIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "SIP server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
174
-			fi
175
-		fi
176
-	fi
174
+    if [ -f /home/$MY_USERNAME/README ]; then
175
+        if grep -q "SIP server password" /home/$MY_USERNAME/README; then
176
+            if [ ! $SIP_SERVER_PASSWORD ]; then
177
+                SIP_SERVER_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "SIP server password" | awk -F ':' '{print $2}' | sed 's/^ *//')
178
+            fi
179
+        fi
180
+    fi
177 181
 }
178 182
 
179 183
 function update_sipwitch_daemon {
180
-	if [ ! -f /etc/init.d/sipwitch ]; then
181
-		return
182
-	fi
183
-	service sipwitch stop
184
-
185
-	# remove the original sipwitch daemon if it exists
186
-	if [ -f /etc/init.d/sipwitch ]; then
187
-		rm -f /etc/init.d/sipwitch
188
-	fi
189
-
190
-	# daemon
191
-	echo '[Unit]' > /etc/systemd/system/sipwitch.service
192
-	echo 'Description=GNU SIP Witch, a SIP telephony service daemon.' >> /etc/systemd/system/sipwitch.service
193
-	echo 'After=network.target' >> /etc/systemd/system/sipwitch.service
194
-	echo '' >> /etc/systemd/system/sipwitch.service
195
-	echo '[Service]' >> /etc/systemd/system/sipwitch.service
196
-	echo 'Type=simple' >> /etc/systemd/system/sipwitch.service
197
-	echo 'Group=sipwitch' >> /etc/systemd/system/sipwitch.service
198
-	echo 'PIDFile=/var/run/sipwitch/pidfile' >> /etc/systemd/system/sipwitch.service
199
-	echo 'EnvironmentFile=-/etc/conf.d/sipwitch' >> /etc/systemd/system/sipwitch.service
200
-	echo 'EnvironmentFile=-/etc/sipwitch.conf' >> /etc/systemd/system/sipwitch.service
201
-	echo 'EnvironmentFile=-/etc/default/sipwitch' >> /etc/systemd/system/sipwitch.service
202
-	echo 'ExecStartPre=-/bin/rm -f /var/run/sipwitch/control' >> /etc/systemd/system/sipwitch.service
203
-	echo "ExecStart=/usr/sbin/sipw -f \$OPTIONS -P$SIP_PORT" >> /etc/systemd/system/sipwitch.service
204
-	echo 'Restart=always' >> /etc/systemd/system/sipwitch.service
205
-	echo 'NotifyAccess=main' >> /etc/systemd/system/sipwitch.service
206
-	echo '' >> /etc/systemd/system/sipwitch.service
207
-	echo '[Install]' >> /etc/systemd/system/sipwitch.service
208
-	echo 'WantedBy=multi-user.target' >> /etc/systemd/system/sipwitch.service
209
-
210
-	systemctl enable sipwitch
211
-	systemctl daemon-reload
212
-	systemctl start sipwitch
184
+    if [ ! -f /etc/init.d/sipwitch ]; then
185
+        return
186
+    fi
187
+    service sipwitch stop
188
+
189
+    # remove the original sipwitch daemon if it exists
190
+    if [ -f /etc/init.d/sipwitch ]; then
191
+        rm -f /etc/init.d/sipwitch
192
+    fi
193
+
194
+    # daemon
195
+    echo '[Unit]' > /etc/systemd/system/sipwitch.service
196
+    echo 'Description=GNU SIP Witch, a SIP telephony service daemon.' >> /etc/systemd/system/sipwitch.service
197
+    echo 'After=network.target' >> /etc/systemd/system/sipwitch.service
198
+    echo '' >> /etc/systemd/system/sipwitch.service
199
+    echo '[Service]' >> /etc/systemd/system/sipwitch.service
200
+    echo 'Type=simple' >> /etc/systemd/system/sipwitch.service
201
+    echo 'Group=sipwitch' >> /etc/systemd/system/sipwitch.service
202
+    echo 'PIDFile=/var/run/sipwitch/pidfile' >> /etc/systemd/system/sipwitch.service
203
+    echo 'EnvironmentFile=-/etc/conf.d/sipwitch' >> /etc/systemd/system/sipwitch.service
204
+    echo 'EnvironmentFile=-/etc/sipwitch.conf' >> /etc/systemd/system/sipwitch.service
205
+    echo 'EnvironmentFile=-/etc/default/sipwitch' >> /etc/systemd/system/sipwitch.service
206
+    echo 'ExecStartPre=-/bin/rm -f /var/run/sipwitch/control' >> /etc/systemd/system/sipwitch.service
207
+    echo "ExecStart=/usr/sbin/sipw -f \$OPTIONS -P$SIP_PORT" >> /etc/systemd/system/sipwitch.service
208
+    echo 'Restart=always' >> /etc/systemd/system/sipwitch.service
209
+    echo 'NotifyAccess=main' >> /etc/systemd/system/sipwitch.service
210
+    echo '' >> /etc/systemd/system/sipwitch.service
211
+    echo '[Install]' >> /etc/systemd/system/sipwitch.service
212
+    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/sipwitch.service
213
+
214
+    systemctl enable sipwitch
215
+    systemctl daemon-reload
216
+    systemctl start sipwitch
213 217
 }
214 218
 
215 219
 function install_sip_main {
216
-	if grep -Fxq "install_sip_main" $COMPLETION_FILE; then
217
-		return
218
-	fi
219
-
220
-	apt-get -y install sipwitch
221
-
222
-	function_check get_sip_server_password
223
-	get_sip_server_password
224
-	if [ ! $SIP_SERVER_PASSWORD ]; then
225
-		if [ -f $IMAGE_PASSWORD_FILE ]; then
226
-			SIP_SERVER_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
227
-		else
228
-			SIP_SERVER_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
229
-		fi
230
-	fi
231
-
232
-	echo '<?xml version="1.0"?>' > /etc/sipwitch.conf
233
-	echo '<sipwitch>' >> /etc/sipwitch.conf
234
-	echo '<provision>' >> /etc/sipwitch.conf
235
-
236
-	echo "<user id=\"$MY_USERNAME\">" >> /etc/sipwitch.conf
237
-	echo '<extension>201</extension>' >> /etc/sipwitch.conf
238
-	echo "<secret>$SIP_SERVER_PASSWORD</secret>" >> /etc/sipwitch.conf
239
-	echo "<display>$MY_USERNAME 201</display>" >> /etc/sipwitch.conf
240
-	echo '</user>' >> /etc/sipwitch.conf
241
-
242
-	echo '</provision>' >> /etc/sipwitch.conf
243
-	echo '<access>' >> /etc/sipwitch.conf
244
-	echo '</access>' >> /etc/sipwitch.conf
245
-	echo '<stack>' >> /etc/sipwitch.conf
246
-	echo "  <localnames>$DEFAULT_DOMAIN_NAME</localnames>" >> /etc/sipwitch.conf
247
-	echo '  <mapped>200</mapped>' >> /etc/sipwitch.conf
248
-	echo '  <threading>2</threading>' >> /etc/sipwitch.conf
249
-	echo '  <interface>*</interface>' >> /etc/sipwitch.conf
250
-	echo '  <dumping>false</dumping>' >> /etc/sipwitch.conf
251
-	echo '  <system>system</system>' >> /etc/sipwitch.conf
252
-	echo '  <anon>anonymous</anon>' >> /etc/sipwitch.conf
253
-	echo '</stack>' >> /etc/sipwitch.conf
254
-	echo '<timers>' >> /etc/sipwitch.conf
255
-	echo '  <!-- ring every 4 seconds -->' >> /etc/sipwitch.conf
256
-	echo '  <ring>4</ring>' >> /etc/sipwitch.conf
257
-	echo '  <!-- call forward no answer after x rings -->' >> /etc/sipwitch.conf
258
-	echo '  <cfna>4</cfna>' >> /etc/sipwitch.conf
259
-	echo '  <!-- call reset to clear cid in stack, 6 seconds -->' >> /etc/sipwitch.conf
260
-	echo '  <reset>6</reset>' >> /etc/sipwitch.conf
261
-	echo '</timers>' >> /etc/sipwitch.conf
262
-	echo '<!-- we have 2xx numbers plus space for external users -->' >> /etc/sipwitch.conf
263
-	echo '<registry>' >> /etc/sipwitch.conf
264
-	echo '  <prefix>200</prefix>' >> /etc/sipwitch.conf
265
-	echo '  <range>100</range>' >> /etc/sipwitch.conf
266
-	echo '  <keysize>77</keysize>' >> /etc/sipwitch.conf
267
-	echo '  <mapped>200</mapped>' >> /etc/sipwitch.conf
268
-	echo '  <!-- <realm>GNU Telephony</realm> -->' >> /etc/sipwitch.conf
269
-	echo '</registry>' >> /etc/sipwitch.conf
270
-	echo '<routing>' >> /etc/sipwitch.conf
271
-	echo '</routing>' >> /etc/sipwitch.conf
272
-	echo '</sipwitch>' >> /etc/sipwitch.conf
273
-
274
-	sed -i 's|#PLUGINS=|PLUGINS=|g' /etc/default/sipwitch
275
-	sed -i 's|PLUGINS=.*|PLUGINS="zeroconf subscriber forward"|g' /etc/default/sipwitch
276
-	groupadd sipwitch
277
-	usermod -aG sipwitch $MY_USERNAME
278
-
279
-	SIP_ONION_HOSTNAME=$(add_onion_service sip ${SIP_PORT} ${SIP_PORT})
280
-	if ! grep -q $"SIP onion domain" $COMPLETION_FILE; then
281
-		echo "SIP onion domain:$SIP_ONION_HOSTNAME" >> $COMPLETION_FILE
282
-	fi
283
-
284
-	if ! grep -q $"SIP Server" /home/$MY_USERNAME/README; then
285
-		echo '' >> /home/$MY_USERNAME/README
286
-		echo '' >> /home/$MY_USERNAME/README
287
-		echo $'SIP Server' >> /home/$MY_USERNAME/README
288
-		echo '==========' >> /home/$MY_USERNAME/README
289
-		echo $"SIP onion_domain: $SIP_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
290
-		echo $"SIP server username: $MY_USERNAME" >> /home/$MY_USERNAME/README
291
-		echo $"SIP server extension: 201" >> /home/$MY_USERNAME/README
292
-		echo $"SIP server password: $SIP_SERVER_PASSWORD" >> /home/$MY_USERNAME/README
293
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
294
-		chmod 600 /home/$MY_USERNAME/README
295
-	fi
296
-
297
-	function_check configure_firewall_for_sip4
298
-	configure_firewall_for_sip4
299
-	echo 'install_sip_main' >> $COMPLETION_FILE
220
+    if grep -Fxq "install_sip_main" $COMPLETION_FILE; then
221
+        return
222
+    fi
223
+
224
+    apt-get -y install sipwitch
225
+
226
+    function_check get_sip_server_password
227
+    get_sip_server_password
228
+    if [ ! $SIP_SERVER_PASSWORD ]; then
229
+        if [ -f $IMAGE_PASSWORD_FILE ]; then
230
+            SIP_SERVER_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
231
+        else
232
+            SIP_SERVER_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
233
+        fi
234
+    fi
235
+
236
+    echo '<?xml version="1.0"?>' > /etc/sipwitch.conf
237
+    echo '<sipwitch>' >> /etc/sipwitch.conf
238
+    echo '<provision>' >> /etc/sipwitch.conf
239
+
240
+    echo "<user id=\"$MY_USERNAME\">" >> /etc/sipwitch.conf
241
+    echo '<extension>201</extension>' >> /etc/sipwitch.conf
242
+    echo "<secret>$SIP_SERVER_PASSWORD</secret>" >> /etc/sipwitch.conf
243
+    echo "<display>$MY_USERNAME 201</display>" >> /etc/sipwitch.conf
244
+    echo '</user>' >> /etc/sipwitch.conf
245
+
246
+    echo '</provision>' >> /etc/sipwitch.conf
247
+    echo '<access>' >> /etc/sipwitch.conf
248
+    echo '</access>' >> /etc/sipwitch.conf
249
+    echo '<stack>' >> /etc/sipwitch.conf
250
+    echo "  <localnames>$DEFAULT_DOMAIN_NAME</localnames>" >> /etc/sipwitch.conf
251
+    echo '  <mapped>200</mapped>' >> /etc/sipwitch.conf
252
+    echo '  <threading>2</threading>' >> /etc/sipwitch.conf
253
+    echo '  <interface>*</interface>' >> /etc/sipwitch.conf
254
+    echo '  <dumping>false</dumping>' >> /etc/sipwitch.conf
255
+    echo '  <system>system</system>' >> /etc/sipwitch.conf
256
+    echo '  <anon>anonymous</anon>' >> /etc/sipwitch.conf
257
+    echo '</stack>' >> /etc/sipwitch.conf
258
+    echo '<timers>' >> /etc/sipwitch.conf
259
+    echo '  <!-- ring every 4 seconds -->' >> /etc/sipwitch.conf
260
+    echo '  <ring>4</ring>' >> /etc/sipwitch.conf
261
+    echo '  <!-- call forward no answer after x rings -->' >> /etc/sipwitch.conf
262
+    echo '  <cfna>4</cfna>' >> /etc/sipwitch.conf
263
+    echo '  <!-- call reset to clear cid in stack, 6 seconds -->' >> /etc/sipwitch.conf
264
+    echo '  <reset>6</reset>' >> /etc/sipwitch.conf
265
+    echo '</timers>' >> /etc/sipwitch.conf
266
+    echo '<!-- we have 2xx numbers plus space for external users -->' >> /etc/sipwitch.conf
267
+    echo '<registry>' >> /etc/sipwitch.conf
268
+    echo '  <prefix>200</prefix>' >> /etc/sipwitch.conf
269
+    echo '  <range>100</range>' >> /etc/sipwitch.conf
270
+    echo '  <keysize>77</keysize>' >> /etc/sipwitch.conf
271
+    echo '  <mapped>200</mapped>' >> /etc/sipwitch.conf
272
+    echo '  <!-- <realm>GNU Telephony</realm> -->' >> /etc/sipwitch.conf
273
+    echo '</registry>' >> /etc/sipwitch.conf
274
+    echo '<routing>' >> /etc/sipwitch.conf
275
+    echo '</routing>' >> /etc/sipwitch.conf
276
+    echo '</sipwitch>' >> /etc/sipwitch.conf
277
+
278
+    sed -i 's|#PLUGINS=|PLUGINS=|g' /etc/default/sipwitch
279
+    sed -i 's|PLUGINS=.*|PLUGINS="zeroconf subscriber forward"|g' /etc/default/sipwitch
280
+    groupadd sipwitch
281
+    usermod -aG sipwitch $MY_USERNAME
282
+
283
+    SIP_ONION_HOSTNAME=$(add_onion_service sip ${SIP_PORT} ${SIP_PORT})
284
+    if ! grep -q $"SIP onion domain" $COMPLETION_FILE; then
285
+        echo "SIP onion domain:$SIP_ONION_HOSTNAME" >> $COMPLETION_FILE
286
+    fi
287
+
288
+    if ! grep -q $"SIP Server" /home/$MY_USERNAME/README; then
289
+        echo '' >> /home/$MY_USERNAME/README
290
+        echo '' >> /home/$MY_USERNAME/README
291
+        echo $'SIP Server' >> /home/$MY_USERNAME/README
292
+        echo '==========' >> /home/$MY_USERNAME/README
293
+        echo $"SIP onion_domain: $SIP_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
294
+        echo $"SIP server username: $MY_USERNAME" >> /home/$MY_USERNAME/README
295
+        echo $"SIP server extension: 201" >> /home/$MY_USERNAME/README
296
+        echo $"SIP server password: $SIP_SERVER_PASSWORD" >> /home/$MY_USERNAME/README
297
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
298
+        chmod 600 /home/$MY_USERNAME/README
299
+    fi
300
+
301
+    function_check configure_firewall_for_sip4
302
+    configure_firewall_for_sip4
303
+    echo 'install_sip_main' >> $COMPLETION_FILE
300 304
 }
301 305
 
302 306
 function install_sip_turn {
303
-	if grep -Fxq "install_sip_turn" $COMPLETION_FILE; then
304
-		return
305
-	fi
306
-
307
-	apt-get -y install turnserver
308
-
309
-	# create a nonce if needed
310
-	if [ ! $VOIP_TURN_NONCE ]; then
311
-		VOIP_TURN_NONCE="$(create_password 30)"
312
-	fi
313
-
314
-	function_check create_site_certificate
315
-	create_site_certificate $DEFAULT_DOMAIN_NAME
316
-
317
-	echo '##' > /etc/turnserver/turnserver.conf
318
-	echo '# TurnServer configuration file.' >> /etc/turnserver/turnserver.conf
319
-	echo '#' >> /etc/turnserver/turnserver.conf
320
-	echo '' >> /etc/turnserver/turnserver.conf
321
-	echo '## Public IPv4 address of any relayed address (if not set, no relay for IPv4).' >> /etc/turnserver/turnserver.conf
322
-	echo '## To have multiple address, separate addresses with a comma' >> /etc/turnserver/turnserver.conf
323
-	echo '## (i.e. listen_address = { "172.16.0.1", "172.17.0.1" }).' >> /etc/turnserver/turnserver.conf
324
-	echo "listen_address = { \"192.168.0.1\" }" >> /etc/turnserver/turnserver.conf
325
-	echo '' >> /etc/turnserver/turnserver.conf
326
-	echo '## Public IPv6 address of any relayed address (if not set, no relay for IPv6).' >> /etc/turnserver/turnserver.conf
327
-	echo '## To have multiple address, separate address with a comma' >> /etc/turnserver/turnserver.conf
328
-	echo '## (i.e. listen_addressv6 = { "2001:db8:1::1", "2001:db8:2::1" }).' >> /etc/turnserver/turnserver.conf
329
-	echo "#listen_addressv6 = { \"2001:db8::1\" }" >> /etc/turnserver/turnserver.conf
330
-	echo '' >> /etc/turnserver/turnserver.conf
331
-	echo '## UDP listening port.' >> /etc/turnserver/turnserver.conf
332
-	echo "udp_port = $VOIP_TURN_PORT" >> /etc/turnserver/turnserver.conf
333
-	echo '' >> /etc/turnserver/turnserver.conf
334
-	echo '## TCP listening port.' >> /etc/turnserver/turnserver.conf
335
-	echo "tcp_port = $VOIP_TURN_PORT" >> /etc/turnserver/turnserver.conf
336
-	echo '' >> /etc/turnserver/turnserver.conf
337
-	echo '## TLS listening port.' >> /etc/turnserver/turnserver.conf
338
-	echo "tls_port = $VOIP_TURN_TLS_PORT" >> /etc/turnserver/turnserver.conf
339
-	echo '' >> /etc/turnserver/turnserver.conf
340
-	echo '## TLS support.' >> /etc/turnserver/turnserver.conf
341
-	echo 'tls = true' >> /etc/turnserver/turnserver.conf
342
-	echo '' >> /etc/turnserver/turnserver.conf
343
-	echo '## DTLS support. It is an experimental feature and is not defined in TURN' >> /etc/turnserver/turnserver.conf
344
-	echo '## standard.' >> /etc/turnserver/turnserver.conf
345
-	echo 'dtls = false' >> /etc/turnserver/turnserver.conf
346
-	echo '' >> /etc/turnserver/turnserver.conf
347
-	echo '## Maximum allocation port number.' >> /etc/turnserver/turnserver.conf
348
-	echo 'max_port = 65535' >> /etc/turnserver/turnserver.conf
349
-	echo '' >> /etc/turnserver/turnserver.conf
350
-	echo '## Minimum allocation port number.' >> /etc/turnserver/turnserver.conf
351
-	echo '' >> /etc/turnserver/turnserver.conf
352
-	echo 'min_port = 49152' >> /etc/turnserver/turnserver.conf
353
-	echo '' >> /etc/turnserver/turnserver.conf
354
-	echo '## TURN-TCP support.' >> /etc/turnserver/turnserver.conf
355
-	echo '' >> /etc/turnserver/turnserver.conf
356
-	echo 'turn_tcp = true' >> /etc/turnserver/turnserver.conf
357
-	echo '' >> /etc/turnserver/turnserver.conf
358
-	echo '## TURN-TCP buffering mode:' >> /etc/turnserver/turnserver.conf
359
-	echo '## - true, use userspace buffering;' >> /etc/turnserver/turnserver.conf
360
-	echo '## - false, use kernel buffering.' >> /etc/turnserver/turnserver.conf
361
-	echo 'tcp_buffer_userspace = true' >> /etc/turnserver/turnserver.conf
362
-	echo '' >> /etc/turnserver/turnserver.conf
363
-	echo '## TURN-TCP maximum buffer size.' >> /etc/turnserver/turnserver.conf
364
-	echo 'tcp_buffer_size = 32768' >> /etc/turnserver/turnserver.conf
365
-	echo '' >> /etc/turnserver/turnserver.conf
366
-	echo '## Daemon mode.' >> /etc/turnserver/turnserver.conf
367
-	echo 'daemon = true' >> /etc/turnserver/turnserver.conf
368
-	echo '' >> /etc/turnserver/turnserver.conf
369
-	echo '## Unprivileged user.' >> /etc/turnserver/turnserver.conf
370
-	echo '## If you want to use this feature create a system user.' >> /etc/turnserver/turnserver.conf
371
-	echo '## On Linux: adduser --system --group turnserver' >> /etc/turnserver/turnserver.conf
372
-	echo 'unpriv_user = turnserver' >> /etc/turnserver/turnserver.conf
373
-	echo '' >> /etc/turnserver/turnserver.conf
374
-	echo '## Realm value.' >> /etc/turnserver/turnserver.conf
375
-	echo "realm = \"$DEFAULT_DOMAIN_NAME\"" >> /etc/turnserver/turnserver.conf
376
-	echo '' >> /etc/turnserver/turnserver.conf
377
-	echo '## Nonce key.' >> /etc/turnserver/turnserver.conf
378
-	echo "nonce_key = \"$VOIP_TURN_NONCE\"" >> /etc/turnserver/turnserver.conf
379
-	echo '' >> /etc/turnserver/turnserver.conf
380
-	echo '## Max relay per username.' >> /etc/turnserver/turnserver.conf
381
-	echo 'max_relay_per_username = 5' >> /etc/turnserver/turnserver.conf
382
-	echo '' >> /etc/turnserver/turnserver.conf
383
-	echo '## Allocation lifetime.' >> /etc/turnserver/turnserver.conf
384
-	echo 'allocation_lifetime = 1800' >> /etc/turnserver/turnserver.conf
385
-	echo '' >> /etc/turnserver/turnserver.conf
386
-	echo '## Allocation bandwidth limitation (in KBytes/s).' >> /etc/turnserver/turnserver.conf
387
-	echo '## 0 value means bandwidth quota disabled.' >> /etc/turnserver/turnserver.conf
388
-	echo 'bandwidth_per_allocation = 150' >> /etc/turnserver/turnserver.conf
389
-	echo '' >> /etc/turnserver/turnserver.conf
390
-	echo '## Restricted user bandwidth (in KBytes/s).' >> /etc/turnserver/turnserver.conf
391
-	echo '## 0 value means bandwidth limitation disabled.' >> /etc/turnserver/turnserver.conf
392
-	echo 'restricted_bandwidth = 10' >> /etc/turnserver/turnserver.conf
393
-	echo '' >> /etc/turnserver/turnserver.conf
394
-	echo '## Denied addresses.' >> /etc/turnserver/turnserver.conf
395
-	echo '' >> /etc/turnserver/turnserver.conf
396
-	echo '# disallow relaying to localhost' >> /etc/turnserver/turnserver.conf
397
-	echo 'denied_address {' >> /etc/turnserver/turnserver.conf
398
-	echo '  address = "127.0.0.1"' >> /etc/turnserver/turnserver.conf
399
-	echo '  mask = "8"' >> /etc/turnserver/turnserver.conf
400
-	echo '  port = 0' >> /etc/turnserver/turnserver.conf
401
-	echo '}' >> /etc/turnserver/turnserver.conf
402
-	echo '' >> /etc/turnserver/turnserver.conf
403
-	echo '# disallow relaying to ip6-localhost' >> /etc/turnserver/turnserver.conf
404
-	echo 'denied_address {' >> /etc/turnserver/turnserver.conf
405
-	echo '  address = "::1"' >> /etc/turnserver/turnserver.conf
406
-	echo '  mask = "128"' >> /etc/turnserver/turnserver.conf
407
-	echo '  port = 0' >> /etc/turnserver/turnserver.conf
408
-	echo '}' >> /etc/turnserver/turnserver.conf
409
-	echo '' >> /etc/turnserver/turnserver.conf
410
-	echo '## Certification Authority file.' >> /etc/turnserver/turnserver.conf
411
-	echo "ca_file = \"/etc/ssl/certs/ca-certificates.crt\"" >> /etc/turnserver/turnserver.conf
412
-	echo '' >> /etc/turnserver/turnserver.conf
413
-	echo '## Server certificate file.' >> /etc/turnserver/turnserver.conf
414
-	if [ -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem ]; then
415
-		echo "cert_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem\"" >> /etc/turnserver/turnserver.conf
416
-	else
417
-		if [ -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt ]; then
418
-			echo "cert_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt\"" >> /etc/turnserver/turnserver.conf
419
-		fi
420
-	fi
421
-	echo '' >> /etc/turnserver/turnserver.conf
422
-	echo '## Private key file.' >> /etc/turnserver/turnserver.conf
423
-	echo "private_key_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.key\"" >> /etc/turnserver/turnserver.conf
424
-	echo '' >> /etc/turnserver/turnserver.conf
425
-	echo '## Account method.' >> /etc/turnserver/turnserver.conf
426
-	echo "account_method = \"file\"" >> /etc/turnserver/turnserver.conf
427
-	echo '' >> /etc/turnserver/turnserver.conf
428
-	echo '## Account file (if account_method = file).' >> /etc/turnserver/turnserver.conf
429
-	echo "account_file = \"/etc/turnserver/turnusers.txt\"" >> /etc/turnserver/turnserver.conf
430
-	echo '' >> /etc/turnserver/turnserver.conf
431
-	echo '## mod_tmpuser.' >> /etc/turnserver/turnserver.conf
432
-	echo 'mod_tmpuser = false' >> /etc/turnserver/turnserver.conf
433
-
434
-	echo "${MY_USERNAME}:password:${DEFAULT_DOMAIN_NAME}:authorized" > /etc/turnserver/turnusers.txt
435
-
436
-	systemctl restart turnserver
437
-
438
-	function_check configure_firewall_for_voip_turn
439
-	configure_firewall_for_voip_turn
440
-	echo 'install_sip_turn' >> $COMPLETION_FILE
307
+    if grep -Fxq "install_sip_turn" $COMPLETION_FILE; then
308
+        return
309
+    fi
310
+
311
+    apt-get -y install turnserver
312
+
313
+    # create a nonce if needed
314
+    if [ ! $VOIP_TURN_NONCE ]; then
315
+        VOIP_TURN_NONCE="$(create_password 30)"
316
+    fi
317
+
318
+    function_check create_site_certificate
319
+    create_site_certificate $DEFAULT_DOMAIN_NAME
320
+
321
+    echo '##' > /etc/turnserver/turnserver.conf
322
+    echo '# TurnServer configuration file.' >> /etc/turnserver/turnserver.conf
323
+    echo '#' >> /etc/turnserver/turnserver.conf
324
+    echo '' >> /etc/turnserver/turnserver.conf
325
+    echo '## Public IPv4 address of any relayed address (if not set, no relay for IPv4).' >> /etc/turnserver/turnserver.conf
326
+    echo '## To have multiple address, separate addresses with a comma' >> /etc/turnserver/turnserver.conf
327
+    echo '## (i.e. listen_address = { "172.16.0.1", "172.17.0.1" }).' >> /etc/turnserver/turnserver.conf
328
+    echo "listen_address = { \"192.168.0.1\" }" >> /etc/turnserver/turnserver.conf
329
+    echo '' >> /etc/turnserver/turnserver.conf
330
+    echo '## Public IPv6 address of any relayed address (if not set, no relay for IPv6).' >> /etc/turnserver/turnserver.conf
331
+    echo '## To have multiple address, separate address with a comma' >> /etc/turnserver/turnserver.conf
332
+    echo '## (i.e. listen_addressv6 = { "2001:db8:1::1", "2001:db8:2::1" }).' >> /etc/turnserver/turnserver.conf
333
+    echo "#listen_addressv6 = { \"2001:db8::1\" }" >> /etc/turnserver/turnserver.conf
334
+    echo '' >> /etc/turnserver/turnserver.conf
335
+    echo '## UDP listening port.' >> /etc/turnserver/turnserver.conf
336
+    echo "udp_port = $VOIP_TURN_PORT" >> /etc/turnserver/turnserver.conf
337
+    echo '' >> /etc/turnserver/turnserver.conf
338
+    echo '## TCP listening port.' >> /etc/turnserver/turnserver.conf
339
+    echo "tcp_port = $VOIP_TURN_PORT" >> /etc/turnserver/turnserver.conf
340
+    echo '' >> /etc/turnserver/turnserver.conf
341
+    echo '## TLS listening port.' >> /etc/turnserver/turnserver.conf
342
+    echo "tls_port = $VOIP_TURN_TLS_PORT" >> /etc/turnserver/turnserver.conf
343
+    echo '' >> /etc/turnserver/turnserver.conf
344
+    echo '## TLS support.' >> /etc/turnserver/turnserver.conf
345
+    echo 'tls = true' >> /etc/turnserver/turnserver.conf
346
+    echo '' >> /etc/turnserver/turnserver.conf
347
+    echo '## DTLS support. It is an experimental feature and is not defined in TURN' >> /etc/turnserver/turnserver.conf
348
+    echo '## standard.' >> /etc/turnserver/turnserver.conf
349
+    echo 'dtls = false' >> /etc/turnserver/turnserver.conf
350
+    echo '' >> /etc/turnserver/turnserver.conf
351
+    echo '## Maximum allocation port number.' >> /etc/turnserver/turnserver.conf
352
+    echo 'max_port = 65535' >> /etc/turnserver/turnserver.conf
353
+    echo '' >> /etc/turnserver/turnserver.conf
354
+    echo '## Minimum allocation port number.' >> /etc/turnserver/turnserver.conf
355
+    echo '' >> /etc/turnserver/turnserver.conf
356
+    echo 'min_port = 49152' >> /etc/turnserver/turnserver.conf
357
+    echo '' >> /etc/turnserver/turnserver.conf
358
+    echo '## TURN-TCP support.' >> /etc/turnserver/turnserver.conf
359
+    echo '' >> /etc/turnserver/turnserver.conf
360
+    echo 'turn_tcp = true' >> /etc/turnserver/turnserver.conf
361
+    echo '' >> /etc/turnserver/turnserver.conf
362
+    echo '## TURN-TCP buffering mode:' >> /etc/turnserver/turnserver.conf
363
+    echo '## - true, use userspace buffering;' >> /etc/turnserver/turnserver.conf
364
+    echo '## - false, use kernel buffering.' >> /etc/turnserver/turnserver.conf
365
+    echo 'tcp_buffer_userspace = true' >> /etc/turnserver/turnserver.conf
366
+    echo '' >> /etc/turnserver/turnserver.conf
367
+    echo '## TURN-TCP maximum buffer size.' >> /etc/turnserver/turnserver.conf
368
+    echo 'tcp_buffer_size = 32768' >> /etc/turnserver/turnserver.conf
369
+    echo '' >> /etc/turnserver/turnserver.conf
370
+    echo '## Daemon mode.' >> /etc/turnserver/turnserver.conf
371
+    echo 'daemon = true' >> /etc/turnserver/turnserver.conf
372
+    echo '' >> /etc/turnserver/turnserver.conf
373
+    echo '## Unprivileged user.' >> /etc/turnserver/turnserver.conf
374
+    echo '## If you want to use this feature create a system user.' >> /etc/turnserver/turnserver.conf
375
+    echo '## On Linux: adduser --system --group turnserver' >> /etc/turnserver/turnserver.conf
376
+    echo 'unpriv_user = turnserver' >> /etc/turnserver/turnserver.conf
377
+    echo '' >> /etc/turnserver/turnserver.conf
378
+    echo '## Realm value.' >> /etc/turnserver/turnserver.conf
379
+    echo "realm = \"$DEFAULT_DOMAIN_NAME\"" >> /etc/turnserver/turnserver.conf
380
+    echo '' >> /etc/turnserver/turnserver.conf
381
+    echo '## Nonce key.' >> /etc/turnserver/turnserver.conf
382
+    echo "nonce_key = \"$VOIP_TURN_NONCE\"" >> /etc/turnserver/turnserver.conf
383
+    echo '' >> /etc/turnserver/turnserver.conf
384
+    echo '## Max relay per username.' >> /etc/turnserver/turnserver.conf
385
+    echo 'max_relay_per_username = 5' >> /etc/turnserver/turnserver.conf
386
+    echo '' >> /etc/turnserver/turnserver.conf
387
+    echo '## Allocation lifetime.' >> /etc/turnserver/turnserver.conf
388
+    echo 'allocation_lifetime = 1800' >> /etc/turnserver/turnserver.conf
389
+    echo '' >> /etc/turnserver/turnserver.conf
390
+    echo '## Allocation bandwidth limitation (in KBytes/s).' >> /etc/turnserver/turnserver.conf
391
+    echo '## 0 value means bandwidth quota disabled.' >> /etc/turnserver/turnserver.conf
392
+    echo 'bandwidth_per_allocation = 150' >> /etc/turnserver/turnserver.conf
393
+    echo '' >> /etc/turnserver/turnserver.conf
394
+    echo '## Restricted user bandwidth (in KBytes/s).' >> /etc/turnserver/turnserver.conf
395
+    echo '## 0 value means bandwidth limitation disabled.' >> /etc/turnserver/turnserver.conf
396
+    echo 'restricted_bandwidth = 10' >> /etc/turnserver/turnserver.conf
397
+    echo '' >> /etc/turnserver/turnserver.conf
398
+    echo '## Denied addresses.' >> /etc/turnserver/turnserver.conf
399
+    echo '' >> /etc/turnserver/turnserver.conf
400
+    echo '# disallow relaying to localhost' >> /etc/turnserver/turnserver.conf
401
+    echo 'denied_address {' >> /etc/turnserver/turnserver.conf
402
+    echo '  address = "127.0.0.1"' >> /etc/turnserver/turnserver.conf
403
+    echo '  mask = "8"' >> /etc/turnserver/turnserver.conf
404
+    echo '  port = 0' >> /etc/turnserver/turnserver.conf
405
+    echo '}' >> /etc/turnserver/turnserver.conf
406
+    echo '' >> /etc/turnserver/turnserver.conf
407
+    echo '# disallow relaying to ip6-localhost' >> /etc/turnserver/turnserver.conf
408
+    echo 'denied_address {' >> /etc/turnserver/turnserver.conf
409
+    echo '  address = "::1"' >> /etc/turnserver/turnserver.conf
410
+    echo '  mask = "128"' >> /etc/turnserver/turnserver.conf
411
+    echo '  port = 0' >> /etc/turnserver/turnserver.conf
412
+    echo '}' >> /etc/turnserver/turnserver.conf
413
+    echo '' >> /etc/turnserver/turnserver.conf
414
+    echo '## Certification Authority file.' >> /etc/turnserver/turnserver.conf
415
+    echo "ca_file = \"/etc/ssl/certs/ca-certificates.crt\"" >> /etc/turnserver/turnserver.conf
416
+    echo '' >> /etc/turnserver/turnserver.conf
417
+    echo '## Server certificate file.' >> /etc/turnserver/turnserver.conf
418
+    if [ -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem ]; then
419
+        echo "cert_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.pem\"" >> /etc/turnserver/turnserver.conf
420
+    else
421
+        if [ -f /etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt ]; then
422
+            echo "cert_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.crt\"" >> /etc/turnserver/turnserver.conf
423
+        fi
424
+    fi
425
+    echo '' >> /etc/turnserver/turnserver.conf
426
+    echo '## Private key file.' >> /etc/turnserver/turnserver.conf
427
+    echo "private_key_file = \"/etc/ssl/certs/$DEFAULT_DOMAIN_NAME.key\"" >> /etc/turnserver/turnserver.conf
428
+    echo '' >> /etc/turnserver/turnserver.conf
429
+    echo '## Account method.' >> /etc/turnserver/turnserver.conf
430
+    echo "account_method = \"file\"" >> /etc/turnserver/turnserver.conf
431
+    echo '' >> /etc/turnserver/turnserver.conf
432
+    echo '## Account file (if account_method = file).' >> /etc/turnserver/turnserver.conf
433
+    echo "account_file = \"/etc/turnserver/turnusers.txt\"" >> /etc/turnserver/turnserver.conf
434
+    echo '' >> /etc/turnserver/turnserver.conf
435
+    echo '## mod_tmpuser.' >> /etc/turnserver/turnserver.conf
436
+    echo 'mod_tmpuser = false' >> /etc/turnserver/turnserver.conf
437
+
438
+    echo "${MY_USERNAME}:password:${DEFAULT_DOMAIN_NAME}:authorized" > /etc/turnserver/turnusers.txt
439
+
440
+    systemctl restart turnserver
441
+
442
+    function_check configure_firewall_for_voip_turn
443
+    configure_firewall_for_voip_turn
444
+    echo 'install_sip_turn' >> $COMPLETION_FILE
441 445
 }
442 446
 
443 447
 function install_sip {
444
-	if grep -Fxq "install_sip" $COMPLETION_FILE; then
445
-		return
446
-	fi
447
-	install_sip_main
448
-	update_sipwitch_daemon
449
-	echo 'install_sip' >> $COMPLETION_FILE
448
+    if grep -Fxq "install_sip" $COMPLETION_FILE; then
449
+        return
450
+    fi
451
+    install_sip_main
452
+    update_sipwitch_daemon
453
+    echo 'install_sip' >> $COMPLETION_FILE
450 454
 }
451 455
 
452 456
 # NOTE: deliberately no exit 0

+ 4
- 0
src/freedombone-app-syncthing View File

@@ -39,6 +39,10 @@ SYNCTHING_PORT=22000
39 39
 SYNCTHING_SHARED_DATA=/var/lib/syncthing/SyncShared
40 40
 SYNCTHING_USER_IDS_FILE='.syncthingids'
41 41
 
42
+function change_password_syncthing {
43
+    echo -n ''
44
+}
45
+
42 46
 function reconfigure_syncthing {
43 47
     echo -n ''
44 48
 }

+ 4
- 0
src/freedombone-app-tahoelafs View File

@@ -39,6 +39,10 @@ TAHOELAFS_STORAGE_SPACE=1G
39 39
 TAHOELAFS_SHARED_DIR='Shared'
40 40
 TAHOE_COMMAND="cd /var/lib/tahoelafs && venv/bin/tahoe"
41 41
 
42
+function change_password_tahoelafs {
43
+    echo -n ''
44
+}
45
+
42 46
 function reconfigure_tahoelafs {
43 47
     for d in /home/*/ ; do
44 48
         USERNAME=$(echo "$d" | awk -F '/' '{print $3}')

+ 4
- 0
src/freedombone-app-tox View File

@@ -49,6 +49,10 @@ TOXIC_FILE=/usr/local/bin/toxic
49 49
 QTOX_REPO="https://github.com/bashrc/qTox"
50 50
 QTOX_COMMIT='27a628a3789fca4f31516c3982e580052dd3c773'
51 51
 
52
+function change_password_qtox {
53
+    echo -n ''
54
+}
55
+
52 56
 function mesh_tox_qtox {
53 57
     if [ ! ${rootdir}$INSTALL_DIR ]; then
54 58
         INSTALL_DIR=${rootdir}/root/build

+ 29
- 25
src/freedombone-app-vpn View File

@@ -30,53 +30,57 @@
30 30
 
31 31
 VARIANTS=''
32 32
 
33
+function change_password_vpn {
34
+    echo -n ''
35
+}
36
+
33 37
 function reconfigure_vpn {
34
-	echo -n ''
38
+    echo -n ''
35 39
 }
36 40
 
37 41
 function upgrade_vpn {
38
-	echo -n ''
42
+    echo -n ''
39 43
 }
40 44
 
41 45
 function backup_local_vpn {
42
-	echo -n ''
46
+    echo -n ''
43 47
 }
44 48
 
45 49
 function restore_local_vpn {
46
-	echo -n ''
50
+    echo -n ''
47 51
 }
48 52
 
49 53
 function backup_remote_vpn {
50
-	echo -n ''
54
+    echo -n ''
51 55
 }
52 56
 
53 57
 function restore_remote_vpn {
54
-	echo -n ''
58
+    echo -n ''
55 59
 }
56 60
 
57 61
 function remove_vpn {
58
-	apt-get -y remove --purge fastd
59
-	sed -i '/install_vpn/d' $COMPLETION_FILE
62
+    apt-get -y remove --purge fastd
63
+    sed -i '/install_vpn/d' $COMPLETION_FILE
60 64
 }
61 65
 
62 66
 function install_vpn {
63
-	if grep -Fxq "install_vpn" $COMPLETION_FILE; then
64
-		return
65
-	fi
66
-	if ! grep -q "repo.universe-factory.net" /etc/apt/sources.list; then
67
-		echo 'deb http://repo.universe-factory.net/debian/ sid main' >> /etc/apt/sources.list
68
-		gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9C
69
-		if [ ! "$?" = "0" ]; then
70
-			exit 76272
71
-		fi
72
-		gpg -a --export 16EF3F64CB201D9C | sudo apt-key add -
73
-		apt-get update
74
-		apt-get -y install fastd
75
-		if [ ! "$?" = "0" ]; then
76
-			exit 52026
77
-		fi
78
-	fi
79
-	echo 'install_vpn' >> $COMPLETION_FILE
67
+    if grep -Fxq "install_vpn" $COMPLETION_FILE; then
68
+        return
69
+    fi
70
+    if ! grep -q "repo.universe-factory.net" /etc/apt/sources.list; then
71
+        echo 'deb http://repo.universe-factory.net/debian/ sid main' >> /etc/apt/sources.list
72
+        gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9C
73
+        if [ ! "$?" = "0" ]; then
74
+            exit 76272
75
+        fi
76
+        gpg -a --export 16EF3F64CB201D9C | sudo apt-key add -
77
+        apt-get update
78
+        apt-get -y install fastd
79
+        if [ ! "$?" = "0" ]; then
80
+            exit 52026
81
+        fi
82
+    fi
83
+    echo 'install_vpn' >> $COMPLETION_FILE
80 84
 }
81 85
 
82 86
 # NOTE: deliberately there is no "exit 0"

+ 187
- 183
src/freedombone-app-webmail View File

@@ -38,222 +38,226 @@ WEBMAIL_ADMIN_PASSWORD=
38 38
 WEB_PATH=/var/www
39 39
 WEBMAIL_PATH=$WEB_PATH/webmail
40 40
 
41
+function change_password_webmail {
42
+    echo -n ''
43
+}
44
+
41 45
 function get_mariadb_webmail_admin_password {
42
-	if [ -f /home/$MY_USERNAME/README ]; then
43
-		if grep -q "MariaDB webmail admin password" /home/$MY_USERNAME/README; then
44
-			WEBMAIL_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB webmail admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
45
-		fi
46
-	fi
46
+    if [ -f /home/$MY_USERNAME/README ]; then
47
+        if grep -q "MariaDB webmail admin password" /home/$MY_USERNAME/README; then
48
+            WEBMAIL_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB webmail admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
49
+        fi
50
+    fi
47 51
 }
48 52
 
49 53
 function webmail_create_database {
50
-	function_check get_mariadb_webmail_admin_password
51
-	get_mariadb_webmail_admin_password
52
-	if [ ! $WEBMAIL_ADMIN_PASSWORD ]; then
53
-		if [ -f $IMAGE_PASSWORD_FILE ]; then
54
-			WEBMAIL_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
55
-		else
56
-			WEBMAIL_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
57
-		fi
58
-	fi
59
-	if [ ! $WEBMAIL_ADMIN_PASSWORD ]; then
60
-		return
61
-	fi
62
-	function_check create_database
63
-	create_database webmail "$WEBMAIL_ADMIN_PASSWORD"
54
+    function_check get_mariadb_webmail_admin_password
55
+    get_mariadb_webmail_admin_password
56
+    if [ ! $WEBMAIL_ADMIN_PASSWORD ]; then
57
+        if [ -f $IMAGE_PASSWORD_FILE ]; then
58
+            WEBMAIL_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
59
+        else
60
+            WEBMAIL_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
61
+        fi
62
+    fi
63
+    if [ ! $WEBMAIL_ADMIN_PASSWORD ]; then
64
+        return
65
+    fi
66
+    function_check create_database
67
+    create_database webmail "$WEBMAIL_ADMIN_PASSWORD"
64 68
 }
65 69
 
66 70
 function reconfigure_webmail {
67
-	echo -n ''
71
+    echo -n ''
68 72
 }
69 73
 
70 74
 function upgrade_webmail {
71
-	if ! grep -Fxq "install_webmail" $COMPLETION_FILE; then
72
-		return
73
-	fi
74
-	function_check set_repo_commit
75
-	set_repo_commit $WEBMAIL_PATH "Webmail commit" "$WEBMAIL_COMMIT" $WEBMAIL_REPO
75
+    if ! grep -Fxq "install_webmail" $COMPLETION_FILE; then
76
+        return
77
+    fi
78
+    function_check set_repo_commit
79
+    set_repo_commit $WEBMAIL_PATH "Webmail commit" "$WEBMAIL_COMMIT" $WEBMAIL_REPO
76 80
 }
77 81
 
78 82
 function backup_local_webmail {
79
-	if ! grep -q "install_webmail" $COMPLETION_FILE; then
80
-		return
81
-	fi
82
-	echo $"Backing up webmail"
83
+    if ! grep -q "install_webmail" $COMPLETION_FILE; then
84
+        return
85
+    fi
86
+    echo $"Backing up webmail"
83 87
 
84
-	function_check backup_database_to_usb
85
-	backup_database_to_usb webmail
88
+    function_check backup_database_to_usb
89
+    backup_database_to_usb webmail
86 90
 
87
-	echo $"Backing up webmail complete"
91
+    echo $"Backing up webmail complete"
88 92
 }
89 93
 
90 94
 function restore_local_webmail {
91
-	if ! grep -q "install_webmail" $COMPLETION_FILE; then
92
-		return
93
-	fi
94
-	echo $"Restoring webmail"
95
+    if ! grep -q "install_webmail" $COMPLETION_FILE; then
96
+        return
97
+    fi
98
+    echo $"Restoring webmail"
95 99
 
96
-	function_check webmail_create_database
97
-	webmail_create_database
100
+    function_check webmail_create_database
101
+    webmail_create_database
98 102
 
99
-	function_check restore_database
100
-	restore_database webmail
103
+    function_check restore_database
104
+    restore_database webmail
101 105
 
102
-	echo $"Restore of webmail complete"
106
+    echo $"Restore of webmail complete"
103 107
 }
104 108
 
105 109
 function backup_remote_webmail {
106
-	echo -n ''
110
+    echo -n ''
107 111
 }
108 112
 
109 113
 function restore_remote_webmail {
110
-	echo -n ''
114
+    echo -n ''
111 115
 }
112 116
 
113 117
 function remove_webmail {
114
-	if ! grep -Fxq "install_webmail" $COMPLETION_FILE; then
115
-		return
116
-	fi
117
-	nginx_dissite webmail
118
-	if [ -f /etc/nginx/sites-available/webmail ]; then
119
-		rm /etc/nginx/sites-available/webmail
120
-	fi
121
-	function_check remove_onion_service
122
-	remove_onion_service webmail ${WEBMAIL_ONION_PORT}
123
-	function_check drop_database
124
-	drop_database webmail
125
-	if [ -d $WEB_PATH/webmail ]; then
126
-		rm -rf $WEB_PATH/webmail
127
-	fi
128
-	sed -i '/Webmail /d' $COMPLETION_FILE
129
-	sed -i '/install_webmail/d' $COMPLETION_FILE
118
+    if ! grep -Fxq "install_webmail" $COMPLETION_FILE; then
119
+        return
120
+    fi
121
+    nginx_dissite webmail
122
+    if [ -f /etc/nginx/sites-available/webmail ]; then
123
+        rm /etc/nginx/sites-available/webmail
124
+    fi
125
+    function_check remove_onion_service
126
+    remove_onion_service webmail ${WEBMAIL_ONION_PORT}
127
+    function_check drop_database
128
+    drop_database webmail
129
+    if [ -d $WEB_PATH/webmail ]; then
130
+        rm -rf $WEB_PATH/webmail
131
+    fi
132
+    sed -i '/Webmail /d' $COMPLETION_FILE
133
+    sed -i '/install_webmail/d' $COMPLETION_FILE
130 134
 }
131 135
 
132 136
 function install_webmail {
133
-	if grep -Fxq "install_webmail" $COMPLETION_FILE; then
134
-		return
135
-	fi
136
-	if [ -d /etc/apache2 ]; then
137
-		rm -rf /etc/apache2
138
-		echo $'Removed Apache installation after Dokuwiki install'
139
-	fi
140
-
141
-	function_check install_mariadb
142
-	install_mariadb
143
-
144
-	function_check get_mariadb_password
145
-	get_mariadb_password
146
-
147
-	function_check repair_databases_script
148
-	repair_databases_script
149
-
150
-	apt-get -y install php5-common php5-cli php5-curl php5-gd php5-mysql php5-mcrypt git
151
-	apt-get -y install php5-dev imagemagick php5-imagick php5-sqlite php-auth-sasl php-net-smtp php-mime-type
152
-	apt-get -y install php-mail-mime php-mail-mimedecode php-net-ldap3 php5-pspell
153
-	pear install Net_IDNA2
154
-
155
-	if [ ! -f $WEBMAIL_PATH/index.php ]; then
156
-		cd $WEB_PATH
157
-		git_clone $WEBMAIL_REPO webmail
158
-		cd $WEBMAIL_PATH
159
-		git checkout $WEBMAIL_COMMIT -b $WEBMAIL_COMMIT
160
-		if ! grep -q "Webmail commit" $COMPLETION_FILE; then
161
-			echo "Webmail commit:$WEBMAIL_COMMIT" >> $COMPLETION_FILE
162
-		else
163
-			sed -i "s/Webmail commit.*/Webmail commit:$WEBMAIL_COMMIT/g" $COMPLETION_FILE
164
-		fi
165
-	fi
166
-	if [ ! -f $WEBMAIL_PATH/index.php ]; then
167
-		echo $'Did not clone webmail repo'
168
-		exit 52825
169
-	fi
170
-
171
-	WEBMAIL_ONION_HOSTNAME=$(add_onion_service webmail 80 ${WEBMAIL_ONION_PORT})
172
-	echo "Webmail onion domain:${WEBMAIL_ONION_HOSTNAME}" >> $COMPLETION_FILE
173
-
174
-	webmail_create_database
175
-
176
-	mysql -u root --password="$MARIADB_PASSWORD" -D webmail < $WEBMAIL_PATH/SQL/mysql.initial.sql
177
-
178
-	if [ ! -d /var/www/$DEFAULT_DOMAIN_NAME/htdocs ]; then
179
-		mkdir -p /var/www/$DEFAULT_DOMAIN_NAME/htdocs
180
-	fi
181
-	ln -s $WEBMAIL_PATH /var/www/$DEFAULT_DOMAIN_NAME/htdocs/webmail
182
-
183
-	if [ ! -f /var/www/webmail/config/config.inc.php ]; then
184
-		# generate the configuration
185
-		echo '<?php' > /var/www/webmail/config/config.inc.php
186
-		echo "\$config['db_dsnw'] = 'mysql://root:${MARIADB_PASSWORD}@localhost/webmail';" >> /var/www/webmail/config/config.inc.php
187
-		echo "\$config['default_host'] = 'localhost';" >> /var/www/webmail/config/config.inc.php
188
-		echo "\$config['support_url'] = '';" >> /var/www/webmail/config/config.inc.php
189
-		WEBMAIL_DES_KEY="$(create_password 25)"
190
-		echo "\$config['des_key'] = '${WEBMAIL_DES_KEY}';" >> /var/www/webmail/config/config.inc.php
191
-		echo "\$config['product_name'] = '${PROJECT_NAME}';" >> /var/www/webmail/config/config.inc.php
192
-		echo "\$config['plugins'] = array('enigma');" >> /var/www/webmail/config/config.inc.php
193
-		echo "\$config['mime_param_folding'] = 0;" >> /var/www/webmail/config/config.inc.php
194
-		echo "\$config['enable_installer'] = false;" >> /var/www/webmail/config/config.inc.php
195
-	fi
196
-
197
-	chown -R www-data:www-data $WEBMAIL_PATH
198
-
199
-	echo 'server {' > /etc/nginx/sites-available/webmail
200
-	echo "  listen 127.0.0.1:$WEBMAIL_ONION_PORT default_server;" >> /etc/nginx/sites-available/webmail
201
-	echo "  server_name $WEBMAIL_ONION_HOSTNAME;" >> /etc/nginx/sites-available/webmail
202
-	echo "  root ${WEBMAIL_PATH};" >> /etc/nginx/sites-available/webmail
203
-	echo '  index index.php index.html index.htm;' >> /etc/nginx/sites-available/webmail
204
-	echo '  access_log off;' >> /etc/nginx/sites-available/webmail
205
-	echo '  error_log off;' >> /etc/nginx/sites-available/webmail
206
-	echo '  location / {' >> /etc/nginx/sites-available/webmail
207
-	echo '    try_files $uri $uri/ /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/webmail
208
-	echo '  }' >> /etc/nginx/sites-available/webmail
209
-	echo '  error_page 404 /404.html;' >> /etc/nginx/sites-available/webmail
210
-	echo '  error_page 500 502 503 504 /50x.html;' >> /etc/nginx/sites-available/webmail
211
-	echo '  location = /50x.html {' >> /etc/nginx/sites-available/webmail
212
-	echo "    root ${WEBMAIL_PATH};" >> /etc/nginx/sites-available/webmail
213
-	echo '  }' >> /etc/nginx/sites-available/webmail
214
-	echo '  location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {' >> /etc/nginx/sites-available/webmail
215
-	echo '    deny all;' >> /etc/nginx/sites-available/webmail
216
-	echo '  }' >> /etc/nginx/sites-available/webmail
217
-	echo '  location ~ ^/(config|temp|logs)/ {' >> /etc/nginx/sites-available/webmail
218
-	echo '    deny all;' >> /etc/nginx/sites-available/webmail
219
-	echo '  }' >> /etc/nginx/sites-available/webmail
220
-	echo '  location ~ /\. {' >> /etc/nginx/sites-available/webmail
221
-	echo '    deny all;' >> /etc/nginx/sites-available/webmail
222
-	echo '    access_log off;' >> /etc/nginx/sites-available/webmail
223
-	echo '    log_not_found off;' >> /etc/nginx/sites-available/webmail
224
-	echo '  }' >> /etc/nginx/sites-available/webmail
225
-	echo '  location ~ \.php$ {' >> /etc/nginx/sites-available/webmail
226
-	echo '    try_files $uri =404;' >> /etc/nginx/sites-available/webmail
227
-	echo '    fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/webmail
228
-	echo '    fastcgi_index index.php;' >> /etc/nginx/sites-available/webmail
229
-	echo '    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/webmail
230
-	echo '    include fastcgi_params;' >> /etc/nginx/sites-available/webmail
231
-	echo '  }' >> /etc/nginx/sites-available/webmail
232
-	echo '  add_header X-Frame-Options DENY;' >> /etc/nginx/sites-available/webmail
233
-	echo '  add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/webmail
234
-	echo '  client_max_body_size 15m;' >> /etc/nginx/sites-available/webmail
235
-	echo '}' >> /etc/nginx/sites-available/webmail
236
-
237
-	nginx_ensite webmail
238
-	systemctl restart php5-fpm
239
-	systemctl restart nginx
240
-
241
-	if ! grep -q "Webmail" /home/$MY_USERNAME/README; then
242
-		echo '' >> /home/$MY_USERNAME/README
243
-		echo '' >> /home/$MY_USERNAME/README
244
-		echo 'Webmail' >> /home/$MY_USERNAME/README
245
-		echo '=======' >> /home/$MY_USERNAME/README
246
-		if [[ $ONION_ONLY == 'no' ]]; then
247
-			echo $"Open https://$DEFAULT_DOMAIN_NAME/webmail/index.php" >> /home/$MY_USERNAME/README
248
-		else
249
-			echo $"Open http://$WEBMAIL_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
250
-		fi
251
-		echo $"MariaDB webmail admin password: $WEBMAIL_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
252
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
253
-		chmod 600 /home/$MY_USERNAME/README
254
-	fi
255
-
256
-	echo 'install_webmail' >> $COMPLETION_FILE
137
+    if grep -Fxq "install_webmail" $COMPLETION_FILE; then
138
+        return
139
+    fi
140
+    if [ -d /etc/apache2 ]; then
141
+        rm -rf /etc/apache2
142
+        echo $'Removed Apache installation after Dokuwiki install'
143
+    fi
144
+
145
+    function_check install_mariadb
146
+    install_mariadb
147
+
148
+    function_check get_mariadb_password
149
+    get_mariadb_password
150
+
151
+    function_check repair_databases_script
152
+    repair_databases_script
153
+
154
+    apt-get -y install php5-common php5-cli php5-curl php5-gd php5-mysql php5-mcrypt git
155
+    apt-get -y install php5-dev imagemagick php5-imagick php5-sqlite php-auth-sasl php-net-smtp php-mime-type
156
+    apt-get -y install php-mail-mime php-mail-mimedecode php-net-ldap3 php5-pspell
157
+    pear install Net_IDNA2
158
+
159
+    if [ ! -f $WEBMAIL_PATH/index.php ]; then
160
+        cd $WEB_PATH
161
+        git_clone $WEBMAIL_REPO webmail
162
+        cd $WEBMAIL_PATH
163
+        git checkout $WEBMAIL_COMMIT -b $WEBMAIL_COMMIT
164
+        if ! grep -q "Webmail commit" $COMPLETION_FILE; then
165
+            echo "Webmail commit:$WEBMAIL_COMMIT" >> $COMPLETION_FILE
166
+        else
167
+            sed -i "s/Webmail commit.*/Webmail commit:$WEBMAIL_COMMIT/g" $COMPLETION_FILE
168
+        fi
169
+    fi
170
+    if [ ! -f $WEBMAIL_PATH/index.php ]; then
171
+        echo $'Did not clone webmail repo'
172
+        exit 52825
173
+    fi
174
+
175
+    WEBMAIL_ONION_HOSTNAME=$(add_onion_service webmail 80 ${WEBMAIL_ONION_PORT})
176
+    echo "Webmail onion domain:${WEBMAIL_ONION_HOSTNAME}" >> $COMPLETION_FILE
177
+
178
+    webmail_create_database
179
+
180
+    mysql -u root --password="$MARIADB_PASSWORD" -D webmail < $WEBMAIL_PATH/SQL/mysql.initial.sql
181
+
182
+    if [ ! -d /var/www/$DEFAULT_DOMAIN_NAME/htdocs ]; then
183
+        mkdir -p /var/www/$DEFAULT_DOMAIN_NAME/htdocs
184
+    fi
185
+    ln -s $WEBMAIL_PATH /var/www/$DEFAULT_DOMAIN_NAME/htdocs/webmail
186
+
187
+    if [ ! -f /var/www/webmail/config/config.inc.php ]; then
188
+        # generate the configuration
189
+        echo '<?php' > /var/www/webmail/config/config.inc.php
190
+        echo "\$config['db_dsnw'] = 'mysql://root:${MARIADB_PASSWORD}@localhost/webmail';" >> /var/www/webmail/config/config.inc.php
191
+        echo "\$config['default_host'] = 'localhost';" >> /var/www/webmail/config/config.inc.php
192
+        echo "\$config['support_url'] = '';" >> /var/www/webmail/config/config.inc.php
193
+        WEBMAIL_DES_KEY="$(create_password 25)"
194
+        echo "\$config['des_key'] = '${WEBMAIL_DES_KEY}';" >> /var/www/webmail/config/config.inc.php
195
+        echo "\$config['product_name'] = '${PROJECT_NAME}';" >> /var/www/webmail/config/config.inc.php
196
+        echo "\$config['plugins'] = array('enigma');" >> /var/www/webmail/config/config.inc.php
197
+        echo "\$config['mime_param_folding'] = 0;" >> /var/www/webmail/config/config.inc.php
198
+        echo "\$config['enable_installer'] = false;" >> /var/www/webmail/config/config.inc.php
199
+    fi
200
+
201
+    chown -R www-data:www-data $WEBMAIL_PATH
202
+
203
+    echo 'server {' > /etc/nginx/sites-available/webmail
204
+    echo "  listen 127.0.0.1:$WEBMAIL_ONION_PORT default_server;" >> /etc/nginx/sites-available/webmail
205
+    echo "  server_name $WEBMAIL_ONION_HOSTNAME;" >> /etc/nginx/sites-available/webmail
206
+    echo "  root ${WEBMAIL_PATH};" >> /etc/nginx/sites-available/webmail
207
+    echo '  index index.php index.html index.htm;' >> /etc/nginx/sites-available/webmail
208
+    echo '  access_log off;' >> /etc/nginx/sites-available/webmail
209
+    echo '  error_log off;' >> /etc/nginx/sites-available/webmail
210
+    echo '  location / {' >> /etc/nginx/sites-available/webmail
211
+    echo '    try_files $uri $uri/ /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/webmail
212
+    echo '  }' >> /etc/nginx/sites-available/webmail
213
+    echo '  error_page 404 /404.html;' >> /etc/nginx/sites-available/webmail
214
+    echo '  error_page 500 502 503 504 /50x.html;' >> /etc/nginx/sites-available/webmail
215
+    echo '  location = /50x.html {' >> /etc/nginx/sites-available/webmail
216
+    echo "    root ${WEBMAIL_PATH};" >> /etc/nginx/sites-available/webmail
217
+    echo '  }' >> /etc/nginx/sites-available/webmail
218
+    echo '  location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {' >> /etc/nginx/sites-available/webmail
219
+    echo '    deny all;' >> /etc/nginx/sites-available/webmail
220
+    echo '  }' >> /etc/nginx/sites-available/webmail
221
+    echo '  location ~ ^/(config|temp|logs)/ {' >> /etc/nginx/sites-available/webmail
222
+    echo '    deny all;' >> /etc/nginx/sites-available/webmail
223
+    echo '  }' >> /etc/nginx/sites-available/webmail
224
+    echo '  location ~ /\. {' >> /etc/nginx/sites-available/webmail
225
+    echo '    deny all;' >> /etc/nginx/sites-available/webmail
226
+    echo '    access_log off;' >> /etc/nginx/sites-available/webmail
227
+    echo '    log_not_found off;' >> /etc/nginx/sites-available/webmail
228
+    echo '  }' >> /etc/nginx/sites-available/webmail
229
+    echo '  location ~ \.php$ {' >> /etc/nginx/sites-available/webmail
230
+    echo '    try_files $uri =404;' >> /etc/nginx/sites-available/webmail
231
+    echo '    fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/webmail
232
+    echo '    fastcgi_index index.php;' >> /etc/nginx/sites-available/webmail
233
+    echo '    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/webmail
234
+    echo '    include fastcgi_params;' >> /etc/nginx/sites-available/webmail
235
+    echo '  }' >> /etc/nginx/sites-available/webmail
236
+    echo '  add_header X-Frame-Options DENY;' >> /etc/nginx/sites-available/webmail
237
+    echo '  add_header X-Content-Type-Options nosniff;' >> /etc/nginx/sites-available/webmail
238
+    echo '  client_max_body_size 15m;' >> /etc/nginx/sites-available/webmail
239
+    echo '}' >> /etc/nginx/sites-available/webmail
240
+
241
+    nginx_ensite webmail
242
+    systemctl restart php5-fpm
243
+    systemctl restart nginx
244
+
245
+    if ! grep -q "Webmail" /home/$MY_USERNAME/README; then
246
+        echo '' >> /home/$MY_USERNAME/README
247
+        echo '' >> /home/$MY_USERNAME/README
248
+        echo 'Webmail' >> /home/$MY_USERNAME/README
249
+        echo '=======' >> /home/$MY_USERNAME/README
250
+        if [[ $ONION_ONLY == 'no' ]]; then
251
+            echo $"Open https://$DEFAULT_DOMAIN_NAME/webmail/index.php" >> /home/$MY_USERNAME/README
252
+        else
253
+            echo $"Open http://$WEBMAIL_ONION_HOSTNAME" >> /home/$MY_USERNAME/README
254
+        fi
255
+        echo $"MariaDB webmail admin password: $WEBMAIL_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
256
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
257
+        chmod 600 /home/$MY_USERNAME/README
258
+    fi
259
+
260
+    echo 'install_webmail' >> $COMPLETION_FILE
257 261
 }
258 262
 
259 263
 # NOTE: deliberately no exit 0

+ 473
- 469
src/freedombone-app-wiki View File

@@ -36,502 +36,506 @@ WIKI_TITLE="${PROJECT_NAME} Wiki"
36 36
 WIKI_CODE=
37 37
 WIKI_ONION_PORT=8089
38 38
 
39
+function change_password_wiki {
40
+    echo -n ''
41
+}
42
+
39 43
 function reconfigure_wiki {
40
-	echo -n ''
44
+    echo -n ''
41 45
 }
42 46
 
43 47
 function upgrade_wiki {
44
-	echo -n ''
48
+    echo -n ''
45 49
 }
46 50
 
47 51
 function backup_local_wiki {
48
-	source_directory=/var/lib/dokuwiki
49
-	if [ -d $source_directory ]; then
50
-		dest_directory=wiki
51
-		echo $"Backing up $source_directory to $dest_directory"
52
+    source_directory=/var/lib/dokuwiki
53
+    if [ -d $source_directory ]; then
54
+        dest_directory=wiki
55
+        echo $"Backing up $source_directory to $dest_directory"
52 56
 
53
-		function_check backup_directory_to_usb
54
-		backup_directory_to_usb $source_directory $dest_directory
55
-		backup_directory_to_usb /etc/dokuwiki wiki2
57
+        function_check backup_directory_to_usb
58
+        backup_directory_to_usb $source_directory $dest_directory
59
+        backup_directory_to_usb /etc/dokuwiki wiki2
56 60
 
57
-		echo $"Backup to $dest_directory complete"
58
-	fi
61
+        echo $"Backup to $dest_directory complete"
62
+    fi
59 63
 }
60 64
 
61 65
 function restore_local_wiki {
62
-	if [ -d /var/lib/dokuwiki ]; then
63
-		echo $"Restoring Wiki installation"
64
-		WIKI_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Wiki domain" | awk -F ':' '{print $2}')
65
-		temp_restore_dir=/root/tempwiki
66
-		function_check restore_directory_from_usb
67
-		restore_directory_from_usb $temp_restore_dir wiki
68
-		cp -r $temp_restore_dir/var/lib/dokuwiki/* /var/lib/dokuwiki/
69
-		if [ ! "$?" = "0" ]; then
70
-			function_check restore_directory_from_usb
71
-			set_user_permissions
72
-			function_check backup_unmount_drive
73
-			backup_unmount_drive
74
-			exit 868
75
-		fi
76
-		restore_directory_from_usb ${temp_restore_dir}2 wiki2
77
-		cp -r ${temp_restore_dir}2/etc/dokuwiki/* /etc/dokuwiki/
78
-		if [ ! "$?" = "0" ]; then
79
-			function_check set_user_permissions
80
-			set_user_permissions
81
-			function_check backup_unmount_drive
82
-			backup_unmount_drive
83
-			exit 869
84
-		fi
85
-		rm -rf $temp_restore_dir
86
-		rm -rf ${temp_restore_dir}2
87
-		chown -R www-data:www-data /var/lib/dokuwiki/*
88
-		# Ensure that the bundled SSL cert is being used
89
-		if [ -f /etc/ssl/certs/${WIKI_DOMAIN_NAME}.bundle.crt ]; then
90
-			sed -i "s|${WIKI_DOMAIN_NAME}.crt|${WIKI_DOMAIN_NAME}.bundle.crt|g" /etc/nginx/sites-available/${WIKI_DOMAIN_NAME}
91
-		fi
92
-		if [ -d /etc/letsencrypt/live/${WIKI_DOMAIN_NAME} ]; then
93
-			ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/privkey.pem /etc/ssl/private/${WIKI_DOMAIN_NAME}.key
94
-			ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/fullchain.pem /etc/ssl/certs/${WIKI_DOMAIN_NAME}.pem
95
-		fi
96
-		echo $"Restore of Wiki complete"
97
-	fi
66
+    if [ -d /var/lib/dokuwiki ]; then
67
+        echo $"Restoring Wiki installation"
68
+        WIKI_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Wiki domain" | awk -F ':' '{print $2}')
69
+        temp_restore_dir=/root/tempwiki
70
+        function_check restore_directory_from_usb
71
+        restore_directory_from_usb $temp_restore_dir wiki
72
+        cp -r $temp_restore_dir/var/lib/dokuwiki/* /var/lib/dokuwiki/
73
+        if [ ! "$?" = "0" ]; then
74
+            function_check restore_directory_from_usb
75
+            set_user_permissions
76
+            function_check backup_unmount_drive
77
+            backup_unmount_drive
78
+            exit 868
79
+        fi
80
+        restore_directory_from_usb ${temp_restore_dir}2 wiki2
81
+        cp -r ${temp_restore_dir}2/etc/dokuwiki/* /etc/dokuwiki/
82
+        if [ ! "$?" = "0" ]; then
83
+            function_check set_user_permissions
84
+            set_user_permissions
85
+            function_check backup_unmount_drive
86
+            backup_unmount_drive
87
+            exit 869
88
+        fi
89
+        rm -rf $temp_restore_dir
90
+        rm -rf ${temp_restore_dir}2
91
+        chown -R www-data:www-data /var/lib/dokuwiki/*
92
+        # Ensure that the bundled SSL cert is being used
93
+        if [ -f /etc/ssl/certs/${WIKI_DOMAIN_NAME}.bundle.crt ]; then
94
+            sed -i "s|${WIKI_DOMAIN_NAME}.crt|${WIKI_DOMAIN_NAME}.bundle.crt|g" /etc/nginx/sites-available/${WIKI_DOMAIN_NAME}
95
+        fi
96
+        if [ -d /etc/letsencrypt/live/${WIKI_DOMAIN_NAME} ]; then
97
+            ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/privkey.pem /etc/ssl/private/${WIKI_DOMAIN_NAME}.key
98
+            ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/fullchain.pem /etc/ssl/certs/${WIKI_DOMAIN_NAME}.pem
99
+        fi
100
+        echo $"Restore of Wiki complete"
101
+    fi
98 102
 }
99 103
 
100 104
 function backup_remote_wiki {
101
-	if [ -d /etc/dokuwiki ]; then
102
-		echo $"Backing up wiki"
103
-		backup_directory_to_friend /var/lib/dokuwiki wiki
104
-		backup_directory_to_friend /etc/dokuwiki wiki2
105
-	fi
105
+    if [ -d /etc/dokuwiki ]; then
106
+        echo $"Backing up wiki"
107
+        backup_directory_to_friend /var/lib/dokuwiki wiki
108
+        backup_directory_to_friend /etc/dokuwiki wiki2
109
+    fi
106 110
 }
107 111
 
108 112
 function restore_remote_wiki {
109
-	if [ -d $SERVER_DIRECTORY/backup/wiki ]; then
110
-		WIKI_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Wiki domain" | awk -F ':' '{print $2}')
111
-		echo $"Restoring Wiki installation $WIKI_DOMAIN_NAME"
112
-		function_check restore_directory_from_friend
113
-		restore_directory_from_friend /root/tempwiki wiki
114
-		cp -r /root/tempwiki/var/lib/dokuwiki/* /var/lib/dokuwiki/
115
-		if [ ! "$?" = "0" ]; then
116
-			exit 868
117
-		fi
118
-		restore_directory_from_friend /root/tempwiki2 wiki2
119
-		cp -r /root/tempwiki2/etc/dokuwiki/* /etc/dokuwiki/
120
-		if [ ! "$?" = "0" ]; then
121
-			exit 869
122
-		fi
123
-		rm -rf /root/tempwiki
124
-		rm -rf /root/tempwiki2
125
-		chown -R www-data:www-data /var/lib/dokuwiki/*
126
-		# Ensure that the bundled SSL cert is being used
127
-		if [ -f /etc/ssl/certs/${WIKI_DOMAIN_NAME}.bundle.crt ]; then
128
-			sed -i "s|${WIKI_DOMAIN_NAME}.crt|${WIKI_DOMAIN_NAME}.bundle.crt|g" /etc/nginx/sites-available/${WIKI_DOMAIN_NAME}
129
-		fi
130
-		if [ -d /etc/letsencrypt/live/${WIKI_DOMAIN_NAME} ]; then
131
-			ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/privkey.pem /etc/ssl/private/${WIKI_DOMAIN_NAME}.key
132
-			ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/fullchain.pem /etc/ssl/certs/${WIKI_DOMAIN_NAME}.pem
133
-		fi
134
-		echo $"Restore of Wiki complete"
135
-	fi
113
+    if [ -d $SERVER_DIRECTORY/backup/wiki ]; then
114
+        WIKI_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Wiki domain" | awk -F ':' '{print $2}')
115
+        echo $"Restoring Wiki installation $WIKI_DOMAIN_NAME"
116
+        function_check restore_directory_from_friend
117
+        restore_directory_from_friend /root/tempwiki wiki
118
+        cp -r /root/tempwiki/var/lib/dokuwiki/* /var/lib/dokuwiki/
119
+        if [ ! "$?" = "0" ]; then
120
+            exit 868
121
+        fi
122
+        restore_directory_from_friend /root/tempwiki2 wiki2
123
+        cp -r /root/tempwiki2/etc/dokuwiki/* /etc/dokuwiki/
124
+        if [ ! "$?" = "0" ]; then
125
+            exit 869
126
+        fi
127
+        rm -rf /root/tempwiki
128
+        rm -rf /root/tempwiki2
129
+        chown -R www-data:www-data /var/lib/dokuwiki/*
130
+        # Ensure that the bundled SSL cert is being used
131
+        if [ -f /etc/ssl/certs/${WIKI_DOMAIN_NAME}.bundle.crt ]; then
132
+            sed -i "s|${WIKI_DOMAIN_NAME}.crt|${WIKI_DOMAIN_NAME}.bundle.crt|g" /etc/nginx/sites-available/${WIKI_DOMAIN_NAME}
133
+        fi
134
+        if [ -d /etc/letsencrypt/live/${WIKI_DOMAIN_NAME} ]; then
135
+            ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/privkey.pem /etc/ssl/private/${WIKI_DOMAIN_NAME}.key
136
+            ln -s /etc/letsencrypt/live/${WIKI_DOMAIN_NAME}/fullchain.pem /etc/ssl/certs/${WIKI_DOMAIN_NAME}.pem
137
+        fi
138
+        echo $"Restore of Wiki complete"
139
+    fi
136 140
 }
137 141
 
138 142
 function remove_wiki {
139
-	if ! grep -Fxq "install_wiki" $COMPLETION_FILE; then
140
-		return
141
-	fi
142
-	function_check remove_onion_service
143
-	remove_onion_service wiki ${WIKI_ONION_PORT}
144
-	nginx_dissite $WIKI_DOMAIN_NAME
145
-	if [ -f /etc/nginx/sites-available/$WIKI_DOMAIN_NAME ]; then
146
-		rm /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
147
-	fi
148
-	apt-get -y remove --purge dokuwiki
149
-	if [ ! -d /var/www/$WIKI_DOMAIN_NAME ]; then
150
-		rm -rf /var/www/$WIKI_DOMAIN_NAME
151
-	fi
152
-	if [ -d /var/lib/dokuwiki ]; then
153
-		rm -rf /var/lib/dokuwiki
154
-	fi
155
-	if [ -d /etc/dokuwiki ]; then
156
-		rm -rf /etc/dokuwiki
157
-	fi
158
-	if [ -d /usr/share/dokuwiki ]; then
159
-		rm -rf /usr/share/dokuwiki
160
-	fi
161
-	sed -i '/install_wiki/d' $COMPLETION_FILE
143
+    if ! grep -Fxq "install_wiki" $COMPLETION_FILE; then
144
+        return
145
+    fi
146
+    function_check remove_onion_service
147
+    remove_onion_service wiki ${WIKI_ONION_PORT}
148
+    nginx_dissite $WIKI_DOMAIN_NAME
149
+    if [ -f /etc/nginx/sites-available/$WIKI_DOMAIN_NAME ]; then
150
+        rm /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
151
+    fi
152
+    apt-get -y remove --purge dokuwiki
153
+    if [ ! -d /var/www/$WIKI_DOMAIN_NAME ]; then
154
+        rm -rf /var/www/$WIKI_DOMAIN_NAME
155
+    fi
156
+    if [ -d /var/lib/dokuwiki ]; then
157
+        rm -rf /var/lib/dokuwiki
158
+    fi
159
+    if [ -d /etc/dokuwiki ]; then
160
+        rm -rf /etc/dokuwiki
161
+    fi
162
+    if [ -d /usr/share/dokuwiki ]; then
163
+        rm -rf /usr/share/dokuwiki
164
+    fi
165
+    sed -i '/install_wiki/d' $COMPLETION_FILE
162 166
 }
163 167
 
164 168
 function get_wiki_admin_password {
165
-	if [ -f /home/$MY_USERNAME/README ]; then
166
-		if grep -q "Wiki password" /home/$MY_USERNAME/README; then
167
-			WIKI_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Wiki password:" | awk -F ':' '{print $2}' | sed 's/^ *//')
168
-		fi
169
-	fi
169
+    if [ -f /home/$MY_USERNAME/README ]; then
170
+        if grep -q "Wiki password" /home/$MY_USERNAME/README; then
171
+            WIKI_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Wiki password:" | awk -F ':' '{print $2}' | sed 's/^ *//')
172
+        fi
173
+    fi
170 174
 }
171 175
 
172 176
 function install_wiki {
173
-	if grep -Fxq "install_wiki" $COMPLETION_FILE; then
174
-		return
175
-	fi
176
-	if [ ! $WIKI_DOMAIN_NAME ]; then
177
-		return
178
-	fi
179
-	apt-get -y install dokuwiki
180
-	apt-get -y remove --purge apache*
181
-	if [ -d /etc/apache2 ]; then
182
-		rm -rf /etc/apache2
183
-		echo $'Removed Apache installation after Dokuwiki install'
184
-	fi
185
-
186
-	if [ ! -d /var/www/$WIKI_DOMAIN_NAME ]; then
187
-		mkdir /var/www/$WIKI_DOMAIN_NAME
188
-	fi
189
-	if [ -d /var/www/$WIKI_DOMAIN_NAME/htdocs ]; then
190
-		rm -rf /var/www/$WIKI_DOMAIN_NAME/htdocs
191
-	fi
192
-
193
-	ln -s /usr/share/dokuwiki /var/www/$WIKI_DOMAIN_NAME/htdocs
194
-
195
-	mkdir /var/lib/dokuwiki/custom
196
-	cp /etc/dokuwiki/local.php.dist /var/lib/dokuwiki/custom/local.php
197
-	ln -s /var/lib/dokuwiki/custom/local.php /etc/dokuwiki/local.php
198
-
199
-	chown www-data /var/lib/dokuwiki/custom
200
-	chown www-data /var/lib/dokuwiki/custom/local.php
201
-	chown -R www-data /etc/dokuwiki
202
-	chown -R www-data /usr/share/dokuwiki/lib/
203
-	chmod 600 /var/lib/dokuwiki/custom/local.php
204
-	chmod -R 755 /usr/share/dokuwiki/lib
205
-
206
-	sed -i 's|//$conf|$conf|g' /var/lib/dokuwiki/custom/local.php
207
-	sed -i "s|joe|$MY_USERNAME|g" /var/lib/dokuwiki/custom/local.php
208
-
209
-	sed -i "s|Debian DokuWiki|$WIKI_TITLE|g" /etc/dokuwiki/local.php
210
-
211
-	# set the admin user
212
-	sed -i "s/@admin/$MY_USERNAME/g" /etc/dokuwiki/local.php
213
-
214
-	# disallow registration of new users
215
-	if ! grep -q "disableactions" /etc/dokuwiki/local.php; then
216
-		echo "\$conf['disableactions'] = 'register';" >> /etc/dokuwiki/local.php
217
-	fi
218
-	if ! grep -q "disableactions" /var/lib/dokuwiki/custom/local.php; then
219
-		echo "\$conf['disableactions'] = 'register';" >> /var/lib/dokuwiki/custom/local.php
220
-	fi
221
-
222
-	if ! grep -q "authtype" /var/lib/dokuwiki/custom/local.php; then
223
-		echo "\$conf['authtype'] = 'authplain';" >> /var/lib/dokuwiki/custom/local.php
224
-	fi
225
-	if ! grep -q "authtype" /etc/dokuwiki/local.php; then
226
-		echo "\$conf['authtype'] = 'authplain';" >> /etc/dokuwiki/local.php
227
-	fi
228
-
229
-	function_check get_wiki_admin_password
230
-	get_wiki_admin_password
231
-	if [ ! $WIKI_ADMIN_PASSWORD ]; then
232
-		if [ -f $IMAGE_PASSWORD_FILE ]; then
233
-			WIKI_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
234
-		else
235
-			WIKI_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
236
-		fi
237
-	fi
238
-	HASHED_WIKI_PASSWORD=$(echo -n "$WIKI_ADMIN_PASSWORD" | md5sum | awk -F ' ' '{print $1}')
239
-	echo -n "$MY_USERNAME:$HASHED_WIKI_PASSWORD:$MY_NAME:$MY_EMAIL:admin,user,upload" > /var/lib/dokuwiki/acl/users.auth.php
240
-	chmod 640 /var/lib/dokuwiki/acl/users.auth.php
241
-
242
-	if ! grep -q "video/ogg" /etc/dokuwiki/mime.conf; then
243
-		echo 'ogv     video/ogg' >> /etc/dokuwiki/mime.conf
244
-	fi
245
-	if ! grep -q "video/mp4" /etc/dokuwiki/mime.conf; then
246
-		echo 'mp4     video/mp4' >> /etc/dokuwiki/mime.conf
247
-	fi
248
-	if ! grep -q "video/webm" /etc/dokuwiki/mime.conf; then
249
-		echo 'webm    video/webm' >> /etc/dokuwiki/mime.conf
250
-	fi
251
-
252
-	WIKI_ONION_HOSTNAME=$(add_onion_service wiki 80 ${WIKI_ONION_PORT})
253
-
254
-	if [[ $ONION_ONLY == "no" ]]; then
255
-		echo 'server {' > /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
256
-		echo '    listen 80;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
257
-		echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
258
-		echo "    server_name $WIKI_DOMAIN_NAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
259
-		echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
260
-		echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
261
-		echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
262
-		echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
263
-		echo '    proxy_read_timeout 86400s;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
264
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
265
-		function_check nginx_disable_sniffing
266
-		nginx_disable_sniffing $WIKI_DOMAIN_NAME
267
-		function_check nginx_limits
268
-		nginx_limits $WIKI_DOMAIN_NAME
269
-		echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
270
-		echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
271
-		echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
272
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
273
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
274
-		echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
275
-		echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
276
-		echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
277
-		echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
278
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
279
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
280
-		echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
281
-		echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
282
-		echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
283
-		echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
284
-		echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
285
-		echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
286
-		echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
287
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
288
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
289
-		echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
290
-		echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
291
-		echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
292
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
293
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
294
-		echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
295
-		echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
296
-		echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
297
-		echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
298
-		echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
299
-		echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
300
-		echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
301
-		echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
302
-		echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
303
-		echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
304
-		echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
305
-		echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
306
-		echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
307
-		echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
308
-		echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
309
-		echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
310
-		echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
311
-		echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
312
-		echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
313
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
314
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
315
-		echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
316
-		echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
317
-		echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
318
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
319
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
320
-		echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
321
-		echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
322
-		echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
323
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
324
-		echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
325
-		echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
326
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
327
-		echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
328
-		echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
329
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
330
-		echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
331
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
332
-		echo 'server {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
333
-		echo '    listen 443 ssl;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
334
-		echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
335
-		echo "    server_name $WIKI_DOMAIN_NAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
336
-		echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
337
-		echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
338
-		echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
339
-		echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
340
-		echo '    proxy_read_timeout 86400s;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
341
-		function_check nginx_limits
342
-		nginx_limits $WIKI_DOMAIN_NAME
343
-		function_check nginx_ssl
344
-		nginx_ssl $WIKI_DOMAIN_NAME
345
-		function_check nginx_disable_sniffing
346
-		nginx_disable_sniffing $WIKI_DOMAIN_NAME
347
-		echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
348
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
349
-		echo '    # webmail' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
350
-		echo '    location /webmail {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
351
-		echo '        rewrite ^/(.*) /webmail/index.php last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
352
-		echo '        rewrite ^/(.*) /webmail/installer/index.php last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
353
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
354
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
355
-		echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
356
-		echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
357
-		echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
358
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
359
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
360
-		echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
361
-		echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
362
-		echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
363
-		echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
364
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
365
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
366
-		echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
367
-		echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
368
-		echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
369
-		echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
370
-		echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
371
-		echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
372
-		echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
373
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
374
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
375
-		echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
376
-		echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
377
-		echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
378
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
379
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
380
-		echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
381
-		echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
382
-		echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
383
-		echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
384
-		echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
385
-		echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
386
-		echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
387
-		echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
388
-		echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
389
-		echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
390
-		echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
391
-		echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
392
-		echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
393
-		echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
394
-		echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
395
-		echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
396
-		echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
397
-		echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
398
-		echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
399
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
400
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
401
-		echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
402
-		echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
403
-		echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
404
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
405
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
406
-		echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
407
-		echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
408
-		echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
409
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
410
-		echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
411
-		echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
412
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
413
-		echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
414
-		echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
415
-		echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
416
-		echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
417
-		echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
418
-	else
419
-		echo -n '' > /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
420
-	fi
421
-	echo 'server {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
422
-	echo "    listen 127.0.0.1:${WIKI_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
423
-	echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
424
-	echo "    server_name $WIKI_ONION_HOSTNAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
425
-	echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
426
-	echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
427
-	echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
428
-	echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
429
-	echo '    proxy_read_timeout 86400s;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
430
-	function_check nginx_limits
431
-	nginx_limits $WIKI_DOMAIN_NAME
432
-	function_check nginx_disable_sniffing
433
-	nginx_disable_sniffing $WIKI_DOMAIN_NAME
434
-	echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
435
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
436
-	echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
437
-	echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
438
-	echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
439
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
440
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
441
-	echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
442
-	echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
443
-	echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
444
-	echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
445
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
446
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
447
-	echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
448
-	echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
449
-	echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
450
-	echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
451
-	echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
452
-	echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
453
-	echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
454
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
455
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
456
-	echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
457
-	echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
458
-	echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
459
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
460
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
461
-	echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
462
-	echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
463
-	echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
464
-	echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
465
-	echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
466
-	echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
467
-	echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
468
-	echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
469
-	echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
470
-	echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
471
-	echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
472
-	echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
473
-	echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
474
-	echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
475
-	echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
476
-	echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
477
-	echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
478
-	echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
479
-	echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
480
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
481
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
482
-	echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
483
-	echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
484
-	echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
485
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
486
-	echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
487
-	echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
488
-	echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
489
-	echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
490
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
491
-	echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
492
-	echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
493
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
494
-	echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
495
-	echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
496
-	echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
497
-	echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
498
-
499
-	function_check create_site_certificate
500
-	create_site_certificate $WIKI_DOMAIN_NAME
501
-
502
-	function_check configure_php
503
-	configure_php
504
-
505
-	nginx_ensite $WIKI_DOMAIN_NAME
506
-
507
-	systemctl restart php5-fpm
508
-	systemctl restart nginx
509
-
510
-	echo "Wiki onion domain:${WIKI_ONION_HOSTNAME}" >> $COMPLETION_FILE
511
-
512
-	function_check add_ddns_domain
513
-	add_ddns_domain $WIKI_DOMAIN_NAME
514
-
515
-	# add some post-install instructions
516
-	if ! grep -q $"Wiki password" /home/$MY_USERNAME/README; then
517
-		echo '' >> /home/$MY_USERNAME/README
518
-		echo '' >> /home/$MY_USERNAME/README
519
-		echo $'Wiki' >> /home/$MY_USERNAME/README
520
-		echo '====' >> /home/$MY_USERNAME/README
521
-		echo $"Wiki onion domain: ${WIKI_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
522
-		echo $"Wiki username: $MY_USERNAME" >> /home/$MY_USERNAME/README
523
-		echo $"Wiki password: $WIKI_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
524
-		echo '' >> /home/$MY_USERNAME/README
525
-		echo $'Once you have set up the wiki then remove the install file:' >> /home/$MY_USERNAME/README
526
-		echo '' >> /home/$MY_USERNAME/README
527
-		echo "  rm /var/www/$WIKI_DOMAIN_NAME/htdocs/install.php" >> /home/$MY_USERNAME/README
528
-		echo '' >> /home/$MY_USERNAME/README
529
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
530
-		chmod 600 /home/$MY_USERNAME/README
531
-	fi
532
-
533
-	echo "Wiki domain:$WIKI_DOMAIN_NAME" >> $COMPLETION_FILE
534
-	echo 'install_wiki' >> $COMPLETION_FILE
177
+    if grep -Fxq "install_wiki" $COMPLETION_FILE; then
178
+        return
179
+    fi
180
+    if [ ! $WIKI_DOMAIN_NAME ]; then
181
+        return
182
+    fi
183
+    apt-get -y install dokuwiki
184
+    apt-get -y remove --purge apache*
185
+    if [ -d /etc/apache2 ]; then
186
+        rm -rf /etc/apache2
187
+        echo $'Removed Apache installation after Dokuwiki install'
188
+    fi
189
+
190
+    if [ ! -d /var/www/$WIKI_DOMAIN_NAME ]; then
191
+        mkdir /var/www/$WIKI_DOMAIN_NAME
192
+    fi
193
+    if [ -d /var/www/$WIKI_DOMAIN_NAME/htdocs ]; then
194
+        rm -rf /var/www/$WIKI_DOMAIN_NAME/htdocs
195
+    fi
196
+
197
+    ln -s /usr/share/dokuwiki /var/www/$WIKI_DOMAIN_NAME/htdocs
198
+
199
+    mkdir /var/lib/dokuwiki/custom
200
+    cp /etc/dokuwiki/local.php.dist /var/lib/dokuwiki/custom/local.php
201
+    ln -s /var/lib/dokuwiki/custom/local.php /etc/dokuwiki/local.php
202
+
203
+    chown www-data /var/lib/dokuwiki/custom
204
+    chown www-data /var/lib/dokuwiki/custom/local.php
205
+    chown -R www-data /etc/dokuwiki
206
+    chown -R www-data /usr/share/dokuwiki/lib/
207
+    chmod 600 /var/lib/dokuwiki/custom/local.php
208
+    chmod -R 755 /usr/share/dokuwiki/lib
209
+
210
+    sed -i 's|//$conf|$conf|g' /var/lib/dokuwiki/custom/local.php
211
+    sed -i "s|joe|$MY_USERNAME|g" /var/lib/dokuwiki/custom/local.php
212
+
213
+    sed -i "s|Debian DokuWiki|$WIKI_TITLE|g" /etc/dokuwiki/local.php
214
+
215
+    # set the admin user
216
+    sed -i "s/@admin/$MY_USERNAME/g" /etc/dokuwiki/local.php
217
+
218
+    # disallow registration of new users
219
+    if ! grep -q "disableactions" /etc/dokuwiki/local.php; then
220
+        echo "\$conf['disableactions'] = 'register';" >> /etc/dokuwiki/local.php
221
+    fi
222
+    if ! grep -q "disableactions" /var/lib/dokuwiki/custom/local.php; then
223
+        echo "\$conf['disableactions'] = 'register';" >> /var/lib/dokuwiki/custom/local.php
224
+    fi
225
+
226
+    if ! grep -q "authtype" /var/lib/dokuwiki/custom/local.php; then
227
+        echo "\$conf['authtype'] = 'authplain';" >> /var/lib/dokuwiki/custom/local.php
228
+    fi
229
+    if ! grep -q "authtype" /etc/dokuwiki/local.php; then
230
+        echo "\$conf['authtype'] = 'authplain';" >> /etc/dokuwiki/local.php
231
+    fi
232
+
233
+    function_check get_wiki_admin_password
234
+    get_wiki_admin_password
235
+    if [ ! $WIKI_ADMIN_PASSWORD ]; then
236
+        if [ -f $IMAGE_PASSWORD_FILE ]; then
237
+            WIKI_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
238
+        else
239
+            WIKI_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
240
+        fi
241
+    fi
242
+    HASHED_WIKI_PASSWORD=$(echo -n "$WIKI_ADMIN_PASSWORD" | md5sum | awk -F ' ' '{print $1}')
243
+    echo -n "$MY_USERNAME:$HASHED_WIKI_PASSWORD:$MY_NAME:$MY_EMAIL:admin,user,upload" > /var/lib/dokuwiki/acl/users.auth.php
244
+    chmod 640 /var/lib/dokuwiki/acl/users.auth.php
245
+
246
+    if ! grep -q "video/ogg" /etc/dokuwiki/mime.conf; then
247
+        echo 'ogv     video/ogg' >> /etc/dokuwiki/mime.conf
248
+    fi
249
+    if ! grep -q "video/mp4" /etc/dokuwiki/mime.conf; then
250
+        echo 'mp4     video/mp4' >> /etc/dokuwiki/mime.conf
251
+    fi
252
+    if ! grep -q "video/webm" /etc/dokuwiki/mime.conf; then
253
+        echo 'webm    video/webm' >> /etc/dokuwiki/mime.conf
254
+    fi
255
+
256
+    WIKI_ONION_HOSTNAME=$(add_onion_service wiki 80 ${WIKI_ONION_PORT})
257
+
258
+    if [[ $ONION_ONLY == "no" ]]; then
259
+        echo 'server {' > /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
260
+        echo '    listen 80;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
261
+        echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
262
+        echo "    server_name $WIKI_DOMAIN_NAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
263
+        echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
264
+        echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
265
+        echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
266
+        echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
267
+        echo '    proxy_read_timeout 86400s;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
268
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
269
+        function_check nginx_disable_sniffing
270
+        nginx_disable_sniffing $WIKI_DOMAIN_NAME
271
+        function_check nginx_limits
272
+        nginx_limits $WIKI_DOMAIN_NAME
273
+        echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
274
+        echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
275
+        echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
276
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
277
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
278
+        echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
279
+        echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
280
+        echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
281
+        echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
282
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
283
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
284
+        echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
285
+        echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
286
+        echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
287
+        echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
288
+        echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
289
+        echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
290
+        echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
291
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
292
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
293
+        echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
294
+        echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
295
+        echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
296
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
297
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
298
+        echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
299
+        echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
300
+        echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
301
+        echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
302
+        echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
303
+        echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
304
+        echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
305
+        echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
306
+        echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
307
+        echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
308
+        echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
309
+        echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
310
+        echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
311
+        echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
312
+        echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
313
+        echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
314
+        echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
315
+        echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
316
+        echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
317
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
318
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
319
+        echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
320
+        echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
321
+        echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
322
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
323
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
324
+        echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
325
+        echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
326
+        echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
327
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
328
+        echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
329
+        echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
330
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
331
+        echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
332
+        echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
333
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
334
+        echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
335
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
336
+        echo 'server {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
337
+        echo '    listen 443 ssl;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
338
+        echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
339
+        echo "    server_name $WIKI_DOMAIN_NAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
340
+        echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
341
+        echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
342
+        echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
343
+        echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
344
+        echo '    proxy_read_timeout 86400s;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
345
+        function_check nginx_limits
346
+        nginx_limits $WIKI_DOMAIN_NAME
347
+        function_check nginx_ssl
348
+        nginx_ssl $WIKI_DOMAIN_NAME
349
+        function_check nginx_disable_sniffing
350
+        nginx_disable_sniffing $WIKI_DOMAIN_NAME
351
+        echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
352
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
353
+        echo '    # webmail' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
354
+        echo '    location /webmail {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
355
+        echo '        rewrite ^/(.*) /webmail/index.php last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
356
+        echo '        rewrite ^/(.*) /webmail/installer/index.php last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
357
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
358
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
359
+        echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
360
+        echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
361
+        echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
362
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
363
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
364
+        echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
365
+        echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
366
+        echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
367
+        echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
368
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
369
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
370
+        echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
371
+        echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
372
+        echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
373
+        echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
374
+        echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
375
+        echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
376
+        echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
377
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
378
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
379
+        echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
380
+        echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
381
+        echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
382
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
383
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
384
+        echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
385
+        echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
386
+        echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
387
+        echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
388
+        echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
389
+        echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
390
+        echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
391
+        echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
392
+        echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
393
+        echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
394
+        echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
395
+        echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
396
+        echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
397
+        echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
398
+        echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
399
+        echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
400
+        echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
401
+        echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
402
+        echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
403
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
404
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
405
+        echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
406
+        echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
407
+        echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
408
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
409
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
410
+        echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
411
+        echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
412
+        echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
413
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
414
+        echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
415
+        echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
416
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
417
+        echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
418
+        echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
419
+        echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
420
+        echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
421
+        echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
422
+    else
423
+        echo -n '' > /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
424
+    fi
425
+    echo 'server {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
426
+    echo "    listen 127.0.0.1:${WIKI_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
427
+    echo "    root /var/www/$WIKI_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
428
+    echo "    server_name $WIKI_ONION_HOSTNAME;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
429
+    echo '    access_log off;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
430
+    echo "    error_log /var/log/nginx/${WIKI_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
431
+    echo '    index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
432
+    echo '    charset utf-8;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
433
+    echo '    proxy_read_timeout 86400s;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
434
+    function_check nginx_limits
435
+    nginx_limits $WIKI_DOMAIN_NAME
436
+    function_check nginx_disable_sniffing
437
+    nginx_disable_sniffing $WIKI_DOMAIN_NAME
438
+    echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
439
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
440
+    echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
441
+    echo '    location / {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
442
+    echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
443
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
444
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
445
+    echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
446
+    echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
447
+    echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
448
+    echo '        allow all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
449
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
450
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
451
+    echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
452
+    echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
453
+    echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
454
+    echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
455
+    echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
456
+    echo '        expires 30d;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
457
+    echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
458
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
459
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
460
+    echo '    # block these file types' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
461
+    echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
462
+    echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
463
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
464
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
465
+    echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
466
+    echo '    # or a unix socket' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
467
+    echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
468
+    echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
469
+    echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
470
+    echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
471
+    echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
472
+    echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
473
+    echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
474
+    echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
475
+    echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
476
+    echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
477
+    echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
478
+    echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
479
+    echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
480
+    echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
481
+    echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
482
+    echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
483
+    echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
484
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
485
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
486
+    echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
487
+    echo '    location ~ /\. {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
488
+    echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
489
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
490
+    echo '' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
491
+    echo '    #deny access to store' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
492
+    echo '    location ~ /store {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
493
+    echo '        deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
494
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
495
+    echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
496
+    echo '      deny all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
497
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
498
+    echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
499
+    echo '      deny  all;' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
500
+    echo '    }' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
501
+    echo '}' >> /etc/nginx/sites-available/$WIKI_DOMAIN_NAME
502
+
503
+    function_check create_site_certificate
504
+    create_site_certificate $WIKI_DOMAIN_NAME
505
+
506
+    function_check configure_php
507
+    configure_php
508
+
509
+    nginx_ensite $WIKI_DOMAIN_NAME
510
+
511
+    systemctl restart php5-fpm
512
+    systemctl restart nginx
513
+
514
+    echo "Wiki onion domain:${WIKI_ONION_HOSTNAME}" >> $COMPLETION_FILE
515
+
516
+    function_check add_ddns_domain
517
+    add_ddns_domain $WIKI_DOMAIN_NAME
518
+
519
+    # add some post-install instructions
520
+    if ! grep -q $"Wiki password" /home/$MY_USERNAME/README; then
521
+        echo '' >> /home/$MY_USERNAME/README
522
+        echo '' >> /home/$MY_USERNAME/README
523
+        echo $'Wiki' >> /home/$MY_USERNAME/README
524
+        echo '====' >> /home/$MY_USERNAME/README
525
+        echo $"Wiki onion domain: ${WIKI_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
526
+        echo $"Wiki username: $MY_USERNAME" >> /home/$MY_USERNAME/README
527
+        echo $"Wiki password: $WIKI_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
528
+        echo '' >> /home/$MY_USERNAME/README
529
+        echo $'Once you have set up the wiki then remove the install file:' >> /home/$MY_USERNAME/README
530
+        echo '' >> /home/$MY_USERNAME/README
531
+        echo "  rm /var/www/$WIKI_DOMAIN_NAME/htdocs/install.php" >> /home/$MY_USERNAME/README
532
+        echo '' >> /home/$MY_USERNAME/README
533
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
534
+        chmod 600 /home/$MY_USERNAME/README
535
+    fi
536
+
537
+    echo "Wiki domain:$WIKI_DOMAIN_NAME" >> $COMPLETION_FILE
538
+    echo 'install_wiki' >> $COMPLETION_FILE
535 539
 }
536 540
 
537 541
 # NOTE: deliberately no exit 0

+ 4
- 0
src/freedombone-app-xmpp View File

@@ -37,6 +37,10 @@ XMPP_PASSWORD=
37 37
 XMPP_CIPHERS='"EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA"'
38 38
 XMPP_ECC_CURVE='"secp384r1"'
39 39
 
40
+function change_password_xmpp {
41
+    echo -n ''
42
+}
43
+
40 44
 function reconfigure_xmpp {
41 45
     echo -n ''
42 46
 }

+ 4
- 0
src/freedombone-app-zeronet View File

@@ -49,6 +49,10 @@ ZERONET_DEFAULT_MAIL_TAGLINE="Mail for the Mesh"
49 49
 ZERONET_ID_REPO="https://github.com/HelloZeroNet/ZeroID"
50 50
 ZERONET_ID_COMMIT='ccf14fdc96fa9cdb2ddd8a7ab283a8e17a4f234b'
51 51
 
52
+function change_password_zeronet {
53
+    echo -n ''
54
+}
55
+
52 56
 function reconfigure_zeronet {
53 57
     echo -n ''
54 58
 }

+ 40
- 40
src/freedombone-tests View File

@@ -34,59 +34,59 @@ export TEXTDOMAIN=${PROJECT_NAME}-tests
34 34
 export TEXTDOMAINDIR="/usr/share/locale"
35 35
 
36 36
 function show_help {
37
-	echo ''
38
-	echo $"${PROJECT_NAME}-tests"
39
-	echo ''
40
-	echo $'Runs tests on the system'
41
-	echo ''
42
-	echo $'     --help                   Show help'
43
-	echo ''
44
-	exit 0
37
+    echo ''
38
+    echo $"${PROJECT_NAME}-tests"
39
+    echo ''
40
+    echo $'Runs tests on the system'
41
+    echo ''
42
+    echo $'     --help                   Show help'
43
+    echo ''
44
+    exit 0
45 45
 }
46 46
 
47 47
 function test_app_function_type {
48
-	filename=$1
49
-	fn_type=$2
50
-	app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
51
-	app_function=$(cat "${filename}" | grep "function ${fn_type}_${app_name} {" | awk -F "${fn_type}_" '{print $2}' | awk -F ' ' '{print $1}')
52
-	if [ ! ${app_function} ]; then
53
-		echo $"Application ${app_name} does not contain a function called '${fn_type}_${app_name}'"
54
-		echo ''
55
-		echo "See ${filename}"
56
-		exit 72852
57
-	fi
48
+    filename=$1
49
+    fn_type=$2
50
+    app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
51
+    app_function=$(cat "${filename}" | grep "function ${fn_type}_${app_name} {" | awk -F "${fn_type}_" '{print $2}' | awk -F ' ' '{print $1}')
52
+    if [ ! ${app_function} ]; then
53
+        echo $"Application ${app_name} does not contain a function called '${fn_type}_${app_name}'"
54
+        echo ''
55
+        echo "See ${filename}"
56
+        exit 72852
57
+    fi
58 58
 }
59 59
 
60 60
 function test_app_functions {
61
-	FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
61
+    FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
62 62
 
63
-	# check that these functions exist
64
-	interface_functions=( install remove backup_local backup_remote restore_local restore_remote upgrade reconfigure )
63
+    # check that these functions exist
64
+    interface_functions=( install remove backup_local backup_remote restore_local restore_remote upgrade reconfigure change_password )
65 65
 
66
-	# for all the app scripts
67
-	for filename in $FILES
68
-	do
69
-		# for each expected interface function
70
-		for f in "${interface_functions[@]}"
71
-		do
72
-			test_app_function_type ${filename} $f
73
-		done
74
-	done
66
+    # for all the app scripts
67
+    for filename in $FILES
68
+    do
69
+        # for each expected interface function
70
+        for f in "${interface_functions[@]}"
71
+        do
72
+            test_app_function_type ${filename} $f
73
+        done
74
+    done
75 75
 }
76 76
 
77 77
 while [[ $# > 1 ]]
78 78
 do
79
-	key="$1"
79
+    key="$1"
80 80
 
81
-	case $key in
82
-		-h|--help)
83
-			show_help
84
-			;;
85
-		*)
86
-			# unknown option
87
-			;;
88
-	esac
89
-	shift
81
+    case $key in
82
+        -h|--help)
83
+            show_help
84
+            ;;
85
+        *)
86
+            # unknown option
87
+            ;;
88
+    esac
89
+    shift
90 90
 done
91 91
 
92 92
 echo $'Running tests'