change html/css to match standard; update docs

This commit is contained in:
Face
2025-08-20 15:06:56 +03:00
parent aa49fac5b8
commit cf99c8beff
10 changed files with 193 additions and 91 deletions

View File

@@ -1,5 +1,34 @@
# Gurty - a CLI tool to setup your GURT Protocol server
Gurty is a command-line interface tool for setting up and managing GURT protocol servers.
## Configuration
Gurty uses a TOML configuration file to manage server settings. The `gurty.template.toml` file provides a complete configuration template with all available options:
### Sections
- **Server**: Basic server settings (host, port, protocol version, connection limits)
- **TLS**: Certificate and private key configuration for secure connections
- **Logging**: Logging levels, request/response logging, and log file paths
- **Security**: File access restrictions, allowed HTTP methods, and rate limiting
- **Error Pages**: Custom error page templates and default error responses
- **Headers**: Custom HTTP headers for security and server identification
### Using Configuration Files
1. **Copy the configuration template:**
```bash
cp gurty.template.toml gurty.toml
```
2. **Edit the configuration** to match your environment. (optional)
3. **Use the configuration file:**
```bash
gurty serve --config gurty.toml
```
## Setup for Production
For production deployments, you'll need to generate your own certificates since traditional Certificate Authorities don't support custom protocols:
@@ -19,14 +48,24 @@ For production deployments, you'll need to generate your own certificates since
openssl req -x509 -newkey rsa:4096 -keyout gurt-server.key -out gurt-server.crt -days 365 -nodes
```
2. **Deploy with production certificates:**
2. **Copy the configuration template and customize:**
```bash
cargo run --release serve --cert gurt-server.crt --key gurt-server.key --host 0.0.0.0 --port 4878
cp gurty.template.toml gurty.toml
```
3. **Deploy with production certificates and configuration:**
```bash
gurty serve --config gurty.toml
```
Or specify certificates explicitly:
```bash
gurty serve --cert gurt-server.crt --key gurt-server.key --config gurty.toml
```
## Development Environment Setup
To set up a development environment for GURT, follow these steps:
1. **Install mkcert:**
```bash
# Windows (with Chocolatey)
@@ -50,7 +89,16 @@ To set up a development environment for GURT, follow these steps:
- `localhost+2.pem` (certificate)
- `localhost+2-key.pem` (private key)
4. **Start GURT server with certificates:**
4. **Copy the configuration template and customize:**
```bash
cargo run --release serve --cert localhost+2.pem --key localhost+2-key.pem
cp gurty.template.toml gurty.toml
```
5. **Start GURT server with certificates and configuration:**
```bash
gurty serve --config gurty.toml
```
Or specify certificates explicitly:
```bash
gurty serve --cert localhost+2.pem --key localhost+2-key.pem --config gurty.toml
```

View File

@@ -13,8 +13,8 @@ connection = 10
pool_idle = 300
[tls]
certificate = "/path/to/certificate.pem"
private_key = "/path/to/private_key.pem"
certificate = "localhost+2.pem"
private_key = "localhost+2-key.pem"
[logging]
level = "info"

View File

@@ -66,7 +66,7 @@ impl DirectoryHandler for DefaultDirectoryHandler {
let class = if is_dir { "dir" } else { "file" };
listing.push_str(&format!(
r#" <a href="{}" class="{}">{}</a>"#,
r#" <a href="{}" style="{}">{}</a>"#,
name, class, display_name
));
listing.push('\n');

View File

@@ -3,22 +3,15 @@
<head>
<title>404 Not Found</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 40px;
text-align: center;
background: #f5f5f5;
}
.container {
background: white;
padding: 60px 40px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
display: inline-block;
}
h1 { color: #d32f2f; }
a { color: #0066cc; text-decoration: none; }
a:hover { text-decoration: underline; }
body {{
font-sans m-[40px] text-center
}}
.container {{
bg-white p-12 px-10 rounded-[8px] max-w-[500px]
}}
h1 {{ mb-[20px] }}
p {{ text-[#555555] mb-[30px] }}
a {{ text-[#0066cc] }}
</style>
</head>
<body>

View File

@@ -1 +1 @@
<div>
<div style="flex flex-col gap-2">

View File

@@ -1,4 +1,3 @@
</div>
</div>
</body>
</html>

View File

@@ -1,43 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<title>Directory Listing</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 40px;
background: #f5f5f5;
}
.container {
background: white;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.dir {
font-weight: bold;
color: #0066cc;
}
.file {
color: #333;
}
a {
text-decoration: none;
display: block;
padding: 8px 12px;
margin: 2px 0;
border-radius: 4px;
transition: background-color 0.2s;
}
a:hover {
background-color: #f0f0f0;
}
.parent {
color: #666;
font-style: italic;
}
body { font-sans m-[40px] }
.dir { font-bold text-[#0066cc] }
</style>
</head>
<body>
<div class="container">
<h1>Directory Listing</h1>
<h1>Directory Listing</h1>

View File

@@ -1 +1 @@
<a href="../" class="parent">← Parent Directory</a>
<p><a href="../">← Parent Directory</a></p>

View File

@@ -1,26 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<title>{} {}</title>
<style>
body {{
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 40px;
text-align: center;
background: #f5f5f5;
font-sans m-[40px] text-center
}}
.container {{
background: white;
padding: 60px 40px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
display: inline-block;
max-width: 500px;
bg-white p-12 px-10 rounded-[8px] max-w-[500px]
}}
h1 {{ color: #d32f2f; margin-bottom: 20px; }}
p {{ color: #555; margin-bottom: 30px; }}
a {{ color: #0066cc; text-decoration: none; }}
a:hover {{ text-decoration: underline; }}
h1 {{ text-[#d32f2f] mb-[20px] }}
p {{ text-[#555555] mb-[30px] }}
a {{ text-[#0066cc] }}
</style>
</head>
<body>
@@ -29,5 +18,4 @@
<p>{}</p>
<p><a href="/">Back to home</a></p>
</div>
</body>
</html>
</body>