Ejemplo n.º 1
0
 def get_tickets(self):
     results = get_ticket_for_file(self.rpath, self._name, self.password, session=self.session)
     if results == None:
         raise IOError("%s does not exist" % (self.path))
     tickets, session, servers_id = results
     # Load Balancing!
     server_choice = random.randint(0, len(servers_id) - 1)
     server_id = servers_id[server_choice]
     ticket = tickets[server_choice]
     return (server_id, ticket, session)
Ejemplo n.º 2
0
def file_write(file_to_lookup, diff_file_name, name, password, session=None):
	results = get_ticket_for_file(file_to_lookup, name, password)
	if(results == None):
		return None
	tickets, session, servers_id = results
	server_choice = random.randint(0, len(servers_id)-1)
	server_id = servers_id[server_choice]
	ticket = tickets[server_choice]
	contents = open(diff_file_name, "rb").read()
	data = {
		"ticket": ticket,
		"request": {
			"type":"write",
			"message": os.path.join(server_id[2], file_to_lookup),
			"relative": file_to_lookup,
			"payload":base64.b64encode(contents)
		}
	}
	data["request"] = secure.encrypt_with_key(json.dumps(data["request"]), session)
	print lookup_fs(data, "", server_id, session)
	return session
Ejemplo n.º 3
0
def file_open(file_to_lookup,  name, password,local_file=None, session=None):
	results = get_ticket_for_file(file_to_lookup, name, password)
	if(results == None):
		return None
	tickets, session, servers_id = results
	server_choice = random.randint(0, len(servers_id)-1)
	server_id = servers_id[server_choice]
	ticket = tickets[server_choice]
	data = {
		"ticket": ticket,
		"request": {
			"type": "open",
			"message":  os.path.join(server_id[2], file_to_lookup)
		}
	}
	data["request"] = secure.encrypt_with_key(json.dumps(data["request"]), session)
	local_file = os.path.join("cached", file_to_lookup)
	try:
		os.makedirs(os.path.dirname(local_file))
	except OSError:
		pass
	print lookup_fs(data, local_file, server_id, session)
	return session
Ejemplo n.º 4
0
Archivo: fs.py Proyecto: Newky/4thYear
 def replicate_changes(self, relative, body):
     print "I Am Replicating The Update"
     # Replicate changes. First must get ds entry from
     name = "fs/{0}:{1}".format(HOST, PORT)
     print "Connection AS at {0}:{1}".format(ASHOST, ASPORT)
     results = get_ticket_for_file(relative, name, password, ls_needed=False)
     if results == None:
         return None
     tickets, session, servers_id = results
     print results
     servers_id = [[h, p, f] for h, p, f in servers_id if not (h == HOST and p == str(PORT))]
     for i in range(0, len(servers_id)):
         # Note relative left out to let the file server know that
         # This is being replicated by a file server and doesnt need
         # further replication.
         ticket = tickets[i]
         server_id = servers_id[i]
         data = {
             "ticket": ticket,
             "request": {"type": "write", "message": os.path.join(server_id[2], relative), "payload": body},
         }
         data["request"] = secure.encrypt_with_key(json.dumps(data["request"]), session)
         print lookup_fs(data, "", server_id, session)