@Override
	public FileInfo getAttr(String server, String user, String dir)
			throws ServerOfflineException, NoPermissionsException,
			NoSuchFileException, NoSuchPathException {
		String path = Domains.parsePath(dir);

		if (server == null) {
			FileInfo fi = this.fileSystem.getAttr(path);
			if (fi != null) {
				return fi;
			}
			return null;
		}
		String url;
		try {
			url = this.getFileServerURL(Domains.getFileServerURL(server, user));
		} catch (NoSuchServerException e1) {
			Logger.log("No such server " + server);
			return null;
		}

		IRmiRemoteFileServer rfs = this.getRmiFileServer(url);
		if (rfs == null)
			throw new ServerOfflineException("File Server is offline");
		int tries = RemoteUtils.NTRIES;
		while (true) {
			try {
				FileInfo info = rfs.getAttr(path);
				if (info != null) {
					return info;
				}
				return null;
			} catch (RemoteException e) {
				tries--;
				if (tries == 0) {
					throw new ServerOfflineException("File Server is offline");
				}
				RemoteUtils.sleepToRetry();
			}
		}
	}