Actually make them collude
This commit is contained in:
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user