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