소스 검색

Tor dongle variant

Bob Mottram 10 년 전
부모
커밋
7851ddfbc6
1개의 변경된 파일112개의 추가작업 그리고 31개의 파일을 삭제
  1. 112
    31
      install-freedombone.sh

+ 112
- 31
install-freedombone.sh 파일 보기

@@ -99,6 +99,7 @@ VARIANT_MAILBOX="mailbox"
99 99
 VARIANT_NONMAILBOX="nonmailbox"
100 100
 VARIANT_SOCIAL="social"
101 101
 VARIANT_MEDIA="media"
102
+VARIANT_TOR_DONGLE="tordongle"
102 103
 
103 104
 # An optional configuration file which overrides some of these variables
104 105
 CONFIGURATION_FILE="freedombone.cfg"
@@ -299,7 +300,7 @@ function show_help {
299 300
   echo '-----------'
300 301
   echo 'This can either be blank if you wish to install the full system,'
301 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 304
   echo "If you wish to install everything except email then use the '$VARIANT_NONMAILBOX' variaint."
304 305
 
305 306
 }
@@ -322,7 +323,7 @@ function argument_checks {
322 323
       exit 4
323 324
   fi
324 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 327
           echo "'$SYSTEM_TYPE' is an unrecognised Freedombone variant."
327 328
           exit 30
328 329
       fi
@@ -1106,6 +1107,15 @@ function change_login_message {
1106 1107
       echo "             '    '  -' --'  - -' -'   -'-'  - " >> /etc/motd
1107 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 1119
   echo '' >> /etc/motd
1110 1120
   echo '                  Freedom in the Cloud' >> /etc/motd
1111 1121
   echo '' >> /etc/motd
@@ -1118,6 +1128,9 @@ function search_for_attached_usb_drive {
1118 1128
   if grep -Fxq "search_for_attached_usb_drive" $COMPLETION_FILE; then
1119 1129
       return
1120 1130
   fi
1131
+  if [[ $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
1132
+      return
1133
+  fi
1121 1134
   if [ -b $USB_DRIVE ]; then
1122 1135
       if [ ! -d $USB_MOUNT ]; then
1123 1136
           echo 'Mounting USB drive'
@@ -1728,7 +1741,7 @@ function configure_firewall_for_dlna {
1728 1741
       # docker does its own firewalling
1729 1742
       return
1730 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 1745
       return
1733 1746
   fi
1734 1747
   iptables -A INPUT -i eth0 -p udp --dport 1900 -j ACCEPT
@@ -1855,7 +1868,7 @@ function configure_firewall_for_git {
1855 1868
 }
1856 1869
 
1857 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 1872
       return
1860 1873
   fi
1861 1874
   if grep -Fxq "configure_firewall_for_email" $COMPLETION_FILE; then
@@ -1938,7 +1951,7 @@ function script_to_make_self_signed_certificates {
1938 1951
 }
1939 1952
 
1940 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 1955
       return
1943 1956
   fi
1944 1957
   if grep -Fxq "configure_email" $COMPLETION_FILE; then
@@ -2044,7 +2057,7 @@ function configure_email {
2044 2057
 }
2045 2058
 
2046 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 2061
       return
2049 2062
   fi
2050 2063
   if grep -Fxq "create_procmail" $COMPLETION_FILE; then
@@ -2061,7 +2074,7 @@ function create_procmail {
2061 2074
 
2062 2075
 function spam_filtering {
2063 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 2078
       return
2066 2079
   fi
2067 2080
   if grep -Fxq "spam_filtering" $COMPLETION_FILE; then
@@ -2156,7 +2169,7 @@ function spam_filtering {
2156 2169
 }
2157 2170
 
2158 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 2173
       return
2161 2174
   fi
2162 2175
   if grep -Fxq "configure_imap" $COMPLETION_FILE; then
@@ -2294,7 +2307,7 @@ function encrypt_incoming_email {
2294 2307
   # encrypts incoming mail using your GPG public key
2295 2308
   # so even if an attacker gains access to the data at rest they still need
2296 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 2311
       return
2299 2312
   fi
2300 2313
   if grep -Fxq "encrypt_incoming_email" $COMPLETION_FILE; then
@@ -2325,7 +2338,7 @@ function encrypt_outgoing_email {
2325 2338
   # encrypts outgoing mail using your GPG public key
2326 2339
   # so even if an attacker gains access to the data at rest they still need
2327 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 2342
       return
2330 2343
   fi
2331 2344
   if grep -Fxq "encrypt_outgoing_email" $COMPLETION_FILE; then
@@ -2358,7 +2371,7 @@ function encrypt_outgoing_email {
2358 2371
 }
2359 2372
 
2360 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 2375
       return
2363 2376
   fi
2364 2377
   if grep -Fxq "encrypt_all_email" $COMPLETION_FILE; then
@@ -2492,7 +2505,7 @@ function encrypt_all_email {
2492 2505
 }
2493 2506
 
2494 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 2509
       return
2497 2510
   fi
2498 2511
   if grep -Fxq "email_client" $COMPLETION_FILE; then
@@ -2604,7 +2617,7 @@ function email_client {
2604 2617
 }
2605 2618
 
2606 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 2621
       return
2609 2622
   fi
2610 2623
   if grep -Fxq "folders_for_mailing_lists" $COMPLETION_FILE; then
@@ -2664,7 +2677,7 @@ function folders_for_mailing_lists {
2664 2677
 }
2665 2678
 
2666 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 2681
       return
2669 2682
   fi
2670 2683
   if grep -Fxq "folders_for_email_addresses" $COMPLETION_FILE; then
@@ -2736,7 +2749,7 @@ function dynamic_dns_freedns {
2736 2749
 }
2737 2750
 
2738 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 2753
       return
2741 2754
   fi
2742 2755
   if grep -Fxq "create_public_mailing_list" $COMPLETION_FILE; then
@@ -2832,7 +2845,7 @@ function create_public_mailing_list {
2832 2845
 }
2833 2846
 
2834 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 2849
       return
2837 2850
   fi
2838 2851
   # This installation doesn't work, results in ruby errors
@@ -2893,7 +2906,7 @@ function create_private_mailing_list {
2893 2906
 }
2894 2907
 
2895 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 2910
       return
2898 2911
   fi
2899 2912
   EMAIL_COMPLETE_MSG='  *** Freedombone mailbox installation is complete ***'
@@ -2944,7 +2957,7 @@ function import_email {
2944 2957
 }
2945 2958
 
2946 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 2961
       return
2949 2962
   fi
2950 2963
   if grep -Fxq "install_web_server" $COMPLETION_FILE; then
@@ -3157,7 +3170,7 @@ function repair_databases_script {
3157 3170
 }
3158 3171
 
3159 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 3174
       return
3162 3175
   fi
3163 3176
   if grep -Fxq "install_owncloud_music_app" $COMPLETION_FILE; then
@@ -3183,7 +3196,7 @@ function install_owncloud_music_app {
3183 3196
 }
3184 3197
 
3185 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 3200
       return
3188 3201
   fi
3189 3202
   OWNCLOUD_COMPLETION_MSG1=" *** Freedombone $SYSTEM_TYPE is now installed ***"
@@ -3423,7 +3436,7 @@ quit" > $INSTALL_DIR/batch.sql
3423 3436
 }
3424 3437
 
3425 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 3440
       return
3428 3441
   fi
3429 3442
   if grep -Fxq "install_xmpp" $COMPLETION_FILE; then
@@ -3519,7 +3532,7 @@ function install_watchdog_script {
3519 3532
 }
3520 3533
 
3521 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 3536
       return
3524 3537
   fi
3525 3538
   if grep -Fxq "install_irc_server" $COMPLETION_FILE; then
@@ -3599,7 +3612,7 @@ function get_wiki_admin_password {
3599 3612
 }
3600 3613
 
3601 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 3616
       return
3604 3617
   fi
3605 3618
   if grep -Fxq "install_wiki" $COMPLETION_FILE; then
@@ -3879,7 +3892,7 @@ function get_blog_admin_password {
3879 3892
 }
3880 3893
 
3881 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 3896
       return
3884 3897
   fi
3885 3898
   if grep -Fxq "install_blog" $COMPLETION_FILE; then
@@ -4119,7 +4132,7 @@ function install_gnu_social {
4119 4132
   if grep -Fxq "install_gnu_social" $COMPLETION_FILE; then
4120 4133
       return
4121 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 4136
       return
4124 4137
   fi
4125 4138
   if [ ! $MICROBLOG_DOMAIN_NAME ]; then
@@ -4361,7 +4374,7 @@ function install_redmatrix {
4361 4374
   if grep -Fxq "install_redmatrix" $COMPLETION_FILE; then
4362 4375
       return
4363 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 4378
       return
4366 4379
   fi
4367 4380
   # if this is exclusively a social setup
@@ -4667,7 +4680,7 @@ function install_dlna_server {
4667 4680
   if grep -Fxq "install_dlna_server" $COMPLETION_FILE; then
4668 4681
       return
4669 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 4684
       return
4672 4685
   fi
4673 4686
   apt-get -y --force-yes install minidlna
@@ -4719,7 +4732,7 @@ function install_mediagoblin {
4719 4732
   if grep -Fxq "install_mediagoblin" $COMPLETION_FILE; then
4720 4733
       return
4721 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 4736
       return
4724 4737
   fi
4725 4738
   # if this is exclusively a writer setup
@@ -4981,16 +4994,83 @@ function intrusion_detection {
4981 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 5061
 # see https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy
4985 5062
 # Local Redirection and Anonymizing Middlebox
4986 5063
 function route_outgoing_traffic_through_tor {
4987 5064
   if grep -Fxq "route_outgoing_traffic_through_tor" $COMPLETION_FILE; then
4988 5065
       return
4989 5066
   fi
5067
+  if [[ $SYSTEM_TYPE == "$VARIANT_TOR_DONGLE" ]]; then
5068
+      return
5069
+  fi
4990 5070
   if [[ $ROUTE_THROUGH_TOR != "yes" ]]; then
4991 5071
       return
4992 5072
   fi
4993
-  apt-get -y --force-yes install tor
5073
+  apt-get -y --force-yes install tor tor-arm
4994 5074
 
4995 5075
   ### set variables
4996 5076
   # Destinations you don't want routed through Tor
@@ -5036,8 +5116,8 @@ function route_outgoing_traffic_through_tor {
5036 5116
   save_firewall_settings
5037 5117
 
5038 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 5121
   fi
5042 5122
 
5043 5123
   echo 'domain localdomain' > /etc/resolv.conf
@@ -5165,6 +5245,7 @@ create_backup_script
5165 5245
 create_restore_script
5166 5246
 backup_to_friends_servers
5167 5247
 restore_from_friend
5248
+create_tor_dongle
5168 5249
 intrusion_detection
5169 5250
 install_final
5170 5251
 echo 'Freedombone installation is complete'