/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 DBUS-API

* mandos (Client.enable): Bug fix: Start new immediate checker last to
                          avoid race condition.
  (Client.disable): Optionally do not log message.
  (ClientDBus.disable): Do not log message if no signal should be sent.
  (string_to_delta): More informative error message.
  (main.cleanup): Emit D-Bus "ClientRemoved" signal for all clients.
                  Do not emit any other signal.  Move to after
                  "mandos_dbus_service" is defined.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
                   -*- mode: org; coding: utf-8 -*-
2
 
 
3
 
                    Mandos Server D-Bus Interface
4
 
 
5
 
This file documents the D-Bus interface to the Mandos server.
6
 
 
7
 
* Bus: System bus
8
 
  Bus name: "se.recompile.Mandos"
9
 
 
10
 
 
11
 
* Object Paths:
12
 
  
13
 
  | Path                  | Object            |
14
 
  |-----------------------+-------------------|
15
 
  | "/"                   | The Mandos Server |
16
 
 
17
 
  (To get a list of paths to client objects, use the standard D-Bus
18
 
  org.freedesktop.DBus.ObjectManager interface, which the server
19
 
  object supports.)
20
 
 
21
 
 
22
 
* Mandos Server Interface:
23
 
  Interface name: "se.recompile.Mandos"
24
 
  
25
 
** Methods:
26
 
*** RemoveClient(o: ObjectPath) → nothing
27
 
    Removes a client
28
 
   
29
 
** Signals:
30
 
*** ClientNotFound(s: Fingerprint, s: Address)
31
 
    A client connected from Address using Fingerprint, but was
32
 
    rejected because it was not found in the server.  The fingerprint
33
 
    is represented as a string of hexadecimal digits.  The address is
34
 
    an IPv4 or IPv6 address in its normal string format.
35
 
 
36
 
 
37
 
* Mandos Client Interface:
38
 
  Interface name: "se.recompile.Mandos.Client"
39
 
  
40
 
** Methods
41
 
*** Approve(b: Approve) → nothing
42
 
    Approve or deny a connected client waiting for approval.  If
43
 
    denied, a client will not be sent its secret.
44
 
    
45
 
*** CheckedOK() → nothing
46
 
    Assert that this client has been checked and found to be alive.
47
 
    This will restart the timeout before disabling this client.  See
48
 
    also the "LastCheckedOK" property.
49
 
 
50
 
** Properties
51
 
   
52
 
   Note: Many of these properties directly correspond to a setting in
53
 
   "clients.conf", in which case they are fully documented in
54
 
   mandos-clients.conf(5).
55
 
   
56
 
   | Name                    | Type | Access     | clients.conf        |
57
 
   |-------------------------+------+------------+---------------------|
58
 
   | ApprovedByDefault       | b    | Read/Write | approved_by_default |
59
 
   | ApprovalDelay (a)       | t    | Read/Write | approval_delay      |
60
 
   | ApprovalDuration (a)    | t    | Read/Write | approval_duration   |
61
 
   | ApprovalPending (b)     | b    | Read       | N/A                 |
62
 
   | Checker                 | s    | Read/Write | checker             |
63
 
   | CheckerRunning (c)      | b    | Read/Write | N/A                 |
64
 
   | Created (d)             | s    | Read       | N/A                 |
65
 
   | Enabled (e)             | b    | Read/Write | N/A                 |
66
 
   | Expires (f)             | s    | Read       | N/A                 |
67
 
   | ExtendedTimeout (a)     | t    | Read/Write | extended_timeout    |
68
 
   | Fingerprint             | s    | Read       | fingerprint         |
69
 
   | Host                    | s    | Read/Write | host                |
70
 
   | Interval (a)            | t    | Read/Write | interval            |
71
 
   | LastApprovalRequest (g) | s    | Read       | N/A                 |
72
 
   | LastCheckedOK (h)       | s    | Read/Write | N/A                 |
73
 
   | LastCheckerStatus (i)   | n    | Read       | N/A                 |
74
 
   | LastEnabled (j)         | s    | Read       | N/A                 |
75
 
   | Name                    | s    | Read       | (Section name)      |
76
 
   | Secret (k)              | ay   | Write      | secret (or secfile) |
77
 
   | Timeout (a)             | t    | Read/Write | timeout             |
78
 
   
79
 
   a) Represented as milliseconds.
80
 
   
81
 
   b) An approval is currently pending.
82
 
   
83
 
   c) Changing this property can either start a new checker or abort a
84
 
      running one.
85
 
   
86
 
   d) The creation time of this client object, as an RFC 3339 string.
87
 
   
88
 
   e) Changing this property enables or disables a client.
89
 
   
90
 
   f) The date and time this client will be disabled, as an RFC 3339
91
 
      string, or an empty string if this is not scheduled.
92
 
   
93
 
   g) The date and time of the last approval request, as an RFC 3339
94
 
      string, or an empty string if this has not happened.
95
 
   
96
 
   h) The date and time a checker was last successful, as an RFC 3339
97
 
      string, or an empty string if this has not happened.  Setting
98
 
      this property is equivalent to calling CheckedOK(), i.e. the
99
 
      current time is set, regardless of the string sent.  Please
100
 
      always use an empty string when setting this property, to allow
101
 
      for possible future expansion.
102
 
   
103
 
   i) The exit status of the last checker, -1 if it did not exit
104
 
      cleanly, -2 if a checker has not yet returned.
105
 
   
106
 
   j) The date and time this client was last enabled, as an RFC 3339
107
 
      string, or an empty string if this has not happened.
108
 
   
109
 
   k) A raw byte array, not hexadecimal digits.
110
 
 
111
 
** Signals
112
 
*** CheckerCompleted(n: Exitcode, x: Waitstatus, s: Command)
113
 
    A checker (Command) has completed.  Exitcode is either the exit
114
 
    code or -1 for abnormal exit.  In any case, the full Waitstatus
115
 
    (as from wait(2)) is also available.
116
 
    
117
 
*** CheckerStarted(s: Command)
118
 
    A checker command (Command) has just been started.
119
 
    
120
 
*** GotSecret()
121
 
    This client has been sent its secret.
122
 
    
123
 
*** NeedApproval(t: Timeout, b: ApprovedByDefault)
124
 
    This client will be approved or denied in exactly Timeout
125
 
    milliseconds, depending on ApprovedByDefault.  Approve() can now
126
 
    usefully be called on this client object.
127
 
    
128
 
*** Rejected(s: Reason)
129
 
    This client was not given its secret for a specified Reason.
130
 
 
131
 
* Copyright
132
 
 
133
 
    Copyright © 2010-2018 Teddy Hogeborn
134
 
    Copyright © 2010-2018 Björn Påhlsson
135
 
  
136
 
** License:
137
 
 
138
 
   This file is part of Mandos.
139
 
 
140
 
   Mandos is free software: you can redistribute it and/or modify it
141
 
   under the terms of the GNU General Public License as published by
142
 
   the Free Software Foundation, either version 3 of the License, or
143
 
   (at your option) any later version.
144
 
 
145
 
   Mandos is distributed in the hope that it will be useful, but
146
 
   WITHOUT ANY WARRANTY; without even the implied warranty of
147
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
148
 
   General Public License for more details.
149
 
 
150
 
   You should have received a copy of the GNU General Public License
151
 
   along with Mandos.  If not, see <http://www.gnu.org/licenses/>.
152
 
 
153
 
 
154
 
#+STARTUP: showall