summaryrefslogtreecommitdiff
path: root/src/bin/main.rs
blob: 36d6c0022b28a92cafc3f1c285c86ea4e4017123 (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
// CSRF protection
// https://github.com/heartsucker/iron-csrf
#[macro_use]
extern crate log;
extern crate systemhttp;
extern crate env_logger;
#[macro_use]
extern crate clap;
extern crate sqlite;

fn main() {
    let matches = clap_app!(
        systemhttpd =>
            (version: "0.1")
            (author: "Kjetil Ørbekk")
            (about: "A systemd web frontend")
            (@arg PORT: -p --port +takes_value "Port to serve on")
            (@arg DB_FILE: --db_file +required +takes_value
             "Path to sqlite database"))
        .get_matches();

    let port = matches.value_of("PORT").unwrap_or("8080")
        .parse::<u16>().expect("port number");

    let db_file = matches.value_of("DB_FILE").unwrap();

    env_logger::init().unwrap();
    let mut conn = sqlite::Connection::open(db_file)
        .expect(format!("opening sqlite database at {}", db_file).as_str());
    systemhttp::db::init(&mut conn);

    let _server = systemhttp::server::serve(port).unwrap();
    println!("Serving on {}", port);
}