1 module app;
2 
3 import std.stdio;
4 import vibe.vibe;
5 import handlers;
6 import collector;
7 import std.socket;
8 
9 string _version = "v0.0.1";
10 string sourceCodeLink = "http://github.com/deavmi/almeida";
11 string moneroAddress = "86reDCjk99VJ8QCo73WwM1AtfweD2fp8RPPWzNK56cdS1fAfxWCwixic9QrXkHyoJSe3gMZkAkb8aW5oU4cLEFucMLX4wqP";
12 public Collector d;
13 
14 void main()
15 {
16 	writeln("Starting almeida...");
17 
18 	/* Create a router */
19 	URLRouter router = new URLRouter();
20 
21 	/* Setup handlers */
22 	setupHandlers(router);
23 
24 	/* Set listener information */
25 	HTTPServerSettings serverSettings = new HTTPServerSettings();
26 	
27 	/* TODO Make configurable from command-line */
28 	serverSettings.port = 9091;
29 	serverSettings.bindAddresses = ["::"];
30 	serverSettings.errorPageHandler = toDelegate(&error);
31 
32 	/* Bind the settings and the router toghether */
33 	listenHTTP(serverSettings, router);
34 
35 	/* Setup data collection */
36 	Address yggdrasilControlNode = parseAddress("201:6c56:f9d5:b7a5:8f42:b1ab:9e0e:5169", 9090);
37 	setupDataCollector(yggdrasilControlNode);
38 	
39 	/* Start the webs erver loop */
40 	runApplication();
41 }
42 
43 void setupHandlers(URLRouter router)
44 {
45 	/* TODO: Setup handlers here */
46 	router.get("/", &home);
47 	router.get("/peerdb", &peerlist);
48 	router.get("/peerinfo", &peerinfo);
49 	router.get("/buildinfo", &buildinfo);
50 	router.get("/builddb", &builddb);
51 	router.get("/salazar", &buildinfo);
52 	router.get("/about", &about);
53 	router.get("/raw/kaka.js", serveStaticFile("source/kaka.js"));
54 	router.get("/raw/peerinfo.js", serveStaticFile("source/peerinfo.js"));
55 	//router.get("/raw/peerinfo.js", serveStaticFile("source/peerinfo.js"));
56 	
57 	router.get("/raw/global.css", serveStaticFile("source/global.css"));
58 	router.get("/api/", &apiHandler);
59 	
60 	router.get("/api/builddb", &getbuilddb);
61 	router.get("/api/peerinfo", &getpeerinfo);
62 }
63 
64 void setupDataCollector(Address nodeAddress)
65 {
66 	d = new Collector(nodeAddress);
67 	d.start();
68 }