X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fclient.h;h=f5346bf8b68d858d220fcdb2bd539fd7db22327b;hb=c761d2904822224ec177198af65d546cd845c4b5;hp=c6085d298e6563779f4763f60d4d6f9b0ab284dd;hpb=59d006faba0b4f526010c66e9d4b8d3768450a6b;p=umurmur.git diff --git a/src/client.h b/src/client.h index c6085d2..f5346bf 100644 --- a/src/client.h +++ b/src/client.h @@ -55,9 +55,12 @@ #define MAX_CODECS 10 #define MAX_TOKENSIZE 64 #define MAX_TOKENS 32 +#define KEY_LENGTH sizeof(uint16_t) + 4 * sizeof(in_addr_t) #define IS_AUTH(_a_) ((_a_)->authenticated) +struct channel; + typedef struct { int tcpfd; SSL_handle_t *ssl; @@ -65,13 +68,12 @@ typedef struct { bool_t shutdown_wait; cryptState_t cryptState; bool_t readBlockedOnWrite, writeBlockedOnRead; - - struct sockaddr_in remote_tcp; - struct sockaddr_in remote_udp; + struct sockaddr_storage remote_tcp; + struct sockaddr_storage remote_udp; uint8_t rxbuf[BUFSIZE], txbuf[BUFSIZE]; uint32_t rxcount, msgsize, drainleft, txcount, txsize; int sessionId; - uint64_t key; + uint8_t key[KEY_LENGTH]; char *username; bool_t bUDP, authenticated, deaf, mute, self_deaf, self_mute, recording, bOpus; char *os, *release, *os_version; @@ -83,7 +85,7 @@ typedef struct { struct dlist node; struct dlist txMsgQueue; int txQueueCount; - void *channel; /* Ugly... */ + struct channel *channel; char *context; struct dlist chan_node; struct dlist voicetargets; @@ -109,7 +111,7 @@ typedef struct { void Client_init(); int Client_getfds(struct pollfd *pollfds); void Client_janitor(); -int Client_add(int fd, struct sockaddr_in *remote); +int Client_add(int fd, struct sockaddr_storage *remote); int Client_read_fd(int fd); int Client_write_fd(int fd); int Client_send_message(client_t *client, message_t *msg); @@ -119,7 +121,7 @@ int Client_count(void); void Client_close(client_t *client); client_t *Client_iterate(client_t **client); int Client_send_message_except(client_t *client, message_t *msg); -int Client_read_udp(void); +int Client_read_udp(int udpsock); void Client_disconnect_all(); int Client_voiceMsg(client_t *client, uint8_t *data, int len); void recheckCodecVersions(client_t *connectingClient); @@ -127,5 +129,8 @@ void Client_codec_add(client_t *client, int codec); void Client_codec_free(client_t *client); codec_t *Client_codec_iterate(client_t *client, codec_t **codec_itr); void Client_textmessage(client_t *client, char *text); +bool_t Client_token_match(client_t *client, char const *str); +void Client_token_free(client_t *client); +void Client_token_add(client_t *client, char *token_string); #endif