ZNC
trunk
|
#include "defines.h"
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/file.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netdb.h>
#include <sys/select.h>
#include <unicode/ucnv.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/rand.h>
#include <vector>
#include <list>
#include <iostream>
#include <sstream>
#include <string>
#include <set>
#include <map>
#include <sys/un.h>
Go to the source code of this file.
Classes | |
class | CSCharBuffer |
Ease of use self deleting char * class. More... | |
class | CSSockAddr |
sockaddr wrapper. More... | |
class | CGetAddrInfo |
this function is a wrapper around getaddrinfo (for ipv6) More... | |
class | CCron |
this is the main cron job class More... | |
class | CSMonitorFD |
Class to tie sockets to for monitoring by Csocket at either the Csock or TSockManager. More... | |
class | CSockCommon |
simple class to share common code to both TSockManager and Csock More... | |
class | Csock |
Basic socket class. More... | |
class | CSConnection |
options for creating a connection More... | |
class | CSSSLConnection |
class | CSListener |
options container to create a listener More... | |
class | CSSSListener |
class | CSocketManager |
Best class to use to interact with the sockets. More... | |
class | TSocketManager< T > |
Ease of use templated socket manager. More... | |
Macros | |
#define | CS_STRING std::string |
#define | CS_DEBUG(f) (void)0 |
#define | CS_EXPORT |
#define | PERROR(f) (void)0 |
#define | CS_INVALID_SOCK -1 |
#define | HAVE_UNIX_SOCKET |
Typedefs | |
typedef int | cs_sock_t |
typedef ssize_t | cs_ssize_t |
typedef int(* | FPCertVerifyCB) (int, X509_STORE_CTX *) |
Enumerations | |
enum | ECompType { CT_NONE = 0 , CT_ZLIB = 1 } |
Functions | |
int | CS_GetAddrInfo (const CS_STRING &sHostname, Csock *pSock, CSSockAddr &csSockAddr) |
backwards compatible wrapper around CGetAddrInfo and gethostbyname More... | |
int | GetCsockSSLIdx () |
This returns the [ex_]data index position for SSL objects only. More... | |
Csock * | GetCsockFromCTX (X509_STORE_CTX *pCTX) |
returns the sock object associated to the particular context. returns NULL on failure or if not available More... | |
template<class T > | |
void | CS_Delete (T *&p) |
void | CSAdjustTVTimeout (struct timeval &tv, long iTimeoutMS) |
adjusts tv with a new timeout if iTimeoutMS is smaller More... | |
void | SSLErrors (const char *filename, uint32_t iLineNum) |
bool | InitSSL (ECompType eCompressionType=CT_NONE) |
You HAVE to call this in order to use the SSL library, calling InitCsocket() also calls this so unless you need to call InitSSL for a specific reason call InitCsocket() More... | |
bool | InitCsocket () |
This does all the csocket initialized inclusing InitSSL() and win32 specific initializations, only needs to be called once. More... | |
void | ShutdownCsocket () |
Shutdown and release global allocated memory. More... | |
int | GetSockError () |
void | TFD_ZERO (fd_set *set) |
wrappers for FD_SET and such to work in templates. More... | |
void | TFD_SET (cs_sock_t iSock, fd_set *set) |
bool | TFD_ISSET (cs_sock_t iSock, fd_set *set) |
void | TFD_CLR (cs_sock_t iSock, fd_set *set) |
void | __Perror (const CS_STRING &s, const char *pszFile, uint32_t iLineNo) |
Variables | |
const uint32_t | CS_BLOCKSIZE = 4096 |
Copyright (c) 1999-2012 Jim Hull csock All rights reserved et@j imloc o.co m
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Redistributions in any form must be accompanied by information on how to obtain complete source code for this software and any accompanying software that uses this software. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs.
THIS SOFTWARE IS PROVIDED `‘AS IS’' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OF THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define CS_DEBUG | ( | f | ) | (void)0 |
#define CS_EXPORT |
#define CS_INVALID_SOCK -1 |
#define CS_STRING std::string |
#define HAVE_UNIX_SOCKET |
#define PERROR | ( | f | ) | (void)0 |
typedef int cs_sock_t |
typedef ssize_t cs_ssize_t |
typedef int( * FPCertVerifyCB) (int, X509_STORE_CTX *) |
enum ECompType |
void __Perror | ( | const CS_STRING & | s, |
const char * | pszFile, | ||
uint32_t | iLineNo | ||
) |
|
inline |
int CS_GetAddrInfo | ( | const CS_STRING & | sHostname, |
Csock * | pSock, | ||
CSSockAddr & | csSockAddr | ||
) |
backwards compatible wrapper around CGetAddrInfo and gethostbyname
void CSAdjustTVTimeout | ( | struct timeval & | tv, |
long | iTimeoutMS | ||
) |
adjusts tv with a new timeout if iTimeoutMS is smaller
Csock* GetCsockFromCTX | ( | X509_STORE_CTX * | pCTX | ) |
returns the sock object associated to the particular context. returns NULL on failure or if not available
int GetCsockSSLIdx | ( | ) |
This returns the [ex_]data index position for SSL objects only.
If you want to tie more data to the SSL object, you should generate your own at application start so as to avoid collision with Csocket SSL_set_ex_data()
|
inline |
bool InitCsocket | ( | ) |
This does all the csocket initialized inclusing InitSSL() and win32 specific initializations, only needs to be called once.
You HAVE to call this in order to use the SSL library, calling InitCsocket() also calls this so unless you need to call InitSSL for a specific reason call InitCsocket()
void ShutdownCsocket | ( | ) |
Shutdown and release global allocated memory.
void SSLErrors | ( | const char * | filename, |
uint32_t | iLineNum | ||
) |
|
inline |
|
inline |
|
inline |
|
inline |
wrappers for FD_SET and such to work in templates.
const uint32_t CS_BLOCKSIZE = 4096 |