commit 8915771c4ecd932190218331e3c7d3187b9a3c91 Author: Lain Iwakura Date: Sat Jul 12 00:28:31 2025 +0300 first commit diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..0ffd1e2 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/cryptexctl/gbio + +go 1.24.4 + +require github.com/gorilla/websocket v1.5.3 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..25a9fc4 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= diff --git a/main.go b/main.go new file mode 100644 index 0000000..7668262 --- /dev/null +++ b/main.go @@ -0,0 +1,153 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "sync" + "time" + + "github.com/gorilla/websocket" +) + +var upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +type KeyPress struct { + Key string `json:"key"` +} + +func wsHandler(w http.ResponseWriter, r *http.Request) { + conn, err := upgrader.Upgrade(w, r, nil) + if err != nil { + log.Printf("WebSocket upgrade error: %v", err) + return + } + defer conn.Close() + + var buffer string + var lastPress time.Time + + for { + var keyPress KeyPress + err := conn.ReadJSON(&keyPress) + if err != nil { + break + } + + now := time.Now() + if now.Sub(lastPress) > 5*time.Second { + buffer = "" + } + lastPress = now + + buffer += keyPress.Key + + if len(buffer) > 20 { + buffer = buffer[len(buffer)-20:] + } + + if buffer == "lain" { + conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://fauux.neocities.org"}) + buffer = "" + } else if buffer == "rabbit" { + conn.WriteJSON(map[string]string{"action": "show_message", "message": "wake up, Neo"}) + buffer = "" + } + } +} + +func handler(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + + query := r.URL.Query().Get("q") + + if query == "lain" { + http.Redirect(w, r, "https://fauux.neocities.org", http.StatusFound) + return + } + + html := ` + + + + 0BSD_FOR_EVERYONE + + + + 0BSD_FOR_EVERYONE +
wake up, Neo
+ + + +` + fmt.Fprint(w, html) +} + +func main() { + ports := []string{"1337", "1488", "13373", "33737", "25575", "80", "8080"} + + var wg sync.WaitGroup + + for _, port := range ports { + wg.Add(1) + go func(p string) { + defer wg.Done() + mux := http.NewServeMux() + mux.HandleFunc("/", handler) + mux.HandleFunc("/ws", wsHandler) + log.Printf("Сервер запущен на порту %s", p) + if err := http.ListenAndServe(":"+p, mux); err != nil { + log.Printf("Ошибка на порту %s: %v", p, err) + } + }(port) + } + + wg.Wait() +}