Merge pull request #1509 from 21pages/optimize
add polkit and update build.rs
This commit is contained in:
commit
ae570acd03
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>
|
@ -265,22 +265,14 @@ class _GeneralState extends State<_General> {
|
||||
if (devices.isEmpty) {
|
||||
return const Offstage();
|
||||
}
|
||||
List<String> keys = devices.toList();
|
||||
List<String> values = devices.toList();
|
||||
// TODO
|
||||
if (!devices.contains(currentDevice)) {
|
||||
currentDevice = "";
|
||||
keys.insert(0, currentDevice);
|
||||
values.insert(0, 'default');
|
||||
}
|
||||
return _Card(title: 'Audio Input Device', children: [
|
||||
_ComboBox(
|
||||
keys: keys,
|
||||
values: values,
|
||||
initialKey: currentDevice,
|
||||
onChanged: (key) {
|
||||
setDevice(key);
|
||||
}).marginOnly(left: _kContentHMargin),
|
||||
...devices.map((device) => _Radio<String>(context,
|
||||
value: device,
|
||||
groupValue: currentDevice,
|
||||
label: device, onChanged: (value) {
|
||||
setDevice(value);
|
||||
setState(() {});
|
||||
}))
|
||||
]);
|
||||
});
|
||||
}
|
||||
@ -876,6 +868,8 @@ Widget _Radio<T>(BuildContext context,
|
||||
Radio<T>(value: value, groupValue: groupValue, onChanged: onChange),
|
||||
Expanded(
|
||||
child: Text(translate(label),
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
fontSize: _kContentFontSize,
|
||||
color: _disabledTextColor(context, enabled)))
|
||||
|
@ -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