chore(deps): implement github.com/qdm12/golibs/command locally (#2418)
This commit is contained in:
14
internal/openvpn/interfaces.go
Normal file
14
internal/openvpn/interfaces.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package openvpn
|
||||
|
||||
import "os/exec"
|
||||
|
||||
type CmdStarter interface {
|
||||
Start(cmd *exec.Cmd) (
|
||||
stdoutLines, stderrLines <-chan string,
|
||||
waitError <-chan error, startErr error)
|
||||
}
|
||||
|
||||
type CmdRunStarter interface {
|
||||
Run(cmd *exec.Cmd) (output string, err error)
|
||||
CmdStarter
|
||||
}
|
||||
@@ -2,19 +2,18 @@ package openvpn
|
||||
|
||||
import (
|
||||
"github.com/qdm12/gluetun/internal/constants/openvpn"
|
||||
"github.com/qdm12/golibs/command"
|
||||
)
|
||||
|
||||
type Configurator struct {
|
||||
logger Infoer
|
||||
cmder command.RunStarter
|
||||
cmder CmdRunStarter
|
||||
configPath string
|
||||
authFilePath string
|
||||
askPassPath string
|
||||
puid, pgid int
|
||||
}
|
||||
|
||||
func New(logger Infoer, cmder command.RunStarter,
|
||||
func New(logger Infoer, cmder CmdRunStarter,
|
||||
puid, pgid int) *Configurator {
|
||||
return &Configurator{
|
||||
logger: logger,
|
||||
|
||||
@@ -4,16 +4,15 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||
"github.com/qdm12/golibs/command"
|
||||
)
|
||||
|
||||
type Runner struct {
|
||||
settings settings.OpenVPN
|
||||
starter command.Starter
|
||||
starter CmdStarter
|
||||
logger Logger
|
||||
}
|
||||
|
||||
func NewRunner(settings settings.OpenVPN, starter command.Starter,
|
||||
func NewRunner(settings settings.OpenVPN, starter CmdStarter,
|
||||
logger Logger) *Runner {
|
||||
return &Runner{
|
||||
starter: starter,
|
||||
@@ -37,12 +36,10 @@ func (r *Runner) Run(ctx context.Context, errCh chan<- error, ready chan<- struc
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
<-waitError
|
||||
close(waitError)
|
||||
streamCancel()
|
||||
<-streamDone
|
||||
errCh <- ctx.Err()
|
||||
case err := <-waitError:
|
||||
close(waitError)
|
||||
streamCancel()
|
||||
<-streamDone
|
||||
errCh <- err
|
||||
|
||||
@@ -8,7 +8,6 @@ import (
|
||||
"syscall"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/constants/openvpn"
|
||||
"github.com/qdm12/golibs/command"
|
||||
)
|
||||
|
||||
var ErrVersionUnknown = errors.New("OpenVPN version is unknown")
|
||||
@@ -18,8 +17,8 @@ const (
|
||||
binOpenvpn26 = "openvpn2.6"
|
||||
)
|
||||
|
||||
func start(ctx context.Context, starter command.Starter, version string, flags []string) (
|
||||
stdoutLines, stderrLines chan string, waitError chan error, err error) {
|
||||
func start(ctx context.Context, starter CmdStarter, version string, flags []string) (
|
||||
stdoutLines, stderrLines <-chan string, waitError <-chan error, err error) {
|
||||
var bin string
|
||||
switch version {
|
||||
case openvpn.Openvpn25:
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
)
|
||||
|
||||
func streamLines(ctx context.Context, done chan<- struct{},
|
||||
logger Logger, stdout, stderr chan string,
|
||||
logger Logger, stdout, stderr <-chan string,
|
||||
tunnelReady chan<- struct{}) {
|
||||
defer close(done)
|
||||
|
||||
@@ -16,10 +16,6 @@ func streamLines(ctx context.Context, done chan<- struct{},
|
||||
errLine := false
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
// Context should only be canceled after stdout and stderr are done
|
||||
// being written to.
|
||||
close(stdout)
|
||||
close(stderr)
|
||||
return
|
||||
case line = <-stdout:
|
||||
case line = <-stderr:
|
||||
|
||||
Reference in New Issue
Block a user