xref: /plan9/sys/src/cmd/ip/httpd/httpsrv.h (revision dc6ece7c0a28f729e7563d192db5ba9c31c2756a)
180ee5cbfSDavid du Colombier typedef struct HSPriv	HSPriv;
280ee5cbfSDavid du Colombier 
380ee5cbfSDavid du Colombier enum
480ee5cbfSDavid du Colombier {
5*dc6ece7cSDavid du Colombier 	HSTIMEOUT	= 15 * 60 * 1000,
6*dc6ece7cSDavid du Colombier 
7*dc6ece7cSDavid du Colombier 	/* rewrite replacement field modifiers */
8*dc6ece7cSDavid du Colombier 	Modsilent	= '@',
9*dc6ece7cSDavid du Colombier 	Modperm		= '=',
1080ee5cbfSDavid du Colombier };
1180ee5cbfSDavid du Colombier 
1280ee5cbfSDavid du Colombier struct HSPriv
1380ee5cbfSDavid du Colombier {
1480ee5cbfSDavid du Colombier 	char		*remotesys;
1580ee5cbfSDavid du Colombier 	char		*remoteserv;
1680ee5cbfSDavid du Colombier };
1780ee5cbfSDavid du Colombier 
18499069deSDavid du Colombier extern	int		logall[3];
1980ee5cbfSDavid du Colombier extern	char*		HTTPLOG;
2080ee5cbfSDavid du Colombier extern	char*		webroot;
2180ee5cbfSDavid du Colombier extern	char*		netdir;
2280ee5cbfSDavid du Colombier 
2380ee5cbfSDavid du Colombier #define 		STRLEN(s)	(sizeof(s)-1)
2480ee5cbfSDavid du Colombier 
2580ee5cbfSDavid du Colombier /* emem.c */
2680ee5cbfSDavid du Colombier char			*estrdup(char*);
2780ee5cbfSDavid du Colombier void*			ezalloc(ulong);
2880ee5cbfSDavid du Colombier 
2980ee5cbfSDavid du Colombier /* sendfd.c */
3080ee5cbfSDavid du Colombier int			authcheck(HConnect *c);
3180ee5cbfSDavid du Colombier int			checkreq(HConnect *c, HContent *type, HContent *enc, long mtime, char *etag);
3280ee5cbfSDavid du Colombier int			etagmatch(int, HETag*, char*);
3380ee5cbfSDavid du Colombier HRange			*fixrange(HRange *h, long length);
3480ee5cbfSDavid du Colombier int			sendfd(HConnect *c, int fd, Dir *dir, HContent *type, HContent *enc);
3580ee5cbfSDavid du Colombier 
3680ee5cbfSDavid du Colombier /* content.c */
3780ee5cbfSDavid du Colombier void			contentinit(void);
3880ee5cbfSDavid du Colombier HContents		dataclass(HConnect *, char*, int);
3980ee5cbfSDavid du Colombier int			updateQid(int, Qid*);
4080ee5cbfSDavid du Colombier HContents		uriclass(HConnect *, char*);
4180ee5cbfSDavid du Colombier 
4280ee5cbfSDavid du Colombier /* anonymous.c */
4380ee5cbfSDavid du Colombier void			anonymous(HConnect*);
4480ee5cbfSDavid du Colombier 
4580ee5cbfSDavid du Colombier /* hint.c */
4680ee5cbfSDavid du Colombier void			hintprint(HConnect *hc, Hio*, char *, int, int);
4780ee5cbfSDavid du Colombier void			statsinit(void);
4880ee5cbfSDavid du Colombier void			urlcanon(char *url);
4980ee5cbfSDavid du Colombier void			urlinit(void);
5080ee5cbfSDavid du Colombier 
5180ee5cbfSDavid du Colombier /* init.c */
5280ee5cbfSDavid du Colombier HConnect*		init(int, char**);
5380ee5cbfSDavid du Colombier 
5480ee5cbfSDavid du Colombier vlong			Bfilelen(void*);
5580ee5cbfSDavid du Colombier 
5680ee5cbfSDavid du Colombier /* redirect.c */
5780ee5cbfSDavid du Colombier void			redirectinit(void);
5880ee5cbfSDavid du Colombier char*			redirect(HConnect *hc, char*);
599a747e4fSDavid du Colombier char*			masquerade(char*);
6080ee5cbfSDavid du Colombier char*			authrealm(HConnect *hc, char *path);
61*dc6ece7cSDavid du Colombier int			isdecorated(char *repl);
62*dc6ece7cSDavid du Colombier char			*undecorated(char *repl);
6380ee5cbfSDavid du Colombier 
6480ee5cbfSDavid du Colombier /* log.c */
6580ee5cbfSDavid du Colombier void			logit(HConnect*, char*, ...);
6680ee5cbfSDavid du Colombier #pragma	varargck	argpos	logit	2
6780ee5cbfSDavid du Colombier void			writelog(HConnect*, char*, ...);
6880ee5cbfSDavid du Colombier #pragma	varargck	argpos	writelog	2
699a747e4fSDavid du Colombier 
709a747e4fSDavid du Colombier /* authorize.c */
719a747e4fSDavid du Colombier int authorize(HConnect*, char*);
72