projects
/
umurmur.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
closed some memory leaks
[umurmur.git]
/
src
/
client.h
diff --git
a/src/client.h
b/src/client.h
index a7d43f0bbb42d108de343ad1d9535aebc572f7e1..e7373bdfe148a2aca7ca136242c6dcb2ddeb3e50 100644
(file)
--- a/
src/client.h
+++ b/
src/client.h
@@
-1,5
+1,5
@@
-/* Copyright (C) 2009-201
0
, Martin Johansson <martin@fatbob.nu>
- Copyright (C) 2005-201
0
, Thorvald Natvig <thorvald@natvig.com>
+/* Copyright (C) 2009-201
4
, Martin Johansson <martin@fatbob.nu>
+ Copyright (C) 2005-201
4
, Thorvald Natvig <thorvald@natvig.com>
All rights reserved.
All rights reserved.
@@
-31,7
+31,7
@@
#ifndef CLIENT_H_45786678
#define CLIENT_H_45786678
#ifndef CLIENT_H_45786678
#define CLIENT_H_45786678
-#include
<openssl/ssl.h>
+#include
"config.h"
#include <stdint.h>
#include <unistd.h> /* close() */
#include <sys/types.h>
#include <stdint.h>
#include <unistd.h> /* close() */
#include <sys/types.h>
@@
-47,36
+47,39
@@
#include "crypt.h"
#include "timer.h"
#include "pds.h"
#include "crypt.h"
#include "timer.h"
#include "pds.h"
+#include "ssl.h"
#define BUFSIZE 8192
#define UDP_BUFSIZE 512
#define BUFSIZE 8192
#define UDP_BUFSIZE 512
-#define INACTI
C
ITY_TIMEOUT 15 /* Seconds */
+#define INACTI
V
ITY_TIMEOUT 15 /* Seconds */
#define MAX_CODECS 10
#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)
typedef struct {
int tcpfd;
#define IS_AUTH(_a_) ((_a_)->authenticated)
typedef struct {
int tcpfd;
- SSL *ssl;
+ SSL
_handle_t
*ssl;
bool_t SSLready;
bool_t shutdown_wait;
cryptState_t cryptState;
bool_t readBlockedOnWrite, writeBlockedOnRead;
bool_t SSLready;
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;
uint8_t rxbuf[BUFSIZE], txbuf[BUFSIZE];
uint32_t rxcount, msgsize, drainleft, txcount, txsize;
int sessionId;
- uint
64_t key
;
+ uint
8_t key[KEY_LENGTH]
;
char *username;
char *username;
- bool_t
authenticated, deaf, mute
;
- char *os, *release;
+ bool_t
bUDP, authenticated, deaf, mute, self_deaf, self_mute, recording, bOpus
;
+ char *os, *release
, *os_version
;
uint32_t version;
int codec_count;
struct dlist codecs;
int availableBandwidth;
uint32_t version;
int codec_count;
struct dlist codecs;
int availableBandwidth;
- etimer_t lastActivity;
+ etimer_t lastActivity
, connectTime, idleTime
;
struct dlist node;
struct dlist txMsgQueue;
int txQueueCount;
struct dlist node;
struct dlist txMsgQueue;
int txQueueCount;
@@
-84,6
+87,13
@@
typedef struct {
char *context;
struct dlist chan_node;
struct dlist voicetargets;
char *context;
struct dlist chan_node;
struct dlist voicetargets;
+ struct dlist tokens;
+ int tokencount;
+ uint8_t hash[20];
+ bool_t isAdmin;
+ bool_t isSuppressed;
+ float UDPPingAvg, UDPPingVar, TCPPingAvg, TCPPingVar;
+ uint32_t UDPPackets, TCPPackets;
} client_t;
typedef struct {
} client_t;
typedef struct {
@@
-91,23
+101,34
@@
typedef struct {
struct dlist node;
} codec_t;
struct dlist node;
} codec_t;
+typedef struct {
+ char *token;
+ struct dlist node;
+} token_t;
+
void Client_init();
int Client_getfds(struct pollfd *pollfds);
void Client_janitor();
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);
int Client_read_fd(int fd);
int Client_write_fd(int fd);
int Client_send_message(client_t *client, message_t *msg);
+int Client_send_message_ver(client_t *client, message_t *msg, uint32_t version);
+int Client_send_message_except_ver(client_t *client, message_t *msg, uint32_t version);
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_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 Client_disconnect_all();
int Client_voiceMsg(client_t *client, uint8_t *data, int len);
-void recheckCodecVersions();
+void recheckCodecVersions(
client_t *connectingClient
);
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_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
#endif