]> gitweb.ps.run Git - ps-cgit/blobdiff - cgit.h
auth: add basic authentication filter framework
[ps-cgit] / cgit.h
diff --git a/cgit.h b/cgit.h
index 92e8c558dab46e402381f084e437cf5be90b0b21..496d0f685075f66865d7c4d12d3ccd155e7b68dc 100644 (file)
--- a/cgit.h
+++ b/cgit.h
@@ -53,20 +53,21 @@ typedef void (*filepair_fn)(struct diff_filepair *pair);
 typedef void (*linediff_fn)(char *line, int len);
 
 typedef enum {
-       ABOUT, COMMIT, SOURCE
+       ABOUT, COMMIT, SOURCE, EMAIL, AUTH
 } filter_type;
 
 struct cgit_filter {
        int (*open)(struct cgit_filter *, va_list ap);
        int (*close)(struct cgit_filter *);
        void (*fprintf)(struct cgit_filter *, FILE *, const char *prefix);
+       void (*cleanup)(struct cgit_filter *);
+       int argument_count;
 };
 
 struct cgit_exec_filter {
        struct cgit_filter base;
        char *cmd;
        char **argv;
-       int extra_args;
        int old_stdout;
        int pipe_fh[2];
        int pid;
@@ -98,6 +99,7 @@ struct cgit_repo {
        struct cgit_filter *about_filter;
        struct cgit_filter *commit_filter;
        struct cgit_filter *source_filter;
+       struct cgit_filter *email_filter;
        struct string_list submodules;
 };
 
@@ -249,6 +251,8 @@ struct cgit_config {
        struct cgit_filter *about_filter;
        struct cgit_filter *commit_filter;
        struct cgit_filter *source_filter;
+       struct cgit_filter *email_filter;
+       struct cgit_filter *auth_filter;
 };
 
 struct cgit_page {
@@ -275,6 +279,10 @@ struct cgit_environment {
        const char *script_name;
        const char *server_name;
        const char *server_port;
+       const char *http_cookie;
+       const char *http_referer;
+       unsigned int content_length;
+       int authenticated;
 };
 
 struct cgit_context {
@@ -355,6 +363,8 @@ extern int cgit_close_filter(struct cgit_filter *filter);
 extern void cgit_fprintf_filter(struct cgit_filter *filter, FILE *f, const char *prefix);
 extern void cgit_exec_filter_init(struct cgit_exec_filter *filter, char *cmd, char **argv);
 extern struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype);
+extern void cgit_cleanup_filters(void);
+extern void cgit_init_filters(void);
 
 extern void cgit_prepare_repo_env(struct cgit_repo * repo);