Clean up code and add config
This commit is contained in:
parent
333cc4e195
commit
82028213cf
@ -1,6 +0,0 @@
|
|||||||
version: '1'
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
image: golang:latest
|
|
||||||
script:
|
|
||||||
- go build
|
|
14
config.go
14
config.go
@ -12,15 +12,15 @@ import (
|
|||||||
// Struct for unmarshaling of opensend TOML configs
|
// Struct for unmarshaling of opensend TOML configs
|
||||||
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
|
||||||
type ReceiverConfig struct {
|
type ReceiverConfig struct {
|
||||||
DestDir string `toml:"destinationDirectory"`
|
DestDir string `toml:"destinationDirectory"`
|
||||||
SkipZeroconf bool
|
SkipZeroconf bool
|
||||||
WorkDir string `toml:"workingDirectory"`
|
WorkDir string `toml:"workingDirectory"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config section for sender
|
// Config section for sender
|
||||||
@ -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