Открыть боковую панель
MOS
Исходные коды
mos-auth
Коммиты
00b17f74
Коммит
00b17f74
создал
Окт 01, 2024
по автору
sgakerru
Зафиксировано автором
Проскурнев Артем Сергеевич
Окт 01, 2024
Просмотр файлов
DBus-сервис для гостя
владелец
95e327e1
Изменения
7
Скрыть пробелы
Построчно
Рядом
prepare-guest-account/mos-guest-dbus-service/.gitignore
0 → 100644
Просмотр файла @
00b17f74
build/
CMakeLists.txt.user
.clang-format
prepare-guest-account/mos-guest-dbus-service/CMakeLists.txt
0 → 100644
Просмотр файла @
00b17f74
cmake_minimum_required
(
VERSION 3.16
)
set
(
PROJECT_NAME mos-guest-dbus-service
)
project
(
${
PROJECT_NAME
}
LANGUAGES CXX
)
set
(
CMAKE_CXX_STANDARD 17
)
set
(
CMAKE_CXX_STANDARD_REQUIRED ON
)
include
(
GNUInstallDirs
)
# Useful tools from KDE
find_package
(
ECM 1.4.0 REQUIRED NO_MODULE
)
set
(
CMAKE_MODULE_PATH
${
CMAKE_MODULE_PATH
}
${
ECM_MODULE_PATH
}
)
include
(
KDECompilerSettings NO_POLICY_SCOPE
)
include
(
KDEClangFormat
)
# add clang-format target
file
(
GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c
)
kde_clang_format
(
${
ALL_CLANG_FORMAT_SOURCE_FILES
}
)
# For Qt
set
(
CMAKE_AUTOUIC ON
)
set
(
CMAKE_AUTOMOC ON
)
set
(
CMAKE_AUTORCC ON
)
find_package
(
Qt5 REQUIRED COMPONENTS
Core
DBus
)
set
(
SRCS
src/guestdbusservice.h src/guestdbusservice.cpp
src/main.cpp
)
add_executable
(
${
PROJECT_NAME
}
${
SRCS
}
)
target_link_libraries
(
${
PROJECT_NAME
}
Qt::Core
Qt::DBus
)
install
(
TARGETS
${
PROJECT_NAME
}
DESTINATION
${
CMAKE_INSTALL_BINDIR
}
)
prepare-guest-account/mos-guest-dbus-service/dbus-rules/org.mos.auth.guest.conf
0 → 100644
Просмотр файла @
00b17f74
<!
DOCTYPE
busconfig
PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"
>
<
busconfig
>
<!--
Only
user
guest
can
own
this
service
-->
<
policy
user
=
"guest"
>
<
allow
own
=
"org.mos.auth.guest"
/>
</
policy
>
<!--
Only
root
user
call
the
service
-->
<
policy
user
=
"root"
>
<
allow
send_destination
=
"org.mos.auth.guest"
/>
</
policy
>
</
busconfig
>
prepare-guest-account/mos-guest-dbus-service/src/guestdbusservice.cpp
0 → 100644
Просмотр файла @
00b17f74
#include
"guestdbusservice.h"
#include
"qobject.h"
#include
<QDebug>
#include
<QProcess>
#include
<QUrl>
GuestDBusService
::
GuestDBusService
(
QObject
*
parent
)
:
QObject
(
parent
)
{
}
QString
GuestDBusService
::
run
(
const
QString
&
cmd
)
{
const
QString
msg
=
QString
(
"run command: %1"
).
arg
(
cmd
);
qInfo
()
<<
msg
;
QProcess
*
myProcess
=
new
QProcess
(
this
);
myProcess
->
start
(
"bash"
,
QStringList
()
<<
"-c"
<<
cmd
);
if
(
!
myProcess
->
waitForStarted
())
return
"Can't run command"
;
if
(
!
myProcess
->
waitForFinished
())
return
"Can't wait command finish"
;
return
myProcess
->
readAll
();
}
QString
GuestDBusService
::
runFromFile
(
const
QString
&
path
)
{
const
QString
msg
=
QString
(
"run command from file: %1"
).
arg
(
path
);
qInfo
()
<<
msg
;
QUrl
appUrl
(
path
);
QProcess
*
myProcess
=
new
QProcess
(
this
);
myProcess
->
start
(
appUrl
.
path
(),
QStringList
());
if
(
!
myProcess
->
waitForStarted
())
return
"Can't run command"
;
if
(
!
myProcess
->
waitForFinished
())
return
"Can't wait command finish"
;
return
myProcess
->
readAll
();
}
prepare-guest-account/mos-guest-dbus-service/src/guestdbusservice.h
0 → 100644
Просмотр файла @
00b17f74
#ifndef GUESTDBUSSERVICE_H
#define GUESTDBUSSERVICE_H
#include
<QObject>
#define SERVICE_NAME "org.mos.auth.guest"
class
GuestDBusService
:
public
QObject
{
Q_OBJECT
Q_CLASSINFO
(
"D-Bus Interface"
,
SERVICE_NAME
)
public:
explicit
GuestDBusService
(
QObject
*
parent
=
nullptr
);
public
slots
:
Q_SCRIPTABLE
QString
run
(
const
QString
&
cmd
);
Q_SCRIPTABLE
QString
runFromFile
(
const
QString
&
path
);
};
#endif // GUESTDBUSSERVICE_H
prepare-guest-account/mos-guest-dbus-service/src/main.cpp
0 → 100644
Просмотр файла @
00b17f74
#include
"guestdbusservice.h"
#include
<QCoreApplication>
#include
<QDBusConnection>
#include
<QDBusError>
#include
<QDebug>
int
main
(
int
argc
,
char
*
argv
[])
{
QCoreApplication
a
(
argc
,
argv
);
GuestDBusService
*
dbus
=
new
GuestDBusService
();
auto
connection
=
QDBusConnection
::
systemBus
();
if
(
!
connection
.
isConnected
())
{
qWarning
()
<<
"Cannot connect to the D-Bus session bus."
;
return
1
;
}
if
(
!
connection
.
registerService
(
SERVICE_NAME
))
{
qWarning
()
<<
qPrintable
(
connection
.
lastError
().
message
());
return
1
;
}
connection
.
registerObject
(
"/"
,
dbus
,
QDBusConnection
::
ExportAllSlots
);
return
a
.
exec
();
}
prepare-guest-account/prepare-guest-account.sh
Просмотр файла @
00b17f74
...
...
@@ -55,6 +55,13 @@ then
fi
cp
--recursive
--no-target-directory
'/etc/skel'
"
${
HOME
}
"
cat
<<
EOF
> "
${
HOME
}
/.config/autostart/mos-guest-dbus-service.desktop"
[Desktop Entry]
Name=MOS Guest DBus Service
Exec=mos-guest-dbus-service
Type=Application
EOF
chown
--recursive
"
$PAM_USER
:"
"
${
HOME
}
"
fi
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать