Data used for packet error has been modified.
[crypto_lab1.git] / src / main.rs
1 #![feature(macro_rules)]
2
3 extern crate openssl;
4 extern crate serialize;
5
6 use std::io;
7 use std::os;
8
9 use end_point::{ Client, Server };
10
11 mod crypto;
12 mod packet;
13 mod end_point;
14
15 const PORT: u16 = 4221;
16
17 fn print_usage() {
18 println!("{} <genkey> | <tests> | ...", os::args()[0]);
19 }
20
21 fn main() {
22 let args = os::args();
23
24 if args.iter().any(|a| a.as_slice() == "--help" || a.as_slice() == "-h") {
25 print_usage();
26 } else if args.len() > 1 && args[1].as_slice() == "genkey" {
27 match crypto::generate_key(256 / 8) {
28 Ok(key) => println!("key: {}", key),
29 Err(e) => println!("Unable to generate a key. Error: {}", e)
30 }
31 } else {
32 println!("Starting server...");
33
34 match Server::new("::1", PORT) {
35 Ok(mut server) => {
36 println!("Server started");
37
38 Client::start_tests("::1", PORT);
39
40 println!("Press any key to quit");
41 io::stdin().read_line().ok().expect("Failed to read line");
42
43 server.close().ok().expect("Failed to close the server");
44 },
45 Err(e) =>
46 println!("Unable to create a new server. Error: {}", e)
47 }
48 }
49 }