#define VERSION "1.2.0" #define copyright "\n\n" #define CSS_STYLE \ " \n" #define HTML_HEADER \ "\n" \ "\n" \ copyright \ "\n" \ " \n" \ CSS_STYLE #define _FILE_OFFSET_BITS 64 #ifdef __sun__ #define _POSIX_PTHREAD_SEMANTICS #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include "md5.h" #include "cgic.h" #include "wfmiconres.h" #define VALIDCHRS "an ()[]{}-_.,!@#$%^&=+;" char VALIDCHRS_DIR[256]; // above + / #define P1024_1 1024.0f #define P1024_2 1048576.0f #define P1024_3 1073741824.0f #define P1024_4 1099511627776.0f #define SHM_SIZE 16 #define VIRT_DIRNAME_SIZE NAME_MAX // around 255 #define PHYS_DIRNAME_SIZE 1024 #define VIRT_FILENAME_SIZE NAME_MAX #define PHYS_FILENAME_SIZE 1280 #define VIRT_DESTINATION_SIZE NAME_MAX #define PHYS_DESTINATION_SIZE 1280 char virt_dirname[VIRT_DIRNAME_SIZE]; char *virt_dirname_urlencoded; char phys_dirname[PHYS_DIRNAME_SIZE]; char virt_filename[VIRT_FILENAME_SIZE]; char *virt_filename_urlencoded; char phys_filename[PHYS_FILENAME_SIZE]; char virt_destination[VIRT_DESTINATION_SIZE]; char phys_destination[PHYS_DESTINATION_SIZE]; char final_destination[PHYS_DESTINATION_SIZE]; char virt_parent[VIRT_DIRNAME_SIZE]; char *virt_parent_urlencoded; char ICONSURL[1024]; char HOMEDIR[1024]; char HOMEURL[1024]; char TAGLINE[1024]; char FAVICON[1024]; char token[256]; char loggedinuser[64]; regex_t dotdot; int access_level; int access_as_user; int users_defined; int edit_by_default; int edit_any_file; int recursive_du; int js; double t1, t2; struct timeval mt; enum { FALSE, TRUE }; enum { PERM_NO, PERM_RO, PERM_RW }; enum { CHANGE, DELETE, MOVE }; typedef struct asdir_ { char name[NAME_MAX]; mode_t type; off_t size; time_t atime, mtime, rtime; } ASDIR; int namesort(const void *, const void *); int rnamesort(const void *, const void *); int sizesort(const void *, const void *); int rsizesort(const void *, const void *); int timesort(const void *, const void *); int rtimesort(const void *, const void *); int asscandir(const char *, ASDIR **, int (*compar)(const void *, const void *)); void error(char *, ...); void redirect(char *, ...); char *buprintf(float, int); int strip(char *, int, char *); void checkfilename(char *); void checkdestination(void); void mkfile(void); void newdir(void); void edit_save(void); void delete(void); void move(void); void dirlist(void); void edit_ui(void); void rename_ui(void); void mkdir_ui(void); void mkfile_ui(void); void multiprompt_ui(char *); void about(void); void sendfile(void); void receivefile(void); off_t du(char *); void re_dir_ui(char *, int); void login_ui(void); void tstop(void); void html_title(char *); void singleprompt_ui(char *); char *url_encode(char *); char *url_decode(char *); int wfm_commit(int, char *); int repo_check(void);