|  | @@ -0,0 +1,304 @@
 | 
	
		
			
			|  | 1 | +#!/bin/bash
 | 
	
		
			
			|  | 2 | +#
 | 
	
		
			
			|  | 3 | +# .---.                  .              .
 | 
	
		
			
			|  | 4 | +# |                      |              |
 | 
	
		
			
			|  | 5 | +# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
 | 
	
		
			
			|  | 6 | +# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
 | 
	
		
			
			|  | 7 | +# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
 | 
	
		
			
			|  | 8 | +#
 | 
	
		
			
			|  | 9 | +#                    Freedom in the Cloud
 | 
	
		
			
			|  | 10 | +#
 | 
	
		
			
			|  | 11 | +# This command is run on initial install in order to set up a mesh router
 | 
	
		
			
			|  | 12 | +#
 | 
	
		
			
			|  | 13 | +# License
 | 
	
		
			
			|  | 14 | +# =======
 | 
	
		
			
			|  | 15 | +#
 | 
	
		
			
			|  | 16 | +# This program is free software: you can redistribute it and/or modify
 | 
	
		
			
			|  | 17 | +# it under the terms of the GNU General Public License as published by
 | 
	
		
			
			|  | 18 | +# the Free Software Foundation, either version 3 of the License, or
 | 
	
		
			
			|  | 19 | +# (at your option) any later version.
 | 
	
		
			
			|  | 20 | +#
 | 
	
		
			
			|  | 21 | +# This program is distributed in the hope that it will be useful,
 | 
	
		
			
			|  | 22 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
	
		
			
			|  | 23 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
	
		
			
			|  | 24 | +# GNU General Public License for more details.
 | 
	
		
			
			|  | 25 | +#
 | 
	
		
			
			|  | 26 | +# You should have received a copy of the GNU General Public License
 | 
	
		
			
			|  | 27 | +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
	
		
			
			|  | 28 | +
 | 
	
		
			
			|  | 29 | +PROJECT_NAME='freedombone'
 | 
	
		
			
			|  | 30 | +
 | 
	
		
			
			|  | 31 | +export TEXTDOMAIN=${PROJECT_NAME}-image-mesh
 | 
	
		
			
			|  | 32 | +export TEXTDOMAINDIR="/usr/share/locale"
 | 
	
		
			
			|  | 33 | +
 | 
	
		
			
			|  | 34 | +MY_USERNAME='fbone'
 | 
	
		
			
			|  | 35 | +
 | 
	
		
			
			|  | 36 | +function change_avahi_name {
 | 
	
		
			
			|  | 37 | +    decarray=( 1 2 3 4 5 6 7 8 9 0 )
 | 
	
		
			
			|  | 38 | +    PEER_ID=${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}
 | 
	
		
			
			|  | 39 | +    sed -i "s|#host-name=.*|host-name=P$PEER_ID|g" /etc/avahi/avahi-daemon.conf
 | 
	
		
			
			|  | 40 | +    echo "New avahi name for this peer is P$PEER_ID"
 | 
	
		
			
			|  | 41 | +    toilet "mesh-$PEER_ID"
 | 
	
		
			
			|  | 42 | +}
 | 
	
		
			
			|  | 43 | +
 | 
	
		
			
			|  | 44 | +function regenerate_ssh_host_keys {
 | 
	
		
			
			|  | 45 | +    echo $"Regenerating ssh host keys"
 | 
	
		
			
			|  | 46 | +    rm -f /etc/ssh/ssh_host_*
 | 
	
		
			
			|  | 47 | +    dpkg-reconfigure openssh-server
 | 
	
		
			
			|  | 48 | +    echo $'ssh host keys regenerated'
 | 
	
		
			
			|  | 49 | +    # remove small moduli
 | 
	
		
			
			|  | 50 | +    awk '$5 > 2000' /etc/ssh/moduli > ~/moduli
 | 
	
		
			
			|  | 51 | +    mv ~/moduli /etc/ssh/moduli
 | 
	
		
			
			|  | 52 | +    echo $'ssh small moduli removed'
 | 
	
		
			
			|  | 53 | +}
 | 
	
		
			
			|  | 54 | +
 | 
	
		
			
			|  | 55 | +function configure_zeronet_blog {
 | 
	
		
			
			|  | 56 | +    echo $'Updating ZeroNet Blog'
 | 
	
		
			
			|  | 57 | +    ZERONET_DEFAULT_BLOG_TITLE="${MY_USERNAME}'s Blog"
 | 
	
		
			
			|  | 58 | +
 | 
	
		
			
			|  | 59 | +    cd /opt/zeronet
 | 
	
		
			
			|  | 60 | +    python zeronet.py --batch siteCreate 2> /opt/zeronet/blog.txt
 | 
	
		
			
			|  | 61 | +    if [ ! -f /opt/zeronet/blog.txt ]; then
 | 
	
		
			
			|  | 62 | +        echo $'Unable to create blog'
 | 
	
		
			
			|  | 63 | +        exit 479
 | 
	
		
			
			|  | 64 | +    fi
 | 
	
		
			
			|  | 65 | +    blog_address=$(cat blog.txt | grep "Site address" | awk -F ':' '{print $2}')
 | 
	
		
			
			|  | 66 | +    blog_private_key=$(cat blog.txt | grep "Site private key" | awk -F ':' '{print $2}')
 | 
	
		
			
			|  | 67 | +    ZERONET_BLOG_ADDRESS=${blog_address//[[:blank:]]/}
 | 
	
		
			
			|  | 68 | +    ZERONET_BLOG_PRIVATE_KEY=${blog_private_key//[[:blank:]]/}
 | 
	
		
			
			|  | 69 | +
 | 
	
		
			
			|  | 70 | +    if [ ${#ZERONET_BLOG_ADDRESS} -lt 20 ]; then
 | 
	
		
			
			|  | 71 | +        echo $"Address:    $ZERONET_BLOG_ADDRESS"
 | 
	
		
			
			|  | 72 | +        echo $"Public key: $ZERONET_BLOG_PRIVATE_KEY"
 | 
	
		
			
			|  | 73 | +        echo $'Unable to create zeronet blog address'
 | 
	
		
			
			|  | 74 | +        exit 7358
 | 
	
		
			
			|  | 75 | +    fi
 | 
	
		
			
			|  | 76 | +
 | 
	
		
			
			|  | 77 | +    if [ ${#ZERONET_BLOG_PRIVATE_KEY} -lt 20 ]; then
 | 
	
		
			
			|  | 78 | +        echo $"Address:    $ZERONET_BLOG_ADDRESS"
 | 
	
		
			
			|  | 79 | +        echo $"Public key: $ZERONET_BLOG_PRIVATE_KEY"
 | 
	
		
			
			|  | 80 | +        echo $'Unable to create zeronet blog private key'
 | 
	
		
			
			|  | 81 | +        exit 1639
 | 
	
		
			
			|  | 82 | +    fi
 | 
	
		
			
			|  | 83 | +
 | 
	
		
			
			|  | 84 | +    if [ ! -d "/opt/zeronet/data/$ZERONET_BLOG_ADDRESS" ]; then
 | 
	
		
			
			|  | 85 | +        echo $"Unable to find site directory: /opt/zeronet/data/$ZERONET_BLOG_ADDRESS"
 | 
	
		
			
			|  | 86 | +        exit 7638
 | 
	
		
			
			|  | 87 | +    fi
 | 
	
		
			
			|  | 88 | +
 | 
	
		
			
			|  | 89 | +    echo $"ZeroNet Blog address:     $ZERONET_BLOG_ADDRESS"
 | 
	
		
			
			|  | 90 | +    echo $"ZeroNet Blog private key: $ZERONET_BLOG_PRIVATE_KEY"
 | 
	
		
			
			|  | 91 | +    cp -r /opt/zeronet/ZeroBlog/* /opt/zeronet/data/$ZERONET_BLOG_ADDRESS
 | 
	
		
			
			|  | 92 | +
 | 
	
		
			
			|  | 93 | +    if [ ! -d /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/data ]; then
 | 
	
		
			
			|  | 94 | +        mkdir /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/data
 | 
	
		
			
			|  | 95 | +    fi
 | 
	
		
			
			|  | 96 | +    cp /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/data-default/data.json /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/data
 | 
	
		
			
			|  | 97 | +    sed -i "s/MyZeroBlog/$ZERONET_DEFAULT_BLOG_TITLE/g" /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/data/data.json
 | 
	
		
			
			|  | 98 | +    sed -i "s/My ZeroBlog./$ZERONET_DEFAULT_BLOG_TAGLINE/g" /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/data/data.json
 | 
	
		
			
			|  | 99 | +    sed -i "s/ZeroBlog Demo/$ZERONET_DEFAULT_BLOG_TITLE/g" /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/index.html
 | 
	
		
			
			|  | 100 | +    sed -i "s|<h3 class=\"description\">.*|<h3 class=\"description\">$ZERONET_DEFAULT_BLOG_TAGLINE</h3>|g" /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/index.html
 | 
	
		
			
			|  | 101 | +    sed -i "s/Blogging platform Demo/Blogging platform/g" /opt/zeronet/data/$ZERONET_BLOG_ADDRESS/content.json
 | 
	
		
			
			|  | 102 | +    python zeronet.py siteSign $ZERONET_BLOG_ADDRESS $ZERONET_BLOG_PRIVATE_KEY
 | 
	
		
			
			|  | 103 | +
 | 
	
		
			
			|  | 104 | +    # update the avahi service
 | 
	
		
			
			|  | 105 | +    echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 106 | +    echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 107 | +    echo '<service-group>' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 108 | +    echo '  <name replace-wildcards="yes">%h ZeroNet Blog</name>' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 109 | +    echo '  <service>' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 110 | +    echo '    <type>_zeronet._udp</type>' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 111 | +    echo "    <port>$ZERONET_PORT</port>" >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 112 | +    echo "    <txt-record>$ZERONET_URL/$ZERONET_BLOG_ADDRESS</txt-record>" >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 113 | +    echo '  </service>' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 114 | +    echo '</service-group>' >> /tmp/zeronet-blog.service
 | 
	
		
			
			|  | 115 | +    cp /tmp/zeronet-blog.service /etc/avahi/services/zeronet-blog.service
 | 
	
		
			
			|  | 116 | +
 | 
	
		
			
			|  | 117 | +    if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
 | 
	
		
			
			|  | 118 | +        mkdir -p /home/$MY_USERNAME/.config/zeronet
 | 
	
		
			
			|  | 119 | +        chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
 | 
	
		
			
			|  | 120 | +    fi
 | 
	
		
			
			|  | 121 | +    echo "$ZERONET_URL/$ZERONET_BLOG_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/myblog
 | 
	
		
			
			|  | 122 | +
 | 
	
		
			
			|  | 123 | +    sed -i "s|ZeroNet Blog address.*|ZeroNet Blog address: $ZERONET_BLOG_ADDRESS|g" /home/$MY_USERNAME/README
 | 
	
		
			
			|  | 124 | +    sed -i "s|ZeroNet Blog private key.*|ZeroNet Blog private key: $ZERONET_BLOG_PRIVATE_KEY|g" /home/$MY_USERNAME/README
 | 
	
		
			
			|  | 125 | +}
 | 
	
		
			
			|  | 126 | +
 | 
	
		
			
			|  | 127 | +function configure_zeronet_mail {
 | 
	
		
			
			|  | 128 | +    echo $'Updating ZeroNet Mail'
 | 
	
		
			
			|  | 129 | +    ZERONET_DEFAULT_MAIL_TITLE="${MY_USERNAME}'s Mail"
 | 
	
		
			
			|  | 130 | +
 | 
	
		
			
			|  | 131 | +    cd /opt/zeronet
 | 
	
		
			
			|  | 132 | +    python zeronet.py --batch siteCreate 2> /opt/zeronet/mail.txt
 | 
	
		
			
			|  | 133 | +    if [ ! -f /opt/zeronet/mail.txt ]; then
 | 
	
		
			
			|  | 134 | +        echo 'Unable to create mail'
 | 
	
		
			
			|  | 135 | +        exit 479
 | 
	
		
			
			|  | 136 | +    fi
 | 
	
		
			
			|  | 137 | +    mail_address=$(cat mail.txt | grep "Site address" | awk -F ':' '{print $2}')
 | 
	
		
			
			|  | 138 | +    mail_private_key=$(cat mail.txt | grep "Site private key" | awk -F ':' '{print $2}')
 | 
	
		
			
			|  | 139 | +    ZERONET_MAIL_ADDRESS=${mail_address//[[:blank:]]/}
 | 
	
		
			
			|  | 140 | +    ZERONET_MAIL_PRIVATE_KEY=${mail_private_key//[[:blank:]]/}
 | 
	
		
			
			|  | 141 | +
 | 
	
		
			
			|  | 142 | +    if [ ${#ZERONET_MAIL_ADDRESS} -lt 20 ]; then
 | 
	
		
			
			|  | 143 | +        echo $"Address:    $ZERONET_MAIL_ADDRESS"
 | 
	
		
			
			|  | 144 | +        echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
 | 
	
		
			
			|  | 145 | +        echo $'Unable to create zeronet mail address'
 | 
	
		
			
			|  | 146 | +        exit 7358
 | 
	
		
			
			|  | 147 | +    fi
 | 
	
		
			
			|  | 148 | +
 | 
	
		
			
			|  | 149 | +    if [ ${#ZERONET_MAIL_PRIVATE_KEY} -lt 20 ]; then
 | 
	
		
			
			|  | 150 | +        echo $"Address:    $ZERONET_MAIL_ADDRESS"
 | 
	
		
			
			|  | 151 | +        echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
 | 
	
		
			
			|  | 152 | +        echo $'Unable to create zeronet mail private key'
 | 
	
		
			
			|  | 153 | +        exit 1639
 | 
	
		
			
			|  | 154 | +    fi
 | 
	
		
			
			|  | 155 | +
 | 
	
		
			
			|  | 156 | +    if [ ! -d "/opt/zeronet/data/$ZERONET_MAIL_ADDRESS" ]; then
 | 
	
		
			
			|  | 157 | +        echo $"Unable to find site directory: /opt/zeronet/data/$ZERONET_MAIL_ADDRESS"
 | 
	
		
			
			|  | 158 | +        exit 7638
 | 
	
		
			
			|  | 159 | +    fi
 | 
	
		
			
			|  | 160 | +
 | 
	
		
			
			|  | 161 | +    echo $"ZeroNet Mail address:     $ZERONET_MAIL_ADDRESS"
 | 
	
		
			
			|  | 162 | +    echo $"ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY"
 | 
	
		
			
			|  | 163 | +    cp -r /opt/zeronet/ZeroMail/* /opt/zeronet/data/$ZERONET_MAIL_ADDRESS
 | 
	
		
			
			|  | 164 | +
 | 
	
		
			
			|  | 165 | +    if [ ! -d /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data ]; then
 | 
	
		
			
			|  | 166 | +        mkdir /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data
 | 
	
		
			
			|  | 167 | +    fi
 | 
	
		
			
			|  | 168 | +    cp /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data-default/data.json /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data
 | 
	
		
			
			|  | 169 | +    sed -i "s/MyZeroMail/$ZERONET_DEFAULT_MAIL_TITLE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
 | 
	
		
			
			|  | 170 | +    sed -i "s/My ZeroMail./$ZERONET_DEFAULT_MAIL_TAGLINE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
 | 
	
		
			
			|  | 171 | +    sed -i "s/ZeroMail Demo/$ZERONET_DEFAULT_MAIL_TITLE/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
 | 
	
		
			
			|  | 172 | +    sed -i "s|<h3 class=\"description\">.*|<h3 class=\"description\">$ZERONET_DEFAULT_MAIL_TAGLINE</h3>|g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
 | 
	
		
			
			|  | 173 | +    sed -i "s/Mailging platform Demo/Mailging platform/g" /opt/zeronet/data/$ZERONET_MAIL_ADDRESS/content.json
 | 
	
		
			
			|  | 174 | +    python zeronet.py siteSign $ZERONET_MAIL_ADDRESS $ZERONET_MAIL_PRIVATE_KEY
 | 
	
		
			
			|  | 175 | +
 | 
	
		
			
			|  | 176 | +    # Add an avahi service
 | 
	
		
			
			|  | 177 | +    echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 178 | +    echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 179 | +    echo '<service-group>' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 180 | +    echo '  <name replace-wildcards="yes">%h ZeroNet Mail</name>' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 181 | +    echo '  <service>' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 182 | +    echo '    <type>_zeronet._udp</type>' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 183 | +    echo "    <port>$ZERONET_PORT</port>" >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 184 | +    echo "    <txt-record>$ZERONET_URL/$ZERONET_MAIL_ADDRESS</txt-record>" >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 185 | +    echo '  </service>' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 186 | +    echo '</service-group>' >> /tmp/zeronet-mail.service
 | 
	
		
			
			|  | 187 | +    cp /tmp/zeronet-mail.service /etc/avahi/services/zeronet-mail.service
 | 
	
		
			
			|  | 188 | +
 | 
	
		
			
			|  | 189 | +    if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
 | 
	
		
			
			|  | 190 | +        mkdir -p /home/$MY_USERNAME/.config/zeronet
 | 
	
		
			
			|  | 191 | +        chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
 | 
	
		
			
			|  | 192 | +    fi
 | 
	
		
			
			|  | 193 | +    echo "$ZERONET_URL/$ZERONET_MAIL_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/mymail
 | 
	
		
			
			|  | 194 | +
 | 
	
		
			
			|  | 195 | +    sed -i "s|ZeroNet Mail address.*|ZeroNet Mail address: $ZERONET_MAIL_ADDRESS|g" /home/$MY_USERNAME/README
 | 
	
		
			
			|  | 196 | +    sed -i "s|ZeroNet Mail private key.*|ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY|g" /home/$MY_USERNAME/README
 | 
	
		
			
			|  | 197 | +}
 | 
	
		
			
			|  | 198 | +
 | 
	
		
			
			|  | 199 | +function configure_zeronet_forum {
 | 
	
		
			
			|  | 200 | +    echo $'Updating ZeroNet Forum'
 | 
	
		
			
			|  | 201 | +    ZERONET_DEFAULT_FORUM_TITLE="${MY_USERNAME}'s Forum"
 | 
	
		
			
			|  | 202 | +
 | 
	
		
			
			|  | 203 | +    cd /opt/zeronet
 | 
	
		
			
			|  | 204 | +    python zeronet.py --batch siteCreate 2> /opt/zeronet/forum.txt
 | 
	
		
			
			|  | 205 | +    if [ ! -f /opt/zeronet/forum.txt ]; then
 | 
	
		
			
			|  | 206 | +        echo 'Unable to create forum'
 | 
	
		
			
			|  | 207 | +        exit 479
 | 
	
		
			
			|  | 208 | +    fi
 | 
	
		
			
			|  | 209 | +    forum_address=$(cat forum.txt | grep "Site address" | awk -F ':' '{print $2}')
 | 
	
		
			
			|  | 210 | +    forum_private_key=$(cat forum.txt | grep "Site private key" | awk -F ':' '{print $2}')
 | 
	
		
			
			|  | 211 | +    ZERONET_FORUM_ADDRESS=${forum_address//[[:blank:]]/}
 | 
	
		
			
			|  | 212 | +    ZERONET_FORUM_PRIVATE_KEY=${forum_private_key//[[:blank:]]/}
 | 
	
		
			
			|  | 213 | +
 | 
	
		
			
			|  | 214 | +    if [ ${#ZERONET_FORUM_ADDRESS} -lt 20 ]; then
 | 
	
		
			
			|  | 215 | +        echo $"Address:    $ZERONET_FORUM_ADDRESS"
 | 
	
		
			
			|  | 216 | +        echo $"Public key: $ZERONET_FORUM_PRIVATE_KEY"
 | 
	
		
			
			|  | 217 | +        echo $'Unable to create zeronet forum address'
 | 
	
		
			
			|  | 218 | +        exit 76352
 | 
	
		
			
			|  | 219 | +    fi
 | 
	
		
			
			|  | 220 | +
 | 
	
		
			
			|  | 221 | +    if [ ${#ZERONET_FORUM_PRIVATE_KEY} -lt 20 ]; then
 | 
	
		
			
			|  | 222 | +        echo $"Address:    $ZERONET_FORUM_ADDRESS"
 | 
	
		
			
			|  | 223 | +        echo $"Public key: $ZERONET_FORUM_PRIVATE_KEY"
 | 
	
		
			
			|  | 224 | +        echo $'Unable to create zeronet forum private key'
 | 
	
		
			
			|  | 225 | +        exit 87356
 | 
	
		
			
			|  | 226 | +    fi
 | 
	
		
			
			|  | 227 | +
 | 
	
		
			
			|  | 228 | +    if [ ! -d "/opt/zeronet/data/$ZERONET_FORUM_ADDRESS" ]; then
 | 
	
		
			
			|  | 229 | +        echo $"Unable to find site directory: /opt/zeronet/data/$ZERONET_FORUM_ADDRESS"
 | 
	
		
			
			|  | 230 | +        exit 7638
 | 
	
		
			
			|  | 231 | +    fi
 | 
	
		
			
			|  | 232 | +
 | 
	
		
			
			|  | 233 | +    echo $"Forum address:     $ZERONET_FORUM_ADDRESS"
 | 
	
		
			
			|  | 234 | +    echo $"Forum private key: $ZERONET_FORUM_PRIVATE_KEY"
 | 
	
		
			
			|  | 235 | +    cp -r /opt/zeronet/ZeroTalk/* /opt/zeronet/data/$ZERONET_FORUM_ADDRESS
 | 
	
		
			
			|  | 236 | +    sed -i "s/ZeroBoard/$ZERONET_DEFAULT_FORUM_TITLE/g" /opt/zeronet/data/$ZERONET_FORUM_ADDRESS/index.html
 | 
	
		
			
			|  | 237 | +    sed -i "s/ZeroTalk/$ZERONET_DEFAULT_FORUM_TITLE/g" /opt/zeronet/data/$ZERONET_FORUM_ADDRESS/index.html
 | 
	
		
			
			|  | 238 | +    sed -i "s|Demo for dynamic, decentralized content publishing.|$ZERONET_DEFAULT_FORUM_TAGLINE|g" /opt/zeronet/data/$ZERONET_FORUM_ADDRESS/index.html
 | 
	
		
			
			|  | 239 | +    sed -i 's/Messaging Board Demo/Messaging Board/g' /opt/zeronet/data/$ZERONET_FORUM_ADDRESS/content.json
 | 
	
		
			
			|  | 240 | +    sed -i "s/ZeroBoard/$ZERONET_DEFAULT_FORUM_TITLE/g" /opt/zeronet/data/$ZERONET_FORUM_ADDRESS/content.json
 | 
	
		
			
			|  | 241 | +    python zeronet.py siteSign $ZERONET_FORUM_ADDRESS $ZERONET_FORUM_PRIVATE_KEY --inner_path data/users/content.json
 | 
	
		
			
			|  | 242 | +
 | 
	
		
			
			|  | 243 | +    # Add an avahi service
 | 
	
		
			
			|  | 244 | +    echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 245 | +    echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 246 | +    echo '<service-group>' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 247 | +    echo '  <name replace-wildcards="yes">%h ZeroNet Forum</name>' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 248 | +    echo '  <service>' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 249 | +    echo '    <type>_zeronet._udp</type>' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 250 | +    echo "    <port>$ZERONET_PORT</port>" >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 251 | +    echo "    <txt-record>$ZERONET_URL/$ZERONET_FORUM_ADDRESS</txt-record>" >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 252 | +    echo '  </service>' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 253 | +    echo '</service-group>' >> /tmp/zeronet-forum.service
 | 
	
		
			
			|  | 254 | +    sudo cp /tmp/zeronet-forum.service /etc/avahi/services/zeronet-forum.service
 | 
	
		
			
			|  | 255 | +
 | 
	
		
			
			|  | 256 | +    if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
 | 
	
		
			
			|  | 257 | +        mkdir -p /home/$MY_USERNAME/.config/zeronet
 | 
	
		
			
			|  | 258 | +        chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
 | 
	
		
			
			|  | 259 | +    fi
 | 
	
		
			
			|  | 260 | +    echo "$ZERONET_URL/$ZERONET_FORUM_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/myforum
 | 
	
		
			
			|  | 261 | +
 | 
	
		
			
			|  | 262 | +    sed -i "s|ZeroNet Forum address.*|ZeroNet Forum address: $ZERONET_FORUM_ADDRESS|g" /home/$MY_USERNAME/README
 | 
	
		
			
			|  | 263 | +    sed -i "s|ZeroNet Forum private key.*|ZeroNet Forum private key: $ZERONET_FORUM_PRIVATE_KEY|g" /home/$MY_USERNAME/README
 | 
	
		
			
			|  | 264 | +}
 | 
	
		
			
			|  | 265 | +
 | 
	
		
			
			|  | 266 | +function configure_tox {
 | 
	
		
			
			|  | 267 | +    echo $'Regenerating Tox bootstrap node keys'
 | 
	
		
			
			|  | 268 | +    systemctl stop tox-bootstrapd.service
 | 
	
		
			
			|  | 269 | +    if [ -f /var/lib/tox-bootstrapd/keys ]; then
 | 
	
		
			
			|  | 270 | +        rm /var/lib/tox-bootstrapd/keys
 | 
	
		
			
			|  | 271 | +    fi
 | 
	
		
			
			|  | 272 | +    systemctl start tox-bootstrapd.service
 | 
	
		
			
			|  | 273 | +    TOX_BOOTSTRAP_ID_FILE=/var/lib/tox-bootstrapd/pubkey.txt
 | 
	
		
			
			|  | 274 | +    TOX_PUBLIC_KEY=$(cat /var/log/syslog | grep tox | grep "Public Key" | awk -F ' ' '{print $8}' | tail -1)
 | 
	
		
			
			|  | 275 | +    if [ ${#TOX_PUBLIC_KEY} -lt 30 ]; then
 | 
	
		
			
			|  | 276 | +        echo 'Could not obtain the tox node public key'
 | 
	
		
			
			|  | 277 | +        exit 6529
 | 
	
		
			
			|  | 278 | +    fi
 | 
	
		
			
			|  | 279 | +
 | 
	
		
			
			|  | 280 | +    # save the public key for later reference
 | 
	
		
			
			|  | 281 | +    echo "$TOX_PUBLIC_KEY" > $TOX_BOOTSTRAP_ID_FILE
 | 
	
		
			
			|  | 282 | +
 | 
	
		
			
			|  | 283 | +    echo $'Resetting toxic client'
 | 
	
		
			
			|  | 284 | +    if [ -d /home/$MY_USERNAME/.config/tox ]; then
 | 
	
		
			
			|  | 285 | +        rm -rf /home/$MY_USERNAME/.config/tox
 | 
	
		
			
			|  | 286 | +        su -c 'echo "n
 | 
	
		
			
			|  | 287 | +/nick $MY_USERNAME
 | 
	
		
			
			|  | 288 | +/exit
 | 
	
		
			
			|  | 289 | +" | /usr/bin/toxic -d' - $MY_USERNAME
 | 
	
		
			
			|  | 290 | +    fi
 | 
	
		
			
			|  | 291 | +}
 | 
	
		
			
			|  | 292 | +
 | 
	
		
			
			|  | 293 | +if [ $1 ]; then
 | 
	
		
			
			|  | 294 | +    MY_USERNAME=$1
 | 
	
		
			
			|  | 295 | +fi
 | 
	
		
			
			|  | 296 | +
 | 
	
		
			
			|  | 297 | +regenerate_ssh_host_keys
 | 
	
		
			
			|  | 298 | +configure_zeronet_blog
 | 
	
		
			
			|  | 299 | +configure_zeronet_mail
 | 
	
		
			
			|  | 300 | +configure_zeronet_forum
 | 
	
		
			
			|  | 301 | +configure_tox
 | 
	
		
			
			|  | 302 | +change_avahi_name
 | 
	
		
			
			|  | 303 | +
 | 
	
		
			
			|  | 304 | +exit 0
 |