瀏覽代碼

xmpp uses cert if available

Bob Mottram 8 年之前
父節點
當前提交
708cad129f
共有 3 個文件被更改,包括 51 次插入14 次删除
  1. 40
    13
      src/freedombone-app-xmpp
  2. 10
    1
      src/freedombone-config
  3. 1
    0
      src/freedombone-utils-config

+ 40
- 13
src/freedombone-app-xmpp 查看文件

46
                 XMPP_ECC_CURVE
46
                 XMPP_ECC_CURVE
47
                 XMPP_ECC_CURVE
47
                 XMPP_ECC_CURVE
48
                 MY_USERNAME
48
                 MY_USERNAME
49
-                DEFAULT_DOMAIN_NAME)
49
+                DEFAULT_DOMAIN_NAME
50
+                XMPP_DOMAIN_CODE)
50
 
51
 
51
 function remove_user_xmpp {
52
 function remove_user_xmpp {
52
     remove_username="$1"
53
     remove_username="$1"
312
 
313
 
313
     if [ ! -d /etc/prosody ]; then
314
     if [ ! -d /etc/prosody ]; then
314
         echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
315
         echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
315
-        exit 52
316
+        exit 52367
316
     fi
317
     fi
317
 
318
 
318
     # obtain the prosody modules
319
     # obtain the prosody modules
331
     fi
332
     fi
332
 
333
 
333
     # create a certificate
334
     # create a certificate
334
-    if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
335
-        ${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
336
-        check_certificates xmpp
335
+    if [ ! -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
336
+        if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
337
+            ${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
338
+            check_certificates xmpp
339
+        fi
337
     fi
340
     fi
338
     chown prosody:prosody /etc/ssl/private/xmpp.key
341
     chown prosody:prosody /etc/ssl/private/xmpp.key
339
     chown prosody:prosody /etc/ssl/certs/xmpp.*
342
     chown prosody:prosody /etc/ssl/certs/xmpp.*
340
     cp -a /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/xmpp.cfg.lua
343
     cp -a /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/xmpp.cfg.lua
341
 
344
 
342
-    sed -i 's|/etc/prosody/certs/example.com.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/conf.avail/xmpp.cfg.lua
343
-    sed -i 's|/etc/prosody/certs/example.com.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/conf.avail/xmpp.cfg.lua
345
+    if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
346
+        sed -i "s|/etc/prosody/certs/example.com.key|/etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key|g" /etc/prosody/conf.avail/xmpp.cfg.lua
347
+        sed -i "s|/etc/prosody/certs/example.com.crt|/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem|g" /etc/prosody/conf.avail/xmpp.cfg.lua
348
+    else
349
+        sed -i 's|/etc/prosody/certs/example.com.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/conf.avail/xmpp.cfg.lua
350
+        sed -i 's|/etc/prosody/certs/example.com.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/conf.avail/xmpp.cfg.lua
351
+    fi
344
     if ! grep -q "xmpp.dhparam" /etc/prosody/conf.avail/xmpp.cfg.lua; then
352
     if ! grep -q "xmpp.dhparam" /etc/prosody/conf.avail/xmpp.cfg.lua; then
345
-        sed -i '/certificate =/a\        dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/conf.avail/xmpp.cfg.lua
353
+        if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam ]; then
354
+            sed -i "/certificate =/a\        dhparam = \"/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam\";" /etc/prosody/conf.avail/xmpp.cfg.lua
355
+        else
356
+            sed -i '/certificate =/a\        dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/conf.avail/xmpp.cfg.lua
357
+        fi
346
     fi
358
     fi
347
     if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/conf.avail/xmpp.cfg.lua; then
359
     if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/conf.avail/xmpp.cfg.lua; then
348
         sed -i '/certificate =/a\        options = {"no_sslv2", "no_sslv3" };' /etc/prosody/conf.avail/xmpp.cfg.lua
360
         sed -i '/certificate =/a\        options = {"no_sslv2", "no_sslv3" };' /etc/prosody/conf.avail/xmpp.cfg.lua
386
     fi
398
     fi
387
     ln -sf /etc/prosody/conf.avail/xmpp.cfg.lua /etc/prosody/conf.d/xmpp.cfg.lua
399
     ln -sf /etc/prosody/conf.avail/xmpp.cfg.lua /etc/prosody/conf.d/xmpp.cfg.lua
388
 
400
 
389
-    sed -i 's|/etc/prosody/certs/localhost.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/prosody.cfg.lua
390
-    sed -i 's|/etc/prosody/certs/localhost.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/prosody.cfg.lua
401
+    if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
402
+        sed -i "s|/etc/prosody/certs/localhost.key|/etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key|g" /etc/prosody/prosody.cfg.lua
403
+        sed -i "s|/etc/prosody/certs/localhost.crt|/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem|g" /etc/prosody/prosody.cfg.lua
404
+    else
405
+        sed -i 's|/etc/prosody/certs/localhost.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/prosody.cfg.lua
406
+        sed -i 's|/etc/prosody/certs/localhost.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/prosody.cfg.lua
407
+    fi
391
     if ! grep -q "xmpp.dhparam" /etc/prosody/prosody.cfg.lua; then
408
     if ! grep -q "xmpp.dhparam" /etc/prosody/prosody.cfg.lua; then
392
-        sed -i '/certificate =/a\    dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/prosody.cfg.lua
409
+        if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam ]; then
410
+            sed -i "/certificate =/a\    dhparam = \"/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam\";" /etc/prosody/prosody.cfg.lua
411
+        else
412
+            sed -i '/certificate =/a\    dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/prosody.cfg.lua
413
+        fi
393
     fi
414
     fi
394
     if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/prosody.cfg.lua; then
415
     if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/prosody.cfg.lua; then
395
         sed -i '/certificate =/a\    options = {"no_sslv2", "no_sslv3" };' /etc/prosody/prosody.cfg.lua
416
         sed -i '/certificate =/a\    options = {"no_sslv2", "no_sslv3" };' /etc/prosody/prosody.cfg.lua
413
     sed -i 's/--"bosh";/"bosh";/g' /etc/prosody/prosody.cfg.lua
434
     sed -i 's/--"bosh";/"bosh";/g' /etc/prosody/prosody.cfg.lua
414
     sed -i 's/authentication = "internal_plain"/authentication = "internal_hashed"/g' /etc/prosody/prosody.cfg.lua
435
     sed -i 's/authentication = "internal_plain"/authentication = "internal_hashed"/g' /etc/prosody/prosody.cfg.lua
415
     sed -i 's/enabled = false -- Remove this line to enable this host//g' /etc/prosody/prosody.cfg.lua
436
     sed -i 's/enabled = false -- Remove this line to enable this host//g' /etc/prosody/prosody.cfg.lua
416
-    sed -i 's|key = "/etc/prosody/certs/example.com.key"|key = "/etc/ssl/private/xmpp.key"|g' /etc/prosody/prosody.cfg.lua
417
-    sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
437
+    if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
438
+        # use an existing cert if possible
439
+        sed -i "s|key = \"/etc/prosody/certs/example.com.key\"|key = \"/etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key\"|g" /etc/prosody/prosody.cfg.lua
440
+        sed -i "s|certificate = \"/etc/prosody/certs/example.com.crt\"|certificate = \"/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem\"|g" /etc/prosody/prosody.cfg.lua
441
+    else
442
+        sed -i 's|key = "/etc/prosody/certs/example.com.key"|key = "/etc/ssl/private/xmpp.key"|g' /etc/prosody/prosody.cfg.lua
443
+        sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
444
+    fi
418
     sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/prosody.cfg.lua
445
     sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/prosody.cfg.lua
419
 
446
 
420
     systemctl restart prosody
447
     systemctl restart prosody

+ 10
- 1
src/freedombone-config 查看文件

190
             if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
190
             if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
191
                 dialog --backtitle $"Freedombone Configuration" \
191
                 dialog --backtitle $"Freedombone Configuration" \
192
                        --title $"Your main domain name" \
192
                        --title $"Your main domain name" \
193
-                       --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 12 55 4 \
193
+                       --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 13 55 5 \
194
                        $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 24 33 40 \
194
                        $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 24 33 40 \
195
                        $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 24 33 255 \
195
                        $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 24 33 255 \
196
                        $"mail subdomain Code:" 3 1 "$(grep 'EMAIL_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 24 33 255 \
196
                        $"mail subdomain Code:" 3 1 "$(grep 'EMAIL_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 24 33 255 \
197
+                       $"XMPP subdomain Code:" 4 1 "$(grep 'XMPP_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 4 24 33 255 \
197
                        2> $data
198
                        2> $data
198
                 sel=$?
199
                 sel=$?
199
                 case $sel in
200
                 case $sel in
203
                 DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p)
204
                 DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p)
204
                 DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p)
205
                 DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p)
205
                 EMAIL_DOMAIN_CODE=$(cat $data | sed -n 2p)
206
                 EMAIL_DOMAIN_CODE=$(cat $data | sed -n 2p)
207
+                XMPP_DOMAIN_CODE=$(cat $data | sed -n 2p)
206
                 if [ $DEFAULT_DOMAIN_NAME ]; then
208
                 if [ $DEFAULT_DOMAIN_NAME ]; then
207
                     validate_freedns_code "$DEFAULT_DOMAIN_CODE"
209
                     validate_freedns_code "$DEFAULT_DOMAIN_CODE"
208
                     if [ ! $VALID_CODE ]; then
210
                     if [ ! $VALID_CODE ]; then
216
                         EMAIL_DOMAIN_CODE=
218
                         EMAIL_DOMAIN_CODE=
217
                     fi
219
                     fi
218
                 fi
220
                 fi
221
+                if [ $XMPP_DOMAIN_CODE ]; then
222
+                    validate_freedns_code "$XMPP_DOMAIN_CODE"
223
+                    if [ ! $VALID_CODE ]; then
224
+                        DEFAULT_DOMAIN_NAME=
225
+                        XMPP_DOMAIN_CODE=
226
+                    fi
227
+                fi
219
             else
228
             else
220
                 dialog --backtitle $"Freedombone Configuration" \
229
                 dialog --backtitle $"Freedombone Configuration" \
221
                        --inputbox $"Which domain name should your email/XMPP/IRC/Mumble be associated with?" 10 45 \
230
                        --inputbox $"Which domain name should your email/XMPP/IRC/Mumble be associated with?" 10 45 \

+ 1
- 0
src/freedombone-utils-config 查看文件

48
                          DEFAULT_DOMAIN_NAME
48
                          DEFAULT_DOMAIN_NAME
49
                          DEFAULT_DOMAIN_CODE
49
                          DEFAULT_DOMAIN_CODE
50
                          EMAIL_DOMAIN_CODE
50
                          EMAIL_DOMAIN_CODE
51
+                         XMPP_DOMAIN_CODE
51
                          NAMESERVER1
52
                          NAMESERVER1
52
                          NAMESERVER2
53
                          NAMESERVER2
53
                          GET_IP_ADDRESS_URL
54
                          GET_IP_ADDRESS_URL