Create geoip.h

This commit is contained in:
Sebastian Hahn 2010-07-21 14:38:52 +02:00
parent e69dc22f4e
commit ff4030f621
13 changed files with 70 additions and 39 deletions

View File

@ -12,6 +12,7 @@
#define CONFIG_PRIVATE #define CONFIG_PRIVATE
#include "or.h" #include "or.h"
#include "geoip.h"
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
#include <shlobj.h> #include <shlobj.h>
#endif #endif

View File

@ -12,6 +12,7 @@
#include "or.h" #include "or.h"
#include "dnsserv.h" #include "dnsserv.h"
#include "geoip.h"
static connection_t *connection_create_listener( static connection_t *connection_create_listener(
struct sockaddr *listensockaddr, struct sockaddr *listensockaddr,

View File

@ -11,6 +11,7 @@
**/ **/
#include "or.h" #include "or.h"
#include "geoip.h"
static int connection_tls_finish_handshake(or_connection_t *conn); static int connection_tls_finish_handshake(or_connection_t *conn);
static int connection_or_process_cells_from_inbuf(or_connection_t *conn); static int connection_or_process_cells_from_inbuf(or_connection_t *conn);

View File

@ -12,6 +12,7 @@
#include "or.h" #include "or.h"
#include "dnsserv.h" #include "dnsserv.h"
#include "geoip.h"
/** Yield true iff <b>s</b> is the state of a control_connection_t that has /** Yield true iff <b>s</b> is the state of a control_connection_t that has
* finished authentication and is accepting commands. */ * finished authentication and is accepting commands. */

View File

@ -4,6 +4,8 @@
/* See LICENSE for licensing information */ /* See LICENSE for licensing information */
#include "or.h" #include "or.h"
#include "geoip.h"
#if defined(EXPORTMALLINFO) && defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) #if defined(EXPORTMALLINFO) && defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
#ifndef OPENBSD #ifndef OPENBSD
#include <malloc.h> #include <malloc.h>

View File

@ -11,6 +11,7 @@
#include "or.h" #include "or.h"
#include "ht.h" #include "ht.h"
#include "dnsserv.h" #include "dnsserv.h"
#include "geoip.h"
static void clear_geoip_db(void); static void clear_geoip_db(void);

58
src/or/geoip.h Normal file
View File

@ -0,0 +1,58 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
* Copyright (c) 2007-2010, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file geoip.h
* \brief Header file for geoip.c.
**/
#ifndef _TOR_GEOIP_H
#define _TOR_GEOIP_H
#ifdef GEOIP_PRIVATE
int geoip_parse_entry(const char *line);
#endif
int should_record_bridge_info(or_options_t *options);
int geoip_load_file(const char *filename, or_options_t *options);
int geoip_get_country_by_ip(uint32_t ipaddr);
int geoip_get_n_countries(void);
const char *geoip_get_country_name(country_t num);
int geoip_is_loaded(void);
country_t geoip_get_country(const char *countrycode);
void geoip_note_client_seen(geoip_client_action_t action,
uint32_t addr, time_t now);
void geoip_remove_old_clients(time_t cutoff);
void geoip_note_ns_response(geoip_client_action_t action,
geoip_ns_response_t response);
time_t geoip_get_history_start(void);
char *geoip_get_client_history_dirreq(time_t now,
geoip_client_action_t action);
char *geoip_get_client_history_bridge(time_t now,
geoip_client_action_t action);
char *geoip_get_request_history(time_t now, geoip_client_action_t action);
int getinfo_helper_geoip(control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg);
void geoip_free_all(void);
void geoip_start_dirreq(uint64_t dirreq_id, size_t response_size,
geoip_client_action_t action, dirreq_type_t type);
void geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type,
dirreq_state_t new_state);
void geoip_dirreq_stats_init(time_t now);
void geoip_dirreq_stats_write(time_t now);
void geoip_entry_stats_init(time_t now);
void geoip_entry_stats_write(time_t now);
void geoip_bridge_stats_init(time_t now);
time_t geoip_bridge_stats_write(time_t now);
const char *geoip_get_bridge_stats_extrainfo(time_t);
const char *geoip_get_bridge_stats_controller(time_t);
#endif

View File

@ -13,6 +13,7 @@
#define MAIN_PRIVATE #define MAIN_PRIVATE
#include "or.h" #include "or.h"
#include "dnsserv.h" #include "dnsserv.h"
#include "geoip.h"
#ifdef USE_DMALLOC #ifdef USE_DMALLOC
#include <dmalloc.h> #include <dmalloc.h>
#include <openssl/crypto.h> #include <openssl/crypto.h>

View File

@ -4103,16 +4103,6 @@ void dump_dns_mem_usage(int severity);
* we are willing to talk about it? */ * we are willing to talk about it? */
#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (12*60*60) #define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (12*60*60)
#ifdef GEOIP_PRIVATE
int geoip_parse_entry(const char *line);
#endif
int should_record_bridge_info(or_options_t *options);
int geoip_load_file(const char *filename, or_options_t *options);
int geoip_get_country_by_ip(uint32_t ipaddr);
int geoip_get_n_countries(void);
const char *geoip_get_country_name(country_t num);
int geoip_is_loaded(void);
country_t geoip_get_country(const char *countrycode);
/** Indicates an action that we might be noting geoip statistics on. /** Indicates an action that we might be noting geoip statistics on.
* Note that if we're noticing CONNECT, we're a bridge, and if we're noticing * Note that if we're noticing CONNECT, we're a bridge, and if we're noticing
* the others, we're not. * the others, we're not.
@ -4125,9 +4115,6 @@ typedef enum {
/** We've served a v2 networkstatus consensus as a directory server. */ /** We've served a v2 networkstatus consensus as a directory server. */
GEOIP_CLIENT_NETWORKSTATUS_V2 = 2, GEOIP_CLIENT_NETWORKSTATUS_V2 = 2,
} geoip_client_action_t; } geoip_client_action_t;
void geoip_note_client_seen(geoip_client_action_t action,
uint32_t addr, time_t now);
void geoip_remove_old_clients(time_t cutoff);
/** Indicates either a positive reply or a reason for rejectng a network /** Indicates either a positive reply or a reason for rejectng a network
* status request that will be included in geoip statistics. */ * status request that will be included in geoip statistics. */
typedef enum { typedef enum {
@ -4146,18 +4133,6 @@ typedef enum {
GEOIP_REJECT_BUSY = 5, GEOIP_REJECT_BUSY = 5,
} geoip_ns_response_t; } geoip_ns_response_t;
#define GEOIP_NS_RESPONSE_NUM 6 #define GEOIP_NS_RESPONSE_NUM 6
void geoip_note_ns_response(geoip_client_action_t action,
geoip_ns_response_t response);
time_t geoip_get_history_start(void);
char *geoip_get_client_history_dirreq(time_t now,
geoip_client_action_t action);
char *geoip_get_client_history_bridge(time_t now,
geoip_client_action_t action);
char *geoip_get_request_history(time_t now, geoip_client_action_t action);
int getinfo_helper_geoip(control_connection_t *control_conn,
const char *question, char **answer,
const char **errmsg);
void geoip_free_all(void);
/** Directory requests that we are measuring can be either direct or /** Directory requests that we are measuring can be either direct or
* tunneled. */ * tunneled. */
@ -4188,20 +4163,6 @@ typedef enum {
DIRREQ_OR_CONN_BUFFER_FLUSHED = 4 DIRREQ_OR_CONN_BUFFER_FLUSHED = 4
} dirreq_state_t; } dirreq_state_t;
void geoip_start_dirreq(uint64_t dirreq_id, size_t response_size,
geoip_client_action_t action, dirreq_type_t type);
void geoip_change_dirreq_state(uint64_t dirreq_id, dirreq_type_t type,
dirreq_state_t new_state);
void geoip_dirreq_stats_init(time_t now);
void geoip_dirreq_stats_write(time_t now);
void geoip_entry_stats_init(time_t now);
void geoip_entry_stats_write(time_t now);
void geoip_bridge_stats_init(time_t now);
time_t geoip_bridge_stats_write(time_t now);
const char *geoip_get_bridge_stats_extrainfo(time_t);
const char *geoip_get_bridge_stats_controller(time_t);
/********************************* hibernate.c **********************/ /********************************* hibernate.c **********************/
int accounting_parse_options(or_options_t *options, int validate_only); int accounting_parse_options(or_options_t *options, int validate_only);

View File

@ -12,6 +12,7 @@
#include <math.h> #include <math.h>
#include "or.h" #include "or.h"
#include "geoip.h"
#include "mempool.h" #include "mempool.h"
static int relay_crypt(circuit_t *circ, cell_t *cell, static int relay_crypt(circuit_t *circ, cell_t *cell,

View File

@ -7,6 +7,7 @@
#define ROUTER_PRIVATE #define ROUTER_PRIVATE
#include "or.h" #include "or.h"
#include "geoip.h"
/** /**
* \file router.c * \file router.c

View File

@ -12,6 +12,7 @@
**/ **/
#include "or.h" #include "or.h"
#include "geoip.h"
// #define DEBUG_ROUTERLIST // #define DEBUG_ROUTERLIST

View File

@ -43,6 +43,7 @@ long int lround(double x);
double fabs(double x); double fabs(double x);
#include "or.h" #include "or.h"
#include "geoip.h"
#include "test.h" #include "test.h"
#include "torgzip.h" #include "torgzip.h"
#include "mempool.h" #include "mempool.h"