code: func (info *faucetInfos) Report() map[string]string {
  	report := map[string]string{
  		"Website address":              info.host,
  		"Website listener port":        strconv.Itoa(info.port),
  		"Ethereum listener port":       strconv.Itoa(info.node.port),
  		"Funding amount (base tier)":   fmt.Sprintf("%d Ethers", info.amount),
  		"Funding cooldown (base tier)": fmt.Sprintf("%d mins", info.minutes),
  		"Funding tiers":                strconv.Itoa(info.tiers),
  		"Captha protection":            fmt.Sprintf("%v", info.captchaToken != ""),
  		"Ethstats username":            info.node.ethstats,
  	}
  	if info.noauth {
  		report["Debug mode (no auth)"] = "enabled"
  	}
  	if info.node.keyJSON != "" {
  		var key struct {
  			Address string `json:"address"`
  		}
  		if err := json.Unmarshal([]byte(info.node.keyJSON), &key); err == nil {
  			report["Funding account"] = common.HexToAddress(key.Address).Hex()
  		} else {
  			log.Error("Failed to retrieve signer address", "err", err)
  		}
  	}
  	return report
  }
docs: // Report converts the typed struct into a plain string->string map, containing
  // most - but not all - fields for reporting to the user.