Bläddra i källkod

Install toxcore on client for mesh variant

Bob Mottram 9 år sedan
förälder
incheckning
33ee9d8511
2 ändrade filer med 180 tillägg och 53 borttagningar
  1. 1
    1
      src/freedombone
  2. 179
    52
      src/freedombone-mesh

+ 1
- 1
src/freedombone Visa fil

8174
 
8174
 
8175
   # publish regularly
8175
   # publish regularly
8176
   if ! grep -Fxq "toxavahi" /etc/crontab; then
8176
   if ! grep -Fxq "toxavahi" /etc/crontab; then
8177
-      echo "* *       * * *   root    toxavahi $MY_USERNAME > /dev/null" >> /etc/crontab
8177
+      echo "* *       * * *   root    toxavahi > /dev/null" >> /etc/crontab
8178
   fi
8178
   fi
8179
 
8179
 
8180
   systemctl restart avahi-daemon
8180
   systemctl restart avahi-daemon

+ 179
- 52
src/freedombone-mesh Visa fil

36
 IRC_PORT=6697
36
 IRC_PORT=6697
37
 PEERS_FILE=/tmp/meshpeers.txt
37
 PEERS_FILE=/tmp/meshpeers.txt
38
 
38
 
39
+TOX_PORT=33445
40
+TOX_REPO='git://github.com/irungentoo/toxcore.git'
41
+TOX_BOOTSTRAP_ID_FILE=/var/lib/tox-bootstrapd/pubkey.txt
42
+
43
+function install_toxcore {
44
+    if [ -f $TOX_BOOTSTRAP_ID_FILE ]; then
45
+        return
46
+    fi
47
+
48
+    sudo apt-get -y install build-essential libtool autotools-dev
49
+    sudo apt-get -y install automake checkinstall check git yasm
50
+    sudo apt-get -y install libsodium13 libsodium-dev libcap2-bin
51
+    sudo apt-get -y install libconfig9 libconfig-dev
52
+
53
+    if [ ! -d ~/develop ]; then
54
+        mkdir ~/develop
55
+    fi
56
+    cd ~/develop
57
+    git clone $TOXCORE_REPO
58
+    cd ~/develop/toxcore
59
+    autoreconf -i
60
+    ./configure --enable-daemon
61
+    if [ ! "$?" = "0" ]; then
62
+        exit 78467
63
+    fi
64
+    make
65
+    if [ ! "$?" = "0" ]; then
66
+        exit 84562
67
+    fi
68
+    sudo make install
69
+    sudo cp /usr/local/lib/libtoxcore* /usr/lib/
70
+
71
+    if [ ! -f /usr/local/bin/tox-bootstrapd ]; then
72
+        echo "File not found /usr/local/bin/tox-bootstrapd"
73
+        exit 73862
74
+    fi
75
+
76
+    sudo useradd --home-dir /var/lib/tox-bootstrapd --create-home --system --shell /sbin/nologin --comment "Account to run Tox's DHT bootstrap daemon" --user-group tox-bootstrapd
77
+    sudo chmod 700 /var/lib/tox-bootstrapd
78
+    if [ ! -f ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf ]; then
79
+        echo "File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf"
80
+        exit 476835
81
+    fi
82
+
83
+    # create configuration file
84
+    echo "port = $TOX_PORT" > /tmp/tox-bootstrapd.conf
85
+    echo 'keys_file_path = "/var/lib/tox-bootstrapd/keys"' >> /tmp/tox-bootstrapd.conf
86
+    echo 'pid_file_path = "/var/run/tox-bootstrapd/tox-bootstrapd.pid"' >> /tmp/tox-bootstrapd.conf
87
+    echo 'enable_ipv6 = true' >> /tmp/tox-bootstrapd.conf
88
+    echo 'enable_ipv4_fallback = true' >> /tmp/tox-bootstrapd.conf
89
+    echo 'enable_lan_discovery = true' >> /tmp/tox-bootstrapd.conf
90
+    echo 'enable_tcp_relay = true' >> /tmp/tox-bootstrapd.conf
91
+    echo "tcp_relay_ports = [443, 3389, $TOX_PORT]" >> /tmp/tox-bootstrapd.conf
92
+    echo 'enable_motd = true' >> /tmp/tox-bootstrapd.conf
93
+    echo 'motd = "tox-bootstrapd"' >> /tmp/tox-bootstrapd.conf
94
+    sudo cp /tmp/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
95
+    rm /tmp/tox-bootstrapd.conf
96
+
97
+    if [ -f /bin/systemctl ]; then
98
+        if [ ! -f ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service ]; then
99
+            echo "File not found ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service"
100
+            exit 7359
101
+        fi
102
+        sudo cp ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service /etc/systemd/system/
103
+
104
+        sudo systemctl daemon-reload
105
+        sudo systemctl enable tox-bootstrapd.service
106
+        sudo systemctl start tox-bootstrapd.service
107
+        if [ ! "$?" = "0" ]; then
108
+            sudo systemctl status tox-bootstrapd.service
109
+            exit 5846
110
+        fi
111
+
112
+        sudo systemctl restart tox-bootstrapd.service
113
+    else
114
+        sudo cp ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.sh /etc/init.d/tox-bootstrapd
115
+        sudo chmod 755 /etc/init.d/tox-bootstrapd
116
+        sudo update-rc.d tox-bootstrapd defaults
117
+        sudo service tox-bootstrapd start
118
+    fi
119
+
120
+    TOX_PUBLIC_KEY=$(cat /var/log/syslog | grep tox | grep "Public Key" | awk -F ' ' '{print $8}' | tail -1)
121
+    if [ ${#TOX_PUBLIC_KEY} -lt 30 ]; then
122
+        echo 'Could not obtain the tox node public key'
123
+        exit 6529
124
+    fi
125
+
126
+    # save the public key for later reference
127
+    echo "$TOX_PUBLIC_KEY" > $TOX_BOOTSTRAP_ID_FILE
128
+}
129
+
130
+function install_toxid {
131
+    if [ -f /usr/local/bin/toxid ]; then
132
+        return
133
+    fi
134
+    cd ~/develop
135
+    git clone https://github.com/bashrc/toxid
136
+    cd ~/develop/toxid
137
+    make
138
+    sudo make install
139
+
140
+    if [ ! -f /usr/local/bin/toxid ]; then
141
+        echo "Couldn't install toxid"
142
+        exit 6389
143
+    fi
144
+
145
+    if ! grep -Fxq "toxavahi" /etc/crontab; then
146
+        cp /etc/crontab /tmp/crontab
147
+        echo "* *       * * *   root    toxavahi > /dev/null" >> /tmp/crontab
148
+        sudo cp /tmp/crontab /etc/crontab
149
+        rm /tmp/crontab
150
+    fi
151
+}
152
+
153
+function run_tox {
154
+    if [ -f $TOXIC_PATH ]; then
155
+        # update bootstrap nodes
156
+        if [ -f $DHTNODES ]; then
157
+            if [ ! -f $DHTNODES.internet ]; then
158
+                sudo cp $DHTNODES $DHTNODES.internet
159
+            fi
160
+        fi
161
+        lstox -f dht > /tmp/dht
162
+        sudo cp /tmp/dht $DHTNODES
163
+
164
+        # get a list of peers
165
+        PEER_TOX_ID_LIST=$(lstox | grep $AVAHI_DOMAIN | sort -u)
166
+        if [ ! $PEER_TOX_ID_LIST ]; then
167
+            echo 'No peers found'
168
+            exit 0
169
+        fi
170
+        PEER_TOX_ID_LIST_COUNT=$(echo $PEER_TOX_ID_LIST | wc -l)
171
+        PEER_TOX_ID=''
172
+        if [ $PEER_TOX_ID_LIST_COUNT -lt "2" ]; then
173
+            # single peer
174
+            PEER_TOX_ID=$(echo $PEER_TOX_ID_LIST | awk -F ' ' '{print $3}')
175
+        else
176
+            # choose a user from a list
177
+            echo ''
178
+            echo "Select a user on $AVAHI_DOMAIN:"
179
+            ctr=0
180
+            while IFS='' read -r line || [[ -n "$line" ]]; do
181
+                toxusername=$(echo $line | awk -F ' ' '{print $2}')
182
+                echo "    $ctr. $toxusername"
183
+                ctr=$((ctr + 1))
184
+            done < "$PEER_TOX_ID_LIST"
185
+            read user_index
186
+            PEER_TOX_ID=$(echo $PEER_TOX_ID_LIST | tail -n+${user_index} | head -n1 | awk -F ' ' '{print $3}')
187
+        fi
188
+
189
+        # if this is a valid ID
190
+        if [ ${#PEER_TOX_ID} -gt 30 ]; then
191
+            # start client and make a friend request
192
+            echo "/nick $USER
193
+/add $PEER_TOX_ID
194
+/exit
195
+" | $TOXIC_PATH -d
196
+            # Running twice is a hack to get around buggyness in the client
197
+            $TOXIC_PATH -d
198
+            exit 0
199
+        else
200
+            # ID was invalid
201
+            echo $PEER_TOX_ID
202
+            echo "Tox ID for $AVAHI_DOMAIN was not found"
203
+            exit 6
204
+        fi
205
+    fi
206
+}
207
+
39
 if [ ! -f /usr/bin/batman ]; then
208
 if [ ! -f /usr/bin/batman ]; then
40
     freedombone-client
209
     freedombone-client
41
 fi
210
 fi
49
 fi
218
 fi
50
 
219
 
51
 if [ ! -f /tmp/meshtype ]; then
220
 if [ ! -f /tmp/meshtype ]; then
221
+    install_toxcore
222
+    install_toxid
52
     sudo batman start
223
     sudo batman start
53
     if [ ! "$?" = "0" ]; then
224
     if [ ! "$?" = "0" ]; then
54
         exit 2
225
         exit 2
55
     fi
226
     fi
56
 fi
227
 fi
57
 
228
 
58
-avahi-browse -atl | grep "Workstation" | awk -F ' ' '{print $4}' > $PEERS_FILE
229
+avahi-browse -atl | grep "Workstation" | awk -F ' ' '{print $4}' | sort -u > $PEERS_FILE
59
 
230
 
60
 if [ ! -f $PEERS_FILE ]; then
231
 if [ ! -f $PEERS_FILE ]; then
61
    echo 'No peers were found'
232
    echo 'No peers were found'
113
     exit 3
284
     exit 3
114
 fi
285
 fi
115
 
286
 
116
-# Connect to IRC
287
+# if only mumble is installed
117
 if [ ! -f $IRSSI_PATH ]; then
288
 if [ ! -f $IRSSI_PATH ]; then
118
     if [ ! -f $TOXIC_PATH ]; then
289
     if [ ! -f $TOXIC_PATH ]; then
119
         if [ -f $MUMBLE_PATH ]; then
290
         if [ -f $MUMBLE_PATH ]; then
126
     fi
297
     fi
127
 fi
298
 fi
128
 
299
 
300
+# if only irssi is installed
129
 if [ ! -f $MUMBLE_PATH ]; then
301
 if [ ! -f $MUMBLE_PATH ]; then
130
     if [ ! -f $TOXIC_PATH ]; then
302
     if [ ! -f $TOXIC_PATH ]; then
131
         if [ -f $IRSSI_PATH ]; then
303
         if [ -f $IRSSI_PATH ]; then
138
     fi
310
     fi
139
 fi
311
 fi
140
 
312
 
313
+# if only tox is installed
141
 if [ ! -f $MUMBLE_PATH ]; then
314
 if [ ! -f $MUMBLE_PATH ]; then
142
     if [ ! -f $IRSSI_PATH ]; then
315
     if [ ! -f $IRSSI_PATH ]; then
143
-        if [ -f $TOXIC_PATH ]; then
144
-            if [ -f $DHTNODES ]; then
145
-                if [ ! -f $DHTNODES.internet ]; then
146
-                    sudo cp $DHTNODES $DHTNODES.internet
147
-                fi
148
-            fi
149
-            lstox -f dht > /tmp/dht
150
-            sudo cp /tmp/dht $DHTNODES
151
-            PEER_TOX_ID=$(lstox | grep $AVAHI_DOMAIN | head -n 1 | awk -F ' ' '{print $2}')
152
-            if [ ${#PEER_TOX_ID} -gt 30 ]; then
153
-                echo "/nick $USER
154
-/add $PEER_TOX_ID
155
-/exit
156
-" | $TOXIC_PATH -d
157
-                $TOXIC_PATH -d
158
-                exit 0
159
-            else
160
-                echo $PEER_TOX_ID
161
-                echo "Tox ID for $AVAHI_DOMAIN was not found"
162
-                exit 6
163
-            fi
164
-        fi
165
-        echo 'You need irssi/mumble/toxic installed on your system'
166
-        sudo batman stop
167
-        exit 4
316
+        run_tox
168
     fi
317
     fi
169
 fi
318
 fi
170
 
319
 
172
 echo 'Choose communication service:'
321
 echo 'Choose communication service:'
173
 echo '    1. VoIP'
322
 echo '    1. VoIP'
174
 echo '    2. Tox Chat'
323
 echo '    2. Tox Chat'
175
-echo '    3. IRC (WARNING: not encrypted)'
324
+echo '    3. IRC (WARNING: not secure)'
176
 echo ''
325
 echo ''
177
 
326
 
178
 read peer_index
327
 read peer_index
203
     fi
352
     fi
204
 else
353
 else
205
     if [[ $peer_index == 2 ]]; then
354
     if [[ $peer_index == 2 ]]; then
206
-        if [ -f $TOX_PATH ]; then
207
-            if [ -f $DHTNODES ]; then
208
-                if [ ! -f $DHTNODES.internet ]; then
209
-                    sudo cp $DHTNODES $DHTNODES.internet
210
-                fi
211
-            fi
212
-            lstox -f dht > /tmp/dht
213
-            sudo cp /tmp/dht $DHTNODES
214
-            PEER_TOX_ID=$(lstox | grep $AVAHI_DOMAIN | head -n 1 | awk -F ' ' '{print $2}')
215
-            if [ ${#PEER_TOX_ID} -gt 30 ]; then
216
-                echo "/nick $USER
217
-/add $PEER_TOX_ID
218
-/exit
219
-" | $TOXIC_PATH -d
220
-                $TOXIC_PATH -d
221
-            else
222
-                echo "Tox ID for $AVAHI_DOMAIN was not found"
223
-                exit 6
224
-            fi
225
-        else
226
-            echo 'Tox may not be installed on this system'
227
-            exit 7
228
-        fi
355
+        run_tox
229
     else
356
     else
230
         if [ -f $IRSSI_PATH ]; then
357
         if [ -f $IRSSI_PATH ]; then
231
             $IRSSI_PATH -c $AVAHI_DOMAIN -p $IRC_PORT -n $USER
358
             $IRSSI_PATH -c $AVAHI_DOMAIN -p $IRC_PORT -n $USER
232
         else
359
         else
233
-            echo 'Irssi may not be installed on this system'
360
+            echo 'Irssi/toxic/mumble may not be installed on this system'
234
             exit 8
361
             exit 8
235
         fi
362
         fi
236
     fi
363
     fi