mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 05:11:06 +02:00
Refactor works
This commit is contained in:
parent
86b12a3770
commit
eae21303f2
4 changed files with 314 additions and 217 deletions
92
main.go
92
main.go
|
@ -4,87 +4,39 @@ import (
|
|||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
const BUFFERSIZE = 1024
|
||||
const numberConnections = 4
|
||||
|
||||
// Build flags
|
||||
var server, file string
|
||||
|
||||
// Global varaibles
|
||||
var serverAddress, fileName, codePhraseFlag, connectionTypeFlag string
|
||||
var runAsRelay, debugFlag, dontEncrypt bool
|
||||
var fileSalt, fileIV, fileHash string
|
||||
var fileBytes []byte
|
||||
type Flags struct {
|
||||
Relay bool
|
||||
Debug bool
|
||||
DontEncrypt bool
|
||||
Server string
|
||||
File string
|
||||
Code string
|
||||
NumberOfConnections int
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.BoolVar(&runAsRelay, "relay", false, "run as relay")
|
||||
flag.BoolVar(&debugFlag, "debug", false, "debug mode")
|
||||
flag.StringVar(&serverAddress, "server", "cowyo.com", "address of relay server")
|
||||
flag.StringVar(&fileName, "send", "", "file to send")
|
||||
flag.StringVar(&codePhraseFlag, "code", "", "use your own code phrase")
|
||||
flag.BoolVar(&dontEncrypt, "no-encrypt", false, "turn off encryption")
|
||||
flags := new(Flags)
|
||||
flag.BoolVar(&flags.Relay, "relay", false, "run as relay")
|
||||
flag.BoolVar(&flags.Debug, "debug", false, "debug mode")
|
||||
flag.StringVar(&flags.Server, "server", "cowyo.com", "address of relay server")
|
||||
flag.StringVar(&flags.File, "send", "", "file to send")
|
||||
flag.StringVar(&flags.Code, "code", "", "use your own code phrase")
|
||||
flag.BoolVar(&flags.DontEncrypt, "no-encrypt", false, "turn off encryption")
|
||||
flag.IntVar(&flags.NumberOfConnections, "threads", 4, "number of threads to use")
|
||||
flag.Parse()
|
||||
// Check build flags too, which take precedent
|
||||
if server != "" {
|
||||
serverAddress = server
|
||||
}
|
||||
if file != "" {
|
||||
fileName = file
|
||||
}
|
||||
|
||||
if len(fileName) > 0 {
|
||||
connectionTypeFlag = "s" // sender
|
||||
if flags.Relay {
|
||||
r := NewRelay(flags)
|
||||
r.Run()
|
||||
} else {
|
||||
connectionTypeFlag = "r" //receiver
|
||||
}
|
||||
|
||||
if !runAsRelay {
|
||||
if len(codePhraseFlag) == 0 {
|
||||
if connectionTypeFlag == "r" {
|
||||
codePhraseFlag = getInput("What is your code phrase? ")
|
||||
}
|
||||
if len(codePhraseFlag) < 5 {
|
||||
codePhraseFlag = GetRandomName()
|
||||
fmt.Println("Your code phrase is now " + codePhraseFlag)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if connectionTypeFlag == "s" {
|
||||
// encrypt the file
|
||||
fmt.Println("encrypting...")
|
||||
fdata, err := ioutil.ReadFile(fileName)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return
|
||||
}
|
||||
fileBytes, fileSalt, fileIV = Encrypt(fdata, codePhraseFlag)
|
||||
fileHash = HashBytes(fdata)
|
||||
if debugFlag {
|
||||
ioutil.WriteFile(fileName+".encrypted", fileBytes, 0644)
|
||||
}
|
||||
}
|
||||
|
||||
log.SetFormatter(&log.TextFormatter{})
|
||||
if debugFlag {
|
||||
log.SetLevel(log.DebugLevel)
|
||||
} else {
|
||||
log.SetLevel(log.WarnLevel)
|
||||
}
|
||||
|
||||
if runAsRelay {
|
||||
runServer()
|
||||
} else if len(serverAddress) != 0 {
|
||||
runClient(connectionTypeFlag, codePhraseFlag)
|
||||
} else {
|
||||
fmt.Println("You must specify either -file (for running as a server) or -server (for running as a client)")
|
||||
c := NewConnection(flags)
|
||||
c.Run()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue