X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=submit%2Fsubmitd.h;h=f2b72ff9cfbc817690b56c41fb4ab9d0ed76a988;hb=c861bd9c09d20e06533e122253bcd3bb94b0bef9;hp=4030bc31e67f7c731490aa365a9f1df148775633;hpb=92811b1aa5a791bc776b58afb241a7d93e737604;p=eval.git diff --git a/submit/submitd.h b/submit/submitd.h index 4030bc3..f2b72ff 100644 --- a/submit/submitd.h +++ b/submit/submitd.h @@ -7,16 +7,21 @@ #ifndef _SUBMITD_H #define _SUBMITD_H -#include "lib/clists.h" -#include "lib/ipaccess.h" -#include "lib/fastbuf.h" +#include "ucw/clists.h" +#include "ucw/ipaccess.h" +#include "ucw/fastbuf.h" #include #include -struct access_rule { +struct ip_node { cnode n; struct ip_addrmask addrmask; +}; + +struct access_rule { + cnode n; + clist ip_list; uns allow_admin; uns plain_text; uns max_conn; @@ -26,12 +31,12 @@ struct conn { // Set up by the master process cnode n; u32 ip; - byte *ip_string; // (xmalloced) + char *ip_string; // (xmalloced) pid_t pid; uns id; struct access_rule *rule; // Rule matched by this connection int sk; // Client socket - byte *cert_name; // Client name from the certificate (NULL if no TLS) (xmalloced) + char *cert_name; // Client name from the certificate (NULL if no TLS) (xmalloced) // Used by the child process gnutls_session_t tls; // TLS session @@ -41,10 +46,12 @@ struct conn { struct odes *reply; struct odes *task_status; int task_lock_fd; - byte *user; + char *user; }; extern uns max_request_size, max_attachment_size, trace_commands; +extern uns max_versions; +extern char *history_format; /* submitd.c */ @@ -59,17 +66,29 @@ int process_command(struct conn *c); struct task { cnode n; - byte *name; + char *name; + uns open_data; // Number of parts for open-data tasks + uns max_size; // Maximum size (0=use global default) + clist parts; // List of parts of this task (simp_nodes) + clist *extensions; // List of allowed extensions for this task (simp_nodes) }; extern clist task_list; extern struct cf_section tasks_conf; -struct task *task_find(byte *name); -int user_exists_p(byte *user); +struct task *task_find(char *name); +int part_exists_p(struct task *t, char *name); +int user_exists_p(char *user); +int ext_exists_p(struct task *t, char *ext); + void task_lock_status(struct conn *c); void task_unlock_status(struct conn *c, uns write_back); -void task_submit(struct conn *c, struct task *t, struct fastbuf *fb, byte *filename); -struct odes *task_status_find_task(struct conn *c, struct task *t); +void task_load_status(struct conn *c); + +struct odes *task_status_find_task(struct conn *c, struct task *t, uns create); +struct odes *task_status_find_part(struct odes *t, char *part, uns create); + +void task_submit_part(char *user, char *task, char *part, char *ext, uns version, struct fastbuf *fb); +void task_delete_part(char *user, char *task, char *part, char *ext, uns version); #endif