--- libaitwww/inc/aitwww.h 2012/07/31 11:56:16 1.3.4.1 +++ libaitwww/inc/aitwww.h 2012/09/20 14:19:45 1.5 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitwww.h,v 1.3.4.1 2012/07/31 11:56:16 misho Exp $ +* $Id: aitwww.h,v 1.5 2012/09/20 14:19:45 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -50,6 +50,7 @@ SUCH DAMAGE. #include #include #include +#include /* URL staff ... */ @@ -60,17 +61,17 @@ typedef struct _tagURLItem { } url_Item_t; struct tagIOURL { - unsigned char url_line[BUFSIZ]; + ait_val_t url_line; - url_Item_t url_tech; - url_Item_t url_user; - url_Item_t url_pass; - url_Item_t url_host; - url_Item_t url_port; - url_Item_t url_path; - url_Item_t url_args; + ait_val_t url_tech; + ait_val_t url_user; + ait_val_t url_pass; + ait_val_t url_host; + ait_val_t url_port; + ait_val_t url_path; + ait_val_t url_args; - char *url_reserved; + unsigned char *url_reserved; }; struct tagReqXML { @@ -89,8 +90,8 @@ struct tagReqXML { /* CGI variables */ struct tagCGI { - char *cgi_name; - char *cgi_value; + ait_val_t *cgi_name; + ait_val_t *cgi_value; SLIST_ENTRY(tagCGI) cgi_node; }; @@ -133,6 +134,7 @@ cgi_t *www_initCGI(void); * return: none */ void www_closeCGI(cgi_t ** __restrict cgi); +#define www_freeAttributes www_closeCGI /* * www_parseQuery() - Parse CGI query string * @@ -200,20 +202,13 @@ inline int www_header(FILE *output); */ inline cgi_t *www_parseAttributes(const char **ct); /* - * www_freeAttributes() - Free attributes + * www_getAttribute() - Get Attribute from attribute session * - * @attr = Attributes - * return: none + * @cgi = Inited attribute session + * @name = Name of attribute variable + * return: NULL not found or !=NULL value */ -inline void www_freeAttributes(cgi_t ** __restrict attr); -/* - * www_getAttribute() - Get attribute by name - * - * @attr = Attributes - * @name = Name of attribute - * return: NULL not found or !=NULL attribute value - */ -inline const char *www_getAttribute(cgi_t * __restrict attr, const char *name); +inline ait_val_t *www_getAttribute(cgi_t * __restrict cgi, const char *name); /* @@ -237,9 +232,9 @@ int www_cmptype(const char *ct, const char *type); * * @str = query string * @delim = delimiter - * return: NULL error or AV pair, must be free() after use! + * return: NULL error or AV pair, must be io_free() after use! */ -char *www_getpair(char ** __restrict str, const char *delim); +ait_val_t *www_getpair(char ** __restrict str, const char *delim); /* * www_x2c() - Hex from string to digit * @@ -254,9 +249,30 @@ inline char www_x2c(const char *str); * return: none */ inline void www_unescape(char * __restrict str); +/* + * www_undot() - Undotted and clean WWW query filename + * + * @pname = query filename + * return: =NULL error or !=NULL allocated valid filename, after use you must call io_freeVar() + */ +ait_val_t *www_undot(const char * __restrict pname); /* + * www_URLInit() - Init URL structure and free old one + * + * @url = Input URL + * return: -1 error or 0 ok + */ +inline int www_URLInit(struct tagIOURL * __restrict url); +/* + * www_URLFree() - URL free structure + * + * @url = Input parsed URL + * return: none + */ +inline void www_URLFree(struct tagIOURL * __restrict url); +/* * www_URLGet() - Parse and get data from input URL * * @csURL = Input URL line @@ -264,16 +280,15 @@ inline void www_unescape(char * __restrict str); * return: 0 error format not find tech:// and return URL like path; * -1 error:: can`t read; >0 ok, up bits for known elements */ -int www_URLGet(const char *csURL, struct tagIOURL *url); +int www_URLGet(const char *csURL, struct tagIOURL * __restrict url); /* * www_URLGetFile() - Get file from parsed URL * * @url = Input parsed URL - * @psValue = Return filename, if not specified file in url path, replace with / - * @valLen = Size of psValue array - * return: -1 error:: can`t read; 0 ok + * @value = Return filename, if not specified file in url path, replace with / + * return: -1 error, 0 filename from path, 1 filename or 2 not specified filename */ -int www_URLGetFile(struct tagIOURL *url, char * __restrict psValue, int valLen); +int www_URLGetFile(struct tagIOURL * __restrict url, ait_val_t * __restrict value); /* * www_XMLGet() - Parse and get data from input XML request string @@ -284,6 +299,21 @@ int www_URLGetFile(struct tagIOURL *url, char * __rest * return: 0 error format incorrect, -1 error:: can`t read; >0 ok readed elements bits */ int www_XMLGet(const char *csXML, struct tagReqXML *xml); + +/* + * www_b64encode() - Base64 encode function + * + * @src = source data + * return: NULL error or !=NULL encoded variable, after use call io_freeVar() + */ +ait_val_t *www_b64encode(ait_val_t * __restrict src); +/* + * www_b64decode() - Base64 decode function + * + * @src = source encoded data + * return: NULL error or !=NULL decoded variable, after use call io_freeVar() + */ +ait_val_t *www_b64decode(ait_val_t * __restrict src); #endif