Add error messages when failed to start server

This commit is contained in:
KernelErr 2021-12-30 22:05:25 +08:00
parent bff92738d5
commit 8fbc0c370a
6 changed files with 18 additions and 9 deletions

2
Cargo.lock generated
View File

@ -108,7 +108,7 @@ dependencies = [
[[package]] [[package]]
name = "fourth" name = "fourth"
version = "0.1.4" version = "0.1.5"
dependencies = [ dependencies = [
"byte_string", "byte_string",
"bytes 1.1.0", "bytes 1.1.0",

View File

@ -1,6 +1,6 @@
[package] [package]
name = "fourth" name = "fourth"
version = "0.1.4" version = "0.1.5"
edition = "2021" edition = "2021"
authors = ["LI Rui <lr_cn@outlook.com>"] authors = ["LI Rui <lr_cn@outlook.com>"]
license = "Apache-2.0" license = "Apache-2.0"

View File

@ -55,6 +55,8 @@ upstream:
内置两个的upstreamban立即中断连接、echo返回读到的数据。更详细的配置可以参考[示例配置](./example-config.yaml)。 内置两个的upstreamban立即中断连接、echo返回读到的数据。更详细的配置可以参考[示例配置](./example-config.yaml)。
注意:[::]会默认同时绑定IPv4和IPv6。
## 性能测试 ## 性能测试
在4C2G的服务器上测试 在4C2G的服务器上测试

View File

@ -198,7 +198,7 @@ fn verify_config(config: ParsedConfig) -> Result<ParsedConfig, ConfigError> {
} }
for key in &upstream_names { for key in &upstream_names {
if !used_upstreams.contains(key) { if !used_upstreams.contains(key) && !key.eq("echo") && !key.eq("ban") {
warn!("Upstream {} not used", key); warn!("Upstream {} not used", key);
} }
} }

View File

@ -5,11 +5,12 @@ mod servers;
use crate::config::Config; use crate::config::Config;
use crate::servers::Server; use crate::servers::Server;
use std::env;
use log::{debug, error}; use log::{debug, error};
use std::env;
fn main() { fn main() {
let config_path = env::var("FOURTH_CONFIG").unwrap_or_else(|_| "/etc/fourth/config.yaml".to_string()); let config_path =
env::var("FOURTH_CONFIG").unwrap_or_else(|_| "/etc/fourth/config.yaml".to_string());
let config = match Config::new(&config_path) { let config = match Config::new(&config_path) {
Ok(config) => config, Ok(config) => config,
@ -23,6 +24,6 @@ fn main() {
let mut server = Server::new(config.base); let mut server = Server::new(config.base);
debug!("{:?}", server); debug!("{:?}", server);
let res = server.run(); let _ = server.run();
error!("Server returned an error: {:?}", res); error!("Server ended with errors");
} }

View File

@ -83,10 +83,16 @@ impl Server {
let handle = tokio::spawn(async move { let handle = tokio::spawn(async move {
match config.protocol.as_ref() { match config.protocol.as_ref() {
"tcp" => { "tcp" => {
let _ = tcp::proxy(config).await; let res = tcp::proxy(config.clone()).await;
if res.is_err() {
error!("Failed to start {}: {}", config.name, res.err().unwrap());
}
} }
"kcp" => { "kcp" => {
let _ = kcp::proxy(config).await; let res = kcp::proxy(config.clone()).await;
if res.is_err() {
error!("Failed to start {}: {}", config.name, res.err().unwrap());
}
} }
_ => { _ => {
error!("Invalid protocol: {}", config.protocol) error!("Invalid protocol: {}", config.protocol)