浏览代码

Beginning of social instance builds

Bob Mottram 7 年前
父节点
当前提交
ba1b541e3f

+ 13
- 1
src/freedombone 查看文件

@@ -13,7 +13,7 @@
13 13
 # License
14 14
 # =======
15 15
 #
16
-# Copyright (C) 2014-2016 Bob Mottram <bob@freedombone.net>
16
+# Copyright (C) 2014-2017 Bob Mottram <bob@freedombone.net>
17 17
 #
18 18
 # This program is free software: you can redistribute it and/or modify
19 19
 # it under the terms of the GNU Affero General Public License as published by
@@ -65,6 +65,18 @@ if [[ $command_options == "menuconfig-onion" ]]; then
65 65
     ONION_ONLY="yes"
66 66
 fi
67 67
 
68
+if [[ $command_options == "menuconfig-gnusocial" ]]; then
69
+    MINIMAL_INSTALL="yes"
70
+    ONION_ONLY="no"
71
+    SOCIALINSTANCE='gnusocial'
72
+fi
73
+
74
+if [[ $command_options == "menuconfig-postactiv" ]]; then
75
+    MINIMAL_INSTALL="yes"
76
+    ONION_ONLY="no"
77
+    SOCIALINSTANCE='postactiv'
78
+fi
79
+
68 80
 if [ ! $CONFIGURATION_FILE ]; then
69 81
     CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
70 82
 fi

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

@@ -95,6 +95,7 @@ MINIMAL_INSTALL="yes"
95 95
 DEFAULT_LANGUAGE='en_GB.UTF-8'
96 96
 ONION_ONLY="no"
97 97
 SELECTED_USERNAME=
98
+SOCIALINSTANCE=
98 99
 
99 100
 # Mirrors settings
100 101
 FRIENDS_MIRRORS_SERVER=
@@ -144,13 +145,14 @@ function show_help {
144 145
     echo $'Creates an inventory of remote backup locations'
145 146
     echo ''
146 147
     echo ''
147
-    echo $'  -h --help             Show help'
148
-    echo $'  -f --filename         Configuration file (usually freedombone.cfg)'
149
-    echo $'  -m --min              Minimum password length (characters)'
150
-    echo $'  -w --www              Freedombone web site'
151
-    echo $'  -b --bm               Freedombone support Bitmessage address'
152
-    echo $'  -o --onion [yes|no]   Whether to only create .onion sites'
153
-    echo $'     --minimal [yes|no] For minimalistic "consumer grade" installs'
148
+    echo $'  -h --help                         Show help'
149
+    echo $'  -f --filename                     Configuration file (usually freedombone.cfg)'
150
+    echo $'  -m --min                          Minimum password length (characters)'
151
+    echo $'  -w --www                          Freedombone web site'
152
+    echo $'  -b --bm                           Freedombone support Bitmessage address'
153
+    echo $'  -o --onion [yes|no]               Whether to only create .onion sites'
154
+    echo $'     --minimal [yes|no]             For minimalistic "consumer grade" installs'
155
+    echo $'     --social [gnusocial|postactiv] Create gnusocial/postactiv instance'
154 156
     echo ''
155 157
     exit 0
156 158
 }
@@ -184,7 +186,63 @@ function choose_email_address {
184 186
     save_configuration_values
185 187
 }
186 188
 
189
+function choose_social_instance_domain_name {
190
+    DEFAULT_DOMAIN_DETAILS_COMPLETE=
191
+    while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ]
192
+    do
193
+        data=$(tempfile 2>/dev/null)
194
+        trap "rm -f $data" 0 1 2 5 15
195
+        if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
196
+            dialog --backtitle $"Freedombone Configuration" \
197
+                   --title $"Instance domain" \
198
+                   --form $"\nEnter your instance domain name and its FreeDNS code:" 11 55 3 \
199
+                   $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 24 33 40 \
200
+                   $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 24 33 255 \
201
+                   2> $data
202
+            sel=$?
203
+            case $sel in
204
+                1) exit 1;;
205
+                255) exit 1;;
206
+            esac
207
+            DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p)
208
+            DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p)
209
+            if [ $DEFAULT_DOMAIN_NAME ]; then
210
+                validate_freedns_code "$DEFAULT_DOMAIN_CODE"
211
+                if [ ! $VALID_CODE ]; then
212
+                    DEFAULT_DOMAIN_NAME=
213
+                fi
214
+            fi
215
+        else
216
+            dialog --backtitle $"Freedombone Configuration" \
217
+                   --inputbox $"Enter your instance domain name:" 10 45 \
218
+                   "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
219
+            sel=$?
220
+            case $sel in
221
+                0) DEFAULT_DOMAIN_NAME=$(cat $data);;
222
+                1) exit 1;;
223
+                255) exit 1;;
224
+            esac
225
+        fi
226
+        if [ $DEFAULT_DOMAIN_NAME ]; then
227
+            TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME
228
+            validate_domain_name
229
+            if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then
230
+                DEFAULT_DOMAIN_NAME=
231
+                dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
232
+            else
233
+                DEFAULT_DOMAIN_DETAILS_COMPLETE="yes"
234
+            fi
235
+        fi
236
+    done
237
+    save_configuration_values
238
+}
239
+
187 240
 function choose_default_domain_name {
241
+    if [ $SOCIALINSTANCE ]; then
242
+        choose_social_instance_domain_name
243
+        return
244
+    fi
245
+
188 246
     if [[ $ONION_ONLY != "no" ]]; then
189 247
         DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local"
190 248
     else
@@ -782,6 +840,12 @@ do
782 840
             shift
783 841
             FREEDOMBONE_WEBSITE="$1"
784 842
             ;;
843
+        --social)
844
+            shift
845
+            if [[ "$1" == 'gnusocial' || "$1" == 'postactiv' ]]; then
846
+                SOCIALINSTANCE="$1"
847
+            fi
848
+            ;;
785 849
         --minimal)
786 850
             shift
787 851
             MINIMAL_INSTALL="$1"
@@ -1046,10 +1110,14 @@ function interactive_config {
1046 1110
 
1047 1111
     interactive_select_language
1048 1112
 
1049
-    if [[ $ONION_ONLY == "no" ]]; then
1050
-        INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE."
1113
+    if [ $SOCIALINSTANCE ]; then
1114
+        INITIAL_MESSAGE=$"Welcome to your Freedombone $SOCIALINSTANCE instance.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit ${FREEDOMBONE_WEBSITE}/socialinstance.html."
1051 1115
     else
1052
-        INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nWeb sites created will only be viewable within a Tor browser.\n\nFor more information please visit $FREEDOMBONE_WEBSITE."
1116
+        if [[ $ONION_ONLY == "no" ]]; then
1117
+            INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE."
1118
+        else
1119
+            INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nWeb sites created will only be viewable within a Tor browser.\n\nFor more information please visit $FREEDOMBONE_WEBSITE."
1120
+        fi
1053 1121
     fi
1054 1122
 
1055 1123
     dialog --title $"Freedombone" --msgbox "$INITIAL_MESSAGE" 15 50

+ 13
- 1
src/freedombone-image 查看文件

@@ -138,6 +138,9 @@ INSECURE='no'
138 138
 # a new identity at every shutdown/boot
139 139
 AMNESIC='no'
140 140
 
141
+# Is this a dedicated gnusocial or postactiv instance?
142
+SOCIALINSTANCE=
143
+
141 144
 # Versions used for Arch/Parabola setup
142 145
 MBR_VERSION='1.1.11'
143 146
 
@@ -400,6 +403,10 @@ do
400 403
             shift
401 404
             PROJECT_REPO="$1"
402 405
             ;;
406
+        --social|--instance)
407
+            shift
408
+            SOCIALINSTANCE="$1"
409
+            ;;
403 410
         -m|--mirror)
404 411
             shift
405 412
             MIRROR="$1"
@@ -546,6 +553,10 @@ if [[ $AMNESIC != 'no' ]]; then
546 553
     IMAGE_NAME="${IMAGE_NAME}-amnesic"
547 554
 fi
548 555
 
556
+if [[ "$SOCIALINSTANCE" == "gnusocial" || "$SOCIALINSTANCE" == "postactiv" ]]; then
557
+    IMAGE_NAME="${IMAGE_NAME}-${SOCIALINSTANCE}"
558
+fi
559
+
549 560
 cd $TEMPBUILD_DIR
550 561
 make $IMAGE_TYPE \
551 562
      MYUSERNAME="$USERNAME" \
@@ -580,7 +591,8 @@ make $IMAGE_TYPE \
580 591
      VARIANT="$VARIANT" \
581 592
      MINIMUM_PASSWORD_LENGTH="$MINIMUM_PASSWORD_LENGTH" \
582 593
      INSECURE="$INSECURE" \
583
-     AMNESIC="$AMNESIC"
594
+     AMNESIC="$AMNESIC" \
595
+     SOCIALINSTANCE="$SOCIALINSTANCE"
584 596
 
585 597
 if [ ! "$?" = "0" ]; then
586 598
     echo $'Build failed'

+ 35
- 6
src/freedombone-image-customise 查看文件

@@ -106,6 +106,9 @@ MESH_INSTALL_DIR=/var/lib
106 106
 # a new identity at every shutdown/boot
107 107
 AMNESIC='no'
108 108
 
109
+# Whether this is a dedicated gnusocial or postactiv instance
110
+SOCIALINSTANCE=
111
+
109 112
 # defines the initial keyboard layout
110 113
 KEYBOARD_MAP='gb'
111 114
 
@@ -401,14 +404,22 @@ EOF
401 404
     echo "    make install" >> $rootdir/root/.bashrc
402 405
 
403 406
     if [[ $VARIANT != "mesh" && $VARIANT != "meshclient" && $VARIANT != "meshusb" && $VARIANT != "usb" ]]; then
404
-        if [[ $ONION_ONLY == "no" ]]; then
405
-            if [[ $MINIMAL_INSTALL == "no" ]]; then
406
-                echo "    ${PROJECT_NAME} menuconfig-full" >> $rootdir/root/.bashrc
407
+        if [[ "$SOCIALINSTANCE" == "gnusocial" ]]; then
408
+            echo "    ${PROJECT_NAME} menuconfig-gnusocial" >> $rootdir/root/.bashrc
409
+        else
410
+            if [[ "$SOCIALINSTANCE" == "postactiv" ]]; then
411
+                echo "    ${PROJECT_NAME} menuconfig-postactiv" >> $rootdir/root/.bashrc
407 412
             else
408
-                echo "    ${PROJECT_NAME} menuconfig" >> $rootdir/root/.bashrc
413
+                if [[ $ONION_ONLY == "no" ]]; then
414
+                    if [[ $MINIMAL_INSTALL == "no" ]]; then
415
+                        echo "    ${PROJECT_NAME} menuconfig-full" >> $rootdir/root/.bashrc
416
+                    else
417
+                        echo "    ${PROJECT_NAME} menuconfig" >> $rootdir/root/.bashrc
418
+                    fi
419
+                else
420
+                    echo "    ${PROJECT_NAME} menuconfig-onion" >> $rootdir/root/.bashrc
421
+                fi
409 422
             fi
410
-        else
411
-            echo "    ${PROJECT_NAME} menuconfig-onion" >> $rootdir/root/.bashrc
412 423
         fi
413 424
     else
414 425
         echo "    echo ''" >> $rootdir/root/.bashrc
@@ -1226,9 +1237,27 @@ function image_preinstall_repos {
1226 1237
     if [ ! -d $rootdir/repos ]; then
1227 1238
         mkdir $rootdir/repos
1228 1239
     fi
1240
+
1229 1241
     git clone $CMAKE_REPO $rootdir/repos/cmake
1230 1242
     git clone $INADYN_REPO $rootdir/repos/inadyn
1231 1243
     git clone $TOMB_REPO $rootdir/repos/tomb
1244
+
1245
+    if [[ $SOCIALINSTANCE == "gnusocial" ]]; then
1246
+        git clone $GNUSOCIAL_REPO $rootdir/repos/gnusocial
1247
+        git clone $GNUSOCIAL_MARKDOWN_REPO $rootdir/repos/gnusocial-markdown
1248
+        git clone $QVITTER_THEME_REPO $rootdir/repos/qvitter
1249
+        git clone $PLEROMA_REPO $rootdir/repos/pleroma
1250
+        return
1251
+    fi
1252
+
1253
+    if [[ $SOCIALINSTANCE == "postactiv" ]]; then
1254
+        git clone $GNUSOCIAL_MARKDOWN_REPO $rootdir/repos/gnusocial-markdown
1255
+        git clone $QVITTER_THEME_REPO $rootdir/repos/qvitter
1256
+        git clone $PLEROMA_REPO $rootdir/repos/pleroma
1257
+        git clone $POSTACTIV_REPO $rootdir/repos/postactiv
1258
+        return
1259
+    fi
1260
+
1232 1261
     git clone $CRYPTPAD_REPO $rootdir/repos/cryptpad
1233 1262
     git clone $DOKUWIKI_REPO $rootdir/repos/dokuwiki
1234 1263
     git clone $ETHERPAD_REPO $rootdir/repos/etherpad

+ 2
- 0
src/freedombone-image-make 查看文件

@@ -77,6 +77,7 @@ export VARIANT
77 77
 export MINIMUM_PASSWORD_LENGTH
78 78
 export INSECURE
79 79
 export AMNESIC
80
+export SOCIALINSTANCE
80 81
 
81 82
 # Locate vmdebootstrap program fetched in Makefile
82 83
 basedir=`pwd`
@@ -241,6 +242,7 @@ sed -i "s|VARIANT=.*|VARIANT=\"${VARIANT}\"|g" $TEMP_CUSTOMISE3
241 242
 sed -i "s|MINIMUM_PASSWORD_LENGTH=.*|MINIMUM_PASSWORD_LENGTH=\"${MINIMUM_PASSWORD_LENGTH}\"|g" $TEMP_CUSTOMISE3
242 243
 sed -i "s|INSECURE=.*|INSECURE=\"${INSECURE}\"|g" $TEMP_CUSTOMISE3
243 244
 sed -i "s|AMNESIC=.*|AMNESIC=\"${AMNESIC}\"|g" $TEMP_CUSTOMISE3
245
+sed -i "s|SOCIALINSTANCE=.*|SOCIALINSTANCE=\"${SOCIALINSTANCE}\"|g" $TEMP_CUSTOMISE3
244 246
 sed -i 's|#!/bin/bash||g' $TEMP_CUSTOMISE3
245 247
 
246 248
 cat $TEMP_CUSTOMISE2 $TEMP_CUSTOMISE3 > $TEMP_CUSTOMISE4

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

@@ -103,7 +103,8 @@ configuration_variables=(FRIENDS_MIRRORS_SERVER
103 103
                          IPV6_NETWORK
104 104
                          HWRNG_TYPE
105 105
                          ENABLE_BATMAN
106
-                         PUBLIC_MAILING_LIST)
106
+                         PUBLIC_MAILING_LIST
107
+                         SOCIALINSTANCE)
107 108
 
108 109
 function get_completion_param {
109 110
     param_name="$1"

+ 22
- 13
src/freedombone-utils-interactive 查看文件

@@ -59,25 +59,34 @@ function interactive_configuration {
59 59
         rm -f /tmp/meshuserdevice
60 60
     fi
61 61
 
62
-    if [[ $ONION_ONLY == "no" ]]; then
63
-        if [[ $MINIMAL_INSTALL == "no" ]]; then
64
-            ${PROJECT_NAME}-config \
65
-                           -f $CONFIGURATION_FILE \
66
-                           -w $PROJECT_WEBSITE \
67
-                           -m $MINIMUM_PASSWORD_LENGTH
62
+    if [ $SOCIALINSTANCE ]; then
63
+        ${PROJECT_NAME}-config \
64
+                       -f $CONFIGURATION_FILE \
65
+                       -w $PROJECT_WEBSITE \
66
+                       -m $MINIMUM_PASSWORD_LENGTH \
67
+                       --minimal "yes" \
68
+                       --social $SOCIALINSTANCE
69
+    else
70
+        if [[ $ONION_ONLY == "no" ]]; then
71
+            if [[ $MINIMAL_INSTALL == "no" ]]; then
72
+                ${PROJECT_NAME}-config \
73
+                               -f $CONFIGURATION_FILE \
74
+                               -w $PROJECT_WEBSITE \
75
+                               -m $MINIMUM_PASSWORD_LENGTH
76
+            else
77
+                ${PROJECT_NAME}-config \
78
+                               -f $CONFIGURATION_FILE \
79
+                               -w $PROJECT_WEBSITE \
80
+                               -m $MINIMUM_PASSWORD_LENGTH \
81
+                               --minimal "yes"
82
+            fi
68 83
         else
69 84
             ${PROJECT_NAME}-config \
70 85
                            -f $CONFIGURATION_FILE \
71 86
                            -w $PROJECT_WEBSITE \
72 87
                            -m $MINIMUM_PASSWORD_LENGTH \
73
-                           --minimal "yes"
88
+                           --onion "yes"
74 89
         fi
75
-    else
76
-        ${PROJECT_NAME}-config \
77
-                       -f $CONFIGURATION_FILE \
78
-                       -w $PROJECT_WEBSITE \
79
-                       -m $MINIMUM_PASSWORD_LENGTH \
80
-                       --onion "yes"
81 90
     fi
82 91
     if [ -f /tmp/meshuserdevice ]; then
83 92
         # mesh network user device installation

+ 3
- 0
src/freedombone-vars 查看文件

@@ -77,6 +77,9 @@ DEBIAN_VERSION="stretch"
77 77
 # social key management
78 78
 ENABLE_SOCIAL_KEY_MANAGEMENT="no"
79 79
 
80
+# Whether this is a dedicated gnusocial or postactiv instance
81
+SOCIALINSTANCE=
82
+
80 83
 # include utils
81 84
 UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
82 85
 for f in $UTILS_FILES