浏览代码

Tor dongle variant

Bob Mottram 10 年前
父节点
当前提交
7851ddfbc6
共有 1 个文件被更改,包括 112 次插入31 次删除
  1. 112
    31
      install-freedombone.sh

+ 112
- 31
install-freedombone.sh 查看文件

99
 VARIANT_NONMAILBOX="nonmailbox"
99
 VARIANT_NONMAILBOX="nonmailbox"
100
 VARIANT_SOCIAL="social"
100
 VARIANT_SOCIAL="social"
101
 VARIANT_MEDIA="media"
101
 VARIANT_MEDIA="media"
102
+VARIANT_TOR_DONGLE="tordongle"
102
 
103
 
103
 # An optional configuration file which overrides some of these variables
104
 # An optional configuration file which overrides some of these variables
104
 CONFIGURATION_FILE="freedombone.cfg"
105
 CONFIGURATION_FILE="freedombone.cfg"
299
   echo '-----------'
300
   echo '-----------'
300
   echo 'This can either be blank if you wish to install the full system,'
301
   echo 'This can either be blank if you wish to install the full system,'
301
   echo "or for more specialised variants you can specify '$VARIANT_MAILBOX', '$VARIANT_CLOUD',"
302
   echo "or for more specialised variants you can specify '$VARIANT_MAILBOX', '$VARIANT_CLOUD',"
302
-  echo "'$VARIANT_CHAT', '$VARIANT_SOCIAL', '$VARIANT_MEDIA' or '$VARIANT_WRITER'."
303
+  echo "'$VARIANT_CHAT', '$VARIANT_SOCIAL', '$VARIANT_MEDIA', '$VARIANT_TOR_DONGLE' or '$VARIANT_WRITER'."
303
   echo "If you wish to install everything except email then use the '$VARIANT_NONMAILBOX' variaint."
304
   echo "If you wish to install everything except email then use the '$VARIANT_NONMAILBOX' variaint."
304
 
305
 
305
 }
306
 }
322
       exit 4
323
       exit 4
323
   fi
324
   fi
324
   if [ $SYSTEM_TYPE ]; then
325
   if [ $SYSTEM_TYPE ]; then
325
-      if [[ $SYSTEM_TYPE != $VARIANT_WRITER && $SYSTEM_TYPE != $VARIANT_CLOUD && $SYSTEM_TYPE != $VARIANT_CHAT && $SYSTEM_TYPE != $VARIANT_MAILBOX && $SYSTEM_TYPE != $VARIANT_NONMAILBOX && $SYSTEM_TYPE != $VARIANT_SOCIAL && $SYSTEM_TYPE != $VARIANT_MEDIA ]]; then
326
+      if [[ $SYSTEM_TYPE != $VARIANT_WRITER && $SYSTEM_TYPE != $VARIANT_CLOUD && $SYSTEM_TYPE != $VARIANT_CHAT && $SYSTEM_TYPE != $VARIANT_MAILBOX && $SYSTEM_TYPE != $VARIANT_NONMAILBOX && $SYSTEM_TYPE != $VARIANT_SOCIAL && $SYSTEM_TYPE != $VARIANT_MEDIA && $SYSTEM_TYPE != $VARIANT_TOR_DONGLE ]]; then
326
           echo "'$SYSTEM_TYPE' is an unrecognised Freedombone variant."
327
           echo "'$SYSTEM_TYPE' is an unrecognised Freedombone variant."
327
           exit 30
328
           exit 30
328
       fi
329
       fi
1106
       echo "             '    '  -' --'  - -' -'   -'-'  - " >> /etc/motd
1107
       echo "             '    '  -' --'  - -' -'   -'-'  - " >> /etc/motd
1107
   fi
1108
   fi
1108
 
1109
 
1110
+  if [[ $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
1111
+      echo '          .---.         .--.               .     ' >> /etc/motd
1112
+      echo '            |           |   :              |     ' >> /etc/motd
1113
+      echo '            | .-. .--.  |   | .-. .--. .-..| .-. ' >> /etc/motd
1114
+      echo "            |(   )|     |   ;(   )|  |(   ||(.-' " >> /etc/motd
1115
+      echo "            '  -' '     '--'   -' '   - - | - --'" >> /etc/motd
1116
+      echo "                                       ._.'      " >> /etc/motd
1117
+  fi
1118
+
1109
   echo '' >> /etc/motd
1119
   echo '' >> /etc/motd
1110
   echo '                  Freedom in the Cloud' >> /etc/motd
1120
   echo '                  Freedom in the Cloud' >> /etc/motd
1111
   echo '' >> /etc/motd
1121
   echo '' >> /etc/motd
1118
   if grep -Fxq "search_for_attached_usb_drive" $COMPLETION_FILE; then
1128
   if grep -Fxq "search_for_attached_usb_drive" $COMPLETION_FILE; then
1119
       return
1129
       return
1120
   fi
1130
   fi
1131
+  if [[ $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
1132
+      return
1133
+  fi
1121
   if [ -b $USB_DRIVE ]; then
1134
   if [ -b $USB_DRIVE ]; then
1122
       if [ ! -d $USB_MOUNT ]; then
1135
       if [ ! -d $USB_MOUNT ]; then
1123
           echo 'Mounting USB drive'
1136
           echo 'Mounting USB drive'
1728
       # docker does its own firewalling
1741
       # docker does its own firewalling
1729
       return
1742
       return
1730
   fi
1743
   fi
1731
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" ]]; then
1744
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
1732
       return
1745
       return
1733
   fi
1746
   fi
1734
   iptables -A INPUT -i eth0 -p udp --dport 1900 -j ACCEPT
1747
   iptables -A INPUT -i eth0 -p udp --dport 1900 -j ACCEPT
1855
 }
1868
 }
1856
 
1869
 
1857
 function configure_firewall_for_email {
1870
 function configure_firewall_for_email {
1858
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
1871
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
1859
       return
1872
       return
1860
   fi
1873
   fi
1861
   if grep -Fxq "configure_firewall_for_email" $COMPLETION_FILE; then
1874
   if grep -Fxq "configure_firewall_for_email" $COMPLETION_FILE; then
1938
 }
1951
 }
1939
 
1952
 
1940
 function configure_email {
1953
 function configure_email {
1941
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
1954
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
1942
       return
1955
       return
1943
   fi
1956
   fi
1944
   if grep -Fxq "configure_email" $COMPLETION_FILE; then
1957
   if grep -Fxq "configure_email" $COMPLETION_FILE; then
2044
 }
2057
 }
2045
 
2058
 
2046
 function create_procmail {
2059
 function create_procmail {
2047
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2060
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2048
       return
2061
       return
2049
   fi
2062
   fi
2050
   if grep -Fxq "create_procmail" $COMPLETION_FILE; then
2063
   if grep -Fxq "create_procmail" $COMPLETION_FILE; then
2061
 
2074
 
2062
 function spam_filtering {
2075
 function spam_filtering {
2063
   # NOTE: spamassassin installation currently doesn't work, sa-compile fails with a make error 23/09/2014
2076
   # NOTE: spamassassin installation currently doesn't work, sa-compile fails with a make error 23/09/2014
2064
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2077
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2065
       return
2078
       return
2066
   fi
2079
   fi
2067
   if grep -Fxq "spam_filtering" $COMPLETION_FILE; then
2080
   if grep -Fxq "spam_filtering" $COMPLETION_FILE; then
2156
 }
2169
 }
2157
 
2170
 
2158
 function configure_imap {
2171
 function configure_imap {
2159
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2172
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2160
       return
2173
       return
2161
   fi
2174
   fi
2162
   if grep -Fxq "configure_imap" $COMPLETION_FILE; then
2175
   if grep -Fxq "configure_imap" $COMPLETION_FILE; then
2294
   # encrypts incoming mail using your GPG public key
2307
   # encrypts incoming mail using your GPG public key
2295
   # so even if an attacker gains access to the data at rest they still need
2308
   # so even if an attacker gains access to the data at rest they still need
2296
   # to know your GPG key password to be able to read anything
2309
   # to know your GPG key password to be able to read anything
2297
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2310
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2298
       return
2311
       return
2299
   fi
2312
   fi
2300
   if grep -Fxq "encrypt_incoming_email" $COMPLETION_FILE; then
2313
   if grep -Fxq "encrypt_incoming_email" $COMPLETION_FILE; then
2325
   # encrypts outgoing mail using your GPG public key
2338
   # encrypts outgoing mail using your GPG public key
2326
   # so even if an attacker gains access to the data at rest they still need
2339
   # so even if an attacker gains access to the data at rest they still need
2327
   # to know your GPG key password to be able to read sent mail
2340
   # to know your GPG key password to be able to read sent mail
2328
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2341
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2329
       return
2342
       return
2330
   fi
2343
   fi
2331
   if grep -Fxq "encrypt_outgoing_email" $COMPLETION_FILE; then
2344
   if grep -Fxq "encrypt_outgoing_email" $COMPLETION_FILE; then
2358
 }
2371
 }
2359
 
2372
 
2360
 function encrypt_all_email {
2373
 function encrypt_all_email {
2361
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2374
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2362
       return
2375
       return
2363
   fi
2376
   fi
2364
   if grep -Fxq "encrypt_all_email" $COMPLETION_FILE; then
2377
   if grep -Fxq "encrypt_all_email" $COMPLETION_FILE; then
2492
 }
2505
 }
2493
 
2506
 
2494
 function email_client {
2507
 function email_client {
2495
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2508
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2496
       return
2509
       return
2497
   fi
2510
   fi
2498
   if grep -Fxq "email_client" $COMPLETION_FILE; then
2511
   if grep -Fxq "email_client" $COMPLETION_FILE; then
2604
 }
2617
 }
2605
 
2618
 
2606
 function folders_for_mailing_lists {
2619
 function folders_for_mailing_lists {
2607
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2620
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2608
       return
2621
       return
2609
   fi
2622
   fi
2610
   if grep -Fxq "folders_for_mailing_lists" $COMPLETION_FILE; then
2623
   if grep -Fxq "folders_for_mailing_lists" $COMPLETION_FILE; then
2664
 }
2677
 }
2665
 
2678
 
2666
 function folders_for_email_addresses {
2679
 function folders_for_email_addresses {
2667
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2680
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2668
       return
2681
       return
2669
   fi
2682
   fi
2670
   if grep -Fxq "folders_for_email_addresses" $COMPLETION_FILE; then
2683
   if grep -Fxq "folders_for_email_addresses" $COMPLETION_FILE; then
2736
 }
2749
 }
2737
 
2750
 
2738
 function create_public_mailing_list {
2751
 function create_public_mailing_list {
2739
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2752
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2740
       return
2753
       return
2741
   fi
2754
   fi
2742
   if grep -Fxq "create_public_mailing_list" $COMPLETION_FILE; then
2755
   if grep -Fxq "create_public_mailing_list" $COMPLETION_FILE; then
2832
 }
2845
 }
2833
 
2846
 
2834
 function create_private_mailing_list {
2847
 function create_private_mailing_list {
2835
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2848
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2836
       return
2849
       return
2837
   fi
2850
   fi
2838
   # This installation doesn't work, results in ruby errors
2851
   # This installation doesn't work, results in ruby errors
2893
 }
2906
 }
2894
 
2907
 
2895
 function import_email {
2908
 function import_email {
2896
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" ]]; then
2909
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_NONMAILBOX" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2897
       return
2910
       return
2898
   fi
2911
   fi
2899
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
2912
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
2944
 }
2957
 }
2945
 
2958
 
2946
 function install_web_server {
2959
 function install_web_server {
2947
-  if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" ]]; then
2960
+  if [[ $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
2948
       return
2961
       return
2949
   fi
2962
   fi
2950
   if grep -Fxq "install_web_server" $COMPLETION_FILE; then
2963
   if grep -Fxq "install_web_server" $COMPLETION_FILE; then
3157
 }
3170
 }
3158
 
3171
 
3159
 function install_owncloud_music_app {
3172
 function install_owncloud_music_app {
3160
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
3173
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
3161
       return
3174
       return
3162
   fi
3175
   fi
3163
   if grep -Fxq "install_owncloud_music_app" $COMPLETION_FILE; then
3176
   if grep -Fxq "install_owncloud_music_app" $COMPLETION_FILE; then
3183
 }
3196
 }
3184
 
3197
 
3185
 function install_owncloud {
3198
 function install_owncloud {
3186
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
3199
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
3187
       return
3200
       return
3188
   fi
3201
   fi
3189
   OWNCLOUD_COMPLETION_MSG1=" *** Freedombone $SYSTEM_TYPE is now installed ***"
3202
   OWNCLOUD_COMPLETION_MSG1=" *** Freedombone $SYSTEM_TYPE is now installed ***"
3423
 }
3436
 }
3424
 
3437
 
3425
 function install_xmpp {
3438
 function install_xmpp {
3426
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
3439
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
3427
       return
3440
       return
3428
   fi
3441
   fi
3429
   if grep -Fxq "install_xmpp" $COMPLETION_FILE; then
3442
   if grep -Fxq "install_xmpp" $COMPLETION_FILE; then
3519
 }
3532
 }
3520
 
3533
 
3521
 function install_irc_server {
3534
 function install_irc_server {
3522
-  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
3535
+  if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
3523
       return
3536
       return
3524
   fi
3537
   fi
3525
   if grep -Fxq "install_irc_server" $COMPLETION_FILE; then
3538
   if grep -Fxq "install_irc_server" $COMPLETION_FILE; then
3599
 }
3612
 }
3600
 
3613
 
3601
 function install_wiki {
3614
 function install_wiki {
3602
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
3615
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
3603
       return
3616
       return
3604
   fi
3617
   fi
3605
   if grep -Fxq "install_wiki" $COMPLETION_FILE; then
3618
   if grep -Fxq "install_wiki" $COMPLETION_FILE; then
3879
 }
3892
 }
3880
 
3893
 
3881
 function install_blog {
3894
 function install_blog {
3882
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
3895
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
3883
       return
3896
       return
3884
   fi
3897
   fi
3885
   if grep -Fxq "install_blog" $COMPLETION_FILE; then
3898
   if grep -Fxq "install_blog" $COMPLETION_FILE; then
4119
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
4132
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
4120
       return
4133
       return
4121
   fi
4134
   fi
4122
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
4135
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4123
       return
4136
       return
4124
   fi
4137
   fi
4125
   if [ ! $MICROBLOG_DOMAIN_NAME ]; then
4138
   if [ ! $MICROBLOG_DOMAIN_NAME ]; then
4361
   if grep -Fxq "install_redmatrix" $COMPLETION_FILE; then
4374
   if grep -Fxq "install_redmatrix" $COMPLETION_FILE; then
4362
       return
4375
       return
4363
   fi
4376
   fi
4364
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MEDIA" ]]; then
4377
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4365
       return
4378
       return
4366
   fi
4379
   fi
4367
   # if this is exclusively a social setup
4380
   # if this is exclusively a social setup
4667
   if grep -Fxq "install_dlna_server" $COMPLETION_FILE; then
4680
   if grep -Fxq "install_dlna_server" $COMPLETION_FILE; then
4668
       return
4681
       return
4669
   fi
4682
   fi
4670
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" ]]; then
4683
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4671
       return
4684
       return
4672
   fi
4685
   fi
4673
   apt-get -y --force-yes install minidlna
4686
   apt-get -y --force-yes install minidlna
4719
   if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
4732
   if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
4720
       return
4733
       return
4721
   fi
4734
   fi
4722
-  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" ]]; then
4735
+  if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_MAILBOX" || $SYSTEM_TYPE == "$VARIANT_CHAT" || $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
4723
       return
4736
       return
4724
   fi
4737
   fi
4725
   # if this is exclusively a writer setup
4738
   # if this is exclusively a writer setup
4981
   echo 'intrusion_detection' >> $COMPLETION_FILE
4994
   echo 'intrusion_detection' >> $COMPLETION_FILE
4982
 }
4995
 }
4983
 
4996
 
4997
+# see http://adammelton.com/tor_dongle.php
4998
+# Attach the BeagleBone to a PC via USB and then have an enthernet
4999
+# connection to the internet router
5000
+function create_tor_dongle {
5001
+  if grep -Fxq "create_tor_dongle" $COMPLETION_FILE; then
5002
+      return
5003
+  fi
5004
+  if [[ $SYSTEM_TYPE != "$VARIANT_TOR_DONGLE" ]]; then
5005
+      return
5006
+  fi
5007
+
5008
+  apt-get -y --force-yes install tor tor-arm
5009
+
5010
+  # firewall
5011
+  iptables -A INPUT -i usb0 -p tcp --dport 9050 -j ACCEPT
5012
+  iptables -A INPUT -i usb0 -p tcp --dport 9051 -j ACCEPT
5013
+  save_firewall_settings
5014
+
5015
+  # tor settings
5016
+  sed -i "s/#SocksPort 192.168.0.1:9100/SocksPort 192.168.7.2:9050/g" /etc/tor/torrc
5017
+  sed -i 's/#ControlPort 9051/ControlPort 9051/g' /etc/tor/torrc
5018
+  sed -i 's/#CookieAuthentication 1/CookieAuthentication 1/g' /etc/tor/torrc
5019
+  if ! grep -q "DisableDebuggerAttachment" /etc/tor/torrc; then
5020
+      echo 'DisableDebuggerAttachment 0' >> /etc/tor/torrc
5021
+  fi
5022
+
5023
+  # ensure that USB networking is enabled
5024
+  echo '# The loopback network interface' > /etc/network/interfaces
5025
+  echo 'auto lo' >> /etc/network/interfaces
5026
+  echo 'iface lo inet loopback' >> /etc/network/interfaces
5027
+  echo '' >> /etc/network/interfaces
5028
+  echo '# The primary network interface' >> /etc/network/interfaces
5029
+  echo 'auto eth0' >> /etc/network/interfaces
5030
+  echo 'iface eth0 inet dhcp' >> /etc/network/interfaces
5031
+  echo '' >> /etc/network/interfaces
5032
+  echo '# USB network interface' >> /etc/network/interfaces
5033
+  echo 'iface usb0 inet static' >> /etc/network/interfaces
5034
+  echo '    address 192.168.7.2' >> /etc/network/interfaces
5035
+  echo '    netmask 255.255.255.0' >> /etc/network/interfaces
5036
+  echo '    network 192.168.7.0' >> /etc/network/interfaces
5037
+  echo '    gateway 192.168.7.1' >> /etc/network/interfaces
5038
+
5039
+  if ! grep -q "Tor Dongle" /home/$MY_USERNAME/README; then
5040
+      echo '' >> /home/$MY_USERNAME/README
5041
+      echo '' >> /home/$MY_USERNAME/README
5042
+      echo 'Tor Dongle' >> /home/$MY_USERNAME/README
5043
+      echo '==========' >> /home/$MY_USERNAME/README
5044
+      echo 'Connect your PC to the Beaglebone via the USB cable' >> /home/$MY_USERNAME/README
5045
+      echo 'and the Beaglebone ethernet to your internet router.' >> /home/$MY_USERNAME/README
5046
+      echo '' >> /home/$MY_USERNAME/README
5047
+      echo 'Within your network proxy settings set the SOCKS host' >> /home/$MY_USERNAME/README
5048
+      echo 'to 192.168.7.2 and the port to 9050, with remote' >> /home/$MY_USERNAME/README
5049
+      echo 'DNS enabled. There should be no proxying for localhost' >> /home/$MY_USERNAME/README
5050
+      echo 'and 127.0.0.1' >> /home/$MY_USERNAME/README
5051
+  fi
5052
+
5053
+  echo 'Freedombone Tor Dongle installation is complete'
5054
+  cat /home/$MY_USERNAME/README
5055
+
5056
+  service networking restart
5057
+  service tor restart
5058
+  exit 873
5059
+}
5060
+
4984
 # see https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy
5061
 # see https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy
4985
 # Local Redirection and Anonymizing Middlebox
5062
 # Local Redirection and Anonymizing Middlebox
4986
 function route_outgoing_traffic_through_tor {
5063
 function route_outgoing_traffic_through_tor {
4987
   if grep -Fxq "route_outgoing_traffic_through_tor" $COMPLETION_FILE; then
5064
   if grep -Fxq "route_outgoing_traffic_through_tor" $COMPLETION_FILE; then
4988
       return
5065
       return
4989
   fi
5066
   fi
5067
+  if [[ $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
5068
+      return
5069
+  fi
4990
   if [[ $ROUTE_THROUGH_TOR != "yes" ]]; then
5070
   if [[ $ROUTE_THROUGH_TOR != "yes" ]]; then
4991
       return
5071
       return
4992
   fi
5072
   fi
4993
-  apt-get -y --force-yes install tor
5073
+  apt-get -y --force-yes install tor tor-arm
4994
 
5074
 
4995
   ### set variables
5075
   ### set variables
4996
   # Destinations you don't want routed through Tor
5076
   # Destinations you don't want routed through Tor
5036
   save_firewall_settings
5116
   save_firewall_settings
5037
 
5117
 
5038
   if ! grep -q "fs.file-max" /etc/sysctl.conf; then
5118
   if ! grep -q "fs.file-max" /etc/sysctl.conf; then
5039
-	  echo "fs.file-max=100000" >> /etc/sysctl.conf
5040
-	  /sbin/sysctl -p
5119
+      echo "fs.file-max=100000" >> /etc/sysctl.conf
5120
+      /sbin/sysctl -p
5041
   fi
5121
   fi
5042
 
5122
 
5043
   echo 'domain localdomain' > /etc/resolv.conf
5123
   echo 'domain localdomain' > /etc/resolv.conf
5165
 create_restore_script
5245
 create_restore_script
5166
 backup_to_friends_servers
5246
 backup_to_friends_servers
5167
 restore_from_friend
5247
 restore_from_friend
5248
+create_tor_dongle
5168
 intrusion_detection
5249
 intrusion_detection
5169
 install_final
5250
 install_final
5170
 echo 'Freedombone installation is complete'
5251
 echo 'Freedombone installation is complete'