summaryrefslogtreecommitdiffstats
path: root/src/web/main.vala
blob: f7b0c3000725ccf3f7d31cfd30bba298c8411358 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* Copyright 2013, Sebastian Reichel <sre@ring0.de>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

Database db;
public CSVMemberFile csvimport;
public PGP pgp;
public Config cfg;
public AudioPlayer audio;
string templatedir;

public static int main(string[] args) {
	Intl.setlocale(LocaleCategory.ALL, "");
	Intl.textdomain("shopsystem");

	TlsCertificate? cert = null;
	string certificate = "";
	string privatekey = "";
	uint port = 8080;

	try {
		db  = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Database", "/io/mainframe/shopsystem/database");
		pgp = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.PGP", "/io/mainframe/shopsystem/pgp");
		cfg = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.Config", "/io/mainframe/shopsystem/config");
		audio = Bus.get_proxy_sync(BusType.SYSTEM, "io.mainframe.shopsystem.AudioPlayer", "/io/mainframe/shopsystem/audio");
		templatedir = cfg.get_string("WEB", "filepath");
		port = cfg.get_integer("WEB", "port");

		try {
			certificate = cfg.get_string("WEB", "cert");
			privatekey = cfg.get_string("WEB", "key");
		} catch(KeyFileError e) {
			warning(_("KeyFile Error: %s\n"), e.message);
		}
	} catch(IOError e) {
		error(_("IO Error: %s\n"), e.message);
	} catch(KeyFileError e) {
		error(_("KeyFile Error: %s\n"), e.message);
	} catch(DBusError e) {
		error(_("DBus Error: %s\n"), e.message);
	}

	stdout.printf(_("Web Server Port: %u\n"), port);
	stdout.printf(_("TLS certificate: %s\n"), certificate);
	stdout.printf(_("TLS private key: %s\n"), privatekey);

	/* attach WebServer to MainLoop */
	try {
		if(certificate != "" && privatekey != "")
			cert = new TlsCertificate.from_files(certificate, privatekey);
		new WebServer(port, cert);
	} catch(Error e) {
		error(_("Could not start Webserver: %s\n"), e.message);
	}

	/* start MainLoop */
	new MainLoop().run();

	return 0;
}