From 929a11a91c5a84d031c0c52c4f260e4ce8c5289e Mon Sep 17 00:00:00 2001 From: int 80h Date: Tue, 12 May 2020 23:55:32 -0400 Subject: [PATCH] Added init script. Cleaned up imports --- Cargo.toml | 11 +++++------ README | 1 + init-scripts/gemserv.service | 14 ++++++++++++++ src/cgi.rs | 10 ++++------ src/config.rs | 1 - src/logger.rs | 1 - src/main.rs | 12 ------------ src/revproxy.rs | 8 +------- src/status.rs | 1 + src/tls.rs | 5 ----- 10 files changed, 26 insertions(+), 38 deletions(-) create mode 100644 init-scripts/gemserv.service diff --git a/Cargo.toml b/Cargo.toml index 8426a53..5ffc0d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gemserv" -version = "0.1.0" +version = "0.1.1" authors = ["int 80h "] edition = "2018" @@ -11,11 +11,10 @@ tokio = { version = "0.2", features = [ "net", "io-util", "rt-threaded" ] } openssl = "0.10" tokio-openssl = "0.4" futures-util = "0.3" -toml = "*" -serde = "*" -serde_derive = "*" -url = "*" -chrono = "0.4" +toml = "0.5" +serde = "1" +serde_derive = "1" +url = "2" mime_guess = "2.0.3" mime = "0.3.16" log = "0.4" diff --git a/README b/README index ffcb26d..1b43932 100644 --- a/README +++ b/README @@ -23,6 +23,7 @@ A gemini server written in rust. - GEMINI_URL - SERVER_NAME - SERVER_PROTOCOL + - SERVER_SOFTWARE - SCRIPT_NAME - REMOTE_ADDR - REMOTE_HOST diff --git a/init-scripts/gemserv.service b/init-scripts/gemserv.service new file mode 100644 index 0000000..f0b1c76 --- /dev/null +++ b/init-scripts/gemserv.service @@ -0,0 +1,14 @@ +[Unit] +Description=gemserv +After=network.target + +[Service] +Type=simple +Restart=always +RestartSec=5 +User=gemini +ExecStart=/path/to/bin /path/to/config + +[Install] +WantedBy=multi-user.target + diff --git a/src/cgi.rs b/src/cgi.rs index af6a872..4704aee 100644 --- a/src/cgi.rs +++ b/src/cgi.rs @@ -1,19 +1,16 @@ use std::collections::HashMap; -use std::io::{self, BufReader}; -use std::path::{Path, PathBuf}; +use std::io; +use std::path::{PathBuf}; use std::process::Command; -use std::os::unix::fs::PermissionsExt; -use tokio::net::TcpStream; -use tokio_openssl::SslStream; use url::Url; -use crate::config; use crate::status::Status; use crate::conn; use crate::logger; pub async fn cgi(mut con: conn::Connection, path: PathBuf, url: Url) -> Result<(), io::Error> { let mut envs = HashMap::new(); + envs.insert("GATEWAY_INTERFACE", "CGI/1.1"); envs.insert("GEMINI_URL", url.as_str()); envs.insert("SERVER_NAME", url.host_str().unwrap()); envs.insert("SCRIPT_NAME", path.file_name().unwrap().to_str().unwrap()); @@ -23,6 +20,7 @@ pub async fn cgi(mut con: conn::Connection, path: PathBuf, url: Url) -> Result<( envs.insert("REMOTE_HOST", &addr); let port = con.peer_addr.port().to_string(); envs.insert("REMOTE_PORT", &port); + envs.insert("SERVER_SOFTWARE", env!("CARGO_PKG_NAME")); if let Some(q) = url.query() { envs.insert("QUERY_STRING", q); diff --git a/src/config.rs b/src/config.rs index f45c974..b18feae 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,7 +2,6 @@ extern crate serde_derive; extern crate toml; use std::collections::HashMap; use toml::de::Error; -use std::io; use std::path::Path; #[derive(Debug, Deserialize, Clone)] diff --git a/src/logger.rs b/src/logger.rs index 97d37e8..418350c 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -1,6 +1,5 @@ use std::net::SocketAddr; use log::{info, warn}; -use crate::conn; use crate::status; pub fn logger(addr: SocketAddr, stat: status::Status, req: &str) { diff --git a/src/main.rs b/src/main.rs index 43318cb..721fffb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,34 +1,22 @@ -#![allow(unused_imports)] -#![allow(dead_code)] #[macro_use] extern crate serde_derive; use futures_util::future::TryFutureExt; -use std::collections::HashMap; -use std::error::Error; use std::fs; use std::fs::File; use std::io::{self, BufReader, BufRead}; -use std::io::prelude::*; -use std::net::SocketAddr; use std::net::ToSocketAddrs; use std::os::unix::fs::PermissionsExt; use std::path::{Path, PathBuf}; -use std::process::Command; -use std::sync::Arc; use std::env; use tokio::io::AsyncWriteExt; use tokio::net::TcpListener; -use tokio::net::TcpStream; use tokio::prelude::*; use tokio::runtime; -use tokio_openssl::SslStream; use openssl::ssl::NameType; use url::Url; -use chrono::{DateTime, Utc}; use mime_guess; use mime; -use log::{info, warn}; mod cgi; mod config; diff --git a/src/revproxy.rs b/src/revproxy.rs index 2de7e8b..7eca6fb 100644 --- a/src/revproxy.rs +++ b/src/revproxy.rs @@ -1,14 +1,8 @@ -use futures_util::future; -use std::fs::File; use std::io; -use std::io::Read; -use std::io::BufReader; use std::net::ToSocketAddrs; -use std::sync::Arc; -use tokio::io::{copy, split, AsyncReadExt, AsyncWriteExt}; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::net::TcpStream; use openssl::ssl::{SslConnector, SslMethod}; -use url::Url; use crate::conn; use crate::status::Status; diff --git a/src/status.rs b/src/status.rs index 1ef6032..7e11135 100644 --- a/src/status.rs +++ b/src/status.rs @@ -1,5 +1,6 @@ use std::fmt; +#[allow(dead_code)] #[repr(u8)] #[derive(Debug, Copy, Clone)] pub enum Status { diff --git a/src/tls.rs b/src/tls.rs index a72f36e..e2d26e7 100644 --- a/src/tls.rs +++ b/src/tls.rs @@ -1,18 +1,13 @@ extern crate openssl; extern crate tokio_openssl; use std::collections::HashMap; -use std::fs::File; -use std::io::{self, BufReader}; -use std::sync::Arc; use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod}; -use openssl::ssl::SslAcceptorBuilder; use openssl::ssl::SniError; use openssl::error::ErrorStack; use openssl::ssl::SslContextBuilder; use openssl::ssl::SslVersion; use openssl::ssl::NameType; -use tokio_openssl::SslStream; use crate::config;