diff options
| -rw-r--r-- | rwhois/main.go | 53 | 
1 files changed, 53 insertions, 0 deletions
diff --git a/rwhois/main.go b/rwhois/main.go new file mode 100644 index 0000000..e0ffbc8 --- /dev/null +++ b/rwhois/main.go @@ -0,0 +1,53 @@ +package main + +import ( +	"bufio" +	"fmt" +	"log" +	"net" +	"strings" +) + +const RWhoisPort = "4321" + +func handleConnection(conn net.Conn) { +	defer conn.Close() + +	reader := bufio.NewReader(conn) +	query, err := reader.ReadString('\n') +	if err != nil { +		log.Printf("Error reading query: %v", err) +		return +	} +	query = strings.TrimSpace(query) +	log.Printf("Received query: %s", query) + +	// In a real RWhois server, you would parse the query, +	// look up data, and potentially issue referrals. +	// For this example, we'll send a simple response. +	response := fmt.Sprintf("RWhois response for: %s\n", query) +	_, err = conn.Write([]byte(response)) +	if err != nil { +		log.Printf("Error writing response: %v", err) +		return +	} +} + +func main() { +	listener, err := net.Listen("tcp", ":"+RWhoisPort) +	if err != nil { +		log.Fatalf("Error listening: %v", err) +	} +	defer listener.Close() + +	log.Printf("RWhois server listening on port %s", RWhoisPort) + +	for { +		conn, err := listener.Accept() +		if err != nil { +			log.Printf("Error accepting connection: %v", err) +			continue +		} +		go handleConnection(conn) +	} +}  | 
