Initial commit

This commit is contained in:
Mrixs committed 2025-03-22 18:27:58 +03:00
commit e59c4d1f5e
6 files changed
+187

No files matched your search

+28
View File
@@ -0,0 +1,28 @@
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
#
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
# vendor/
# Go workspace file
go.work
go.work.sum
# env file
.env
# GoLand
.idea/
+14
View File
@@ -0,0 +1,14 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
+40
View File
@@ -0,0 +1,40 @@
# Teapot Server
## Description
This is a simple "teapot server" project, inspired by the classic XKCD comic. It's designed to be a minimal HTTP server that responds with a 418 I'm teapot status and a humorous message about quantum fluctuations. The primary purpose is for demonstration and learning purposes, showcasing basic Go web development concepts.
## Usage
1. **Clone the repository:**
```bash
git clone https://gitea.mrixs.me/Mrixs/teapot-server.git
cd teapot-server
```
2. **Build the server:**
```bash
go build .
```
3. **Run the server:**
```bash
./teapot-server
```
4. **Access the server:** Open your web browser and navigate to `http://localhost:8080`. You should see a message about quantum fluctuations.
## Technical Details
* **Language:** Go (Golang)
* **Dependencies:** None (uses standard library only)
* **Port:** The server listens on port 8080 by default. This can be configured via command line argument `--port <port>`.
* **Error Handling:** Basic error handling is implemented to catch potential issues during startup and runtime.
## Contributing
Feel free to contribute by submitting bug reports or feature requests. Pull requests are welcome!
## License
This project is licensed under the [WTFPL License](LICENSE.md). See the `LICENSE` file for details.
+3
View File
@@ -0,0 +1,3 @@
module mrixs.me/teapot-server
go 1.24.1
+34
View File
@@ -0,0 +1,34 @@
package main
import (
"flag"
"fmt"
"io/ioutil"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
// Read the HTML content from the file
content, err := ioutil.ReadFile("teapot.html")
if err != nil {
http.Error(w, "Internal Server Error: Could not read HTML file", http.StatusInternalServerError)
log.Println("Error reading HTML file:", err)
return
}
// Write the content to the response writer
w.WriteHeader(http.StatusTeapot) // Set the 418 status code
fmt.Fprintf(w, string(content)) //Write the entire content as a string
}
func main() {
portPtr := flag.Int("port", 8080, "Port to listen on")
flag.Parse()
port := *portPtr // Dereference the pointer
fmt.Printf("Server listening on port %d...\n", port)
http.HandleFunc("/", handler) // Register the handler for all requests on root path "/"
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil))
}
+68
View File
@@ -0,0 +1,68 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Портал к чайнику открылся! 🚀</title>
<style>
body,
html {
height: 100%;
margin: 0;
font-family: "Arial", sans-serif;
display: flex;
justify-content: center;
align-items: center;
background-color: #1a2c44; /* темно-синий фон */
}
.container {
text-align: center;
max-width: 600px;
color: #e0e0ff; /* светло-голубой текст для контраста */
background-color: rgba(
25,
39,
66,
0.85
); /* темно-серый с прозрачностью для фона */
padding: 20px;
border-radius: 10px;
}
h1 {
font-size: 2em;
color: #f0e68c; /* цвет ананаса, чтобы добавить яркости */
}
p {
line-height: 1.6;
}
img {
width: 480px;
margin-top: 20px;
border: 0px solid #f0e68c; /* граница в цвете ананаса для контраста */
}
</style>
</head>
<body>
<div class="container">
<h1>Ошибка 418: Я - чайник</h1>
<p>
Похоже, в результате квантового скачка вы обратились не к
серверу, а к параллельной вселенной, где чайники — это основное
информационное устройство.
</p>
<img
src="data:image/png;base64,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 truncated
alt="Чайник"
/>
<p>
Попробуйте снова, и может вам повезет — вы найдёте путь назад к
серверу!
</p>
<p>
<small
>*Спасибо за ваше терпение. Мы работаем над устранением
этого "квантового скачка".</small
>
</p>
</div>
</body>
</html>