36 struct conn_pattern_list;
41 #define MAX_LEN_PACKET 4096
42 #define MAX_LEN_CAPSTR 512
43 #define MAX_LEN_PASSWORD \
46 #define MAX_LEN_CONTENT (MAX_LEN_PACKET - 20)
48 #define MAX_LEN_BUFFER (MAX_LEN_PACKET * 128)
55 #define SPECENUM_NAME cmdlevel
57 #define SPECENUM_VALUE0 ALLOW_NONE
58 #define SPECENUM_VALUE0NAME "none"
60 #define SPECENUM_VALUE1 ALLOW_INFO
61 #define SPECENUM_VALUE1NAME "info"
63 #define SPECENUM_VALUE2 ALLOW_BASIC
64 #define SPECENUM_VALUE2NAME "basic"
67 #define SPECENUM_VALUE3 ALLOW_CTRL
68 #define SPECENUM_VALUE3NAME "ctrl"
70 #define SPECENUM_VALUE4 ALLOW_ADMIN
71 #define SPECENUM_VALUE4NAME "admin"
73 #define SPECENUM_VALUE5 ALLOW_HACK
74 #define SPECENUM_VALUE5NAME "hack"
75 #define SPECENUM_COUNT CMDLEVEL_COUNT
76 #include "specenum_gen.h"
96 #define SPECLIST_TAG conn
97 #define SPECLIST_TYPE struct connection
100 #define conn_list_iterate(connlist, pconn) \
101 TYPED_LIST_ITERATE(struct connection, connlist, pconn)
102 #define conn_list_iterate_end LIST_ITERATE_END
117 unsigned int type : 4;
120 #define SPECVEC_TAG byte
121 #define SPECVEC_TYPE unsigned char
151 struct conn_list *
self;
168 bool data_available_and_socket_full);
244 int size,
int request_id);
268 const unsigned char *data,
int len);
295 bool is_private =
true);
313 #define SPECLIST_TAG conn_pattern
314 #define SPECLIST_TYPE struct conn_pattern
316 #define conn_pattern_list_iterate(plist, ppatern) \
317 TYPED_LIST_ITERATE(struct conn_pattern, plist, ppatern)
318 #define conn_pattern_list_iterate_end LIST_ITERATE_END
320 #define SPECENUM_NAME conn_pattern_type
321 #define SPECENUM_VALUE0 CPT_USER
322 #define SPECENUM_VALUE0NAME "user"
323 #define SPECENUM_VALUE1 CPT_HOST
324 #define SPECENUM_VALUE1NAME "host"
325 #define SPECENUM_VALUE2 CPT_IP
326 #define SPECENUM_VALUE2NAME "ip"
327 #include "specenum_gen.h"
341 enum conn_pattern_type prefer,
343 size_t error_buf_len);
size_t conn_pattern_to_string(const struct conn_pattern *ppattern, char *buf, size_t buf_len)
Put a string reprentation of the pattern in 'buf'.
void conn_list_do_unbuffer(struct conn_list *dest)
Convenience functions to unbuffer a list of connections.
void free_compression_queue(struct connection *pconn)
Free compression queue for given connection.
bool can_conn_edit(const struct connection *pconn)
Return TRUE iff the connection is currently allowed to edit.
void(* conn_close_fn_t)(struct connection *pconn)
void conn_list_compression_thaw(const struct conn_list *pconn_list)
Thaw a connection list.
void connections_set_close_callback(conn_close_fn_t func)
Register the close_callback.
bool conn_compression_thaw(struct connection *pconn)
Thaw the connection.
void flush_connection_send_buffer_all(struct connection *pc)
Flush'em.
int get_next_request_id(int old_request_id)
Get next request id.
struct player * conn_get_player(const struct connection *pconn)
Returns the player that this connection is attached to, or nullptr.
int read_socket_data(QIODevice *sock, struct socket_packet_buffer *buffer)
Read data from socket, and check if a packet is ready.
void conn_list_do_buffer(struct conn_list *dest)
Convenience functions to buffer a list of connections.
bool can_conn_enable_editing(const struct connection *pconn)
Return TRUE iff the connection is allowed to start editing.
void connection_do_buffer(struct connection *pc)
Turn on buffering, using a counter so that calls may be nested.
bool conn_pattern_match(const struct conn_pattern *ppattern, const struct connection *pconn)
Returns TRUE whether the connection fits the connection pattern.
void conn_set_capability(struct connection *pconn, const char *capability)
Set the network capability string for 'pconn'.
void conn_pattern_destroy(struct conn_pattern *ppattern)
Free a connection pattern.
void connection_common_init(struct connection *pconn)
Initialize common part of connection structure.
void conn_list_compression_freeze(const struct conn_list *pconn_list)
Freeze a connection list.
bool conn_controls_player(const struct connection *pconn)
Returns TRUE if the given connection is attached to a player which it also controls (i....
bool conn_is_global_observer(const struct connection *pconn)
Returns TRUE if the given connection is a global observer.
void connection_close(struct connection *pconn, const QString &reason)
Call the conn_close_callback.
void connection_common_close(struct connection *pconn)
Connection closing part common to server and client.
void conn_compression_freeze(struct connection *pconn)
Freeze the connection.
struct connection * conn_by_number(int id)
Find connection by id, from game.all_connections.
const char blank_addr_str[]
void conn_reset_delta_state(struct connection *pconn)
Remove all is-game-info cached packets from the connection.
bool connection_send_data(struct connection *pconn, const unsigned char *data, int len)
Write data to socket.
struct connection * conn_by_user(const char *user_name)
Find connection by exact user name, from game.all_connections, case-insensitve.
enum cmdlevel conn_get_access(const struct connection *pconn)
Returns the current access level of the given connection.
bool conn_is_valid(const struct connection *pconn)
Returns TRUE if the connection is valid, i.e.
bool conn_compression_frozen(const struct connection *pconn)
Returns TRUE if the connection is frozen.
struct connection * conn_by_user_prefix(const char *user_name, enum m_pre_result *result)
const char * conn_description(const struct connection *pconn, bool is_private=true)
° Return pointer to static string containing a description for this ° connection, based on pconn->nam...
struct conn_pattern * conn_pattern_from_string(const char *pattern, enum conn_pattern_type prefer, char *error_buf, size_t error_buf_len)
Creates a new connection pattern from the string.
struct socket_packet_buffer * new_socket_packet_buffer()
Return malloced struct, appropriately initialized.
struct conn_pattern * conn_pattern_new(enum conn_pattern_type type, const char *wildcard)
Creates a new connection pattern.
bool conn_pattern_list_match(const struct conn_pattern_list *plist, const struct connection *pconn)
Returns TRUE whether the connection fits one of the connection patterns.
void connection_do_unbuffer(struct connection *pc)
Turn off buffering if internal counter of number of times buffering was turned on falls to zero,...
enum conn_pattern_type type
class civtimer * last_write
int currently_processed_request_id
struct genhash ** received
int request_id_of_currently_handled_packet
enum cmdlevel access_level
const struct packet_handlers * handlers
struct connection::@55::@61 server
struct connection::@58 compression
struct connection::@55::@61::@62 delegation
struct connection::@59 statistics
struct connection::@57 phs
char username[MAX_LEN_NAME]
char ipaddr[MAX_LEN_ADDR]
void(* incoming_packet_notify)(struct connection *pc, int packet_type, int size)
void(* outgoing_packet_notify)(struct connection *pc, int packet_type, int size, int request_id)
struct connection::@55::@60 client
struct socket_packet_buffer * send_buffer
QList< civtimer * > * ping_timers
char capability[MAX_LEN_CAPSTR]
void(* notify_of_writable_data)(struct connection *pc, bool data_available_and_socket_full)
int last_processed_request_id_seen
struct socket_packet_buffer * buffer
char password[MAX_LEN_PASSWORD]
struct conn_pattern_list * ignore_list
enum cmdlevel granted_access_level