Go to the documentation of this file.
17 #ifndef USGOV_c240798d9f2ba9cd92a0728e617b7d39e33fe0519df7744799c27d2312bc782b
18 #define USGOV_c240798d9f2ba9cd92a0728e617b7d39e33fe0519df7744799c27d2312bc782b
20 #include <netinet/in.h>
21 #include <arpa/inet.h>
24 #include <unordered_map>
25 #include <unordered_set>
30 #include <condition_variable>
41 namespace us {
namespace gov {
51 uint32_t select_cycles{0};
52 uint32_t select_errors{0};
53 uint32_t select_EINTR{0};
54 uint32_t select_EBADF{0};
55 uint32_t new_connections{0};
56 uint32_t closed_banned{0};
57 uint32_t data_arrived_unmapped_fd{0};
58 uint32_t blacklisted_addr{0};
59 void dump(ostream& os)
const;
61 static counters_t counters;
64 struct blacklist: unordered_map<uint32_t,pair<chrono::system_clock::time_point,string>> {
65 static constexpr chrono::seconds
bantime{300};
66 void add(uint32_t,
const string& reason);
83 void dump(
const string& prefix, ostream& os)
const;
89 ko wait_ready(
const chrono::system_clock::time_point& deadline)
const override;
us::gov::socket::server c
Definition: server.cpp:40
virtual void detach(client *)
bgtask b
Definition: server.h:46
#define log_start
Definition: gov.h:85
#define unlikely(x)
Definition: likely.h:30
ko wait_ready(const chrono::system_clock::time_point &deadline) const override
bool banned_throttle(const string &addr)
virtual void attach_noupdate(client *)
static int set_not_blocking_mode(int sock)
blacklist ban
Definition: server.h:96
Definition: send_queue.h:48
virtual void attach(client *)
clients_t clients
Definition: server.h:93
void add(uint32_t, const string &reason)
static constexpr chrono::seconds bantime
Definition: server.h:65
client::queue_t sendq
Definition: server.h:97
Definition: datagram.h:44
void proc_evil(const vector< pair< uint32_t, string >> &)
void dump(const string &prefix, ostream &os) const
crypto::ec::keys::pub_t pub_t
Definition: server.h:47
int sock
Definition: server.h:95
Definition: client.cpp:417
static constexpr ko ok
Definition: ko.h:28
uint16_t port
Definition: server.h:94
#define likely(x)
Definition: likely.h:29
datagram * read_from_client(int sock)
virtual void on_destroy(client &)
Definition: server.h:79
virtual client * create_client(int sock)
int make_socket(uint16_t port)
void dump(ostream &) const
#define log
Definition: gov.h:83
#define LOGDIR
Definition: config.h:12
virtual void receive_and_process(client *)=0