#include /***** Types *****/ enum method{ GET, POST }; struct att{ int id; int post; int bytes; /* Size of data. */ char *name; char *desc; char *mime; char *data; }; struct post{ int id; int parent; int user; int created; int edited; char *subject; char *text; }; struct session{ int id; int user; int created; char *string; }; struct user{ int id; int created; char *name; char *full; char *hash; char *salt; }; struct query{ int method; int length; /* Content length. */ char *string; }; struct site{ char *name; }; /***** Functions *****/ /* ctl.c */ void newatt(void); void newpost(void); void newsession(void); void newuser(void); void showatt(int); void showfront(void); void showpost(int); void showuser(int); /* db.c */ int addatt(struct att *); int addpost(struct post *); int addsession(struct session *); int adduser(struct user *); int deletesession(struct session *); int haspass(struct user *, char *); void makerandom(char *, int); void makehash(char *, char **, char **); struct att *getatt(sqlite3_stmt *); struct post *getpost(sqlite3_stmt *); struct session *getsession(sqlite3_stmt *); struct user *getuser(sqlite3_stmt *); struct att *nextatt(sqlite3_stmt *); struct post *nextpost(sqlite3_stmt *); struct session *nextsession(sqlite3_stmt *); struct user *nextuser(sqlite3_stmt *); sqlite3_stmt *selectbyint(char *, char *, int); /* err.c */ void srverr(char *); /* query.c */ char *nextcookie(int); char *nextparam(enum method, int *, int); void setquery(void); char *split(char *); int urldecode(char *, int); /***** Definitions *****/ #define TRUNCATED(s) s[-1] /* Maximum allowed Content-Length for various forms. */ #define MAXATTDATA 4096 #define MAXPOSTDATA 4096 #define MAXSESSIONDATA 512 #define MAXUSERDATA 512 /* Maximum size of user information, incl. NUL. */ #define MAXUSERNAME 40 #define MAXUSERFULL 128 #define MAXUSERPASS 72 /* Maximum size of cookie values. */ #define MAXCOOKIE 40 /***** Variables *****/ sqlite3 *db; struct query query; struct site site; struct user *curuser; struct session *cursession;