1
1
Fork 0
mirror of https://github.com/schollz/croc.git synced 2025-10-11 05:11:06 +02:00

Refactor works

This commit is contained in:
Zack Scholl 2017-10-18 07:05:48 -06:00
parent 86b12a3770
commit eae21303f2
4 changed files with 314 additions and 217 deletions

92
main.go
View file

@ -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()
}
}