@ -60,8 +60,8 @@ class Meshenger:
print ' found ' , len ( self . devices ) , ' device(s) '
for device in self . devices :
nodepath = self . ip_to_hash ( device ) #make a folder for the node (nodes/'hash'/)
nodeupdatepath = os . path . join ( self . ip_to_hash ( device ) , ' lastupdate ' )
nodepath = self . ip_to_hash_path ( device ) #make a folder for the node (nodes/'hash'/)
nodeupdatepath = os . path . join ( self . ip_to_hash_path ( device ) , ' lastupdate ' )
print ' Checking age of foreign node index '
@ -81,7 +81,7 @@ class Meshenger:
def node_timestamp ( self , ip ) :
updatepath = os . path . join ( self . ip_to_hash ( ip ) , ' lastupdate ' )
updatepath = os . path . join ( self . ip_to_hash_path ( ip ) , ' lastupdate ' )
with open ( updatepath , ' wb ' ) as lastupdate :
lastupdate . write ( self . devices [ ip ] )
#return updatepath
@ -112,17 +112,20 @@ Discover other devices by listening to the Meshenger announce port
s . setblocking ( 0 )
while not self . exitapp :
result = select . select ( [ s ] , [ ] , [ ] ) [ 0 ] [ 0 ] . recvfrom ( bufferSize )
ip = result [ 1 ] [ 0 ]
if result [ 1 ] [ 0 ] in self . devices and result [ 1 ] [ 0 ] != self . own_ip :
print ' Known node ' , result [ 1 ] [ 0 ]
self . devices [ result [ 1 ] [ 0 ] ] = result [ 0 ]
#self.devices.append(result[1][0])
if os . path . exists ( self . ip_to_hash_path ( ip ) ) and ip != self . own_ip :
print ' Known node ' , ip
self . devices [ ip ] = result [ 0 ]
self . node_timestamp ( ip ) #klopt dit?
#self.devices.append(ip)
elif result [ 1 ] [ 0 ] not in self . devices and result [ 1 ] [ 0 ] != self . own_ip :
elif not os . path . exists ( self . ip_to_hash_path ( ip ) ) and ip != self . own_ip :
#loop for first time
self . devices [ result [ 1 ] [ 0 ] ] = result [ 0 ]
self . node_timestamp ( result [ 1 ] [ 0 ] )
print ' New node ' , result [ 1 ] [ 0 ]
self . ip_to_hash_path ( ip )
self . devices [ ip ] = result [ 0 ]
self . node_timestamp ( ip )
print ' New node ' , ip
@ -156,8 +159,9 @@ Save the time of the last update.
if not os . path . exists ( ' index ' ) :
with open ( ' index ' , ' wb ' ) as index :
index . write ( ' ' )
previous_index = [ ]
previous_index = [ ]
else :
previous_index = open ( ' index ' ) . readlines ( )
while not self . exitapp :
current_index = os . listdir ( self . msg_dir )
@ -170,8 +174,8 @@ Save the time of the last update.
print ' Index updated: ' , current_index
with open ( ' index_last_update ' , ' wb ' ) as indexupdate : ### misschien is dit overbodig
indexupdate . write ( str ( int ( time . time ( ) ) ) )
with open ( ' index_last_update ' , ' wb ' ) as indexupdate :
indexupdate . write ( self . index_last_update ) ### misschien moet dit index_last_update zijn
previous_index = current_index
time . sleep ( 5 )
@ -199,21 +203,26 @@ Get new messages from other node based on it's index file
except :
pass
def ip_to_hash ( self , ip ) :
def ip_to_hash_path ( self , ip ) :
"""
Convert a node ' s ip into a hash and make a directory to store it ' s files
"""
if not os . path . exists ( ' nodes ' ) :
os . mkdir ( ' nodes ' )
import hashlib
hasj = hashlib . md5 ( ip ) . hexdigest ( )
nodepath = os . path . join ( os . path . abspath ( ' nodes ' ) , hasj )
nodepath = os . path . join ( os . path . abspath ( ' nodes ' ) , self . hasj ( ip ) )
if not os . path . exists ( nodepath ) :
os . mkdir ( nodepath )
return nodepath
def hasj ( self , ip ) :
"""
Convert a node ' s ip into a hash
"""
import hashlib
hasj = hashlib . md5 ( ip ) . hexdigest ( )
return hasj
def clientsite ( self ) :
a = ' '