diff --git a/onionr/netcontroller.py b/onionr/netcontroller.py
index 5fbfba4e..bbf97067 100644
--- a/onionr/netcontroller.py
+++ b/onionr/netcontroller.py
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
'''
-import subprocess, os
+import subprocess, os, random, sys
class NetController:
'''NetController
This class handles hidden service setup on Tor and I2P
@@ -25,8 +25,9 @@ class NetController:
def __init__(self, hsPort):
self.torConfigLocation = 'data/torrc'
self.readyState = False
- self.socksPort = socksPort
+ self.socksPort = random.randint(1024, 65535)
self.hsPort = hsPort
+ self.myID = ''
if os.path.exists(self.torConfigLocation):
torrc = open(self.torConfigLocation, 'r')
if not self.hsPort in torrc.read():
@@ -35,9 +36,9 @@ class NetController:
def generateTorrc(self):
if os.path.exists(self.torConfigLocation):
os.remove(self.torConfigLocation)
- torrcData = '''SOCKSPORT ''' + self.socksPort + '''
-HiddenServiceData data/hs/
-HiddenServicePort 80 127.0.0.1:''' + self.hsPort + '''
+ torrcData = '''SOCKSPORT ''' + str(self.socksPort) + '''
+HiddenServiceDir data/hs/
+HiddenServicePort 80 127.0.0.1:''' + str(self.hsPort) + '''
'''
torrc = open(self.torConfigLocation, 'w')
torrc.write(torrcData)
@@ -45,7 +46,14 @@ HiddenServicePort 80 127.0.0.1:''' + self.hsPort + '''
return
def startTor(self):
- if not os.path.exists(self.torConfigLocation):
- self.generateTorrc()
- subprocess.Popen(['tor', '-f ' + self.torConfigLocation])
+ self.generateTorrc()
+ tor = subprocess.Popen(['tor', '-f', self.torConfigLocation], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ for line in iter(tor.stdout.readline, b''):
+ if 'Bootstrapped 100%: Done' in line.decode():
+ break
+ print('Finished starting Tor')
+ self.readyState = True
+ myID = open('data/hs/hostname', 'r')
+ self.myID = myID.read()
+ myID.close()
return
\ No newline at end of file
diff --git a/onionr/onionr.py b/onionr/onionr.py
index 749c85e9..9e852bb4 100755
--- a/onionr/onionr.py
+++ b/onionr/onionr.py
@@ -20,7 +20,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
'''
-import sys, os, configparser, base64, random, getpass, shutil, subprocess, requests
+import sys, os, configparser, base64, random, getpass, shutil, subprocess, requests, time
import gui, api, colors, core
from onionrutils import OnionrUtils
from colors import Colors
@@ -119,10 +119,10 @@ class Onionr:
''' Start the Onionr communication daemon
'''
if not os.environ.get("WERKZEUG_RUN_MAIN") == "true":
- net = NetController(self.config['PORT'])
+ net = NetController(self.config['CLIENT']['PORT'])
print('Tor is starting...')
- net.startTor(self.config['CLIENT']['PORT'])
- time.sleep(5)
+ net.startTor()
+ time.sleep(1)
subprocess.Popen(["./communicator.py", "run"])
print('Started communicator')
api.API(self.config, self.debug)