Bladeren bron

Beginning of social instance builds

Bob Mottram 7 jaren geleden
bovenliggende
commit
ba1b541e3f

+ 13
- 1
src/freedombone Bestand weergeven

13
 # License
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
 # This program is free software: you can redistribute it and/or modify
18
 # This program is free software: you can redistribute it and/or modify
19
 # it under the terms of the GNU Affero General Public License as published by
19
 # it under the terms of the GNU Affero General Public License as published by
65
     ONION_ONLY="yes"
65
     ONION_ONLY="yes"
66
 fi
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
 if [ ! $CONFIGURATION_FILE ]; then
80
 if [ ! $CONFIGURATION_FILE ]; then
69
     CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
81
     CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
70
 fi
82
 fi

+ 78
- 10
src/freedombone-config Bestand weergeven

95
 DEFAULT_LANGUAGE='en_GB.UTF-8'
95
 DEFAULT_LANGUAGE='en_GB.UTF-8'
96
 ONION_ONLY="no"
96
 ONION_ONLY="no"
97
 SELECTED_USERNAME=
97
 SELECTED_USERNAME=
98
+SOCIALINSTANCE=
98
 
99
 
99
 # Mirrors settings
100
 # Mirrors settings
100
 FRIENDS_MIRRORS_SERVER=
101
 FRIENDS_MIRRORS_SERVER=
144
     echo $'Creates an inventory of remote backup locations'
145
     echo $'Creates an inventory of remote backup locations'
145
     echo ''
146
     echo ''
146
     echo ''
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
     echo ''
156
     echo ''
155
     exit 0
157
     exit 0
156
 }
158
 }
184
     save_configuration_values
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
 function choose_default_domain_name {
240
 function choose_default_domain_name {
241
+    if [ $SOCIALINSTANCE ]; then
242
+        choose_social_instance_domain_name
243
+        return
244
+    fi
245
+
188
     if [[ $ONION_ONLY != "no" ]]; then
246
     if [[ $ONION_ONLY != "no" ]]; then
189
         DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local"
247
         DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local"
190
     else
248
     else
782
             shift
840
             shift
783
             FREEDOMBONE_WEBSITE="$1"
841
             FREEDOMBONE_WEBSITE="$1"
784
             ;;
842
             ;;
843
+        --social)
844
+            shift
845
+            if [[ "$1" == 'gnusocial' || "$1" == 'postactiv' ]]; then
846
+                SOCIALINSTANCE="$1"
847
+            fi
848
+            ;;
785
         --minimal)
849
         --minimal)
786
             shift
850
             shift
787
             MINIMAL_INSTALL="$1"
851
             MINIMAL_INSTALL="$1"
1046
 
1110
 
1047
     interactive_select_language
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
     else
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
     fi
1121
     fi
1054
 
1122
 
1055
     dialog --title $"Freedombone" --msgbox "$INITIAL_MESSAGE" 15 50
1123
     dialog --title $"Freedombone" --msgbox "$INITIAL_MESSAGE" 15 50

+ 13
- 1
src/freedombone-image Bestand weergeven

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

+ 35
- 6
src/freedombone-image-customise Bestand weergeven

106
 # a new identity at every shutdown/boot
106
 # a new identity at every shutdown/boot
107
 AMNESIC='no'
107
 AMNESIC='no'
108
 
108
 
109
+# Whether this is a dedicated gnusocial or postactiv instance
110
+SOCIALINSTANCE=
111
+
109
 # defines the initial keyboard layout
112
 # defines the initial keyboard layout
110
 KEYBOARD_MAP='gb'
113
 KEYBOARD_MAP='gb'
111
 
114
 
401
     echo "    make install" >> $rootdir/root/.bashrc
404
     echo "    make install" >> $rootdir/root/.bashrc
402
 
405
 
403
     if [[ $VARIANT != "mesh" && $VARIANT != "meshclient" && $VARIANT != "meshusb" && $VARIANT != "usb" ]]; then
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
             else
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
             fi
422
             fi
410
-        else
411
-            echo "    ${PROJECT_NAME} menuconfig-onion" >> $rootdir/root/.bashrc
412
         fi
423
         fi
413
     else
424
     else
414
         echo "    echo ''" >> $rootdir/root/.bashrc
425
         echo "    echo ''" >> $rootdir/root/.bashrc
1226
     if [ ! -d $rootdir/repos ]; then
1237
     if [ ! -d $rootdir/repos ]; then
1227
         mkdir $rootdir/repos
1238
         mkdir $rootdir/repos
1228
     fi
1239
     fi
1240
+
1229
     git clone $CMAKE_REPO $rootdir/repos/cmake
1241
     git clone $CMAKE_REPO $rootdir/repos/cmake
1230
     git clone $INADYN_REPO $rootdir/repos/inadyn
1242
     git clone $INADYN_REPO $rootdir/repos/inadyn
1231
     git clone $TOMB_REPO $rootdir/repos/tomb
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
     git clone $CRYPTPAD_REPO $rootdir/repos/cryptpad
1261
     git clone $CRYPTPAD_REPO $rootdir/repos/cryptpad
1233
     git clone $DOKUWIKI_REPO $rootdir/repos/dokuwiki
1262
     git clone $DOKUWIKI_REPO $rootdir/repos/dokuwiki
1234
     git clone $ETHERPAD_REPO $rootdir/repos/etherpad
1263
     git clone $ETHERPAD_REPO $rootdir/repos/etherpad

+ 2
- 0
src/freedombone-image-make Bestand weergeven

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

+ 2
- 1
src/freedombone-utils-config Bestand weergeven

103
                          IPV6_NETWORK
103
                          IPV6_NETWORK
104
                          HWRNG_TYPE
104
                          HWRNG_TYPE
105
                          ENABLE_BATMAN
105
                          ENABLE_BATMAN
106
-                         PUBLIC_MAILING_LIST)
106
+                         PUBLIC_MAILING_LIST
107
+                         SOCIALINSTANCE)
107
 
108
 
108
 function get_completion_param {
109
 function get_completion_param {
109
     param_name="$1"
110
     param_name="$1"

+ 22
- 13
src/freedombone-utils-interactive Bestand weergeven

59
         rm -f /tmp/meshuserdevice
59
         rm -f /tmp/meshuserdevice
60
     fi
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
         else
83
         else
69
             ${PROJECT_NAME}-config \
84
             ${PROJECT_NAME}-config \
70
                            -f $CONFIGURATION_FILE \
85
                            -f $CONFIGURATION_FILE \
71
                            -w $PROJECT_WEBSITE \
86
                            -w $PROJECT_WEBSITE \
72
                            -m $MINIMUM_PASSWORD_LENGTH \
87
                            -m $MINIMUM_PASSWORD_LENGTH \
73
-                           --minimal "yes"
88
+                           --onion "yes"
74
         fi
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
     fi
90
     fi
82
     if [ -f /tmp/meshuserdevice ]; then
91
     if [ -f /tmp/meshuserdevice ]; then
83
         # mesh network user device installation
92
         # mesh network user device installation

+ 3
- 0
src/freedombone-vars Bestand weergeven

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