Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 7 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
PREFIX = /usr
DAEMON_LIBDIR ?= ${PREFIX}/lib/deepin-daemon
GOPATH_DIR = gopath
GOPKG_PREFIX = github.com/linuxdeepin/dde-daemon
GOBUILD = go build $(GO_BUILD_FLAGS)
Expand Down Expand Up @@ -142,7 +141,7 @@ clean-po:
mv "$$po.tmp" "$$po"; \
done

POLICIES=accounts grub2 daemon.system hardware-control
POLICIES=accounts grub2 daemon.system
ts:
for i in $(POLICIES); do \
deepin-policy-ts-convert policy2ts misc/polkit-action/org.deepin.dde.$$i.policy.in misc/ts/org.deepin.dde.$$i.policy; \
Expand All @@ -164,19 +163,8 @@ print_gopath: prepare
GOPATH="${CURDIR}/${GOPATH_DIR}:${GOPATH}"

install: build install-dde-data install-icons
mkdir -pv ${DESTDIR}${DAEMON_LIBDIR}
cp -f out/bin/* ${DESTDIR}${DAEMON_LIBDIR}/

rm -f ${DESTDIR}${DAEMON_LIBDIR}/dde-session-daemon
mkdir -pv ${DESTDIR}${PREFIX}/libexec/deepin
cp -f out/bin/dde-session-daemon ${DESTDIR}${PREFIX}/libexec/deepin/
install -m755 misc/scripts/dde-session-daemon-loader-wrapper \
${DESTDIR}${DAEMON_LIBDIR}/dde-session-daemon

rm -f ${DESTDIR}${DAEMON_LIBDIR}/langselector
cp -f out/bin/langselector ${DESTDIR}${PREFIX}/libexec/deepin/
install -m755 misc/scripts/langselector-loader-wrapper \
${DESTDIR}${DAEMON_LIBDIR}/langselector
mkdir -pv ${DESTDIR}${PREFIX}/lib/deepin-daemon
cp -f out/bin/* ${DESTDIR}${PREFIX}/lib/deepin-daemon/

mkdir -pv ${DESTDIR}${PREFIX}/share/locale
cp -r out/locale/* ${DESTDIR}${PREFIX}/share/locale
Expand Down Expand Up @@ -219,8 +207,8 @@ install: build install-dde-data install-icons
mkdir -pv ${DESTDIR}/etc/pulse/daemon.conf.d
cp -f misc/etc/pulse/daemon.conf.d/*.conf ${DESTDIR}/etc/pulse/daemon.conf.d/

mkdir -pv ${DESTDIR}${DAEMON_LIBDIR}/service-trigger
cp -f misc/service-trigger/*.json ${DESTDIR}${DAEMON_LIBDIR}/service-trigger/
mkdir -pv ${DESTDIR}${PREFIX}/lib/deepin-daemon/service-trigger
cp -f misc/service-trigger/*.json ${DESTDIR}${PREFIX}/lib/deepin-daemon/service-trigger/

mkdir -pv ${DESTDIR}${PREFIX}/libexec/dde-daemon/
cp -r misc/libexec/dde-daemon/* ${DESTDIR}${PREFIX}/libexec/dde-daemon/
Expand All @@ -231,8 +219,8 @@ install: build install-dde-data install-icons
mkdir -pv ${DESTDIR}${PREFIX}/share/dsg/configs/org.deepin.dde.lightdm-deepin-greeter
cp -r misc/dsg-configs/org.deepin.dde.lightdm-deepin-greeter/*.json ${DESTDIR}${PREFIX}/share/dsg/configs/org.deepin.dde.lightdm-deepin-greeter/

cp -f misc/scripts/dde-lock.sh ${DESTDIR}${DAEMON_LIBDIR}/
cp -f misc/scripts/dde-shutdown.sh ${DESTDIR}${DAEMON_LIBDIR}/
cp -f misc/scripts/dde-lock.sh ${DESTDIR}${PREFIX}/lib/deepin-daemon/
cp -f misc/scripts/dde-shutdown.sh ${DESTDIR}${PREFIX}/lib/deepin-daemon/
install-dde-data:
mkdir -pv ${DESTDIR}${PREFIX}/share/dde/
cp -r misc/data misc/zoneinfo ${DESTDIR}${PREFIX}/share/dde/
Expand Down
32 changes: 0 additions & 32 deletions bin/dde-session-daemon/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"github.com/linuxdeepin/dde-api/userenv"
"github.com/linuxdeepin/dde-daemon/common/dconfig"
"github.com/linuxdeepin/dde-daemon/loader"
"github.com/linuxdeepin/dde-daemon/securityloader"
soundthemeplayer "github.com/linuxdeepin/go-dbus-factory/system/org.deepin.dde.soundthemeplayer1"
login1 "github.com/linuxdeepin/go-dbus-factory/system/org.freedesktop.login1"
"github.com/linuxdeepin/go-lib/dbusutil"
Expand Down Expand Up @@ -157,37 +156,6 @@ func init() {
}

func main() {
cleanedArgs, loadedBySecurityLoader, err := securityloader.Handshake(os.Args, []securityloader.Destination{
{
DBusName: "org.deepin.dde.Daemon1",
DBusPath: "/org/deepin/dde/Daemon1",
DBusInterface: "org.deepin.dde.Daemon1",
},
{
DBusName: "org.deepin.dde.Lastore1",
DBusPath: "/org/deepin/dde/Lastore1",
DBusInterface: "org.deepin.dde.Lastore1.Manager",
},
{
DBusName: "org.deepin.dde.InputDevices1",
DBusPath: "/org/deepin/dde/InputDevices1",
DBusInterface: "org.deepin.dde.InputDevices1",
},
{
DBusName: "org.deepin.dde.AirplaneMode1",
DBusPath: "/org/deepin/dde/AirplaneMode1",
DBusInterface: "org.deepin.dde.AirplaneMode1",
},
})
os.Args = cleanedArgs
if err != nil {
if loadedBySecurityLoader {
logger.Errorf("security-loader handshake failed, refusing to start: %q", err.Error())
os.Exit(1)
}
logger.Warningf("security-loader handshake failed: %q", err.Error())
}

logger.SetLogLevel(log.LevelInfo)

if isInShutdown() {
Expand Down
5 changes: 0 additions & 5 deletions bin/dde-system-daemon/exported_methods_auto.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 3 additions & 9 deletions bin/dde-system-daemon/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ package main

import (
"os"
"sync"

configManager "github.com/linuxdeepin/go-dbus-factory/org.desktopspec.ConfigManager"
systemPower "github.com/linuxdeepin/go-dbus-factory/system/org.deepin.dde.power1"

// modules:
_ "github.com/linuxdeepin/dde-daemon/accounts1"
Expand All @@ -33,7 +33,6 @@ import (
systemd1 "github.com/linuxdeepin/go-dbus-factory/system/org.freedesktop.systemd1"

"github.com/linuxdeepin/dde-daemon/loader"
"github.com/linuxdeepin/dde-daemon/securityloader"
login1 "github.com/linuxdeepin/go-dbus-factory/system/org.freedesktop.login1"
glib "github.com/linuxdeepin/go-gir/glib-2.0"
"github.com/linuxdeepin/go-lib/dbusutil"
Expand All @@ -49,8 +48,7 @@ type Daemon struct {
service *dbusutil.Service
systemd systemd1.Manager
dsSystem configManager.Manager
allowCallers *securityloader.AllowCallerRegistry
idleStateMu sync.Mutex
systemPower systemPower.Power
idleStatePath string
idleScreenStatePath string
signals *struct { // nolint
Expand Down Expand Up @@ -113,18 +111,14 @@ func main() {
BindTextdomainCodeset("dde-daemon", "UTF-8")
Textdomain("dde-daemon")

allowCallers := securityloader.NewAllowCallerRegistry(service)
securityloader.SetDefaultRegistry(allowCallers)
defer allowCallers.Close()

logger.SetRestartCommand("/usr/lib/deepin-daemon/dde-system-daemon")

_daemon = &Daemon{
loginManager: login1.NewManager(service.Conn()),
service: service,
systemSigLoop: dbusutil.NewSignalLoop(service.Conn(), 10),
systemd: systemd1.NewManager(service.Conn()),
allowCallers: allowCallers,
systemPower: systemPower.NewPower(service.Conn()),
idleStatePath: IdleFile,
idleScreenStatePath: IdleScreenFile,
}
Expand Down
98 changes: 17 additions & 81 deletions bin/dde-system-daemon/power.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,14 @@ package main
import (
"errors"
"fmt"
"os"
"io/ioutil"
"os/exec"
"strconv"
"strings"
"syscall"

"github.com/godbus/dbus/v5"
"github.com/linuxdeepin/dde-daemon/loader"
"github.com/linuxdeepin/dde-daemon/securityloader"
configManager "github.com/linuxdeepin/go-dbus-factory/org.desktopspec.ConfigManager"

"github.com/linuxdeepin/go-lib/dbusutil"
"github.com/linuxdeepin/go-lib/utils"
)
Expand Down Expand Up @@ -117,69 +114,30 @@ func (d *Daemon) forwardPrepareForSleepSignal(service *dbusutil.Service) error {
return nil
}

type shortIdleController interface {
ShortIdleState() (bool, error)
SetShortIdleState(bool) error
}

func getShortIdleController() (shortIdleController, error) {
module := loader.GetModule("power")
if module == nil {
return nil, errors.New("power module is not registered")
}
if !module.IsEnable() {
return nil, errors.New("power module is not enabled")
}
controller, ok := module.(shortIdleController)
if !ok {
return nil, errors.New("power module does not support short idle control")
}
return controller, nil
}

func systemPowerSetShortIdleState(controller shortIdleController, state bool) error {
func (d *Daemon) systemPowerSetShortIdleState(state bool) {
logger.Info("systemPowerSetShortIdleState : ", state)
if err := controller.SetShortIdleState(state); err != nil {
return fmt.Errorf("failed to set short idle mode: %w", err)
if d.systemPower != nil {
err := d.systemPower.SetShortIdleState(0, state)
if err != nil {
logger.Warning("failed to SetShortIdleState, err : ", err)
}
}
return nil
}

// 1.设置 system/power 模块的短 idle 状态
// 2.写file内核文件
func (d *Daemon) setState(file string, state bool) error {
if file != d.idleStatePath {
return d.writeStateFile(file, state)
}

controller, err := getShortIdleController()
shortIdleState, err := d.systemPower.ShortIdleState().Get(0)
if err != nil {
return fmt.Errorf("failed to get short idle controller: %w", err)
}
return d.setStateWithController(controller, file, state)
}

func (d *Daemon) setStateWithController(controller shortIdleController, file string, state bool) error {
d.idleStateMu.Lock()
defer d.idleStateMu.Unlock()

shortIdleState, err := controller.ShortIdleState()
if err != nil {
return fmt.Errorf("failed to get short idle state: %w", err)
logger.Warning("Get systemPower.ShortIdleState err :", err)
}
logger.Infof("##### setState shortIdleState : %v, state : %v", shortIdleState, state)
if shortIdleState == state {
logger.Info("shortIdleState is same with state : ", state)
return d.writeStateFile(file, state)
return errors.New("Short idle state not exchange.")
}
// 设置 system/power 模块的短 idle 状态
if err := systemPowerSetShortIdleState(controller, state); err != nil {
return err
if file == d.idleStatePath {
d.systemPowerSetShortIdleState(state)
}
return d.writeStateFile(file, state)
}

func (d *Daemon) writeStateFile(file string, state bool) error {
// 写file内核文件
if !utils.IsFileExist(file) {
err := fmt.Errorf("%s not found", file)
Expand All @@ -188,7 +146,7 @@ func (d *Daemon) writeStateFile(file string, state bool) error {
}

// 读取file文件内容
content, err := os.ReadFile(file)
content, err := ioutil.ReadFile(file)
if err != nil {
logger.Errorf("Failed to read file %s: %v", file, err)
return err
Expand All @@ -204,7 +162,7 @@ func (d *Daemon) writeStateFile(file string, state bool) error {
logger.Infof("Current content=%s, will set %v", contentStr, newValue)
// 将值写入文件
newContent := strconv.Itoa(newValue)
err = os.WriteFile(file, []byte(newContent), 0644)
err = ioutil.WriteFile(file, []byte(newContent), 0644)
if err != nil {
logger.Errorf("Failed to write file %s: %v", file, err)
return err
Expand All @@ -214,34 +172,12 @@ func (d *Daemon) writeStateFile(file string, state bool) error {
return nil
}

func (d *Daemon) SetAllowCaller(sender dbus.Sender, uniqueName string) *dbus.Error {
return dbusutil.ToError(d.allowCallers.AddCaller(securityloader.DaemonScope, sender, uniqueName))
}

func (d *Daemon) authorize(sender dbus.Sender, actionID string) error {
return securityloader.AuthorizeWithPolkit(
d.allowCallers,
securityloader.DaemonScope,
sender,
d.service.Conn(),
actionID,
)
}

func (d *Daemon) SetIdleState(sender dbus.Sender, state bool) *dbus.Error {
if err := d.authorize(sender, "org.deepin.dde.daemon.set-idle-state"); err != nil {
logger.Warningf("SetIdleState authorization failed: %q", err.Error())
return dbusutil.ToError(err)
}
func (d *Daemon) SetIdleState(state bool) *dbus.Error {
logger.Infof("SetIdleState %s try set state: %v", d.idleStatePath, state)
return dbusutil.ToError(d.setState(d.idleStatePath, state))
}

func (d *Daemon) SetScreenState(sender dbus.Sender, state bool) *dbus.Error {
if err := d.authorize(sender, "org.deepin.dde.daemon.set-screen-state"); err != nil {
logger.Warningf("SetScreenState authorization failed: %q", err.Error())
return dbusutil.ToError(err)
}
func (d *Daemon) SetScreenState(state bool) *dbus.Error {
logger.Infof("SetScreenState %s try set state: %v", d.idleScreenStatePath, state)
return dbusutil.ToError(d.setState(d.idleScreenStatePath, state))
}
}
Loading
Loading