aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsalaaad2 <arthurdurant263@gmail.com>2022-04-01 22:58:13 +0200
committersalaaad2 <arthurdurant263@gmail.com>2022-04-01 22:58:13 +0200
commit1758ce649422255bd2faf482c02be71ce0783865 (patch)
treec4faa014bd905a949f5c563fa91d148dacea4888
parenthehe (diff)
downloadsmith-1758ce649422255bd2faf482c02be71ce0783865.tar.gz
smith-1758ce649422255bd2faf482c02be71ce0783865.tar.bz2
smith-1758ce649422255bd2faf482c02be71ce0783865.tar.xz
smith-1758ce649422255bd2faf482c02be71ce0783865.tar.zst
smith-1758ce649422255bd2faf482c02be71ce0783865.zip
signing requests
Diffstat (limited to '')
-rw-r--r--csrc/smith.h2
-rw-r--r--go.mod1
-rw-r--r--gosrc/main.go10
-rw-r--r--gosrc/pipes.go107
-rw-r--r--gosrc/requests.go23
-rw-r--r--sample_config.json5
6 files changed, 142 insertions, 6 deletions
diff --git a/csrc/smith.h b/csrc/smith.h
index 04015ee..489c053 100644
--- a/csrc/smith.h
+++ b/csrc/smith.h
@@ -9,6 +9,8 @@
#ifndef SMITH_H_
#define SMITH_H_
+#include <unistd.h>
+
char * mr_smith();
#endif // SMITH_H_
diff --git a/go.mod b/go.mod
index be00a15..8cfe057 100644
--- a/go.mod
+++ b/go.mod
@@ -3,6 +3,7 @@ module smith
go 1.16
require (
+ github.com/ebuchman/go-shell-pipes v0.0.0-20150412091402-83e132480862 // indirect
github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1 // indirect
github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8
)
diff --git a/gosrc/main.go b/gosrc/main.go
index 27cec39..9923d09 100644
--- a/gosrc/main.go
+++ b/gosrc/main.go
@@ -11,6 +11,7 @@ import (
"fmt"
"io/ioutil"
"log"
+ "os"
)
// #include "../csrc/smith.h"
@@ -28,6 +29,12 @@ func main() {
"\nI will try to help you get the bag...")
config_path := "./config.json"
+ for i, a := range os.Args[1:] {
+ if a == "-c" || a == "--config" {
+ config_path = os.Args[i + 2]
+ }
+ }
+
config_content, err := ioutil.ReadFile(config_path)
if err != nil {
log.Fatal("config file not found")
@@ -35,7 +42,6 @@ func main() {
var config Config
err = json.Unmarshal(config_content, &config)
-
if err != nil {
log.Fatal("error during marshall() ", err)
}
@@ -44,4 +50,6 @@ func main() {
Styles.colorBlue + "public_key: " + Styles.colorReset + config.Public_key + "\n" +
Styles.colorBlue + "secret_key: " + Styles.colorReset + config.Secret_key + "\n" +
Styles.colorBlue + "mirror: " + Styles.colorReset + config.Mirror)
+
+ make_body("qwe", "qwe", "qwe")
}
diff --git a/gosrc/pipes.go b/gosrc/pipes.go
new file mode 100644
index 0000000..f668821
--- /dev/null
+++ b/gosrc/pipes.go
@@ -0,0 +1,107 @@
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os/exec"
+ "strings"
+)
+
+// Convert a shell command with a series of pipes into
+// correspondingly piped list of *exec.Cmd
+// If an arg has spaces, this will fail
+func RunString(s string) (string, error) {
+ buf := bytes.NewBuffer([]byte{})
+ sp := strings.Split(s, "|")
+ cmds := make([]*exec.Cmd, len(sp))
+ // create the commands
+ for i, c := range sp {
+ cs := strings.Split(strings.TrimSpace(c), " ")
+ cmd := cmdFromStrings(cs)
+ cmds[i] = cmd
+ }
+
+ cmds = AssemblePipes(cmds, nil, buf)
+ if err := RunCmds(cmds); err != nil {
+ return "", err
+ }
+
+ b := buf.Bytes()
+ return string(b), nil
+}
+
+func cmdFromStrings(cs []string) *exec.Cmd {
+ if len(cs) == 1 {
+ return exec.Command(cs[0])
+ } else if len(cs) == 2 {
+ return exec.Command(cs[0], cs[1])
+ }
+ return exec.Command(cs[0], cs[1:]...)
+}
+
+// Convert sequence of tokens into commands,
+// using "|" as a delimiter
+func RunStrings(tokens ...string) (string, error) {
+ if len(tokens) == 0 {
+ return "", nil
+ }
+ buf := bytes.NewBuffer([]byte{})
+ cmds := []*exec.Cmd{}
+ args := []string{}
+ // accumulate tokens until a |
+ for _, t := range tokens {
+ if t != "|" {
+ args = append(args, t)
+ } else {
+ cmds = append(cmds, cmdFromStrings(args))
+ args = []string{}
+ }
+ }
+ cmds = append(cmds, cmdFromStrings(args))
+ cmds = AssemblePipes(cmds, nil, buf)
+ if err := RunCmds(cmds); err != nil {
+ return "", fmt.Errorf("%s; %s", err.Error(), string(buf.Bytes()))
+ }
+
+ b := buf.Bytes()
+ return string(b), nil
+}
+
+// Pipe stdout of each command into stdin of next
+func AssemblePipes(cmds []*exec.Cmd, stdin io.Reader, stdout io.Writer) []*exec.Cmd {
+ cmds[0].Stdin = stdin
+ cmds[0].Stderr = stdout
+ // assemble pipes
+ for i, c := range cmds {
+ if i < len(cmds)-1 {
+ cmds[i+1].Stdin, _ = c.StdoutPipe()
+ cmds[i+1].Stderr = stdout
+ } else {
+ c.Stdout = stdout
+ c.Stderr = stdout
+ }
+ }
+ return cmds
+}
+
+// Run series of piped commands
+func RunCmds(cmds []*exec.Cmd) error {
+ // start processes in descending order
+ for i := len(cmds) - 1; i > 0; i-- {
+ if err := cmds[i].Start(); err != nil {
+ return err
+ }
+ }
+ // run the first process
+ if err := cmds[0].Run(); err != nil {
+ return err
+ }
+ // wait on processes in ascending order
+ for i := 1; i < len(cmds); i++ {
+ if err := cmds[i].Wait(); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/gosrc/requests.go b/gosrc/requests.go
new file mode 100644
index 0000000..4e94533
--- /dev/null
+++ b/gosrc/requests.go
@@ -0,0 +1,23 @@
+package main
+
+import (
+ "fmt"
+ "log"
+)
+
+func sign_request(body string, key string) {
+ fmt.Println("signing request : ", body)
+
+ out2, err := RunStrings("/usr/bin/echo", "-n", body, "|", "/usr/bin/openssl", "dgst", "-sha256", "-hmac", key)
+ if err != nil {
+ log.Fatal("hwhat")
+ }
+
+ fmt.Println(out2)
+ // here
+}
+
+func make_body(order string, ticker string, price string) {
+ ret := "GET /sapi/v1/capital/config/getall"
+ sign_request(ret, "heheheheh")
+}
diff --git a/sample_config.json b/sample_config.json
deleted file mode 100644
index db566fb..0000000
--- a/sample_config.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "public_key": "lol",
- "secret_key": "hehe",
- "mirror": "api.binance.com"
-}