Cервис com.system.permissions запускается на сессионной шине и имеет 2 метода:
void RequestPermission(permissionEnumCode: Int)
Пример использования
gdbus call -e -d com.system.permissions -o /com/system/permissions -m com.system.permissions.RequestPermission 0
Метод позволяет запросить разрешение у сервиса. Сервис перед выдачей разрешение получает путь до исполняемого файла, вызвавшего метод и сохраняет в базу данных SQLite.
bool CheckApplicationHasPermission(applicationPath: String, permissionEnumCode: Int)
Пример использования
gdbus call -e -d com.system.permissions -o /com/system/permissions -m com.system.permissions.CheckApplicationHasPermission /usr/bin/gdbus 0
Метод позволяет проверить имеется ли у приложения с заданнымм путем разрешение.
Cервис com.system.time запускается на сессионной шине и имеет 1 метод:
uint64_t GetSystemTime()
Пример использования
gdbus call -e -d com.system.time -o /com/system/time -m com.system.time.GetSystemTime
Метод возвращает timestamp теккущего сисетмного времени в секугдах (Начиная с 1 января 1970). Для получения timestamp требуется разрешение от сервиса com.system.permissions. В противном случае возвращает ошибку Unauthorized access.
- sdbus-c++
- sqlite3
- Сборка сервиса com.system.permission:
cd Task-1/
mkdir build
cd build
cmake ..
make
- Сборка сервиса com.system.time:
cd Task-2/
mkdir build
cd build
cmake ..
make
- Сборка клиентского приложения:
cd Client/
mkdir build
cd build
cmake ..
make
- com.system.permissions
cd Task-1/build
./permissions-server
- com.system.time
cd Task-2/build
./time-server
- Клиентское приложение
cd Client/build
./client-app