def initall(name,eid,nid,port,guest,knownNodes,groups):
    dataStore = None#SQLiteDataStore(os.path.expanduser('~')+'/.entangled/fileshare.sqlite')
			
		
    node = entangled.node.EntangledNode(id = nid,udpPort= int(port), dataStore=dataStore)
		
    print node.id
    node.invalidKeywords.extend(('mp3', 'png', 'jpg', 'txt', 'ogg'))
    node.keywordSplitters.extend(('-', '!','.','_',',',':'))
    window = FileShareWindow(node,port,groups,name,eid,guest)
		
    window.set_title('COP -Research Sharing Demo')
    window.present()
		
    node.joinNetwork(knownNodes)
    twisted.internet.reactor.run()
Example #2
0
        sys.exit(1)
    
    if len(sys.argv) == 4:
        knownNodes = [(sys.argv[2], int(sys.argv[3]))]
    elif len(sys.argv) == 3:
        knownNodes = []
        f = open(sys.argv[2], 'r')
        lines = f.readlines()
        f.close()
        for line in lines:
            ipAddress, udpPort = line.split()
            knownNodes.append((ipAddress, int(udpPort)))
    else:
        knownNodes = None

    try:
        os.makedirs(os.path.expanduser('~')+'/.entangled')
    except OSError:
        pass
    dataStore = SQLiteDataStore(os.path.expanduser('~')+'/.entangled/fileshare.sqlite')
    node = entangled.node.EntangledNode(udpPort=int(sys.argv[1]), dataStore=dataStore)
    node.invalidKeywords.extend(('mp3', 'png', 'jpg', 'txt', 'ogg'))
    node.keywordSplitters.extend(('-', '!'))
    window = FileShareWindow(node)
    
    window.set_title('Entangled File Sharing Demo')
    window.present()
    
    node.joinNetwork(knownNodes)
    twisted.internet.reactor.run()
Example #3
0
def main():
  l = Logger()
  parser = argparse.ArgumentParser()
  parser.add_argument('--key', required=True)
  parser.add_argument('--port', required=True, type=int)
  parser.add_argument('--connect', dest='address', default=None)
  parser.add_argument('--share', dest='shared', default=[], nargs='*')
  parser.add_argument('--dir', dest='content_directory', required=True)
  parser.add_argument('--db', dest='db_filename', required=True)
  parser.add_argument('--newdb', default=False, action='store_true')
  parser.add_argument('--log', dest='log_filename', default=None)
  parser.add_argument('--fs', default=None)
  args = parser.parse_args()

  l.set_output(open(args.log_filename, 'w'))
  print('> logging to: {}'.format(args.log_filename))
  
  if args.address:
    ip, port = args.address.split(':')
    port = int(port)
    knownNodes = [(ip, port)]
  # elif len(sys.argv) == 3:
  #   knownNodes = []
  #   f = open(sys.argv[2], 'r')
  #   lines = f.readlines()
  #   f.close()
  #   for line in lines:
  #     ipAddress, udpPort = line.split()
  #     knownNodes.append((ipAddress, int(udpPort)))
  else:
    knownNodes = None

  try:
    os.makedirs(os.path.expanduser('~')+'/.entangled')
  except OSError:
    pass
  dataStore = None#SQLiteDataStore(os.path.expanduser('~')+'/.entangled/fileshare.sqlite')

  ##key = RSA.importKey(open(args.key + '.pub').read())

  print('> reading key')
  sha = hashlib.sha1()
  public_key = open(args.key + '.pub').read().strip()
  sha.update(public_key)
  node_id = sha.digest()

  node = entangled.node.EntangledNode(id=node_id, udpPort=args.port, dataStore=dataStore)
  node.invalidKeywords.extend(('mp3', 'png', 'jpg', 'txt', 'ogg'))
  node.keywordSplitters.extend(('-', '!'))

  print('> joining network')
  node.joinNetwork(knownNodes)

  def prepare():
    file_db = FileDatabase(l, public_key, args.db_filename, args.newdb)
    file_service = FileSharingService(l, node, args.port, public_key, file_db, args.content_directory)
  
    for directory in args.shared:
      reactor.callLater(6, file_service.publish_directory, public_key, directory)
   
  
    # just for informational purposes
    if args.newdb:
      print('> adding \'/\'')

    l.log('Main', 'Node running.')
  
    def fuse_call():
      time.sleep(20)
      print('> filesystem running')
      debug = True
      fsobj = FileSystem(l, public_key, file_db, file_service, args.content_directory)
      fuse = FUSE(fsobj, args.fs, foreground=True, debug=debug)
  
    if args.fs:
      reactor.callInThread(fuse_call)

  print('> reactor running')
  reactor.callLater(2, prepare)

  reactor.run()
Example #4
0
    if len(sys.argv) == 4:
        knownNodes = [(sys.argv[2], int(sys.argv[3]))]
    elif len(sys.argv) == 3:
        knownNodes = []
        f = open(sys.argv[2], 'r')
        lines = f.readlines()
        f.close()
        for line in lines:
            ipAddress, udpPort = line.split()
            knownNodes.append((ipAddress, int(udpPort)))
    else:
        knownNodes = None

    try:
        os.makedirs(os.path.expanduser('~') + '/.entangled')
    except OSError:
        pass
    dataStore = None  #SQLiteDataStore(os.path.expanduser('~')+'/.entangled/fileshare.sqlite')
    node = entangled.node.EntangledNode(udpPort=int(sys.argv[1]),
                                        dataStore=dataStore)
    node.invalidKeywords.extend(('mp3', 'png', 'jpg', 'txt', 'ogg'))
    node.keywordSplitters.extend(('-', '!'))
    window = FileShareWindow(node)

    window.set_title('Entangled File Sharing Demo')
    window.present()

    node.joinNetwork(knownNodes)
    twisted.internet.reactor.run()