package main import ( "compress/gzip" "encoding/base64" "fmt" "io" "log" "net/http" "os" "strings" "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"` } type RateLimiter struct { connections map[string]int messages map[string]time.Time mutex sync.RWMutex } var limiter = &RateLimiter{ connections: make(map[string]int), messages: make(map[string]time.Time), } var trollingGifBase64 string var trollingHTML string var trollingHTMLOnce sync.Once var curpingFileBase64 string var curpingFileName string var curpingFileOnce sync.Once func (rl *RateLimiter) canConnect(ip string) bool { rl.mutex.Lock() defer rl.mutex.Unlock() if rl.connections[ip] >= 3 { return false } rl.connections[ip]++ return true } func (rl *RateLimiter) canSendMessage(ip string) bool { rl.mutex.Lock() defer rl.mutex.Unlock() lastMessage, exists := rl.messages[ip] if exists && time.Since(lastMessage) < 30*time.Millisecond { return false } rl.messages[ip] = time.Now() return true } func (rl *RateLimiter) disconnect(ip string) { rl.mutex.Lock() defer rl.mutex.Unlock() if rl.connections[ip] > 0 { rl.connections[ip]-- } } type gzipResponseWriter struct { io.Writer http.ResponseWriter } func (w gzipResponseWriter) Write(b []byte) (int, error) { return w.Writer.Write(b) } func gzipHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if !strings.Contains(r.Header.Get("Accept-Encoding"), "gzip") { next(w, r) return } gz := gzip.NewWriter(w) defer gz.Close() w.Header().Set("Content-Encoding", "gzip") next(gzipResponseWriter{Writer: gz, ResponseWriter: w}, r) } } func wsHandler(w http.ResponseWriter, r *http.Request) { ip := strings.Split(r.RemoteAddr, ":")[0] if !limiter.canConnect(ip) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Printf("WebSocket upgrade error: %v", err) return } conn.WriteJSON(map[string]string{"action": "show_message", "message": "You make too many requests, yk..."}) conn.Close() return } defer limiter.disconnect(ip) 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 } if !limiter.canSendMessage(ip) { conn.WriteJSON(map[string]string{"action": "show_message", "message": "You make too many requests, yk..."}) continue } 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 = "" } else if buffer == "whoareu" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://t.me/systemxplore"}) buffer = "" } else if buffer == "whoami" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://t.me/systemxplore"}) buffer = "" } else if buffer == "whoareyou" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://t.me/systemxplore"}) buffer = "" } else if buffer == "answer" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "it must be easy for you, isn't that right?"}) buffer = "" } else if buffer == "answers" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "it must be easy for you, isn't that right?"}) buffer = "" } else if buffer == "noise" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://noiseprotocol.org/"}) buffer = "" } else if buffer == "openbsd" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://openbsd.org/"}) buffer = "" } else if buffer == "linux" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "Linux sucks"}) buffer = "" } else if buffer == "mac" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "Yet another BSD-like OS"}) buffer = "" } else if buffer == "windows" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "Windows ALWAYS sucks"}) buffer = "" } else if buffer == "github" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://codeberg.org/"}) buffer = "" } else if buffer == "status" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "/status"}) buffer = "" } else if buffer == "reddit" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://www.reddit.com/r/openbsd/s/zxEkMj0uaW"}) buffer = "" } else if buffer == "intelme" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "Everything must be free, without tracking"}) buffer = "" } else if buffer == "amdpsp" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "Everything must be free, without tracking"}) buffer = "" } else if buffer == "uefi" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://www.techtarget.com/searchsecurity/news/366618102/ESET-details-UEFI-Secure-Boot-bypass-vulnerability"}) buffer = "" } else if buffer == "trolling" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "/trolling"}) buffer = "" } else if buffer == "club" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "https://t.me/+-eNzwqVM5_U5NDdi"}) buffer = "" } else if buffer == "icmp" { conn.WriteJSON(map[string]string{"action": "show_message", "message": "\"Timestamp from icmp data...\" why is there a timestamp in the echo request?"}) buffer = "" } else if buffer == "cursping" { conn.WriteJSON(map[string]string{"action": "redirect", "url": "/cursping.zip.tar.gz"}) buffer = "" } } } func initTrollingHTML() { fileContent, err := os.ReadFile("files/trolling.gif") if err != nil { log.Printf("Error reading file: %v", err) fileContent = []byte("File not found") } trollingGifBase64 = base64.StdEncoding.EncodeToString(fileContent) trollingHTML = fmt.Sprintf(`