コード例 #1
0
ファイル: ircd_geoip.c プロジェクト: NX-Andro/nefarious2
/** Apply GeoIP country data to a client.
 * @param[in] cptr Client to apply GeoIP country data to.
 */
void geoip_apply(struct Client* cptr)
{
#ifdef USE_GEOIP
  int gcid = 0;
#endif /* USE_GEOIP */
#ifdef USE_GEOIP_GL
  GeoIPLookup gl;
#endif /* USE_GEOIP_GL */

  if (!feature_bool(FEAT_GEOIP_ENABLE))
    return;

  if (!(cptr))
    return;

#ifdef USE_GEOIP
  if (irc_in_addr_is_ipv4(&cli_ip(cptr))) {
    /* User is IPv4 so use gi4. */
    if (gi4 != NULL)
#ifdef USE_GEOIP_GL
      gcid = GeoIP_id_by_addr_gl(gi4, cli_sock_ip(cptr), &gl);
#else
      gcid = GeoIP_id_by_addr(gi4, cli_sock_ip(cptr));
#endif /* USE_GEOIP_GL */
  } else {
    /* User is IPv6 so use gi6. */
    if (gi6 != NULL)
#ifdef USE_GEOIP_GL
      gcid = GeoIP_id_by_addr_v6_gl(gi6, cli_sock_ip(cptr), &gl);
#else
      gcid = GeoIP_id_by_addr_v6(gi6, cli_sock_ip(cptr));
#endif /* USE_GEOIP_GL */
  }
#endif /* USE_GEOIP */

#ifdef USE_GEOIP
  if (gcid == 0) {
#endif /* USE_GEOIP */
    ircd_strncpy((char *)&cli_countrycode(cptr), "--", 3);
    ircd_strncpy((char *)&cli_countryname(cptr), "Unknown", 8);
    ircd_strncpy((char *)&cli_continentcode(cptr), "--", 3);
    ircd_strncpy((char *)&cli_continentname(cptr), "Unknown", 8);
#ifdef USE_GEOIP
  } else {
    ircd_strncpy((char *)&cli_countrycode(cptr), GeoIP_code_by_id(gcid), 3);
    ircd_strncpy((char *)&cli_countryname(cptr), GeoIP_name_by_id(gcid), 256);
    ircd_strncpy((char *)&cli_continentcode(cptr), GeoIP_continent_by_id(gcid), 3);
    ircd_strncpy((char *)&cli_continentname(cptr), geoip_continent_name_by_code(GeoIP_continent_by_id(gcid)), 256);
  }
#endif /* USE_GEOIP */

  SetGeoIP(cptr);
}
コード例 #2
0
ファイル: CslGeoIP.cpp プロジェクト: aurhat/cubelister
CslGeoIP::CslGeoIP() : m_type(GEOIP_COUNTRY)
{
    for (wxInt32 i = 0;; i++)
    {
        const char *code = GeoIP_code_by_id(i);
        const char *name = GeoIP_name_by_id(i);

        if (!code || !name)
            break;

        m_countryCodes.push_back(C2U(code));
        m_countryNames.push_back(C2U(name));
    }
}
コード例 #3
0
ファイル: ircd_geoip.c プロジェクト: NX-Andro/nefarious2
/** Apply GeoIP country data to a client from a MARK.
 * @param[in] cptr Client to apply GeoIP country data to.
 * @param[in] country Country code from MARK.
 * @param[in] continent Continent code from MARK.
 */
void geoip_apply_mark(struct Client* cptr, char* country, char* continent)
{
  ircd_strncpy((char *)&cli_countrycode(cptr), (!country ? "--" : country), 3);
  ircd_strncpy((char *)&cli_continentcode(cptr), (!continent ? "--" : continent), 3);

#ifdef USE_GEOIP
  if (!country || !strcmp(country, "--"))
#endif /* USE_GEOIP */
    ircd_strncpy((char *)&cli_countryname(cptr), "Unknown", 8);
#ifdef USE_GEOIP
  else
    ircd_strncpy((char *)&cli_countryname(cptr), GeoIP_name_by_id(GeoIP_id_by_code(country)), 256);

  if (!continent || !strcmp(continent, "--"))
#endif /* USE_GEOIP */
    ircd_strncpy((char *)&cli_continentname(cptr), "Unknown", 8);
#ifdef USE_GEOIP
  else
    ircd_strncpy((char *)&cli_continentname(cptr), geoip_continent_name_by_code(continent), 256);
#endif /* USE_GEOIP */

  SetGeoIP(cptr);
}
コード例 #4
0
ファイル: output.c プロジェクト: krytarowski/logswan
char *output(Results results) {
	json_t *jsonObject = json_object();
	json_t *hitsObject = json_object();
	json_t *visitsObject = json_object();
	json_t *continentsArray = json_array();
	json_t *countriesArray = json_array();
	json_t *hoursArray = json_array();
	json_t *httpStatusArray = json_array();
	json_t *methodsArray = json_array();
	json_t *protocolsArray = json_array();

	for (int loop=0; loop<CONTINENTS; loop++) {
		if (results.continents[loop]) {
			json_array_append_new(continentsArray, json_pack("{s:s, s:s, s:i}", "data", continentsId[loop], "name", continentsNames[loop], "hits", results.continents[loop]));
		}
	}

	for (int loop=0; loop<COUNTRIES; loop++) {
		if (results.countries[loop]) {
			json_array_append_new(countriesArray, json_pack("{s:s, s:s, s:i}", "data", GeoIP_code_by_id(loop), "name", GeoIP_name_by_id(loop), "hits", results.countries[loop]));
		}
	}

	for (int loop=0; loop<24; loop++) {
		if (results.hours[loop]) {
			json_array_append_new(hoursArray, json_pack("{s:i, s:i}", "data", loop, "hits", results.hours[loop]));
		}
	}

	for (int loop=0; loop<STATUS_CODE_MAX; loop++) {
		if (results.status[loop]) {
			json_array_append_new(httpStatusArray, json_pack("{s:i, s:i}", "data", loop, "hits", results.status[loop]));
		}
	}

	for (int loop=0; loop<METHODS; loop++) {
		if (results.methods[loop]) {
			json_array_append_new(methodsArray, json_pack("{s:s, s:i}", "data", methods[loop], "hits", results.methods[loop]));
		}
	}

	for (int loop=0; loop<PROTOCOLS; loop++) {
		if (results.protocols[loop]) {
			json_array_append_new(protocolsArray, json_pack("{s:s, s:i}", "data", protocols[loop], "hits", results.protocols[loop]));
		}
	}

	json_object_set_new(hitsObject, "ipv4", json_integer(results.hitsIPv4));
	json_object_set_new(hitsObject, "ipv6", json_integer(results.hitsIPv6));
	json_object_set_new(hitsObject, "total", json_integer(results.hits));

	json_object_set_new(visitsObject, "ipv4", json_integer(results.visitsIPv4));
	json_object_set_new(visitsObject, "ipv6", json_integer(results.visitsIPv6));
	json_object_set_new(visitsObject, "total", json_integer(results.visits));

	json_object_set_new(jsonObject, "date", json_string(results.timeStamp));
	json_object_set_new(jsonObject, "generator", json_string(VERSION));
	json_object_set_new(jsonObject, "file_name", json_string(results.fileName));
	json_object_set_new(jsonObject, "file_size", json_integer(results.fileSize));
	json_object_set_new(jsonObject, "processed_lines", json_integer(results.processedLines));
	json_object_set_new(jsonObject, "invalid_lines", json_integer(results.invalidLines));
	json_object_set_new(jsonObject, "bandwidth", json_integer(results.bandwidth));
	json_object_set_new(jsonObject, "runtime", json_real(results.runtime));
	json_object_set_new(jsonObject, "hits", hitsObject);
	json_object_set_new(jsonObject, "visits", visitsObject);
	json_object_set_new(jsonObject, "continents", continentsArray);
	json_object_set_new(jsonObject, "countries", countriesArray);
	json_object_set_new(jsonObject, "hours", hoursArray);
	json_object_set_new(jsonObject, "methods", methodsArray);
	json_object_set_new(jsonObject, "protocols", protocolsArray);
	json_object_set_new(jsonObject, "status", httpStatusArray);

	return json_dumps(jsonObject, JSON_INDENT(3) | JSON_PRESERVE_ORDER);
}