From 77b64d737894e9ae5be8275fa1b49e21357231dd Mon Sep 17 00:00:00 2001 From: rouggy Date: Wed, 28 Aug 2024 10:56:58 +0700 Subject: [PATCH] first commit --- RaceNotifier.go | 123 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 RaceNotifier.go diff --git a/RaceNotifier.go b/RaceNotifier.go new file mode 100644 index 0000000..47c504e --- /dev/null +++ b/RaceNotifier.go @@ -0,0 +1,123 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "net" + "os" +) + +type Race struct { + Id int `json:"id"` + Hash string `json:"hash"` + Name string `json:"name"` + Category string `json:"category"` + Content_Path string `json:"content_path"` + Root_Path string `json:"root_path"` + Save_Path string `json:"save_path"` + Size string `json:"size"` + Files string `json:"files"` +} + +type PreRace struct { + Name string `json:"name"` + Indexer string `json:"indexer"` +} + +func main() { + + file, err := os.OpenFile("racer.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777) + if err != nil { + log.Fatal(err) + } + // wrt := io.MultiWriter(os.Stdout, file) + log.SetOutput(file) + defer file.Close() + + log.Println("Starting Program") + + if len(os.Args) == 0 { + log.Println("Program launched without args") + os.Exit(0) + } + + if len(os.Args) == 1 { + log.Println("Program launched with 1 arg") + os.Exit(0) + } + + if len(os.Args) == 2 { + log.Println("Program launched with 2 arg") + os.Exit(0) + } + + if len(os.Args) == 3 { + log.Println("Program launched with 3 arg") + os.Exit(0) + } + + if os.Args[1] == "PreRace" || os.Args[1] == "Prerace" || os.Args[1] == "prerace" { + + // This is a pre race, need to find all the details of the release + log.Printf("[PreRace] Prerace launched with details %v, %v, %v", os.Args[1], os.Args[2], os.Args[3]) + r := PreRace{Name: os.Args[2], Indexer: os.Args[3]} + + tcpAddr, err := net.ResolveTCPAddr("tcp", "212.7.203.107:3000") + if err != nil { + log.Fatal("Could not parse IP address:", err) + } + conn, err := net.DialTCP("tcp", nil, tcpAddr) + if err != nil { + log.Fatal("Could not connect:", err) + } + + defer conn.Close() + + _, err = conn.Write([]byte(r.Indexer + " " + r.Name)) + if err != nil { + log.Fatal("Could not send message: ", err) + } + log.Println("Message sent...") + + os.Exit(0) + + } else if os.Args[1] == "test" { + for n, args := range os.Args { + log.Println("Arg", n, "->", args) + } + + } else { + // This is the race thus the torrent has finished downloading. + r := Race{Name: os.Args[1], Category: os.Args[2], Content_Path: os.Args[3], Root_Path: os.Args[4], Save_Path: os.Args[5], Hash: os.Args[6], Size: os.Args[7], Files: os.Args[8]} + data, err := json.Marshal(r) + + if err != nil { + fmt.Println(err) + } + + err = os.WriteFile("test.json", data, 0644) + if err != nil { + log.Fatal(err) + } + + tcpAddr, err := net.ResolveTCPAddr("tcp", "212.7.203.107:3000") + if err != nil { + log.Fatal("Could not parse IP address:", err) + } + conn, err := net.DialTCP("tcp", nil, tcpAddr) + if err != nil { + log.Fatal("Could not connect:", err) + } + + defer conn.Close() + + _, err = conn.Write([]byte(data)) + if err != nil { + log.Fatal("Could not send message: ", err) + } + + os.Exit(0) + + } +}