xref: /plan9/sys/src/cmd/ip/httpd/httpsrv.h (revision b39189fd423aed869c5cf5189bc504918cff969b)
180ee5cbfSDavid du Colombier typedef struct HSPriv	HSPriv;
280ee5cbfSDavid du Colombier 
380ee5cbfSDavid du Colombier enum
480ee5cbfSDavid du Colombier {
5dc6ece7cSDavid du Colombier 	HSTIMEOUT	= 15 * 60 * 1000,
6dc6ece7cSDavid du Colombier 
7dc6ece7cSDavid du Colombier 	/* rewrite replacement field modifiers */
86aadf539SDavid du Colombier 	Modsilent	= '@',	/* don't tell the browser about the redirect. */
96aadf539SDavid du Colombier 	Modperm		= '=',	/* generate permanent redirection */
106aadf539SDavid du Colombier 	Modsubord	= '*',	/* map page & all subordinates to same URL */
116aadf539SDavid du Colombier 	Modonly		= '>',	/* match only this page, not subordinates */
126aadf539SDavid du Colombier 
136aadf539SDavid du Colombier 	Redirsilent	= 1<<0,
146aadf539SDavid du Colombier 	Redirperm	= 1<<1,
156aadf539SDavid du Colombier 	Redirsubord	= 1<<2,
166aadf539SDavid du Colombier 	Redironly	= 1<<3,
1780ee5cbfSDavid du Colombier };
1880ee5cbfSDavid du Colombier 
1980ee5cbfSDavid du Colombier struct HSPriv
2080ee5cbfSDavid du Colombier {
2180ee5cbfSDavid du Colombier 	char		*remotesys;
2280ee5cbfSDavid du Colombier 	char		*remoteserv;
2380ee5cbfSDavid du Colombier };
2480ee5cbfSDavid du Colombier 
25499069deSDavid du Colombier extern	int		logall[3];
2680ee5cbfSDavid du Colombier extern	char*		HTTPLOG;
2780ee5cbfSDavid du Colombier extern	char*		webroot;
2880ee5cbfSDavid du Colombier extern	char*		netdir;
2980ee5cbfSDavid du Colombier 
3080ee5cbfSDavid du Colombier #define 		STRLEN(s)	(sizeof(s)-1)
3180ee5cbfSDavid du Colombier 
3280ee5cbfSDavid du Colombier /* emem.c */
3380ee5cbfSDavid du Colombier char			*estrdup(char*);
3480ee5cbfSDavid du Colombier void*			ezalloc(ulong);
3580ee5cbfSDavid du Colombier 
3680ee5cbfSDavid du Colombier /* sendfd.c */
3780ee5cbfSDavid du Colombier int			authcheck(HConnect *c);
3880ee5cbfSDavid du Colombier int			checkreq(HConnect *c, HContent *type, HContent *enc, long mtime, char *etag);
3980ee5cbfSDavid du Colombier int			etagmatch(int, HETag*, char*);
4080ee5cbfSDavid du Colombier HRange			*fixrange(HRange *h, long length);
4180ee5cbfSDavid du Colombier int			sendfd(HConnect *c, int fd, Dir *dir, HContent *type, HContent *enc);
4280ee5cbfSDavid du Colombier 
4380ee5cbfSDavid du Colombier /* content.c */
4480ee5cbfSDavid du Colombier void			contentinit(void);
4580ee5cbfSDavid du Colombier HContents		dataclass(HConnect *, char*, int);
4680ee5cbfSDavid du Colombier int			updateQid(int, Qid*);
4780ee5cbfSDavid du Colombier HContents		uriclass(HConnect *, char*);
4880ee5cbfSDavid du Colombier 
4980ee5cbfSDavid du Colombier /* anonymous.c */
5080ee5cbfSDavid du Colombier void			anonymous(HConnect*);
5180ee5cbfSDavid du Colombier 
5280ee5cbfSDavid du Colombier /* hint.c */
5380ee5cbfSDavid du Colombier void			hintprint(HConnect *hc, Hio*, char *, int, int);
5480ee5cbfSDavid du Colombier void			statsinit(void);
5580ee5cbfSDavid du Colombier void			urlcanon(char *url);
5680ee5cbfSDavid du Colombier void			urlinit(void);
5780ee5cbfSDavid du Colombier 
5880ee5cbfSDavid du Colombier /* init.c */
5980ee5cbfSDavid du Colombier HConnect*		init(int, char**);
6080ee5cbfSDavid du Colombier 
6180ee5cbfSDavid du Colombier vlong			Bfilelen(void*);
6280ee5cbfSDavid du Colombier 
6380ee5cbfSDavid du Colombier /* redirect.c */
6480ee5cbfSDavid du Colombier void			redirectinit(void);
656aadf539SDavid du Colombier char*			redirect(HConnect *hc, char*, uint *);
669a747e4fSDavid du Colombier char*			masquerade(char*);
6780ee5cbfSDavid du Colombier char*			authrealm(HConnect *hc, char *path);
68dc6ece7cSDavid du Colombier char			*undecorated(char *repl);
6980ee5cbfSDavid du Colombier 
7080ee5cbfSDavid du Colombier /* log.c */
7180ee5cbfSDavid du Colombier void			logit(HConnect*, char*, ...);
7280ee5cbfSDavid du Colombier #pragma	varargck	argpos	logit	2
7380ee5cbfSDavid du Colombier void			writelog(HConnect*, char*, ...);
7480ee5cbfSDavid du Colombier #pragma	varargck	argpos	writelog	2
759a747e4fSDavid du Colombier 
769a747e4fSDavid du Colombier /* authorize.c */
779a747e4fSDavid du Colombier int authorize(HConnect*, char*);
78*b39189fdSDavid du Colombier 
79*b39189fdSDavid du Colombier char *webroot;
80