From 37021f9c1422b45be6b6602867522ed8e1233d9d Mon Sep 17 00:00:00 2001 From: sewn Date: Mon, 18 Mar 2024 19:47:24 +0300 Subject: [PATCH] add the apps --- .gitignore | 4 +-- cmd/xftc/main.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ cmd/xfts/main.go | 11 ++++++++ 3 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 cmd/xftc/main.go create mode 100644 cmd/xfts/main.go diff --git a/.gitignore b/.gitignore index 0a80ae9..f670106 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -xftc -xfts +/xftc +/xfts diff --git a/cmd/xftc/main.go b/cmd/xftc/main.go new file mode 100644 index 0000000..b749eb8 --- /dev/null +++ b/cmd/xftc/main.go @@ -0,0 +1,68 @@ +package main + +import ( + "encoding/json" + "errors" + "fmt" + "net" + "os" + + "github.com/apprehensions/xfts/internal/server" +) + +func main() { + if len(os.Args) != 3 { + fmt.Fprintln(os.Stderr, "usage: %s src dest", os.Args[0]) + os.Exit(1) + } + + fi, err := os.Stat(os.Args[1]) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + + // xfiles sends EVERYTHING and ALL files to xfilesthumb + if fi.IsDir() || fi.Size() < 1 { + fmt.Println("skipping") + os.Exit(1) + } + + err = send(server.Request{ + Source: os.Args[1], + Destination: os.Args[2], + }) + if err != nil { + fmt.Fprintf(os.Stderr, "send: %s\n", err) + os.Exit(1) + } +} + +func send(r server.Request) error { + if _, err := os.Stat(r.Source); err != nil { + return err + } + + conn, err := net.Dial("unix", server.Socket) + if err != nil { + return err + } + defer conn.Close() + + if err := json.NewEncoder(conn).Encode(r); err != nil { + return err + } + + buf := make([]byte, 1024) + n, err := conn.Read(buf) + if err != nil { + return err + } + resp := string(buf[:n]) + + if _, err := os.Stat(r.Destination); err != nil { + return errors.New(resp) + } + + return nil +} diff --git a/cmd/xfts/main.go b/cmd/xfts/main.go new file mode 100644 index 0000000..6f5600c --- /dev/null +++ b/cmd/xfts/main.go @@ -0,0 +1,11 @@ +package main + +import ( + "log" + + "github.com/apprehensions/xfts/internal/server" +) + +func main() { + log.Fatal(server.Serve()) +}