diff options
Diffstat (limited to 'src/web')
-rw-r--r-- | src/web/Makefile | 2 | ||||
-rw-r--r-- | src/web/csv.vala | 2 | ||||
-rw-r--r-- | src/web/web.vala | 93 | ||||
-rw-r--r-- | src/web/websession.vala | 10 |
4 files changed, 99 insertions, 8 deletions
diff --git a/src/web/Makefile b/src/web/Makefile index cc9d77e..de305d9 100644 --- a/src/web/Makefile +++ b/src/web/Makefile @@ -1,7 +1,7 @@ all: web web: main.vala web.vala websession.vala csv.vala template.vala ../database/db-interface.vala ../pgp/pgp-interface.vala ../price.vapi - valac -o $@ --vapidir=../../vapi --pkg gee-1.0 --pkg gio-2.0 --pkg libsoup-2.4 --pkg posix --pkg libarchive --pkg gpgme $^ + valac -o $@ --vapidir=../../vapi --enable-experimental --pkg gee-1.0 --pkg gio-2.0 --pkg libsoup-2.4 --pkg posix $^ clean: rm -rf web diff --git a/src/web/csv.vala b/src/web/csv.vala index 4e32a0a..f9622b8 100644 --- a/src/web/csv.vala +++ b/src/web/csv.vala @@ -16,7 +16,7 @@ public class CSVMemberFile { private UserInfo[] members; - public Gee.List<int> missing_unblocked_members() { + public Gee.List<int> missing_unblocked_members() throws DatabaseError, IOError { var result = new Gee.ArrayList<int>(); var dbusers = db.get_member_ids(); diff --git a/src/web/web.vala b/src/web/web.vala index 1c0d9b7..3e58fe6 100644 --- a/src/web/web.vala +++ b/src/web/web.vala @@ -26,6 +26,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -40,6 +46,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -98,6 +110,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -145,6 +163,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -243,6 +267,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -291,6 +321,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -403,6 +439,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -455,6 +497,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -519,6 +567,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -562,6 +616,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -614,6 +674,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -655,6 +721,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } @@ -787,6 +859,12 @@ public class WebServer { return; } + void handler_400(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) { + string result = "Internal Server Error\n"; + msg.set_status(400); + msg.set_response("text/plain", Soup.MemoryUse.COPY, result.data); + } + void handler_404(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) { string result = "Page not Found\n"; msg.set_status(404); @@ -804,7 +882,14 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); - } } + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } + } void handler_todo(Soup.Server server, Soup.Message msg, string path, GLib.HashTable? query, Soup.ClientContext client) { try { @@ -816,6 +901,12 @@ public class WebServer { } catch(TemplateError e) { stderr.printf(e.message+"\n"); handler_404(server, msg, path, query, client); + } catch(DatabaseError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); + } catch(IOError e) { + stderr.printf(e.message+"\n"); + handler_400(server, msg, path, query, client); } } diff --git a/src/web/websession.vala b/src/web/websession.vala index 5c562c6..1dc6319 100644 --- a/src/web/websession.vala +++ b/src/web/websession.vala @@ -67,14 +67,14 @@ public class WebSession { return result; } - private void setup_auth(int user) { + private void setup_auth(int user) throws DatabaseError, IOError { var auth = db.get_user_auth(user); this.disabled = auth.disabled; this.superuser = auth.superuser; this.logged_in = true; } - public void logout() { + public void logout() throws DatabaseError, IOError { if(logged_in) { db.set_sessionid(user, ""); superuser = false; @@ -82,7 +82,7 @@ public class WebSession { } } - public WebSession(Soup.Server server, Soup.Message msg, string path, GLib.HashTable<string,string>? query, Soup.ClientContext client) { + public WebSession(Soup.Server server, Soup.Message msg, string path, GLib.HashTable<string,string>? query, Soup.ClientContext client) throws DatabaseError, IOError { var cookies = Soup.cookies_from_request(msg); /* Check for existing session */ @@ -95,7 +95,7 @@ public class WebSession { name = db.get_username(user); setup_auth(user); return; - } catch(WebSessionError e) { + } catch(DatabaseError e) { /* invalid session, ignore */ } } @@ -128,7 +128,7 @@ public class WebSession { user = userid; try { name = db.get_username(user); - } catch(WebSessionError e) { + } catch(DatabaseError e) { name = "Unknown User"; } |