added more configuration items to httpd

This commit is contained in:
2014-08-13 14:35:43 +00:00
parent 1d1331247a
commit eb1511b817
10 changed files with 469 additions and 431 deletions

View File

@ -58,8 +58,8 @@ enum qse_httpd_errnum_t
QSE_HTTPD_ENOBUF, /* no buffer available */
QSE_HTTPD_EDISCON, /* client disconnnected */
QSE_HTTPD_EBADREQ, /* bad request */
QSE_HTTPD_ENODNS, /* dns service not activated */
QSE_HTTPD_ENOURS, /* urs service not activated */
QSE_HTTPD_ENODNS, /* dns service not activated/enabled or no valid dns server specified */
QSE_HTTPD_ENOURS, /* urs service not activated/enabled or no valid urs server specified */
QSE_HTTPD_ETASK
};
typedef enum qse_httpd_errnum_t qse_httpd_errnum_t;
@ -127,6 +127,15 @@ struct qse_httpd_dirent_t
qse_httpd_stat_t stat;
};
typedef struct qse_httpd_natr_t qse_httpd_natr_t;
struct qse_httpd_natr_t
{
qse_nwad_t nwad;
qse_ntime_t tmout;
int retries;
};
typedef void (*qse_httpd_resol_t) (
qse_httpd_t* httpd,
const qse_mchar_t* name,
@ -264,7 +273,7 @@ struct qse_httpd_scb_t
int (*recv) (qse_httpd_t* httpd, qse_httpd_dns_t* dns, qse_ubi_t handle);
int (*send) (qse_httpd_t* httpd, qse_httpd_dns_t* dns,
const qse_mchar_t* name, qse_httpd_resol_t resol,
const qse_nwad_t* dns_server, void* ctx);
const qse_httpd_natr_t* dns_server, void* ctx);
} dns;
struct
@ -274,7 +283,7 @@ struct qse_httpd_scb_t
int (*recv) (qse_httpd_t* httpd, qse_httpd_urs_t* urs, qse_ubi_t handle);
int (*send) (qse_httpd_t* httpd, qse_httpd_urs_t* urs,
const qse_mchar_t* url, qse_httpd_rewrite_t rewrite,
const qse_nwad_t* urs_server, void* ctx);
const qse_httpd_natr_t* urs_server, void* ctx);
} urs;
};
@ -459,6 +468,22 @@ struct qse_httpd_client_t
} task;
};
/* client->status */
#define QSE_HTTPD_CLIENT_BAD (1 << 0)
#define QSE_HTTPD_CLIENT_READY (1 << 1)
#define QSE_HTTPD_CLIENT_INTERCEPTED (1 << 2)
#define QSE_HTTPD_CLIENT_SECURE (1 << 3)
#define QSE_HTTPD_CLIENT_PENDING (1 << 4)
#define QSE_HTTPD_CLIENT_MUTE (1 << 5)
#define QSE_HTTPD_CLIENT_MUTE_DELETED (1 << 6)
#define QSE_HTTPD_CLIENT_HANDLE_READ_IN_MUX (1 << 7)
#define QSE_HTTPD_CLIENT_HANDLE_WRITE_IN_MUX (1 << 8)
#define QSE_HTTPD_CLIENT_HANDLE_RW_IN_MUX (QSE_HTTPD_CLIENT_HANDLE_READ_IN_MUX | QSE_HTTPD_CLIENT_HANDLE_WRITE_IN_MUX)
#define QSE_HTTPD_CLIENT_TASK_TRIGGER_READ_IN_MUX(i) (1 << ((i) + 9))
#define QSE_HTTPD_CLIENT_TASK_TRIGGER_WRITE_IN_MUX(i) (1 << ((i) + 9 + QSE_HTTPD_TASK_TRIGGER_MAX))
#define QSE_HTTPD_CLIENT_TASK_TRIGGER_RW_IN_MUX(i) (QSE_HTTPD_CLIENT_TASK_TRIGGER_READ_IN_MUX(i) | QSE_HTTPD_CLIENT_TASK_TRIGGER_WRITE_IN_MUX(i))
enum qse_httpd_server_flag_t
{
QSE_HTTPD_SERVER_ACTIVE = (1 << 0),
@ -559,12 +584,13 @@ struct qse_httpd_rsrc_cgi_t
enum qse_httpd_rsrc_proxy_flag_t
{
QSE_HTTPD_RSRC_PROXY_RAW = (1 << 0),
QSE_HTTPD_RSRC_PROXY_DST_STR = (1 << 1),
QSE_HTTPD_RSRC_PROXY_TRANSPARENT = (1 << 2),
QSE_HTTPD_RSRC_PROXY_ENABLE_URS = (1 << 3), /* url rewriting enabled */
QSE_HTTPD_RSRC_PROXY_DNS_SERVER = (1 << 4),
QSE_HTTPD_RSRC_PROXY_URS_SERVER = (1 << 5)
QSE_HTTPD_RSRC_PROXY_RAW = (1 << 0), /* raw proxying. set this for CONNECT */
QSE_HTTPD_RSRC_PROXY_TRANSPARENT = (1 << 1),
QSE_HTTPD_RSRC_PROXY_DST_STR = (1 << 2), /* destination is an unresovled string pointed to by dst.str */
QSE_HTTPD_RSRC_PROXY_ENABLE_DNS = (1 << 3), /* dns service enabled */
QSE_HTTPD_RSRC_PROXY_ENABLE_URS = (1 << 4), /* url rewriting enabled */
QSE_HTTPD_RSRC_PROXY_DNS_SERVER = (1 << 5), /* dns address specified */
QSE_HTTPD_RSRC_PROXY_URS_SERVER = (1 << 6) /* urs address specified */
};
typedef struct qse_httpd_rsrc_proxy_t qse_httpd_rsrc_proxy_t;
@ -583,8 +609,8 @@ struct qse_httpd_rsrc_proxy_t
const qse_mchar_t* str;
} dst; /* remote destination address to connect to */
qse_nwad_t dns_server;
qse_nwad_t urs_server;
qse_httpd_natr_t dns_server;
qse_httpd_natr_t urs_server;
const qse_mchar_t* pseudonym; /* pseudonym to use in Via: */
};
@ -1007,19 +1033,19 @@ QSE_EXPORT qse_mchar_t* qse_httpd_escapehtml (
);
QSE_EXPORT int qse_httpd_resolname (
qse_httpd_t* httpd,
const qse_mchar_t* name,
qse_httpd_resol_t resol,
const qse_nwad_t* dns_server,
void* ctx
qse_httpd_t* httpd,
const qse_mchar_t* name,
qse_httpd_resol_t resol,
const qse_httpd_natr_t* dns_server,
void* ctx
);
QSE_EXPORT int qse_httpd_rewriteurl (
qse_httpd_t* ttpd,
const qse_mchar_t* url,
qse_httpd_rewrite_t rewrite,
const qse_nwad_t* urs_server,
void* ctx
qse_httpd_t* httpd,
const qse_mchar_t* url,
qse_httpd_rewrite_t rewrite,
const qse_httpd_natr_t* urs_server,
void* ctx
);

View File

@ -40,7 +40,6 @@ typedef void (*qse_httpd_serverstd_freersrc_t) (
enum qse_httpd_serverstd_root_type_t
{
QSE_HTTPD_SERVERSTD_ROOT_PATH,
QSE_HTTPD_SERVERSTD_ROOT_NWAD,
QSE_HTTPD_SERVERSTD_ROOT_TEXT,
QSE_HTTPD_SERVERSTD_ROOT_PROXY,
QSE_HTTPD_SERVERSTD_ROOT_ERROR
@ -59,8 +58,6 @@ struct qse_httpd_serverstd_root_t
qse_size_t rpl; /* replacement length */
} path;
qse_nwad_t nwad;
struct
{
const qse_mchar_t* ptr;
@ -125,8 +122,6 @@ enum qse_httpd_serverstd_query_code_t
QSE_HTTPD_SERVERSTD_DIRHEAD, /* const qse_mchar_t* */
QSE_HTTPD_SERVERSTD_DIRFOOT, /* const qse_mchar_t* */
QSE_HTTPD_SERVERSTD_PSEUDONYM, /* const qse_mchar_t*, pseudonym to use in Via: */
QSE_HTTPD_SERVERSTD_INDEX, /* qse_httpd_serverstd_index_t */
QSE_HTTPD_SERVERSTD_CGI, /* qse_httpd_serverstd_cgi_t */
QSE_HTTPD_SERVERSTD_MIME, /* const qse_mchar_t* */
@ -138,6 +133,7 @@ typedef enum qse_httpd_serverstd_query_code_t qse_httpd_serverstd_query_code_t;
struct qse_httpd_serverstd_query_info_t
{
qse_httpd_client_t* client;
qse_htre_t* req;
qse_mchar_t* xpath; /* query path combined with document root */
};
@ -162,7 +158,7 @@ typedef enum qse_httpd_serverstd_opt_t qse_httpd_serverstd_opt_t;
#define QSE_HTTPD_DNSSTD_DEFAULT_PORT 53
#define QSE_HTTPD_DNSSTD_DEFAULT_TMOUT 3
#define QSE_HTTPD_DNSSTD_DEFAULT_RESENDS 2
#define QSE_HTTPD_DNSSTD_DEFAULT_RETRIES 2
#define QSE_HTTPD_DNSSTD_DEFAULT_CACHE_TTL 120
#define QSE_HTTPD_DNSSTD_DEFAULT_CACHE_NEGTTL 10
#define QSE_HTTPD_DNSSTD_DEFAULT_CACHE_MINTTL 2
@ -171,7 +167,7 @@ struct qse_httpd_dnsstd_t
{
qse_nwad_t nwad;
qse_ntime_t tmout;
qse_uint32_t resends;
qse_uint32_t retries;
qse_uint32_t cache_ttl;
qse_uint32_t cache_minttl; /* minimum ttl */
qse_uint32_t cache_negttl; /* negative ttl */
@ -181,13 +177,13 @@ typedef struct qse_httpd_dnsstd_t qse_httpd_dnsstd_t;
#define QSE_HTTPD_URSSTD_DEFAULT_PORT 94
#define QSE_HTTPD_URSSTD_DEFAULT_TMOUT 10
#define QSE_HTTPD_URSSTD_DEFAULT_RESENDS 0
#define QSE_HTTPD_URSSTD_DEFAULT_RETRIES 0
struct qse_httpd_ursstd_t
{
qse_nwad_t nwad;
qse_ntime_t tmout;
qse_uint32_t resends;
qse_uint32_t retries;
};
typedef struct qse_httpd_ursstd_t qse_httpd_ursstd_t;