diff --git a/build/scripts/setup/service.d/user-service/debian/setup-user-service.sh b/build/scripts/setup/service.d/user-service/debian/setup-user-service.sh index 98d262b..93739aa 100644 --- a/build/scripts/setup/service.d/user-service/debian/setup-user-service.sh +++ b/build/scripts/setup/service.d/user-service/debian/setup-user-service.sh @@ -21,5 +21,5 @@ systemctl daemon-reload echo "Enabling service..." systemctl enable --force --no-ask-password "${APP_NAME}.service" -echo "Starting service..." -systemctl start --force --no-ask-password "${APP_NAME}.service" +#echo "Starting service..." +#systemctl start --force --no-ask-password "${APP_NAME}.service" diff --git a/build/sysroot/usr/lib/systemd/system/casaos-user-service.service b/build/sysroot/usr/lib/systemd/system/casaos-user-service.service index 4a46e82..41f6325 100644 --- a/build/sysroot/usr/lib/systemd/system/casaos-user-service.service +++ b/build/sysroot/usr/lib/systemd/system/casaos-user-service.service @@ -4,9 +4,11 @@ ConditionFileNotEmpty=/etc/casaos/user-service.conf Description=CasaOS User Service [Service] +ExecStartPre=/usr/bin/casaos-user-service -v ExecStart=/usr/bin/casaos-user-service -c /etc/casaos/user-service.conf PIDFile=/var/run/casaos/user-service.pid Restart=always +Type=notify [Install] WantedBy=multi-user.target diff --git a/go.mod b/go.mod index a112453..191245f 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.19 require ( github.com/IceWhaleTech/CasaOS-Common v0.0.0-20220901034123-ca130f6b5ce9 github.com/IceWhaleTech/CasaOS-Gateway v0.3.6 + github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf github.com/gin-contrib/gzip v0.0.6 github.com/gin-gonic/gin v1.8.1 github.com/satori/go.uuid v1.2.0 @@ -59,6 +60,8 @@ require ( github.com/ulikunitz/xz v0.5.9 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect go.uber.org/atomic v1.9.0 // indirect + go.uber.org/dig v1.14.0 // indirect + go.uber.org/fx v1.17.1 // indirect go.uber.org/multierr v1.8.0 // indirect golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect golang.org/x/net v0.0.0-20220726230323-06994584191e // indirect diff --git a/go.sum b/go.sum index 2ff75d7..1d1c547 100644 --- a/go.sum +++ b/go.sum @@ -43,6 +43,8 @@ github.com/IceWhaleTech/CasaOS-Common v0.0.0-20220901034123-ca130f6b5ce9 h1:q4I/ github.com/IceWhaleTech/CasaOS-Common v0.0.0-20220901034123-ca130f6b5ce9/go.mod h1:2MiivEMzvh41codhEKUcn46WK3Ffesop/04qa9jsvQk= github.com/IceWhaleTech/CasaOS-Gateway v0.3.6 h1:2tQQo85+jzbbjqIsKKn77QlAA73bc7vZsVCFvWnK4mg= github.com/IceWhaleTech/CasaOS-Gateway v0.3.6/go.mod h1:hnZwGUzcOyiufMpVO7l3gu2gAm6Ws4TY4Nlj3kMshXA= +github.com/IceWhaleTech/CasaOS-Gateway v0.3.7-0.20220906162414-f612e28aa31e h1:+I3ozIDXV+XC2afZ8vwK+EI5UTgPln1c1joZgQlD9Mk= +github.com/IceWhaleTech/CasaOS-Gateway v0.3.7-0.20220906162414-f612e28aa31e/go.mod h1:N4nEyNgJ9RzSCWHStLSgQhHt3uua2Vnn+CP8fY3j6Kg= github.com/andybalholm/brotli v1.0.1 h1:KqhlKozYbRtJvsPrrEeXcO+N2l6NYT5A2QAFmSULpEc= github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -56,6 +58,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU= +github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -284,6 +288,10 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/dig v1.14.0 h1:VmGvIH45/aapXPQkaOrK5u4B5B7jxZB98HM/utx0eME= +go.uber.org/dig v1.14.0/go.mod h1:jHAn/z1Ld1luVVyGKOAIFYz/uBFqKjjEEdIqVAqfQ2o= +go.uber.org/fx v1.17.1 h1:S42dZ6Pok8hQ3jxKwo6ZMYcCgHQA/wAS/gnpRa1Pksg= +go.uber.org/fx v1.17.1/go.mod h1:yO7KN5rhlARljyo4LR047AjaV6J+KFzd/Z7rnTbEn0A= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= diff --git a/main.go b/main.go index dc49ed7..e410fcd 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,7 @@ import ( "github.com/IceWhaleTech/CasaOS-UserService/pkg/utils/random" "github.com/IceWhaleTech/CasaOS-UserService/route" "github.com/IceWhaleTech/CasaOS-UserService/service" + "github.com/coreos/go-systemd/daemon" "go.uber.org/zap" ) @@ -84,6 +85,14 @@ func main() { panic(err) } + if supported, err := daemon.SdNotify(false, daemon.SdNotifyReady); err != nil { + logger.Error("Failed to notify systemd that user service is ready", zap.Any("error", err)) + } else if supported { + logger.Info("Notified systemd that user service is ready") + } else { + logger.Info("This process is not running as a systemd service.") + } + logger.Info("User service is listening...", zap.Any("address", listener.Addr().String())) err = http.Serve(listener, r) if err != nil {