Clean up code and add config
This commit is contained in:
		@@ -1,6 +0,0 @@
 | 
				
			|||||||
version: '1'
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  build:
 | 
					 | 
				
			||||||
    image: golang:latest
 | 
					 | 
				
			||||||
    script:
 | 
					 | 
				
			||||||
      - go build
 | 
					 | 
				
			||||||
@@ -13,7 +13,7 @@ import (
 | 
				
			|||||||
type Config struct {
 | 
					type Config struct {
 | 
				
			||||||
	Receiver ReceiverConfig
 | 
						Receiver ReceiverConfig
 | 
				
			||||||
	Sender SenderConfig
 | 
						Sender SenderConfig
 | 
				
			||||||
	Targets  map[string]map[string]string
 | 
						Targets map[string]Target
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Config section for receiver
 | 
					// Config section for receiver
 | 
				
			||||||
@@ -28,6 +28,10 @@ type SenderConfig struct {
 | 
				
			|||||||
	WorkDir string `toml:"workingDirectory"`
 | 
						WorkDir string `toml:"workingDirectory"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Target struct {
 | 
				
			||||||
 | 
						IP string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Attempt to find config path
 | 
					// Attempt to find config path
 | 
				
			||||||
func GetConfigPath() string {
 | 
					func GetConfigPath() string {
 | 
				
			||||||
	// Use ConsoleWriter logger
 | 
						// Use ConsoleWriter logger
 | 
				
			||||||
@@ -86,5 +90,5 @@ func (config *Config) SetDefaults() {
 | 
				
			|||||||
	// Set sender working directory to $HOME/.opensend
 | 
						// Set sender working directory to $HOME/.opensend
 | 
				
			||||||
	config.Sender.WorkDir = ExpandPath("~/.opensend")
 | 
						config.Sender.WorkDir = ExpandPath("~/.opensend")
 | 
				
			||||||
	// Set targets to an empty map[string]map[string]string
 | 
						// Set targets to an empty map[string]map[string]string
 | 
				
			||||||
	config.Targets = map[string]map[string]string{}
 | 
						config.Targets = map[string]Target{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							@@ -8,4 +8,5 @@ require (
 | 
				
			|||||||
	github.com/pelletier/go-toml v1.8.1
 | 
						github.com/pelletier/go-toml v1.8.1
 | 
				
			||||||
	github.com/pkg/browser v0.0.0-20201112035734-206646e67786
 | 
						github.com/pkg/browser v0.0.0-20201112035734-206646e67786
 | 
				
			||||||
	github.com/rs/zerolog v1.20.0
 | 
						github.com/rs/zerolog v1.20.0
 | 
				
			||||||
 | 
						github.com/spf13/pflag v1.0.5
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							@@ -19,6 +19,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 | 
				
			|||||||
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 | 
					github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
 | 
				
			||||||
github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs=
 | 
					github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs=
 | 
				
			||||||
github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
 | 
					github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
				
			||||||
 | 
					github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
					golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 | 
				
			||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
 | 
					golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										39
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								main.go
									
									
									
									
									
								
							@@ -4,7 +4,7 @@ import (
 | 
				
			|||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"crypto/rand"
 | 
						"crypto/rand"
 | 
				
			||||||
	"encoding/hex"
 | 
						"encoding/hex"
 | 
				
			||||||
	"flag"
 | 
						flag "github.com/spf13/pflag"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"github.com/rs/zerolog"
 | 
						"github.com/rs/zerolog"
 | 
				
			||||||
	"github.com/rs/zerolog/log"
 | 
						"github.com/rs/zerolog/log"
 | 
				
			||||||
@@ -23,9 +23,6 @@ func main() {
 | 
				
			|||||||
	// Use ConsoleWriter logger
 | 
						// Use ConsoleWriter logger
 | 
				
			||||||
	log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}).Hook(FatalHook{})
 | 
						log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}).Hook(FatalHook{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	confPath := GetConfigPath()
 | 
					 | 
				
			||||||
	config := NewConfig(confPath)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Create --send-to flag to send to a specific IP
 | 
						// Create --send-to flag to send to a specific IP
 | 
				
			||||||
	sendTo := flag.String("send-to", "", "Use IP address of receiver instead of mDNS")
 | 
						sendTo := flag.String("send-to", "", "Use IP address of receiver instead of mDNS")
 | 
				
			||||||
	// Create --dest-dir flag to save to a specified folder
 | 
						// Create --dest-dir flag to save to a specified folder
 | 
				
			||||||
@@ -33,28 +30,50 @@ func main() {
 | 
				
			|||||||
	workDir = flag.String("work-dir", "", "Working directory for opensend")
 | 
						workDir = flag.String("work-dir", "", "Working directory for opensend")
 | 
				
			||||||
	givenCfgPath := flag.String("config", "", "Opensend config to use")
 | 
						givenCfgPath := flag.String("config", "", "Opensend config to use")
 | 
				
			||||||
	// Create --skip-mdns to skip service registration
 | 
						// Create --skip-mdns to skip service registration
 | 
				
			||||||
	skipMdns := flag.Bool("skip-mdns", config.Receiver.SkipZeroconf, "Skip zeroconf service registration (use if mdns fails)")
 | 
						skipMdns := flag.Bool("skip-mdns", false, "Skip zeroconf service registration (use if mdns fails)")
 | 
				
			||||||
	// Create -t flag for type
 | 
						// Create -t flag for type
 | 
				
			||||||
	actionType := flag.String("t", "", "Type of data being sent")
 | 
						actionType := flag.StringP("type", "t", "", "Type of data being sent")
 | 
				
			||||||
	// Create -d flag for data
 | 
						// Create -d flag for data
 | 
				
			||||||
	actionData := flag.String("d", "", "Data to send")
 | 
						actionData := flag.StringP("data", "d", "", "Data to send")
 | 
				
			||||||
	// Create -s flag for sending
 | 
						// Create -s flag for sending
 | 
				
			||||||
	sendFlag := flag.Bool("s", false, "Send data")
 | 
						sendFlag := flag.BoolP("send", "s", false, "Send data")
 | 
				
			||||||
	// Create -r flag for receiving
 | 
						// Create -r flag for receiving
 | 
				
			||||||
	recvFlag := flag.Bool("r", false, "Receive data")
 | 
						recvFlag := flag.BoolP("receive", "r", false, "Receive data")
 | 
				
			||||||
 | 
						targetFlag := flag.StringP("target", "T", "", "Target as defined in opensend.toml")
 | 
				
			||||||
	// Parse flags
 | 
						// Parse flags
 | 
				
			||||||
	flag.Parse()
 | 
						flag.Parse()
 | 
				
			||||||
	if *givenCfgPath != "" {
 | 
					
 | 
				
			||||||
 | 
						// Declare config variable
 | 
				
			||||||
 | 
						var config *Config
 | 
				
			||||||
 | 
						// If config flag not provided
 | 
				
			||||||
 | 
						if *givenCfgPath == "" {
 | 
				
			||||||
 | 
							// Get config path
 | 
				
			||||||
 | 
							confPath := GetConfigPath()
 | 
				
			||||||
 | 
							// Read config at path
 | 
				
			||||||
 | 
							config = NewConfig(confPath)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							// Otherwise, read config at provided path
 | 
				
			||||||
		config = NewConfig(*givenCfgPath)
 | 
							config = NewConfig(*givenCfgPath)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// If work directory flag not provided
 | 
				
			||||||
	if *workDir == "" {
 | 
						if *workDir == "" {
 | 
				
			||||||
 | 
							// If send flag provided
 | 
				
			||||||
		if *sendFlag {
 | 
							if *sendFlag {
 | 
				
			||||||
 | 
								// Set work directory to sender as defined in config
 | 
				
			||||||
			*workDir = ExpandPath(config.Sender.WorkDir)
 | 
								*workDir = ExpandPath(config.Sender.WorkDir)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
 | 
								// Otherwise set work directory to receiver as defined in config
 | 
				
			||||||
			*workDir = ExpandPath(config.Receiver.WorkDir)
 | 
								*workDir = ExpandPath(config.Receiver.WorkDir)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// If target flag provided
 | 
				
			||||||
 | 
						if *targetFlag != "" {
 | 
				
			||||||
 | 
							// Set IP to target's IP
 | 
				
			||||||
 | 
							*sendTo = config.Targets[*targetFlag].IP
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Create channel for signals
 | 
						// Create channel for signals
 | 
				
			||||||
	sig := make(chan os.Signal, 1)
 | 
						sig := make(chan os.Signal, 1)
 | 
				
			||||||
	// Send message on channel upon reception of SIGINT or SIGTERM
 | 
						// Send message on channel upon reception of SIGINT or SIGTERM
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								opensend.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								opensend.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					[sender]
 | 
				
			||||||
 | 
					workingDirectory = "~/.opensend"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[receiver]
 | 
				
			||||||
 | 
					skipZeroconf = false
 | 
				
			||||||
 | 
					workingDirectory = "~/.opensend"
 | 
				
			||||||
 | 
					destinationDirectory = "~/Downloads"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[targets]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [targets.coral]
 | 
				
			||||||
 | 
					    ip = "192.168.1.2"
 | 
				
			||||||
		Reference in New Issue
	
	Block a user