websocket.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <openssl/ssl.h>
  2. typedef struct {
  3. int sockfd;
  4. SSL_CTX *ssl_ctx;
  5. SSL *ssl;
  6. } ws_ctx_t;
  7. typedef struct {
  8. int verbose;
  9. char listen_host[256];
  10. int listen_port;
  11. void (*handler)(ws_ctx_t*);
  12. int handler_id;
  13. int ssl_only;
  14. int daemon;
  15. char *record;
  16. char *cert;
  17. } settings_t;
  18. typedef struct {
  19. char path[1024+1];
  20. char host[1024+1];
  21. char origin[1024+1];
  22. char key1[1024+1];
  23. char key2[1024+1];
  24. char key3[8+1];
  25. } headers_t;
  26. ssize_t ws_recv(ws_ctx_t *ctx, void *buf, size_t len);
  27. ssize_t ws_send(ws_ctx_t *ctx, const void *buf, size_t len);
  28. /* base64.c declarations */
  29. //int b64_ntop(u_char const *src, size_t srclength, char *target, size_t targsize);
  30. //int b64_pton(char const *src, u_char *target, size_t targsize);
  31. #define gen_handler_msg(stream, ...) \
  32. if (! settings.daemon) { \
  33. fprintf(stream, " %d: ", settings.handler_id); \
  34. fprintf(stream, __VA_ARGS__); \
  35. }
  36. #define handler_msg(...) gen_handler_msg(stdout, __VA_ARGS__);
  37. #define handler_emsg(...) gen_handler_msg(stderr, __VA_ARGS__);