add polkit for custom authentication && update build.rs
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
64f5f3253c
commit
203d9e39a0
18
build.py
18
build.py
@ -71,7 +71,7 @@ def make_parser():
|
||||
parser.add_argument(
|
||||
'--hwcodec',
|
||||
action='store_true',
|
||||
help='Enable feature hwcodec, windows only.'
|
||||
help='Enable feature hwcodec'
|
||||
)
|
||||
return parser
|
||||
|
||||
@ -124,26 +124,28 @@ def get_features(args):
|
||||
|
||||
def build_flutter_deb(version):
|
||||
os.chdir('flutter')
|
||||
os.system('/bin/rm -rf tmpdeb/')
|
||||
os.system('dpkg-deb -R rustdesk.deb tmpdeb')
|
||||
# os.system('flutter build linux --release')
|
||||
os.system('flutter build linux --release')
|
||||
os.system('rm tmpdeb/usr/bin/rustdesk')
|
||||
os.system('strip build/linux/x64/release/liblibrustdesk.so')
|
||||
os.system('mkdir -p tmpdeb/usr/lib/rustdesk')
|
||||
os.system('mkdir -p tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
os.system('mkdir -p tmpdeb/usr/share/polkit-1/actions')
|
||||
os.system(
|
||||
'cp -r build/linux/x64/release/bundle/* tmpdeb/usr/lib/rustdesk/')
|
||||
os.system(
|
||||
'pushd tmpdeb && ln -s /usr/lib/rustdesk/flutter_hbb usr/bin/rustdesk && popd')
|
||||
os.system(
|
||||
'cp build/linux/x64/release/liblibrustdesk.so tmpdeb/usr/lib/rustdesk/librustdesk.so')
|
||||
'cp ../rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
os.system(
|
||||
'cp rustdesk.service tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
os.system(
|
||||
'cp rustdesk.service.user tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
'cp ../rustdesk.service.user tmpdeb/usr/share/rustdesk/files/systemd/')
|
||||
os.system(
|
||||
'cp ../128x128@2x.png tmpdeb/usr/share/rustdesk/files/rustdesk.png')
|
||||
os.system(
|
||||
'cp rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||
'cp ../rustdesk.desktop tmpdeb/usr/share/applications/rustdesk.desktop')
|
||||
os.system(
|
||||
'cp ../com.rustdesk.RustDesk.policy tmpdeb/usr/share/polkit-1/actions/')
|
||||
os.system("echo \"#!/bin/sh\" >> tmpdeb/usr/share/rustdesk/files/polkit && chmod a+x tmpdeb/usr/share/rustdesk/files/polkit")
|
||||
os.system('mkdir -p tmpdeb/DEBIAN')
|
||||
os.system('cp -a ../DEBIAN/* tmpdeb/DEBIAN/')
|
||||
md5_file('usr/share/rustdesk/files/systemd/rustdesk.service')
|
||||
|
22
com.rustdesk.RustDesk.policy
Normal file
22
com.rustdesk.RustDesk.policy
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
<vendor>RustDesk</vendor>
|
||||
<vendor_url>https://rustdesk.com/</vendor_url>
|
||||
<icon_name>rustdesk</icon_name>
|
||||
<action id="com.rustdesk.RustDesk.options">
|
||||
<description>Change RustDesk options</description>
|
||||
<message>Authentication is required to change RustDesk options</message>
|
||||
<message xml:lang="zh_CN">要更改RustDesk选项, 需要您先通过身份验证</message>
|
||||
<message xml:lang="zh_TW">要變更RustDesk選項, 需要您先通過身份驗證</message>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/share/rustdesk/files/polkit</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
<defaults>
|
||||
<allow_any>auth_admin</allow_any>
|
||||
<allow_inactive>auth_admin</allow_inactive>
|
||||
<allow_active>auth_admin</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
@ -638,7 +638,13 @@ pub fn quit_gui() {
|
||||
}
|
||||
|
||||
pub fn check_super_user_permission() -> ResultType<bool> {
|
||||
// TODO: replace echo with a rustdesk's program, which is location-fixed and non-gui.
|
||||
let status = std::process::Command::new("pkexec").arg("echo").status()?;
|
||||
let file = "/usr/share/rustdesk/files/polkit";
|
||||
let arg;
|
||||
if std::path::Path::new(file).is_file() {
|
||||
arg = file;
|
||||
} else {
|
||||
arg = "echo";
|
||||
}
|
||||
let status = std::process::Command::new("pkexec").arg(arg).status()?;
|
||||
Ok(status.success() && status.code() == Some(0))
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user