Actually make them collude

This commit is contained in:
eyedeekay
2024-06-03 11:56:45 -04:00
parent 7dc6226033
commit 3fb1028286

View File

@ -3,15 +3,19 @@ package main
import (
"flag"
"fmt"
"io/ioutil"
"log"
"net"
"os"
"path/filepath"
"strings"
"time"
"github.com/eyedeekay/onramp"
)
var myaddr string
func main() {
name := flag.String("name", "", "name of node")
flag.Parse()
@ -23,22 +27,17 @@ func main() {
if err != nil {
log.Fatal(err)
}
myaddr = listener.Addr().String()
log.Println(listener.Addr().String())
os.WriteFile(filepath.Join("i2pkeys","colluder-"+*name+".public"), []byte(listener.Addr().String()), 0644)
os.WriteFile(filepath.Join("i2pkeys", "colluder-"+*name+".public"), []byte(listener.Addr().String()), 0644)
for {
conn, err := listener.Accept()
if err != nil {
log.Print(err)
}
appendLineToFile(listener.Addr().String(), conn.RemoteAddr().String()+"\n")
go func() {
log.Println("Accepted connection on: \n\t", listener.Addr().String(), "\nAccepted From: \n\t", conn.RemoteAddr().String())
os.Create(listener.Addr().String())
file, err := os.OpenFile(listener.Addr().String(), os.O_APPEND, 0644)
if err != nil {
log.Print(err)
}
file.Write([]byte(conn.RemoteAddr().String()+"\n"))
file.Close()
handleRequest(conn)
}()
}
@ -46,8 +45,55 @@ func main() {
func handleRequest(conn net.Conn) {
time := time.Now().Format(time.ANSIC)
responseStr := fmt.Sprintf("HTTP/1.1 200 OK\r, Content-Length: 12\r\n\r\nYour base32 is: %v. Received time: %v\r\n", conn.RemoteAddr().String(), time)
log.Println(responseStr)
found, err := findInB32Files(conn.RemoteAddr().String())
if err != nil {
log.Println(err)
}
responseStr := fmt.Sprintf("HTTP/1.1 200 OK\r, Content-Length: 12\r\n\r\nYour base32 is: %v. Received time: %v\r\n %v\n", conn.RemoteAddr().String(), time, found)
conn.Write([]byte(responseStr))
conn.Close()
}
func appendLineToFile(filename string, line string) error {
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
return err
}
_, err = f.WriteString(line)
if err != nil {
return err
}
return f.Close()
}
func listAllB32Files() []string {
files, err := ioutil.ReadDir("./")
if err != nil {
log.Fatal(err)
}
var b32files []string
for _, file := range files {
if strings.HasSuffix(file.Name(), ".b32.i2p") {
b32files = append(b32files, file.Name())
}
}
return b32files
}
func findInB32Files(query string) (string, error) {
b32Files := listAllB32Files()
rval := ""
for _, file := range b32Files {
if file == myaddr {
continue
}
content, err := ioutil.ReadFile(file)
if err != nil {
return "Colluder encountered a problem", nil
}
if strings.Contains(string(content), query) {
rval = "My friend " + filepath.Base(file) + "also saw you recently\n"
}
}
return rval, nil
}