protected boolean configureURL(ApacheBinaryInfo binary, ConfigResponse config) {
    String port = null, address = null;
    if (binary.conf != null) {
      // XXX config parsing not complete
      Map cfg = ApacheBinaryInfo.parseConfig(binary.conf);
      String listen = (String) cfg.get("Listen");
      if (listen != null) {
        int ix = listen.lastIndexOf(':');
        if (ix == -1) {
          port = listen;
          address = (String) cfg.get("ServerName");
          if (address != null) {
            ix = address.indexOf(':');
            if (ix != -1) {
              address = address.substring(0, ix);
            }
          }
        } else {
          address = listen.substring(0, ix);
          port = listen.substring(ix + 1);
        }
      }
      setConfigTrack(config, binary.conf);
      String root = (String) cfg.get("ServerRoot");
      if (root != null) {
        binary.root = root;
      }
      String log = (String) cfg.get("ErrorLog");
      if (binary.serverRootRelative(log).exists()) {
        setLogTrack(config, log);
      }
      String pid = (String) cfg.get("PidFile");
      if (pid != null) {
        File pidFile = binary.serverRootRelative(pid);
        if (pidFile.exists()) {
          setPidFile(config, pidFile.getPath());
        }
      }
    }
    if (port == null) {
      port = getConfigProperty(Collector.PROP_PORT, "80");
    }
    if (address == null) {
      address = getListenAddress(port, this.defaultIp);
    }

    config.setValue(Collector.PROP_PROTOCOL, getConnectionProtocol(port));
    config.setValue(Collector.PROP_SSL, isSSL(port));
    config.setValue(Collector.PROP_HOSTNAME, address);
    config.setValue(Collector.PROP_PORT, port);
    config.setValue(Collector.PROP_PATH, getConfigProperty(Collector.PROP_PATH, "/server-status"));
    return true;
  }