7a179af2ef6d935bdfd003bd82ae7061f639755a
1 extern crate actix_web
;
5 use listenfd
::ListenFd
;
7 use actix_web
::{web
, middleware
, App
, HttpServer
, HttpResponse
, Responder
, Result
, web
::Query
};
10 use ron
::de
::from_reader
;
11 use serde
::Deserialize
;
18 #[template(path = "main.html")]
19 struct MainTemplate
<'a
> {
23 #[derive(Deserialize)]
28 static DEFAULT_MESSAGE
: &str = "Marc, roule un pet'!";
29 static KEY
: &str = "secret";
31 fn main_page(query
: Query
<Request
>) -> Result
<HttpResponse
> {
35 match crypto
::decrypt(KEY
, b
) {
37 None
=> String
::from(DEFAULT_MESSAGE
)
39 None
=> String
::from(DEFAULT_MESSAGE
)
42 let hello
= MainTemplate
{ sentence
: &m
};
44 let s
= hello
.render().unwrap();
45 Ok(HttpResponse
::Ok().content_type("text/html").body(s
))
48 #[derive(Debug, Deserialize)]
53 fn main() -> std
::io
::Result
<()> {
54 println!("Starting RUP...");
56 let config
: Config
= {
57 let f
= File
::open(consts
::FILE_CONF
).expect(&format!("Failed to open configuration file {}", consts
::FILE_CONF
));
58 match from_reader(f
) {
60 Err(e
) => panic!("Failed to load config: {}", e
)
64 println!("Configuration: {:?}", config
);
66 let mut listenfd
= ListenFd
::from_env();
71 .wrap(middleware
::Compress
::default())
72 .wrap(middleware
::Logger
::default())
73 .service(web
::resource("/").to(main_page
))
74 .service(fs
::Files
::new("/static", "static").show_files_listing())
79 if let Some(l
) = listenfd
.take_tcp_listener(0).unwrap() {
80 server
.listen(l
).unwrap()
82 server
.bind(&format!("0.0.0.0:{}", config
.port
)).unwrap()