summaryrefslogtreecommitdiffstats
path: root/src/web
diff options
context:
space:
mode:
Diffstat (limited to 'src/web')
-rw-r--r--src/web/Makefile2
-rw-r--r--src/web/csv.vala2
-rw-r--r--src/web/web.vala93
-rw-r--r--src/web/websession.vala10
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";
}