Skip to content

Commit 0ee4074

Browse files
authored
Merge pull request #67 from linux-credentials/dbus-activation
Adds D-Bus service activation config files on install
2 parents 7f1d6bf + b715a10 commit 0ee4074

12 files changed

+92
-11
lines changed

credentialsd-ui/src/main.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,8 @@ async fn run() -> Result<(), Box<dyn Error>> {
1919
let (request_tx, request_rx) = async_std::channel::bounded(2);
2020
// this allows the D-Bus service to signal to the GUI to draw a window for
2121
// executing the credential flow.
22-
let conn = zbus::connection::Builder::session()?
23-
.name("xyz.iinuwa.credentialsd.UiControl")?
24-
.build()
25-
.await?;
26-
let cred_client = DbusCredentialClient::new(conn);
22+
let client_conn = zbus::connection::Builder::session()?.build().await?;
23+
let cred_client = DbusCredentialClient::new(client_conn);
2724
let _handle = gui::start_gui_thread(request_rx, cred_client)?;
2825
println!(" ✅");
2926

credentialsd/src/main.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ async fn main() {
2828

2929
async fn run() -> Result<(), Box<dyn Error>> {
3030
print!("Connecting to D-Bus as client...\t");
31-
let dbus_client_conn = zbus::connection::Builder::session()?
32-
.name("xyz.iinuwa.credentialsd.Credentialsd")?
33-
.build()
34-
.await?;
31+
let dbus_client_conn = zbus::connection::Builder::session()?.build().await?;
3532
println!(" ✅");
3633

3734
print!("Starting D-Bus UI -> Credential control service...");

credentialsd/tests/meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ test(
4040
],
4141
protocol: 'exitcode',
4242
verbose: true,
43-
)
43+
)

dbus/meson.build

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
dbus_config = configuration_data()
2+
dbus_service_dir = datadir / 'dbus-1' / 'services'
3+
dbus_config.set('DAEMON_EXECUTABLE', bindir / backend_executable_name)
4+
dbus_config.set(
5+
'UI_EXECUTABLE',
6+
bindir / gui_executable_name,
7+
)
8+
configure_file(
9+
input: 'xyz.iinuwa.credentialsd.Credentials.service.in',
10+
install_dir: dbus_service_dir,
11+
output: 'xyz.iinuwa.credentialsd.Credentials.service',
12+
configuration: dbus_config,
13+
)
14+
configure_file(
15+
input: 'xyz.iinuwa.credentialsd.FlowControl.service.in',
16+
install_dir: dbus_service_dir,
17+
output: 'xyz.iinuwa.credentialsd.FlowControl.service',
18+
configuration: dbus_config,
19+
)
20+
configure_file(
21+
input: 'xyz.iinuwa.credentialsd.UiControl.service.in',
22+
install_dir: dbus_service_dir,
23+
output: 'xyz.iinuwa.credentialsd.UiControl.service',
24+
configuration: dbus_config,
25+
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[D-BUS Service]
2+
Name=xyz.iinuwa.credentialsd.Credentials
3+
Exec=@DAEMON_EXECUTABLE@
4+
SystemdService=xyz.iinuwa.credentialsd.Credentials.service
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[D-BUS Service]
2+
Name=xyz.iinuwa.credentialsd.FlowControl
3+
Exec=@DAEMON_EXECUTABLE@
4+
SystemdService=xyz.iinuwa.credentialsd.FlowControl.service
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[D-BUS Service]
2+
Name=xyz.iinuwa.credentialsd.UiControl
3+
Exec=@UI_EXECUTABLE@
4+
SystemdService=xyz.iinuwa.credentialsd.UiControl.service

meson.build

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ meson.add_dist_script(
2727

2828
subdir('credentialsd-common')
2929
subdir('credentialsd')
30-
subdir('credentialsd-ui')
30+
subdir('credentialsd-ui')
31+
subdir('dbus')
32+
subdir('systemd')

systemd/meson.build

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
systemd_config = configuration_data()
2+
# HACK: Not using libdir option, since on some distros (Fedora), libdir is `lib64`, but systemd is always in `lib`
3+
# If you know of a better way to do this, let me know
4+
systemd_user_service_dir = prefix / 'lib' / 'systemd' / 'user'
5+
systemd_config.set('DAEMON_EXECUTABLE', bindir / backend_executable_name)
6+
systemd_config.set(
7+
'UI_EXECUTABLE',
8+
bindir / gui_executable_name,
9+
)
10+
configure_file(
11+
input: 'xyz.iinuwa.credentialsd.Credentials.service.in',
12+
install_dir: systemd_user_service_dir,
13+
output: 'xyz.iinuwa.credentialsd.Credentials.service',
14+
configuration: systemd_config,
15+
)
16+
configure_file(
17+
input: 'xyz.iinuwa.credentialsd.FlowControl.service.in',
18+
install_dir: systemd_user_service_dir,
19+
output: 'xyz.iinuwa.credentialsd.FlowControl.service',
20+
configuration: systemd_config,
21+
)
22+
configure_file(
23+
input: 'xyz.iinuwa.credentialsd.UiControl.service.in',
24+
install_dir: systemd_user_service_dir,
25+
output: 'xyz.iinuwa.credentialsd.UiControl.service',
26+
configuration: systemd_config,
27+
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[Unit]
2+
Description=Service for creating and storing user credentials
3+
4+
[Service]
5+
Type=dbus
6+
BusName=xyz.iinuwa.credentialsd.Credentials
7+
ExecStart=@DAEMON_EXECUTABLE@

0 commit comments

Comments
 (0)