mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-04-05 14:17:36 +03:00
Update deps
This commit is contained in:
parent
7734cc9d2a
commit
e3d5f3e6e5
70 changed files with 3113 additions and 1584 deletions
113
vendor/github.com/kardianos/service/service_upstart_linux.go
generated
vendored
113
vendor/github.com/kardianos/service/service_upstart_linux.go
generated
vendored
|
@ -8,10 +8,8 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/signal"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"text/template"
|
||||
"time"
|
||||
|
@ -21,6 +19,13 @@ func isUpstart() bool {
|
|||
if _, err := os.Stat("/sbin/upstart-udev-bridge"); err == nil {
|
||||
return true
|
||||
}
|
||||
if _, err := os.Stat("/sbin/initctl"); err == nil {
|
||||
if _, out, err := runWithOutput("/sbin/initctl", "--version"); err == nil {
|
||||
if strings.Contains(out, "initctl (upstart") {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -61,46 +66,57 @@ func (s *upstart) configPath() (cp string, err error) {
|
|||
|
||||
func (s *upstart) hasKillStanza() bool {
|
||||
defaultValue := true
|
||||
|
||||
out, err := exec.Command("/sbin/init", "--version").Output()
|
||||
if err != nil {
|
||||
version := s.getUpstartVersion()
|
||||
if version == nil {
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
re := regexp.MustCompile(`init \(upstart (\d+.\d+.\d+)\)`)
|
||||
matches := re.FindStringSubmatch(string(out))
|
||||
if len(matches) != 2 {
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
version := make([]int, 3)
|
||||
for idx, vStr := range strings.Split(matches[1], ".") {
|
||||
version[idx], err = strconv.Atoi(vStr)
|
||||
if err != nil {
|
||||
return defaultValue
|
||||
}
|
||||
}
|
||||
|
||||
maxVersion := []int{0, 6, 5}
|
||||
if versionAtMost(version, maxVersion) {
|
||||
if matches, err := versionAtMost(version, maxVersion); err != nil || matches {
|
||||
return false
|
||||
}
|
||||
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
func versionAtMost(version, max []int) bool {
|
||||
for idx, m := range max {
|
||||
v := version[idx]
|
||||
if v > m {
|
||||
return false
|
||||
}
|
||||
func (s *upstart) hasSetUIDStanza() bool {
|
||||
defaultValue := true
|
||||
version := s.getUpstartVersion()
|
||||
if version == nil {
|
||||
return defaultValue
|
||||
}
|
||||
return true
|
||||
|
||||
maxVersion := []int{1, 4, 0}
|
||||
if matches, err := versionAtMost(version, maxVersion); err != nil || matches {
|
||||
return false
|
||||
}
|
||||
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
func (s *upstart) getUpstartVersion() []int {
|
||||
_, out, err := runWithOutput("/sbin/initctl", "--version")
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
re := regexp.MustCompile(`initctl \(upstart (\d+.\d+.\d+)\)`)
|
||||
matches := re.FindStringSubmatch(out)
|
||||
if len(matches) != 2 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return parseVersion(matches[1])
|
||||
}
|
||||
|
||||
func (s *upstart) template() *template.Template {
|
||||
return template.Must(template.New("").Funcs(tf).Parse(upstartScript))
|
||||
customScript := s.Option.string(optionUpstartScript, "")
|
||||
|
||||
if customScript != "" {
|
||||
return template.Must(template.New("").Funcs(tf).Parse(customScript))
|
||||
} else {
|
||||
return template.Must(template.New("").Funcs(tf).Parse(upstartScript))
|
||||
}
|
||||
}
|
||||
|
||||
func (s *upstart) Install() error {
|
||||
|
@ -126,12 +142,16 @@ func (s *upstart) Install() error {
|
|||
|
||||
var to = &struct {
|
||||
*Config
|
||||
Path string
|
||||
HasKillStanza bool
|
||||
Path string
|
||||
HasKillStanza bool
|
||||
HasSetUIDStanza bool
|
||||
LogOutput bool
|
||||
}{
|
||||
s.Config,
|
||||
path,
|
||||
s.hasKillStanza(),
|
||||
s.hasSetUIDStanza(),
|
||||
s.Option.bool(optionLogOutput, optionLogOutputDefault),
|
||||
}
|
||||
|
||||
return s.template().Execute(f, to)
|
||||
|
@ -173,6 +193,22 @@ func (s *upstart) Run() (err error) {
|
|||
return s.i.Stop(s)
|
||||
}
|
||||
|
||||
func (s *upstart) Status() (Status, error) {
|
||||
exitCode, out, err := runWithOutput("initctl", "status", s.Name)
|
||||
if exitCode == 0 && err != nil {
|
||||
return StatusUnknown, err
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.HasPrefix(out, fmt.Sprintf("%s start/running", s.Name)):
|
||||
return StatusRunning, nil
|
||||
case strings.HasPrefix(out, fmt.Sprintf("%s stop/waiting", s.Name)):
|
||||
return StatusStopped, nil
|
||||
default:
|
||||
return StatusUnknown, ErrNotInstalled
|
||||
}
|
||||
}
|
||||
|
||||
func (s *upstart) Start() error {
|
||||
return run("initctl", "start", s.Name)
|
||||
}
|
||||
|
@ -202,7 +238,7 @@ const upstartScript = `# {{.Description}}
|
|||
start on filesystem or runlevel [2345]
|
||||
stop on runlevel [!2345]
|
||||
|
||||
{{if .UserName}}setuid {{.UserName}}{{end}}
|
||||
{{if and .UserName .HasSetUIDStanza}}setuid {{.UserName}}{{end}}
|
||||
|
||||
respawn
|
||||
respawn limit 10 5
|
||||
|
@ -215,5 +251,18 @@ pre-start script
|
|||
end script
|
||||
|
||||
# Start
|
||||
exec {{.Path}}{{range .Arguments}} {{.|cmd}}{{end}}
|
||||
script
|
||||
{{if .LogOutput}}
|
||||
stdout_log="/var/log/{{.Name}}.out"
|
||||
stderr_log="/var/log/{{.Name}}.err"
|
||||
{{end}}
|
||||
|
||||
if [ -f "/etc/sysconfig/{{.Name}}" ]; then
|
||||
set -a
|
||||
source /etc/sysconfig/{{.Name}}
|
||||
set +a
|
||||
fi
|
||||
|
||||
exec {{if and .UserName (not .HasSetUIDStanza)}}sudo -E -u {{.UserName}} {{end}}{{.Path}}{{range .Arguments}} {{.|cmd}}{{end}}{{if .LogOutput}} >> $stdout_log 2>> $stderr_log{{end}}
|
||||
end script
|
||||
`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue