%if %{with_systemd_daemon}
mkdir -p %{buildroot}/%{_unitdir_user}/default.target.wants
-mkdir -p %{buildroot}/%{_unitdir_user}/socket.target.wants
+mkdir -p %{buildroot}/%{_unitdir_user}/sockets.target.wants
ln -s ../askuser-notification.service %{buildroot}/%{_unitdir_user}/default.target.wants/askuser-notification.service
-ln -s ../askuser-notification.socket %{buildroot}/%{_unitdir_user}/socket.target.wants/askuser-notification.socket
+ln -s ../askuser-notification-stream.socket %{buildroot}/%{_unitdir_user}/sockets.target.wants/askuser-notification-stream.socket
+ln -s ../askuser-notification-datagram.socket %{buildroot}/%{_unitdir_user}/sockets.target.wants/askuser-notification-datagram.socket
%endif
%post
%attr(755,root,root) /usr/bin/askuser-notification
%if %{with_systemd_daemon}
%{_unitdir_user}/askuser-notification.service
-%{_unitdir_user}/askuser-notification.socket
+%{_unitdir_user}/askuser-notification-stream.socket
+%{_unitdir_user}/askuser-notification-datagram.socket
%{_unitdir_user}/default.target.wants/*
-%{_unitdir_user}/socket.target.wants/*
+%{_unitdir_user}/sockets.target.wants/*
%endif
/usr/share/askuser-notification/res/*
int &result)
{
try {
- std::string path = SOCKET_STREAM_PATH + "." + std::to_string(uid);
Sock s(Sock::CLI_STREAM);
- if (0 > s.connect(path))
+ if (0 > s.connect(getStreamSocketPath(uid)))
return -1;
std::stringstream ss;
const std::string &privilege)
{
try {
- std::string path = SOCKET_DGRAM_PATH + "." + std::to_string(uid);
Sock s(Sock::CLI_DGRAM);
- if (0 > s.connect(path))
+ if (0 > s.connect(getDatagramSocketPath(uid)))
return -1;
std::string str = std::to_string(MSGID_TOAST1) + " " + pkgName + " " + appName + " " + std::to_string(uid) + " " + privilege;
int toast_fail_launch(const std::string &pkgName, const std::string &appName, uid_t uid) {
try {
- std::string path = SOCKET_DGRAM_PATH + "." + std::to_string(uid);
Sock s(Sock::CLI_DGRAM);
- if (0 > s.connect(path))
+ if (0 > s.connect(getDatagramSocketPath(uid)))
return -1;
std::string str = std::to_string(MSGID_TOAST2) + " " + pkgName + " " + appName + " " + std::to_string(uid);
*/
#include <ask-user-config.h>
-const std::string SOCKET_STREAM_PATH("/tmp/ask-user-stream");
-const std::string SOCKET_DGRAM_PATH("/tmp/ask-user-dgram");
+namespace {
+const std::string USER_EXT_PATH("/run/user_ext/");
+const std::string SOCKET_STREAM_NAME("/askuser-notification-stream.socket");
+const std::string SOCKET_DGRAM_NAME("/askuser-notification-datagram.socket");
+} // namespace anonymous
+
+std::string getDatagramSocketPath(uid_t uid) {
+ return USER_EXT_PATH + std::to_string(uid) + SOCKET_STREAM_NAME;
+}
+
+std::string getStreamSocketPath(uid_t uid) {
+ return USER_EXT_PATH + std::to_string(uid) + SOCKET_DGRAM_NAME;
+}
-//const int MSGID_POPUP = 1;
-//const int MSGID_TOUST1 = 2;
-//const int MSGID_TOUST2 = 3;
-//
#pragma once
#include <string>
-
-extern const std::string SOCKET_STREAM_PATH;
-extern const std::string SOCKET_DGRAM_PATH;
+#include <sys/types.h>
// We want to use it constat expressions (this is the reason why it's not in cpp file
const int MSGID_POPUP = 1;
const int MSGID_TOAST1 = 2;
const int MSGID_TOAST2 = 3;
+std::string getDatagramSocketPath(uid_t uid);
+std::string getStreamSocketPath(uid_t uid);
+
Sock stream(Sock::SRV_STREAM);
Sock datagram(Sock::SRV_DGRAM);
- uid_t uid = getuid();
- std::string path = SOCKET_STREAM_PATH + "." + std::to_string(uid);
- stream.connect(path);
- path = SOCKET_DGRAM_PATH + "." + std::to_string(uid);
- datagram.connect(path);
+ stream.connect(getStreamSocketPath(getuid()));
+ datagram.connect(getDatagramSocketPath(getuid()));
int fd1 = stream.getFd();
int fd2 = datagram.getFd();
IF (BUILD_ASKUSER_NOTIFICATION)
INSTALL(FILES
${CMAKE_SOURCE_DIR}/systemd/askuser-notification.service
- ${CMAKE_SOURCE_DIR}/systemd/askuser-notification.socket
+ ${CMAKE_SOURCE_DIR}/systemd/askuser-notification-stream.socket
+ ${CMAKE_SOURCE_DIR}/systemd/askuser-notification-datagram.socket
DESTINATION
lib/systemd/user
)
--- /dev/null
+[Socket]
+ListenDatagram=/run/user_ext/%U/askuser-notification-datagram.socket
+SocketMode=0770
+
+Service=askuser-notification.service
+
+[Install]
+WantedBy=sockets.target
--- /dev/null
+[Socket]
+ListenStream=/run/user_ext/%U/askuser-notification-stream.socket
+SocketMode=0770
+
+Service=askuser-notification.service
+
+[Install]
+WantedBy=sockets.target
+++ /dev/null
-[Socket]
-ListenStream=/run/user_ext/%U/askuser-notification.socket
-SocketMode=0770
-
-Service=askuser-notification.service
-ExecStartPost=/usr/bin/chmod 0666 /run/user_ext/%U/askuser-notification.socket
-
-[Install]
-WantedBy=sockets.target