!52 第一次提交v2.5版本
From: @meizhigang Reviewed-by: @tangjie02 Signed-off-by: @tangjie02
This commit is contained in:
commit
e403141086
@ -1,31 +0,0 @@
|
||||
From 52df180fc5d96e5b5923667d57be0e971ddc2e9f Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
Date: Tue, 7 Feb 2023 20:07:29 +0800
|
||||
Subject: [PATCH] feature(backends): Compatible wayland framework which exists
|
||||
xwayland.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- 在wayland环境下gtk获取的display默认为wayland display,会导致程序崩溃,因此需要强制指定gtk使用x11作为backend。
|
||||
|
||||
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
src/main.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/main.cpp b/src/main.cpp
|
||||
index 0ed4cc9..d065d25 100644
|
||||
--- a/src/main.cpp
|
||||
+++ b/src/main.cpp
|
||||
@@ -83,6 +83,7 @@ int main(int argc, char* argv[])
|
||||
#if defined KCC_SYSTEM_TYPE
|
||||
auto loop = Glib::MainLoop::create();
|
||||
#elif defined KCC_SESSION_TYPE
|
||||
+ gdk_set_allowed_backends("x11");
|
||||
gtk_init(NULL, NULL);
|
||||
Gdk::wrap_init();
|
||||
Gtk::wrap_init();
|
||||
--
|
||||
2.36.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,162 +0,0 @@
|
||||
From 929f76de69e1e14f5f52925da9f05c577acaea7b Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
Date: Fri, 28 Oct 2022 15:34:01 +0800
|
||||
Subject: [PATCH] feature(timedate): Delete timedate_i.h file.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- 删除timedate_i.h文件,因为文件命名格式错误。
|
||||
|
||||
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
include/timedate-i.h | 32 +++++++++++++++--
|
||||
include/timedate_i.h | 51 ---------------------------
|
||||
plugins/timedate/timedate-format.h | 3 +-
|
||||
plugins/timedate/timedate-manager.cpp | 8 ++---
|
||||
4 files changed, 34 insertions(+), 60 deletions(-)
|
||||
delete mode 100644 include/timedate_i.h
|
||||
|
||||
diff --git a/include/timedate-i.h b/include/timedate-i.h
|
||||
index d80caf9..6091b6c 100644
|
||||
--- a/include/timedate-i.h
|
||||
+++ b/include/timedate-i.h
|
||||
@@ -14,5 +14,33 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
-#define TIMEDATE_NEW_INTERFACE
|
||||
-#include <kiran-system-daemon/timedate_i.h>
|
||||
\ No newline at end of file
|
||||
+#ifdef __cplusplus
|
||||
+extern "C"
|
||||
+{
|
||||
+#endif
|
||||
+
|
||||
+#define TIMEDATE_DBUS_NAME "com.kylinsec.Kiran.SystemDaemon.TimeDate"
|
||||
+#define TIMEDATE_OBJECT_PATH "/com/kylinsec/Kiran/SystemDaemon/TimeDate"
|
||||
+#define TIMEDATE_DBUS_INTERFACE_NAME "com.kylinsec.Kiran.SystemDaemon.TimeDate"
|
||||
+
|
||||
+ enum TimedateDateFormatType
|
||||
+ {
|
||||
+ // 时间日期的长格式
|
||||
+ TIMEDATE_FORMAT_TYPE_LONG = 0,
|
||||
+ // 时间日期的短格式
|
||||
+ TIMEDATE_FORMAT_TYPE_SHORT,
|
||||
+ TIMEDATE_FORMAT_TYPE_LAST,
|
||||
+ };
|
||||
+
|
||||
+ enum TimedateHourFormat
|
||||
+ {
|
||||
+ // 12小时制
|
||||
+ TIMEDATE_HOUSR_FORMAT_12_HOURS = 0,
|
||||
+ // 24小时制
|
||||
+ TIMEDATE_HOUSR_FORMAT_24_HOURS,
|
||||
+ TIMEDATE_HOUSR_FORMAT_LAST
|
||||
+ };
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+}
|
||||
+#endif
|
||||
\ No newline at end of file
|
||||
diff --git a/include/timedate_i.h b/include/timedate_i.h
|
||||
deleted file mode 100644
|
||||
index 4607553..0000000
|
||||
--- a/include/timedate_i.h
|
||||
+++ /dev/null
|
||||
@@ -1,51 +0,0 @@
|
||||
-/**
|
||||
- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd.
|
||||
- * kiran-cc-daemon is licensed under Mulan PSL v2.
|
||||
- * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
- * You may obtain a copy of Mulan PSL v2 at:
|
||||
- * http://license.coscl.org.cn/MulanPSL2
|
||||
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
- * See the Mulan PSL v2 for more details.
|
||||
- *
|
||||
- * Author: tangjie02 <tangjie02@kylinos.com.cn>
|
||||
- */
|
||||
-
|
||||
-
|
||||
-#pragma once
|
||||
-
|
||||
-#ifndef TIMEDATE_NEW_INTERFACE
|
||||
-#warning This file will be deprecated. please use timedate-i.h file
|
||||
-#endif
|
||||
-
|
||||
-#ifdef __cplusplus
|
||||
-extern "C"
|
||||
-{
|
||||
-#endif
|
||||
-
|
||||
-#define TIMEDATE_DBUS_NAME "com.kylinsec.Kiran.SystemDaemon.TimeDate"
|
||||
-#define TIMEDATE_OBJECT_PATH "/com/kylinsec/Kiran/SystemDaemon/TimeDate"
|
||||
-#define TIMEDATE_DBUS_INTERFACE_NAME "com.kylinsec.Kiran.SystemDaemon.TimeDate"
|
||||
-
|
||||
- enum TimedateDateFormatType
|
||||
- {
|
||||
- // 时间日期的长格式
|
||||
- TIMEDATE_FORMAT_TYPE_LONG = 0,
|
||||
- // 时间日期的短格式
|
||||
- TIMEDATE_FORMAT_TYPE_SHORT,
|
||||
- TIMEDATE_FORMAT_TYPE_LAST,
|
||||
- };
|
||||
-
|
||||
- enum TimedateHourFormat
|
||||
- {
|
||||
- // 12小时制
|
||||
- TIMEDATE_HOUSR_FORMAT_12_HOURS = 0,
|
||||
- // 24小时制
|
||||
- TIMEDATE_HOUSR_FORMAT_24_HOURS,
|
||||
- TIMEDATE_HOUSR_FORMAT_LAST
|
||||
- };
|
||||
-
|
||||
-#ifdef __cplusplus
|
||||
-}
|
||||
-#endif
|
||||
\ No newline at end of file
|
||||
diff --git a/plugins/timedate/timedate-format.h b/plugins/timedate/timedate-format.h
|
||||
index 764b7d8..f938bba 100644
|
||||
--- a/plugins/timedate/timedate-format.h
|
||||
+++ b/plugins/timedate/timedate-format.h
|
||||
@@ -16,8 +16,7 @@
|
||||
|
||||
#include "lib/base/base.h"
|
||||
|
||||
-#define TIMEDATE_NEW_INTERFACE
|
||||
-#include "timedate_i.h"
|
||||
+#include "timedate-i.h"
|
||||
|
||||
namespace Kiran
|
||||
{
|
||||
diff --git a/plugins/timedate/timedate-manager.cpp b/plugins/timedate/timedate-manager.cpp
|
||||
index 6978874..92a4147 100644
|
||||
--- a/plugins/timedate/timedate-manager.cpp
|
||||
+++ b/plugins/timedate/timedate-manager.cpp
|
||||
@@ -33,8 +33,7 @@
|
||||
#include "plugins/timedate/timedate-def.h"
|
||||
#include "plugins/timedate/timedate-util.h"
|
||||
|
||||
-#define TIMEDATE_NEW_INTERFACE
|
||||
-#include "timedate_i.h"
|
||||
+#include "timedate-i.h"
|
||||
|
||||
#ifdef HAVE_SELINUX
|
||||
#include <selinux/selinux.h>
|
||||
@@ -899,9 +898,8 @@ bool TimedateManager::check_timezone_name(const std::string &name)
|
||||
name.length() > MAX_TIMEZONE_LENGTH)
|
||||
return false;
|
||||
|
||||
- auto iter = std::find_if(name.begin(), name.end(), [](char c) -> bool {
|
||||
- return !g_ascii_isalnum(c) && !strchr("+-_/", c);
|
||||
- });
|
||||
+ auto iter = std::find_if(name.begin(), name.end(), [](char c) -> bool
|
||||
+ { return !g_ascii_isalnum(c) && !strchr("+-_/", c); });
|
||||
|
||||
if (iter != name.end())
|
||||
{
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
From 710d49ecfafa7782b9121676394e17a87e7f6bbb Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
Date: Thu, 5 Jan 2023 15:46:54 +0800
|
||||
Subject: [PATCH] fix(accounts): Fix the polkit action for ChangeAccountType.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- 将修改账户类型的dbus接口的改为需要管理员权限认证
|
||||
|
||||
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
plugins/accounts/user.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/accounts/user.cpp b/plugins/accounts/user.cpp
|
||||
index c8abf37..b0ad852 100644
|
||||
--- a/plugins/accounts/user.cpp
|
||||
+++ b/plugins/accounts/user.cpp
|
||||
@@ -260,7 +260,7 @@ USER_SET_ONE_PROP_AUTH(SetHomeDirectory, change_home_dir_authorized_cb, AUTH_USE
|
||||
USER_SET_ONE_PROP_AUTH(SetShell, change_shell_authorized_cb, AUTH_USER_ADMIN, const Glib::ustring &);
|
||||
USER_SET_ONE_PROP_AUTH(SetIconFile, change_icon_file_authorized_cb, AUTH_CHANGE_OWN_USER_DATA, const Glib::ustring &);
|
||||
USER_SET_ONE_PROP_AUTH(SetLocked, change_locked_authorized_cb, AUTH_USER_ADMIN, bool);
|
||||
-USER_SET_ONE_PROP_AUTH(SetAccountType, change_account_type_authorized_cb, AUTH_CHANGE_OWN_USER_DATA, int32_t);
|
||||
+USER_SET_ONE_PROP_AUTH(SetAccountType, change_account_type_authorized_cb, AUTH_USER_ADMIN, int32_t);
|
||||
USER_SET_ONE_PROP_AUTH(SetPasswordMode, change_password_mode_authorized_cb, AUTH_CHANGE_OWN_USER_DATA, int32_t);
|
||||
USER_SET_TWO_PROP_AUTH(SetPassword, change_password_authorized_cb, AUTH_CHANGE_OWN_PASSWORD, const Glib::ustring &, const Glib::ustring &);
|
||||
USER_SET_TWO_PROP_AUTH(SetPasswordByPasswd, change_password_by_passwd_authorized_cb, AUTH_CHANGE_OWN_PASSWORD, const Glib::ustring &, const Glib::ustring &);
|
||||
--
|
||||
2.36.1
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
From 4ed9d96276ea0510177d16d449dfb0d9ffb0cc2d Mon Sep 17 00:00:00 2001
|
||||
From: meizhigang <meizhigang@kylinsec.com.cn>
|
||||
Date: Fri, 13 Jan 2023 09:38:23 +0800
|
||||
Subject: [PATCH] fix(appearance):Fix plugin appearance load when caja does not
|
||||
exist
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
-当caja不存在时适配appearance插件加载
|
||||
|
||||
#62952
|
||||
---
|
||||
plugins/appearance/font/appearance-font.cpp | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/appearance/font/appearance-font.cpp b/plugins/appearance/font/appearance-font.cpp
|
||||
index 6e98a02..64bf8d8 100644
|
||||
--- a/plugins/appearance/font/appearance-font.cpp
|
||||
+++ b/plugins/appearance/font/appearance-font.cpp
|
||||
@@ -33,7 +33,12 @@ AppearanceFont::AppearanceFont()
|
||||
this->xsettings_settings_ = Gio::Settings::create(XSETTINGS_SCHEMA_ID);
|
||||
this->interface_settings_ = Gio::Settings::create(INTERFACE_SCHEMA_ID);
|
||||
this->marco_settings_ = Gio::Settings::create(MARCO_SCHEMA_ID);
|
||||
- this->caja_settings_ = Gio::Settings::create(CAJA_SCHEMA_ID);
|
||||
+
|
||||
+ auto schemas = Gio::Settings::list_schemas();
|
||||
+ if (std::find(schemas.begin(), schemas.end(), CAJA_SCHEMA_ID) != schemas.end())
|
||||
+ {
|
||||
+ this->caja_settings_ = Gio::Settings::create(CAJA_SCHEMA_ID);
|
||||
+ }
|
||||
}
|
||||
|
||||
void AppearanceFont::init()
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -1,152 +0,0 @@
|
||||
From d968dc71c978c79118f6c3cf267bf06908bcc374 Mon Sep 17 00:00:00 2001
|
||||
From: meizhigang <meizhigang@kylinsec.com.cn>
|
||||
Date: Tue, 10 Jan 2023 17:28:14 +0800
|
||||
Subject: [PATCH] fix(display): Fix user add custom mode display
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- 适配用户自定义分辨率显示
|
||||
|
||||
Signed-off-by: meizhigang <meizhigang@kylinsec.com.cn>
|
||||
---
|
||||
plugins/display/display-monitor.cpp | 11 ++++-------
|
||||
plugins/display/xrandr-manager.cpp | 20 ++++++++++++--------
|
||||
plugins/display/xrandr-manager.h | 13 +++++++------
|
||||
3 files changed, 23 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/plugins/display/display-monitor.cpp b/plugins/display/display-monitor.cpp
|
||||
index c063925..cefecea 100644
|
||||
--- a/plugins/display/display-monitor.cpp
|
||||
+++ b/plugins/display/display-monitor.cpp
|
||||
@@ -112,10 +112,7 @@ std::string DisplayMonitor::generate_cmdline(bool priamry)
|
||||
}
|
||||
else
|
||||
{
|
||||
- result += fmt::format(" --mode {0}x{1} --rate {2}",
|
||||
- mode->width,
|
||||
- mode->height,
|
||||
- mode->refresh_rate);
|
||||
+ result += fmt::format(" --mode 0x{0:x}", mode->id);
|
||||
}
|
||||
|
||||
if (this->monitor_info_.x >= 0 && this->monitor_info_.y >= 0)
|
||||
@@ -228,7 +225,7 @@ void DisplayMonitor::ListModes(MethodInvocation &invocation)
|
||||
auto monitor = XrandrManager::get_instance()->get_mode(mode_id);
|
||||
if (monitor)
|
||||
{
|
||||
- result.push_back(*monitor.get());
|
||||
+ result.push_back(std::make_tuple(monitor->id, monitor->width, monitor->height, monitor->refresh_rate));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -248,7 +245,7 @@ void DisplayMonitor::ListPreferredModes(MethodInvocation &invocation)
|
||||
auto monitor = XrandrManager::get_instance()->get_mode(this->monitor_info_.modes[i]);
|
||||
if (monitor)
|
||||
{
|
||||
- result.push_back(*monitor.get());
|
||||
+ result.push_back(std::make_tuple(monitor->id, monitor->width, monitor->height, monitor->refresh_rate));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -266,7 +263,7 @@ void DisplayMonitor::GetCurrentMode(MethodInvocation &invocation)
|
||||
auto monitor = XrandrManager::get_instance()->get_mode(this->monitor_info_.mode);
|
||||
if (monitor)
|
||||
{
|
||||
- result = *monitor.get();
|
||||
+ result = std::make_tuple(monitor->id, monitor->width, monitor->height, monitor->refresh_rate);
|
||||
invocation.ret(result);
|
||||
}
|
||||
else
|
||||
diff --git a/plugins/display/xrandr-manager.cpp b/plugins/display/xrandr-manager.cpp
|
||||
index a92501b..4f6b2e6 100644
|
||||
--- a/plugins/display/xrandr-manager.cpp
|
||||
+++ b/plugins/display/xrandr-manager.cpp
|
||||
@@ -77,21 +77,24 @@ CrtcInfo::CrtcInfo(RRCrtc crtc_id, XRRCrtcInfo* crtc_info) : id(crtc_id),
|
||||
ModeInfo::ModeInfo() : id(0),
|
||||
width(0),
|
||||
height(0),
|
||||
- refresh_rate(0)
|
||||
+ refresh_rate(0),
|
||||
+ name(std::string(""))
|
||||
{
|
||||
}
|
||||
|
||||
ModeInfo::ModeInfo(XRRModeInfo* mode_info) : id(mode_info->id),
|
||||
width(mode_info->width),
|
||||
height(mode_info->height),
|
||||
- refresh_rate((mode_info->dotClock / (double)mode_info->hTotal) / mode_info->vTotal)
|
||||
+ refresh_rate((mode_info->dotClock / (double)mode_info->hTotal) / mode_info->vTotal),
|
||||
+ name(std::string(mode_info->name))
|
||||
{
|
||||
}
|
||||
|
||||
-ModeInfo::ModeInfo(std::tuple<guint32, guint32, guint32, double> mode_info) : id(std::get<0>(mode_info)),
|
||||
- width(std::get<1>(mode_info)),
|
||||
- height(std::get<2>(mode_info)),
|
||||
- refresh_rate(std::get<3>(mode_info))
|
||||
+ModeInfo::ModeInfo(std::tuple<guint32, guint32, guint32, double, std::string> mode_info) : id(std::get<0>(mode_info)),
|
||||
+ width(std::get<1>(mode_info)),
|
||||
+ height(std::get<2>(mode_info)),
|
||||
+ refresh_rate(std::get<3>(mode_info)),
|
||||
+ name(std::get<4>(mode_info))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -485,11 +488,12 @@ void XrandrManager::load_mods()
|
||||
auto mode = std::make_shared<ModeInfo>(&this->resources_->modes[i]);
|
||||
this->modes_.emplace(mode->id, mode);
|
||||
|
||||
- KLOG_DEBUG("mode(%u) width: %u, height: %u refresh_rate: %f.",
|
||||
+ KLOG_DEBUG("mode(%u) width: %u, height: %u refresh_rate: %f name: %s.",
|
||||
mode->id,
|
||||
mode->width,
|
||||
mode->height,
|
||||
- mode->refresh_rate);
|
||||
+ mode->refresh_rate,
|
||||
+ mode->name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/plugins/display/xrandr-manager.h b/plugins/display/xrandr-manager.h
|
||||
index 90677d0..e87ac19 100644
|
||||
--- a/plugins/display/xrandr-manager.h
|
||||
+++ b/plugins/display/xrandr-manager.h
|
||||
@@ -99,27 +99,28 @@ struct ModeInfo
|
||||
{
|
||||
ModeInfo();
|
||||
ModeInfo(XRRModeInfo* mode_info);
|
||||
- ModeInfo(std::tuple<guint32, guint32, guint32, double> mode_info);
|
||||
+ ModeInfo(std::tuple<guint32, guint32, guint32, double, std::string> mode_info);
|
||||
RRMode id;
|
||||
- // mode的名字
|
||||
- // std::string name;
|
||||
// 分辨率大小
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
// 刷新率
|
||||
double refresh_rate;
|
||||
+ // mode的名字
|
||||
+ std::string name;
|
||||
|
||||
- operator std::tuple<guint32, guint32, guint32, double>() const
|
||||
+ operator std::tuple<guint32, guint32, guint32, double, std::string>() const
|
||||
{
|
||||
- return std::make_tuple(id, width, height, refresh_rate);
|
||||
+ return std::make_tuple(id, width, height, refresh_rate, name);
|
||||
}
|
||||
|
||||
- ModeInfo& operator=(const std::tuple<guint32, guint32, guint32, double>& value)
|
||||
+ ModeInfo& operator=(const std::tuple<guint32, guint32, guint32, double, std::string>& value)
|
||||
{
|
||||
this->id = std::get<0>(value);
|
||||
this->width = std::get<1>(value);
|
||||
this->height = std::get<2>(value);
|
||||
this->refresh_rate = std::get<3>(value);
|
||||
+ this->name = std::get<4>(value);
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -1,110 +0,0 @@
|
||||
From 90310b4ca83d1b91a91e98f505d1b2c918f78297 Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
Date: Mon, 14 Nov 2022 19:47:05 +0800
|
||||
Subject: [PATCH] fix(passwd): Fix password policy inconsistencies.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- 修复密码策略不一致问题
|
||||
|
||||
Closes #I60Q7P
|
||||
|
||||
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
plugins/accounts/passwd-wrapper.cpp | 34 +++++++++++++++++++++--------
|
||||
plugins/accounts/user.cpp | 2 ++
|
||||
2 files changed, 27 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/plugins/accounts/passwd-wrapper.cpp b/plugins/accounts/passwd-wrapper.cpp
|
||||
index 860fa7a..8ce454d 100644
|
||||
--- a/plugins/accounts/passwd-wrapper.cpp
|
||||
+++ b/plugins/accounts/passwd-wrapper.cpp
|
||||
@@ -141,8 +141,9 @@ void PasswdWrapper::on_child_setup(uint32_t caller_uid)
|
||||
// 如果是设置当前用户密码,则需要进行降权
|
||||
if (caller_uid == user->uid_get())
|
||||
{
|
||||
- if (setuid(user->uid_get()) != 0 ||
|
||||
- setgid(user->gid_get()) != 0)
|
||||
+ // 必须先设置gid然后再设置uid,否则在设置uid后已经不是特权用户,无法设置gid
|
||||
+ if (setgid(user->gid_get()) != 0 ||
|
||||
+ setuid(user->uid_get()) != 0)
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
@@ -196,8 +197,8 @@ bool PasswdWrapper::on_passwd_output(Glib::IOCondition io_condition, Glib::RefPt
|
||||
|
||||
auto retval = this->process_passwd_output_line(handled_passwd_tips);
|
||||
|
||||
- // 处理出错,直接退出
|
||||
- if (!this->additional_error_message_.empty())
|
||||
+ // 处理出错且后面不再有数据则退出
|
||||
+ if (!this->additional_error_message_.empty() && this->unhandled_passwd_tips_.empty())
|
||||
{
|
||||
this->end_passwd(false);
|
||||
break;
|
||||
@@ -277,7 +278,8 @@ bool PasswdWrapper::process_passwd_output_line(const std::string &line)
|
||||
this->in_io_channel_->write(this->new_password_ + "\n");
|
||||
retval = true;
|
||||
}
|
||||
- // 如果是整行信息,说明出现了错误
|
||||
+ /* 如果是整行信息,说明是错误或者告警信息。因为这里没法区分是错误或者告警信息,所以只能继续往下处理到数据结束,
|
||||
+ 如果最后一条是提示信息,说明当前属于告警信息,否则是错误信息。*/
|
||||
else if (line.find_first_of('\n') != std::string::npos)
|
||||
{
|
||||
this->state_ = PASSWD_STATE_ERROR;
|
||||
@@ -304,6 +306,17 @@ bool PasswdWrapper::process_passwd_output_line(const std::string &line)
|
||||
retval = true;
|
||||
}
|
||||
break;
|
||||
+ case PASSWD_STATE_ERROR:
|
||||
+ {
|
||||
+ // 这里说明上一条信息是告警消息而非错误消息,因此清空错误消息并继续往下走
|
||||
+ if (StrUtils::endswith(lowercase_passwd_tips, "retype new password: "))
|
||||
+ {
|
||||
+ this->state_ = PASSWD_STATE_RETYPE;
|
||||
+ this->in_io_channel_->write(this->new_password_ + "\n");
|
||||
+ this->additional_error_message_.clear();
|
||||
+ retval = true;
|
||||
+ }
|
||||
+ }
|
||||
default:
|
||||
retval = true;
|
||||
break;
|
||||
@@ -314,13 +327,16 @@ bool PasswdWrapper::process_passwd_output_line(const std::string &line)
|
||||
|
||||
void PasswdWrapper::on_child_watch(GPid pid, int child_status)
|
||||
{
|
||||
- KLOG_DEBUG("Process passwd(%d) exit.", (int32_t)pid);
|
||||
+ KLOG_DEBUG("Process passwd(%d) exit, exit status: %d.", (int32_t)pid, child_status);
|
||||
|
||||
- if (WIFEXITED(child_status))
|
||||
+ g_autoptr(GError) g_error = NULL;
|
||||
+ auto result = g_spawn_check_exit_status(child_status, &g_error);
|
||||
+ if (!result)
|
||||
{
|
||||
- if (WEXITSTATUS(child_status) >= 255)
|
||||
+ KLOG_WARNING("%s.", g_error->message);
|
||||
+ if (this->error_message_.empty())
|
||||
{
|
||||
- KLOG_WARNING("Child exited unexpectedly");
|
||||
+ this->error_message_ = CC_ERROR2STR(CCErrorCode::ERROR_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/plugins/accounts/user.cpp b/plugins/accounts/user.cpp
|
||||
index 7835bb4..c8abf37 100644
|
||||
--- a/plugins/accounts/user.cpp
|
||||
+++ b/plugins/accounts/user.cpp
|
||||
@@ -749,6 +749,8 @@ void User::change_password_by_passwd_authorized_cb(MethodInvocation invocation,
|
||||
auto current_password = CryptoHelper::rsa_decrypt(AccountsManager::get_instance()->get_rsa_private_key(), encrypted_current_password);
|
||||
auto new_password = CryptoHelper::rsa_decrypt(AccountsManager::get_instance()->get_rsa_private_key(), encrypted_new_password);
|
||||
|
||||
+ // KLOG_DEBUG("The currentPassword: %s, newPassword: %s.", current_password.c_str(), new_password.c_str());
|
||||
+
|
||||
if (this->passwd_wrapper_ && this->passwd_wrapper_->get_state() != PasswdState::PASSWD_STATE_NONE)
|
||||
{
|
||||
DBUS_ERROR_REPLY_AND_RET(CCErrorCode::ERROR_ACCOUNTS_USER_MODIFYING_PASSWORD);
|
||||
--
|
||||
2.33.0
|
||||
|
||||
Binary file not shown.
BIN
kiran-cc-daemon-2.5.0.tar.gz
Normal file
BIN
kiran-cc-daemon-2.5.0.tar.gz
Normal file
Binary file not shown.
@ -1,19 +1,11 @@
|
||||
Name: kiran-cc-daemon
|
||||
Version: 2.4.0
|
||||
Release: 9
|
||||
Version: 2.5.0
|
||||
Release: 1
|
||||
Summary: DBus daemon for Kiran Desktop
|
||||
|
||||
License: MulanPSL-2.0
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
Patch0001: 0001-feature-timedate-Delete-timedate_i.h-file.patch
|
||||
Patch0002: 0001-fix-passwd-Fix-password-policy-inconsistencies.patch
|
||||
Patch0003: 0001-feature-backlight-Support-brightness-modification-by.patch
|
||||
Patch0004: 0001-fix-accounts-Fix-the-polkit-action-for-ChangeAccount.patch
|
||||
Patch0005: 0001-fix-display-Fix-user-add-custom-mode-display.patch
|
||||
Patch0006: 0001-fix-appearance-Fix-plugin-appearance-load-when-caja-.patch
|
||||
Patch1007: 0001-feature-backends-Compatible-wayland-framework-which-.patch
|
||||
|
||||
|
||||
BuildRequires: cmake >= 3.2
|
||||
BuildRequires: pkgconfig(glibmm-2.4)
|
||||
@ -145,6 +137,9 @@ glib-compile-schemas /usr/share/glib-2.0/schemas &> /dev/nulls || :
|
||||
%{_datadir}/polkit-1/actions/com.kylinsec.Kiran.SessionDaemon*.policy
|
||||
%dir %{_datadir}/kiran-cc-daemon/keybindings
|
||||
%{_datadir}/kiran-cc-daemon/keybindings/*.xml
|
||||
%{_datadir}/kiran-cc-daemon/kiran-session-daemon.gresource
|
||||
%dir %{_datadir}/kiran-cc-daemon/images
|
||||
%{_datadir}/kiran-cc-daemon/images/*.png
|
||||
|
||||
%files common
|
||||
%{_includedir}/kiran-cc-daemon/error-i.h
|
||||
@ -159,30 +154,6 @@ glib-compile-schemas /usr/share/glib-2.0/schemas &> /dev/nulls || :
|
||||
%{_libdir}/pkgconfig/kiran-cc-daemon.pc
|
||||
|
||||
%changelog
|
||||
* Wed Mar 01 2023 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-9
|
||||
- Add iso-codes to required package list.
|
||||
|
||||
* Tue Feb 07 2023 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-8
|
||||
- Compatible wayland framework which exists xwayland.
|
||||
|
||||
* Fri Jan 13 2023 meizhigang <meizhigang@kylinsec.com.cn> - 2.4.0-7
|
||||
- KYOS-B: Fix plugin appearance load when caja does not exist.
|
||||
|
||||
* Wed Jan 11 2023 meizhigang <meizhigang@kylinsec.com.cn> - 2.4.0-6
|
||||
- KYOS-B: Fix user add custom mode display.
|
||||
|
||||
* Thu Jan 05 2023 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-5
|
||||
- KYOS-B: Fix the polkit action for ChangeAccountType.
|
||||
|
||||
* Wed Dec 07 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-4
|
||||
- KYOS-F: Support brightness modification by changing gamma value.
|
||||
|
||||
* Tue Nov 15 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-3
|
||||
- KYOS-B: Fix password policy inconsistencies.(I60Q7P)
|
||||
|
||||
* Fri Oct 28 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-2
|
||||
- KYOS-F: Delete timedate_i.h file.
|
||||
|
||||
* Tue Oct 25 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-1
|
||||
- KYOS-F: init commit for v2.4 version.
|
||||
* Fri Mar 24 2023 meizhigang <meizhigang@kylinsec.com.cn> - 2.5.0-1
|
||||
- KYOS-F: init commit for v2.5 version.
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user