def get(self): user = get_current_user(self) if not user: user = self.get_argument("user", None) # mock user since node client has no cookie if user: try: user=int(user) except ValueError: err = json.dumps({"err": 5, "what": "invalid uid"}) self.write(err) return ip = self.get_argument("ip", None) port = self.get_argument("port", None) if ip and port: if port == '8884' and IP.is_valid_ipv4_address(ip): HttpServerInfoCache.update_ipv4_address(user, ip) ok = json.dumps({"err": 0}) self.write(ok) elif port == '8886' and IP.is_valid_ipv6_address(ip): HttpServerInfoCache.update_ipv6_address(user, ip) ok = json.dumps({"err": 0}) self.write(ok) else: err = json.dumps({"err": 2, "what": "port number err or ip address format err. ip:"+ip+" port:"+port}) self.write(err) else: err = json.dumps({"err": 3, "what": "no ip or port"}) self.write(err) else: err = json.dumps({"err": 1, "what": "login first"}) self.write(err)
def get_online_file_owner(cls, my_uid, file_hash): assert len(file_hash) > 0 assert my_uid >= 0 online_owners = filter(UserIPCache.user_online, ResourcesCache.get_resource_owners(file_hash)) # if online_owners.count(my_uid): # remove myself # online_owners.remove(my_uid) if (UserIPCache.user_online(my_uid)): my_ip = UserIPCache.get_user_ip(my_uid) is_ipv4 = IP.is_valid_ipv4_address(my_ip) if is_ipv4: same_ip_users = filter(lambda user: UserIPCache.get_user_ip(user) == my_ip, online_owners) v4_owners = [user for user in same_ip_users if IP.is_valid_ipv4_address(HttpServerInfoCache.get_user_ipv4(user))] grep_owners = [{"uid": user, "host": HttpServerInfoCache.get_user_ipv4(user), "port": 8884} for user in v4_owners] return grep_owners else: v6_owners = [user for user in online_owners if IP.is_valid_ipv6_address(HttpServerInfoCache.get_user_ipv6(user))] grep_owners = [{"uid": user, "host": HttpServerInfoCache.get_user_ipv6(user), "port": 8886} for user in v6_owners] return grep_owners else: return []