/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to dracut-module/ask-password-mandos.service

First version of a somewhat complete D-Bus server interface.  Also
change user/group name to "_mandos".

* debian/mandos.postinst: Rename old "mandos" user and group to
                          "_mandos"; create "_mandos" user and group
                          if none exist.
* debian/mandos-client.postinst: - '' -

* initramfs-tools-hook: Try "_mandos" before "mandos" as user and
                        group name.

* mandos (_datetime_to_dbus_struct): New; was previously local.
  (Client.started): Renamed to "last_started".  All users changed.
  (Client.started): New; boolean.
  (Client.dbus_object_path): New.
  (Client.check_command): Renamed to "checker_command".  All users
                          changed.
  (Client.__init__): Set and use "self.dbus_object_path".  Set
                     "self.started".
  (Client.start): Update "self.started".  Emit "self.PropertyChanged"
                  signals for both "started" and "last_started".
  (Client.stop): Update "self.started".  Emit "self.PropertyChanged"
                 signal for "started".
  (Client.checker_callback): Take additional "command" argument.  All
                             callers changed. Emit
                             "self.PropertyChanged" signal.
  (Client.bump_timeout): Emit "self.PropertyChanged" signal for
                         "last_checked_ok".
  (Client.start_checker): Emit "self.PropertyChanged" signal for
                          "checker_running".
  (Client.stop_checker): Emit "self.PropertyChanged" signal for
                         "checker_running".
  (Client.still_valid): Bug fix: use "getattr(self, started, False)"
                        instead of "self.started" in case this client
                        object is so new that the "started" attribute
                        has not been created yet.
  (Client.IntervalChanged, Client.CheckerIsRunning, Client.GetChecker,
  Client.GetCreated, Client.GetFingerprint, Client.GetHost,
  Client.GetInterval, Client.GetName, Client.GetStarted,
  Client.GetTimeout, Client.StateChanged, Client.TimeoutChanged):
  Removed; all callers changed.
  (Client.CheckerCompleted): Add "condition" and "command" arguments.
                             All callers changed.
  (Client.GetAllProperties, Client.PropertyChanged): New.
  (Client.StillValid): Renamed to "IsStillValid".
  (Client.StartChecker): Changed to its own function to avoid the
                         return value from "Client.start_checker()".
  (Client.Stop): Changed to its own function to avoid the return value
                 from "Client.stop()".
  (main): Try "_mandos" before "mandos" as user and group name.
          Removed inner function "remove_from_clients".  New inner
          class "MandosServer".

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- systemd -*-
2
 
3
 
# Copyright © 2019-2023 Teddy Hogeborn
4
 
# Copyright © 2019-2023 Björn Påhlsson
5
 
6
 
# This file is part of Mandos.
7
 
8
 
# Mandos is free software: you can redistribute it and/or modify it
9
 
# under the terms of the GNU General Public License as published by
10
 
# the Free Software Foundation, either version 3 of the License, or
11
 
# (at your option) any later version.
12
 
13
 
#     Mandos is distributed in the hope that it will be useful, but
14
 
#     WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 
#     GNU General Public License for more details.
17
 
18
 
# You should have received a copy of the GNU General Public License
19
 
# along with Mandos.  If not, see <http://www.gnu.org/licenses/>.
20
 
21
 
# Contact the authors at <mandos@recompile.se>.
22
 
23
 
# This systemd.service(5) unit file will start the Mandos
24
 
# password-agent(8mandos) program, which will in turn run
25
 
# mandos-client(8mandos) to get a password and send the password to
26
 
# any and all active password questions using the systemd “Password
27
 
# Agent” mechanism.
28
 
 
29
 
# This file should be installed in the root file system as
30
 
# "/usr/lib/dracut/modules.d/90mandos/ask-password-mandos.service" and
31
 
# will be installed in the initramfs image file as
32
 
# "/lib/systemd/system/ask-password-mandos.service" by dracut when
33
 
# dracut creates the initramfs image file.
34
 
 
35
 
[Unit]
36
 
Description=Forward Password Requests to remote Mandos server
37
 
Documentation=man:intro(8mandos) man:password-agent(8mandos) man:mandos-client(8mandos)
38
 
DefaultDependencies=no
39
 
Conflicts=shutdown.target
40
 
Before=shutdown.target
41
 
ConditionKernelCommandLine=!mandos=off
42
 
ConditionFileIsExecutable=/lib/mandos/password-agent
43
 
ConditionFileIsExecutable=/lib/mandos/mandos-client
44
 
ConditionFileNotEmpty=/etc/mandos/keys/pubkey.txt
45
 
ConditionFileNotEmpty=/etc/mandos/keys/seckey.txt
46
 
ConditionFileNotEmpty=/etc/mandos/keys/tls-pubkey.pem
47
 
ConditionFileNotEmpty=/etc/mandos/keys/tls-privkey.pem
48
 
ConditionPathIsMountPoint=!/sysroot
49
 
 
50
 
[Service]
51
 
ExecStart=/lib/mandos/password-agent $PASSWORD_AGENT_OPTIONS -- /lib/mandos/mandos-client --pubkey=/etc/mandos/keys/pubkey.txt --seckey=/etc/mandos/keys/seckey.txt --tls-pubkey=/etc/mandos/keys/tls-pubkey.pem --tls-privkey=/etc/mandos/keys/tls-privkey.pem $MANDOS_CLIENT_OPTIONS
52
 
#
53
 
# Please keep the above line intact, exactly as it is!  To add extra
54
 
# options to mandos-client, instead create an override file (e.g. with
55
 
# the command "systemctl edit --force ask-password-mandos.service"),
56
 
# and, in that file, put something like the following:
57
 
#
58
 
#       [Service]
59
 
#       Environment=MANDOS_CLIENT_OPTIONS=--debug
60
 
#
61
 
# Rebuild the initramfs using this command:
62
 
#
63
 
#       dpkg-reconfigure dracut
64
 
#
65
 
# Once the system has booted (possibly by typing in the password
66
 
# manually), you can see the log using this command:
67
 
#
68
 
#       journalctl --unit=ask-password-mandos.service
69
 
#
70
 
# Lastly, to remove the override file with extra options, run:
71
 
#
72
 
#       systemctl revert ask-password-mandos.service
73
 
#
74
 
# And rebuild the initramfs again, as above.