Browse Source

Beginning of ZeroMail integration

Bob Mottram 9 years ago
parent
commit
3d52c309d9
3 changed files with 284 additions and 0 deletions
  1. 133
    0
      src/freedombone
  2. 99
    0
      src/freedombone-meshweb
  3. 52
    0
      src/zeronetavahi

+ 133
- 0
src/freedombone View File

433
 ZERONET_COMMIT='675bd462556c541d65e2d95f91f899146a373aad'
433
 ZERONET_COMMIT='675bd462556c541d65e2d95f91f899146a373aad'
434
 ZERONET_BLOG_REPO='https://github.com/HelloZeroNet/ZeroBlog'
434
 ZERONET_BLOG_REPO='https://github.com/HelloZeroNet/ZeroBlog'
435
 ZERONET_BLOG_COMMIT='bbb0d6c36465fed2e6df71f1aab45fcc9c6ad609'
435
 ZERONET_BLOG_COMMIT='bbb0d6c36465fed2e6df71f1aab45fcc9c6ad609'
436
+ZERONET_MAIL_REPO='https://github.com/HelloZeroNet/ZeroMail'
437
+ZERONET_MAIL_COMMIT='955af09d643c72b02e4983d71eca5c0c93a6c131'
436
 ZERONET_FORUM_REPO='https://github.com/HelloZeroNet/ZeroTalk'
438
 ZERONET_FORUM_REPO='https://github.com/HelloZeroNet/ZeroTalk'
437
 ZERONET_FORUM_COMMIT='e2d2c9cb1cfbfef91b244935efb5c14c2ad95faa'
439
 ZERONET_FORUM_COMMIT='e2d2c9cb1cfbfef91b244935efb5c14c2ad95faa'
438
 ZERONET_URL=http://127.0.0.1:43110
440
 ZERONET_URL=http://127.0.0.1:43110
440
 TRACKER_PORT=6969
442
 TRACKER_PORT=6969
441
 ZERONET_DEFAULT_BLOG_TAGLINE="Blogging on the Mesh"
443
 ZERONET_DEFAULT_BLOG_TAGLINE="Blogging on the Mesh"
442
 ZERONET_DEFAULT_FORUM_TAGLINE="A decentralized discussion group"
444
 ZERONET_DEFAULT_FORUM_TAGLINE="A decentralized discussion group"
445
+ZERONET_DEFAULT_MAIL_TAGLINE="Mail for the Mesh"
443
 
446
 
444
 # https://github.com/ipfs/go-ipfs
447
 # https://github.com/ipfs/go-ipfs
445
 IPFS_GO_REPO="github.com/ipfs/go-ipfs/cmd/ipfs"
448
 IPFS_GO_REPO="github.com/ipfs/go-ipfs/cmd/ipfs"
910
       if grep -q "ZERONET_BLOG_COMMIT" $CONFIGURATION_FILE; then
913
       if grep -q "ZERONET_BLOG_COMMIT" $CONFIGURATION_FILE; then
911
           ZERONET_BLOG_COMMIT=$(grep "ZERONET_BLOG_COMMIT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
914
           ZERONET_BLOG_COMMIT=$(grep "ZERONET_BLOG_COMMIT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
912
       fi
915
       fi
916
+      if grep -q "ZERONET_MAIL_COMMIT" $CONFIGURATION_FILE; then
917
+          ZERONET_MAIL_COMMIT=$(grep "ZERONET_MAIL_COMMIT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
918
+      fi
913
       if grep -q "ZERONET_FORUM_COMMIT" $CONFIGURATION_FILE; then
919
       if grep -q "ZERONET_FORUM_COMMIT" $CONFIGURATION_FILE; then
914
           ZERONET_FORUM_COMMIT=$(grep "ZERONET_FORUM_COMMIT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
920
           ZERONET_FORUM_COMMIT=$(grep "ZERONET_FORUM_COMMIT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
915
       fi
921
       fi
1974
   echo 'install_zeronet_blog' >> $COMPLETION_FILE
1980
   echo 'install_zeronet_blog' >> $COMPLETION_FILE
1975
 }
1981
 }
1976
 
1982
 
1983
+function install_zeronet_mail {
1984
+  if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
1985
+      return
1986
+  fi
1987
+
1988
+  if [ -d /opt/zeronet/ZeroMail ]; then
1989
+      if grep -q "ZeroNet Mail commit" $COMPLETION_FILE; then
1990
+          CURRENT_ZERONET_MAIL_COMMIT=$(grep "ZeroNet Mail commit" $COMPLETION_FILE | awk -F ':' '{print $2}')
1991
+          if [[ "$CURRENT_ZERONET_MAIL_COMMIT" != "$ZERONET_MAIL_COMMIT" ]]; then
1992
+              cd /opt/zeronet/ZeroMail
1993
+              git stash
1994
+              git checkout master
1995
+              git pull
1996
+              git checkout $ZERONET_MAIL_COMMIT -b $ZERONET_MAIL_COMMIT
1997
+              sed -i "s/ZeroNet Mail commit.*/ZeroNet Mail commit:$ZERONET_MAIL_COMMIT/g" $COMPLETION_FILE
1998
+          fi
1999
+      else
2000
+          echo "ZeroNet Mail commit:$ZERONET_MAIL_COMMIT" >> $COMPLETION_FILE
2001
+      fi
2002
+  fi
2003
+
2004
+  if grep -Fxq "install_zeronet_mail" $COMPLETION_FILE; then
2005
+      return
2006
+  fi
2007
+
2008
+  if [ ! -f /home/$MY_USERNAME/README ]; then
2009
+      touch /home/$MY_USERNAME/README
2010
+  fi
2011
+
2012
+  if grep -q "ZeroNet Mail address" /home/$MY_USERNAME/README; then
2013
+      return
2014
+  fi
2015
+
2016
+  if [ ! -d /etc/avahi ]; then
2017
+      echo 'Avahi is not installed'
2018
+      exit 736
2019
+  fi
2020
+
2021
+  ZERONET_DEFAULT_MAIL_TITLE="${MY_USERNAME}'s Mail"
2022
+
2023
+  cd /opt/zeronet
2024
+  python zeronet.py --batch siteCreate 2> /opt/zeronet/mail.txt
2025
+  if [ ! -f /opt/zeronet/mail.txt ]; then
2026
+      echo 'Unable to create mail'
2027
+      exit 479
2028
+  fi
2029
+  mail_address=$(cat mail.txt | grep "Site address" | awk -F ':' '{print $2}')
2030
+  mail_private_key=$(cat mail.txt | grep "Site private key" | awk -F ':' '{print $2}')
2031
+  ZERONET_MAIL_ADDRESS=${mail_address//[[:blank:]]/}
2032
+  ZERONET_MAIL_PRIVATE_KEY=${mail_private_key//[[:blank:]]/}
2033
+
2034
+  if [ ${#ZERONET_MAIL_ADDRESS} -lt 20 ]; then
2035
+      echo $"Address:    $ZERONET_MAIL_ADDRESS"
2036
+      echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
2037
+      echo $'Unable to create zeronet mail address'
2038
+      exit 7358
2039
+  fi
2040
+
2041
+  if [ ${#ZERONET_MAIL_PRIVATE_KEY} -lt 20 ]; then
2042
+      echo $"Address:    $ZERONET_MAIL_ADDRESS"
2043
+      echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
2044
+      echo $'Unable to create zeronet mail private key'
2045
+      exit 1639
2046
+  fi
2047
+
2048
+  if [ ! -d "/opt/zeronet/data/$ZERONET_MAIL_ADDRESS" ]; then
2049
+      echo $"Unable to find site directory: /opt/zeronet/data/$ZERONET_MAIL_ADDRESS"
2050
+      exit 7638
2051
+  fi
2052
+
2053
+  git clone $ZERONET_MAIL_REPO ZeroMail
2054
+  if [ ! -d /opt/zeronet/ZeroMail ]; then
2055
+      echo 'ZeroMail repo could not be cloned'
2056
+      exit 6739
2057
+  fi
2058
+  cd /opt/zeronet/ZeroMail
2059
+  git checkout $ZERONET_MAIL_COMMIT -b $ZERONET_MAIL_COMMIT
2060
+  if ! grep -q "ZeroNet Mail commit" $COMPLETION_FILE; then
2061
+      echo "ZeroNet Mail commit:$ZERONET_MAIL_COMMIT" >> $COMPLETION_FILE
2062
+  else
2063
+      sed -i "s/ZeroNet Mail commit.*/ZeroNet Mail commit:$ZERONET_MAIL_COMMIT/g" $COMPLETION_FILE
2064
+  fi
2065
+
2066
+  echo $"ZeroNet Mail address:     $ZERONET_MAIL_ADDRESS"
2067
+  echo $"ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY"
2068
+  cp -r /opt/zeronet/ZeroMail/* /opt/zeronet/data/$ZERONET_MAIL_ADDRESS
2069
+
2070
+  if [ ! -d /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data ]; then
2071
+      mkdir /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data
2072
+  fi
2073
+  cp /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data-default/data.json /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data
2074
+  sed -i "s/MyZeroMail/$ZERONET_DEFAULT_MAIL_TITLE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
2075
+  sed -i "s/My ZeroMail./$ZERONET_DEFAULT_MAIL_TAGLINE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
2076
+  sed -i "s/ZeroMail Demo/$ZERONET_DEFAULT_MAIL_TITLE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
2077
+  sed -i "s|<h3 class=\"description\">.*|<h3 class=\"description\">$ZERONET_DEFAULT_MAIL_TAGLINE</h3>|g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
2078
+  sed -i "s/Mailging platform Demo/Mailging platform/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/content.json
2079
+  python zeronet.py siteSign $ZERONET_MAIL_ADDRESS $ZERONET_MAIL_PRIVATE_KEY
2080
+
2081
+  # Add an avahi service
2082
+  echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-mail.service
2083
+  echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-mail.service
2084
+  echo '<service-group>' >> /tmp/zeronet-mail.service
2085
+  echo '  <name replace-wildcards="yes">%h ZeroNet Mail</name>' >> /tmp/zeronet-mail.service
2086
+  echo '  <service>' >> /tmp/zeronet-mail.service
2087
+  echo '    <type>_zeronet._udp</type>' >> /tmp/zeronet-mail.service
2088
+  echo "    <port>$ZERONET_PORT</port>" >> /tmp/zeronet-mail.service
2089
+  echo "    <txt-record>$ZERONET_URL/$ZERONET_MAIL_ADDRESS</txt-record>" >> /tmp/zeronet-mail.service
2090
+  echo '  </service>' >> /tmp/zeronet-mail.service
2091
+  echo '</service-group>' >> /tmp/zeronet-mail.service
2092
+  cp /tmp/zeronet-mail.service /etc/avahi/services/zeronet-mail.service
2093
+
2094
+  if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
2095
+      mkdir -p /home/$MY_USERNAME/.config/zeronet
2096
+      chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
2097
+  fi
2098
+  echo "$ZERONET_URL/$ZERONET_MAIL_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/mymail
2099
+
2100
+  if ! grep -q "ZeroNet Mail address" /home/$MY_USERNAME/README; then
2101
+      echo '' >> /home/$MY_USERNAME/README
2102
+      echo "ZeroNet Mail address: $ZERONET_MAIL_ADDRESS" >> /home/$MY_USERNAME/README
2103
+      echo "ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY" >> /home/$MY_USERNAME/README
2104
+  fi
2105
+
2106
+  echo 'install_zeronet_mail' >> $COMPLETION_FILE
2107
+}
2108
+
1977
 function install_zeronet_forum {
2109
 function install_zeronet_forum {
1978
   if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
2110
   if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
1979
       return
2111
       return
8826
 install_watchdog_script
8958
 install_watchdog_script
8827
 configure_avahi
8959
 configure_avahi
8828
 install_zeronet_blog
8960
 install_zeronet_blog
8961
+install_zeronet_mail
8829
 install_zeronet_forum
8962
 install_zeronet_forum
8830
 #install_atheros_wifi
8963
 #install_atheros_wifi
8831
 configure_firewall_for_cjdns
8964
 configure_firewall_for_cjdns

+ 99
- 0
src/freedombone-meshweb View File

16
 ZERONET_REPO='https://github.com/HelloZeroNet/ZeroNet'
16
 ZERONET_REPO='https://github.com/HelloZeroNet/ZeroNet'
17
 ZERONET_BLOG_REPO='https://github.com/HelloZeroNet/ZeroBlog'
17
 ZERONET_BLOG_REPO='https://github.com/HelloZeroNet/ZeroBlog'
18
 ZERONET_FORUM_REPO='https://github.com/HelloZeroNet/ZeroTalk'
18
 ZERONET_FORUM_REPO='https://github.com/HelloZeroNet/ZeroTalk'
19
+ZERONET_MAIL_REPO='https://github.com/HelloZeroNet/ZeroMail'
20
+ZERONET_MAIL_COMMIT='955af09d643c72b02e4983d71eca5c0c93a6c131'
19
 ZERONET_URL=http://127.0.0.1:43110
21
 ZERONET_URL=http://127.0.0.1:43110
20
 ZERONET_PORT=15441
22
 ZERONET_PORT=15441
21
 TRACKER_PORT=6969
23
 TRACKER_PORT=6969
24
 UPDATED="no"
26
 UPDATED="no"
25
 ZERONET_DEFAULT_BLOG_TAGLINE="Blogging on the Mesh"
27
 ZERONET_DEFAULT_BLOG_TAGLINE="Blogging on the Mesh"
26
 ZERONET_DEFAULT_FORUM_TAGLINE="A decentralized discussion group"
28
 ZERONET_DEFAULT_FORUM_TAGLINE="A decentralized discussion group"
29
+ZERONET_DEFAULT_MAIL_TAGLINE="Mail for the Mesh"
27
 
30
 
28
 IPFS_PORT=4001
31
 IPFS_PORT=4001
29
 
32
 
191
     echo $'Zeronet blog installed'
194
     echo $'Zeronet blog installed'
192
 }
195
 }
193
 
196
 
197
+function install_zeronet_mail {
198
+  if [ ! -f /home/$MY_USERNAME/README ]; then
199
+      touch /home/$MY_USERNAME/README
200
+  fi
201
+
202
+  if grep -q "ZeroNet Mail address" /home/$MY_USERNAME/README; then
203
+      return
204
+  fi
205
+
206
+  if [ ! -d /etc/avahi ]; then
207
+      echo 'Avahi is not installed'
208
+      exit 736
209
+  fi
210
+
211
+  ZERONET_DEFAULT_MAIL_TITLE="${MY_USERNAME}'s Mail"
212
+
213
+  cd /opt/zeronet
214
+  python zeronet.py --batch siteCreate 2> /opt/zeronet/mail.txt
215
+  if [ ! -f /opt/zeronet/mail.txt ]; then
216
+      echo 'Unable to create mail'
217
+      exit 479
218
+  fi
219
+  mail_address=$(cat mail.txt | grep "Site address" | awk -F ':' '{print $2}')
220
+  mail_private_key=$(cat mail.txt | grep "Site private key" | awk -F ':' '{print $2}')
221
+  ZERONET_MAIL_ADDRESS=${mail_address//[[:blank:]]/}
222
+  ZERONET_MAIL_PRIVATE_KEY=${mail_private_key//[[:blank:]]/}
223
+
224
+  if [ ${#ZERONET_MAIL_ADDRESS} -lt 20 ]; then
225
+      echo $"Address:    $ZERONET_MAIL_ADDRESS"
226
+      echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
227
+      echo $'Unable to create zeronet mail address'
228
+      exit 7358
229
+  fi
230
+
231
+  if [ ${#ZERONET_MAIL_PRIVATE_KEY} -lt 20 ]; then
232
+      echo $"Address:    $ZERONET_MAIL_ADDRESS"
233
+      echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
234
+      echo $'Unable to create zeronet mail private key'
235
+      exit 1639
236
+  fi
237
+
238
+  if [ ! -d "/opt/zeronet/data/$ZERONET_MAIL_ADDRESS" ]; then
239
+      echo $"Unable to find site directory: /opt/zeronet/data/$ZERONET_MAIL_ADDRESS"
240
+      exit 7638
241
+  fi
242
+
243
+  git clone $ZERONET_MAIL_REPO ZeroMail
244
+  if [ ! -d /opt/zeronet/ZeroMail ]; then
245
+      echo 'ZeroMail repo could not be cloned'
246
+      exit 6739
247
+  fi
248
+  cd /opt/zeronet/ZeroMail
249
+  git checkout $ZERONET_MAIL_COMMIT -b $ZERONET_MAIL_COMMIT
250
+
251
+  echo $"ZeroNet Mail address:     $ZERONET_MAIL_ADDRESS"
252
+  echo $"ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY"
253
+  cp -r /opt/zeronet/ZeroMail/* /opt/zeronet/data/$ZERONET_MAIL_ADDRESS
254
+
255
+  if [ ! -d /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data ]; then
256
+      mkdir /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data
257
+  fi
258
+  cp /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data-default/data.json /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data
259
+  sed -i "s/MyZeroMail/$ZERONET_DEFAULT_MAIL_TITLE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
260
+  sed -i "s/My ZeroMail./$ZERONET_DEFAULT_MAIL_TAGLINE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
261
+  sed -i "s/ZeroMail Demo/$ZERONET_DEFAULT_MAIL_TITLE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
262
+  sed -i "s|<h3 class=\"description\">.*|<h3 class=\"description\">$ZERONET_DEFAULT_MAIL_TAGLINE</h3>|g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
263
+  sed -i "s/Mailging platform Demo/Mailging platform/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/content.json
264
+  python zeronet.py siteSign $ZERONET_MAIL_ADDRESS $ZERONET_MAIL_PRIVATE_KEY
265
+
266
+  # Add an avahi service
267
+  echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-mail.service
268
+  echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-mail.service
269
+  echo '<service-group>' >> /tmp/zeronet-mail.service
270
+  echo '  <name replace-wildcards="yes">%h ZeroNet Mail</name>' >> /tmp/zeronet-mail.service
271
+  echo '  <service>' >> /tmp/zeronet-mail.service
272
+  echo '    <type>_zeronet._udp</type>' >> /tmp/zeronet-mail.service
273
+  echo "    <port>$ZERONET_PORT</port>" >> /tmp/zeronet-mail.service
274
+  echo "    <txt-record>$ZERONET_URL/$ZERONET_MAIL_ADDRESS</txt-record>" >> /tmp/zeronet-mail.service
275
+  echo '  </service>' >> /tmp/zeronet-mail.service
276
+  echo '</service-group>' >> /tmp/zeronet-mail.service
277
+  cp /tmp/zeronet-mail.service /etc/avahi/services/zeronet-mail.service
278
+
279
+  if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
280
+      mkdir -p /home/$MY_USERNAME/.config/zeronet
281
+      chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
282
+  fi
283
+  echo "$ZERONET_URL/$ZERONET_MAIL_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/mymail
284
+
285
+  if ! grep -q "ZeroNet Mail address" /home/$MY_USERNAME/README; then
286
+      echo '' >> /home/$MY_USERNAME/README
287
+      echo "ZeroNet Mail address: $ZERONET_MAIL_ADDRESS" >> /home/$MY_USERNAME/README
288
+      echo "ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY" >> /home/$MY_USERNAME/README
289
+  fi
290
+}
291
+
194
 function install_zeronet_forum {
292
 function install_zeronet_forum {
195
     if [ ! -f /home/$MY_USERNAME/README ]; then
293
     if [ ! -f /home/$MY_USERNAME/README ]; then
196
         touch /home/$MY_USERNAME/README
294
         touch /home/$MY_USERNAME/README
350
         install_web_server
448
         install_web_server
351
         install_zeronet
449
         install_zeronet
352
         install_zeronet_blog
450
         install_zeronet_blog
451
+        install_zeronet_mail
353
         install_zeronet_forum
452
         install_zeronet_forum
354
         install_ipfs
453
         install_ipfs
355
         sudo batman start
454
         sudo batman start

+ 52
- 0
src/zeronetavahi View File

51
 fi
51
 fi
52
 
52
 
53
 BLOGS_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-blogs
53
 BLOGS_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-blogs
54
+MAIL_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-mail
54
 FORUM_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-fora
55
 FORUM_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-fora
55
 TOX_USERS_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-tox-users
56
 TOX_USERS_FILE=$ZERONET_INSTALL/${PROJECT_NAME}-tox-users
56
 ZERONET_INDEX=/home/$MY_USERNAME/mesh.html
57
 ZERONET_INDEX=/home/$MY_USERNAME/mesh.html
61
 function create_index {
62
 function create_index {
62
     if [ -f $ZERONET_INDEX ]; then
63
     if [ -f $ZERONET_INDEX ]; then
63
         sed -i "s|.*My Blog.*|  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myblog)\">My Blog</a></li>|g" $ZERONET_INDEX
64
         sed -i "s|.*My Blog.*|  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myblog)\">My Blog</a></li>|g" $ZERONET_INDEX
65
+        sed -i "s|.*My Mail.*|  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/mymail)\">My Mail</a></li>|g" $ZERONET_INDEX
64
         sed -i "s|.*My Forum.*|  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myforum)\">My Forum</a></li>|g" $ZERONET_INDEX
66
         sed -i "s|.*My Forum.*|  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myforum)\">My Forum</a></li>|g" $ZERONET_INDEX
65
         return
67
         return
66
     fi
68
     fi
76
     echo '' >> $ZERONET_INDEX
78
     echo '' >> $ZERONET_INDEX
77
     echo '<ol type="square">' >> $ZERONET_INDEX
79
     echo '<ol type="square">' >> $ZERONET_INDEX
78
     echo "  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myblog)\">My Blog</a></li>" >> $ZERONET_INDEX
80
     echo "  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myblog)\">My Blog</a></li>" >> $ZERONET_INDEX
81
+    echo "  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/mymail)\">My Mail</a></li>" >> $ZERONET_INDEX
79
     echo "  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myforum)\">My Forum</a></li>" >> $ZERONET_INDEX
82
     echo "  <li><a href=\"$(cat /home/$MY_USERNAME/.config/zeronet/myforum)\">My Forum</a></li>" >> $ZERONET_INDEX
80
     echo "  <li><a href=\"http://localhost:5001/webui\">File Share</a></li>" >> $ZERONET_INDEX
83
     echo "  <li><a href=\"http://localhost:5001/webui\">File Share</a></li>" >> $ZERONET_INDEX
81
     echo '</ol>' >> $ZERONET_INDEX
84
     echo '</ol>' >> $ZERONET_INDEX
84
     echo '' >> $ZERONET_INDEX
87
     echo '' >> $ZERONET_INDEX
85
     echo '<ol type="square">' >> $ZERONET_INDEX
88
     echo '<ol type="square">' >> $ZERONET_INDEX
86
     echo "  <li><a href=\"${BLOGS_FILE}.html\">Blogs</a></li>" >> $ZERONET_INDEX
89
     echo "  <li><a href=\"${BLOGS_FILE}.html\">Blogs</a></li>" >> $ZERONET_INDEX
90
+    echo "  <li><a href=\"${MAIL_FILE}.html\">Mail</a></li>" >> $ZERONET_INDEX
87
     echo "  <li><a href=\"${FORUM_FILE}.html\">Fora</a></li>" >> $ZERONET_INDEX
91
     echo "  <li><a href=\"${FORUM_FILE}.html\">Fora</a></li>" >> $ZERONET_INDEX
88
     echo "  <li><a href=\"${TOX_USERS_FILE}.html\">Tox Users</a></li>" >> $ZERONET_INDEX
92
     echo "  <li><a href=\"${TOX_USERS_FILE}.html\">Tox Users</a></li>" >> $ZERONET_INDEX
89
     echo '</ol>' >> $ZERONET_INDEX
93
     echo '</ol>' >> $ZERONET_INDEX
194
 done < "$TEMPFILE"
198
 done < "$TEMPFILE"
195
 echo '</ol>' >> $BLOGS_FILE.new
199
 echo '</ol>' >> $BLOGS_FILE.new
196
 
200
 
201
+
202
+# detect mail in the mesh
203
+if [ -f $MAIL_FILE.new ]; then
204
+    rm -f $MAIL_FILE.new
205
+fi
206
+
207
+cat $TEMPFILE_BASE | grep "ZeroNet Mail\|hostname =\|address =\|port =\|txt =" > $TEMPFILE
208
+
209
+state=0
210
+address=""
211
+peer=""
212
+echo '<ol type="square">' >> $MAIL_FILE.new
213
+while IFS='' read -r line || [[ -n "$line" ]]; do
214
+    if [ ${state} -eq "3" ]; then
215
+        if [[ $line == *"txt ="* ]]; then
216
+            mail_url=$(echo $line | awk -F '[' '{print $2}' | awk -F ']' '{print $1}')
217
+            echo "  <li><a href=${mail_url}>${peer}</a></li>" >> $MAIL_FILE.new
218
+            state=0
219
+        fi
220
+    fi
221
+    if [ ${state} -eq "2" ]; then
222
+        if [[ $line == *"address ="* ]]; then
223
+            address=$(echo $line | awk -F '[' '{print $2}' | awk -F ']' '{print $1}')
224
+            state=3
225
+        fi
226
+    fi
227
+    if [ ${state} -eq "1" ]; then
228
+        if [[ $line == *"hostname ="* ]]; then
229
+            peer=$(echo $line | awk -F '[' '{print $2}' | awk -F ']' '{print $1}')
230
+            state=2
231
+        fi
232
+    fi
233
+    if [[ $line == *"ZeroNet Mail"* && $line == "= "* ]]; then
234
+        state=1
235
+    fi
236
+done < "$TEMPFILE"
237
+echo '</ol>' >> $MAIL_FILE.new
238
+
239
+
197
 # detect fora in the mesh
240
 # detect fora in the mesh
198
 if [ -f $FORUM_FILE.new ]; then
241
 if [ -f $FORUM_FILE.new ]; then
199
     rm -f $FORUM_FILE.new
242
     rm -f $FORUM_FILE.new
297
 
340
 
298
 # make some html headers and footers
341
 # make some html headers and footers
299
 create_header $BLOGS_FILE "Blogs"
342
 create_header $BLOGS_FILE "Blogs"
343
+create_header $MAIL_FILE "Mail"
300
 create_header $FORUM_FILE "Fora"
344
 create_header $FORUM_FILE "Fora"
301
 create_header $TOX_USERS_FILE "Tox Users"
345
 create_header $TOX_USERS_FILE "Tox Users"
302
 create_footer $BLOGS_FILE
346
 create_footer $BLOGS_FILE
347
+create_footer $MAIL_FILE
303
 create_footer $FORUM_FILE
348
 create_footer $FORUM_FILE
304
 create_footer $TOX_USERS_FILE
349
 create_footer $TOX_USERS_FILE
305
 
350
 
313
     sudo chown zeronet:zeronet $BLOGS_FILE
358
     sudo chown zeronet:zeronet $BLOGS_FILE
314
 fi
359
 fi
315
 
360
 
361
+# create a web page showing the available mail contacts
362
+cat ${MAIL_FILE}-header.html ${MAIL_FILE}.new ${MAIL_FILE}-footer.html > ${MAIL_FILE}.html
363
+rm -f ${MAIL_FILE}.new
364
+if [ -d $ZERONET_USER_HOME ]; then
365
+    sudo chown zeronet:zeronet $MAIL_FILE
366
+fi
367
+
316
 # create a web page showing the available fora
368
 # create a web page showing the available fora
317
 cat ${FORUM_FILE}-header.html ${FORUM_FILE}.new ${FORUM_FILE}-footer.html > ${FORUM_FILE}.html
369
 cat ${FORUM_FILE}-header.html ${FORUM_FILE}.new ${FORUM_FILE}-footer.html > ${FORUM_FILE}.html
318
 rm -f ${FORUM_FILE}.new
370
 rm -f ${FORUM_FILE}.new