Skip to content

Commit f91ae8b

Browse files
committed
refactor: add polkit authorization to PM
Add PolkitAuthority helper class to check authorization before Install, InstallFromFile, Uninstall, Update, Prune and SetConfiguration operations. Move interaction interface from PM to Task and add timeout. Signed-off-by: reddevillg <reddevillg@gmail.com>
1 parent 9b78229 commit f91ae8b

17 files changed

Lines changed: 743 additions & 467 deletions

File tree

api/dbus/org.deepin.linglong.PackageManager1.xml

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ SPDX-License-Identifier: LGPL-3.0-or-later
4343
<arg direction="out" name="result" type="a{sv}" />
4444
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QVariantMap" />
4545
</method>
46-
<method name="Permissions">
47-
<annotation name="org.freedesktop.DBus.Description" value="Used by the client to check whether it has permission to call privileged methods" />
48-
</method>
4946
<method name="InitRunContext">
5047
<arg direction="in" name="runContextCfg" type="s" />
5148
<arg direction="in" name="containerID" type="s" />
@@ -66,12 +63,11 @@ SPDX-License-Identifier: LGPL-3.0-or-later
6663
<arg name="taskID" type="s" />
6764
<arg name="success" type="b" />
6865
</signal>
69-
<method name="ReplyInteraction">
70-
<arg name="task" type="o" />
71-
<arg name="replies" type="a{sv}" />
72-
<annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap" />
66+
<method name="SetConfiguration">
67+
<arg direction="in" name="parameters" type="a{sv}" />
68+
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="QVariantMap" />
7369
</method>
74-
<property name="Configuration" type="a{sv}" access="readwrite">
70+
<property name="Configuration" type="a{sv}" access="read">
7571
<annotation name="org.qtproject.QtDBus.QtTypeName" value="QVariantMap" />
7672
</property>
7773
<signal name="TaskAdded">
@@ -80,11 +76,5 @@ SPDX-License-Identifier: LGPL-3.0-or-later
8076
<signal name="TaskRemoved">
8177
<arg name="task" type="o" />
8278
</signal>
83-
<signal name="RequestInteraction">
84-
<arg name="task" type="o" />
85-
<arg name="messageID" type="i" />
86-
<arg name="additionalMessage" type="a{sv}" />
87-
<annotation name="org.qtproject.QtDBus.QtTypeName.Out2" value="QVariantMap" />
88-
</signal>
8979
</interface>
9080
</node>
Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
<?xml version="1.0"?>
22
<!--
3-
SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
3+
SPDX-FileCopyrightText: 2024 - 2026 UnionTech Software Technology Co., Ltd.
44
SPDX-License-Identifier: LGPL-3.0-or-later
55
-->
66
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "https://specifications.freedesktop.org/dbus/introspect-latest.dtd">
77
<node>
88
<interface name="org.deepin.linglong.Task1">
99
<method name="Cancel" />
10+
<method name="ReplyInteraction">
11+
<arg direction="in" name="replies" type="a{sv}" />
12+
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="QVariantMap" />
13+
</method>
1014
<property name="State" type="i" access="read" />
1115
<property name="Percentage" type="d" access="read" />
1216
<property name="Message" type="s" access="read" />
1317
<property name="Code" type="i" access="read" />
18+
<signal name="RequestInteraction">
19+
<arg name="messageID" type="i" />
20+
<arg name="additionalMessage" type="a{sv}" />
21+
<annotation name="org.qtproject.QtDBus.QtTypeName.Out1" value="QVariantMap" />
22+
</signal>
1423
</interface>
1524
</node>

apps/ll-package-manager/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ auto runDaemonMode(ocppi::cli::CLI &cli, const CommandLineOptions &options) -> i
125125

126126
auto packageManager =
127127
createPackageManager(std::move(repo).value(), cli, QCoreApplication::instance());
128-
packageManager->initDaemonMode();
128+
packageManager->initDaemonMode(options.noDBus);
129129
auto *packageManagerPtr = packageManager.get();
130130
new linglong::adaptors::package_manger::PackageManager1(packageManagerPtr);
131131

libs/linglong/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ pfl_add_library(
7272
src/linglong/package_manager/package_task.h
7373
src/linglong/package_manager/package_update.cpp
7474
src/linglong/package_manager/package_update.h
75+
src/linglong/package_manager/polkit_authority.cpp
76+
src/linglong/package_manager/polkit_authority.h
7577
src/linglong/package_manager/ref_installation.cpp
7678
src/linglong/package_manager/ref_installation.h
7779
src/linglong/package_manager/task.cpp

0 commit comments

Comments
 (0)