Codebase list realmd / a34b68e
Imported Upstream version 0.13.2 Laurent Bigonville 11 years ago
142 changed file(s) with 10170 addition(s) and 4674 deletion(s). Raw diff Collapse all Expand all
00 # Generate automatically. Do not edit.
1
2 commit 22c2eb4d5533b1fa33a8ed32d07eb04da2a0edeb
3 Author: Stef Walter <stefw@gnome.org>
4 Date: 2013-02-19
5
6 Release version 0.13.2
7
8 * This is for build fixes
9
10 configure.ac | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13 commit 864ae65e71afc5d175c046a546e8de9e594d847f
14 Author: Stef Walter <stefw@gnome.org>
15 Date: 2013-02-19
16
17 Distribute the docbook-params.xsl file for building internal docs
18
19 doc/internals/Makefile.am | 1 +
20 1 file changed, 1 insertion(+)
21
22 commit e9fc288144e787ec67dd9c3e0989b598aff3e5f3
23 Author: Stef Walter <stefw@gnome.org>
24 Date: 2013-02-19
25
26 Disable parallel builds in the doc/manual directory
27
28 Our target for building the gdbus-codegen documentation doesn't work
29 in parallel and causes race conditions when moving around temporary
30 files
31
32 doc/manual/Makefile.am | 5 ++++-
33 1 file changed, 4 insertions(+), 1 deletion(-)
34
35 commit ea00fb1edc14320a8f69b05d39941873a4ad0206
36 Author: Stef Walter <stefw@gnome.org>
37 Date: 2013-02-19
38
39 Fix warning about use of uninitialized variable
40
41 service/realm-provider.c | 2 +-
42 1 file changed, 1 insertion(+), 1 deletion(-)
43
44 commit 4db9a8fcad8ab068b69af818071cea09b02bfeb2
45 Author: Stef Walter <stefw@gnome.org>
46 Date: 2013-02-18
47
48 Remove gtk-doc from dependencies listed on the website
49
50 doc/website/content/contribute.html | 4 ++--
51 1 file changed, 2 insertions(+), 2 deletions(-)
52
53 commit 567972cf2cd019c5a3a4ab242f970c6e0bff8cdb
54 Author: Stef Walter <stefw@gnome.org>
55 Date: 2013-02-18
56
57 Release version 0.13.1
58
59 * Fix some build and distribution issues
60
61 configure.ac | 2 +-
62 doc/manual/Makefile.am | 2 +-
63 2 files changed, 2 insertions(+), 2 deletions(-)
64
65 commit 3a8f31ceb5b29b4c71cff9cf8665746151db2068
66 Author: Stef Walter <stefw@gnome.org>
67 Date: 2013-02-18
68
69 Release version 0.13
70
71 NEWS | 15 +++++++++++++++
72 configure.ac | 2 +-
73 2 files changed, 16 insertions(+), 1 deletion(-)
74
75 commit 268a3a8a829a51c1d787bfabbc43cadf2175f741
76 Author: Stef Walter <stefw@gnome.org>
77 Date: 2013-02-11
78
79 Use a private cache directory for temp files
80
81 Instead of using /tmp use our own personal cache directory for temporary
82 files. We set the TMPDIR environment variable. This is consumed by
83 g_get_tmp_dir() and in adcli.
84
85 https://bugs.freedesktop.org/show_bug.cgi?id=60404
86
87 configure.ac | 3 +++
88 service/Makefile.am | 2 ++
89 service/realm-daemon.c | 3 +++
90 3 files changed, 8 insertions(+)
91
92 commit 865b7079f40be160a5c435aeb14a7e77bbe0346e
93 Author: Stef Walter <stefw@gnome.org>
94 Date: 2013-02-13
95
96 Pull translations from transifex
97
98 .gitignore | 2 +
99 Makefile.am | 3 +
100 build/tx-update | 69 +++++++++++++++++++
101 po/pl.po | 206 +++++++++++++++++++++++++-------------------------------
102 4 files changed, 167 insertions(+), 113 deletions(-)
103
104 commit da2183484f69c6a66c26b8f9c4b19fcf377ae187
105 Author: Stef Walter <stefw@gnome.org>
106 Date: 2013-02-07
107
108 Detect incorrect passwords when using 'net ads join' login via RPC
109
110 * We have to do screen scraping to detect the right passwords and
111 return an intelligent error code and message
112
113 https://bugs.freedesktop.org/show_bug.cgi?id=60423
114
115 service/realm-samba-enroll.c | 9 ++++++++-
116 1 file changed, 8 insertions(+), 1 deletion(-)
117
118 commit b89a0f6808a0d325131f940e5619c98fc31b36e5
119 Author: Stef Walter <stefw@gnome.org>
120 Date: 2013-02-11
121
122 Use ipa-client-install to provide join functionality for IPA domains
123
124 * Currently we just pass the password, and don't use a ccache
125 * In order to use a ccache ipa-client-install needs to be modified
126 * One time password support is present
127 * Deconfigure and Leave support is present
128 * Update documentation
129
130 https://bugs.freedesktop.org/show_bug.cgi?id=55041
131
132 doc/internals/realmd-internals.xml | 15 +-
133 doc/manual/realmd-guide-freeipa.xml | 108 +++++++-
134 po/POTFILES.in | 1 +
135 service/realm-sssd-ipa.c | 489 +++++++++++++++++++++++++++++++++++-
136 service/realmd-defaults.conf | 1 +
137 service/realmd-redhat.conf | 3 +
138 6 files changed, 610 insertions(+), 7 deletions(-)
139
140 commit 16c9b7b8e613802babcf0393ebb4fc6b903af936
141 Author: Stef Walter <stefw@gnome.org>
142 Date: 2013-02-11
143
144 Add a utility function for updating sssd.conf domains
145
146 https://bugs.freedesktop.org/show_bug.cgi?id=55041
147
148 service/realm-sssd-config.c | 88 +++++++++++++++++++++++++++++++++++----------
149 service/realm-sssd-config.h | 5 +++
150 tests/test-sssd-config.c | 55 ++++++++++++++++++++++++++++
151 3 files changed, 129 insertions(+), 19 deletions(-)
152
153 commit 9e820c00f8994f0ed972e4caadfc7bed2100f9d6
154 Author: Stef Walter <stefw@gnome.org>
155 Date: 2012-11-27
156
157 Refactor out config domain identification logic
158
159 Make sure we use the same logic for figure out a realm name
160 from an sssd.conf section, as well as the type.
161
162 https://bugs.freedesktop.org/show_bug.cgi?id=55041
163
164 service/realm-sssd-config.c | 57 +++++++++++++++++++++++++++++++++++++++++++
165 service/realm-sssd-config.h | 6 +++++
166 service/realm-sssd-provider.c | 45 +++++++++++-----------------------
167 service/realm-sssd.c | 35 +++++++++++++-------------
168 4 files changed, 95 insertions(+), 48 deletions(-)
169
170 commit 91bb537d02fb78a01aafa132a8c90e0f69045814
171 Author: Stef Walter <stefw@gnome.org>
172 Date: 2012-11-22
173
174 Pull out function to build password input out of passwords
175
176 https://bugs.freedesktop.org/show_bug.cgi?id=55041
177
178 service/realm-command.c | 37 +++++++++++++++++++++++++++++++++++++
179 service/realm-command.h | 2 ++
180 service/realm-samba-enroll.c | 36 ++----------------------------------
181 3 files changed, 41 insertions(+), 34 deletions(-)
182
183 commit 6778b0ee3894bc6fc24d131eceee2b72efcfa0d3
184 Author: Stef Walter <stefw@gnome.org>
185 Date: 2012-09-04
186
187 Expose the method for updating an SSSD realm's properties
188
189 https://bugs.freedesktop.org/show_bug.cgi?id=55041
190
191 service/realm-sssd.c | 12 +++++-------
192 service/realm-sssd.h | 2 ++
193 2 files changed, 7 insertions(+), 7 deletions(-)
194
195 commit 6f592339664894b488fce03dfa00ef016d6e5d6e
196 Author: Stef Walter <stefw@gnome.org>
197 Date: 2013-02-11
198
199 Move the example provider documentation to internals document
200
201 doc/internals/realmd-internals.xml | 32 +++++++++++++++++
202 doc/manual/realmd-guide-configuring.xml | 63 ---------------------------------
203 2 files changed, 32 insertions(+), 63 deletions(-)
204
205 commit 2f6ed14feb4eec936bf94b886a3c091ffcd07346
206 Author: Yassir Elley <yelley@redhat.com>
207 Date: 2013-02-08
208
209 fixed typos for realm man page
210
211 https://bugs.freedesktop.org/show_bug.cgi?id=60497
212
213 doc/manual/realm.xml | 10 +++++-----
214 1 file changed, 5 insertions(+), 5 deletions(-)
215
216 commit 9530a472c269fd116cb195990577ab045d2024c6
217 Author: Stef Walter <stefw@gnome.org>
218 Date: 2013-02-05
219
220 Add the internals documentation to the realmd website
221
222 doc/Makefile.am | 3 ++-
223 doc/internals/Makefile.am | 3 +++
224 doc/website/Makefile.am | 2 +-
225 doc/website/content/contribute.html | 6 ++++++
226 4 files changed, 12 insertions(+), 2 deletions(-)
227
228 commit a99db18ee5e0362296e5524437029132629ea82b
229 Author: Stef Walter <stefw@gnome.org>
230 Date: 2013-02-01
231
232 Don't wrap options in realm client manual page
233
234 doc/manual/static/style.css | 4 ++++
235 1 file changed, 4 insertions(+)
236
237 commit 28b8d1bbefb1351e19021ffeb27cf81cf18ebe3e
238 Author: Yassir Elley <yelley@redhat.com>
239 Date: 2013-01-31
240
241 add membership-software to dbus xml api - second try
242
243 https://bugs.freedesktop.org/show_bug.cgi?id=60135
244
245 dbus/org.freedesktop.realmd.xml | 6 ++++++
246 1 file changed, 6 insertions(+)
247
248 commit 86df446b727b1ba3bd5b71ce27466a3d75f86f9f
249 Author: Stef Walter <stefw@gnome.org>
250 Date: 2013-01-30
251
252 Some tweaks and clarifications to the internal documentation
253
254 * realmd is not Fedora or Red Hat specific.
255 * realmd will support non-Kerberos realms in the future
256 * Add some more clients to the list
257 * Our FreeIPA support will support joining soon
258 * No need to document the realm object path form
259 * Other minor tweaks
260
261 https://bugs.freedesktop.org/show_bug.cgi?id=60066
262
263 doc/internals/realmd-internals.xml | 37 +++++++++++++++++++++----------------
264 1 file changed, 21 insertions(+), 16 deletions(-)
265
266 commit f16192c70a272110d4f4288d6f1e37f2ffed7c81
267 Author: Stef Walter <stefw@gnome.org>
268 Date: 2013-01-30
269
270 Add back 'make upload' target for manual
271
272 doc/manual/Makefile.am | 3 +++
273 1 file changed, 3 insertions(+)
274
275 commit cd17373681c4e7505f5eaaa13ce2c64b0e04132c
276 Author: Yassir Elley <yelley@redhat.com>
277 Date: 2013-01-29
278
279 Fixed typos: inserted commas, added missing words, corrected mistakes
280
281 https://bugs.freedesktop.org/show_bug.cgi?id=60023
282
283 dbus/org.freedesktop.realmd.xml | 64 ++++++++++++++++++++---------------------
284 1 file changed, 32 insertions(+), 32 deletions(-)
285
286 commit c5fc50506aef7795fbcd502332d56ea738affd13
287 Author: Yassir Elley <yelley@redhat.com>
288 Date: 2013-01-29
289
290 Fixed blurb for Provider property's param-spec
291
292 https://bugs.freedesktop.org/show_bug.cgi?id=60024
293
294 service/realm-kerberos.c | 2 +-
295 1 file changed, 1 insertion(+), 1 deletion(-)
296
297 commit 991f2a356d6f203b235f0b0f3406a576a742b281
298 Author: Yassir Elley <yelley@redhat.com>
299 Date: 2013-01-29
300
301 Fixed omissions and typos in command line man page.
302
303 doc/manual/realm.xml | 72 ++++++++++++++++++++++++++++++++++++++--------------
304 1 file changed, 53 insertions(+), 19 deletions(-)
305
306 commit c11193d29383e6541318e7f7f1353f88bd85a677
307 Author: Yassir Elley <yelley@redhat.com>
308 Date: 2013-01-29
309
310 Replaced "active-directory" with "users" in user configuration page.
311
312 https://bugs.freedesktop.org/show_bug.cgi?id=60026
313
314 doc/manual/realmd-guide-configuring.xml | 4 ++--
315 1 file changed, 2 insertions(+), 2 deletions(-)
316
317 commit d62bf6af88efb1b184e44b934dbe5c375f3a8f70
318 Author: Stef Walter <stefw@gnome.org>
319 Date: 2013-01-29
320
321 Add some rough internal documentation
322
323 Converted from ODP to docbook by Stef Walter
324
325 .gitignore | 1 +
326 configure.ac | 1 +
327 doc/Makefile.am | 2 +-
328 doc/internals/Makefile.am | 43 ++++
329 doc/internals/discover-method.svg | 243 ++++++++++++++++++++++
330 doc/internals/docbook-params.xsl | 5 +
331 doc/internals/join-method.svg | 258 ++++++++++++++++++++++++
332 doc/internals/realmd-internals.xml | 336 +++++++++++++++++++++++++++++++
333 doc/internals/static/discover-method.png | Bin 0 -> 38497 bytes
334 doc/internals/static/join-method.png | Bin 0 -> 30160 bytes
335 10 files changed, 888 insertions(+), 1 deletion(-)
336
337 commit b30cf48ee50038139248ac69db27ce8a734cf0a9
338 Author: Stef Walter <stefw@gnome.org>
339 Date: 2013-01-29
340
341 Don't use gtk-doc for documentation
342
343 Build our own docbook manual, although we use the gtk-doc stylesheet
344 and css to format the manual, especially the API reference.
345
346 Makefile.am | 2 +-
347 autogen.sh | 2 -
348 configure.ac | 41 +-
349 doc/Makefile.am | 7 +-
350 doc/manual/Makefile.am | 123 ++---
351 doc/manual/gdbus-fix-bugs.xsl | 21 +
352 doc/manual/gtk-doc.xsl | 897 ++++++++++++++++++++++++++++++++
353 doc/manual/html.css | 105 ----
354 doc/manual/realm.xml | 12 +-
355 doc/manual/realmd-docs.sgml | 52 --
356 doc/manual/realmd-docs.xml | 51 ++
357 doc/manual/realmd-guide-kerberos.xml | 2 +-
358 doc/manual/static/gtk-doc.css | 264 ++++++++++
359 doc/manual/static/home.png | Bin 0 -> 654 bytes
360 doc/manual/static/left.png | Bin 0 -> 459 bytes
361 doc/manual/static/right.png | Bin 0 -> 472 bytes
362 doc/manual/static/style.css | 106 ++++
363 doc/manual/static/up.png | Bin 0 -> 406 bytes
364 doc/manual/version-greater-or-equal.xsl | 54 ++
365 19 files changed, 1494 insertions(+), 245 deletions(-)
366
367 commit 8b118666fab57ce389dddcf0eda62be37235d5e5
368 Author: Nuno Araujo <nuno.araujo@russo79.com>
369 Date: 2013-01-16
370
371 Fix the build with automake 1.13
372
373 In Automake 1.13, the long-deprecated macro AM_CONFIG_HEADER (deprecated
374 since 2002) has been removed in favour of AC_CONFIG_HEADERS.
375
376 autogen.sh | 2 +-
377 configure.ac | 2 +-
378 2 files changed, 2 insertions(+), 2 deletions(-)
379
380 commit 9e94ddac33af74e9235e1e4fe70e29d393b03153
381 Author: Marius Vollmer <marius.vollmer@redhat.com>
382 Date: 2013-01-15
383
384 Make Example Provider cancellable
385
386 https://bugs.freedesktop.org/show_bug.cgi?id=57614
387
388 service/realm-example.c | 225 +++++++++++++++++++++++++++++++++++++++---------
389 1 file changed, 185 insertions(+), 40 deletions(-)
390
391 commit 74b999a164f7a8b4597d625a638a71664af358ac
392 Author: Stef Walter <stefw@gnome.org>
393 Date: 2013-01-15
394
395 Thread cancellation through basic operations
396
397 * Make running commands and discovery cancellable
398
399 https://bugs.freedesktop.org/show_bug.cgi?id=57614
400
401 service/realm-adcli-enroll.c | 2 +-
402 service/realm-command.c | 10 +++++-----
403 service/realm-command.h | 2 --
404 service/realm-ipa-discover.c | 40 ++++++++++++++++++++++++++++-----------
405 service/realm-kerberos-discover.c | 7 +++++--
406 service/realm-kerberos.c | 13 ++++++++++---
407 service/realm-packages.c | 5 ++++-
408 service/realm-provider.c | 11 ++++++++++-
409 service/realm-samba-enroll.c | 5 +----
410 service/realm-samba-winbind.c | 4 ++--
411 service/realm-service.c | 2 +-
412 service/realm-sssd-ad.c | 2 +-
413 service/realm-sssd.c | 4 ++--
414 13 files changed, 71 insertions(+), 36 deletions(-)
415
416 commit 2cc33250d2f90c4b123085944f0f96a451e1ba95
417 Author: Marius Vollmer <marius.vollmer@redhat.com>
418 Date: 2013-01-14
419
420 Implement support for Service.Cancel() method
421
422 * Tag each GDBusMethodInvocation with a GCancellable which is placed in
423 a hash table by operation_id.
424 * When Cancel() is called, lookup the GCancellable and cancel it.
425 * Move the connection filter, authorization code, and other invocation
426 related code into its own file. This is the only thread aware code
427 in the daemon, so putting in it one place on its own makes sense.
428 * Remove the frob-package-set tool as there was just too many intermingled
429 dependencies on the service daemon code.
430 * Make Ctrl-C in the client send a Cancel() to the service
431
432 https://bugs.freedesktop.org/show_bug.cgi?id=57614
433
434 dbus/realm-dbus-constants.h | 1 +
435 po/POTFILES.in | 1 +
436 service/Makefile.am | 1 +
437 service/realm-daemon.c | 301 +------------------
438 service/realm-daemon.h | 13 -
439 service/realm-diagnostics.c | 41 +--
440 service/realm-diagnostics.h | 5 -
441 service/realm-errors.c | 1 +
442 service/realm-errors.h | 1 +
443 service/realm-invocation.c | 610 ++++++++++++++++++++++++++++++++++++++
444 service/realm-invocation.h | 42 +++
445 service/realm-kerberos-discover.c | 21 +-
446 service/realm-kerberos.c | 76 ++---
447 service/realm-provider.c | 35 +--
448 tests/Makefile.am | 22 +-
449 tests/discover-python.py | 31 +-
450 tests/frob-package-set.c | 54 ----
451 tools/realm-client.c | 32 ++
452 tools/realm.c | 3 +
453 tools/realm.h | 2 +-
454 20 files changed, 775 insertions(+), 518 deletions(-)
455
456 commit c1e52fa23902968958c25a486fe32e258380b50e
457 Author: Piotr Drąg <piotrdrag@gmail.com>
458 Date: 2013-01-12
459
460 Updated Polish translation
461
462 https://bugs.freedesktop.org/show_bug.cgi?id=59295
463
464 po/pl.po | 167 +++++++++++++++++++++++++++++++++++++++------------------------
465 1 file changed, 103 insertions(+), 64 deletions(-)
466
467 commit 0cc18b02c9ca29c5d66b05b318ea34d9288ff611
468 Author: Marius Vollmer <mvollmer@redhat.com>
469 Date: 2012-11-27
470
471 Export the Service interface.
472
473 service/realm-daemon.c | 17 ++++++++++-------
474 1 file changed, 10 insertions(+), 7 deletions(-)
475
476 commit d4da7a7cb3847458c36993a431c283f07142815b
477 Author: Stef Walter <stefw@gnome.org>
478 Date: 2012-11-27
479
480 When running in --debug make warnings and criticals fatal
481
482 service/realm-daemon.c | 4 ++--
483 1 file changed, 2 insertions(+), 2 deletions(-)
484
485 commit fa890052b151a2deed584aa9cc6f2de18af3db3e
486 Author: Stef Walter <stefw@gnome.org>
487 Date: 2012-11-27
488
489 Better handling of missing packages section in settings file.
490
491 service/realm-packages.c | 4 ++++
492 1 file changed, 4 insertions(+)
493
494 commit b011101cfc2cc883ce6c263b69b5f9aa969ea7bf
495 Author: Stef Walter <stefw@gnome.org>
496 Date: 2012-11-23
497
498 Don't assume that we can use kerberos to validate admin password
499
500 This isn't the case for the example provider, and could easily
501 not be the case for the samba provider, if the domain is not
502 discoverable or accessible using krb5 for some reason.
503
504 https://bugs.freedesktop.org/show_bug.cgi?id=55537
505
506 tools/realm-client.c | 21 ++++++++++-----------
507 1 file changed, 10 insertions(+), 11 deletions(-)
508
509 commit ae3c03d93662d70b9020b00b7b1e0057bc047932
510 Author: Stef Walter <stefw@gnome.org>
511 Date: 2012-11-23
512
513 Create the localstatedir for the example provider
514
515 This allows the example provider to create appropriate files.
516
517 https://bugs.freedesktop.org/show_bug.cgi?id=55537
518
519 service/Makefile.am | 1 +
520 1 file changed, 1 insertion(+)
521
522 commit 22d3c96eb775c224d8c24d2bd22457993a8c5d29
523 Author: Marius Vollmer <mvollmer@redhat.com>
524 Date: 2012-11-23
525
526 Fixes.
527
528 * Off-by-one error when checking whether there is a '.' in front of
529 the "example.*" suffix.
530
531 * Consistently use realm_kerberos_get_name for accessing the settings.
532
533 * Logic error when checking whether we are enrolled before leaving.
534
535 * Only discover domains that have a section in the settings.
536
537 https://bugs.freedesktop.org/show_bug.cgi?id=55537
538
539 service/realm-example-provider.c | 5 +++--
540 service/realm-example.c | 12 ++++++++----
541 2 files changed, 11 insertions(+), 6 deletions(-)
542
543 commit 2d7af1ac418a2639d6e07084618c9f988bec2754
544 Author: Stef Walter <stefw@gnome.org>
545 Date: 2012-10-25
546
547 Add example provider, disabled by default
548
549 * This is a provider for 'example.com' and related domains
550 which can be enabled to test some basic functionality
551 of realmd, without a real domain.
552
553 https://bugs.freedesktop.org/show_bug.cgi?id=55537
554
555 dbus/realm-dbus-constants.h | 1 +
556 doc/manual/realmd-guide-configuring.xml | 64 +++++
557 po/POTFILES.in | 1 +
558 service/Makefile.am | 3 +
559 service/realm-daemon.c | 8 +
560 service/realm-example-provider.c | 254 +++++++++++++++++
561 service/realm-example-provider.h | 38 +++
562 service/realm-example.c | 485 ++++++++++++++++++++++++++++++++
563 service/realm-example.h | 40 +++
564 service/realm-kerberos.c | 30 +-
565 service/realm-kerberos.h | 2 +
566 service/realmd-defaults.conf | 7 +
567 12 files changed, 918 insertions(+), 15 deletions(-)
568
569 commit 3e8b1bcc04cc579b5eef16a11dac307f5e7e1a6e
570 Author: Stef Walter <stefw@gnome.org>
571 Date: 2012-10-25
572
573 Add function for getting boolean from settings
574
575 https://bugs.freedesktop.org/show_bug.cgi?id=55537
576
577 service/realm-settings.c | 17 +++++++++++++++++
578 service/realm-settings.h | 3 +++
579 2 files changed, 20 insertions(+)
580
581 commit 5ba45c96658e5d47d5ba5d7e4f96e9b3bba2ea05
582 Author: Stef Walter <stefw@gnome.org>
583 Date: 2012-10-25
584
585 Add function for getting all sections of INI conf file
586
587 https://bugs.freedesktop.org/show_bug.cgi?id=55537
588
589 service/realm-ini-config.c | 18 ++++++++++++++++++
590 service/realm-ini-config.h | 2 ++
591 tests/test-ini-config.c | 15 +++++++++++++++
592 3 files changed, 35 insertions(+)
593
594 commit 5b32ef7a3d584c7d6f6d7062654a4fc7567f922b
595 Author: Stef Walter <stefw@gnome.org>
596 Date: 2012-11-22
597
598 Add option to realm command to only print out realm name
599
600 When --name-only is specified only print out the name of the realm
601 and not all the detailed info.
602
603 https://bugs.freedesktop.org/show_bug.cgi?id=55415
604
605 tools/realm-discover.c | 20 ++++++++++++++++----
606 1 file changed, 16 insertions(+), 4 deletions(-)
607
608 commit 7946677e223b6d8eae15e6610d9e69c714721c74
609 Author: Stef Walter <stefw@gnome.org>
610 Date: 2012-11-22
611
612 Add some documentation about contributing
613
614 doc/website/content/base.html | 3 +-
615 doc/website/content/contribute.html | 62 +++++++++++++++++++++++++++++++++++++
616 doc/website/content/index.html | 5 ++-
617 doc/website/content/style.css | 9 +++++-
618 4 files changed, 74 insertions(+), 5 deletions(-)
619
620 commit 13bfcaf5813ada0fcaa6c9452dc7120186aa90fd
621 Author: Stef Walter <stefw@gnome.org>
622 Date: 2012-11-22
623
624 No longer a need to restart accounts-service after a join
625
626 https://bugs.freedesktop.org/show_bug.cgi?id=57409
627
628 service/realmd-redhat.conf | 5 +++--
629 1 file changed, 3 insertions(+), 2 deletions(-)
630
631 commit b495e05b2354aeca19f3da6c5f9e8986b2ed8b27
632 Author: Stef Walter <stefw@gnome.org>
633 Date: 2012-11-22
634
635 Update the known commands and packages for debian
636
637 Tested on Ubuntu 12.04, need to test on Debian at some point.
638
639 https://bugs.freedesktop.org/show_bug.cgi?id=57408
640
641 service/realmd-debian.conf | 5 +++++
642 1 file changed, 5 insertions(+)
643
644 commit dcf382192f247d9b1607993ad06f4882cf82874d
645 Author: Stef Walter <stefw@gnome.org>
646 Date: 2012-11-22
647
648 Only use the XDG user data directory if it exists
649
650 Use the temp directory if the user data directory doesn't exist.
651
652 https://bugs.freedesktop.org/show_bug.cgi?id=57407
653
654 tools/realm.c | 7 ++++++-
655 1 file changed, 6 insertions(+), 1 deletion(-)
656
657 commit 857ade88dd15fbd06ec209b8c6d0d74fb6d4f3c3
658 Author: Stef Walter <stefw@gnome.org>
659 Date: 2012-11-22
660
661 Better handling of missing, blank or invalid known commands
662
663 * Don't use /bin/true or /bin/false to handle invalid
664 or blank realmd known commands
665 * Directly complete the tasks or fail them early without
666 forking a sub process.
667
668 https://bugs.freedesktop.org/show_bug.cgi?id=57404
669
670 service/realm-command.c | 46 ++++++++++++++++++++++++++--------------------
671 1 file changed, 26 insertions(+), 20 deletions(-)
672
673 commit 8a1f39d2b6787b349fbfebf8b480ab0ca9681b8e
674 Author: Stef Walter <stefw@gnome.org>
675 Date: 2012-11-20
676
677 Fix race on DBus peer to peer connections
678
679 * Make sure we don't try to process incoming messages until
680 the objects have been exported.
681
682 https://bugs.freedesktop.org/show_bug.cgi?id=57318
683
684 service/realm-daemon.c | 5 ++++-
685 1 file changed, 4 insertions(+), 1 deletion(-)
686
687 commit ced21a39af803a4c27d5727b62f5d6efbfe04fcd
688 Author: Yassir Elley <yelley@redhat.com>
689 Date: 2012-11-13
690
691 Cleaned up "uninitialized variable" warning from gcc
692
693 https://bugs.freedesktop.org/show_bug.cgi?id=57100
694
695 tools/realm-client.c | 2 +-
696 1 file changed, 1 insertion(+), 1 deletion(-)
697
698 commit dd44f7e7f9c1a8b92d1106681487d1baec0da88c
699 Author: Stef Walter <stefw@gnome.org>
700 Date: 2012-11-19
701
702 Avoid race conditions when doing IPA discovery
703
704 * We don't want to complete an IPA discovery before the outstanding
705 counter is incremented.
706
707 https://bugs.freedesktop.org/show_bug.cgi?id=57277
708
709 service/realm-ipa-discover.c | 10 ----------
710 service/realm-kerberos-discover.c | 2 +-
711 2 files changed, 1 insertion(+), 11 deletions(-)
712
713 commit 1a24af68e4266c259a488416170e0a31a9397079
714 Author: Stef Walter <stefw@gnome.org>
715 Date: 2012-11-19
716
717 Quit the daemon when SIGTERM or SIGINT received
718
719 * This allows us to correctly write out coverage data, since gcov
720 writes using an atexit() callback equivalent.
721
722 service/realm-daemon.c | 11 +++++++++++
723 1 file changed, 11 insertions(+)
724
725 commit a6d43afb0e04bc22cf4031860980a269390fb1c7
726 Author: Stef Walter <stefw@gnome.org>
727 Date: 2012-11-19
728
729 Allow specifying --membership-software when discovering a realm
730
731 * This limits the discovery to realms for which we can use the
732 given --membership-software
733 * Useful from kickstart files.
734
735 https://bugs.freedesktop.org/show_bug.cgi?id=57276
736
737 service/realm-provider.c | 13 ++++++++++---
738 service/realm-provider.h | 5 +++--
739 service/realm-samba-provider.c | 7 ++++---
740 service/realm-sssd-provider.c | 16 ++++++++++++----
741 tools/realm-client.c | 2 ++
742 tools/realm-client.h | 1 +
743 tools/realm-discover.c | 17 +++++++++++++----
744 tools/realm-join.c | 3 ++-
745 8 files changed, 47 insertions(+), 17 deletions(-)
746
747 commit 29116a545ead9a3ac1eff1650aca872f6c7d9f91
748 Author: Stef Walter <stefw@gnome.org>
749 Date: 2012-11-13
750
751 Fix use of uninitialized variable.
752
753 Caught by Yassir Elley
754
755 tools/realm-client.c | 1 -
756 1 file changed, 1 deletion(-)
1757
2758 commit adbdfcd35d008f35040f06ff9e4a944e78385de9
3759 Author: Stef Walter <stefw@gnome.org>
44225178 AUTHORS | 1 +
44235179 COPYING | 482 ++++++++++++++++++++++++++++++++++++++++++++++++++++
44245180 ChangeLog | 32 ++++
5181 INSTALL | 0
44255182 Makefile.am | 32 ++++
44265183 Makefile.decl | 14 ++
44275184 NEWS | 4 +
44295186 autogen.sh | 81 +++++++++
44305187 build/Makefile.am | 1 +
44315188 configure.ac | 131 ++++++++++++++
5189 po/POTFILES.in | 0
44325190 service/Makefile.am | 29 ++++
44335191 service/ic-main.c | 20 +++
4434 13 files changed, 857 insertions(+)
5192 15 files changed, 857 insertions(+)
99 --disable-coverage \
1010 --enable-strict \
1111 --disable-silent-rules \
12 --enable-gtk-doc
12 --enable-doc
1313
1414 dist-hook:
1515 @if test -d "$(srcdir)/.git"; \
4040 upload-release: $(DIST_ARCHIVES)
4141 gpg --detach-sign --local-user 'stef@thewalter.net' $(DIST_ARCHIVES)
4242 scp $(DIST_ARCHIVES) $(DIST_ARCHIVES).sig anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/releases
43
44 transifex:
45 sh build/tx-update
4949 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
5050 $(srcdir)/Makefile.in $(srcdir)/config.h.in \
5151 $(top_srcdir)/Makefile.decl $(top_srcdir)/configure AUTHORS \
52 COPYING ChangeLog INSTALL NEWS compile depcomp install-sh \
53 missing
52 COPYING ChangeLog INSTALL NEWS compile config.guess depcomp \
53 install-sh missing
5454 subdir = .
5555 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
56 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
57 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
56 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
57 $(top_srcdir)/configure.ac
5858 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5959 $(ACLOCAL_M4)
6060 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
175175 GMOFILES = @GMOFILES@
176176 GMSGFMT = @GMSGFMT@
177177 GREP = @GREP@
178 GTKDOC_CHECK = @GTKDOC_CHECK@
179 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
180 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
181 GTKDOC_MKPDF = @GTKDOC_MKPDF@
182 GTKDOC_REBASE = @GTKDOC_REBASE@
183 HTML_DIR = @HTML_DIR@
184178 INSTALL = @INSTALL@
185179 INSTALL_DATA = @INSTALL_DATA@
186180 INSTALL_PROGRAM = @INSTALL_PROGRAM@
243237 USE_NLS = @USE_NLS@
244238 VERSION = @VERSION@
245239 XGETTEXT = @XGETTEXT@
240 XMLTO = @XMLTO@
246241 XSLTPROC = @XSLTPROC@
247242 abs_builddir = @abs_builddir@
248243 abs_srcdir = @abs_srcdir@
257252 bindir = @bindir@
258253 build_alias = @build_alias@
259254 builddir = @builddir@
255 cachedir = @cachedir@
260256 datadir = @datadir@
261257 datarootdir = @datarootdir@
262258 docdir = @docdir@
319315 --disable-coverage \
320316 --enable-strict \
321317 --disable-silent-rules \
322 --enable-gtk-doc
318 --enable-doc
323319
324320 all: config.h
325321 $(MAKE) $(AM_MAKEFLAGS) all-recursive
884880 gpg --detach-sign --local-user 'stef@thewalter.net' $(DIST_ARCHIVES)
885881 scp $(DIST_ARCHIVES) $(DIST_ARCHIVES).sig anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/releases
886882
883 transifex:
884 sh build/tx-update
885
887886 # Tell versions [3.59,3.63) of GNU make to not export all variables.
888887 # Otherwise a system limit (for SysV at least) may be exceeded.
889888 .NOEXPORT:
0 0.13
1 * Pull in translations from transifex
2 * Detect incorrect passwords when using 'net ads join' login via RPC
3 * Use ipa-client-install to provide join functionality for IPA domains
4 * Don't assume that we can use kerberos to validate admin password
5 * Allow specifying --membership-software when discovering a realm
6 * Only use the XDG user data directory if it exists
7 * Quit the daemon when SIGTERM or SIGINT received
8 * Implement cancellation of operations
9 * Documentation fixes
10 * Add documentation about realmd internals
11 * Update commands and packages for Debian
12 * Use /var/cache/realmd instead of /tmp
13 * Build fixes and lots of other bugs fixed
14
015 0.12
116 * Add a --no-password option to realm join
217 * Check if domain is configured before trying to join
10831083 [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
10841084 ])
10851085
1086 # Copyright (C) 1996-2012 Free Software Foundation, Inc.
1087 #
1088 # This file is free software; the Free Software Foundation
1089 # gives unlimited permission to copy and/or distribute it,
1090 # with or without modifications, as long as this notice is preserved.
1091
1092 # serial 8
1093
1094 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
1095 AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
1096
10971086 # Do all the work for Automake. -*- Autoconf -*-
10981087
10991088 # Copyright (C) 1996-2012 Free Software Foundation, Inc.
18061795 AC_SUBST([am__untar])
18071796 ]) # _AM_PROG_TAR
18081797
1809 m4_include([build/m4/gtk-doc.m4])
18101798 m4_include([build/m4/intltool.m4])
5050 $(top_srcdir)/Makefile.decl
5151 subdir = build
5252 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
53 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
54 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
53 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
54 $(top_srcdir)/configure.ac
5555 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5656 $(ACLOCAL_M4)
5757 mkinstalldirs = $(install_sh) -d
113113 GMOFILES = @GMOFILES@
114114 GMSGFMT = @GMSGFMT@
115115 GREP = @GREP@
116 GTKDOC_CHECK = @GTKDOC_CHECK@
117 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
118 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
119 GTKDOC_MKPDF = @GTKDOC_MKPDF@
120 GTKDOC_REBASE = @GTKDOC_REBASE@
121 HTML_DIR = @HTML_DIR@
122116 INSTALL = @INSTALL@
123117 INSTALL_DATA = @INSTALL_DATA@
124118 INSTALL_PROGRAM = @INSTALL_PROGRAM@
181175 USE_NLS = @USE_NLS@
182176 VERSION = @VERSION@
183177 XGETTEXT = @XGETTEXT@
178 XMLTO = @XMLTO@
184179 XSLTPROC = @XSLTPROC@
185180 abs_builddir = @abs_builddir@
186181 abs_srcdir = @abs_srcdir@
195190 bindir = @bindir@
196191 build_alias = @build_alias@
197192 builddir = @builddir@
193 cachedir = @cachedir@
198194 datadir = @datadir@
199195 datarootdir = @datarootdir@
200196 docdir = @docdir@
+0
-67
build/m4/gtk-doc.m4 less more
0 dnl -*- mode: autoconf -*-
1
2 # serial 1
3
4 dnl Usage:
5 dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
6 AC_DEFUN([GTK_DOC_CHECK],
7 [
8 AC_REQUIRE([PKG_PROG_PKG_CONFIG])
9 AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
10 AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
11
12 dnl check for tools we added during development
13 AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
14 AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
15 AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
16
17 dnl for overriding the documentation installation directory
18 AC_ARG_WITH([html-dir],
19 AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
20 [with_html_dir='${datadir}/gtk-doc/html'])
21 HTML_DIR="$with_html_dir"
22 AC_SUBST([HTML_DIR])
23
24 dnl enable/disable documentation building
25 AC_ARG_ENABLE([gtk-doc],
26 AS_HELP_STRING([--enable-gtk-doc],
27 [use gtk-doc to build documentation [[default=no]]]),,
28 [enable_gtk_doc=no])
29
30 if test x$enable_gtk_doc = xyes; then
31 ifelse([$1],[],
32 [PKG_CHECK_EXISTS([gtk-doc],,
33 AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
34 [PKG_CHECK_EXISTS([gtk-doc >= $1],,
35 AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
36 dnl don't check for glib if we build glib
37 if test "x$PACKAGE_NAME" != "xglib"; then
38 dnl don't fail if someone does not have glib
39 PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,)
40 fi
41 fi
42
43 AC_MSG_CHECKING([whether to build gtk-doc documentation])
44 AC_MSG_RESULT($enable_gtk_doc)
45
46 dnl enable/disable output formats
47 AC_ARG_ENABLE([gtk-doc-html],
48 AS_HELP_STRING([--enable-gtk-doc-html],
49 [build documentation in html format [[default=yes]]]),,
50 [enable_gtk_doc_html=yes])
51 AC_ARG_ENABLE([gtk-doc-pdf],
52 AS_HELP_STRING([--enable-gtk-doc-pdf],
53 [build documentation in pdf format [[default=no]]]),,
54 [enable_gtk_doc_pdf=no])
55
56 if test -z "$GTKDOC_MKPDF"; then
57 enable_gtk_doc_pdf=no
58 fi
59
60
61 AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
62 AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
63 AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
64 AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
65 AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"])
66 ])
0 #! /bin/sh
1 # Attempt to guess a canonical system name.
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
4 # 2011, 2012 Free Software Foundation, Inc.
5
6 timestamp='2012-06-10'
7
8 # This file 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 2 of the License, or
11 # (at your option) any later version.
12 #
13 # This program 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 GNU
16 # General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, see <http://www.gnu.org/licenses/>.
20 #
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
25
26
27 # Originally written by Per Bothner. Please send patches (context
28 # diff format) to <config-patches@gnu.org> and include a ChangeLog
29 # entry.
30 #
31 # This script attempts to guess a canonical system name similar to
32 # config.sub. If it succeeds, it prints the system name on stdout, and
33 # exits with 0. Otherwise, it exits with 1.
34 #
35 # You can get the latest version of this script from:
36 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
37
38 me=`echo "$0" | sed -e 's,.*/,,'`
39
40 usage="\
41 Usage: $0 [OPTION]
42
43 Output the configuration name of the system \`$me' is run on.
44
45 Operation modes:
46 -h, --help print this help, then exit
47 -t, --time-stamp print date of last modification, then exit
48 -v, --version print version number, then exit
49
50 Report bugs and patches to <config-patches@gnu.org>."
51
52 version="\
53 GNU config.guess ($timestamp)
54
55 Originally written by Per Bothner.
56 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
57 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
58 Free Software Foundation, Inc.
59
60 This is free software; see the source for copying conditions. There is NO
61 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
62
63 help="
64 Try \`$me --help' for more information."
65
66 # Parse command line
67 while test $# -gt 0 ; do
68 case $1 in
69 --time-stamp | --time* | -t )
70 echo "$timestamp" ; exit ;;
71 --version | -v )
72 echo "$version" ; exit ;;
73 --help | --h* | -h )
74 echo "$usage"; exit ;;
75 -- ) # Stop option processing
76 shift; break ;;
77 - ) # Use stdin as input.
78 break ;;
79 -* )
80 echo "$me: invalid option $1$help" >&2
81 exit 1 ;;
82 * )
83 break ;;
84 esac
85 done
86
87 if test $# != 0; then
88 echo "$me: too many arguments$help" >&2
89 exit 1
90 fi
91
92 trap 'exit 1' 1 2 15
93
94 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
95 # compiler to aid in system detection is discouraged as it requires
96 # temporary files to be created and, as you can see below, it is a
97 # headache to deal with in a portable fashion.
98
99 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
100 # use `HOST_CC' if defined, but it is deprecated.
101
102 # Portable tmp directory creation inspired by the Autoconf team.
103
104 set_cc_for_build='
105 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
106 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
107 : ${TMPDIR=/tmp} ;
108 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
109 { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
110 { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
111 { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
112 dummy=$tmp/dummy ;
113 tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
114 case $CC_FOR_BUILD,$HOST_CC,$CC in
115 ,,) echo "int x;" > $dummy.c ;
116 for c in cc gcc c89 c99 ; do
117 if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
118 CC_FOR_BUILD="$c"; break ;
119 fi ;
120 done ;
121 if test x"$CC_FOR_BUILD" = x ; then
122 CC_FOR_BUILD=no_compiler_found ;
123 fi
124 ;;
125 ,,*) CC_FOR_BUILD=$CC ;;
126 ,*,*) CC_FOR_BUILD=$HOST_CC ;;
127 esac ; set_cc_for_build= ;'
128
129 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
130 # (ghazi@noc.rutgers.edu 1994-08-24)
131 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
132 PATH=$PATH:/.attbin ; export PATH
133 fi
134
135 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
136 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
137 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
138 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
139
140 # Note: order is significant - the case branches are not exclusive.
141
142 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
143 *:NetBSD:*:*)
144 # NetBSD (nbsd) targets should (where applicable) match one or
145 # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
146 # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
147 # switched to ELF, *-*-netbsd* would select the old
148 # object file format. This provides both forward
149 # compatibility and a consistent mechanism for selecting the
150 # object file format.
151 #
152 # Note: NetBSD doesn't particularly care about the vendor
153 # portion of the name. We always set it to "unknown".
154 sysctl="sysctl -n hw.machine_arch"
155 UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
156 /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
157 case "${UNAME_MACHINE_ARCH}" in
158 armeb) machine=armeb-unknown ;;
159 arm*) machine=arm-unknown ;;
160 sh3el) machine=shl-unknown ;;
161 sh3eb) machine=sh-unknown ;;
162 sh5el) machine=sh5le-unknown ;;
163 *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
164 esac
165 # The Operating System including object format, if it has switched
166 # to ELF recently, or will in the future.
167 case "${UNAME_MACHINE_ARCH}" in
168 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
169 eval $set_cc_for_build
170 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
171 | grep -q __ELF__
172 then
173 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
174 # Return netbsd for either. FIX?
175 os=netbsd
176 else
177 os=netbsdelf
178 fi
179 ;;
180 *)
181 os=netbsd
182 ;;
183 esac
184 # The OS release
185 # Debian GNU/NetBSD machines have a different userland, and
186 # thus, need a distinct triplet. However, they do not need
187 # kernel version information, so it can be replaced with a
188 # suitable tag, in the style of linux-gnu.
189 case "${UNAME_VERSION}" in
190 Debian*)
191 release='-gnu'
192 ;;
193 *)
194 release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
195 ;;
196 esac
197 # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
198 # contains redundant information, the shorter form:
199 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
200 echo "${machine}-${os}${release}"
201 exit ;;
202 *:OpenBSD:*:*)
203 UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
204 echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
205 exit ;;
206 *:ekkoBSD:*:*)
207 echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
208 exit ;;
209 *:SolidBSD:*:*)
210 echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
211 exit ;;
212 macppc:MirBSD:*:*)
213 echo powerpc-unknown-mirbsd${UNAME_RELEASE}
214 exit ;;
215 *:MirBSD:*:*)
216 echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
217 exit ;;
218 alpha:OSF1:*:*)
219 case $UNAME_RELEASE in
220 *4.0)
221 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
222 ;;
223 *5.*)
224 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
225 ;;
226 esac
227 # According to Compaq, /usr/sbin/psrinfo has been available on
228 # OSF/1 and Tru64 systems produced since 1995. I hope that
229 # covers most systems running today. This code pipes the CPU
230 # types through head -n 1, so we only detect the type of CPU 0.
231 ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
232 case "$ALPHA_CPU_TYPE" in
233 "EV4 (21064)")
234 UNAME_MACHINE="alpha" ;;
235 "EV4.5 (21064)")
236 UNAME_MACHINE="alpha" ;;
237 "LCA4 (21066/21068)")
238 UNAME_MACHINE="alpha" ;;
239 "EV5 (21164)")
240 UNAME_MACHINE="alphaev5" ;;
241 "EV5.6 (21164A)")
242 UNAME_MACHINE="alphaev56" ;;
243 "EV5.6 (21164PC)")
244 UNAME_MACHINE="alphapca56" ;;
245 "EV5.7 (21164PC)")
246 UNAME_MACHINE="alphapca57" ;;
247 "EV6 (21264)")
248 UNAME_MACHINE="alphaev6" ;;
249 "EV6.7 (21264A)")
250 UNAME_MACHINE="alphaev67" ;;
251 "EV6.8CB (21264C)")
252 UNAME_MACHINE="alphaev68" ;;
253 "EV6.8AL (21264B)")
254 UNAME_MACHINE="alphaev68" ;;
255 "EV6.8CX (21264D)")
256 UNAME_MACHINE="alphaev68" ;;
257 "EV6.9A (21264/EV69A)")
258 UNAME_MACHINE="alphaev69" ;;
259 "EV7 (21364)")
260 UNAME_MACHINE="alphaev7" ;;
261 "EV7.9 (21364A)")
262 UNAME_MACHINE="alphaev79" ;;
263 esac
264 # A Pn.n version is a patched version.
265 # A Vn.n version is a released version.
266 # A Tn.n version is a released field test version.
267 # A Xn.n version is an unreleased experimental baselevel.
268 # 1.2 uses "1.2" for uname -r.
269 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
270 # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
271 exitcode=$?
272 trap '' 0
273 exit $exitcode ;;
274 Alpha\ *:Windows_NT*:*)
275 # How do we know it's Interix rather than the generic POSIX subsystem?
276 # Should we change UNAME_MACHINE based on the output of uname instead
277 # of the specific Alpha model?
278 echo alpha-pc-interix
279 exit ;;
280 21064:Windows_NT:50:3)
281 echo alpha-dec-winnt3.5
282 exit ;;
283 Amiga*:UNIX_System_V:4.0:*)
284 echo m68k-unknown-sysv4
285 exit ;;
286 *:[Aa]miga[Oo][Ss]:*:*)
287 echo ${UNAME_MACHINE}-unknown-amigaos
288 exit ;;
289 *:[Mm]orph[Oo][Ss]:*:*)
290 echo ${UNAME_MACHINE}-unknown-morphos
291 exit ;;
292 *:OS/390:*:*)
293 echo i370-ibm-openedition
294 exit ;;
295 *:z/VM:*:*)
296 echo s390-ibm-zvmoe
297 exit ;;
298 *:OS400:*:*)
299 echo powerpc-ibm-os400
300 exit ;;
301 arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
302 echo arm-acorn-riscix${UNAME_RELEASE}
303 exit ;;
304 arm:riscos:*:*|arm:RISCOS:*:*)
305 echo arm-unknown-riscos
306 exit ;;
307 SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
308 echo hppa1.1-hitachi-hiuxmpp
309 exit ;;
310 Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
311 # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
312 if test "`(/bin/universe) 2>/dev/null`" = att ; then
313 echo pyramid-pyramid-sysv3
314 else
315 echo pyramid-pyramid-bsd
316 fi
317 exit ;;
318 NILE*:*:*:dcosx)
319 echo pyramid-pyramid-svr4
320 exit ;;
321 DRS?6000:unix:4.0:6*)
322 echo sparc-icl-nx6
323 exit ;;
324 DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
325 case `/usr/bin/uname -p` in
326 sparc) echo sparc-icl-nx7; exit ;;
327 esac ;;
328 s390x:SunOS:*:*)
329 echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
330 exit ;;
331 sun4H:SunOS:5.*:*)
332 echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
333 exit ;;
334 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
335 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
336 exit ;;
337 i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
338 echo i386-pc-auroraux${UNAME_RELEASE}
339 exit ;;
340 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
341 eval $set_cc_for_build
342 SUN_ARCH="i386"
343 # If there is a compiler, see if it is configured for 64-bit objects.
344 # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
345 # This test works for both compilers.
346 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
347 if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
348 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
349 grep IS_64BIT_ARCH >/dev/null
350 then
351 SUN_ARCH="x86_64"
352 fi
353 fi
354 echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
355 exit ;;
356 sun4*:SunOS:6*:*)
357 # According to config.sub, this is the proper way to canonicalize
358 # SunOS6. Hard to guess exactly what SunOS6 will be like, but
359 # it's likely to be more like Solaris than SunOS4.
360 echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
361 exit ;;
362 sun4*:SunOS:*:*)
363 case "`/usr/bin/arch -k`" in
364 Series*|S4*)
365 UNAME_RELEASE=`uname -v`
366 ;;
367 esac
368 # Japanese Language versions have a version number like `4.1.3-JL'.
369 echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
370 exit ;;
371 sun3*:SunOS:*:*)
372 echo m68k-sun-sunos${UNAME_RELEASE}
373 exit ;;
374 sun*:*:4.2BSD:*)
375 UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
376 test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
377 case "`/bin/arch`" in
378 sun3)
379 echo m68k-sun-sunos${UNAME_RELEASE}
380 ;;
381 sun4)
382 echo sparc-sun-sunos${UNAME_RELEASE}
383 ;;
384 esac
385 exit ;;
386 aushp:SunOS:*:*)
387 echo sparc-auspex-sunos${UNAME_RELEASE}
388 exit ;;
389 # The situation for MiNT is a little confusing. The machine name
390 # can be virtually everything (everything which is not
391 # "atarist" or "atariste" at least should have a processor
392 # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
393 # to the lowercase version "mint" (or "freemint"). Finally
394 # the system name "TOS" denotes a system which is actually not
395 # MiNT. But MiNT is downward compatible to TOS, so this should
396 # be no problem.
397 atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
398 echo m68k-atari-mint${UNAME_RELEASE}
399 exit ;;
400 atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
401 echo m68k-atari-mint${UNAME_RELEASE}
402 exit ;;
403 *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
404 echo m68k-atari-mint${UNAME_RELEASE}
405 exit ;;
406 milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
407 echo m68k-milan-mint${UNAME_RELEASE}
408 exit ;;
409 hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
410 echo m68k-hades-mint${UNAME_RELEASE}
411 exit ;;
412 *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
413 echo m68k-unknown-mint${UNAME_RELEASE}
414 exit ;;
415 m68k:machten:*:*)
416 echo m68k-apple-machten${UNAME_RELEASE}
417 exit ;;
418 powerpc:machten:*:*)
419 echo powerpc-apple-machten${UNAME_RELEASE}
420 exit ;;
421 RISC*:Mach:*:*)
422 echo mips-dec-mach_bsd4.3
423 exit ;;
424 RISC*:ULTRIX:*:*)
425 echo mips-dec-ultrix${UNAME_RELEASE}
426 exit ;;
427 VAX*:ULTRIX*:*:*)
428 echo vax-dec-ultrix${UNAME_RELEASE}
429 exit ;;
430 2020:CLIX:*:* | 2430:CLIX:*:*)
431 echo clipper-intergraph-clix${UNAME_RELEASE}
432 exit ;;
433 mips:*:*:UMIPS | mips:*:*:RISCos)
434 eval $set_cc_for_build
435 sed 's/^ //' << EOF >$dummy.c
436 #ifdef __cplusplus
437 #include <stdio.h> /* for printf() prototype */
438 int main (int argc, char *argv[]) {
439 #else
440 int main (argc, argv) int argc; char *argv[]; {
441 #endif
442 #if defined (host_mips) && defined (MIPSEB)
443 #if defined (SYSTYPE_SYSV)
444 printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
445 #endif
446 #if defined (SYSTYPE_SVR4)
447 printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
448 #endif
449 #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
450 printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
451 #endif
452 #endif
453 exit (-1);
454 }
455 EOF
456 $CC_FOR_BUILD -o $dummy $dummy.c &&
457 dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
458 SYSTEM_NAME=`$dummy $dummyarg` &&
459 { echo "$SYSTEM_NAME"; exit; }
460 echo mips-mips-riscos${UNAME_RELEASE}
461 exit ;;
462 Motorola:PowerMAX_OS:*:*)
463 echo powerpc-motorola-powermax
464 exit ;;
465 Motorola:*:4.3:PL8-*)
466 echo powerpc-harris-powermax
467 exit ;;
468 Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
469 echo powerpc-harris-powermax
470 exit ;;
471 Night_Hawk:Power_UNIX:*:*)
472 echo powerpc-harris-powerunix
473 exit ;;
474 m88k:CX/UX:7*:*)
475 echo m88k-harris-cxux7
476 exit ;;
477 m88k:*:4*:R4*)
478 echo m88k-motorola-sysv4
479 exit ;;
480 m88k:*:3*:R3*)
481 echo m88k-motorola-sysv3
482 exit ;;
483 AViiON:dgux:*:*)
484 # DG/UX returns AViiON for all architectures
485 UNAME_PROCESSOR=`/usr/bin/uname -p`
486 if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
487 then
488 if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
489 [ ${TARGET_BINARY_INTERFACE}x = x ]
490 then
491 echo m88k-dg-dgux${UNAME_RELEASE}
492 else
493 echo m88k-dg-dguxbcs${UNAME_RELEASE}
494 fi
495 else
496 echo i586-dg-dgux${UNAME_RELEASE}
497 fi
498 exit ;;
499 M88*:DolphinOS:*:*) # DolphinOS (SVR3)
500 echo m88k-dolphin-sysv3
501 exit ;;
502 M88*:*:R3*:*)
503 # Delta 88k system running SVR3
504 echo m88k-motorola-sysv3
505 exit ;;
506 XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
507 echo m88k-tektronix-sysv3
508 exit ;;
509 Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
510 echo m68k-tektronix-bsd
511 exit ;;
512 *:IRIX*:*:*)
513 echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
514 exit ;;
515 ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
516 echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
517 exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
518 i*86:AIX:*:*)
519 echo i386-ibm-aix
520 exit ;;
521 ia64:AIX:*:*)
522 if [ -x /usr/bin/oslevel ] ; then
523 IBM_REV=`/usr/bin/oslevel`
524 else
525 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
526 fi
527 echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
528 exit ;;
529 *:AIX:2:3)
530 if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
531 eval $set_cc_for_build
532 sed 's/^ //' << EOF >$dummy.c
533 #include <sys/systemcfg.h>
534
535 main()
536 {
537 if (!__power_pc())
538 exit(1);
539 puts("powerpc-ibm-aix3.2.5");
540 exit(0);
541 }
542 EOF
543 if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
544 then
545 echo "$SYSTEM_NAME"
546 else
547 echo rs6000-ibm-aix3.2.5
548 fi
549 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
550 echo rs6000-ibm-aix3.2.4
551 else
552 echo rs6000-ibm-aix3.2
553 fi
554 exit ;;
555 *:AIX:*:[4567])
556 IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
557 if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
558 IBM_ARCH=rs6000
559 else
560 IBM_ARCH=powerpc
561 fi
562 if [ -x /usr/bin/oslevel ] ; then
563 IBM_REV=`/usr/bin/oslevel`
564 else
565 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
566 fi
567 echo ${IBM_ARCH}-ibm-aix${IBM_REV}
568 exit ;;
569 *:AIX:*:*)
570 echo rs6000-ibm-aix
571 exit ;;
572 ibmrt:4.4BSD:*|romp-ibm:BSD:*)
573 echo romp-ibm-bsd4.4
574 exit ;;
575 ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
576 echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
577 exit ;; # report: romp-ibm BSD 4.3
578 *:BOSX:*:*)
579 echo rs6000-bull-bosx
580 exit ;;
581 DPX/2?00:B.O.S.:*:*)
582 echo m68k-bull-sysv3
583 exit ;;
584 9000/[34]??:4.3bsd:1.*:*)
585 echo m68k-hp-bsd
586 exit ;;
587 hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
588 echo m68k-hp-bsd4.4
589 exit ;;
590 9000/[34678]??:HP-UX:*:*)
591 HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
592 case "${UNAME_MACHINE}" in
593 9000/31? ) HP_ARCH=m68000 ;;
594 9000/[34]?? ) HP_ARCH=m68k ;;
595 9000/[678][0-9][0-9])
596 if [ -x /usr/bin/getconf ]; then
597 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
598 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
599 case "${sc_cpu_version}" in
600 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
601 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
602 532) # CPU_PA_RISC2_0
603 case "${sc_kernel_bits}" in
604 32) HP_ARCH="hppa2.0n" ;;
605 64) HP_ARCH="hppa2.0w" ;;
606 '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
607 esac ;;
608 esac
609 fi
610 if [ "${HP_ARCH}" = "" ]; then
611 eval $set_cc_for_build
612 sed 's/^ //' << EOF >$dummy.c
613
614 #define _HPUX_SOURCE
615 #include <stdlib.h>
616 #include <unistd.h>
617
618 int main ()
619 {
620 #if defined(_SC_KERNEL_BITS)
621 long bits = sysconf(_SC_KERNEL_BITS);
622 #endif
623 long cpu = sysconf (_SC_CPU_VERSION);
624
625 switch (cpu)
626 {
627 case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
628 case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
629 case CPU_PA_RISC2_0:
630 #if defined(_SC_KERNEL_BITS)
631 switch (bits)
632 {
633 case 64: puts ("hppa2.0w"); break;
634 case 32: puts ("hppa2.0n"); break;
635 default: puts ("hppa2.0"); break;
636 } break;
637 #else /* !defined(_SC_KERNEL_BITS) */
638 puts ("hppa2.0"); break;
639 #endif
640 default: puts ("hppa1.0"); break;
641 }
642 exit (0);
643 }
644 EOF
645 (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
646 test -z "$HP_ARCH" && HP_ARCH=hppa
647 fi ;;
648 esac
649 if [ ${HP_ARCH} = "hppa2.0w" ]
650 then
651 eval $set_cc_for_build
652
653 # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
654 # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
655 # generating 64-bit code. GNU and HP use different nomenclature:
656 #
657 # $ CC_FOR_BUILD=cc ./config.guess
658 # => hppa2.0w-hp-hpux11.23
659 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
660 # => hppa64-hp-hpux11.23
661
662 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
663 grep -q __LP64__
664 then
665 HP_ARCH="hppa2.0w"
666 else
667 HP_ARCH="hppa64"
668 fi
669 fi
670 echo ${HP_ARCH}-hp-hpux${HPUX_REV}
671 exit ;;
672 ia64:HP-UX:*:*)
673 HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
674 echo ia64-hp-hpux${HPUX_REV}
675 exit ;;
676 3050*:HI-UX:*:*)
677 eval $set_cc_for_build
678 sed 's/^ //' << EOF >$dummy.c
679 #include <unistd.h>
680 int
681 main ()
682 {
683 long cpu = sysconf (_SC_CPU_VERSION);
684 /* The order matters, because CPU_IS_HP_MC68K erroneously returns
685 true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
686 results, however. */
687 if (CPU_IS_PA_RISC (cpu))
688 {
689 switch (cpu)
690 {
691 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
692 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
693 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
694 default: puts ("hppa-hitachi-hiuxwe2"); break;
695 }
696 }
697 else if (CPU_IS_HP_MC68K (cpu))
698 puts ("m68k-hitachi-hiuxwe2");
699 else puts ("unknown-hitachi-hiuxwe2");
700 exit (0);
701 }
702 EOF
703 $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
704 { echo "$SYSTEM_NAME"; exit; }
705 echo unknown-hitachi-hiuxwe2
706 exit ;;
707 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
708 echo hppa1.1-hp-bsd
709 exit ;;
710 9000/8??:4.3bsd:*:*)
711 echo hppa1.0-hp-bsd
712 exit ;;
713 *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
714 echo hppa1.0-hp-mpeix
715 exit ;;
716 hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
717 echo hppa1.1-hp-osf
718 exit ;;
719 hp8??:OSF1:*:*)
720 echo hppa1.0-hp-osf
721 exit ;;
722 i*86:OSF1:*:*)
723 if [ -x /usr/sbin/sysversion ] ; then
724 echo ${UNAME_MACHINE}-unknown-osf1mk
725 else
726 echo ${UNAME_MACHINE}-unknown-osf1
727 fi
728 exit ;;
729 parisc*:Lites*:*:*)
730 echo hppa1.1-hp-lites
731 exit ;;
732 C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
733 echo c1-convex-bsd
734 exit ;;
735 C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
736 if getsysinfo -f scalar_acc
737 then echo c32-convex-bsd
738 else echo c2-convex-bsd
739 fi
740 exit ;;
741 C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
742 echo c34-convex-bsd
743 exit ;;
744 C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
745 echo c38-convex-bsd
746 exit ;;
747 C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
748 echo c4-convex-bsd
749 exit ;;
750 CRAY*Y-MP:*:*:*)
751 echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
752 exit ;;
753 CRAY*[A-Z]90:*:*:*)
754 echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
755 | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
756 -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
757 -e 's/\.[^.]*$/.X/'
758 exit ;;
759 CRAY*TS:*:*:*)
760 echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
761 exit ;;
762 CRAY*T3E:*:*:*)
763 echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
764 exit ;;
765 CRAY*SV1:*:*:*)
766 echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
767 exit ;;
768 *:UNICOS/mp:*:*)
769 echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
770 exit ;;
771 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
772 FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
773 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
774 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
775 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
776 exit ;;
777 5000:UNIX_System_V:4.*:*)
778 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
779 FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
780 echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
781 exit ;;
782 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
783 echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
784 exit ;;
785 sparc*:BSD/OS:*:*)
786 echo sparc-unknown-bsdi${UNAME_RELEASE}
787 exit ;;
788 *:BSD/OS:*:*)
789 echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
790 exit ;;
791 *:FreeBSD:*:*)
792 UNAME_PROCESSOR=`/usr/bin/uname -p`
793 case ${UNAME_PROCESSOR} in
794 amd64)
795 echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
796 *)
797 echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
798 esac
799 exit ;;
800 i*:CYGWIN*:*)
801 echo ${UNAME_MACHINE}-pc-cygwin
802 exit ;;
803 *:MINGW*:*)
804 echo ${UNAME_MACHINE}-pc-mingw32
805 exit ;;
806 i*:MSYS*:*)
807 echo ${UNAME_MACHINE}-pc-msys
808 exit ;;
809 i*:windows32*:*)
810 # uname -m includes "-pc" on this system.
811 echo ${UNAME_MACHINE}-mingw32
812 exit ;;
813 i*:PW*:*)
814 echo ${UNAME_MACHINE}-pc-pw32
815 exit ;;
816 *:Interix*:*)
817 case ${UNAME_MACHINE} in
818 x86)
819 echo i586-pc-interix${UNAME_RELEASE}
820 exit ;;
821 authenticamd | genuineintel | EM64T)
822 echo x86_64-unknown-interix${UNAME_RELEASE}
823 exit ;;
824 IA64)
825 echo ia64-unknown-interix${UNAME_RELEASE}
826 exit ;;
827 esac ;;
828 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
829 echo i${UNAME_MACHINE}-pc-mks
830 exit ;;
831 8664:Windows_NT:*)
832 echo x86_64-pc-mks
833 exit ;;
834 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
835 # How do we know it's Interix rather than the generic POSIX subsystem?
836 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
837 # UNAME_MACHINE based on the output of uname instead of i386?
838 echo i586-pc-interix
839 exit ;;
840 i*:UWIN*:*)
841 echo ${UNAME_MACHINE}-pc-uwin
842 exit ;;
843 amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
844 echo x86_64-unknown-cygwin
845 exit ;;
846 p*:CYGWIN*:*)
847 echo powerpcle-unknown-cygwin
848 exit ;;
849 prep*:SunOS:5.*:*)
850 echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
851 exit ;;
852 *:GNU:*:*)
853 # the GNU system
854 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
855 exit ;;
856 *:GNU/*:*:*)
857 # other systems with GNU libc and userland
858 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
859 exit ;;
860 i*86:Minix:*:*)
861 echo ${UNAME_MACHINE}-pc-minix
862 exit ;;
863 aarch64:Linux:*:*)
864 echo ${UNAME_MACHINE}-unknown-linux-gnu
865 exit ;;
866 aarch64_be:Linux:*:*)
867 UNAME_MACHINE=aarch64_be
868 echo ${UNAME_MACHINE}-unknown-linux-gnu
869 exit ;;
870 alpha:Linux:*:*)
871 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
872 EV5) UNAME_MACHINE=alphaev5 ;;
873 EV56) UNAME_MACHINE=alphaev56 ;;
874 PCA56) UNAME_MACHINE=alphapca56 ;;
875 PCA57) UNAME_MACHINE=alphapca56 ;;
876 EV6) UNAME_MACHINE=alphaev6 ;;
877 EV67) UNAME_MACHINE=alphaev67 ;;
878 EV68*) UNAME_MACHINE=alphaev68 ;;
879 esac
880 objdump --private-headers /bin/sh | grep -q ld.so.1
881 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
882 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
883 exit ;;
884 arm*:Linux:*:*)
885 eval $set_cc_for_build
886 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
887 | grep -q __ARM_EABI__
888 then
889 echo ${UNAME_MACHINE}-unknown-linux-gnu
890 else
891 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
892 | grep -q __ARM_PCS_VFP
893 then
894 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
895 else
896 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
897 fi
898 fi
899 exit ;;
900 avr32*:Linux:*:*)
901 echo ${UNAME_MACHINE}-unknown-linux-gnu
902 exit ;;
903 cris:Linux:*:*)
904 echo ${UNAME_MACHINE}-axis-linux-gnu
905 exit ;;
906 crisv32:Linux:*:*)
907 echo ${UNAME_MACHINE}-axis-linux-gnu
908 exit ;;
909 frv:Linux:*:*)
910 echo ${UNAME_MACHINE}-unknown-linux-gnu
911 exit ;;
912 hexagon:Linux:*:*)
913 echo ${UNAME_MACHINE}-unknown-linux-gnu
914 exit ;;
915 i*86:Linux:*:*)
916 LIBC=gnu
917 eval $set_cc_for_build
918 sed 's/^ //' << EOF >$dummy.c
919 #ifdef __dietlibc__
920 LIBC=dietlibc
921 #endif
922 EOF
923 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
924 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
925 exit ;;
926 ia64:Linux:*:*)
927 echo ${UNAME_MACHINE}-unknown-linux-gnu
928 exit ;;
929 m32r*:Linux:*:*)
930 echo ${UNAME_MACHINE}-unknown-linux-gnu
931 exit ;;
932 m68*:Linux:*:*)
933 echo ${UNAME_MACHINE}-unknown-linux-gnu
934 exit ;;
935 mips:Linux:*:* | mips64:Linux:*:*)
936 eval $set_cc_for_build
937 sed 's/^ //' << EOF >$dummy.c
938 #undef CPU
939 #undef ${UNAME_MACHINE}
940 #undef ${UNAME_MACHINE}el
941 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
942 CPU=${UNAME_MACHINE}el
943 #else
944 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
945 CPU=${UNAME_MACHINE}
946 #else
947 CPU=
948 #endif
949 #endif
950 EOF
951 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
952 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
953 ;;
954 or32:Linux:*:*)
955 echo ${UNAME_MACHINE}-unknown-linux-gnu
956 exit ;;
957 padre:Linux:*:*)
958 echo sparc-unknown-linux-gnu
959 exit ;;
960 parisc64:Linux:*:* | hppa64:Linux:*:*)
961 echo hppa64-unknown-linux-gnu
962 exit ;;
963 parisc:Linux:*:* | hppa:Linux:*:*)
964 # Look for CPU level
965 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
966 PA7*) echo hppa1.1-unknown-linux-gnu ;;
967 PA8*) echo hppa2.0-unknown-linux-gnu ;;
968 *) echo hppa-unknown-linux-gnu ;;
969 esac
970 exit ;;
971 ppc64:Linux:*:*)
972 echo powerpc64-unknown-linux-gnu
973 exit ;;
974 ppc:Linux:*:*)
975 echo powerpc-unknown-linux-gnu
976 exit ;;
977 s390:Linux:*:* | s390x:Linux:*:*)
978 echo ${UNAME_MACHINE}-ibm-linux
979 exit ;;
980 sh64*:Linux:*:*)
981 echo ${UNAME_MACHINE}-unknown-linux-gnu
982 exit ;;
983 sh*:Linux:*:*)
984 echo ${UNAME_MACHINE}-unknown-linux-gnu
985 exit ;;
986 sparc:Linux:*:* | sparc64:Linux:*:*)
987 echo ${UNAME_MACHINE}-unknown-linux-gnu
988 exit ;;
989 tile*:Linux:*:*)
990 echo ${UNAME_MACHINE}-unknown-linux-gnu
991 exit ;;
992 vax:Linux:*:*)
993 echo ${UNAME_MACHINE}-dec-linux-gnu
994 exit ;;
995 x86_64:Linux:*:*)
996 echo ${UNAME_MACHINE}-unknown-linux-gnu
997 exit ;;
998 xtensa*:Linux:*:*)
999 echo ${UNAME_MACHINE}-unknown-linux-gnu
1000 exit ;;
1001 i*86:DYNIX/ptx:4*:*)
1002 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
1003 # earlier versions are messed up and put the nodename in both
1004 # sysname and nodename.
1005 echo i386-sequent-sysv4
1006 exit ;;
1007 i*86:UNIX_SV:4.2MP:2.*)
1008 # Unixware is an offshoot of SVR4, but it has its own version
1009 # number series starting with 2...
1010 # I am not positive that other SVR4 systems won't match this,
1011 # I just have to hope. -- rms.
1012 # Use sysv4.2uw... so that sysv4* matches it.
1013 echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
1014 exit ;;
1015 i*86:OS/2:*:*)
1016 # If we were able to find `uname', then EMX Unix compatibility
1017 # is probably installed.
1018 echo ${UNAME_MACHINE}-pc-os2-emx
1019 exit ;;
1020 i*86:XTS-300:*:STOP)
1021 echo ${UNAME_MACHINE}-unknown-stop
1022 exit ;;
1023 i*86:atheos:*:*)
1024 echo ${UNAME_MACHINE}-unknown-atheos
1025 exit ;;
1026 i*86:syllable:*:*)
1027 echo ${UNAME_MACHINE}-pc-syllable
1028 exit ;;
1029 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
1030 echo i386-unknown-lynxos${UNAME_RELEASE}
1031 exit ;;
1032 i*86:*DOS:*:*)
1033 echo ${UNAME_MACHINE}-pc-msdosdjgpp
1034 exit ;;
1035 i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
1036 UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
1037 if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
1038 echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
1039 else
1040 echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
1041 fi
1042 exit ;;
1043 i*86:*:5:[678]*)
1044 # UnixWare 7.x, OpenUNIX and OpenServer 6.
1045 case `/bin/uname -X | grep "^Machine"` in
1046 *486*) UNAME_MACHINE=i486 ;;
1047 *Pentium) UNAME_MACHINE=i586 ;;
1048 *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
1049 esac
1050 echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1051 exit ;;
1052 i*86:*:3.2:*)
1053 if test -f /usr/options/cb.name; then
1054 UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
1055 echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
1056 elif /bin/uname -X 2>/dev/null >/dev/null ; then
1057 UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
1058 (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
1059 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
1060 && UNAME_MACHINE=i586
1061 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
1062 && UNAME_MACHINE=i686
1063 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
1064 && UNAME_MACHINE=i686
1065 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
1066 else
1067 echo ${UNAME_MACHINE}-pc-sysv32
1068 fi
1069 exit ;;
1070 pc:*:*:*)
1071 # Left here for compatibility:
1072 # uname -m prints for DJGPP always 'pc', but it prints nothing about
1073 # the processor, so we play safe by assuming i586.
1074 # Note: whatever this is, it MUST be the same as what config.sub
1075 # prints for the "djgpp" host, or else GDB configury will decide that
1076 # this is a cross-build.
1077 echo i586-pc-msdosdjgpp
1078 exit ;;
1079 Intel:Mach:3*:*)
1080 echo i386-pc-mach3
1081 exit ;;
1082 paragon:*:*:*)
1083 echo i860-intel-osf1
1084 exit ;;
1085 i860:*:4.*:*) # i860-SVR4
1086 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
1087 echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
1088 else # Add other i860-SVR4 vendors below as they are discovered.
1089 echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
1090 fi
1091 exit ;;
1092 mini*:CTIX:SYS*5:*)
1093 # "miniframe"
1094 echo m68010-convergent-sysv
1095 exit ;;
1096 mc68k:UNIX:SYSTEM5:3.51m)
1097 echo m68k-convergent-sysv
1098 exit ;;
1099 M680?0:D-NIX:5.3:*)
1100 echo m68k-diab-dnix
1101 exit ;;
1102 M68*:*:R3V[5678]*:*)
1103 test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
1104 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
1105 OS_REL=''
1106 test -r /etc/.relid \
1107 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1108 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1109 && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1110 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1111 && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1112 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
1113 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1114 && { echo i486-ncr-sysv4; exit; } ;;
1115 NCR*:*:4.2:* | MPRAS*:*:4.2:*)
1116 OS_REL='.3'
1117 test -r /etc/.relid \
1118 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1119 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1120 && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1121 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1122 && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
1123 /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
1124 && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1125 m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
1126 echo m68k-unknown-lynxos${UNAME_RELEASE}
1127 exit ;;
1128 mc68030:UNIX_System_V:4.*:*)
1129 echo m68k-atari-sysv4
1130 exit ;;
1131 TSUNAMI:LynxOS:2.*:*)
1132 echo sparc-unknown-lynxos${UNAME_RELEASE}
1133 exit ;;
1134 rs6000:LynxOS:2.*:*)
1135 echo rs6000-unknown-lynxos${UNAME_RELEASE}
1136 exit ;;
1137 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
1138 echo powerpc-unknown-lynxos${UNAME_RELEASE}
1139 exit ;;
1140 SM[BE]S:UNIX_SV:*:*)
1141 echo mips-dde-sysv${UNAME_RELEASE}
1142 exit ;;
1143 RM*:ReliantUNIX-*:*:*)
1144 echo mips-sni-sysv4
1145 exit ;;
1146 RM*:SINIX-*:*:*)
1147 echo mips-sni-sysv4
1148 exit ;;
1149 *:SINIX-*:*:*)
1150 if uname -p 2>/dev/null >/dev/null ; then
1151 UNAME_MACHINE=`(uname -p) 2>/dev/null`
1152 echo ${UNAME_MACHINE}-sni-sysv4
1153 else
1154 echo ns32k-sni-sysv
1155 fi
1156 exit ;;
1157 PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1158 # says <Richard.M.Bartel@ccMail.Census.GOV>
1159 echo i586-unisys-sysv4
1160 exit ;;
1161 *:UNIX_System_V:4*:FTX*)
1162 # From Gerald Hewes <hewes@openmarket.com>.
1163 # How about differentiating between stratus architectures? -djm
1164 echo hppa1.1-stratus-sysv4
1165 exit ;;
1166 *:*:*:FTX*)
1167 # From seanf@swdc.stratus.com.
1168 echo i860-stratus-sysv4
1169 exit ;;
1170 i*86:VOS:*:*)
1171 # From Paul.Green@stratus.com.
1172 echo ${UNAME_MACHINE}-stratus-vos
1173 exit ;;
1174 *:VOS:*:*)
1175 # From Paul.Green@stratus.com.
1176 echo hppa1.1-stratus-vos
1177 exit ;;
1178 mc68*:A/UX:*:*)
1179 echo m68k-apple-aux${UNAME_RELEASE}
1180 exit ;;
1181 news*:NEWS-OS:6*:*)
1182 echo mips-sony-newsos6
1183 exit ;;
1184 R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
1185 if [ -d /usr/nec ]; then
1186 echo mips-nec-sysv${UNAME_RELEASE}
1187 else
1188 echo mips-unknown-sysv${UNAME_RELEASE}
1189 fi
1190 exit ;;
1191 BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
1192 echo powerpc-be-beos
1193 exit ;;
1194 BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
1195 echo powerpc-apple-beos
1196 exit ;;
1197 BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
1198 echo i586-pc-beos
1199 exit ;;
1200 BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
1201 echo i586-pc-haiku
1202 exit ;;
1203 SX-4:SUPER-UX:*:*)
1204 echo sx4-nec-superux${UNAME_RELEASE}
1205 exit ;;
1206 SX-5:SUPER-UX:*:*)
1207 echo sx5-nec-superux${UNAME_RELEASE}
1208 exit ;;
1209 SX-6:SUPER-UX:*:*)
1210 echo sx6-nec-superux${UNAME_RELEASE}
1211 exit ;;
1212 SX-7:SUPER-UX:*:*)
1213 echo sx7-nec-superux${UNAME_RELEASE}
1214 exit ;;
1215 SX-8:SUPER-UX:*:*)
1216 echo sx8-nec-superux${UNAME_RELEASE}
1217 exit ;;
1218 SX-8R:SUPER-UX:*:*)
1219 echo sx8r-nec-superux${UNAME_RELEASE}
1220 exit ;;
1221 Power*:Rhapsody:*:*)
1222 echo powerpc-apple-rhapsody${UNAME_RELEASE}
1223 exit ;;
1224 *:Rhapsody:*:*)
1225 echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
1226 exit ;;
1227 *:Darwin:*:*)
1228 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1229 case $UNAME_PROCESSOR in
1230 i386)
1231 eval $set_cc_for_build
1232 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1233 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1234 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1235 grep IS_64BIT_ARCH >/dev/null
1236 then
1237 UNAME_PROCESSOR="x86_64"
1238 fi
1239 fi ;;
1240 unknown) UNAME_PROCESSOR=powerpc ;;
1241 esac
1242 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
1243 exit ;;
1244 *:procnto*:*:* | *:QNX:[0123456789]*:*)
1245 UNAME_PROCESSOR=`uname -p`
1246 if test "$UNAME_PROCESSOR" = "x86"; then
1247 UNAME_PROCESSOR=i386
1248 UNAME_MACHINE=pc
1249 fi
1250 echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
1251 exit ;;
1252 *:QNX:*:4*)
1253 echo i386-pc-qnx
1254 exit ;;
1255 NEO-?:NONSTOP_KERNEL:*:*)
1256 echo neo-tandem-nsk${UNAME_RELEASE}
1257 exit ;;
1258 NSE-*:NONSTOP_KERNEL:*:*)
1259 echo nse-tandem-nsk${UNAME_RELEASE}
1260 exit ;;
1261 NSR-?:NONSTOP_KERNEL:*:*)
1262 echo nsr-tandem-nsk${UNAME_RELEASE}
1263 exit ;;
1264 *:NonStop-UX:*:*)
1265 echo mips-compaq-nonstopux
1266 exit ;;
1267 BS2000:POSIX*:*:*)
1268 echo bs2000-siemens-sysv
1269 exit ;;
1270 DS/*:UNIX_System_V:*:*)
1271 echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
1272 exit ;;
1273 *:Plan9:*:*)
1274 # "uname -m" is not consistent, so use $cputype instead. 386
1275 # is converted to i386 for consistency with other x86
1276 # operating systems.
1277 if test "$cputype" = "386"; then
1278 UNAME_MACHINE=i386
1279 else
1280 UNAME_MACHINE="$cputype"
1281 fi
1282 echo ${UNAME_MACHINE}-unknown-plan9
1283 exit ;;
1284 *:TOPS-10:*:*)
1285 echo pdp10-unknown-tops10
1286 exit ;;
1287 *:TENEX:*:*)
1288 echo pdp10-unknown-tenex
1289 exit ;;
1290 KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
1291 echo pdp10-dec-tops20
1292 exit ;;
1293 XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
1294 echo pdp10-xkl-tops20
1295 exit ;;
1296 *:TOPS-20:*:*)
1297 echo pdp10-unknown-tops20
1298 exit ;;
1299 *:ITS:*:*)
1300 echo pdp10-unknown-its
1301 exit ;;
1302 SEI:*:*:SEIUX)
1303 echo mips-sei-seiux${UNAME_RELEASE}
1304 exit ;;
1305 *:DragonFly:*:*)
1306 echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
1307 exit ;;
1308 *:*VMS:*:*)
1309 UNAME_MACHINE=`(uname -p) 2>/dev/null`
1310 case "${UNAME_MACHINE}" in
1311 A*) echo alpha-dec-vms ; exit ;;
1312 I*) echo ia64-dec-vms ; exit ;;
1313 V*) echo vax-dec-vms ; exit ;;
1314 esac ;;
1315 *:XENIX:*:SysV)
1316 echo i386-pc-xenix
1317 exit ;;
1318 i*86:skyos:*:*)
1319 echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
1320 exit ;;
1321 i*86:rdos:*:*)
1322 echo ${UNAME_MACHINE}-pc-rdos
1323 exit ;;
1324 i*86:AROS:*:*)
1325 echo ${UNAME_MACHINE}-pc-aros
1326 exit ;;
1327 x86_64:VMkernel:*:*)
1328 echo ${UNAME_MACHINE}-unknown-esx
1329 exit ;;
1330 esac
1331
1332 #echo '(No uname command or uname output not recognized.)' 1>&2
1333 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
1334
1335 eval $set_cc_for_build
1336 cat >$dummy.c <<EOF
1337 #ifdef _SEQUENT_
1338 # include <sys/types.h>
1339 # include <sys/utsname.h>
1340 #endif
1341 main ()
1342 {
1343 #if defined (sony)
1344 #if defined (MIPSEB)
1345 /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
1346 I don't know.... */
1347 printf ("mips-sony-bsd\n"); exit (0);
1348 #else
1349 #include <sys/param.h>
1350 printf ("m68k-sony-newsos%s\n",
1351 #ifdef NEWSOS4
1352 "4"
1353 #else
1354 ""
1355 #endif
1356 ); exit (0);
1357 #endif
1358 #endif
1359
1360 #if defined (__arm) && defined (__acorn) && defined (__unix)
1361 printf ("arm-acorn-riscix\n"); exit (0);
1362 #endif
1363
1364 #if defined (hp300) && !defined (hpux)
1365 printf ("m68k-hp-bsd\n"); exit (0);
1366 #endif
1367
1368 #if defined (NeXT)
1369 #if !defined (__ARCHITECTURE__)
1370 #define __ARCHITECTURE__ "m68k"
1371 #endif
1372 int version;
1373 version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
1374 if (version < 4)
1375 printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
1376 else
1377 printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
1378 exit (0);
1379 #endif
1380
1381 #if defined (MULTIMAX) || defined (n16)
1382 #if defined (UMAXV)
1383 printf ("ns32k-encore-sysv\n"); exit (0);
1384 #else
1385 #if defined (CMU)
1386 printf ("ns32k-encore-mach\n"); exit (0);
1387 #else
1388 printf ("ns32k-encore-bsd\n"); exit (0);
1389 #endif
1390 #endif
1391 #endif
1392
1393 #if defined (__386BSD__)
1394 printf ("i386-pc-bsd\n"); exit (0);
1395 #endif
1396
1397 #if defined (sequent)
1398 #if defined (i386)
1399 printf ("i386-sequent-dynix\n"); exit (0);
1400 #endif
1401 #if defined (ns32000)
1402 printf ("ns32k-sequent-dynix\n"); exit (0);
1403 #endif
1404 #endif
1405
1406 #if defined (_SEQUENT_)
1407 struct utsname un;
1408
1409 uname(&un);
1410
1411 if (strncmp(un.version, "V2", 2) == 0) {
1412 printf ("i386-sequent-ptx2\n"); exit (0);
1413 }
1414 if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1415 printf ("i386-sequent-ptx1\n"); exit (0);
1416 }
1417 printf ("i386-sequent-ptx\n"); exit (0);
1418
1419 #endif
1420
1421 #if defined (vax)
1422 # if !defined (ultrix)
1423 # include <sys/param.h>
1424 # if defined (BSD)
1425 # if BSD == 43
1426 printf ("vax-dec-bsd4.3\n"); exit (0);
1427 # else
1428 # if BSD == 199006
1429 printf ("vax-dec-bsd4.3reno\n"); exit (0);
1430 # else
1431 printf ("vax-dec-bsd\n"); exit (0);
1432 # endif
1433 # endif
1434 # else
1435 printf ("vax-dec-bsd\n"); exit (0);
1436 # endif
1437 # else
1438 printf ("vax-dec-ultrix\n"); exit (0);
1439 # endif
1440 #endif
1441
1442 #if defined (alliant) && defined (i860)
1443 printf ("i860-alliant-bsd\n"); exit (0);
1444 #endif
1445
1446 exit (1);
1447 }
1448 EOF
1449
1450 $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
1451 { echo "$SYSTEM_NAME"; exit; }
1452
1453 # Apollos put the system type in the environment.
1454
1455 test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
1456
1457 # Convex versions that predate uname can use getsysinfo(1)
1458
1459 if [ -x /usr/convex/getsysinfo ]
1460 then
1461 case `getsysinfo -f cpu_type` in
1462 c1*)
1463 echo c1-convex-bsd
1464 exit ;;
1465 c2*)
1466 if getsysinfo -f scalar_acc
1467 then echo c32-convex-bsd
1468 else echo c2-convex-bsd
1469 fi
1470 exit ;;
1471 c34*)
1472 echo c34-convex-bsd
1473 exit ;;
1474 c38*)
1475 echo c38-convex-bsd
1476 exit ;;
1477 c4*)
1478 echo c4-convex-bsd
1479 exit ;;
1480 esac
1481 fi
1482
1483 cat >&2 <<EOF
1484 $0: unable to guess system type
1485
1486 This script, last modified $timestamp, has failed to recognize
1487 the operating system you are using. It is advised that you
1488 download the most up to date version of the config scripts from
1489
1490 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
1491 and
1492 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
1493
1494 If the version you run ($0) is already up to date, please
1495 send the following data and any information you think might be
1496 pertinent to <config-patches@gnu.org> in order to provide the needed
1497 information to handle your system.
1498
1499 config.guess timestamp = $timestamp
1500
1501 uname -m = `(uname -m) 2>/dev/null || echo unknown`
1502 uname -r = `(uname -r) 2>/dev/null || echo unknown`
1503 uname -s = `(uname -s) 2>/dev/null || echo unknown`
1504 uname -v = `(uname -v) 2>/dev/null || echo unknown`
1505
1506 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
1507 /bin/uname -X = `(/bin/uname -X) 2>/dev/null`
1508
1509 hostinfo = `(hostinfo) 2>/dev/null`
1510 /bin/universe = `(/bin/universe) 2>/dev/null`
1511 /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
1512 /bin/arch = `(/bin/arch) 2>/dev/null`
1513 /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
1514 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
1515
1516 UNAME_MACHINE = ${UNAME_MACHINE}
1517 UNAME_RELEASE = ${UNAME_RELEASE}
1518 UNAME_SYSTEM = ${UNAME_SYSTEM}
1519 UNAME_VERSION = ${UNAME_VERSION}
1520 EOF
1521
1522 exit 1
1523
1524 # Local variables:
1525 # eval: (add-hook 'write-file-hooks 'time-stamp)
1526 # time-stamp-start: "timestamp='"
1527 # time-stamp-format: "%:y-%02m-%02d"
1528 # time-stamp-end: "'"
1529 # End:
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for realmd 0.12.
2 # Generated by GNU Autoconf 2.69 for realmd 0.13.2.
33 #
44 # Report bugs to <http://bugs.freedesktop.org/enter_bug.cgi?product=realmd>.
55 #
580580 # Identity of this package.
581581 PACKAGE_NAME='realmd'
582582 PACKAGE_TARNAME='realmd'
583 PACKAGE_VERSION='0.12'
584 PACKAGE_STRING='realmd 0.12'
583 PACKAGE_VERSION='0.13.2'
584 PACKAGE_STRING='realmd 0.13.2'
585585 PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=realmd'
586586 PACKAGE_URL=''
587587
626626 am__EXEEXT_TRUE
627627 LTLIBOBJS
628628 LIBOBJS
629 cachedir
629630 privatedir
630631 WITH_COVERAGE_FALSE
631632 WITH_COVERAGE_TRUE
633634 LCOV
634635 GCOV
635636 TEST_MODE
637 ENABLE_DOC_FALSE
638 ENABLE_DOC_TRUE
639 XMLTO
640 XSLTPROC
636641 POLKIT_ACTION_DIR
637642 DBUS_POLICY_DIR
638643 DBUS_SERVICES_DIR
645650 POLKIT_CFLAGS
646651 PACKAGEKIT_LIBS
647652 PACKAGEKIT_CFLAGS
648 XSLTPROC
649 GTK_DOC_USE_REBASE_FALSE
650 GTK_DOC_USE_REBASE_TRUE
651 GTK_DOC_USE_LIBTOOL_FALSE
652 GTK_DOC_USE_LIBTOOL_TRUE
653 GTK_DOC_BUILD_PDF_FALSE
654 GTK_DOC_BUILD_PDF_TRUE
655 GTK_DOC_BUILD_HTML_FALSE
656 GTK_DOC_BUILD_HTML_TRUE
657 ENABLE_GTK_DOC_FALSE
658 ENABLE_GTK_DOC_TRUE
659 GTKDOC_DEPS_LIBS
660 GTKDOC_DEPS_CFLAGS
661 HTML_DIR
662 GTKDOC_MKPDF
663 GTKDOC_REBASE
664 GTKDOC_CHECK
665653 GLIB_LIBS
666654 GLIB_CFLAGS
667655 PKG_CONFIG_LIBDIR
814802 with_distro
815803 enable_dependency_tracking
816804 enable_nls
817 with_html_dir
818 enable_gtk_doc
819 enable_gtk_doc_html
820 enable_gtk_doc_pdf
805 enable_doc
821806 enable_debug
822807 enable_strict
823808 enable_coverage
836821 PKG_CONFIG_LIBDIR
837822 GLIB_CFLAGS
838823 GLIB_LIBS
839 GTKDOC_DEPS_CFLAGS
840 GTKDOC_DEPS_LIBS
841824 PACKAGEKIT_CFLAGS
842825 PACKAGEKIT_LIBS
843826 POLKIT_CFLAGS
13841367 # Omit some internal or obsolete options to make the list less imposing.
13851368 # This message is too long to be a string in the A/UX 3.1 sh.
13861369 cat <<_ACEOF
1387 \`configure' configures realmd 0.12 to adapt to many kinds of systems.
1370 \`configure' configures realmd 0.13.2 to adapt to many kinds of systems.
13881371
13891372 Usage: $0 [OPTION]... [VAR=VALUE]...
13901373
14501433
14511434 if test -n "$ac_init_help"; then
14521435 case $ac_init_help in
1453 short | recursive ) echo "Configuration of realmd 0.12:";;
1436 short | recursive ) echo "Configuration of realmd 0.13.2:";;
14541437 esac
14551438 cat <<\_ACEOF
14561439
14681451 --disable-dependency-tracking
14691452 speeds up one-time build
14701453 --disable-nls do not use Native Language Support
1471 --enable-gtk-doc use gtk-doc to build documentation [[default=no]]
1472 --enable-gtk-doc-html build documentation in html format [[default=yes]]
1473 --enable-gtk-doc-pdf build documentation in pdf format [[default=no]]
1454 --enable-doc Disable building documentation
1455
14741456 --enable-debug=no/default/yes
14751457 Turn on or off debugging
14761458
14831465 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
14841466 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
14851467 --with-distro Configure for a specific distribution (eg: redhat)
1486 --with-html-dir=PATH path to installed docs
14871468
14881469 Some influential environment variables:
14891470 CC C compiler command
15011482 path overriding pkg-config's built-in search path
15021483 GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
15031484 GLIB_LIBS linker flags for GLIB, overriding pkg-config
1504 GTKDOC_DEPS_CFLAGS
1505 C compiler flags for GTKDOC_DEPS, overriding pkg-config
1506 GTKDOC_DEPS_LIBS
1507 linker flags for GTKDOC_DEPS, overriding pkg-config
15081485 PACKAGEKIT_CFLAGS
15091486 C compiler flags for PACKAGEKIT, overriding pkg-config
15101487 PACKAGEKIT_LIBS
15811558 test -n "$ac_init_help" && exit $ac_status
15821559 if $ac_init_version; then
15831560 cat <<\_ACEOF
1584 realmd configure 0.12
1561 realmd configure 0.13.2
15851562 generated by GNU Autoconf 2.69
15861563
15871564 Copyright (C) 2012 Free Software Foundation, Inc.
19501927 This file contains any messages produced by compilers while
19511928 running configure, to aid debugging if configure makes a mistake.
19521929
1953 It was created by realmd $as_me 0.12, which was
1930 It was created by realmd $as_me 0.13.2, which was
19541931 generated by GNU Autoconf 2.69. Invocation command line was
19551932
19561933 $ $0 $@
27782755
27792756 # Define the identity of the package.
27802757 PACKAGE='realmd'
2781 VERSION='0.12'
2758 VERSION='0.13.2'
27822759
27832760
27842761 cat >>confdefs.h <<_ACEOF
72327209
72337210
72347211
7235
7236
7237
7238 # Extract the first word of "gtkdoc-check", so it can be a program name with args.
7239 set dummy gtkdoc-check; ac_word=$2
7212 # --------------------------------------------------------------------
7213 # PackageKit
7214
7215
7216 pkg_failed=no
7217 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PACKAGEKIT" >&5
7218 $as_echo_n "checking for PACKAGEKIT... " >&6; }
7219
7220 if test -n "$PACKAGEKIT_CFLAGS"; then
7221 pkg_cv_PACKAGEKIT_CFLAGS="$PACKAGEKIT_CFLAGS"
7222 elif test -n "$PKG_CONFIG"; then
7223 if test -n "$PKG_CONFIG" && \
7224 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"packagekit-glib2\""; } >&5
7225 ($PKG_CONFIG --exists --print-errors "packagekit-glib2") 2>&5
7226 ac_status=$?
7227 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7228 test $ac_status = 0; }; then
7229 pkg_cv_PACKAGEKIT_CFLAGS=`$PKG_CONFIG --cflags "packagekit-glib2" 2>/dev/null`
7230 test "x$?" != "x0" && pkg_failed=yes
7231 else
7232 pkg_failed=yes
7233 fi
7234 else
7235 pkg_failed=untried
7236 fi
7237 if test -n "$PACKAGEKIT_LIBS"; then
7238 pkg_cv_PACKAGEKIT_LIBS="$PACKAGEKIT_LIBS"
7239 elif test -n "$PKG_CONFIG"; then
7240 if test -n "$PKG_CONFIG" && \
7241 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"packagekit-glib2\""; } >&5
7242 ($PKG_CONFIG --exists --print-errors "packagekit-glib2") 2>&5
7243 ac_status=$?
7244 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7245 test $ac_status = 0; }; then
7246 pkg_cv_PACKAGEKIT_LIBS=`$PKG_CONFIG --libs "packagekit-glib2" 2>/dev/null`
7247 test "x$?" != "x0" && pkg_failed=yes
7248 else
7249 pkg_failed=yes
7250 fi
7251 else
7252 pkg_failed=untried
7253 fi
7254
7255
7256
7257 if test $pkg_failed = yes; then
7258 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7259 $as_echo "no" >&6; }
7260
7261 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
7262 _pkg_short_errors_supported=yes
7263 else
7264 _pkg_short_errors_supported=no
7265 fi
7266 if test $_pkg_short_errors_supported = yes; then
7267 PACKAGEKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "packagekit-glib2" 2>&1`
7268 else
7269 PACKAGEKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "packagekit-glib2" 2>&1`
7270 fi
7271 # Put the nasty error message in config.log where it belongs
7272 echo "$PACKAGEKIT_PKG_ERRORS" >&5
7273
7274 as_fn_error $? "Package requirements (packagekit-glib2) were not met:
7275
7276 $PACKAGEKIT_PKG_ERRORS
7277
7278 Consider adjusting the PKG_CONFIG_PATH environment variable if you
7279 installed software in a non-standard prefix.
7280
7281 Alternatively, you may set the environment variables PACKAGEKIT_CFLAGS
7282 and PACKAGEKIT_LIBS to avoid the need to call pkg-config.
7283 See the pkg-config man page for more details." "$LINENO" 5
7284 elif test $pkg_failed = untried; then
7285 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7286 $as_echo "no" >&6; }
7287 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7288 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7289 as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
7290 is in your PATH or set the PKG_CONFIG environment variable to the full
7291 path to pkg-config.
7292
7293 Alternatively, you may set the environment variables PACKAGEKIT_CFLAGS
7294 and PACKAGEKIT_LIBS to avoid the need to call pkg-config.
7295 See the pkg-config man page for more details.
7296
7297 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
7298 See \`config.log' for more details" "$LINENO" 5; }
7299 else
7300 PACKAGEKIT_CFLAGS=$pkg_cv_PACKAGEKIT_CFLAGS
7301 PACKAGEKIT_LIBS=$pkg_cv_PACKAGEKIT_LIBS
7302 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7303 $as_echo "yes" >&6; }
7304
7305 fi
7306
7307
7308
7309 # --------------------------------------------------------------------
7310 # PolicyKit
7311
7312
7313 pkg_failed=no
7314 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POLKIT" >&5
7315 $as_echo_n "checking for POLKIT... " >&6; }
7316
7317 if test -n "$POLKIT_CFLAGS"; then
7318 pkg_cv_POLKIT_CFLAGS="$POLKIT_CFLAGS"
7319 elif test -n "$PKG_CONFIG"; then
7320 if test -n "$PKG_CONFIG" && \
7321 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1\""; } >&5
7322 ($PKG_CONFIG --exists --print-errors "polkit-gobject-1") 2>&5
7323 ac_status=$?
7324 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7325 test $ac_status = 0; }; then
7326 pkg_cv_POLKIT_CFLAGS=`$PKG_CONFIG --cflags "polkit-gobject-1" 2>/dev/null`
7327 test "x$?" != "x0" && pkg_failed=yes
7328 else
7329 pkg_failed=yes
7330 fi
7331 else
7332 pkg_failed=untried
7333 fi
7334 if test -n "$POLKIT_LIBS"; then
7335 pkg_cv_POLKIT_LIBS="$POLKIT_LIBS"
7336 elif test -n "$PKG_CONFIG"; then
7337 if test -n "$PKG_CONFIG" && \
7338 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1\""; } >&5
7339 ($PKG_CONFIG --exists --print-errors "polkit-gobject-1") 2>&5
7340 ac_status=$?
7341 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7342 test $ac_status = 0; }; then
7343 pkg_cv_POLKIT_LIBS=`$PKG_CONFIG --libs "polkit-gobject-1" 2>/dev/null`
7344 test "x$?" != "x0" && pkg_failed=yes
7345 else
7346 pkg_failed=yes
7347 fi
7348 else
7349 pkg_failed=untried
7350 fi
7351
7352
7353
7354 if test $pkg_failed = yes; then
7355 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7356 $as_echo "no" >&6; }
7357
7358 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
7359 _pkg_short_errors_supported=yes
7360 else
7361 _pkg_short_errors_supported=no
7362 fi
7363 if test $_pkg_short_errors_supported = yes; then
7364 POLKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "polkit-gobject-1" 2>&1`
7365 else
7366 POLKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "polkit-gobject-1" 2>&1`
7367 fi
7368 # Put the nasty error message in config.log where it belongs
7369 echo "$POLKIT_PKG_ERRORS" >&5
7370
7371 as_fn_error $? "Package requirements (polkit-gobject-1) were not met:
7372
7373 $POLKIT_PKG_ERRORS
7374
7375 Consider adjusting the PKG_CONFIG_PATH environment variable if you
7376 installed software in a non-standard prefix.
7377
7378 Alternatively, you may set the environment variables POLKIT_CFLAGS
7379 and POLKIT_LIBS to avoid the need to call pkg-config.
7380 See the pkg-config man page for more details." "$LINENO" 5
7381 elif test $pkg_failed = untried; then
7382 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7383 $as_echo "no" >&6; }
7384 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7385 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7386 as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
7387 is in your PATH or set the PKG_CONFIG environment variable to the full
7388 path to pkg-config.
7389
7390 Alternatively, you may set the environment variables POLKIT_CFLAGS
7391 and POLKIT_LIBS to avoid the need to call pkg-config.
7392 See the pkg-config man page for more details.
7393
7394 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
7395 See \`config.log' for more details" "$LINENO" 5; }
7396 else
7397 POLKIT_CFLAGS=$pkg_cv_POLKIT_CFLAGS
7398 POLKIT_LIBS=$pkg_cv_POLKIT_LIBS
7399 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7400 $as_echo "yes" >&6; }
7401
7402 fi
7403
7404
7405
7406 # -------------------------------------------------------------------
7407 # Kerberos
7408
7409 if test "$KRB5_LIBS" != ""; then
7410 KRB5_PASSED_LIBS=$KRB5_LIBS
7411 fi
7412
7413 if test "$KRB5_CFLAGS" != ""; then
7414 KRB5_PASSED_CFLAGS=$KRB5_CFLAGS
7415 fi
7416
7417 # Extract the first word of "krb5-config", so it can be a program name with args.
7418 set dummy krb5-config; ac_word=$2
72407419 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
72417420 $as_echo_n "checking for $ac_word... " >&6; }
7242 if ${ac_cv_path_GTKDOC_CHECK+:} false; then :
7421 if ${ac_cv_path_KRB5_CONFIG+:} false; then :
72437422 $as_echo_n "(cached) " >&6
72447423 else
7245 case $GTKDOC_CHECK in
7424 case $KRB5_CONFIG in
72467425 [\\/]* | ?:[\\/]*)
7247 ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path.
7426 ac_cv_path_KRB5_CONFIG="$KRB5_CONFIG" # Let the user override the test with a path.
72487427 ;;
72497428 *)
72507429 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
72547433 test -z "$as_dir" && as_dir=.
72557434 for ac_exec_ext in '' $ac_executable_extensions; do
72567435 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7257 ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext"
7436 ac_cv_path_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext"
72587437 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
72597438 break 2
72607439 fi
72657444 ;;
72667445 esac
72677446 fi
7268 GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK
7269 if test -n "$GTKDOC_CHECK"; then
7270 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5
7271 $as_echo "$GTKDOC_CHECK" >&6; }
7447 KRB5_CONFIG=$ac_cv_path_KRB5_CONFIG
7448 if test -n "$KRB5_CONFIG"; then
7449 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KRB5_CONFIG" >&5
7450 $as_echo "$KRB5_CONFIG" >&6; }
72727451 else
72737452 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
72747453 $as_echo "no" >&6; }
72757454 fi
72767455
72777456
7278 for ac_prog in gtkdoc-rebase
7279 do
7280 # Extract the first word of "$ac_prog", so it can be a program name with args.
7281 set dummy $ac_prog; ac_word=$2
7282 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7283 $as_echo_n "checking for $ac_word... " >&6; }
7284 if ${ac_cv_path_GTKDOC_REBASE+:} false; then :
7457 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working krb5-config" >&5
7458 $as_echo_n "checking for working krb5-config... " >&6; }
7459 if test -x "$KRB5_CONFIG"; then
7460 KRB5_CFLAGS="`$KRB5_CONFIG --cflags`"
7461 KRB5_LIBS="`$KRB5_CONFIG --libs`"
7462 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7463 $as_echo "yes" >&6; }
7464 else
7465 if test x$KRB5_PASSED_LIBS = x; then
7466 as_fn_error $? "no. Please install MIT kerberos devel package" "$LINENO" 5
7467 fi
7468 fi
7469
7470 if test x$KRB5_PASSED_LIBS != x; then
7471 KRB5_LIBS=$KRB5_PASSED_LIBS
7472 fi
7473
7474 if test x$KRB5_PASSED_CFLAGS != x; then
7475 KRB5_CFLAGS=$KRB5_PASSED_CFLAGS
7476 fi
7477
7478
7479
7480
7481
7482 # -------------------------------------------------------------------
7483 # LDAP
7484
7485 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldap_search in -lldap" >&5
7486 $as_echo_n "checking for ldap_search in -lldap... " >&6; }
7487 if ${ac_cv_lib_ldap_ldap_search+:} false; then :
72857488 $as_echo_n "(cached) " >&6
72867489 else
7287 case $GTKDOC_REBASE in
7288 [\\/]* | ?:[\\/]*)
7289 ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path.
7290 ;;
7291 *)
7292 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7293 for as_dir in $PATH
7294 do
7295 IFS=$as_save_IFS
7296 test -z "$as_dir" && as_dir=.
7297 for ac_exec_ext in '' $ac_executable_extensions; do
7298 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7299 ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext"
7300 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7301 break 2
7302 fi
7490 ac_check_lib_save_LIBS=$LIBS
7491 LIBS="-lldap $LIBS"
7492 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7493 /* end confdefs.h. */
7494
7495 /* Override any GCC internal prototype to avoid an error.
7496 Use char because int might match the return type of a GCC
7497 builtin and then its argument prototype would still apply. */
7498 #ifdef __cplusplus
7499 extern "C"
7500 #endif
7501 char ldap_search ();
7502 int
7503 main ()
7504 {
7505 return ldap_search ();
7506 ;
7507 return 0;
7508 }
7509 _ACEOF
7510 if ac_fn_c_try_link "$LINENO"; then :
7511 ac_cv_lib_ldap_ldap_search=yes
7512 else
7513 ac_cv_lib_ldap_ldap_search=no
7514 fi
7515 rm -f core conftest.err conftest.$ac_objext \
7516 conftest$ac_exeext conftest.$ac_ext
7517 LIBS=$ac_check_lib_save_LIBS
7518 fi
7519 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ldap_ldap_search" >&5
7520 $as_echo "$ac_cv_lib_ldap_ldap_search" >&6; }
7521 if test "x$ac_cv_lib_ldap_ldap_search" = xyes; then :
7522 cat >>confdefs.h <<_ACEOF
7523 #define HAVE_LIBLDAP 1
7524 _ACEOF
7525
7526 LIBS="-lldap $LIBS"
7527
7528 else
7529 ldap_invalid=yes
7530 fi
7531
7532 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ber_pvt_opt_on in -llber" >&5
7533 $as_echo_n "checking for ber_pvt_opt_on in -llber... " >&6; }
7534 if ${ac_cv_lib_lber_ber_pvt_opt_on+:} false; then :
7535 $as_echo_n "(cached) " >&6
7536 else
7537 ac_check_lib_save_LIBS=$LIBS
7538 LIBS="-llber $LIBS"
7539 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7540 /* end confdefs.h. */
7541
7542 /* Override any GCC internal prototype to avoid an error.
7543 Use char because int might match the return type of a GCC
7544 builtin and then its argument prototype would still apply. */
7545 #ifdef __cplusplus
7546 extern "C"
7547 #endif
7548 char ber_pvt_opt_on ();
7549 int
7550 main ()
7551 {
7552 return ber_pvt_opt_on ();
7553 ;
7554 return 0;
7555 }
7556 _ACEOF
7557 if ac_fn_c_try_link "$LINENO"; then :
7558 ac_cv_lib_lber_ber_pvt_opt_on=yes
7559 else
7560 ac_cv_lib_lber_ber_pvt_opt_on=no
7561 fi
7562 rm -f core conftest.err conftest.$ac_objext \
7563 conftest$ac_exeext conftest.$ac_ext
7564 LIBS=$ac_check_lib_save_LIBS
7565 fi
7566 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lber_ber_pvt_opt_on" >&5
7567 $as_echo "$ac_cv_lib_lber_ber_pvt_opt_on" >&6; }
7568 if test "x$ac_cv_lib_lber_ber_pvt_opt_on" = xyes; then :
7569 cat >>confdefs.h <<_ACEOF
7570 #define HAVE_LIBLBER 1
7571 _ACEOF
7572
7573 LIBS="-llber $LIBS"
7574
7575 else
7576 ldap_invalid=yes
7577 fi
7578
7579 for ac_header in ldap.h
7580 do :
7581 ac_fn_c_check_header_mongrel "$LINENO" "ldap.h" "ac_cv_header_ldap_h" "$ac_includes_default"
7582 if test "x$ac_cv_header_ldap_h" = xyes; then :
7583 cat >>confdefs.h <<_ACEOF
7584 #define HAVE_LDAP_H 1
7585 _ACEOF
7586
7587 else
7588 ldap_invalid=yes
7589 fi
7590
73037591 done
7304 done
7305 IFS=$as_save_IFS
7306
7307 ;;
7308 esac
7309 fi
7310 GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE
7311 if test -n "$GTKDOC_REBASE"; then
7312 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5
7313 $as_echo "$GTKDOC_REBASE" >&6; }
7314 else
7315 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7316 $as_echo "no" >&6; }
7317 fi
7318
7319
7320 test -n "$GTKDOC_REBASE" && break
7321 done
7322 test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true"
7323
7324 # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args.
7325 set dummy gtkdoc-mkpdf; ac_word=$2
7326 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7327 $as_echo_n "checking for $ac_word... " >&6; }
7328 if ${ac_cv_path_GTKDOC_MKPDF+:} false; then :
7592
7593
7594 if test "$ldap_invalid" = "yes"; then
7595 as_fn_error $? "\"Couldn't find OpenLDAP headers or libraries\"" "$LINENO" 5
7596 fi
7597
7598 LDAP_LIBS=""
7599 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
7600 $as_echo_n "checking for res_query in -lresolv... " >&6; }
7601 if ${ac_cv_lib_resolv_res_query+:} false; then :
73297602 $as_echo_n "(cached) " >&6
73307603 else
7331 case $GTKDOC_MKPDF in
7332 [\\/]* | ?:[\\/]*)
7333 ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path.
7334 ;;
7335 *)
7336 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7337 for as_dir in $PATH
7338 do
7339 IFS=$as_save_IFS
7340 test -z "$as_dir" && as_dir=.
7341 for ac_exec_ext in '' $ac_executable_extensions; do
7342 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7343 ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext"
7344 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7345 break 2
7346 fi
7347 done
7348 done
7349 IFS=$as_save_IFS
7350
7351 ;;
7352 esac
7353 fi
7354 GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF
7355 if test -n "$GTKDOC_MKPDF"; then
7356 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5
7357 $as_echo "$GTKDOC_MKPDF" >&6; }
7358 else
7359 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7360 $as_echo "no" >&6; }
7361 fi
7362
7363
7364
7365
7366 # Check whether --with-html-dir was given.
7367 if test "${with_html_dir+set}" = set; then :
7368 withval=$with_html_dir;
7369 else
7370 with_html_dir='${datadir}/gtk-doc/html'
7371 fi
7372
7373 HTML_DIR="$with_html_dir"
7374
7375
7376 # Check whether --enable-gtk-doc was given.
7377 if test "${enable_gtk_doc+set}" = set; then :
7378 enableval=$enable_gtk_doc;
7379 else
7380 enable_gtk_doc=no
7381 fi
7382
7383
7384 if test x$enable_gtk_doc = xyes; then
7385 if test -n "$PKG_CONFIG" && \
7386 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.9\""; } >&5
7387 ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.9") 2>&5
7388 ac_status=$?
7389 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7390 test $ac_status = 0; }; then
7391 :
7392 else
7393 as_fn_error $? "You need to have gtk-doc >= 1.9 installed to build $PACKAGE_NAME" "$LINENO" 5
7394 fi
7395 if test "x$PACKAGE_NAME" != "xglib"; then
7396
7397 pkg_failed=no
7398 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5
7399 $as_echo_n "checking for GTKDOC_DEPS... " >&6; }
7400
7401 if test -n "$GTKDOC_DEPS_CFLAGS"; then
7402 pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS"
7403 elif test -n "$PKG_CONFIG"; then
7404 if test -n "$PKG_CONFIG" && \
7405 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5
7406 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5
7407 ac_status=$?
7408 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7409 test $ac_status = 0; }; then
7410 pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null`
7411 test "x$?" != "x0" && pkg_failed=yes
7412 else
7413 pkg_failed=yes
7414 fi
7415 else
7416 pkg_failed=untried
7417 fi
7418 if test -n "$GTKDOC_DEPS_LIBS"; then
7419 pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS"
7420 elif test -n "$PKG_CONFIG"; then
7421 if test -n "$PKG_CONFIG" && \
7422 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5
7423 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5
7424 ac_status=$?
7425 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7426 test $ac_status = 0; }; then
7427 pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null`
7428 test "x$?" != "x0" && pkg_failed=yes
7429 else
7430 pkg_failed=yes
7431 fi
7432 else
7433 pkg_failed=untried
7434 fi
7435
7436
7437
7438 if test $pkg_failed = yes; then
7439 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7440 $as_echo "no" >&6; }
7441
7442 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
7443 _pkg_short_errors_supported=yes
7444 else
7445 _pkg_short_errors_supported=no
7446 fi
7447 if test $_pkg_short_errors_supported = yes; then
7448 GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1`
7449 else
7450 GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1`
7451 fi
7452 # Put the nasty error message in config.log where it belongs
7453 echo "$GTKDOC_DEPS_PKG_ERRORS" >&5
7454
7455 as_fn_error $? "Package requirements (glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0) were not met:
7456
7457 $GTKDOC_DEPS_PKG_ERRORS
7458
7459 Consider adjusting the PKG_CONFIG_PATH environment variable if you
7460 installed software in a non-standard prefix.
7461
7462 Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS
7463 and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config.
7464 See the pkg-config man page for more details." "$LINENO" 5
7465 elif test $pkg_failed = untried; then
7466 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7467 $as_echo "no" >&6; }
7468 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7469 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7470 as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
7471 is in your PATH or set the PKG_CONFIG environment variable to the full
7472 path to pkg-config.
7473
7474 Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS
7475 and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config.
7476 See the pkg-config man page for more details.
7477
7478 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
7479 See \`config.log' for more details" "$LINENO" 5; }
7480 else
7481 GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS
7482 GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS
7483 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7484 $as_echo "yes" >&6; }
7485
7486 fi
7487 fi
7488 fi
7489
7490 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5
7491 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; }
7492 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5
7493 $as_echo "$enable_gtk_doc" >&6; }
7494
7495 # Check whether --enable-gtk-doc-html was given.
7496 if test "${enable_gtk_doc_html+set}" = set; then :
7497 enableval=$enable_gtk_doc_html;
7498 else
7499 enable_gtk_doc_html=yes
7500 fi
7501
7502 # Check whether --enable-gtk-doc-pdf was given.
7503 if test "${enable_gtk_doc_pdf+set}" = set; then :
7504 enableval=$enable_gtk_doc_pdf;
7505 else
7506 enable_gtk_doc_pdf=no
7507 fi
7508
7509
7510 if test -z "$GTKDOC_MKPDF"; then
7511 enable_gtk_doc_pdf=no
7512 fi
7513
7514
7515 if test x$enable_gtk_doc = xyes; then
7516 ENABLE_GTK_DOC_TRUE=
7517 ENABLE_GTK_DOC_FALSE='#'
7518 else
7519 ENABLE_GTK_DOC_TRUE='#'
7520 ENABLE_GTK_DOC_FALSE=
7521 fi
7522
7523 if test x$enable_gtk_doc_html = xyes; then
7524 GTK_DOC_BUILD_HTML_TRUE=
7525 GTK_DOC_BUILD_HTML_FALSE='#'
7526 else
7527 GTK_DOC_BUILD_HTML_TRUE='#'
7528 GTK_DOC_BUILD_HTML_FALSE=
7529 fi
7530
7531 if test x$enable_gtk_doc_pdf = xyes; then
7532 GTK_DOC_BUILD_PDF_TRUE=
7533 GTK_DOC_BUILD_PDF_FALSE='#'
7534 else
7535 GTK_DOC_BUILD_PDF_TRUE='#'
7536 GTK_DOC_BUILD_PDF_FALSE=
7537 fi
7538
7539 if test -n "$LIBTOOL"; then
7540 GTK_DOC_USE_LIBTOOL_TRUE=
7541 GTK_DOC_USE_LIBTOOL_FALSE='#'
7542 else
7543 GTK_DOC_USE_LIBTOOL_TRUE='#'
7544 GTK_DOC_USE_LIBTOOL_FALSE=
7545 fi
7546
7547 if test -n "$GTKDOC_REBASE"; then
7548 GTK_DOC_USE_REBASE_TRUE=
7549 GTK_DOC_USE_REBASE_FALSE='#'
7550 else
7551 GTK_DOC_USE_REBASE_TRUE='#'
7552 GTK_DOC_USE_REBASE_FALSE=
7553 fi
7554
7555
7556
7557 # Extract the first word of "xsltproc", so it can be a program name with args.
7604 ac_check_lib_save_LIBS=$LIBS
7605 LIBS="-lresolv $LIBS"
7606 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7607 /* end confdefs.h. */
7608
7609 /* Override any GCC internal prototype to avoid an error.
7610 Use char because int might match the return type of a GCC
7611 builtin and then its argument prototype would still apply. */
7612 #ifdef __cplusplus
7613 extern "C"
7614 #endif
7615 char res_query ();
7616 int
7617 main ()
7618 {
7619 return res_query ();
7620 ;
7621 return 0;
7622 }
7623 _ACEOF
7624 if ac_fn_c_try_link "$LINENO"; then :
7625 ac_cv_lib_resolv_res_query=yes
7626 else
7627 ac_cv_lib_resolv_res_query=no
7628 fi
7629 rm -f core conftest.err conftest.$ac_objext \
7630 conftest$ac_exeext conftest.$ac_ext
7631 LIBS=$ac_check_lib_save_LIBS
7632 fi
7633 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5
7634 $as_echo "$ac_cv_lib_resolv_res_query" >&6; }
7635 if test "x$ac_cv_lib_resolv_res_query" = xyes; then :
7636 LDAP_LIBS="-lresolv"
7637 fi
7638
7639 LDAP_LIBS="$LDAP_LIBS -lldap -llber"
7640 LDAP_CFLAGS=""
7641
7642
7643
7644
7645 # -------------------------------------------------------------------
7646 # Directories
7647
7648 DBUS_SERVICES_DIR="${datadir}/dbus-1/system-services"
7649
7650
7651 DBUS_POLICY_DIR="${sysconfdir}/dbus-1/system.d"
7652
7653
7654 POLKIT_ACTION_DIR="${datadir}/polkit-1/actions"
7655
7656
7657 # --------------------------------------------------------------------
7658 # Compilation options
7659
7660 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build documentation" >&5
7661 $as_echo_n "checking whether to build documentation... " >&6; }
7662 # Check whether --enable-doc was given.
7663 if test "${enable_doc+set}" = set; then :
7664 enableval=$enable_doc;
7665 fi
7666
7667
7668 if test "$enable_doc" = "no"; then
7669 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_doc" >&5
7670 $as_echo "$enable_doc" >&6; }
7671
7672 else
7673 if test "$enable_doc" = ""; then
7674 disable_msg="(perhaps --disable-doc)"
7675 fi
7676
7677 enable_doc="yes"
7678 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_doc" >&5
7679 $as_echo "$enable_doc" >&6; }
7680
7681 # Extract the first word of "xsltproc", so it can be a program name with args.
75587682 set dummy xsltproc; ac_word=$2
75597683 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
75607684 $as_echo_n "checking for $ac_word... " >&6; }
75817705 done
75827706 IFS=$as_save_IFS
75837707
7708 test -z "$ac_cv_path_XSLTPROC" && ac_cv_path_XSLTPROC="no"
75847709 ;;
75857710 esac
75867711 fi
75947719 fi
75957720
75967721
7597 if test x$XSLTPROC = x; then
7598 as_fn_error $? "xsltproc is required to build documentation" "$LINENO" 5
7599 fi
7600
7601 # --------------------------------------------------------------------
7602 # PackageKit
7603
7604
7605 pkg_failed=no
7606 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PACKAGEKIT" >&5
7607 $as_echo_n "checking for PACKAGEKIT... " >&6; }
7608
7609 if test -n "$PACKAGEKIT_CFLAGS"; then
7610 pkg_cv_PACKAGEKIT_CFLAGS="$PACKAGEKIT_CFLAGS"
7611 elif test -n "$PKG_CONFIG"; then
7612 if test -n "$PKG_CONFIG" && \
7613 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"packagekit-glib2\""; } >&5
7614 ($PKG_CONFIG --exists --print-errors "packagekit-glib2") 2>&5
7615 ac_status=$?
7616 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7617 test $ac_status = 0; }; then
7618 pkg_cv_PACKAGEKIT_CFLAGS=`$PKG_CONFIG --cflags "packagekit-glib2" 2>/dev/null`
7619 test "x$?" != "x0" && pkg_failed=yes
7620 else
7621 pkg_failed=yes
7622 fi
7623 else
7624 pkg_failed=untried
7625 fi
7626 if test -n "$PACKAGEKIT_LIBS"; then
7627 pkg_cv_PACKAGEKIT_LIBS="$PACKAGEKIT_LIBS"
7628 elif test -n "$PKG_CONFIG"; then
7629 if test -n "$PKG_CONFIG" && \
7630 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"packagekit-glib2\""; } >&5
7631 ($PKG_CONFIG --exists --print-errors "packagekit-glib2") 2>&5
7632 ac_status=$?
7633 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7634 test $ac_status = 0; }; then
7635 pkg_cv_PACKAGEKIT_LIBS=`$PKG_CONFIG --libs "packagekit-glib2" 2>/dev/null`
7636 test "x$?" != "x0" && pkg_failed=yes
7637 else
7638 pkg_failed=yes
7639 fi
7640 else
7641 pkg_failed=untried
7642 fi
7643
7644
7645
7646 if test $pkg_failed = yes; then
7647 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7648 $as_echo "no" >&6; }
7649
7650 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
7651 _pkg_short_errors_supported=yes
7652 else
7653 _pkg_short_errors_supported=no
7654 fi
7655 if test $_pkg_short_errors_supported = yes; then
7656 PACKAGEKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "packagekit-glib2" 2>&1`
7657 else
7658 PACKAGEKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "packagekit-glib2" 2>&1`
7659 fi
7660 # Put the nasty error message in config.log where it belongs
7661 echo "$PACKAGEKIT_PKG_ERRORS" >&5
7662
7663 as_fn_error $? "Package requirements (packagekit-glib2) were not met:
7664
7665 $PACKAGEKIT_PKG_ERRORS
7666
7667 Consider adjusting the PKG_CONFIG_PATH environment variable if you
7668 installed software in a non-standard prefix.
7669
7670 Alternatively, you may set the environment variables PACKAGEKIT_CFLAGS
7671 and PACKAGEKIT_LIBS to avoid the need to call pkg-config.
7672 See the pkg-config man page for more details." "$LINENO" 5
7673 elif test $pkg_failed = untried; then
7674 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7675 $as_echo "no" >&6; }
7676 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7677 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7678 as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
7679 is in your PATH or set the PKG_CONFIG environment variable to the full
7680 path to pkg-config.
7681
7682 Alternatively, you may set the environment variables PACKAGEKIT_CFLAGS
7683 and PACKAGEKIT_LIBS to avoid the need to call pkg-config.
7684 See the pkg-config man page for more details.
7685
7686 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
7687 See \`config.log' for more details" "$LINENO" 5; }
7688 else
7689 PACKAGEKIT_CFLAGS=$pkg_cv_PACKAGEKIT_CFLAGS
7690 PACKAGEKIT_LIBS=$pkg_cv_PACKAGEKIT_LIBS
7691 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7692 $as_echo "yes" >&6; }
7693
7694 fi
7695
7696
7697
7698 # --------------------------------------------------------------------
7699 # PolicyKit
7700
7701
7702 pkg_failed=no
7703 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POLKIT" >&5
7704 $as_echo_n "checking for POLKIT... " >&6; }
7705
7706 if test -n "$POLKIT_CFLAGS"; then
7707 pkg_cv_POLKIT_CFLAGS="$POLKIT_CFLAGS"
7708 elif test -n "$PKG_CONFIG"; then
7709 if test -n "$PKG_CONFIG" && \
7710 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1\""; } >&5
7711 ($PKG_CONFIG --exists --print-errors "polkit-gobject-1") 2>&5
7712 ac_status=$?
7713 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7714 test $ac_status = 0; }; then
7715 pkg_cv_POLKIT_CFLAGS=`$PKG_CONFIG --cflags "polkit-gobject-1" 2>/dev/null`
7716 test "x$?" != "x0" && pkg_failed=yes
7717 else
7718 pkg_failed=yes
7719 fi
7720 else
7721 pkg_failed=untried
7722 fi
7723 if test -n "$POLKIT_LIBS"; then
7724 pkg_cv_POLKIT_LIBS="$POLKIT_LIBS"
7725 elif test -n "$PKG_CONFIG"; then
7726 if test -n "$PKG_CONFIG" && \
7727 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1\""; } >&5
7728 ($PKG_CONFIG --exists --print-errors "polkit-gobject-1") 2>&5
7729 ac_status=$?
7730 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7731 test $ac_status = 0; }; then
7732 pkg_cv_POLKIT_LIBS=`$PKG_CONFIG --libs "polkit-gobject-1" 2>/dev/null`
7733 test "x$?" != "x0" && pkg_failed=yes
7734 else
7735 pkg_failed=yes
7736 fi
7737 else
7738 pkg_failed=untried
7739 fi
7740
7741
7742
7743 if test $pkg_failed = yes; then
7744 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7745 $as_echo "no" >&6; }
7746
7747 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
7748 _pkg_short_errors_supported=yes
7749 else
7750 _pkg_short_errors_supported=no
7751 fi
7752 if test $_pkg_short_errors_supported = yes; then
7753 POLKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "polkit-gobject-1" 2>&1`
7754 else
7755 POLKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "polkit-gobject-1" 2>&1`
7756 fi
7757 # Put the nasty error message in config.log where it belongs
7758 echo "$POLKIT_PKG_ERRORS" >&5
7759
7760 as_fn_error $? "Package requirements (polkit-gobject-1) were not met:
7761
7762 $POLKIT_PKG_ERRORS
7763
7764 Consider adjusting the PKG_CONFIG_PATH environment variable if you
7765 installed software in a non-standard prefix.
7766
7767 Alternatively, you may set the environment variables POLKIT_CFLAGS
7768 and POLKIT_LIBS to avoid the need to call pkg-config.
7769 See the pkg-config man page for more details." "$LINENO" 5
7770 elif test $pkg_failed = untried; then
7771 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7772 $as_echo "no" >&6; }
7773 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7774 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7775 as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
7776 is in your PATH or set the PKG_CONFIG environment variable to the full
7777 path to pkg-config.
7778
7779 Alternatively, you may set the environment variables POLKIT_CFLAGS
7780 and POLKIT_LIBS to avoid the need to call pkg-config.
7781 See the pkg-config man page for more details.
7782
7783 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
7784 See \`config.log' for more details" "$LINENO" 5; }
7785 else
7786 POLKIT_CFLAGS=$pkg_cv_POLKIT_CFLAGS
7787 POLKIT_LIBS=$pkg_cv_POLKIT_LIBS
7788 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7789 $as_echo "yes" >&6; }
7790
7791 fi
7792
7793
7794
7795 # -------------------------------------------------------------------
7796 # Kerberos
7797
7798 if test "$KRB5_LIBS" != ""; then
7799 KRB5_PASSED_LIBS=$KRB5_LIBS
7800 fi
7801
7802 if test "$KRB5_CFLAGS" != ""; then
7803 KRB5_PASSED_CFLAGS=$KRB5_CFLAGS
7804 fi
7805
7806 # Extract the first word of "krb5-config", so it can be a program name with args.
7807 set dummy krb5-config; ac_word=$2
7722 if test "$XSLTPROC" = "no"; then
7723 as_fn_error $? "the xsltproc command was not found $disable_msg" "$LINENO" 5
7724 fi
7725
7726 # Extract the first word of "xmlto", so it can be a program name with args.
7727 set dummy xmlto; ac_word=$2
78087728 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
78097729 $as_echo_n "checking for $ac_word... " >&6; }
7810 if ${ac_cv_path_KRB5_CONFIG+:} false; then :
7730 if ${ac_cv_path_XMLTO+:} false; then :
78117731 $as_echo_n "(cached) " >&6
78127732 else
7813 case $KRB5_CONFIG in
7733 case $XMLTO in
78147734 [\\/]* | ?:[\\/]*)
7815 ac_cv_path_KRB5_CONFIG="$KRB5_CONFIG" # Let the user override the test with a path.
7735 ac_cv_path_XMLTO="$XMLTO" # Let the user override the test with a path.
78167736 ;;
78177737 *)
78187738 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
78227742 test -z "$as_dir" && as_dir=.
78237743 for ac_exec_ext in '' $ac_executable_extensions; do
78247744 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7825 ac_cv_path_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext"
7745 ac_cv_path_XMLTO="$as_dir/$ac_word$ac_exec_ext"
78267746 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
78277747 break 2
78287748 fi
78307750 done
78317751 IFS=$as_save_IFS
78327752
7753 test -z "$ac_cv_path_XMLTO" && ac_cv_path_XMLTO="no"
78337754 ;;
78347755 esac
78357756 fi
7836 KRB5_CONFIG=$ac_cv_path_KRB5_CONFIG
7837 if test -n "$KRB5_CONFIG"; then
7838 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KRB5_CONFIG" >&5
7839 $as_echo "$KRB5_CONFIG" >&6; }
7757 XMLTO=$ac_cv_path_XMLTO
7758 if test -n "$XMLTO"; then
7759 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLTO" >&5
7760 $as_echo "$XMLTO" >&6; }
78407761 else
78417762 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
78427763 $as_echo "no" >&6; }
78437764 fi
78447765
78457766
7846 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working krb5-config" >&5
7847 $as_echo_n "checking for working krb5-config... " >&6; }
7848 if test -x "$KRB5_CONFIG"; then
7849 KRB5_CFLAGS="`$KRB5_CONFIG --cflags`"
7850 KRB5_LIBS="`$KRB5_CONFIG --libs`"
7851 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
7852 $as_echo "yes" >&6; }
7853 else
7854 if test x$KRB5_PASSED_LIBS = x; then
7855 as_fn_error $? "no. Please install MIT kerberos devel package" "$LINENO" 5
7767 if test "$XMLTO" = "no"; then
7768 as_fn_error $? "the xmlto command was not found $disable_msg" "$LINENO" 5
78567769 fi
7857 fi
7858
7859 if test x$KRB5_PASSED_LIBS != x; then
7860 KRB5_LIBS=$KRB5_PASSED_LIBS
7861 fi
7862
7863 if test x$KRB5_PASSED_CFLAGS != x; then
7864 KRB5_CFLAGS=$KRB5_PASSED_CFLAGS
7865 fi
7866
7867
7868
7869
7870
7871 # -------------------------------------------------------------------
7872 # LDAP
7873
7874 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldap_search in -lldap" >&5
7875 $as_echo_n "checking for ldap_search in -lldap... " >&6; }
7876 if ${ac_cv_lib_ldap_ldap_search+:} false; then :
7877 $as_echo_n "(cached) " >&6
7878 else
7879 ac_check_lib_save_LIBS=$LIBS
7880 LIBS="-lldap $LIBS"
7881 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7882 /* end confdefs.h. */
7883
7884 /* Override any GCC internal prototype to avoid an error.
7885 Use char because int might match the return type of a GCC
7886 builtin and then its argument prototype would still apply. */
7887 #ifdef __cplusplus
7888 extern "C"
7889 #endif
7890 char ldap_search ();
7891 int
7892 main ()
7893 {
7894 return ldap_search ();
7895 ;
7896 return 0;
7897 }
7898 _ACEOF
7899 if ac_fn_c_try_link "$LINENO"; then :
7900 ac_cv_lib_ldap_ldap_search=yes
7901 else
7902 ac_cv_lib_ldap_ldap_search=no
7903 fi
7904 rm -f core conftest.err conftest.$ac_objext \
7905 conftest$ac_exeext conftest.$ac_ext
7906 LIBS=$ac_check_lib_save_LIBS
7907 fi
7908 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ldap_ldap_search" >&5
7909 $as_echo "$ac_cv_lib_ldap_ldap_search" >&6; }
7910 if test "x$ac_cv_lib_ldap_ldap_search" = xyes; then :
7911 cat >>confdefs.h <<_ACEOF
7912 #define HAVE_LIBLDAP 1
7913 _ACEOF
7914
7915 LIBS="-lldap $LIBS"
7916
7917 else
7918 ldap_invalid=yes
7919 fi
7920
7921 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ber_pvt_opt_on in -llber" >&5
7922 $as_echo_n "checking for ber_pvt_opt_on in -llber... " >&6; }
7923 if ${ac_cv_lib_lber_ber_pvt_opt_on+:} false; then :
7924 $as_echo_n "(cached) " >&6
7925 else
7926 ac_check_lib_save_LIBS=$LIBS
7927 LIBS="-llber $LIBS"
7928 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7929 /* end confdefs.h. */
7930
7931 /* Override any GCC internal prototype to avoid an error.
7932 Use char because int might match the return type of a GCC
7933 builtin and then its argument prototype would still apply. */
7934 #ifdef __cplusplus
7935 extern "C"
7936 #endif
7937 char ber_pvt_opt_on ();
7938 int
7939 main ()
7940 {
7941 return ber_pvt_opt_on ();
7942 ;
7943 return 0;
7944 }
7945 _ACEOF
7946 if ac_fn_c_try_link "$LINENO"; then :
7947 ac_cv_lib_lber_ber_pvt_opt_on=yes
7948 else
7949 ac_cv_lib_lber_ber_pvt_opt_on=no
7950 fi
7951 rm -f core conftest.err conftest.$ac_objext \
7952 conftest$ac_exeext conftest.$ac_ext
7953 LIBS=$ac_check_lib_save_LIBS
7954 fi
7955 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lber_ber_pvt_opt_on" >&5
7956 $as_echo "$ac_cv_lib_lber_ber_pvt_opt_on" >&6; }
7957 if test "x$ac_cv_lib_lber_ber_pvt_opt_on" = xyes; then :
7958 cat >>confdefs.h <<_ACEOF
7959 #define HAVE_LIBLBER 1
7960 _ACEOF
7961
7962 LIBS="-llber $LIBS"
7963
7964 else
7965 ldap_invalid=yes
7966 fi
7967
7968 for ac_header in ldap.h
7969 do :
7970 ac_fn_c_check_header_mongrel "$LINENO" "ldap.h" "ac_cv_header_ldap_h" "$ac_includes_default"
7971 if test "x$ac_cv_header_ldap_h" = xyes; then :
7972 cat >>confdefs.h <<_ACEOF
7973 #define HAVE_LDAP_H 1
7974 _ACEOF
7975
7976 else
7977 ldap_invalid=yes
7978 fi
7979
7980 done
7981
7982
7983 if test "$ldap_invalid" = "yes"; then
7984 as_fn_error $? "\"Couldn't find OpenLDAP headers or libraries\"" "$LINENO" 5
7985 fi
7986
7987 LDAP_LIBS=""
7988 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
7989 $as_echo_n "checking for res_query in -lresolv... " >&6; }
7990 if ${ac_cv_lib_resolv_res_query+:} false; then :
7991 $as_echo_n "(cached) " >&6
7992 else
7993 ac_check_lib_save_LIBS=$LIBS
7994 LIBS="-lresolv $LIBS"
7995 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7996 /* end confdefs.h. */
7997
7998 /* Override any GCC internal prototype to avoid an error.
7999 Use char because int might match the return type of a GCC
8000 builtin and then its argument prototype would still apply. */
8001 #ifdef __cplusplus
8002 extern "C"
8003 #endif
8004 char res_query ();
8005 int
8006 main ()
8007 {
8008 return res_query ();
8009 ;
8010 return 0;
8011 }
8012 _ACEOF
8013 if ac_fn_c_try_link "$LINENO"; then :
8014 ac_cv_lib_resolv_res_query=yes
8015 else
8016 ac_cv_lib_resolv_res_query=no
8017 fi
8018 rm -f core conftest.err conftest.$ac_objext \
8019 conftest$ac_exeext conftest.$ac_ext
8020 LIBS=$ac_check_lib_save_LIBS
8021 fi
8022 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5
8023 $as_echo "$ac_cv_lib_resolv_res_query" >&6; }
8024 if test "x$ac_cv_lib_resolv_res_query" = xyes; then :
8025 LDAP_LIBS="-lresolv"
8026 fi
8027
8028 LDAP_LIBS="$LDAP_LIBS -lldap -llber"
8029 LDAP_CFLAGS=""
8030
8031
8032
8033
8034 # -------------------------------------------------------------------
8035 # Directories
8036
8037 DBUS_SERVICES_DIR="${datadir}/dbus-1/system-services"
8038
8039
8040 DBUS_POLICY_DIR="${sysconfdir}/dbus-1/system.d"
8041
8042
8043 POLKIT_ACTION_DIR="${datadir}/polkit-1/actions"
8044
8045
8046 # --------------------------------------------------------------------
8047 # Compilation options
7770
7771
7772
7773 fi
7774
7775 if test "$enable_doc" = "yes"; then
7776 ENABLE_DOC_TRUE=
7777 ENABLE_DOC_FALSE='#'
7778 else
7779 ENABLE_DOC_TRUE='#'
7780 ENABLE_DOC_FALSE=
7781 fi
7782
80487783
80497784 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for debug mode" >&5
80507785 $as_echo_n "checking for debug mode... " >&6; }
83518086 privatedir='${libdir}/realmd'
83528087
83538088
8354 ac_config_files="$ac_config_files Makefile build/Makefile dbus/Makefile doc/Makefile doc/manual/Makefile doc/website/Makefile doc/version.xml po/Makefile.in po/Makefile service/Makefile tests/Makefile tools/Makefile"
8089 cachedir='${localstatedir}/cache/realmd'
8090
8091
8092 ac_config_files="$ac_config_files Makefile build/Makefile dbus/Makefile doc/Makefile doc/internals/Makefile doc/manual/Makefile doc/website/Makefile doc/version.xml po/Makefile.in po/Makefile service/Makefile tests/Makefile tools/Makefile"
83558093
83568094 cat >confcache <<\_ACEOF
83578095 # This file is a shell script that caches the results of configure
85068244 ac_config_commands="$ac_config_commands po/stamp-it"
85078245
85088246
8509 if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
8510 as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined.
8511 Usually this means the macro was only invoked conditionally." "$LINENO" 5
8512 fi
8513 if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then
8514 as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined.
8515 Usually this means the macro was only invoked conditionally." "$LINENO" 5
8516 fi
8517 if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then
8518 as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined.
8519 Usually this means the macro was only invoked conditionally." "$LINENO" 5
8520 fi
8521 if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
8522 as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
8523 Usually this means the macro was only invoked conditionally." "$LINENO" 5
8524 fi
8525 if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then
8526 as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined.
8247 if test -z "${ENABLE_DOC_TRUE}" && test -z "${ENABLE_DOC_FALSE}"; then
8248 as_fn_error $? "conditional \"ENABLE_DOC\" was never defined.
85278249 Usually this means the macro was only invoked conditionally." "$LINENO" 5
85288250 fi
85298251 if test -z "${WITH_COVERAGE_TRUE}" && test -z "${WITH_COVERAGE_FALSE}"; then
89278649 # report actual input values of CONFIG_FILES etc. instead of their
89288650 # values after options handling.
89298651 ac_log="
8930 This file was extended by realmd $as_me 0.12, which was
8652 This file was extended by realmd $as_me 0.13.2, which was
89318653 generated by GNU Autoconf 2.69. Invocation command line was
89328654
89338655 CONFIG_FILES = $CONFIG_FILES
89938715 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
89948716 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
89958717 ac_cs_version="\\
8996 realmd config.status 0.12
8718 realmd config.status 0.13.2
89978719 configured by $0, generated by GNU Autoconf 2.69,
89988720 with options \\"\$ac_cs_config\\"
89998721
91308852 "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;;
91318853 "dbus/Makefile") CONFIG_FILES="$CONFIG_FILES dbus/Makefile" ;;
91328854 "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
8855 "doc/internals/Makefile") CONFIG_FILES="$CONFIG_FILES doc/internals/Makefile" ;;
91338856 "doc/manual/Makefile") CONFIG_FILES="$CONFIG_FILES doc/manual/Makefile" ;;
91348857 "doc/website/Makefile") CONFIG_FILES="$CONFIG_FILES doc/website/Makefile" ;;
91358858 "doc/version.xml") CONFIG_FILES="$CONFIG_FILES doc/version.xml" ;;
98969619 echo " Debug: $debug_status"
98979620 echo " Coverage: $enable_coverage"
98989621 echo " Strict: $enable_strict"
9622 echo " Documentation: $enable_doc"
98999623 echo
00 AC_PREREQ(2.63)
11
2 AC_INIT([realmd], [0.12],
2 AC_INIT([realmd], [0.13.2],
33 [http://bugs.freedesktop.org/enter_bug.cgi?product=realmd],
44 [realmd])
55
88 AC_CONFIG_MACRO_DIR([build/m4])
99 AM_INIT_AUTOMAKE([1.11 tar-ustar foreign -Wno-portability])
1010 AM_SANITY_CHECK
11 AM_CONFIG_HEADER(config.h)
11 AC_CONFIG_HEADERS(config.h)
1212 AC_CONFIG_SRCDIR([service/realm-daemon.c])
1313 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
1414 AM_MAINTAINER_MODE([enable])
6767 AC_SUBST(GLIB_CFLAGS)
6868 AC_SUBST(GLIB_LIBS)
6969
70 GTK_DOC_CHECK(1.9)
71
72 AC_PATH_PROG([XSLTPROC], [xsltproc])
73 if test x$XSLTPROC = x; then
74 AC_MSG_ERROR([xsltproc is required to build documentation])
75 fi
76
7770 # --------------------------------------------------------------------
7871 # PackageKit
7972
158151
159152 # --------------------------------------------------------------------
160153 # Compilation options
154
155 AC_MSG_CHECKING([whether to build documentation])
156 AC_ARG_ENABLE(doc,
157 AC_HELP_STRING([--enable-doc],
158 [Disable building documentation])
159 )
160
161 if test "$enable_doc" = "no"; then
162 AC_MSG_RESULT($enable_doc)
163
164 else
165 if test "$enable_doc" = ""; then
166 disable_msg="(perhaps --disable-doc)"
167 fi
168
169 enable_doc="yes"
170 AC_MSG_RESULT($enable_doc)
171
172 AC_PATH_PROG([XSLTPROC], [xsltproc], [no])
173 if test "$XSLTPROC" = "no"; then
174 AC_MSG_ERROR([the xsltproc command was not found $disable_msg])
175 fi
176
177 AC_PATH_PROG([XMLTO], [xmlto], [no])
178 if test "$XMLTO" = "no"; then
179 AC_MSG_ERROR([the xmlto command was not found $disable_msg])
180 fi
181
182 AC_SUBST(XSLTPROC)
183 AC_SUBST(XMLTO)
184 fi
185
186 AM_CONDITIONAL([ENABLE_DOC], [test "$enable_doc" = "yes"])
161187
162188 AC_MSG_CHECKING([for debug mode])
163189 AC_ARG_ENABLE(debug,
280306 privatedir='${libdir}/realmd'
281307 AC_SUBST(privatedir)
282308
309 cachedir='${localstatedir}/cache/realmd'
310 AC_SUBST(cachedir)
311
283312 AC_CONFIG_FILES([
284313 Makefile
285314 build/Makefile
286315 dbus/Makefile
287316 doc/Makefile
317 doc/internals/Makefile
288318 doc/manual/Makefile
289319 doc/website/Makefile
290320 doc/version.xml
303333 echo " Debug: $debug_status"
304334 echo " Coverage: $enable_coverage"
305335 echo " Strict: $enable_strict"
336 echo " Documentation: $enable_doc"
306337 echo
5252 $(top_srcdir)/Makefile.decl $(top_srcdir)/depcomp
5353 subdir = dbus
5454 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
55 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
56 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
55 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
56 $(top_srcdir)/configure.ac
5757 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5858 $(ACLOCAL_M4)
5959 mkinstalldirs = $(install_sh) -d
182182 GMOFILES = @GMOFILES@
183183 GMSGFMT = @GMSGFMT@
184184 GREP = @GREP@
185 GTKDOC_CHECK = @GTKDOC_CHECK@
186 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
187 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
188 GTKDOC_MKPDF = @GTKDOC_MKPDF@
189 GTKDOC_REBASE = @GTKDOC_REBASE@
190 HTML_DIR = @HTML_DIR@
191185 INSTALL = @INSTALL@
192186 INSTALL_DATA = @INSTALL_DATA@
193187 INSTALL_PROGRAM = @INSTALL_PROGRAM@
250244 USE_NLS = @USE_NLS@
251245 VERSION = @VERSION@
252246 XGETTEXT = @XGETTEXT@
247 XMLTO = @XMLTO@
253248 XSLTPROC = @XSLTPROC@
254249 abs_builddir = @abs_builddir@
255250 abs_srcdir = @abs_srcdir@
264259 bindir = @bindir@
265260 build_alias = @build_alias@
266261 builddir = @builddir@
262 cachedir = @cachedir@
267263 datadir = @datadir@
268264 datarootdir = @datarootdir@
269265 docdir = @docdir@
5252
5353 Discover realms for the given string. The input @string is
5454 usually a domain or realm name, perhaps typed by a user. If
55 an empty string is provided the realm provider should try to
56 discover a default realm if possible (eg: from DHCP).
55 an empty string is provided, the realm provider should try to
56 discover a default realm, if possible (e.g. from DHCP).
5757
5858 @options can contain, but is not limited to, the following values:
5959 <itemizedlist>
6767 <listitem><para><literal>server-software</literal>: a string
6868 containing the client software identifier that the returned
6969 realms should match.</para></listitem>
70 <listitem><para><literal>membership-software</literal>: a string
71 containing the membership software identifier that the returned
72 realms should match.</para></listitem>
7073 </itemizedlist>
7174
7275 The @relevance returned can be used to rank results from
7376 different discover calls to different providers. Implementors
7477 should return a positive number if the provider highly
7578 recommends that the realms be handled by this provider,
76 or a zero if it can possibly handle the realms. Negative
79 or a zero if it can possibly handle the realms. Negative numbers
7780 should be returned if no realms are found.
7881
7982 This method does not return an error when no realms are
80 discovered. It simply returns an @realm list.
81
82 To see diagnostic information about the discovery process
83 discovered. It simply returns an empty @realm list.
84
85 To see diagnostic information about the discovery process,
8386 connect to the org.freedesktop.realmd.Service::Diagnostics
8487 signal.
8588
127130 Cancel:
128131 @operation: the operation to cancel
129132
130 Cancel a realmd operation. To be able to cancel an operation
133 Cancel a realmd operation. To be able to cancel an operation,
131134 pass a uniquely chosen <literal>operation</literal> string
132 identifier as an option in the methods <literal>options</literal>
135 identifier as an option in the method's <literal>options</literal>
133136 argument.
134137
135138 These operation string identifiers should be unique per client
136139 calling the realmd service.
137140
138141 It is not guaranteed that the service can or will cancel the
139 operation. For example the operation may have already completed
142 operation. For example, the operation may have already completed
140143 by the time this method is handled. The caller of the operation
141144 method will receive a
142145 <literal>org.freedesktop.realmd.Error.Cancelled</literal>
171174 More than one line may be contained in @data, or a partial
172175 line. New line characters are embedded in @data.
173176
174 This signal is sent explicitly to the client which invoked
177 This signal is sent explicitly to the client which invoked an
175178 operation method. In order to tell which operation this
176179 diagnostic data results from, pass a unique
177180 <literal>operation</literal> string identifier in the
187190 <!--
188191 Release:
189192
190 Normally realmd waits until all clients have disconnected
191 before exiting itself, sometime later. For long lived clients
192 they can call this method to allow the realmd service to quit.
193 Normally, realmd waits until all clients have disconnected
194 before exiting itself sometime later. Long lived clients
195 can call this method to allow the realmd service to quit.
193196 This is an optimization. The daemon will not exit immediately.
194197 It is safe to call this multiple times.
195198 -->
217220 #org.freedesktop.realmd.Kerberos. Do not assume that all realms
218221 implement that kerberos interface. Use the
219222 #org.freedesktop.realmd.Realm:SupportedInterfaces property to see
220 which interfaces are set.
223 which interfaces are supported.
221224
222225 Different realms support various ways to configure them on the
223226 system. Use the #org.freedesktop.realmd.Realm:Configured property
224 to determine if a realm is configured. If it is configured the
227 to determine if a realm is configured. If it is configured, the
225228 property will be set to the interface of the mechanism that was
226229 used to configure it.
227230
228231 To configure a realm, look in the
229232 #org.freedesktop.realmd.Realm:SupportedInterfaces property for a
230 recognized purpose specific interface that can be used for
233 recognized purpose-specific interface that can be used for
231234 configuration, such as the
232235 #org.freedesktop.realmd.KerberosMembership interface and its
233236 #org.freedesktop.realmd.KerberosMembership.Join() method.
234237
235238 To deconfigure a realm from the current system, you can use the
236 #org.freedesktop.realmd.Realm.Deconfigure() method. In additon some
239 #org.freedesktop.realmd.Realm.Deconfigure() method. In addition, some
237240 of the configuration specific interfaces provide methods to
238 deconfigure a realm in a specific way, such as
241 deconfigure a realm in a specific way, such as the
239242 #org.freedesktop.realmd.KerberosMembership.Leave() method.
240243
241244 The various properties are guaranteed to have been updated before
328331 should be present:
329332 <itemizedlist>
330333 <listitem><para><literal>server-software</literal>:
331 identifier of the software running on the server (eg:
334 identifier of the software running on the server (e.g.
332335 <literal>active-directory</literal>).</para></listitem>
333336 <listitem><para><literal>client-software</literal>:
334 identifier of the software running on the client (eg:
337 identifier of the software running on the client (e.g.
335338 <literal>sssd</literal>).</para></listitem>
336339 </itemizedlist>
337340 -->
411414
412415 Change the login policy and/or permitted logins for this realm.
413416
414 Not all realms support the all the various login policies. An
417 Not all realms support all the various login policies. An
415418 error will be returned if the new login policy is not supported.
416419 You may specify an empty string for the @login_policy argument
417420 which will cause no change in the policy itself. If the policy
513516 Various kinds of credentials that are supported when calling the
514517 #org.freedesktop.realmd.Kerberos.Join() method.
515518
516 Each credential is represented by a type, and an owner. The type
519 Each credential is represented by a type and an owner. The type
517520 denotes which kind of credential is passed to the method. The
518521 owner indicates to the client how to prompt the user or obtain
519522 the credential, and to the service how to use the credential.
544547 The various owners are:
545548 <itemizedlist>
546549 <listitem><para><literal>administrator</literal>:
547 the credentials belong to a kerberos user principal.
550 the credentials belong to a kerberos administrator principal.
548551 The caller may use this as a hint to prompt the user
549552 for administrative credentials.</para></listitem>
550553 <listitem><para><literal>user</literal>:
556559 the credentials belong to a computer account.</para></listitem>
557560 <listitem><para><literal>none</literal>:
558561 the credentials have an unspecified owner, such as a one
559 time secret.</para></listitem>
562 time password.</para></listitem>
560563 </itemizedlist>
561564 -->
562565 <property name="SupportedJoinCredentials" type="a(ss)" access="read"/>
577580
578581 Join this machine to the realm and enroll the machine.
579582
580 If this method returns successfully then the machine will be
583 If this method returns successfully, then the machine will be
581584 joined to the realm. It is not necessary to restart services or the
582585 machine afterward. Relevant properties on the realm will be updated
583586 before the method returns.
601604 containing an LDAP DN for an organizational unit where the
602605 computer account should be created</para></listitem>
603606 <listitem><para><literal>assume-packages</literal>: a boolean
604 which overrides makes the join assume that all needed
607 which makes the join assume that all needed
605608 software packages have already been installed</para></listitem>
609 <listitem><para><literal>membership-software</literal>: a string
610 containing the membership software identifier that the returned
611 realms should match.</para></listitem>
606612 </itemizedlist>
607613
608614 This method requires authorization for the PolicyKit action
615621 <listitem><para><literal>org.freedesktop.realmd.Error.Cancelled</literal>:
616622 returned if the operation was cancelled.</para></listitem>
617623 <listitem><para><literal>org.freedesktop.realmd.Error.NotAuthorized</literal>:
618 returned if the calling client is not permitted to perform an join
624 returned if the calling client is not permitted to perform a join
619625 operation.</para></listitem>
620626 <listitem><para><literal>org.freedesktop.realmd.Error.AuthenticationFailed</literal>:
621627 returned if the credentials passed did not authenticate against the realm
622628 correctly. It is appropriate to prompt the user again.</para></listitem>
623629 <listitem><para><literal>org.freedesktop.realmd.Error.AlreadyEnrolled</literal>:
624 returned if already enrolled in this realm, or another realm and enrolling
625 in multiple realms is not supported.</para></listitem>
630 returned if already enrolled in this realm, or if already enrolled in another realm
631 (if enrolling in multiple realms is not supported).</para></listitem>
626632 <listitem><para><literal>org.freedesktop.realmd.Error.Busy</literal>:
627633 returned if the service is currently performing another operation like
628634 join or leave.</para></listitem>
638644
639645 Leave the realm and unenroll the machine.
640646
641 If this method returns successfully then the machine will have
647 If this method returns successfully, then the machine will have
642648 left the domain and been unenrolled. It is not necessary to restart
643649 services or the machine afterward. Relevant properties on the realm
644650 will be updated before the method returns.
645651
646652 The @credentials should be set according to one of the
647653 supported credentials returned by
648 #org.freedesktop.realmd.Kerberos:SupportedUnenrollCredentials.
654 #org.freedesktop.realmd.Kerberos:SupportedJoinCredentials.
649655 The first string in the tuple is the type, the second string
650656 is the owner, and the variant contains the credential contents
651657 See the discussion at
652 #org.freedesktop.realmd.Kerberos:SupportedEnrollCredentials
658 #org.freedesktop.realmd.Kerberos:SupportedJoinCredentials
653659 for more information.
654660
655661 @options can contain, but is not limited to, the following values:
679685 returned if not enrolled in this realm.</para></listitem>
680686 <listitem><para><literal>org.freedesktop.realmd.Error.Busy</literal>:
681687 returned if the service is currently performing another operation like
682 enroll or unenroll.</para></listitem>
688 join or leave.</para></listitem>
683689 </itemizedlist>
684690 -->
685691 <method name="Leave">
4343 #define REALM_DBUS_ERROR_ALREADY_CONFIGURED "org.freedesktop.realmd.Error.AlreadyConfigured"
4444 #define REALM_DBUS_ERROR_NOT_CONFIGURED "org.freedesktop.realmd.Error.NotConfigured"
4545 #define REALM_DBUS_ERROR_AUTH_FAILED "org.freedesktop.realmd.Error.AuthenticationFailed"
46 #define REALM_DBUS_ERROR_CANCELLED "org.freedesktop.realmd.Error.Cancelled"
4647
4748 #define REALM_DBUS_DISCOVERY_DOMAIN "domain"
4849 #define REALM_DBUS_DISCOVERY_KDCS "kerberos-kdcs"
6768 #define REALM_DBUS_IDENTIFIER_SSSD "sssd"
6869 #define REALM_DBUS_IDENTIFIER_SAMBA "samba"
6970 #define REALM_DBUS_IDENTIFIER_ADCLI "adcli"
71 #define REALM_DBUS_IDENTIFIER_EXAMPLE "example"
7072
7173 G_END_DECLS
7274
0 SUBDIRS = manual
0 if ENABLE_DOC
1
2 SUBDIRS = manual internals
13
24 EXTRA_DIST = \
35 version.xml.in \
79 DISTCLEANFILES = \
810 website/Makefile
911
10 if ENABLE_GTK_DOC
11 upload: website manual
12 upload:
1213 make -C manual upload
14 make -C internals upload
1315 make -C website upload
1416
1517 else
1618 upload:
17 @echo "*** gtk-doc must be installed (and --enable-gtk-doc) in order to make distcheck"
19 @echo "*** doc must be enabled (and --enable-doc) in order to make upload"
1820 @false
1921 distcheck-hook:
20 @echo "*** gtk-doc must be installed (and --enable-gtk-doc) in order to make distcheck"
22 @echo "*** doc must be enabled (and --enable-doc) in order to make distcheck"
2123 @false
2224 endif
5050 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
5151 $(srcdir)/version.xml.in
5252 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
53 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
54 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
53 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
54 $(top_srcdir)/configure.ac
5555 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5656 $(ACLOCAL_M4)
5757 mkinstalldirs = $(install_sh) -d
9191 distdir
9292 ETAGS = etags
9393 CTAGS = ctags
94 DIST_SUBDIRS = $(SUBDIRS)
94 DIST_SUBDIRS = manual internals
9595 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
9696 am__relativize = \
9797 dir0=`pwd`; \
153153 GMOFILES = @GMOFILES@
154154 GMSGFMT = @GMSGFMT@
155155 GREP = @GREP@
156 GTKDOC_CHECK = @GTKDOC_CHECK@
157 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
158 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
159 GTKDOC_MKPDF = @GTKDOC_MKPDF@
160 GTKDOC_REBASE = @GTKDOC_REBASE@
161 HTML_DIR = @HTML_DIR@
162156 INSTALL = @INSTALL@
163157 INSTALL_DATA = @INSTALL_DATA@
164158 INSTALL_PROGRAM = @INSTALL_PROGRAM@
221215 USE_NLS = @USE_NLS@
222216 VERSION = @VERSION@
223217 XGETTEXT = @XGETTEXT@
218 XMLTO = @XMLTO@
224219 XSLTPROC = @XSLTPROC@
225220 abs_builddir = @abs_builddir@
226221 abs_srcdir = @abs_srcdir@
235230 bindir = @bindir@
236231 build_alias = @build_alias@
237232 builddir = @builddir@
233 cachedir = @cachedir@
238234 datadir = @datadir@
239235 datarootdir = @datarootdir@
240236 docdir = @docdir@
267263 top_build_prefix = @top_build_prefix@
268264 top_builddir = @top_builddir@
269265 top_srcdir = @top_srcdir@
270 SUBDIRS = manual
271 EXTRA_DIST = \
272 version.xml.in \
273 version.xml \
274 website/Makefile.in
275
276 DISTCLEANFILES = \
277 website/Makefile
266 @ENABLE_DOC_TRUE@SUBDIRS = manual internals
267 @ENABLE_DOC_TRUE@EXTRA_DIST = \
268 @ENABLE_DOC_TRUE@ version.xml.in \
269 @ENABLE_DOC_TRUE@ version.xml \
270 @ENABLE_DOC_TRUE@ website/Makefile.in
271
272 @ENABLE_DOC_TRUE@DISTCLEANFILES = \
273 @ENABLE_DOC_TRUE@ website/Makefile
278274
279275 all: all-recursive
280276
613609 pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
614610
615611
616 @ENABLE_GTK_DOC_TRUE@upload: website manual
617 @ENABLE_GTK_DOC_TRUE@ make -C manual upload
618 @ENABLE_GTK_DOC_TRUE@ make -C website upload
619
620 @ENABLE_GTK_DOC_FALSE@upload:
621 @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed (and --enable-gtk-doc) in order to make distcheck"
622 @ENABLE_GTK_DOC_FALSE@ @false
623 @ENABLE_GTK_DOC_FALSE@distcheck-hook:
624 @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed (and --enable-gtk-doc) in order to make distcheck"
625 @ENABLE_GTK_DOC_FALSE@ @false
612 @ENABLE_DOC_TRUE@upload:
613 @ENABLE_DOC_TRUE@ make -C manual upload
614 @ENABLE_DOC_TRUE@ make -C internals upload
615 @ENABLE_DOC_TRUE@ make -C website upload
616
617 @ENABLE_DOC_FALSE@upload:
618 @ENABLE_DOC_FALSE@ @echo "*** doc must be enabled (and --enable-doc) in order to make upload"
619 @ENABLE_DOC_FALSE@ @false
620 @ENABLE_DOC_FALSE@distcheck-hook:
621 @ENABLE_DOC_FALSE@ @echo "*** doc must be enabled (and --enable-doc) in order to make distcheck"
622 @ENABLE_DOC_FALSE@ @false
626623
627624 # Tell versions [3.59,3.63) of GNU make to not export all variables.
628625 # Otherwise a system limit (for SysV at least) may be exceeded.
0
1 NULL =
2
3 DOCBOOK_FILE = realmd-internals.xml
4
5 DOCBOOK_PARAMS = docbook-params.xsl
6
7 STATIC_FILES = \
8 $(NULL)
9
10 CONTENT_INCLUDES = \
11 $(NULL)
12
13 SVG_IMAGES = \
14 discover-method.svg \
15 join-method.svg \
16 $(NULL)
17
18 EXTRA_DIST = \
19 $(DOCBOOK_FILE) \
20 $(DOCBOOK_PARAMS) \
21 $(CONTENT_INCLUDES) \
22 $(SVG_IMAGES) \
23 $(XSLT_FILES) \
24 static \
25 $(NULL)
26
27 CLEANFILES = \
28 $(NULL)
29
30 html/realmd-internals.html: $(DOCBOOK_FILE) $(CONTENT_INCLUDES) $(STATIC_FILES)
31 $(AM_V_GEN) mkdir -p html && cp $(srcdir)/static/* html/
32 $(AM_V_GEN) $(XMLTO) html-nochunks -m $(DOCBOOK_PARAMS) -o html \
33 --searchpath $(builddir):$(srcdir) $(srcdir)/$(DOCBOOK_FILE)
34
35 all-local: html/realmd-internals.html
36
37 clean-local:
38 @rm -rf *.tmp html
39
40 render-images:
41 for i in $(SVG_IMAGES:.svg=); do \
42 inkscape --export-png=static/$$i.png $$i.svg; \
43 done
44
45 upload: all
46 rsync -Hvax html/./ anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/internals/./
0 # Makefile.in generated by automake 1.12.2 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
4
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15 VPATH = @srcdir@
16 am__make_dryrun = \
17 { \
18 am__dry=no; \
19 case $$MAKEFLAGS in \
20 *\\[\ \ ]*) \
21 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
22 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
23 *) \
24 for am__flg in $$MAKEFLAGS; do \
25 case $$am__flg in \
26 *=*|--*) ;; \
27 *n*) am__dry=yes; break;; \
28 esac; \
29 done;; \
30 esac; \
31 test $$am__dry = yes; \
32 }
33 pkgdatadir = $(datadir)/@PACKAGE@
34 pkgincludedir = $(includedir)/@PACKAGE@
35 pkglibdir = $(libdir)/@PACKAGE@
36 pkglibexecdir = $(libexecdir)/@PACKAGE@
37 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
38 install_sh_DATA = $(install_sh) -c -m 644
39 install_sh_PROGRAM = $(install_sh) -c
40 install_sh_SCRIPT = $(install_sh) -c
41 INSTALL_HEADER = $(INSTALL_DATA)
42 transform = $(program_transform_name)
43 NORMAL_INSTALL = :
44 PRE_INSTALL = :
45 POST_INSTALL = :
46 NORMAL_UNINSTALL = :
47 PRE_UNINSTALL = :
48 POST_UNINSTALL = :
49 subdir = doc/internals
50 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
51 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
52 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
53 $(top_srcdir)/configure.ac
54 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
55 $(ACLOCAL_M4)
56 mkinstalldirs = $(install_sh) -d
57 CONFIG_HEADER = $(top_builddir)/config.h
58 CONFIG_CLEAN_FILES =
59 CONFIG_CLEAN_VPATH_FILES =
60 AM_V_P = $(am__v_P_@AM_V@)
61 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
62 am__v_P_0 = false
63 am__v_P_1 = :
64 AM_V_GEN = $(am__v_GEN_@AM_V@)
65 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
66 am__v_GEN_0 = @echo " GEN " $@;
67 am__v_GEN_1 =
68 AM_V_at = $(am__v_at_@AM_V@)
69 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
70 am__v_at_0 = @
71 am__v_at_1 =
72 SOURCES =
73 DIST_SOURCES =
74 am__can_run_installinfo = \
75 case $$AM_UPDATE_INFO_DIR in \
76 n|no|NO) false;; \
77 *) (install-info --version) >/dev/null 2>&1;; \
78 esac
79 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
80 ACLOCAL = @ACLOCAL@
81 ALL_LINGUAS = @ALL_LINGUAS@
82 AMTAR = @AMTAR@
83 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
84 AUTOCONF = @AUTOCONF@
85 AUTOHEADER = @AUTOHEADER@
86 AUTOMAKE = @AUTOMAKE@
87 AWK = @AWK@
88 CATALOGS = @CATALOGS@
89 CATOBJEXT = @CATOBJEXT@
90 CC = @CC@
91 CCDEPMODE = @CCDEPMODE@
92 CFLAGS = @CFLAGS@
93 CPP = @CPP@
94 CPPFLAGS = @CPPFLAGS@
95 CYGPATH_W = @CYGPATH_W@
96 DATADIRNAME = @DATADIRNAME@
97 DBUS_POLICY_DIR = @DBUS_POLICY_DIR@
98 DBUS_SERVICES_DIR = @DBUS_SERVICES_DIR@
99 DEFS = @DEFS@
100 DEPDIR = @DEPDIR@
101 DISTRO = @DISTRO@
102 ECHO_C = @ECHO_C@
103 ECHO_N = @ECHO_N@
104 ECHO_T = @ECHO_T@
105 EGREP = @EGREP@
106 EXEEXT = @EXEEXT@
107 GCOV = @GCOV@
108 GENHTML = @GENHTML@
109 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
110 GLIB_CFLAGS = @GLIB_CFLAGS@
111 GLIB_LIBS = @GLIB_LIBS@
112 GMOFILES = @GMOFILES@
113 GMSGFMT = @GMSGFMT@
114 GREP = @GREP@
115 INSTALL = @INSTALL@
116 INSTALL_DATA = @INSTALL_DATA@
117 INSTALL_PROGRAM = @INSTALL_PROGRAM@
118 INSTALL_SCRIPT = @INSTALL_SCRIPT@
119 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
120 INSTOBJEXT = @INSTOBJEXT@
121 INTLLIBS = @INTLLIBS@
122 INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
123 INTLTOOL_MERGE = @INTLTOOL_MERGE@
124 INTLTOOL_PERL = @INTLTOOL_PERL@
125 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
126 INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@
127 INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@
128 INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@
129 INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@
130 KRB5_CFLAGS = @KRB5_CFLAGS@
131 KRB5_CONFIG = @KRB5_CONFIG@
132 KRB5_LIBS = @KRB5_LIBS@
133 LCOV = @LCOV@
134 LDAP_CFLAGS = @LDAP_CFLAGS@
135 LDAP_LIBS = @LDAP_LIBS@
136 LDFLAGS = @LDFLAGS@
137 LIBOBJS = @LIBOBJS@
138 LIBS = @LIBS@
139 LN_S = @LN_S@
140 LTLIBOBJS = @LTLIBOBJS@
141 MAINT = @MAINT@
142 MAKEINFO = @MAKEINFO@
143 MKDIR_P = @MKDIR_P@
144 MKINSTALLDIRS = @MKINSTALLDIRS@
145 MSGFMT = @MSGFMT@
146 MSGFMT_OPTS = @MSGFMT_OPTS@
147 MSGMERGE = @MSGMERGE@
148 OBJEXT = @OBJEXT@
149 PACKAGE = @PACKAGE@
150 PACKAGEKIT_CFLAGS = @PACKAGEKIT_CFLAGS@
151 PACKAGEKIT_LIBS = @PACKAGEKIT_LIBS@
152 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
153 PACKAGE_NAME = @PACKAGE_NAME@
154 PACKAGE_STRING = @PACKAGE_STRING@
155 PACKAGE_TARNAME = @PACKAGE_TARNAME@
156 PACKAGE_URL = @PACKAGE_URL@
157 PACKAGE_VERSION = @PACKAGE_VERSION@
158 PATH_SEPARATOR = @PATH_SEPARATOR@
159 PKG_CONFIG = @PKG_CONFIG@
160 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
161 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
162 POFILES = @POFILES@
163 POLKIT_ACTION_DIR = @POLKIT_ACTION_DIR@
164 POLKIT_CFLAGS = @POLKIT_CFLAGS@
165 POLKIT_LIBS = @POLKIT_LIBS@
166 POSUB = @POSUB@
167 PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
168 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
169 RANLIB = @RANLIB@
170 SET_MAKE = @SET_MAKE@
171 SHELL = @SHELL@
172 STRIP = @STRIP@
173 TEST_MODE = @TEST_MODE@
174 USE_NLS = @USE_NLS@
175 VERSION = @VERSION@
176 XGETTEXT = @XGETTEXT@
177 XMLTO = @XMLTO@
178 XSLTPROC = @XSLTPROC@
179 abs_builddir = @abs_builddir@
180 abs_srcdir = @abs_srcdir@
181 abs_top_builddir = @abs_top_builddir@
182 abs_top_srcdir = @abs_top_srcdir@
183 ac_ct_CC = @ac_ct_CC@
184 am__include = @am__include@
185 am__leading_dot = @am__leading_dot@
186 am__quote = @am__quote@
187 am__tar = @am__tar@
188 am__untar = @am__untar@
189 bindir = @bindir@
190 build_alias = @build_alias@
191 builddir = @builddir@
192 cachedir = @cachedir@
193 datadir = @datadir@
194 datarootdir = @datarootdir@
195 docdir = @docdir@
196 dvidir = @dvidir@
197 exec_prefix = @exec_prefix@
198 host_alias = @host_alias@
199 htmldir = @htmldir@
200 includedir = @includedir@
201 infodir = @infodir@
202 install_sh = @install_sh@
203 intltool__v_merge_options_ = @intltool__v_merge_options_@
204 intltool__v_merge_options_0 = @intltool__v_merge_options_0@
205 libdir = @libdir@
206 libexecdir = @libexecdir@
207 localedir = @localedir@
208 localstatedir = @localstatedir@
209 mandir = @mandir@
210 mkdir_p = @mkdir_p@
211 oldincludedir = @oldincludedir@
212 pdfdir = @pdfdir@
213 prefix = @prefix@
214 privatedir = @privatedir@
215 program_transform_name = @program_transform_name@
216 psdir = @psdir@
217 sbindir = @sbindir@
218 sharedstatedir = @sharedstatedir@
219 srcdir = @srcdir@
220 sysconfdir = @sysconfdir@
221 target_alias = @target_alias@
222 top_build_prefix = @top_build_prefix@
223 top_builddir = @top_builddir@
224 top_srcdir = @top_srcdir@
225 NULL =
226 DOCBOOK_FILE = realmd-internals.xml
227 DOCBOOK_PARAMS = docbook-params.xsl
228 STATIC_FILES = \
229 $(NULL)
230
231 CONTENT_INCLUDES = \
232 $(NULL)
233
234 SVG_IMAGES = \
235 discover-method.svg \
236 join-method.svg \
237 $(NULL)
238
239 EXTRA_DIST = \
240 $(DOCBOOK_FILE) \
241 $(DOCBOOK_PARAMS) \
242 $(CONTENT_INCLUDES) \
243 $(SVG_IMAGES) \
244 $(XSLT_FILES) \
245 static \
246 $(NULL)
247
248 CLEANFILES = \
249 $(NULL)
250
251 all: all-am
252
253 .SUFFIXES:
254 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
255 @for dep in $?; do \
256 case '$(am__configure_deps)' in \
257 *$$dep*) \
258 ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
259 && { if test -f $@; then exit 0; else break; fi; }; \
260 exit 1;; \
261 esac; \
262 done; \
263 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/internals/Makefile'; \
264 $(am__cd) $(top_srcdir) && \
265 $(AUTOMAKE) --foreign doc/internals/Makefile
266 .PRECIOUS: Makefile
267 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
268 @case '$?' in \
269 *config.status*) \
270 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
271 *) \
272 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
273 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
274 esac;
275
276 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
277 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
278
279 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
280 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
281 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
282 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
283 $(am__aclocal_m4_deps):
284 tags: TAGS
285 TAGS:
286
287 ctags: CTAGS
288 CTAGS:
289
290 cscope cscopelist:
291
292
293 distdir: $(DISTFILES)
294 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
295 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
296 list='$(DISTFILES)'; \
297 dist_files=`for file in $$list; do echo $$file; done | \
298 sed -e "s|^$$srcdirstrip/||;t" \
299 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
300 case $$dist_files in \
301 */*) $(MKDIR_P) `echo "$$dist_files" | \
302 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
303 sort -u` ;; \
304 esac; \
305 for file in $$dist_files; do \
306 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
307 if test -d $$d/$$file; then \
308 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
309 if test -d "$(distdir)/$$file"; then \
310 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
311 fi; \
312 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
313 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
314 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
315 fi; \
316 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
317 else \
318 test -f "$(distdir)/$$file" \
319 || cp -p $$d/$$file "$(distdir)/$$file" \
320 || exit 1; \
321 fi; \
322 done
323 check-am: all-am
324 check: check-am
325 all-am: Makefile all-local
326 installdirs:
327 install: install-am
328 install-exec: install-exec-am
329 install-data: install-data-am
330 uninstall: uninstall-am
331
332 install-am: all-am
333 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
334
335 installcheck: installcheck-am
336 install-strip:
337 if test -z '$(STRIP)'; then \
338 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
339 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
340 install; \
341 else \
342 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
343 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
344 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
345 fi
346 mostlyclean-generic:
347
348 clean-generic:
349 -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
350
351 distclean-generic:
352 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
353 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
354
355 maintainer-clean-generic:
356 @echo "This command is intended for maintainers to use"
357 @echo "it deletes files that may require special tools to rebuild."
358 clean: clean-am
359
360 clean-am: clean-generic clean-local mostlyclean-am
361
362 distclean: distclean-am
363 -rm -f Makefile
364 distclean-am: clean-am distclean-generic
365
366 dvi: dvi-am
367
368 dvi-am:
369
370 html: html-am
371
372 html-am:
373
374 info: info-am
375
376 info-am:
377
378 install-data-am:
379
380 install-dvi: install-dvi-am
381
382 install-dvi-am:
383
384 install-exec-am:
385
386 install-html: install-html-am
387
388 install-html-am:
389
390 install-info: install-info-am
391
392 install-info-am:
393
394 install-man:
395
396 install-pdf: install-pdf-am
397
398 install-pdf-am:
399
400 install-ps: install-ps-am
401
402 install-ps-am:
403
404 installcheck-am:
405
406 maintainer-clean: maintainer-clean-am
407 -rm -f Makefile
408 maintainer-clean-am: distclean-am maintainer-clean-generic
409
410 mostlyclean: mostlyclean-am
411
412 mostlyclean-am: mostlyclean-generic
413
414 pdf: pdf-am
415
416 pdf-am:
417
418 ps: ps-am
419
420 ps-am:
421
422 uninstall-am:
423
424 .MAKE: install-am install-strip
425
426 .PHONY: all all-am all-local check check-am clean clean-generic \
427 clean-local distclean distclean-generic distdir dvi dvi-am \
428 html html-am info info-am install install-am install-data \
429 install-data-am install-dvi install-dvi-am install-exec \
430 install-exec-am install-html install-html-am install-info \
431 install-info-am install-man install-pdf install-pdf-am \
432 install-ps install-ps-am install-strip installcheck \
433 installcheck-am installdirs maintainer-clean \
434 maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
435 pdf-am ps ps-am uninstall uninstall-am
436
437
438 html/realmd-internals.html: $(DOCBOOK_FILE) $(CONTENT_INCLUDES) $(STATIC_FILES)
439 $(AM_V_GEN) mkdir -p html && cp $(srcdir)/static/* html/
440 $(AM_V_GEN) $(XMLTO) html-nochunks -m $(DOCBOOK_PARAMS) -o html \
441 --searchpath $(builddir):$(srcdir) $(srcdir)/$(DOCBOOK_FILE)
442
443 all-local: html/realmd-internals.html
444
445 clean-local:
446 @rm -rf *.tmp html
447
448 render-images:
449 for i in $(SVG_IMAGES:.svg=); do \
450 inkscape --export-png=static/$$i.png $$i.svg; \
451 done
452
453 upload: all
454 rsync -Hvax html/./ anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/internals/./
455
456 # Tell versions [3.59,3.63) of GNU make to not export all variables.
457 # Otherwise a system limit (for SysV at least) may be exceeded.
458 .NOEXPORT:
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 id="svg3020"
12 version="1.1"
13 inkscape:version="0.48.4 r9939"
14 width="856.75366"
15 height="322.74115"
16 xml:space="preserve"
17 sodipodi:docname="Realmd-Internals.pdf"><metadata
18 id="metadata3026"><rdf:RDF><cc:Work
19 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
20 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
21 id="defs3024"><clipPath
22 clipPathUnits="userSpaceOnUse"
23 id="clipPath3034"><path
24 d="M 0,0 720,0 720,540 0,540 0,0 z"
25 clip-rule="evenodd"
26 id="path3036"
27 inkscape:connector-curvature="0" /></clipPath><clipPath
28 clipPathUnits="userSpaceOnUse"
29 id="clipPath3254"><path
30 d="m 360,74 0,0 0,393.1 0,0 0,-393.1 z"
31 id="path3256"
32 inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
33 pagecolor="#ffffff"
34 bordercolor="#666666"
35 borderopacity="1"
36 objecttolerance="10"
37 gridtolerance="10"
38 guidetolerance="10"
39 inkscape:pageopacity="0"
40 inkscape:pageshadow="2"
41 inkscape:window-width="1143"
42 inkscape:window-height="862"
43 id="namedview3022"
44 showgrid="false"
45 fit-margin-top="1"
46 units="cm"
47 fit-margin-right="1"
48 fit-margin-bottom="1"
49 fit-margin-left="1"
50 inkscape:zoom="0.81555556"
51 inkscape:cx="426.27289"
52 inkscape:cy="33.933349"
53 inkscape:window-x="0"
54 inkscape:window-y="27"
55 inkscape:window-maximized="0"
56 inkscape:current-layer="g3028" /><g
57 id="g3028"
58 inkscape:groupmode="layer"
59 inkscape:label="Realmd-Internals"
60 transform="matrix(1.25,0,0,-1.25,-26.179429,626.30807)"><path
61 d="m 633.9,335.2 -43.5,0 0,76.4 87.1,0 0,-76.4 -43.6,0 z"
62 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
63 id="path3138"
64 inkscape:connector-curvature="0" /><g
65 id="g3140"><path
66 d="m 633.9,335.2 -43.5,0 0,76.4 87.1,0 0,-76.4 -43.6,0 z"
67 style="fill:none;stroke:none"
68 id="path3142"
69 inkscape:connector-curvature="0" /></g><g
70 id="g3144"><text
71 transform="matrix(1,0,0,-1,615,367.1)"
72 id="text3146"><tspan
73 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
74 x="0 12.906 25.902"
75 y="0"
76 sodipodi:role="line"
77 id="tspan3148">DNS</tspan></text>
78 </g><path
79 d="m 320.8,271.7 -43.5,0 0,143.7 87.1,0 0,-143.7 -43.6,0 z"
80 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
81 id="path3150"
82 inkscape:connector-curvature="0" /><g
83 id="g3152"><path
84 d="m 320.8,271.7 -43.5,0 0,143.7 87.1,0 0,-143.7 -43.6,0 z"
85 style="fill:none;stroke:none"
86 id="path3154"
87 inkscape:connector-curvature="0" /></g><g
88 id="g3156"><text
89 transform="matrix(1,0,0,-1,294.9,297)"
90 id="text3158"><tspan
91 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
92 x="0 12.996 22.896 32.903999 36.900002"
93 y="0"
94 sodipodi:role="line"
95 id="tspan3160">Realm</tspan></text>
96 </g><g
97 id="g3162"><text
98 transform="matrix(1,0,0,-1,287.4,276.8)"
99 id="text3164"><tspan
100 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
101 x="0 11.988 17.982 27.99 36.990002 40.896 50.903999 60.804001"
102 y="0"
103 sodipodi:role="line"
104 id="tspan3166">Provider</tspan></text>
105 </g><path
106 d="m 364.8,396.6 213.4,0"
107 style="fill:none;stroke:#000000;stroke-width:0.81999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
108 id="path3168"
109 inkscape:connector-curvature="0" /><path
110 d="m 590.4,396.6 -12.8,4.3 0,-8.5 12.8,4.2 z"
111 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
112 id="path3170"
113 inkscape:connector-curvature="0" /><g
114 id="g3172"><text
115 transform="matrix(1,0,0,-1,382.4,400.5)"
116 id="text3174"><tspan
117 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
118 x="0 3.9960001 13.896 23.903999 32.903999 42.804001 52.812 62.82 71.82 81.720001 87.713997 96.713997 100.71 109.71 119.61 125.604 135.612 145.62 160.524 170.532 174.528 184.42799"
119 y="0"
120 sodipodi:role="line"
121 id="tspan3176">lookup_service(domain)</tspan></text>
122 </g><path
123 d="m 589.3,365.3 -212.7,0"
124 style="fill:none;stroke:#000000;stroke-width:0.81999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
125 id="path3178"
126 inkscape:connector-curvature="0" /><path
127 d="m 364.4,365.3 12.7,-4.2 0,8.5 -12.7,-4.3 z"
128 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
129 id="path3180"
130 inkscape:connector-curvature="0" /><path
131 d="m 320.1,332.3 -38.7,0 0,47.1 77.3,0 0,-47.1 -38.6,0 z"
132 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
133 id="path3182"
134 inkscape:connector-curvature="0" /><g
135 id="g3184"><path
136 d="m 320.1,332.3 -38.7,0 0,47.1 77.3,0 0,-47.1 -38.6,0 z"
137 style="fill:none;stroke:none"
138 id="path3186"
139 inkscape:connector-curvature="0" /></g><g
140 id="g3188"><text
141 transform="matrix(1,0,0,-1,294.2,359.7)"
142 id="text3190"><tspan
143 style="font-size:18px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans-Italic"
144 x="0 12.996 22.896 32.903999 36.900002"
145 y="0"
146 sodipodi:role="line"
147 id="tspan3192">Realm</tspan></text>
148 </g><g
149 id="g3194"><text
150 transform="matrix(1,0,0,-1,283.6,339.6)"
151 id="text3196"><tspan
152 style="font-size:18px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans-Italic"
153 x="0 11.988 21.996 27.99 37.998001 47.897999 53.891998 63.900002"
154 y="0"
155 sodipodi:role="line"
156 id="tspan3198">Kerberos</tspan></text>
157 </g><g
158 id="g3200"><text
159 transform="matrix(1,0,0,-1,380.6,341.6)"
160 id="text3202"><tspan
161 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
162 x="0 5.994 15.894 25.902 40.896 50.796001 54.792 64.800003 69.786003 74.772003 83.772003 93.779999 99.774002 109.782 119.682 125.676 135.68401 144.68401 150.67799 159.67799 169.578 178.578 187.578"
163 y="0"
164 sodipodi:role="line"
165 id="tspan3204">{domain, kerberos-kdcs}</tspan></text>
166 </g><path
167 d="m 49.7,396.6 213.4,0"
168 style="fill:none;stroke:#000000;stroke-width:0.82000011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
169 id="path3206"
170 inkscape:connector-curvature="0" /><path
171 d="m 275.3,396.6 -12.8,4.3 0,-8.5 12.8,4.2 z"
172 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
173 id="path3208"
174 inkscape:connector-curvature="0" /><g
175 id="g3210"><text
176 transform="matrix(1,0,0,-1,58.2,400.5)"
177 id="text3212"><tspan
178 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
179 x="0 12.996 16.902 25.902 34.902 44.91 53.91 63.917999 69.912003 75.905998 85.806 95.814003 110.808 120.816 124.722 134.73 139.716 144.702 154.71001 164.718 169.70399 173.7 183.60001 193.608 202.608"
180 y="0"
181 sodipodi:role="line"
182 id="tspan3214">Discover(domain, options)</tspan></text>
183 </g><path
184 d="m 274.7,365.3 -212.8,0"
185 style="fill:none;stroke:#000000;stroke-width:0.82000011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
186 id="path3216"
187 inkscape:connector-curvature="0" /><path
188 d="m 49.7,365.3 12.8,-4.2 0,8.5 -12.8,-4.3 z"
189 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
190 id="path3218"
191 inkscape:connector-curvature="0" /><g
192 id="g3220"><text
193 transform="matrix(1,0,0,-1,101.8,345.5)"
194 id="text3222"><tspan
195 style="font-size:18px;font-style:italic;font-variant:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans-Italic"
196 x="0 12.906 22.914 32.922001 36.827999 51.731998 63.720001 73.727997 79.722 89.622002 99.629997 105.624 115.632"
197 y="0"
198 sodipodi:role="line"
199 id="tspan3224">RealmKerberos</tspan></text>
200 </g><g
201 id="g3226" /><g
202 id="g3228"><text
203 transform="matrix(1,0,0,-1,118.2,325.3)"
204 id="text3230"><tspan
205 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
206 x="0 9.8999996 19.908001 23.813999 33.821999 42.821999 47.897999 52.883999 62.784 72.792 77.778 87.786003"
207 y="0"
208 sodipodi:role="line"
209 id="tspan3232">object paths</tspan></text>
210 </g><path
211 d="m 322.1,440.1 -43.5,0 0,32.1 87.1,0 0,-32.1 -43.6,0 z"
212 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
213 id="path3234"
214 inkscape:connector-curvature="0" /><g
215 id="g3236"><path
216 d="m 322.1,440.1 -43.5,0 0,32.1 87.1,0 0,-32.1 -43.6,0 z"
217 style="fill:none;stroke:none"
218 id="path3238"
219 inkscape:connector-curvature="0" /></g><g
220 id="g3240"><text
221 transform="matrix(1,0,0,-1,284.2,449.9)"
222 id="text3242"><tspan
223 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
224 x="0 9 19.007999 28.908001 33.984001 37.889999 47.897999 52.883999 57.959999 61.866001 65.862"
225 y="0"
226 sodipodi:role="line"
227 id="tspan3244">config file</tspan></text>
228 </g><path
229 d="m 316.8,440.1 0,-12.5"
230 style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
231 id="path3246"
232 inkscape:connector-curvature="0" /><path
233 d="m 316.8,415.4 4.3,12.7 -8.6,0 4.3,-12.7 z"
234 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
235 id="path3248"
236 inkscape:connector-curvature="0" /><g
237 id="g3250"><g
238 id="g3252" /><g
239 id="g3258"><g
240 clip-path="url(#clipPath3254)"
241 id="g3260"
242 style="opacity:0.5" /></g></g></g></svg>
0 <?xml version="1.0"?>
1 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2 <xsl:param name="section.autolabel">0</xsl:param>
3 <xsl:param name="chapter.autolabel">0</xsl:param>
4 </xsl:stylesheet>
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 id="svg4281"
12 version="1.1"
13 inkscape:version="0.48.4 r9939"
14 width="959.50366"
15 height="291.86615"
16 xml:space="preserve"
17 sodipodi:docname="join-method.svg"><metadata
18 id="metadata4287"><rdf:RDF><cc:Work
19 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
20 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
21 id="defs4285"><clipPath
22 clipPathUnits="userSpaceOnUse"
23 id="clipPath4295"><path
24 d="M 0,0 720,0 720,540 0,540 0,0 z"
25 clip-rule="evenodd"
26 id="path4297"
27 inkscape:connector-curvature="0" /></clipPath><clipPath
28 clipPathUnits="userSpaceOnUse"
29 id="clipPath4519"><path
30 d="m 360,74 0,0 0,393.1 0,0 0,-393.1 z"
31 id="path4521"
32 inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
33 pagecolor="#ffffff"
34 bordercolor="#666666"
35 borderopacity="1"
36 objecttolerance="10"
37 gridtolerance="10"
38 guidetolerance="10"
39 inkscape:pageopacity="0"
40 inkscape:pageshadow="2"
41 inkscape:window-width="1242"
42 inkscape:window-height="926"
43 id="namedview4283"
44 showgrid="false"
45 units="cm"
46 fit-margin-top="1"
47 fit-margin-right="1"
48 fit-margin-bottom="1"
49 fit-margin-left="1"
50 inkscape:zoom="0.98890193"
51 inkscape:cx="429.89256"
52 inkscape:cy="105.55565"
53 inkscape:window-x="0"
54 inkscape:window-y="27"
55 inkscape:window-maximized="0"
56 inkscape:current-layer="g4289" /><g
57 id="g4289"
58 inkscape:groupmode="layer"
59 inkscape:label="Realmd-Internals"
60 transform="matrix(1.25,0,0,-1.25,26.945571,582.68307)"><path
61 d="m 548.9,357.8 -43.5,0 0,76.5 87,0 0,-76.5 -43.5,0 z"
62 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
63 id="path4309"
64 inkscape:connector-curvature="0" /><g
65 id="g4311"><path
66 d="m 548.9,357.8 -43.5,0 0,76.5 87,0 0,-76.5 -43.5,0 z"
67 style="fill:none;stroke:none"
68 id="path4313"
69 inkscape:connector-curvature="0" /></g><g
70 id="g4315"><text
71 transform="matrix(1,0,0,-1,512.4,399.9)"
72 id="text4317"><tspan
73 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
74 x="0 10.008 20.016001 29.016001 32.922001 36.917999 41.903999 51.911999 57.905998"
75 y="0"
76 sodipodi:role="line"
77 id="tspan4319">adcli or </tspan></text>
78 </g><g
79 id="g4321"><text
80 transform="matrix(1,0,0,-1,512.4,379.8)"
81 id="text4323"><tspan
82 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
83 x="0 9.0900002 18.99 33.984001 43.992001"
84 y="0"
85 sodipodi:role="line"
86 id="tspan4325">samba</tspan></text>
87 </g><path
88 d="m 673.6,355 -43.5,0 0,82.3 87.1,0 0,-82.3 -43.6,0 z"
89 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
90 id="path4327"
91 inkscape:connector-curvature="0" /><g
92 id="g4329"><path
93 d="m 673.6,355 -43.5,0 0,82.3 87.1,0 0,-82.3 -43.6,0 z"
94 style="fill:none;stroke:none"
95 id="path4331"
96 inkscape:connector-curvature="0" /></g><g
97 id="g4333"><text
98 transform="matrix(1,0,0,-1,661.2,389.9)"
99 id="text4335"><tspan
100 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
101 x="0 11.898"
102 y="0"
103 sodipodi:role="line"
104 id="tspan4337">AD</tspan></text>
105 </g><path
106 d="m 7.2,396.6 218.2,0"
107 style="fill:none;stroke:#000000;stroke-width:0.81999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
108 id="path4339"
109 inkscape:connector-curvature="0" /><path
110 d="m 237.6,396.6 -12.8,4.3 0,-8.5 12.8,4.2 z"
111 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
112 id="path4341"
113 inkscape:connector-curvature="0" /><g
114 id="g4343"><text
115 transform="matrix(1,0,0,-1,14.3,400.5)"
116 id="text4345"><tspan
117 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
118 x="0 9 19.007999 22.914 32.922001 38.916 44.91 54.810001 64.818001 68.814003 83.807999 88.793999 93.779999 102.78 108.774 118.782 128.68201 137.772 142.758 147.744 157.752 167.65199 172.728 176.724 186.62399 196.632 205.632"
119 y="0"
120 sodipodi:role="line"
121 id="tspan4347">Join(realm, creds, options)</tspan></text>
122 </g><path
123 d="m 324.9,399.5 167.8,0"
124 style="fill:none;stroke:#000000;stroke-width:0.81999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
125 id="path4349"
126 inkscape:connector-curvature="0" /><path
127 d="m 504.9,399.5 -12.7,4.2 0,-8.5 12.7,4.3 z"
128 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
129 id="path4351"
130 inkscape:connector-curvature="0" /><g
131 id="g4353"><text
132 transform="matrix(1,0,0,-1,353.5,403.3)"
133 id="text4355"><tspan
134 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
135 x="0"
136 y="0"
137 id="tspan4357">“</tspan></text>
138 </g><g
139 id="g4359"><text
140 transform="matrix(1,0,0,-1,359.5,403.3)"
141 id="text4361"><tspan
142 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
143 x="0 9.8999996 19.908001 28.908001 32.903999 36.810001 41.886002 45.792 55.799999 59.706001 69.713997 74.699997 79.776001 84.762001 89.837997 95.832001 100.818 110.826"
144 y="0"
145 sodipodi:role="line"
146 id="tspan4363">adcli join ...” or</tspan></text>
147 </g><g
148 id="g4365"><text
149 transform="matrix(1,0,0,-1,352.9,383.1)"
150 id="text4367"><tspan
151 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
152 x="0"
153 y="0"
154 id="tspan4369">“</tspan></text>
155 </g><g
156 id="g4371"><text
157 transform="matrix(1,0,0,-1,359,383.1)"
158 id="text4373"><tspan
159 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
160 x="0 9.8999996 19.908001 24.893999 29.879999 39.888 49.896 58.896 63.882 67.877998 77.778 81.774002 91.781998 96.767998 101.754 106.83 111.816"
161 y="0"
162 sodipodi:role="line"
163 id="tspan4375">net ads join ...”</tspan></text>
164 </g><path
165 d="m 291.6,317 -54,0 0,107.8 108,0 0,-107.8 -54,0 z"
166 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
167 id="path4377"
168 inkscape:connector-curvature="0" /><g
169 id="g4379"><path
170 d="m 291.6,317 -54,0 0,107.8 108,0 0,-107.8 -54,0 z"
171 style="fill:none;stroke:none"
172 id="path4381"
173 inkscape:connector-curvature="0" /></g><g
174 id="g4383"><text
175 transform="matrix(1,0,0,-1,265.7,344.5)"
176 id="text4385"><tspan
177 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
178 x="0 12.906 22.914 32.922001 36.827999"
179 y="0"
180 sodipodi:role="line"
181 id="tspan4387">Realm</tspan></text>
182 </g><g
183 id="g4389"><text
184 transform="matrix(1,0,0,-1,255.2,324.3)"
185 id="text4391"><tspan
186 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
187 x="0 11.988 21.888 27.882 37.889999 47.897999 53.891998 63.792"
188 y="0"
189 sodipodi:role="line"
190 id="tspan4393">Kerberos</tspan></text>
191 </g><path
192 d="m 367.4,261.5 -54.8,0 0,32.1 109.5,0 0,-32.1 -54.7,0 z"
193 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
194 id="path4479"
195 inkscape:connector-curvature="0" /><g
196 id="g4481"><path
197 d="m 367.4,261.5 -54.8,0 0,32.1 109.5,0 0,-32.1 -54.7,0 z"
198 style="fill:none;stroke:none"
199 id="path4483"
200 inkscape:connector-curvature="0" /></g><g
201 id="g4485"><text
202 transform="matrix(1,0,0,-1,329.5,271.3)"
203 id="text4487"><tspan
204 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
205 x="0 9 18.9 28.908001 33.894001 37.889999 47.790001 52.866001 57.852001 61.848 65.753998"
206 y="0"
207 sodipodi:role="line"
208 id="tspan4489">config file</tspan></text>
209 </g><path
210 d="m 254.4,317 0,-12.4"
211 style="fill:none;stroke:#000000;stroke-width:0.81999993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
212 id="path4491"
213 inkscape:connector-curvature="0" /><path
214 d="m 254.4,292.4 4.3,12.7 -8.5,0 4.2,-12.7 z"
215 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
216 id="path4493"
217 inkscape:connector-curvature="0" /><path
218 d="m 222.8,261.5 -54.8,0 0,32.1 109.6,0 0,-32.1 -54.8,0 z"
219 style="fill:#cfe7f5;fill-opacity:1;fill-rule:evenodd;stroke:#000000"
220 id="path4495"
221 inkscape:connector-curvature="0" /><g
222 id="g4497"><path
223 d="m 222.8,261.5 -54.8,0 0,32.1 109.6,0 0,-32.1 -54.8,0 z"
224 style="fill:none;stroke:none"
225 id="path4499"
226 inkscape:connector-curvature="0" /></g><g
227 id="g4501"><text
228 transform="matrix(1,0,0,-1,196.5,271.3)"
229 id="text4503"><tspan
230 style="font-size:18px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#313739;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:LiberationSans"
231 x="0 9 18.9 27.702 32.688 42.695999"
232 y="0"
233 sodipodi:role="line"
234 id="tspan4505">keytab</tspan></text>
235 </g><path
236 d="m 331,317 0,-12.4"
237 style="fill:none;stroke:#000000;stroke-width:0.81999993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
238 id="path4507"
239 inkscape:connector-curvature="0" /><path
240 d="m 331,292.4 4.2,12.7 -8.5,0 4.3,-12.7 z"
241 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
242 id="path4509"
243 inkscape:connector-curvature="0" /><path
244 d="m 592.4,397.3 25.5,0"
245 style="fill:none;stroke:#000000;stroke-width:0.81999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
246 id="path4511"
247 inkscape:connector-curvature="0" /><path
248 d="m 630.1,397.3 -12.8,4.3 0,-8.5 12.8,4.2 z"
249 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
250 id="path4513"
251 inkscape:connector-curvature="0" /><g
252 id="g4515"><g
253 id="g4517" /><g
254 id="g4523"><g
255 clip-path="url(#clipPath4519)"
256 id="g4525"
257 style="opacity:0.5" /></g></g></g></svg>
0 <?xml version="1.0" standalone="no"?>
1 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
2 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
3 [
4 ]>
5 <article id="index">
6 <articleinfo>
7 <title>realmd Internals</title>
8 <releaseinfo>January, 2013</releaseinfo>
9 </articleinfo>
10
11 <section id="overview">
12 <title>Overview</title>
13
14 <para>realmd is an on-demand system D-Bus service, whose primary purpose is
15 to enable Linux to work seamlessly out of the box with network authentication
16 realms (like Kerberos, with primary focus on AD and IPA). Specifically, the
17 realmd service supports discovering a domain, joining a domain, leaving a
18 domain, and more.</para>
19
20 <para>Currently there is only support for Kerberos realms.</para>
21
22 <para>Some of the D-Bus clients that interact with realmd are:</para>
23 <itemizedlist>
24 <listitem><para>command line realm client</para></listitem>
25 <listitem><para>gnome-control-center GUI client</para></listitem>
26 <listitem><para>gdm</para></listitem>
27 <listitem><para>anaconda</para></listitem>
28 </itemizedlist>
29
30 <para>Realmd can be run in two different modes (with some slight changes in
31 behavior depending on the mode)</para>
32 <itemizedlist>
33 <listitem><para>At install time (e.g. using an anaconda kickstart file).
34 In this mode, since the system message bus may not be available, the
35 realm client directly spawns realmd and communicates with it using the
36 D-Bus peer protocol (i.e. without going through the message bus).</para></listitem>
37 <listitem><para>After installation. In this mode, the system message
38 bus is available and is used to forward messages from the realm client
39 to realmd.</para></listitem>
40 </itemizedlist>
41
42 <para>Realmd is typically used (whether at install time or afterwards) by a D-Bus
43 client to discover the KDC for a Kerberos domain and to join the machine to that
44 domain using membership software. This will involve changes on the server made by
45 server software, as well as artifacts (keytab, configuration file) that are output
46 by realmd on the machine for consumption by client software that will subsequently
47 be responsible for Kerberos authentication.</para>
48
49 <para>For active-directory server software, realmd supports:</para>
50 <itemizedlist>
51 <listitem><para>sssd client software (with either adcli or samba membership software)</para></listitem>
52 <listitem><para>winbind client software (with samba membership software).</para></listitem>
53 </itemizedlist>
54
55 <para>For freeipa server software, realmd supports:</para>
56 <itemizedlist>
57 <listitem><para>sssd client software (with 'freeipa' membership software).</para></listitem>
58 </itemizedlist>
59 </section>
60
61 <section id="objects-interfaces">
62 <title>Realmd Objects and Interfaces</title>
63
64 <para>A GDBusObject is associated with an object path and is essentially a container
65 of GDBusInterfaces. On the service side, this is implemented using GDBusObjectSkeletons
66 and GDBusInterfaceSkeletons (with corresponding GDBusObjectProxy and GDBusProxy
67 components on the client side). The base GDBusObjectSkeletons used by realmd are
68 RealmKerberos and RealmProvider (each with its own subclasses and interfaces). The
69 objects are linked, in that a RealmProvider object creates a RealmKerberos object
70 during the Discover process. The type of RealmKerberos object that is created depends
71 on the type of RealmProvider that is used. Only those RealmKerberos objects that
72 implement the RealmKerberosMembership GInterface can be used to join or leave a domain.</para>
73
74 <variablelist>
75 <title>RealmKerberos</title>
76 <varlistentry>
77 <term>RealmDbusRealm</term>
78 <listitem><para>supports Deconfigure and ChangeLoginPolicy methods</para></listitem>
79 </varlistentry>
80 <varlistentry>
81 <term>RealmDbusKerberosMembership</term>
82 <listitem><para>supports Join and Leave methods</para></listitem>
83 </varlistentry>
84 <varlistentry>
85 <term>RealmDbusKerberos</term>
86 <listitem><para>supports no methods (properties only)</para></listitem>
87 </varlistentry>
88 <varlistentry>
89 <term>RealmSamba</term>
90 <listitem><para>implements RealmKerberosMembership</para></listitem>
91 </varlistentry>
92 <varlistentry>
93 <term>RealmSssd</term>
94 <listitem><para>container for RealmSssdAd and RealmSssdIpa</para>
95 <variablelist>
96 <varlistentry>
97 <term>subclass: RealmSssdAd</term>
98 <listitem><para>implements RealmKerberosMembership</para></listitem>
99 </varlistentry>
100 <varlistentry>
101 <term>subclass: RealmSssdIpa</term>
102 <listitem><para>implements RealmKerberosMembership</para></listitem>
103 </varlistentry>
104 </variablelist>
105 </listitem>
106 </varlistentry>
107 </variablelist>
108
109 <variablelist>
110 <title>RealmProvider</title>
111 <varlistentry>
112 <term>RealmDbusProvider</term>
113 <listitem><para>supports Discover method</para></listitem>
114 </varlistentry>
115 <varlistentry>
116 <term>RealmSambaProvider</term>
117 <listitem><para>creates RealmSamba objects</para></listitem>
118 </varlistentry>
119 <varlistentry>
120 <term>RealmSssdProvider</term>
121 <listitem><para>creates RealmSssdAd and RealmSssdIpa objects</para></listitem>
122 </varlistentry>
123 <varlistentry>
124 <term>RealmKerberosProvider</term>
125 <listitem><para>creates RealmKerberos objects</para></listitem>
126 </varlistentry>
127 <varlistentry>
128 <term>RealmAllProvider</term>
129 <listitem><para>aggregates other RealmProviders</para></listitem>
130 </varlistentry>
131 </variablelist>
132 </section>
133
134 <section id="discover">
135 <title>Discover method</title>
136
137 <mediaobject>
138 <imageobject>
139 <imagedata fileref="discover-method.png" format="PNG"/>
140 </imageobject>
141 </mediaobject>
142
143 <para>The main purpose of the Discover method is to verify that a specified domain
144 is valid, emitting logs and diagnostic information in the process. RealmProviders
145 discover the authoritative KDCs for the specified domain by querying DNS for SRV
146 records and creating appropriate RealmKerberos objects to encapsulate the KDC
147 information. Certain types of RealmKerberos objects (i.e. RealmSamba and RealmSssdAd)
148 can subsequently be used as part of the Join process.</para>
149
150 <para>RealmAllProvider is special in that it serves all realm types. A client that wants to use all
151 of the RealmProviders (Samba, Sssd, Kerberos) can contact each RealmProvider (at its
152 unique object path). Alternatively and usually, the client simply contacts the RealmAllProvider,
153 which is special in that it serves as an aggregation point and container for all of
154 the other RealmProviders. When Discover is called on RealmAllProvider, it calls
155 the Discover methods of each of the other RealmProviders, collects the results
156 (array of RealmKerberos objects), and returns an aggregated result (array of object
157 paths pointing to RealmKerberos objects) to the client. The AllProvider also connects
158 to a notify signal, so that if any of its sub-providers change state, AllProvider
159 can also update its state accordingly.</para>
160 </section>
161
162 <section id="provider">
163 <title>RealmProvider</title>
164 <para>A RealmProvider object supports the Discover method, and is characterized by:</para>
165
166 <itemizedlist>
167 <listitem><para>its object path (static)</para></listitem>
168 <listitem><para>the combinations of {client, server, membership} software it supports for the Discover process</para></listitem>
169 <listitem><para>the types of RealmKerberos objects it creates during the Discover process</para></listitem>
170 <listitem><para>the file it uses to read/write configuration information</para></listitem>
171 </itemizedlist>
172
173 <itemizedlist>
174 <title>RealmSambaProvider</title>
175 <listitem><para>object path: "/org/freedesktop/realmd/Samba"</para></listitem>
176 <listitem><para>creates: RealmSamba objects</para></listitem>
177 <listitem><para>config file read: smb.conf</para></listitem>
178 <listitem><para>software supported: {winbind, active-directory, samba}</para></listitem>
179 </itemizedlist>
180
181 <itemizedlist>
182 <title>RealmSssdProvider</title>
183 <listitem><para>object path: "/org/freedesktop/realmd/Sssd"</para></listitem>
184 <listitem><para>creates: RealmSssdAd objects or RealmSssdIpa objects (depending on server-software)</para></listitem>
185 <listitem><para>config file read: sssd.conf</para></listitem>
186 <listitem><para>software supported</para>
187 <itemizedlist>
188 <listitem><para>{sssd, active-directory, samba}</para></listitem>
189 <listitem><para>{sssd, active-directory, adcli}</para></listitem>
190 <listitem><para>{sssd, freeipa, freeipa}</para></listitem>
191 </itemizedlist>
192 </listitem>
193 </itemizedlist>
194
195 <itemizedlist>
196 <title>RealmKerberosProvider</title>
197 <listitem><para>object path: "/org/freedesktop/realmd/GenericKerberos"</para></listitem>
198 <listitem><para>creates: RealmKerberos objects</para></listitem>
199 <listitem><para>config file read: n/a</para></listitem>
200 <listitem><para>software supported: none, so only used if client-software and server-software were not specified</para></listitem>
201 </itemizedlist>
202
203 <itemizedlist>
204 <title>RealmAllProvider</title>
205 <listitem><para>object path: “/org/freedesktop/realmd”</para></listitem>
206 <listitem><para>special RealmProvider that aggregates results (see <link linkend="discover">Discover() method</link>)</para></listitem>
207 </itemizedlist>
208 </section>
209
210 <section id="join">
211 <title>Join method</title>
212
213 <mediaobject>
214 <imageobject>
215 <imagedata fileref="join-method.png" format="PNG"/>
216 </imageobject>
217 </mediaobject>
218
219 <para>The primary goal of joining a machine to a domain is to enroll the machine
220 with the domain's KDC, thereby enabling subsequent Kerberos user authentication.
221 This results in the creation of a secret shared between the machine and KDC (i.e.
222 a keytab), as well as changes to the appropriate configuration file on the machine.
223 Conversely, the primary goal of leaving a domain is to unenroll the machine from
224 the domain's KDC, removing the keytab and removing the changes that were previously
225 made to the appropriate configuration file during enrollment. Both the join and
226 leave operations require appropriate credentials, where each credential is represented
227 by the credential owner and the credential type. Different RealmKerberos objects
228 support different credentials, and different credentials may be supported for join
229 and leave. Before performing the join, any required packages or files are installed.</para>
230
231 <para>Possible credential owners: admin, user, computer, none</para>
232 <para>Possible credential types: password, secret (otp), automatic (default/system creds)</para>
233 </section>
234
235 <section id="kerberos">
236 <title>RealmKerberos</title>
237
238 <para>A RealmKerberos object supports the Join, Leave, Deconfigure, and
239 ChangeLoginPolicy methods. It is characterized by:</para>
240
241 <itemizedlist>
242 <listitem><para>its object path (dynamic, per realm)</para></listitem>
243 <listitem><para>the membership software it supports</para></listitem>
244 <listitem><para>the configuration file it modifies</para></listitem>
245 <listitem><para>the packages it requires to be installed</para></listitem>
246 <listitem><para>the credentials it supports: {owner, type}</para></listitem>
247 </itemizedlist>
248
249 <itemizedlist>
250 <title>RealmSamba</title>
251 <listitem><para>object path example: /realmd/Samba/example.com_4</para></listitem>
252 <listitem><para>membership software supported: samba</para></listitem>
253 <listitem><para>config file modified: smb.conf</para></listitem>
254 <listitem><para>required packages: samba, winbind</para></listitem>
255 <listitem><para>credentials supported: </para>
256 <itemizedlist>
257 <listitem><para>{admin, password}</para></listitem>
258 <listitem><para>{user, password}</para></listitem>
259 <listitem><para>{none, automatic}</para></listitem>
260 </itemizedlist>
261 </listitem>
262 </itemizedlist>
263
264 <itemizedlist>
265 <title>RealmSssdAd</title>
266 <listitem><para>object path example: /realmd/Sssd/example.com_4</para></listitem>
267 <listitem><para>membership software supported: samba, adcli (but only for certain credentials: see below)</para></listitem>
268 <listitem><para>config file modified: sssd.conf</para></listitem>
269 <listitem><para>required_packages: sssd, adcli, samba (depends on membership software)</para></listitem>
270 <listitem><para>credentials supported:</para>
271 <itemizedlist>
272 <listitem><para>{admin, password} // supported by both samba (default) and adcli</para></listitem>
273 <listitem><para>{user, password} // supported only by samba</para></listitem>
274 <listitem><para>{none, automatic} // supported only by adcli</para></listitem>
275 <listitem><para>{none, secret} // supported only by adcli; note that these are supported for join, but not leave</para></listitem>
276 </itemizedlist>
277 </listitem>
278 </itemizedlist>
279
280 <itemizedlist>
281 <title>RealmSssdIpa</title>
282 <listitem><para>has a dynamically generated object path upon realm creation.</para></listitem>
283 <listitem><para>membership software supported: freeipa</para></listitem>
284 <listitem><para>config file modified: sssd.conf</para></listitem>
285 <listitem><para>required_packages: sssd, freeipa-client</para></listitem>
286 <listitem><para>credentials supported: </para>
287 <itemizedlist>
288 <listitem><para>{admin, password}</para></listitem>
289 <listitem><para>{none, secret} // one time password</para></listitem>
290 </itemizedlist>
291 </listitem>
292 </itemizedlist>
293
294 </section>
295
296 <section id="exporting">
297 <title>Exporting Realmd Objects and Interfaces</title>
298
299 <para>When realmd starts up (realm-daemon.c:main), it registers each of its
300 RealmProviders (except RealmAllProvider) with its GDBusObjectManagerServer,
301 which in turn exports (onto a specific object path) the GDBusInterfaces for
302 each RealmProvider onto the GDBusConnection. As RealmKerberos objects are
303 dynamically created, they are similarly registered with the Object Manager
304 and exported. </para>
305
306 <para>Note that only GDBusInterfaces that are exported onto the GDBusConnection
307 are capable of receiving method call messages from the client. When a message
308 is received by the worker thread of the service's GDBusConnection, the message's
309 {object_path, iface_name} are mapped to a GDBusInterfaceSkeleton, which emits
310 a signal. The enclosing GDBusObjectSkeleton catches the signal and executes the
311 callback registered for that signal (usually set in RealmProvider's constructed
312 method).</para>
313
314 <para>Since RealmAllProvider is just an aggregation point, it is not managed by
315 the GDBusObjectManagerServer,but it is directly exported onto the GDBusConnection
316 using g_dbus_connection_register_object(). The ObjectManager and Service objects
317 are also directly exported onto the GDBusConnection.</para>
318
319 <para>The following is a subset of objects and interfaces registered with the
320 GDBusObjectManagerServer and/or exported onto the GDBusConnection.</para>
321
322 <para>GDBusConnection: stores {object_path, iface_name} => GDBusInterfaceSkeleton</para>
323
324 <itemizedlist>
325 <listitem><para>{/org/freedesktop/realmd, org.freedesktop.realmd.Provider} => RealmDbusProviderSkeleton(“All”)</para></listitem>
326 <listitem><para>{/org/freedesktop/realmd, org.freedesktop.realmd.Service} => RealmDbusServiceSkeleton</para></listitem>
327 <listitem><para>{/org/freedesktop/realmd, org.freedesktop.DBus.ObjectManager} => GDBusObjectManagerServer</para></listitem>
328 </itemizedlist>
329
330 <para>GDBusObjectManagerServer: stores object_path => GDBusObjectSkeleton</para>
331 <itemizedlist>
332 <listitem><para>/org/freedesktop/realmd/Sssd => RealmSssdProvider</para></listitem>
333 <listitem><para>/org/freedesktop/realmd/Samba => RealmSambaProvider</para></listitem>
334 <listitem><para>/org/freedesktop/realmd/GenericKerberos => RealKerberosProvider</para></listitem>
335 <listitem><para>/org/freedesktop/realmd/Sssd/example.com_4 => RealmSssdAd</para></listitem>
336 </itemizedlist>
337 </section>
338
339 <section id="example">
340 <title>Example Provider</title>
341
342 <para>realmd includes a rough example provider, which can be used as a mock
343 provider for testing against. It is disabled by default. The example provider
344 discovers realms that match <literal>*example.com</literal>.</para>
345
346 <para>Set the <option>example</option> setting to <literal>yes</literal> in
347 the <option>[providers]</option> section of the settings to enable it.</para>
348
349 <informalexample>
350 <programlisting language="js">
351 [example]
352 enabled = no
353 # enabled = yes
354 </programlisting>
355 </informalexample>
356
357 <para>You can tweak various options per example realm.</para>
358
359 <informalexample>
360 <programlisting>
361 [example.com]
362 # Mock administrator account required to join
363 example-administrator = Administrator
364 # Password for above mock admin account
365 example-password = bureaucracy
366 </programlisting>
367 </informalexample>
368
369 </section>
370
371 <section id="missing">
372 <title>Missing</title>
373
374 <itemizedlist>
375 <listitem><para>Description of ChangeLoginPolicy method</para></listitem>
376 <listitem><para>Description of all the methods for the Service object</para></listitem>
377 <listitem><para>Details of realmd.conf (man page, perhaps)</para></listitem>
378 <listitem><para>Details of configuration files (sssd.conf, smb.conf) and relevant entries</para></listitem>
379 </itemizedlist>
380 </section>
381 </article>
0 abs_top_builddir = @abs_top_builddir@
10
21 NULL =
32
4 # We require automake 1.6 at least.
5 AUTOMAKE_OPTIONS = 1.6
3 man8_MANS = \
4 realm.8
65
7 # The name of the module, e.g. 'glib'.
8 DOC_MODULE=realmd
6 MAN_IN_FILES = $(man8_MANS:.8=.xml)
97
10 # The top-level SGML file. You can change this if you want to.
11 DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
8 DOCBOOK_FILE = realmd-docs.xml
129
13 # The directory containing the source code. Relative to $(srcdir).
14 # gtk-doc will search all .c & .h files beneath here for inline comments
15 # documenting the functions and macros.
16 # e.g. DOC_SOURCE_DIR=../../../gtk
17 DOC_SOURCE_DIR=.
10 CONTENT_INCLUDES = \
11 realmd-guide-active-directory.xml \
12 realmd-guide-configuring.xml \
13 realmd-guide-freeipa.xml \
14 realmd-guide-kerberos.xml \
15 $(NULL)
1816
19 # Extra options to supply to gtkdoc-mkdb.
20 # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
21 MKDB_OPTIONS=--sgml-mode --output-format=xml
17 STATIC_FILES = \
18 static/gtk-doc.css \
19 static/style.css \
20 $(NULL)
2221
2322 DBUS_INTERFACE = $(top_srcdir)/dbus/org.freedesktop.realmd.xml
2423 DBUS_ESCAPED = realmd-org.freedesktop.realmd.xml
3029 realmd-org.freedesktop.realmd.Realm.xml \
3130 realmd-org.freedesktop.realmd.Service.xml
3231
33 # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
34 # e.g. content_files=running.sgml building.sgml changes-2.0.sgml
35 content_files= \
32 XSLT_FILES = \
33 escape-xml-to-text.xsl \
34 gdbus-fix-bugs.xsl \
35 gtk-doc.xsl \
36 version-greater-or-equal.xsl \
37 $(NULL)
38
39 EXTRA_DIST = \
40 $(DOCBOOK_FILE) \
41 $(CONTENT_INCLUDES) \
42 $(MAN_IN_FILES) \
43 $(XSLT_FILES) \
44 static \
45 $(NULL)
46
47 CLEANFILES = \
3648 $(DBUS_GENERATED) \
3749 $(DBUS_ESCAPED) \
38 html.css \
39 realm.xml \
40 realmd-guide-active-directory.xml \
41 realmd-guide-configuring.xml \
42 realmd-guide-freeipa.xml \
43 realmd-guide-kerberos.xml \
50 $(man8_MANS) \
4451 $(NULL)
45
46 # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
47 # These files must be listed here *and* in content_files
48 # e.g. expand_content_files=running.sgml
49 expand_content_files=
50
51 # This includes the standard gtk-doc make rules, copied by gtkdocize.
52 include $(top_srcdir)/gtk-doc.make
53
54 XSLTPROC_FLAGS = \
55 --nonet \
56 --stringparam man.output.quietly 1 \
57 --stringparam funcsynopsis.style ansi \
58 --stringparam man.th.extra1.suppress 1 \
59 --stringparam man.authors.section.enabled 0 \
60 --stringparam man.copyright.section.enabled 0
6152
6253 .xml.8:
6354 $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
6455
65 man_MANS = \
66 realm.8
67
68 xml_files = $(man_MANS:.8=.xml)
69
70 EXTRA_DIST += \
71 $(DBUS_GENERATED) \
72 $(DBUS_ESCAPED) \
73 $(xml_files) \
74 escape-xml-to-text.xsl \
75 html.css
76
77 CLEANFILES += \
78 $(DBUS_GENERATED) \
79 $(DBUS_ESCAPED) \
80 $(man_MANS) \
81 style.stamp
82
83 noinst_DATA = style.stamp
84
85 style.stamp: html.css html-build.stamp
86 @cp $(srcdir)/html.css $(builddir)/html/html.css
87 @sed -i 's/href="style.css"/href="html.css"/' $(builddir)/html/*.html
88 @touch $(builddir)/style.stamp
89
90 $(DBUS_GENERATED): $(DBUS_INTERFACE)
56 $(DBUS_GENERATED): $(DBUS_INTERFACE) gdbus-fix-bugs.xsl
9157 $(AM_V_GEN) gdbus-codegen --interface-prefix org.freedesktop.realmd. \
9258 --generate-docbook realmd $<
59 $(AM_V_GEN) for f in $(DBUS_GENERATED); do \
60 $(XSLTPROC) --output $$f.tmp $(srcdir)/gdbus-fix-bugs.xsl $$f && mv $$f.tmp $$f; \
61 done
62
63 # The above gdbus-codegen target cannot be run in parallel
64 .NOTPARALLEL:
9365
9466 $(DBUS_ESCAPED): $(DBUS_INTERFACE) $(srcdir)/escape-xml-to-text.xsl
9567 $(AM_V_GEN) $(XSLTPROC) --nonet --novalid --output $(DBUS_ESCAPED) \
9668 $(srcdir)/escape-xml-to-text.xsl $(DBUS_INTERFACE)
9769 @sed -i '/^[ ]*$$/d' $(DBUS_ESCAPED)
9870
71 html/index.html: $(DBUS_GENERATED) $(DOCBOOK_FILE) $(CONTENT_INCLUDES) $(MAN_IN_FILES) $(DBUS_ESCAPED) $(STATIC_FILES)
72 $(AM_V_GEN) mkdir -p html && cp $(srcdir)/static/* html/
73 $(AM_V_GEN) $(XMLTO) html -m $(srcdir)/gtk-doc.xsl -o html \
74 --searchpath $(builddir):$(srcdir) $(srcdir)/$(DOCBOOK_FILE)
75
76 all-local: html/index.html
77
78 clean-local:
79 @rm -rf *.tmp html
80
81 install-data-local:
82 $(MKDIR_P) $(DESTDIR)$(htmldir)
83 $(INSTALL_DATA) $(builddir)/html/* $(DESTDIR)$(htmldir)
84
85 uninstall-local:
86 rm -rf $(DESTDIR)$(htmldir)
87
88 dist-hook: html/index.html
89 @mkdir $(distdir)/html
90 @cp ./html/* $(distdir)/html
91
9992 upload: all
10093 rsync -Hvax html/./ anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/docs/./
1212 # PARTICULAR PURPOSE.
1313
1414 @SET_MAKE@
15
16 # -*- mode: makefile -*-
17
18 ####################################
19 # Everything below here is generic #
20 ####################################
21
2215 VPATH = @srcdir@
2316 am__make_dryrun = \
2417 { \
5346 NORMAL_UNINSTALL = :
5447 PRE_UNINSTALL = :
5548 POST_UNINSTALL = :
56 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
57 $(top_srcdir)/gtk-doc.make
5849 subdir = doc/manual
50 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
5951 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
60 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
61 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
52 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
53 $(top_srcdir)/configure.ac
6254 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
6355 $(ACLOCAL_M4)
6456 mkinstalldirs = $(install_sh) -d
114106 man8dir = $(mandir)/man8
115107 am__installdirs = "$(DESTDIR)$(man8dir)"
116108 NROFF = nroff
117 MANS = $(man_MANS)
118 DATA = $(noinst_DATA)
109 MANS = $(man8_MANS)
119110 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
120111 ACLOCAL = @ACLOCAL@
121112 ALL_LINGUAS = @ALL_LINGUAS@
152143 GMOFILES = @GMOFILES@
153144 GMSGFMT = @GMSGFMT@
154145 GREP = @GREP@
155 GTKDOC_CHECK = @GTKDOC_CHECK@
156 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
157 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
158 GTKDOC_MKPDF = @GTKDOC_MKPDF@
159 GTKDOC_REBASE = @GTKDOC_REBASE@
160 HTML_DIR = @HTML_DIR@
161146 INSTALL = @INSTALL@
162147 INSTALL_DATA = @INSTALL_DATA@
163148 INSTALL_PROGRAM = @INSTALL_PROGRAM@
220205 USE_NLS = @USE_NLS@
221206 VERSION = @VERSION@
222207 XGETTEXT = @XGETTEXT@
208 XMLTO = @XMLTO@
223209 XSLTPROC = @XSLTPROC@
224210 abs_builddir = @abs_builddir@
225211 abs_srcdir = @abs_srcdir@
234220 bindir = @bindir@
235221 build_alias = @build_alias@
236222 builddir = @builddir@
223 cachedir = @cachedir@
237224 datadir = @datadir@
238225 datarootdir = @datarootdir@
239226 docdir = @docdir@
267254 top_builddir = @top_builddir@
268255 top_srcdir = @top_srcdir@
269256 NULL =
270
271 # We require automake 1.6 at least.
272 AUTOMAKE_OPTIONS = 1.6
273
274 # The name of the module, e.g. 'glib'.
275 DOC_MODULE = realmd
276
277 # The top-level SGML file. You can change this if you want to.
278 DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
279
280 # The directory containing the source code. Relative to $(srcdir).
281 # gtk-doc will search all .c & .h files beneath here for inline comments
282 # documenting the functions and macros.
283 # e.g. DOC_SOURCE_DIR=../../../gtk
284 DOC_SOURCE_DIR = .
285
286 # Extra options to supply to gtkdoc-mkdb.
287 # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
288 MKDB_OPTIONS = --sgml-mode --output-format=xml
257 man8_MANS = \
258 realm.8
259
260 MAN_IN_FILES = $(man8_MANS:.8=.xml)
261 DOCBOOK_FILE = realmd-docs.xml
262 CONTENT_INCLUDES = \
263 realmd-guide-active-directory.xml \
264 realmd-guide-configuring.xml \
265 realmd-guide-freeipa.xml \
266 realmd-guide-kerberos.xml \
267 $(NULL)
268
269 STATIC_FILES = \
270 static/gtk-doc.css \
271 static/style.css \
272 $(NULL)
273
289274 DBUS_INTERFACE = $(top_srcdir)/dbus/org.freedesktop.realmd.xml
290275 DBUS_ESCAPED = realmd-org.freedesktop.realmd.xml
291276 DBUS_GENERATED = \
295280 realmd-org.freedesktop.realmd.Realm.xml \
296281 realmd-org.freedesktop.realmd.Service.xml
297282
298
299 # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
300 # e.g. content_files=running.sgml building.sgml changes-2.0.sgml
301 content_files = \
283 XSLT_FILES = \
284 escape-xml-to-text.xsl \
285 gdbus-fix-bugs.xsl \
286 gtk-doc.xsl \
287 version-greater-or-equal.xsl \
288 $(NULL)
289
290 EXTRA_DIST = \
291 $(DOCBOOK_FILE) \
292 $(CONTENT_INCLUDES) \
293 $(MAN_IN_FILES) \
294 $(XSLT_FILES) \
295 static \
296 $(NULL)
297
298 CLEANFILES = \
302299 $(DBUS_GENERATED) \
303300 $(DBUS_ESCAPED) \
304 html.css \
305 realm.xml \
306 realmd-guide-active-directory.xml \
307 realmd-guide-configuring.xml \
308 realmd-guide-freeipa.xml \
309 realmd-guide-kerberos.xml \
301 $(man8_MANS) \
310302 $(NULL)
311303
312
313 # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
314 # These files must be listed here *and* in content_files
315 # e.g. expand_content_files=running.sgml
316 expand_content_files =
317 @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
318 @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
319 @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
320 @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
321 @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN =
322 @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute
323
324 # We set GPATH here; this gives us semantics for GNU make
325 # which are more like other make's VPATH, when it comes to
326 # whether a source that is a target of one rule is then
327 # searched for in VPATH/GPATH.
328 #
329 GPATH = $(srcdir)
330 TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
331 SETUP_FILES = \
332 $(content_files) \
333 $(DOC_MAIN_SGML_FILE) \
334 $(DOC_MODULE)-sections.txt \
335 $(DOC_MODULE)-overrides.txt
336
337 EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) $(DBUS_GENERATED) \
338 $(DBUS_ESCAPED) $(xml_files) escape-xml-to-text.xsl html.css
339 DOC_STAMPS = setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
340 html-build.stamp pdf-build.stamp \
341 tmpl.stamp sgml.stamp html.stamp pdf.stamp
342
343 SCANOBJ_FILES = \
344 $(DOC_MODULE).args \
345 $(DOC_MODULE).hierarchy \
346 $(DOC_MODULE).interfaces \
347 $(DOC_MODULE).prerequisites \
348 $(DOC_MODULE).signals
349
350 REPORT_FILES = \
351 $(DOC_MODULE)-undocumented.txt \
352 $(DOC_MODULE)-undeclared.txt \
353 $(DOC_MODULE)-unused.txt
354
355 CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) \
356 $(DBUS_GENERATED) $(DBUS_ESCAPED) $(man_MANS) style.stamp
357 @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP =
358 @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp
359 @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP =
360 @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp
361
362 # This includes the standard gtk-doc make rules, copied by gtkdocize.
363 XSLTPROC_FLAGS = \
364 --nonet \
365 --stringparam man.output.quietly 1 \
366 --stringparam funcsynopsis.style ansi \
367 --stringparam man.th.extra1.suppress 1 \
368 --stringparam man.authors.section.enabled 0 \
369 --stringparam man.copyright.section.enabled 0
370
371 man_MANS = \
372 realm.8
373
374 xml_files = $(man_MANS:.8=.xml)
375 noinst_DATA = style.stamp
376304 all: all-am
377305
378306 .SUFFIXES:
379307 .SUFFIXES: .8 .xml
380 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps)
308 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
381309 @for dep in $?; do \
382310 case '$(am__configure_deps)' in \
383311 *$$dep*) \
398326 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
399327 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
400328 esac;
401 $(top_srcdir)/gtk-doc.make:
402329
403330 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
404331 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
408335 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
409336 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
410337 $(am__aclocal_m4_deps):
411 install-man8: $(man_MANS)
338 install-man8: $(man8_MANS)
412339 @$(NORMAL_INSTALL)
413 @list1=''; \
414 list2='$(man_MANS)'; \
340 @list1='$(man8_MANS)'; \
341 list2=''; \
415342 test -n "$(man8dir)" \
416343 && test -n "`echo $$list1$$list2`" \
417344 || exit 0; \
444371
445372 uninstall-man8:
446373 @$(NORMAL_UNINSTALL)
447 @list=''; test -n "$(man8dir)" || exit 0; \
374 @list='$(man8_MANS)'; test -n "$(man8dir)" || exit 0; \
448375 files=`{ for i in $$list; do echo "$$i"; done; \
449 l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
450 sed -n '/\.8[a-z]*$$/p'; \
451376 } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
452377 -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
453378 dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
508433 dist-hook
509434 check-am: all-am
510435 check: check-am
511 all-am: Makefile $(MANS) $(DATA) all-local
436 all-am: Makefile $(MANS) all-local
512437 installdirs:
513438 for dir in "$(DESTDIR)$(man8dir)"; do \
514439 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
550475
551476 distclean: distclean-am
552477 -rm -f Makefile
553 distclean-am: clean-am distclean-generic distclean-local
478 distclean-am: clean-am distclean-generic
554479
555480 dvi: dvi-am
556481
594519
595520 maintainer-clean: maintainer-clean-am
596521 -rm -f Makefile
597 maintainer-clean-am: distclean-am maintainer-clean-generic \
598 maintainer-clean-local
522 maintainer-clean-am: distclean-am maintainer-clean-generic
599523
600524 mostlyclean: mostlyclean-am
601525
616540 .MAKE: install-am install-strip
617541
618542 .PHONY: all all-am all-local check check-am clean clean-generic \
619 clean-local dist-hook distclean distclean-generic \
620 distclean-local distdir dvi dvi-am html html-am info info-am \
621 install install-am install-data install-data-am \
622 install-data-local install-dvi install-dvi-am install-exec \
623 install-exec-am install-html install-html-am install-info \
624 install-info-am install-man install-man8 install-pdf \
625 install-pdf-am install-ps install-ps-am install-strip \
626 installcheck installcheck-am installdirs maintainer-clean \
627 maintainer-clean-generic maintainer-clean-local mostlyclean \
628 mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
629 uninstall-local uninstall-man uninstall-man8
630
631
632 @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
633 @ENABLE_GTK_DOC_FALSE@all-local:
634
635 docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
636
637 $(REPORT_FILES): sgml-build.stamp
638
639 #### setup ####
640
641 setup-build.stamp:
642 -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
643 echo ' DOC Preparing build'; \
644 files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
645 if test "x$$files" != "x" ; then \
646 for file in $$files ; do \
647 test -f $(abs_srcdir)/$$file && \
648 cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
649 done; \
650 fi; \
651 test -d $(abs_srcdir)/tmpl && \
652 { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
653 chmod -R u+w $(abs_builddir)/tmpl; } \
654 fi
655 @touch setup-build.stamp
656
657 #### scan ####
658
659 scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
660 @echo ' DOC Scanning header files'
661 @_source_dir='' ; \
662 for i in $(DOC_SOURCE_DIR) ; do \
663 _source_dir="$${_source_dir} --source-dir=$$i" ; \
664 done ; \
665 gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
666 @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
667 echo " DOC Introspecting gobjects"; \
668 scanobj_options=""; \
669 gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
670 if test "$(?)" = "0"; then \
671 if test "x$(V)" = "x1"; then \
672 scanobj_options="--verbose"; \
673 fi; \
674 fi; \
675 CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
676 gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
677 else \
678 for i in $(SCANOBJ_FILES) ; do \
679 test -f $$i || touch $$i ; \
680 done \
681 fi
682 @touch scan-build.stamp
683
684 $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
685 @true
686
687 #### templates ####
688
689 tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
690 @echo ' DOC Rebuilding template files'
691 @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
692 @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
693 if test -w $(abs_srcdir) ; then \
694 cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
695 fi \
696 fi
697 @touch tmpl-build.stamp
698
699 tmpl.stamp: tmpl-build.stamp
700 @true
701
702 $(srcdir)/tmpl/*.sgml:
703 @true
704
705 #### xml ####
706
707 sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
708 @echo ' DOC Building XML'
709 @-chmod -R u+w $(srcdir)
710 @_source_dir='' ; \
711 for i in $(DOC_SOURCE_DIR) ; do \
712 _source_dir="$${_source_dir} --source-dir=$$i" ; \
713 done ; \
714 gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
715 @touch sgml-build.stamp
716
717 sgml.stamp: sgml-build.stamp
718 @true
719
720 #### html ####
721
722 html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
723 @echo ' DOC Building HTML'
724 @rm -rf html
725 @mkdir html
726 @mkhtml_options=""; \
727 gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
728 if test "$(?)" = "0"; then \
729 if test "x$(V)" = "x1"; then \
730 mkhtml_options="$$mkhtml_options --verbose"; \
731 fi; \
732 fi; \
733 gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
734 if test "$(?)" = "0"; then \
735 mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
736 fi; \
737 cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
738 -@test "x$(HTML_IMAGES)" = "x" || \
739 for file in $(HTML_IMAGES) ; do \
740 if test -f $(abs_srcdir)/$$file ; then \
741 cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
742 fi; \
743 if test -f $(abs_builddir)/$$file ; then \
744 cp $(abs_builddir)/$$file $(abs_builddir)/html; \
745 fi; \
746 done;
747 @echo ' DOC Fixing cross-references'
748 @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
749 @touch html-build.stamp
750
751 #### pdf ####
752
753 pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
754 @echo ' DOC Building PDF'
755 @rm -f $(DOC_MODULE).pdf
756 @mkpdf_options=""; \
757 gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
758 if test "$(?)" = "0"; then \
759 if test "x$(V)" = "x1"; then \
760 mkpdf_options="$$mkpdf_options --verbose"; \
761 fi; \
762 fi; \
763 if test "x$(HTML_IMAGES)" != "x"; then \
764 for img in $(HTML_IMAGES); do \
765 part=`dirname $$img`; \
766 echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
767 if test $$? != 0; then \
768 mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
769 fi; \
770 done; \
771 fi; \
772 gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
773 @touch pdf-build.stamp
774
775 ##############
776
777 clean-local:
778 @rm -f *~ *.bak
779 @rm -rf .libs
780
781 distclean-local:
782 @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
783 $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
784 @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
785 rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
786 rm -rf tmpl; \
787 fi
788
789 maintainer-clean-local: clean
790 @rm -rf xml html
791
792 install-data-local:
793 @installfiles=`echo $(builddir)/html/*`; \
794 if test "$$installfiles" = '$(builddir)/html/*'; \
795 then echo 1>&2 'Nothing to install' ; \
796 else \
797 if test -n "$(DOC_MODULE_VERSION)"; then \
798 installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
799 else \
800 installdir="$(DESTDIR)$(TARGET_DIR)"; \
801 fi; \
802 $(mkinstalldirs) $${installdir} ; \
803 for i in $$installfiles; do \
804 echo ' $(INSTALL_DATA) '$$i ; \
805 $(INSTALL_DATA) $$i $${installdir}; \
806 done; \
807 if test -n "$(DOC_MODULE_VERSION)"; then \
808 mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
809 $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
810 fi; \
811 $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
812 fi
813
814 uninstall-local:
815 @if test -n "$(DOC_MODULE_VERSION)"; then \
816 installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
817 else \
818 installdir="$(DESTDIR)$(TARGET_DIR)"; \
819 fi; \
820 rm -rf $${installdir}
821
822 #
823 # Require gtk-doc when making dist
824 #
825 @ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
826 @ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
827 @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
828 @ENABLE_GTK_DOC_FALSE@ @false
829
830 dist-hook: dist-check-gtkdoc dist-hook-local
831 @mkdir $(distdir)/tmpl
832 @mkdir $(distdir)/html
833 @-cp ./tmpl/*.sgml $(distdir)/tmpl
834 @cp ./html/* $(distdir)/html
835 @-cp ./$(DOC_MODULE).pdf $(distdir)/
836 @-cp ./$(DOC_MODULE).types $(distdir)/
837 @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
838 @cd $(distdir) && rm -f $(DISTCLEANFILES)
839 @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
840
841 .PHONY : dist-hook-local docs
543 clean-local dist-hook distclean distclean-generic distdir dvi \
544 dvi-am html html-am info info-am install install-am \
545 install-data install-data-am install-data-local install-dvi \
546 install-dvi-am install-exec install-exec-am install-html \
547 install-html-am install-info install-info-am install-man \
548 install-man8 install-pdf install-pdf-am install-ps \
549 install-ps-am install-strip installcheck installcheck-am \
550 installdirs maintainer-clean maintainer-clean-generic \
551 mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
552 uninstall-am uninstall-local uninstall-man uninstall-man8
553
842554
843555 .xml.8:
844556 $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
845557
846 style.stamp: html.css html-build.stamp
847 @cp $(srcdir)/html.css $(builddir)/html/html.css
848 @sed -i 's/href="style.css"/href="html.css"/' $(builddir)/html/*.html
849 @touch $(builddir)/style.stamp
850
851 $(DBUS_GENERATED): $(DBUS_INTERFACE)
558 $(DBUS_GENERATED): $(DBUS_INTERFACE) gdbus-fix-bugs.xsl
852559 $(AM_V_GEN) gdbus-codegen --interface-prefix org.freedesktop.realmd. \
853560 --generate-docbook realmd $<
561 $(AM_V_GEN) for f in $(DBUS_GENERATED); do \
562 $(XSLTPROC) --output $$f.tmp $(srcdir)/gdbus-fix-bugs.xsl $$f && mv $$f.tmp $$f; \
563 done
564
565 # The above gdbus-codegen target cannot be run in parallel
566 .NOTPARALLEL:
854567
855568 $(DBUS_ESCAPED): $(DBUS_INTERFACE) $(srcdir)/escape-xml-to-text.xsl
856569 $(AM_V_GEN) $(XSLTPROC) --nonet --novalid --output $(DBUS_ESCAPED) \
857570 $(srcdir)/escape-xml-to-text.xsl $(DBUS_INTERFACE)
858571 @sed -i '/^[ ]*$$/d' $(DBUS_ESCAPED)
859572
573 html/index.html: $(DBUS_GENERATED) $(DOCBOOK_FILE) $(CONTENT_INCLUDES) $(MAN_IN_FILES) $(DBUS_ESCAPED) $(STATIC_FILES)
574 $(AM_V_GEN) mkdir -p html && cp $(srcdir)/static/* html/
575 $(AM_V_GEN) $(XMLTO) html -m $(srcdir)/gtk-doc.xsl -o html \
576 --searchpath $(builddir):$(srcdir) $(srcdir)/$(DOCBOOK_FILE)
577
578 all-local: html/index.html
579
580 clean-local:
581 @rm -rf *.tmp html
582
583 install-data-local:
584 $(MKDIR_P) $(DESTDIR)$(htmldir)
585 $(INSTALL_DATA) $(builddir)/html/* $(DESTDIR)$(htmldir)
586
587 uninstall-local:
588 rm -rf $(DESTDIR)$(htmldir)
589
590 dist-hook: html/index.html
591 @mkdir $(distdir)/html
592 @cp ./html/* $(distdir)/html
593
860594 upload: all
861595 rsync -Hvax html/./ anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/docs/./
862596
0 <?xml version="1.0"?>
1 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2
3 <!-- This fixes broken gdbus-codegen output -->
4
5 <!-- Remove nested para elements -->
6 <xsl:template match="para[para]">
7 <xsl:apply-templates select="para"/>
8 </xsl:template>
9
10 <!-- Remove empty variablelist elements -->
11 <xsl:template match="variablelist[not(*)]">
12 </xsl:template>
13
14 <xsl:template match="node() | @*">
15 <xsl:copy>
16 <xsl:apply-templates select="node() | @*"/>
17 </xsl:copy>
18 </xsl:template>
19
20 </xsl:stylesheet>
0 <?xml version='1.0'?> <!--*- mode: xml -*-->
1 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
2 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
3 exclude-result-prefixes="l"
4 version="1.0">
5
6 <!-- import the chunked XSL stylesheet -->
7 <!-- http://www.sagehill.net/docbookxsl/Chunking.html says we should use
8 "chunkfast.xsl", but I can see a difference -->
9 <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
10 <xsl:include href="version-greater-or-equal.xsl"/>
11
12 <xsl:key name="acronym.key"
13 match="glossentry/glossterm"
14 use="."/>
15 <xsl:key name="gallery.key"
16 match="para[@role='gallery']/link"
17 use="@linkend"/>
18
19 <!-- change some parameters -->
20 <!-- http://docbook.sourceforge.net/release/xsl/current/doc/html/index.html -->
21 <xsl:param name="toc.section.depth">2</xsl:param>
22 <xsl:param name="generate.toc">
23 book toc
24 chapter toc
25 glossary toc
26 index toc
27 part toc
28 reference toc
29 </xsl:param>
30
31 <xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
32 <xsl:param name="chunker.output.indent" select="'yes'"/>
33 <xsl:param name="chunker.output.doctype-public" select="'-//W3C//DTD HTML 4.01 Transitional//EN'"/>
34 <xsl:param name="chunk.fast" select="1"/>
35
36 <xsl:param name="default.encoding" select="'UTF-8'"/>
37 <xsl:param name="chapter.autolabel" select="0"/>
38 <xsl:param name="use.id.as.filename" select="1"/>
39 <xsl:param name="html.ext" select="'.html'"/>
40 <xsl:param name="refentry.generate.name" select="0"/>
41 <xsl:param name="refentry.generate.title" select="1"/>
42 <!-- don't generate all those link tags (very slow and hardly used)
43 it does not show much effect as we have a user.head.content template
44 <xsl:param name="html.extra.head.links" select="0" />
45 -->
46
47 <!-- use index filtering (if available) -->
48 <xsl:param name="index.on.role" select="1"/>
49
50 <!-- display variablelists as tables -->
51 <xsl:param name="variablelist.as.table" select="1"/>
52
53 <!-- new things to consider
54 <xsl:param name="glossterm.auto.link" select="0"></xsl:param>
55 -->
56
57 <!-- this gets set on the command line ... -->
58 <xsl:param name="gtkdoc.version" select="''"/>
59 <xsl:param name="gtkdoc.bookname" select="''"/>
60
61 <!-- ========================================================= -->
62
63 <!-- l10n is slow, we don't ue it, so we'd like to turn it off
64 this atleast avoid the re-evaluation -->
65 <xsl:template name="l10n.language">en</xsl:template>
66
67 <xsl:param name="gtkdoc.l10n.xml" select="document('http://docbook.sourceforge.net/release/xsl/current/common/en.xml')"/>
68
69 <xsl:key name="gtkdoc.gentext.key"
70 match="l:gentext[@key]"
71 use="@key"/>
72 <xsl:key name="gtkdoc.context.key"
73 match="l:context[@name]"
74 use="@name"/>
75
76 <xsl:template name="gentext">
77 <xsl:param name="key" select="local-name(.)"/>
78
79 <xsl:for-each select="$gtkdoc.l10n.xml">
80 <xsl:variable name="l10n.gentext" select="key('gtkdoc.gentext.key', $key)"/>
81
82 <xsl:choose>
83 <xsl:when test="$l10n.gentext">
84 <xsl:value-of select="$l10n.gentext/@text"/>
85 </xsl:when>
86 <xsl:otherwise>
87 <xsl:message>
88 <xsl:text>No "en" localization of "</xsl:text>
89 <xsl:value-of select="$key"/>
90 <xsl:text>" exists.</xsl:text>
91 </xsl:message>
92 </xsl:otherwise>
93 </xsl:choose>
94 </xsl:for-each>
95 </xsl:template>
96
97 <xsl:template name="gentext.dingbat">
98 <xsl:param name="dingbat">bullet</xsl:param>
99
100 <xsl:variable name="l10n.dingbat"
101 select="($gtkdoc.l10n.xml/l:l10n/l:dingbat[@key=$dingbat])[1]"/>
102
103 <xsl:choose>
104 <xsl:when test="$l10n.dingbat">
105 <xsl:value-of select="$l10n.dingbat/@text"/>
106 </xsl:when>
107 <xsl:otherwise>
108 <xsl:message>
109 <xsl:text>No "en" localization of dingbat </xsl:text>
110 <xsl:value-of select="$dingbat"/>
111 <xsl:text> exists; using "en".</xsl:text>
112 </xsl:message>
113 </xsl:otherwise>
114 </xsl:choose>
115 </xsl:template>
116
117 <xsl:template name="gentext.template">
118 <xsl:param name="context" select="'default'"/>
119 <xsl:param name="name" select="'default'"/>
120 <xsl:param name="origname" select="$name"/>
121
122 <!-- cut leading / if any to avoid one recursion -->
123 <xsl:variable name="rname">
124 <xsl:choose>
125 <xsl:when test="starts-with($name, '/')">
126 <xsl:value-of select="substring-after($name, '/')"/>
127 </xsl:when>
128 <xsl:otherwise>
129 <xsl:value-of select="$name"/>
130 </xsl:otherwise>
131 </xsl:choose>
132 </xsl:variable>
133
134 <!-- this is called with context="title|title-numbered|title-unnumbered>
135 <xsl:message>
136 <xsl:text>context:</xsl:text><xsl:value-of select="$context"/>
137 <xsl:text>;name:</xsl:text><xsl:value-of select="$rname"/>
138 <xsl:text>;origname:</xsl:text><xsl:value-of select="$origname"/>
139 </xsl:message>
140
141 see html/html.xsl:<xsl:template match="*" mode="html.title.attribute">
142 -->
143
144 <xsl:for-each select="$gtkdoc.l10n.xml">
145 <xsl:variable name="context.node" select="key('gtkdoc.context.key', $context)"/>
146 <xsl:variable name="template.node"
147 select="($context.node/l:template[@name=$rname])[1]"/>
148
149 <xsl:choose>
150 <xsl:when test="$template.node/@text">
151 <xsl:value-of select="$template.node/@text"/>
152 <!-- debug
153 <xsl:message>
154 <xsl:text>=</xsl:text><xsl:value-of select="$template.node/@text"/>
155 </xsl:message>
156 -->
157 </xsl:when>
158 <xsl:otherwise>
159 <xsl:choose>
160 <xsl:when test="contains($rname, '/')">
161 <xsl:call-template name="gentext.template">
162 <xsl:with-param name="context" select="$context"/>
163 <xsl:with-param name="name" select="substring-after($rname, '/')"/>
164 <xsl:with-param name="origname" select="$origname"/>
165 </xsl:call-template>
166 </xsl:when>
167 </xsl:choose>
168 </xsl:otherwise>
169 </xsl:choose>
170 </xsl:for-each>
171 </xsl:template>
172
173 <!-- silently test whether a gentext template exists -->
174 <xsl:template name="gentext.template.exists">
175 <xsl:param name="context" select="'default'"/>
176 <xsl:param name="name" select="'default'"/>
177 <xsl:param name="origname" select="$name"/>
178
179 <xsl:variable name="template">
180 <xsl:call-template name="gentext.template">
181 <xsl:with-param name="context" select="$context"/>
182 <xsl:with-param name="name" select="$name"/>
183 <xsl:with-param name="origname" select="$origname"/>
184 </xsl:call-template>
185 </xsl:variable>
186
187 <xsl:choose>
188 <xsl:when test="string-length($template) != 0">1</xsl:when>
189 <xsl:otherwise>0</xsl:otherwise>
190 </xsl:choose>
191 </xsl:template>
192
193 <!-- shortcut version -->
194 <!-- @bug: https://bugzilla.gnome.org/show_bug.cgi?id=617478 -->
195 <xsl:template name="generate.html.title"/>
196 <!--xsl:template name="generate.html.title">
197 <xsl:variable name="has.title.markup">
198 <xsl:apply-templates select="." mode="title.markup">
199 <xsl:with-param name="verbose" select="0"/>
200 </xsl:apply-templates>
201 </xsl:variable>
202 <xsl:if test="$has.title.markup != '???TITLE???'">
203 <xsl:variable name="gentext.title">
204 <xsl:apply-templates select="." mode="object.title.markup.textonly"/>
205 </xsl:variable>
206 <xsl:choose>
207 <xsl:when test="string-length($gentext.title) != 0">
208 <xsl:attribute name="title">
209 <xsl:value-of select="$gentext.title"/>
210 </xsl:attribute>
211 </xsl:when>
212 <xsl:when test="alt">
213 <xsl:attribute name="title">
214 <xsl:value-of select="normalize-space(alt)"/>
215 </xsl:attribute>
216 </xsl:when>
217 </xsl:choose>
218 </xsl:if>
219 </xsl:template-->
220
221 <!-- Generate a title attribute for the context node (e.g. links) -->
222 <xsl:template match="*" mode="html.title.attribute">
223 <xsl:variable name="has.title.markup">
224 <xsl:apply-templates select="." mode="title.markup">
225 <xsl:with-param name="verbose" select="0"/>
226 </xsl:apply-templates>
227 </xsl:variable>
228 <xsl:if test="$has.title.markup != '???TITLE???'">
229 <xsl:variable name="is.title">
230 <xsl:call-template name="gentext.template.exists">
231 <xsl:with-param name="context" select="'title'"/>
232 <xsl:with-param name="name" select="local-name(.)"/>
233 <xsl:with-param name="lang">
234 <xsl:call-template name="l10n.language"/>
235 </xsl:with-param>
236 </xsl:call-template>
237 </xsl:variable>
238
239 <xsl:variable name="is.title-numbered">
240 <xsl:if test="$is.title = 0">
241 <xsl:call-template name="gentext.template.exists">
242 <xsl:with-param name="context" select="'title-numbered'"/>
243 <xsl:with-param name="name" select="local-name(.)"/>
244 <xsl:with-param name="lang">
245 <xsl:call-template name="l10n.language"/>
246 </xsl:with-param>
247 </xsl:call-template>
248 </xsl:if>
249 </xsl:variable>
250
251
252 <xsl:variable name="is.title-unnumbered">
253 <xsl:if test="$is.title = 0 and $is.title-numbered = 0">
254 <xsl:call-template name="gentext.template.exists">
255 <xsl:with-param name="context" select="'title-unnumbered'"/>
256 <xsl:with-param name="name" select="local-name(.)"/>
257 <xsl:with-param name="lang">
258 <xsl:call-template name="l10n.language"/>
259 </xsl:with-param>
260 </xsl:call-template>
261 </xsl:if>
262 </xsl:variable>
263
264 <xsl:variable name="gentext.title">
265 <xsl:if test="$is.title != 0 or
266 $is.title-numbered != 0 or
267 $is.title-unnumbered != 0">
268 <xsl:apply-templates select="."
269 mode="object.title.markup.textonly"/>
270 </xsl:if>
271 </xsl:variable>
272
273 <xsl:choose>
274 <xsl:when test="string-length($gentext.title) != 0">
275 <xsl:attribute name="title">
276 <xsl:value-of select="$gentext.title"/>
277 </xsl:attribute>
278 </xsl:when>
279 <xsl:when test="alt">
280 <xsl:attribute name="title">
281 <xsl:value-of select="normalize-space(alt)"/>
282 </xsl:attribute>
283 </xsl:when>
284 </xsl:choose>
285 </xsl:if>
286 </xsl:template>
287
288
289
290
291 <!-- ========================================================= -->
292 <!-- template to create the index.sgml anchor index -->
293
294 <xsl:template match="book|article">
295 <xsl:variable name="tooldver">
296 <xsl:call-template name="version-greater-or-equal">
297 <xsl:with-param name="ver1" select="$VERSION" />
298 <xsl:with-param name="ver2">1.36</xsl:with-param>
299 </xsl:call-template>
300 </xsl:variable>
301 <xsl:if test="$tooldver = 0">
302 <xsl:message terminate="yes">
303 FATAL-ERROR: You need the DocBook XSL Stylesheets version 1.36 or higher
304 to build the documentation.
305 Get a newer version at http://docbook.sourceforge.net/projects/xsl/
306 </xsl:message>
307 </xsl:if>
308 <xsl:apply-imports/>
309
310 <!-- generate the index.sgml href index -->
311 <xsl:call-template name="generate.index"/>
312 </xsl:template>
313
314 <xsl:template name="generate.index">
315 <xsl:call-template name="write.text.chunk">
316 <xsl:with-param name="filename" select="'index.sgml'"/>
317 <xsl:with-param name="content">
318 <xsl:apply-templates select="/book/bookinfo/releaseinfo/ulink"
319 mode="generate.index.mode"/>
320 <!-- check all anchor and refentry elements -->
321 <!--
322 The obvious way to write this is //anchor|//refentry|etc...
323 The obvious way is slow because it causes multiple traversals
324 in libxslt. This take about half the time.
325 -->
326 <xsl:apply-templates select="//*[name()='anchor' or name()='refentry' or name()='refsect1' or
327 name() = 'refsect2' or name()='refsynopsisdiv' or
328 name()='varlistentry']"
329 mode="generate.index.mode"/>
330 </xsl:with-param>
331 <xsl:with-param name="default.encoding" select="'UTF-8'"/>
332 <xsl:with-param name="chunker.output.indent" select="'no'"/>
333 </xsl:call-template>
334 </xsl:template>
335
336 <xsl:template match="*" mode="generate.index.mode">
337 <xsl:if test="not(@href) and count(@id) > 0">
338 <xsl:text>&lt;ANCHOR id=&quot;</xsl:text>
339 <xsl:value-of select="@id"/>
340 <xsl:text>&quot; href=&quot;</xsl:text>
341 <xsl:if test="$gtkdoc.bookname">
342 <xsl:value-of select="$gtkdoc.bookname"/>
343 <xsl:text>/</xsl:text>
344 </xsl:if>
345 <xsl:call-template name="href.target"/>
346 <xsl:text>&quot;&gt;&#10;</xsl:text>
347 </xsl:if>
348 </xsl:template>
349
350 <xsl:template match="/book/bookinfo/releaseinfo/ulink" mode="generate.index.mode">
351 <xsl:if test="@role='online-location'">
352 <xsl:text>&lt;ONLINE href=&quot;</xsl:text>
353 <xsl:value-of select="@url"/>
354 <xsl:text>&quot;&gt;&#10;</xsl:text>
355 </xsl:if>
356 </xsl:template>
357
358 <!-- ========================================================= -->
359 <!-- template to output gtkdoclink elements for the unknown targets -->
360
361 <xsl:template match="link">
362 <xsl:choose>
363 <xsl:when test="id(@linkend)">
364 <xsl:apply-imports/>
365 </xsl:when>
366 <xsl:otherwise>
367 <GTKDOCLINK HREF="{@linkend}">
368 <xsl:apply-templates/>
369 </GTKDOCLINK>
370 </xsl:otherwise>
371 </xsl:choose>
372 </xsl:template>
373
374 <!-- ========================================================= -->
375 <!-- Below are the visual portions of the stylesheet. They provide
376 the normal gtk-doc output style. -->
377
378 <xsl:param name="shade.verbatim" select="0"/>
379 <xsl:param name="refentry.separator" select="0"/>
380
381 <xsl:template match="refsect2">
382 <xsl:if test="preceding-sibling::refsect2">
383 <hr/>
384 </xsl:if>
385 <xsl:apply-imports/>
386 </xsl:template>
387
388 <xsl:template name="user.head.content">
389 <xsl:if test="$gtkdoc.version">
390 <meta name="generator" content="GTK-Doc V{$gtkdoc.version} (XML mode)"/>
391 </xsl:if>
392 <link rel="stylesheet" href="style.css" type="text/css"/>
393 </xsl:template>
394
395 <xsl:template name="user.footer.content">
396 <div class="footer">
397 <hr />
398 <xsl:choose>
399 <xsl:when test="$gtkdoc.version">
400 Generated by GTK-Doc V<xsl:copy-of select="$gtkdoc.version" />
401 </xsl:when>
402 <xsl:otherwise>
403 Generated by GTK-Doc
404 </xsl:otherwise>
405 </xsl:choose>
406 </div>
407 </xsl:template>
408
409 <xsl:template match="title" mode="book.titlepage.recto.mode">
410 <table class="navigation" id="top" width="100%"
411 cellpadding="2" cellspacing="0">
412 <tr>
413 <th valign="middle">
414 <p class="{name(.)}">
415 <xsl:value-of select="."/>
416 </p>
417 </th>
418 </tr>
419 </table>
420 </xsl:template>
421
422 <xsl:template name="header.navigation">
423 <xsl:param name="prev" select="/foo"/>
424 <xsl:param name="next" select="/foo"/>
425 <xsl:variable name="home" select="/*[1]"/>
426 <xsl:variable name="up" select="parent::*"/>
427 <xsl:variable name="refsections" select="./refsect1[@role]"/>
428 <xsl:variable name="glssections" select="./glossdiv/title"/>
429 <xsl:variable name="idxsections" select="./indexdiv/indexdiv/title"/>
430 <xsl:variable name="section_id" select="./@id"/>
431 <xsl:variable name="sect_object_hierarchy" select="./refsect1[@role='object_hierarchy']"/>
432 <xsl:variable name="sect_impl_interfaces" select="./refsect1[@role='impl_interfaces']"/>
433 <xsl:variable name="sect_prerequisites" select="./refsect1[@role='prerequisites']"/>
434 <xsl:variable name="sect_derived_interfaces" select="./refsect1[@role='derived_interfaces']"/>
435 <xsl:variable name="sect_implementations" select="./refsect1[@role='implementations']"/>
436 <xsl:variable name="sect_properties" select="./refsect1[@role='properties']"/>
437 <xsl:variable name="sect_child_properties" select="./refsect1[@role='child_properties']"/>
438 <xsl:variable name="sect_style_properties" select="./refsect1[@role='style_properties']"/>
439 <xsl:variable name="sect_signal_proto" select="./refsect1[@role='signal_proto']"/>
440 <xsl:variable name="sect_desc" select="./refsect1[@role='desc']"/>
441 <xsl:variable name="sect_synopsis" select="./refsynopsisdiv[@role='synopsis']"/>
442 <!--
443 <xsl:variable name="sect_details" select="./refsect1[@id='details']"/>
444 <xsl:variable name="sect_property_details" select="./refsect1[@id='property_details']"/>
445 <xsl:variable name="sect_child_property_details" select="./refsect1[@id='child_property_details']"/>
446 <xsl:variable name="sect_style_property_details" select="./refsect1[@id='style_property_details']"/>
447 <xsl:variable name="sect_signals" select="./refsect1[@id='signals']"/>
448 -->
449
450 <xsl:if test="$suppress.navigation = '0' and $home != .">
451 <table class="navigation" id="top" width="100%"
452 summary = "Navigation header" cellpadding="2" cellspacing="2">
453 <tr valign="middle">
454 <xsl:choose>
455 <xsl:when test="count($prev) > 0">
456 <td>
457 <a accesskey="p">
458 <xsl:attribute name="href">
459 <xsl:call-template name="href.target">
460 <xsl:with-param name="object" select="$prev"/>
461 </xsl:call-template>
462 </xsl:attribute>
463 <img src="left.png" width="24" height="24" border="0">
464 <xsl:attribute name="alt">
465 <xsl:call-template name="gentext">
466 <xsl:with-param name="key">nav-prev</xsl:with-param>
467 </xsl:call-template>
468 </xsl:attribute>
469 </img>
470 </a>
471 </td>
472 </xsl:when>
473 <xsl:otherwise>
474 <td>&#160;</td>
475 </xsl:otherwise>
476 </xsl:choose>
477 <xsl:choose>
478 <xsl:when test="count($up) > 0 and $up != $home">
479 <td>
480 <a accesskey="u">
481 <xsl:attribute name="href">
482 <xsl:call-template name="href.target">
483 <xsl:with-param name="object" select="$up"/>
484 </xsl:call-template>
485 </xsl:attribute>
486 <img src="up.png" width="24" height="24" border="0">
487 <xsl:attribute name="alt">
488 <xsl:call-template name="gentext">
489 <xsl:with-param name="key">nav-up</xsl:with-param>
490 </xsl:call-template>
491 </xsl:attribute>
492 </img>
493 </a>
494 </td>
495 </xsl:when>
496 <xsl:otherwise>
497 <td>&#160;</td>
498 </xsl:otherwise>
499 </xsl:choose>
500 <xsl:choose>
501 <xsl:when test="$home != .">
502 <td>
503 <a accesskey="h">
504 <xsl:attribute name="href">
505 <xsl:call-template name="href.target">
506 <xsl:with-param name="object" select="$home"/>
507 </xsl:call-template>
508 </xsl:attribute>
509 <img src="home.png" width="24" height="24" border="0">
510 <xsl:attribute name="alt">
511 <xsl:call-template name="gentext">
512 <xsl:with-param name="key">nav-home</xsl:with-param>
513 </xsl:call-template>
514 </xsl:attribute>
515 </img>
516 </a>
517 </td>
518 </xsl:when>
519 <xsl:otherwise>
520 <td>&#160;</td>
521 </xsl:otherwise>
522 </xsl:choose>
523 <th width="100%" align="center">
524 <xsl:apply-templates select="$home" mode="object.title.markup"/>
525 </th>
526 <xsl:choose>
527 <xsl:when test="count($next) > 0">
528 <td>
529 <a accesskey="n">
530 <xsl:attribute name="href">
531 <xsl:call-template name="href.target">
532 <xsl:with-param name="object" select="$next"/>
533 </xsl:call-template>
534 </xsl:attribute>
535 <img src="right.png" width="24" height="24" border="0">
536 <xsl:attribute name="alt">
537 <xsl:call-template name="gentext">
538 <xsl:with-param name="key">nav-next</xsl:with-param>
539 </xsl:call-template>
540 </xsl:attribute>
541 </img>
542 </a>
543 </td>
544 </xsl:when>
545 <xsl:otherwise>
546 <td>&#160;</td>
547 </xsl:otherwise>
548 </xsl:choose>
549 </tr>
550 <!--<xsl:if test="name()='refentry'"-->
551 <xsl:choose>
552 <xsl:when test="count($refsections) > 0">
553 <tr>
554 <td colspan="5" class="shortcuts">
555 <xsl:if test="count($sect_synopsis) > 0">
556 <a href="#{$section_id}.synopsis" class="shortcut">Top</a>
557 </xsl:if>
558 <xsl:if test="count($sect_desc) > 0">
559 &#160;|&#160;
560 <a href="#{$section_id}.description" class="shortcut">
561 <xsl:value-of select="./refsect1[@role='desc']/title"/>
562 </a>
563 </xsl:if>
564 <xsl:if test="count($sect_object_hierarchy) > 0">
565 &#160;|&#160;
566 <a href="#{$section_id}.object-hierarchy" class="shortcut">
567 <xsl:value-of select="./refsect1[@role='object_hierarchy']/title"/>
568 </a>
569 </xsl:if>
570 <xsl:if test="count($sect_impl_interfaces) > 0">
571 &#160;|&#160;
572 <a href="#{$section_id}.implemented-interfaces" class="shortcut">
573 <xsl:value-of select="./refsect1[@role='impl_interfaces']/title"/>
574 </a>
575 </xsl:if>
576 <xsl:if test="count($sect_prerequisites) > 0">
577 &#160;|&#160;
578 <a href="#{$section_id}.prerequisites" class="shortcut">
579 <xsl:value-of select="./refsect1[@role='prerequisites']/title"/>
580 </a>
581 </xsl:if>
582 <xsl:if test="count($sect_derived_interfaces) > 0">
583 &#160;|&#160;
584 <a href="#{$section_id}.derived-interfaces" class="shortcut">
585 <xsl:value-of select="./refsect1[@role='derived_interfaces']/title"/>
586 </a>
587 </xsl:if>
588 <xsl:if test="count($sect_implementations) > 0">
589 &#160;|&#160;
590 <a href="#{$section_id}.implementations" class="shortcut">
591 <xsl:value-of select="./refsect1[@role='implementations']/title"/>
592 </a>
593 </xsl:if>
594 <xsl:if test="count($sect_properties) > 0">
595 &#160;|&#160;
596 <a href="#{$section_id}.properties" class="shortcut">
597 <xsl:value-of select="./refsect1[@role='properties']/title"/>
598 </a>
599 </xsl:if>
600 <xsl:if test="count($sect_child_properties) > 0">
601 &#160;|&#160;
602 <a href="#{$section_id}.child-properties" class="shortcut">
603 <xsl:value-of select="./refsect1[@role='child_properties']/title"/>
604 </a>
605 </xsl:if>
606 <xsl:if test="count($sect_style_properties) > 0">
607 &#160;|&#160;
608 <a href="#{$section_id}.style-properties" class="shortcut">
609 <xsl:value-of select="./refsect1[@role='style_properties']/title"/>
610 </a>
611 </xsl:if>
612 <xsl:if test="count($sect_signal_proto) > 0">
613 &#160;|&#160;
614 <a href="#{$section_id}.signals" class="shortcut">
615 <xsl:value-of select="./refsect1[@role='signal_proto']/title"/>
616 </a>
617 </xsl:if>
618 <!--
619 <xsl:if test="count($sect_details) > 0">
620 <a href="#details" class="shortcut">
621 <xsl:value-of select="./refsect1[@id='details']/title"/>
622 </a>
623 &#160;|&#160;
624 </xsl:if>
625 <xsl:if test="count($sect_property_details) > 0">
626 <a href="#property_details" class="shortcut">
627 <xsl:value-of select="./refsect1[@id='property_details']/title"/>
628 </a>
629 &#160;|&#160;
630 </xsl:if>
631 <xsl:if test="count($sect_child_property_details) > 0">
632 <a href="#child_property_details" class="shortcut">
633 <xsl:value-of select="./refsect1[@id='property_child_details']/title"/>
634 </a>
635 &#160;|&#160;
636 </xsl:if>
637 <xsl:if test="count($sect_style_property_details) > 0">
638 <a href="#style_property_details" class="shortcut">
639 <xsl:value-of select="./refsect1[@id='style_property_details']/title"/>
640 </a>
641 &#160;|&#160;
642 </xsl:if>
643 <xsl:if test="count($sect_signals) > 0">
644 <a href="#signals" class="shortcut">
645 <xsl:value-of select="./refsect1[@id='signals']/title"/>
646 </a>
647 &#160;|&#160;
648 </xsl:if>
649 -->
650 </td>
651 </tr>
652 </xsl:when>
653 <!-- this is not yet very nice, as it requires all glossdic/indexdiv
654 elements having a anchor element. maybe we can customize the xsl
655 to automaticaly create local anchors
656 -->
657 <xsl:when test="count($glssections) > 0">
658 <tr>
659 <td colspan="5" class="shortcuts">
660 <xsl:for-each select="./glossdiv">
661 <xsl:if test="position() > 1">
662 &#160;|&#160;
663 </xsl:if>
664 <a class="shortcut">
665 <xsl:attribute name="href">#gls<xsl:value-of select="./title"/></xsl:attribute>
666 <xsl:value-of select="./title"/>
667 </a>
668 </xsl:for-each>
669 </td>
670 </tr>
671 </xsl:when>
672 <xsl:when test="count($idxsections) > 0">
673 <tr>
674 <td colspan="5" class="shortcuts">
675 <xsl:for-each select="./indexdiv/indexdiv">
676 <xsl:if test="position() > 1">
677 &#160;|&#160;
678 </xsl:if>
679 <a class="shortcut">
680 <xsl:attribute name="href">#idx<xsl:value-of select="./title"/></xsl:attribute>
681 <xsl:value-of select="./title"/>
682 </a>
683 </xsl:for-each>
684 </td>
685 </tr>
686 </xsl:when>
687 </xsl:choose>
688 </table>
689 </xsl:if>
690 </xsl:template>
691
692 <xsl:template name="footer.navigation">
693 </xsl:template>
694
695 <!-- avoid creating multiple identical indices
696 if the stylesheets don't support filtered indices
697 -->
698 <xsl:template match="index">
699 <xsl:variable name="has-filtered-index">
700 <xsl:call-template name="version-greater-or-equal">
701 <xsl:with-param name="ver1" select="$VERSION" />
702 <xsl:with-param name="ver2">1.66</xsl:with-param>
703 </xsl:call-template>
704 </xsl:variable>
705 <xsl:if test="($has-filtered-index = 1) or (count(@role) = 0)">
706 <xsl:apply-imports/>
707 </xsl:if>
708 </xsl:template>
709
710 <xsl:template match="index" mode="toc">
711 <xsl:variable name="has-filtered-index">
712 <xsl:call-template name="version-greater-or-equal">
713 <xsl:with-param name="ver1" select="$VERSION" />
714 <xsl:with-param name="ver2">1.66</xsl:with-param>
715 </xsl:call-template>
716 </xsl:variable>
717 <xsl:if test="($has-filtered-index = 1) or (count(@role) = 0)">
718 <xsl:apply-imports/>
719 </xsl:if>
720 </xsl:template>
721
722 <xsl:template match="para">
723 <xsl:choose>
724 <xsl:when test="@role = 'gallery'">
725 <div class="container">
726 <div class="gallery-spacer"> </div>
727 <xsl:apply-templates mode="gallery.mode"/>
728 <div class="gallery-spacer"> </div>
729 </div>
730 </xsl:when>
731 <xsl:otherwise>
732 <xsl:apply-imports/>
733 </xsl:otherwise>
734 </xsl:choose>
735 </xsl:template>
736 <!-- FIXME: try if that works too -->
737 <!--xsl:template match="para[@role='gallery']">
738 <div class="container">
739 <div class="gallery-spacer"> </div>
740 <xsl:apply-templates mode="gallery.mode"/>
741 <div class="gallery-spacer"> </div>
742 </div>
743 </xsl:template-->
744
745
746
747 <xsl:template match="link" mode="gallery.mode">
748 <div class="gallery-float">
749 <xsl:apply-templates select="."/>
750 </div>
751 </xsl:template>
752
753 <!-- add gallery handling to refnamediv template -->
754 <xsl:template match="refnamediv">
755 <div class="{name(.)}">
756 <table width="100%">
757 <tr><td valign="top">
758 <xsl:call-template name="anchor"/>
759 <xsl:choose>
760 <xsl:when test="$refentry.generate.name != 0">
761 <h2>
762 <xsl:call-template name="gentext">
763 <xsl:with-param name="key" select="'RefName'"/>
764 </xsl:call-template>
765 </h2>
766 </xsl:when>
767 <xsl:when test="$refentry.generate.title != 0">
768 <h2>
769 <xsl:choose>
770 <xsl:when test="../refmeta/refentrytitle">
771 <xsl:apply-templates select="../refmeta/refentrytitle"/>
772 </xsl:when>
773 <xsl:otherwise>
774 <xsl:apply-templates select="refname[1]"/>
775 </xsl:otherwise>
776 </xsl:choose>
777 </h2>
778 </xsl:when>
779 </xsl:choose>
780 <p>
781 <xsl:apply-templates/>
782 </p>
783 </td>
784 <td valign="top" align="right">
785 <xsl:choose>
786 <xsl:when test="../refmeta/refmiscinfo/inlinegraphic">
787 <xsl:apply-templates select="../refmeta/refmiscinfo/inlinegraphic"/>
788 </xsl:when>
789 <xsl:otherwise>
790 <!-- find the gallery image to use here
791 - determine the id of the enclosing refentry
792 - look for an inlinegraphic inside a link with linkend == refentryid inside a para with role == gallery
793 - use it here
794 -->
795 <xsl:variable name="refentryid" select="../@id"/>
796 <xsl:apply-templates select="key('gallery.key', $refentryid)/inlinegraphic"/>
797 </xsl:otherwise>
798 </xsl:choose>
799 </td></tr>
800 </table>
801 </div>
802 </xsl:template>
803
804 <!-- add anchors for index sections -->
805 <xsl:template match="indexdiv">
806 <a><xsl:attribute name="name">idx<xsl:value-of select="./title"/></xsl:attribute></a>
807 <xsl:apply-templates/>
808 </xsl:template>
809
810 <!-- add anchors for glossary sections -->
811 <xsl:template match="glossdiv">
812 <a><xsl:attribute name="name">gls<xsl:value-of select="./title"/></xsl:attribute></a>
813 <xsl:apply-templates/>
814 </xsl:template>
815
816 <!-- Exterminate any trace of indexterms in the main flow -->
817 <xsl:template match="indexterm">
818 </xsl:template>
819
820 <!-- Extra link on the right side of doc-blobs -->
821 <xsl:template name="user.format.extralinks">
822 <xsl:if test="../ulink[@role='extralinks']">
823 <span class="extralinks">
824 <xsl:for-each select="../ulink[@role='extralinks']">
825 <xsl:if test="position() = 1">[&#160;</xsl:if>
826 <xsl:if test="position() > 1">&#160;|&#160;</xsl:if>
827 <a>
828 <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
829 <xsl:copy-of select="text()" />
830 </a>
831 <xsl:if test="position() = last()">&#160;]</xsl:if>
832 </xsl:for-each>
833 </span>
834 </xsl:if>
835 <!--xsl:copy-of select="text()" /-->
836 <xsl:apply-templates/>
837 </xsl:template>
838
839 <!-- this is not in use yet (see gtkdoc-mkdb
840 <xsl:template match="//refsect2/ulink[@role='extralinks']"/>
841 <xsl:template match="//refsect1/ulink[@role='extralinks']"/>
842
843 <xsl:template match="//refsect2/title">
844 <h3><xsl:call-template name="user.format.extralinks"/></h3>
845 </xsl:template>
846
847 <xsl:template match="//refsect1/title">
848 <h2><xsl:call-template name="user.format.extralinks"/></h2>
849 </xsl:template>
850 -->
851
852 <!-- ==================================================================== -->
853
854 <xsl:template match="acronym">
855 <xsl:call-template name="generate.acronym.link"/>
856 </xsl:template>
857
858 <xsl:template name="generate.acronym.link">
859 <xsl:param name="acronym">
860 <xsl:apply-templates/>
861 </xsl:param>
862 <!--
863 We use for-each to change context to the database document because key()
864 only locates elements in the same document as the context node!
865 -->
866
867 <xsl:param name="value" >
868 <xsl:value-of select="key('acronym.key', $acronym)/../glossdef/para[1]" />
869 </xsl:param>
870 <xsl:choose>
871 <xsl:when test="$value=''">
872 <!-- debug -->
873 <xsl:message>
874 In gtk-doc.xsl: For acronym (<xsl:value-of select="$acronym"/>) no value found!
875 </xsl:message>
876 <a>
877 <xsl:attribute name="href">
878 <xsl:text>http://foldoc.org/</xsl:text>
879 <xsl:value-of select="$acronym"/>
880 </xsl:attribute>
881 <xsl:call-template name="inline.charseq"/>
882 </a>
883 </xsl:when>
884 <xsl:otherwise>
885 <!-- found -->
886 <acronym>
887 <xsl:attribute name="title">
888 <xsl:value-of select="$value"/>
889 </xsl:attribute>
890 <xsl:call-template name="inline.charseq"/>
891 </acronym>
892 </xsl:otherwise>
893 </xsl:choose>
894 </xsl:template>
895
896 </xsl:stylesheet>
66 <link rel="home" href="index.html" title="realmd">
77 <link rel="up" href="development.html" title="Part II. Developer Reference">
88 <link rel="prev" href="gdbus-org.freedesktop.realmd.Service.html" title="org.freedesktop.realmd.Service">
9 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
10 <link rel="stylesheet" href="html.css" type="text/css">
9 <link rel="stylesheet" href="style.css" type="text/css">
1110 </head>
1211 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1312 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
8988 </div>
9089 <div class="footer">
9190 <hr>
92 Generated by GTK-Doc V1.18</div>
91 Generated by GTK-Doc
92 </div>
9393 </body>
94 </html>
94 </html>
77 <link rel="up" href="development.html" title="Part II. Developer Reference">
88 <link rel="prev" href="development.html" title="Part II. Developer Reference">
99 <link rel="next" href="gdbus-org.freedesktop.realmd.Provider.html" title="org.freedesktop.realmd.Provider">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
4140 </div>
4241 <div class="footer">
4342 <hr>
44 Generated by GTK-Doc V1.18</div>
43 Generated by GTK-Doc
44 </div>
4545 </body>
46 </html>
46 </html>
77 <link rel="up" href="index.html" title="realmd">
88 <link rel="prev" href="guide-integration.html" title="Integration">
99 <link rel="next" href="dbus-interface-reference.html" title="DBus Interface Reference">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
4847 </div>
4948 <div class="footer">
5049 <hr>
51 Generated by GTK-Doc V1.18</div>
50 Generated by GTK-Doc
51 </div>
5252 </body>
53 </html>
53 </html>
77 <link rel="up" href="dbus-interface-reference.html" title="DBus Interface Reference">
88 <link rel="prev" href="gdbus-org.freedesktop.realmd.Realm.html" title="org.freedesktop.realmd.Realm">
99 <link rel="next" href="gdbus-org.freedesktop.realmd.KerberosMembership.html" title="org.freedesktop.realmd.KerberosMembership">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
3635 <td valign="top" align="right"></td>
3736 </tr></table></div>
3837 <div class="refsect1">
39 <a name="idp7209360"></a><h2>Properties</h2>
38 <a name="idp932672"></a><h2>Properties</h2>
4039 <pre class="synopsis">
41 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.RealmName" title='The "RealmName" property'>RealmName</a> readable s
42 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.DomainName" title='The "DomainName" property'>DomainName</a> readable s
40 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Kerberos.RealmName">RealmName</GTKDOCLINK> readable s
41 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Kerberos.DomainName">DomainName</GTKDOCLINK> readable s
4342 </pre>
4443 </div>
4544 <div class="refsect1">
4645 <a name="gdbus-interface-org-freedesktop-realmd-Kerberos"></a><h2>Description</h2>
4746 <p> An interface that describes a kerberos realm in more detail. This
4847 is always implemented on an DBus object path that also implements
49 the <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</a> interface.
48 the <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</GTKDOCLINK> interface.
5049 </p>
5150 </div>
5251 <div class="refsect1">
7574 </div>
7675 <div class="footer">
7776 <hr>
78 Generated by GTK-Doc V1.18</div>
77 Generated by GTK-Doc
78 </div>
7979 </body>
80 </html>
80 </html>
77 <link rel="up" href="dbus-interface-reference.html" title="DBus Interface Reference">
88 <link rel="prev" href="gdbus-org.freedesktop.realmd.Kerberos.html" title="org.freedesktop.realmd.Kerberos">
99 <link rel="next" href="gdbus-org.freedesktop.realmd.Service.html" title="org.freedesktop.realmd.Service">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
3938 <div class="refsynopsisdiv">
4039 <h2>Methods</h2>
4140 <pre class="synopsis">
42 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Join" title="The Join() method">Join</a> (IN (ssv) credentials,
41 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">Join</GTKDOCLINK> (IN (ssv) credentials,
4342 IN a{sv} options);
44 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave" title="The Leave() method">Leave</a> (IN (ssv) credentials,
43 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">Leave</GTKDOCLINK> (IN (ssv) credentials,
4544 IN a{sv} options);
4645 </pre>
4746 </div>
4847 <div class="refsect1">
49 <a name="idp7278816"></a><h2>Properties</h2>
48 <a name="idp10443328"></a><h2>Properties</h2>
5049 <pre class="synopsis">
51 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator" title='The "SuggestedAdministrator" property'>SuggestedAdministrator</a> readable s
52 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials" title='The "SupportedJoinCredentials" property'>SupportedJoinCredentials</a> readable a(ss)
53 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials" title='The "SupportedLeaveCredentials" property'>SupportedLeaveCredentials</a> readable a(ss)
50 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator">SuggestedAdministrator</GTKDOCLINK> readable s
51 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials">SupportedJoinCredentials</GTKDOCLINK> readable a(ss)
52 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials">SupportedLeaveCredentials</GTKDOCLINK> readable a(ss)
5453 </pre>
5554 </div>
5655 <div class="refsect1">
7473 </pre>
7574 <p> Join this machine to the realm and enroll the machine.
7675 </p>
77 <p> If this method returns successfully then the machine will be
76 <p> If this method returns successfully, then the machine will be
7877 joined to the realm. It is not necessary to restart services or the
7978 machine afterward. Relevant properties on the realm will be updated
8079 before the method returns.
8180 </p>
8281 <p> The <em class="parameter"><code>credentials</code></em> should be set according to one of the
8382 supported credentials returned by
84 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>:SupportedJoinCredentials.
83 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>:SupportedJoinCredentials.
8584 The first string in the tuple is the type, the second string
8685 is the owner, and the variant contains the credential contents
8786 See the discussion at
88 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>:SupportedJoinCredentials
87 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>:SupportedJoinCredentials
8988 for more information.
9089 </p>
9190 <p> <em class="parameter"><code>options</code></em> can contain, but is not limited to, the following values:
9392 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
9493 <li class="listitem"><p><code class="literal">operation</code>: a string
9594 identifier chosen by the client, which can then later be
96 passed to <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel" title="The Cancel() method">Cancel()</a> in order
95 passed to <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</GTKDOCLINK> in order
9796 to cancel the operation</p></li>
9897 <li class="listitem"><p><code class="literal">computer-ou</code>: a string
9998 containing an LDAP DN for an organizational unit where the
10099 computer account should be created</p></li>
101100 <li class="listitem"><p><code class="literal">assume-packages</code>: a boolean
102 which overrides makes the join assume that all needed
101 which makes the join assume that all needed
103102 software packages have already been installed</p></li>
103 <li class="listitem"><p><code class="literal">membership-software</code>: a string
104 containing the membership software identifier that the returned
105 realms should match.</p></li>
104106 </ul></div>
105107 <p>
106108 </p>
115117 <li class="listitem"><p><code class="literal">org.freedesktop.realmd.Error.Cancelled</code>:
116118 returned if the operation was cancelled.</p></li>
117119 <li class="listitem"><p><code class="literal">org.freedesktop.realmd.Error.NotAuthorized</code>:
118 returned if the calling client is not permitted to perform an join
120 returned if the calling client is not permitted to perform a join
119121 operation.</p></li>
120122 <li class="listitem"><p><code class="literal">org.freedesktop.realmd.Error.AuthenticationFailed</code>:
121123 returned if the credentials passed did not authenticate against the realm
122124 correctly. It is appropriate to prompt the user again.</p></li>
123125 <li class="listitem"><p><code class="literal">org.freedesktop.realmd.Error.AlreadyEnrolled</code>:
124 returned if already enrolled in this realm, or another realm and enrolling
125 in multiple realms is not supported.</p></li>
126 returned if already enrolled in this realm, or if already enrolled in another realm
127 (if enrolling in multiple realms is not supported).</p></li>
126128 <li class="listitem"><p><code class="literal">org.freedesktop.realmd.Error.Busy</code>:
127129 returned if the service is currently performing another operation like
128130 join or leave.</p></li>
155157 </pre>
156158 <p> Leave the realm and unenroll the machine.
157159 </p>
158 <p> If this method returns successfully then the machine will have
160 <p> If this method returns successfully, then the machine will have
159161 left the domain and been unenrolled. It is not necessary to restart
160162 services or the machine afterward. Relevant properties on the realm
161163 will be updated before the method returns.
162164 </p>
163165 <p> The <em class="parameter"><code>credentials</code></em> should be set according to one of the
164166 supported credentials returned by
165 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>:SupportedUnenrollCredentials.
167 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>:SupportedJoinCredentials.
166168 The first string in the tuple is the type, the second string
167169 is the owner, and the variant contains the credential contents
168170 See the discussion at
169 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>:SupportedEnrollCredentials
171 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>:SupportedJoinCredentials
170172 for more information.
171173 </p>
172174 <p> <em class="parameter"><code>options</code></em> can contain, but is not limited to, the following values:
173175 </p>
174176 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">operation</code>: a string
175177 identifier chosen by the client, which can then later be
176 passed to <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel" title="The Cancel() method">Cancel()</a> in order
178 passed to <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</GTKDOCLINK> in order
177179 to cancel the operation</p></li></ul></div>
178180 <p>
179181 </p>
197199 returned if not enrolled in this realm.</p></li>
198200 <li class="listitem"><p><code class="literal">org.freedesktop.realmd.Error.Busy</code>:
199201 returned if the service is currently performing another operation like
200 enroll or unenroll.</p></li>
202 join or leave.</p></li>
201203 </ul></div>
202204 <p>
203205 </p>
240242 </pre>
241243 <p>credentials supported for joining</p>
242244 <p> Various kinds of credentials that are supported when calling the
243 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>.Join() method.
244 </p>
245 <p> Each credential is represented by a type, and an owner. The type
245 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>.Join() method.
246 </p>
247 <p> Each credential is represented by a type and an owner. The type
246248 denotes which kind of credential is passed to the method. The
247249 owner indicates to the client how to prompt the user or obtain
248250 the credential, and to the service how to use the credential.
276278 </p>
277279 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
278280 <li class="listitem"><p><code class="literal">administrator</code>:
279 the credentials belong to a kerberos user principal.
281 the credentials belong to a kerberos administrator principal.
280282 The caller may use this as a hint to prompt the user
281283 for administrative credentials.</p></li>
282284 <li class="listitem"><p><code class="literal">user</code>:
288290 the credentials belong to a computer account.</p></li>
289291 <li class="listitem"><p><code class="literal">none</code>:
290292 the credentials have an unspecified owner, such as a one
291 time secret.</p></li>
293 time password.</p></li>
292294 </ul></div>
293295 <p>
294296 </p>
301303 </pre>
302304 <p>credentials supported for leaving</p>
303305 <p> Various kinds of credentials that are supported when calling the
304 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>.Leave() method.
305 </p>
306 <p> See <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>:SupportedJoinCredentials for
306 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>.Leave() method.
307 </p>
308 <p> See <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>:SupportedJoinCredentials for
307309 a discussion of what the values represent.
308310 </p>
309311 </div>
311313 </div>
312314 <div class="footer">
313315 <hr>
314 Generated by GTK-Doc V1.18</div>
316 Generated by GTK-Doc
317 </div>
315318 </body>
316 </html>
319 </html>
77 <link rel="up" href="dbus-interface-reference.html" title="DBus Interface Reference">
88 <link rel="prev" href="dbus-interface-reference.html" title="DBus Interface Reference">
99 <link rel="next" href="gdbus-org.freedesktop.realmd.Realm.html" title="org.freedesktop.realmd.Realm">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
3938 <div class="refsynopsisdiv">
4039 <h2>Methods</h2>
4140 <pre class="synopsis">
42 <a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-method-org-freedesktop-realmd-Provider.Discover" title="The Discover() method">Discover</a> (IN s string,
41 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Provider.Discover">Discover</GTKDOCLINK> (IN s string,
4342 IN a{sv} options,
4443 OUT i relevance,
4544 OUT ao realm);
4645 </pre>
4746 </div>
4847 <div class="refsect1">
49 <a name="idp7865008"></a><h2>Properties</h2>
48 <a name="idp4447792"></a><h2>Properties</h2>
5049 <pre class="synopsis">
51 <a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Name" title='The "Name" property'>Name</a> readable s
52 <a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Version" title='The "Version" property'>Version</a> readable s
53 <a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Realms" title='The "Realms" property'>Realms</a> readable ao
50 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Provider.Name">Name</GTKDOCLINK> readable s
51 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Provider.Version">Version</GTKDOCLINK> readable s
52 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Provider.Realms">Realms</GTKDOCLINK> readable ao
5453 </pre>
5554 </div>
5655 <div class="refsect1">
7675 </pre>
7776 <p> Discover realms for the given string. The input <em class="parameter"><code>string</code></em> is
7877 usually a domain or realm name, perhaps typed by a user. If
79 an empty string is provided the realm provider should try to
80 discover a default realm if possible (eg: from DHCP).
78 an empty string is provided, the realm provider should try to
79 discover a default realm, if possible (e.g. from DHCP).
8180 </p>
8281 <p> <em class="parameter"><code>options</code></em> can contain, but is not limited to, the following values:
8382 </p>
8483 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
8584 <li class="listitem"><p><code class="literal">operation</code>: a string
8685 identifier chosen by the client, which can then later be
87 passed to <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel" title="The Cancel() method">Cancel()</a> in order
86 passed to <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</GTKDOCLINK> in order
8887 to cancel the operation</p></li>
8988 <li class="listitem"><p><code class="literal">client-software</code>: a string
9089 containing the client software identifier that the returned
9291 <li class="listitem"><p><code class="literal">server-software</code>: a string
9392 containing the client software identifier that the returned
9493 realms should match.</p></li>
94 <li class="listitem"><p><code class="literal">membership-software</code>: a string
95 containing the membership software identifier that the returned
96 realms should match.</p></li>
9597 </ul></div>
9698 <p>
9799 </p>
99101 different discover calls to different providers. Implementors
100102 should return a positive number if the provider highly
101103 recommends that the realms be handled by this provider,
102 or a zero if it can possibly handle the realms. Negative
104 or a zero if it can possibly handle the realms. Negative numbers
103105 should be returned if no realms are found.
104106 </p>
105107 <p> This method does not return an error when no realms are
106 discovered. It simply returns an <em class="parameter"><code>realm</code></em> list.
107 </p>
108 <p> To see diagnostic information about the discovery process
108 discovered. It simply returns an empty <em class="parameter"><code>realm</code></em> list.
109 </p>
110 <p> To see diagnostic information about the discovery process,
109111 connect to the org.freedesktop.realmd.Service::Diagnostics
110112 signal.
111113 </p>
194196 </div>
195197 <div class="footer">
196198 <hr>
197 Generated by GTK-Doc V1.18</div>
199 Generated by GTK-Doc
200 </div>
198201 </body>
199 </html>
202 </html>
77 <link rel="up" href="dbus-interface-reference.html" title="DBus Interface Reference">
88 <link rel="prev" href="gdbus-org.freedesktop.realmd.Provider.html" title="org.freedesktop.realmd.Provider">
99 <link rel="next" href="gdbus-org.freedesktop.realmd.Kerberos.html" title="org.freedesktop.realmd.Kerberos">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
3938 <div class="refsynopsisdiv">
4039 <h2>Methods</h2>
4140 <pre class="synopsis">
42 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.Deconfigure" title="The Deconfigure() method">Deconfigure</a> (IN a{sv} options);
43 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy" title="The ChangeLoginPolicy() method">ChangeLoginPolicy</a> (IN s login_policy,
41 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">Deconfigure</GTKDOCLINK> (IN a{sv} options);
42 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">ChangeLoginPolicy</GTKDOCLINK> (IN s login_policy,
4443 IN as permitted_add,
4544 IN as permitted_remove,
4645 IN a{sv} options);
4746 </pre>
4847 </div>
4948 <div class="refsect1">
50 <a name="idp6854256"></a><h2>Properties</h2>
49 <a name="idp6599856"></a><h2>Properties</h2>
5150 <pre class="synopsis">
52 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Name" title='The "Name" property'>Name</a> readable s
53 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Configured" title='The "Configured" property'>Configured</a> readable s
54 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces" title='The "SupportedInterfaces" property'>SupportedInterfaces</a> readable as
55 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Details" title='The "Details" property'>Details</a> readable a(ss)
56 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages" title='The "RequiredPackages" property'>RequiredPackages</a> readable as
57 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginFormats" title='The "LoginFormats" property'>LoginFormats</a> readable as
58 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy" title='The "LoginPolicy" property'>LoginPolicy</a> readable s
59 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins" title='The "PermittedLogins" property'>PermittedLogins</a> readable as
51 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.Name">Name</GTKDOCLINK> readable s
52 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.Configured">Configured</GTKDOCLINK> readable s
53 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">SupportedInterfaces</GTKDOCLINK> readable as
54 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.Details">Details</GTKDOCLINK> readable a(ss)
55 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages">RequiredPackages</GTKDOCLINK> readable as
56 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.LoginFormats">LoginFormats</GTKDOCLINK> readable as
57 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">LoginPolicy</GTKDOCLINK> readable s
58 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">PermittedLogins</GTKDOCLINK> readable as
6059 </pre>
6160 </div>
6261 <div class="refsect1">
6766 introspecting what kind of realm this is and how to work with
6867 the realm.
6968 </p>
70 <p> Use <a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Realms" title='The "Realms" property'>"Realms"</a> or
71 #<a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-method-org-freedesktop-realmd-Provider.Discover" title="The Discover() method">Discover()</a> to get access to some
69 <p> Use <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Provider.Realms">"Realms"</GTKDOCLINK> or
70 #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Provider.Discover">Discover()</GTKDOCLINK> to get access to some
7271 kerberos realm objects.
7372 </p>
7473 <p> Realms will always implement additional interfaces, such as
75 <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>. Do not assume that all realms
74 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>. Do not assume that all realms
7675 implement that kerberos interface. Use the
77 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces" title='The "SupportedInterfaces" property'>"SupportedInterfaces"</a> property to see
78 which interfaces are set.
76 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">"SupportedInterfaces"</GTKDOCLINK> property to see
77 which interfaces are supported.
7978 </p>
8079 <p> Different realms support various ways to configure them on the
81 system. Use the <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Configured" title='The "Configured" property'>"Configured"</a> property
82 to determine if a realm is configured. If it is configured the
80 system. Use the <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.Configured">"Configured"</GTKDOCLINK> property
81 to determine if a realm is configured. If it is configured, the
8382 property will be set to the interface of the mechanism that was
8483 used to configure it.
8584 </p>
8685 <p> To configure a realm, look in the
87 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces" title='The "SupportedInterfaces" property'>"SupportedInterfaces"</a> property for a
88 recognized purpose specific interface that can be used for
86 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">"SupportedInterfaces"</GTKDOCLINK> property for a
87 recognized purpose-specific interface that can be used for
8988 configuration, such as the
90 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</a> interface and its
91 #<a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Join" title="The Join() method">Join()</a> method.
89 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</GTKDOCLINK> interface and its
90 #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">Join()</GTKDOCLINK> method.
9291 </p>
9392 <p> To deconfigure a realm from the current system, you can use the
94 #<a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.Deconfigure" title="The Deconfigure() method">Deconfigure()</a> method. In additon some
93 #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">Deconfigure()</GTKDOCLINK> method. In addition, some
9594 of the configuration specific interfaces provide methods to
96 deconfigure a realm in a specific way, such as
97 #<a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave" title="The Leave() method">Leave()</a> method.
95 deconfigure a realm in a specific way, such as the
96 #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">Leave()</GTKDOCLINK> method.
9897 </p>
9998 <p> The various properties are guaranteed to have been updated before
10099 the operation methods return, if they change state.
113112 </p>
114113 <p> The behavior of this method depends on the which configuration
115114 interface is present in the
116 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</a>.Configured property. It does not
115 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</GTKDOCLINK>.Configured property. It does not
117116 always delete membership accounts in the realm, but just
118117 reconfigures the local machine so it no longer is configured
119118 for the given realm. In some cases the implementation may try
121120 </p>
122121 <p> Various configuration interfaces may support more specific ways
123122 to deconfigure a realm in a specific way, such as the
124 #<a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave" title="The Leave() method">Leave()</a> method.
123 #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">Leave()</GTKDOCLINK> method.
125124 </p>
126125 <p> <em class="parameter"><code>options</code></em> can contain, but is not limited to, the following values:
127126 </p>
128127 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">operation</code>: a string
129128 identifier chosen by the client, which can then later be
130 passed to <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel" title="The Cancel() method">Cancel()</a> in order
129 passed to <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</GTKDOCLINK> in order
131130 to cancel the operation</p></li></ul></div>
132131 <p>
133132 </p>
174173 </pre>
175174 <p> Change the login policy and/or permitted logins for this realm.
176175 </p>
177 <p> Not all realms support the all the various login policies. An
176 <p> Not all realms support all the various login policies. An
178177 error will be returned if the new login policy is not supported.
179178 You may specify an empty string for the <em class="parameter"><code>login_policy</code></em> argument
180179 which will cause no change in the policy itself. If the policy
181180 is changed, it will be reflected in the
182 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy" title='The "LoginPolicy" property'>"LoginPolicy"</a> property.
181 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">"LoginPolicy"</GTKDOCLINK> property.
183182 </p>
184183 <p> The <em class="parameter"><code>permitted_add</code></em> and <em class="parameter"><code>permitted_remove</code></em> arguments represent
185184 lists of login names that should be added and removed from
186 the <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a>:PermittedLogins property.
185 the <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK>:PermittedLogins property.
187186 </p>
188187 <p> <em class="parameter"><code>options</code></em> can contain, but is not limited to, the following values:
189188 </p>
190189 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">operation</code>: a string
191190 identifier chosen by the client, which can then later be
192 passed to <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel" title="The Cancel() method">Cancel()</a> in order
191 passed to <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</GTKDOCLINK> in order
193192 to cancel the operation</p></li></ul></div>
194193 <p>
195194 </p>
262261 <p> If this property is an empty string, then the realm is not
263262 configured. Otherwise the realm is configured, and contains
264263 a string which is the interface that represents how it was
265 configured, for example <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</a>.
264 configured, for example <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</GTKDOCLINK>.
266265 </p>
267266 </div>
268267 <hr>
273272 </pre>
274273 <p> Additional supported interfaces of this realm. This includes
275274 interfaces that contain more information about the realm,
276 such as <a class="link" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</a> and interfaces
275 such as <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</GTKDOCLINK> and interfaces
277276 which contain methods for configuring a realm, such as
278 <a class="link" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</a>.
277 <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</GTKDOCLINK>.
279278 </p>
280279 </div>
281280 <hr>
290289 </p>
291290 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
292291 <li class="listitem"><p><code class="literal">server-software</code>:
293 identifier of the software running on the server (eg:
292 identifier of the software running on the server (e.g.
294293 <code class="literal">active-directory</code>).</p></li>
295294 <li class="listitem"><p><code class="literal">client-software</code>:
296 identifier of the software running on the client (eg:
295 identifier of the software running on the client (e.g.
297296 <code class="literal">sssd</code>).</p></li>
298297 </ul></div>
299298 <p>
343342 <p> The policy for logging into this computer using this realm.
344343 </p>
345344 <p> The policy can be changed using the
346 #<a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy" title="The ChangeLoginPolicy() method">ChangeLoginPolicy()</a> method.
345 #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">ChangeLoginPolicy()</GTKDOCLINK> method.
347346 </p>
348347 <p> The following policies are predefined. Not all providers
349348 support all these policies and there may be provider specific
355354 realm.</p></li>
356355 <li class="listitem"><p><code class="literal">allow-permitted-logins</code>:
357356 only allow the logins permitted in the
358 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins" title='The "PermittedLogins" property'>"PermittedLogins"</a>
357 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">"PermittedLogins"</GTKDOCLINK>
359358 property.</p></li>
360359 <li class="listitem"><p><code class="literal">deny-any-login</code>:
361360 don't allow any logins via authenticated users of this
373372 <p>the permitted login names</p>
374373 <p> The list of permitted authenticated users allowed to login
375374 into this computer. This is only relevant if the
376 <a class="link" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy" title='The "LoginPolicy" property'>"LoginPolicy"</a> property
375 <GTKDOCLINK HREF="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">"LoginPolicy"</GTKDOCLINK> property
377376 contains the <code class="literal">allow-permitted-logins</code>
378377 string.
379378 </p>
382381 </div>
383382 <div class="footer">
384383 <hr>
385 Generated by GTK-Doc V1.18</div>
384 Generated by GTK-Doc
385 </div>
386386 </body>
387 </html>
387 </html>
77 <link rel="up" href="dbus-interface-reference.html" title="DBus Interface Reference">
88 <link rel="prev" href="gdbus-org.freedesktop.realmd.KerberosMembership.html" title="org.freedesktop.realmd.KerberosMembership">
99 <link rel="next" href="dbus-interface-raw.html" title="Raw DBus Interfaces">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
3938 <div class="refsynopsisdiv">
4039 <h2>Methods</h2>
4140 <pre class="synopsis">
42 <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel" title="The Cancel() method">Cancel</a> (IN s operation);
43 <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.SetLocale" title="The SetLocale() method">SetLocale</a> (IN s locale);
44 <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Release" title="The Release() method">Release</a> ();
41 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel</GTKDOCLINK> (IN s operation);
42 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.SetLocale">SetLocale</GTKDOCLINK> (IN s locale);
43 <GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Release">Release</GTKDOCLINK> ();
4544 </pre>
4645 </div>
4746 <div class="refsect1">
48 <a name="idp7832000"></a><h2>Signals</h2>
47 <a name="idp8984128"></a><h2>Signals</h2>
4948 <pre class="synopsis">
50 <a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-signal-org-freedesktop-realmd-Service.Diagnostics" title='The "Diagnostics" signal'>Diagnostics</a> (s data,
49 <GTKDOCLINK HREF="gdbus-signal-org-freedesktop-realmd-Service.Diagnostics">Diagnostics</GTKDOCLINK> (s data,
5150 s operation);
5251 </pre>
5352 </div>
5453 <div class="refsect1">
5554 <a name="gdbus-interface-org-freedesktop-realmd-Service"></a><h2>Description</h2>
5655 <p> Global calls for managing the realmd service. Usually you'll want
57 to use <a class="link" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-interface-org-freedesktop-realmd-Provider.top_of_page">org.freedesktop.realmd.Provider</a> instead.
56 to use <GTKDOCLINK HREF="gdbus-interface-org-freedesktop-realmd-Provider.top_of_page">org.freedesktop.realmd.Provider</GTKDOCLINK> instead.
5857 </p>
5958 <p> This interface is implemented by the realmd service, and is always
6059 available at the object path <code class="literal">/org/freedesktop/realmd</code>
7170 <pre class="programlisting">
7271 Cancel (IN s operation);
7372 </pre>
74 <p> Cancel a realmd operation. To be able to cancel an operation
73 <p> Cancel a realmd operation. To be able to cancel an operation,
7574 pass a uniquely chosen <code class="literal">operation</code> string
76 identifier as an option in the methods <code class="literal">options</code>
75 identifier as an option in the method's <code class="literal">options</code>
7776 argument.
7877 </p>
7978 <p> These operation string identifiers should be unique per client
8079 calling the realmd service.
8180 </p>
8281 <p> It is not guaranteed that the service can or will cancel the
83 operation. For example the operation may have already completed
82 operation. For example, the operation may have already completed
8483 by the time this method is handled. The caller of the operation
8584 method will receive a
8685 <code class="literal">org.freedesktop.realmd.Error.Cancelled</code>
106105 <p> Set the language <em class="parameter"><code>locale</code></em> for the client. This locale is used
107106 for error messages. The locale is used until the next time
108107 this method is called, the client disconnects, or the client
109 calls #<a class="link" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Release" title="The Release() method">Release()</a>.
108 calls #<GTKDOCLINK HREF="gdbus-method-org-freedesktop-realmd-Service.Release">Release()</GTKDOCLINK>.
110109 </p>
111110 <div class="variablelist"><table border="0" class="variablelist">
112111 <colgroup>
125124 <pre class="programlisting">
126125 Release ();
127126 </pre>
128 <p> Normally realmd waits until all clients have disconnected
129 before exiting itself, sometime later. For long lived clients
130 they can call this method to allow the realmd service to quit.
127 <p> Normally, realmd waits until all clients have disconnected
128 before exiting itself sometime later. Long lived clients
129 can call this method to allow the realmd service to quit.
131130 This is an optimization. The daemon will not exit immediately.
132131 It is safe to call this multiple times.
133132 </p>
134 <div class="variablelist"><table border="0" class="variablelist">
135 <colgroup>
136 <col align="left" valign="top">
137 <col>
138 </colgroup>
139 <tbody></tbody>
140 </table></div>
141133 </div>
142134 </div>
143135 <div class="refsect1">
155147 More than one line may be contained in <em class="parameter"><code>data</code></em>, or a partial
156148 line. New line characters are embedded in <em class="parameter"><code>data</code></em>.
157149 </p>
158 <p> This signal is sent explicitly to the client which invoked
150 <p> This signal is sent explicitly to the client which invoked an
159151 operation method. In order to tell which operation this
160152 diagnostic data results from, pass a unique
161153 <code class="literal">operation</code> string identifier in the
184176 </div>
185177 <div class="footer">
186178 <hr>
187 Generated by GTK-Doc V1.18</div>
179 Generated by GTK-Doc
180 </div>
188181 </body>
189 </html>
182 </html>
0 .synopsis, .classsynopsis
1 {
2 /* tango:aluminium 1/2 */
3 background: #eeeeec;
4 border: solid 1px #d3d7cf;
5 padding: 0.5em;
6 }
7 .programlisting
8 {
9 /* tango:sky blue 0/1 */
10 background: #e6f3ff;
11 border: solid 1px #729fcf;
12 padding: 0.5em;
13 }
14 .variablelist
15 {
16 padding: 4px;
17 margin-left: 3em;
18 }
19 .variablelist td:first-child
20 {
21 vertical-align: top;
22 }
23
24 @media screen {
25 sup a.footnote
26 {
27 position: relative;
28 top: 0em ! important;
29 }
30 /* this is needed so that the local anchors are displayed below the naviagtion */
31 div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
32 {
33 display: inline-block;
34 position: relative;
35 top:-5em;
36 }
37 /* this seems to be a bug in the xsl style sheets when generating indexes */
38 div.index div.index
39 {
40 top: 0em;
41 }
42 /* make space for the fixed navigation bar and add space at the bottom so that
43 * link targets appear somewhat close to top
44 */
45 body
46 {
47 padding-top: 3.2em;
48 padding-bottom: 20em;
49 }
50 /* style and size the navigation bar */
51 table.navigation#top
52 {
53 position: fixed;
54 /* tango:scarlet red 0/1 */
55 background: #ffe6e6;
56 border: solid 1px #ef2929;
57 margin-top: 0;
58 margin-bottom: 0;
59 top: 0;
60 left: 0;
61 height: 3em;
62 z-index: 10;
63 }
64 .navigation a, .navigation a:visited
65 {
66 /* tango:scarlet red 3 */
67 color: #a40000;
68 }
69 .navigation a:hover
70 {
71 /* tango:scarlet red 1 */
72 color: #ef2929;
73 }
74 td.shortcuts
75 {
76 /* tango:scarlet red 1 */
77 color: #ef2929;
78 font-size: 80%;
79 white-space: nowrap;
80 }
81 }
82 @media print {
83 table.navigation {
84 visibility: collapse;
85 display: none;
86 }
87 div.titlepage table.navigation {
88 visibility: visible;
89 display: table;
90 /* tango:scarlet red 0/1 */
91 background: #ffe6e6;
92 border: solid 1px #ef2929;
93 margin-top: 0;
94 margin-bottom: 0;
95 top: 0;
96 left: 0;
97 height: 3em;
98 }
99 }
100
101 .navigation .title
102 {
103 font-size: 200%;
104 }
105
106 div.gallery-float
107 {
108 float: left;
109 padding: 10px;
110 }
111 div.gallery-float img
112 {
113 border-style: none;
114 }
115 div.gallery-spacer
116 {
117 clear: both;
118 }
119
120 a, a:visited
121 {
122 text-decoration: none;
123 /* tango:sky blue 2 */
124 color: #3465a4;
125 }
126 a:hover
127 {
128 text-decoration: underline;
129 /* tango:sky blue 1 */
130 color: #729fcf;
131 }
132
133 div.table table
134 {
135 border-collapse: collapse;
136 border-spacing: 0px;
137 /* tango:aluminium 3 */
138 border: solid 1px #babdb6;
139 }
140
141 div.table table td, div.table table th
142 {
143 /* tango:aluminium 3 */
144 border: solid 1px #babdb6;
145 padding: 3px;
146 vertical-align: top;
147 }
148
149 div.table table th
150 {
151 /* tango:aluminium 2 */
152 background-color: #d3d7cf;
153 }
154
155 hr
156 {
157 /* tango:aluminium 3 */
158 color: #babdb6;
159 background: #babdb6;
160 border: none 0px;
161 height: 1px;
162 clear: both;
163 }
164
165 .footer
166 {
167 padding-top: 3.5em;
168 /* tango:aluminium 3 */
169 color: #babdb6;
170 text-align: center;
171 font-size: 80%;
172 }
173
174 .warning
175 {
176 /* tango:orange 0/1 */
177 background: #ffeed9;
178 border-color: #ffb04f;
179 }
180 .note
181 {
182 /* tango:chameleon 0/0.5 */
183 background: #d8ffb2;
184 border-color: #abf562;
185 }
186 .note, .warning
187 {
188 padding: 0.5em;
189 border-width: 1px;
190 border-style: solid;
191 }
192 .note h3, .warning h3
193 {
194 margin-top: 0.0em
195 }
196 .note p, .warning p
197 {
198 margin-bottom: 0.0em
199 }
200
201 /* blob links */
202 h2 .extralinks, h3 .extralinks
203 {
204 float: right;
205 /* tango:aluminium 3 */
206 color: #babdb6;
207 font-size: 80%;
208 font-weight: normal;
209 }
210
211 .annotation
212 {
213 /* tango:aluminium 5 */
214 color: #555753;
215 font-size: 80%;
216 font-weight: normal;
217 }
218
219 /* code listings */
220
221 .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
222 .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
223 .listing_code .programlisting .function { color: #000000; font-weight: bold; }
224 .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
225 .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
226 .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
227 .listing_code .programlisting .normal { color: #000000; }
228 .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
229 .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
230 .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
231 .listing_code .programlisting .type { color: #000000; }
232 .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
233 .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
234
235 .listing_frame {
236 /* tango:sky blue 1 */
237 border: solid 1px #729fcf;
238 padding: 0px;
239 }
240
241 .listing_lines, .listing_code {
242 margin-top: 0px;
243 margin-bottom: 0px;
244 padding: 0.5em;
245 }
246 .listing_lines {
247 /* tango:sky blue 0.5 */
248 background: #a6c5e3;
249 /* tango:aluminium 6 */
250 color: #2e3436;
251 }
252 .listing_code {
253 /* tango:sky blue 0 */
254 background: #e6f3ff;
255 }
256 .listing_code .programlisting {
257 /* override from previous */
258 border: none 0px;
259 padding: 0px;
260 }
261 .listing_lines pre, .listing_code pre {
262 margin: 0px;
263 }
77 <link rel="up" href="guide-active-directory.html" title="Using with Active Directory">
88 <link rel="prev" href="guide-active-directory.html" title="Using with Active Directory">
99 <link rel="next" href="guide-active-directory-join.html" title="Joining an Active Directory domain">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
3231 By default SSSD is used.</p>
3332 <div class="section">
3433 <div class="titlepage"><div><div><h3 class="title">
35 <a name="idp7085344"></a>Using SSSD with Active Directory</h3></div></div></div>
34 <a name="idp6975760"></a>Using SSSD with Active Directory</h3></div></div></div>
3635 <p><a class="ulink" href="https://fedorahosted.org/sssd/" target="_top">SSSD</a>
3736 provides client software for various kerberos and/or LDAP
3837 directories. Since version 1.9.x it provides good support
5049 </div>
5150 <div class="section">
5251 <div class="titlepage"><div><div><h3 class="title">
53 <a name="idp6195920"></a>Using Winbind with Active Directory</h3></div></div></div>
52 <a name="idp8187936"></a>Using Winbind with Active Directory</h3></div></div></div>
5453 <p>Samba
5554 <a class="ulink" href="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html" target="_top">Winbind</a>
5655 provides client software for use with Active Directory.</p>
6968 </div>
7069 <div class="footer">
7170 <hr>
72 Generated by GTK-Doc V1.18</div>
71 Generated by GTK-Doc
72 </div>
7373 </body>
74 </html>
74 </html>
77 <link rel="up" href="guide-active-directory.html" title="Using with Active Directory">
88 <link rel="prev" href="guide-active-directory-client.html" title="Active Directory client software">
99 <link rel="next" href="guide-active-directory-permit.html" title="Logins using Domain Accounts">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
5857 </div>
5958 <div class="footer">
6059 <hr>
61 Generated by GTK-Doc V1.18</div>
60 Generated by GTK-Doc
61 </div>
6262 </body>
63 </html>
63 </html>
77 <link rel="up" href="guide-active-directory.html" title="Using with Active Directory">
88 <link rel="prev" href="guide-active-directory-join.html" title="Joining an Active Directory domain">
99 <link rel="next" href="guide-freeipa.html" title="Using with FreeIPA">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
4645 </div>
4746 <div class="footer">
4847 <hr>
49 Generated by GTK-Doc V1.18</div>
48 Generated by GTK-Doc
49 </div>
5050 </body>
51 </html>
51 </html>
77 <link rel="up" href="guide.html" title="Part I. Administrative Guide">
88 <link rel="prev" href="realm.html" title="realm">
99 <link rel="next" href="guide-active-directory-client.html" title="Active Directory client software">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
2524 <dt><span class="section"><a href="guide-active-directory.html#guide-active-directory-discover">Discovering Active Directory domains</a></span></dt>
2625 <dt><span class="section"><a href="guide-active-directory-client.html">Active Directory client software</a></span></dt>
2726 <dd><dl>
28 <dt><span class="section"><a href="guide-active-directory-client.html#idp7085344">Using SSSD with Active Directory</a></span></dt>
29 <dt><span class="section"><a href="guide-active-directory-client.html#idp6195920">Using Winbind with Active Directory</a></span></dt>
27 <dt><span class="section"><a href="guide-active-directory-client.html#idp6975760">Using SSSD with Active Directory</a></span></dt>
28 <dt><span class="section"><a href="guide-active-directory-client.html#idp8187936">Using Winbind with Active Directory</a></span></dt>
3029 </dl></dd>
3130 <dt><span class="section"><a href="guide-active-directory-join.html">Joining an Active Directory domain</a></span></dt>
3231 <dt><span class="section"><a href="guide-active-directory-permit.html">Logins using Domain Accounts</a></span></dt>
7069 </div>
7170 <div class="footer">
7271 <hr>
73 Generated by GTK-Doc V1.18</div>
72 Generated by GTK-Doc
73 </div>
7474 </body>
75 </html>
75 </html>
0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968">
4 <title>example</title>
5 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
6 <link rel="home" href="index.html" title="realmd">
7 <link rel="up" href="guide-configuring.html" title="Configuring realmd">
8 <link rel="prev" href="guide-configuring.html" title="Configuring realmd">
9 <link rel="next" href="guide-configuring-users.html" title="user">
10 <link rel="stylesheet" href="style.css" type="text/css">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
14 <td><a accesskey="p" href="guide-configuring.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
15 <td><a accesskey="u" href="guide-configuring.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
16 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
17 <th width="100%" align="center">realmd</th>
18 <td><a accesskey="n" href="guide-configuring-users.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
19 </tr></table>
20 <div class="section">
21 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
22 <a name="guide-configuring-example"></a>example</h2></div></div></div>
23 <p>These options should go in an <code class="option">[example]</code>
24 section of the <code class="filename">/etc/realmd.conf</code> file. Only
25 specify the settings you wish to override.</p>
26 <div class="section">
27 <div class="titlepage"><div><div><h3 class="title">
28 <a name="idp35634336"></a>enabled</h3></div></div></div>
29 <p>Whether the example realm provider, which creates mock
30 realms for <code class="literal">example.com</code>,
31 <code class="literal">example.org</code>,
32 <code class="literal">example.net</code>.</p>
33 <div class="informalexample"><pre class="programlisting">
34 [example]
35 enabled = no
36 # enabled = yes
37 </pre></div>
38 <p>The default setting for this is
39 <code class="option">no</code></p>
40 </div>
41 </div>
42 <div class="footer">
43 <hr>
44 Generated by GTK-Doc
45 </div>
46 </body>
47 </html>
77 <link rel="up" href="guide-configuring.html" title="Configuring realmd">
88 <link rel="prev" href="guide-configuring-users.html" title="user">
99 <link rel="next" href="guide-integration.html" title="Integration">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
3534 <p>Only specify the settings you wish to override.</p>
3635 <div class="section">
3736 <div class="titlepage"><div><div><h3 class="title">
38 <a name="idp8420032"></a>computer-ou</h3></div></div></div>
37 <a name="idp8241632"></a>computer-ou</h3></div></div></div>
3938 <p>Specify this option to create directory computer accounts
4039 in a location other than the default. This currently only works
4140 with Active Directory domains.</p>
42 <div class="informalexample">
43 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
44 <tbody>
45 <tr>
46 <td class="listing_lines" align="right"><pre>1
47 2
48 3</pre></td>
49 <td class="listing_code"><pre class="programlisting"><span class="symbol">[</span><span class="normal">domain</span><span class="symbol">.</span><span class="normal">example</span><span class="symbol">.</span><span class="normal">com</span><span class="symbol">]</span>
50 <span class="normal">computer</span><span class="symbol">-</span><span class="normal">ou </span><span class="symbol">=</span><span class="normal"> OU</span><span class="symbol">=</span><span class="usertype">Linux</span><span class="normal"> Computers</span><span class="symbol">,</span><span class="normal">DC</span><span class="symbol">=</span><span class="normal">domain</span><span class="symbol">,</span><span class="normal">DC</span><span class="symbol">=</span><span class="normal">example</span><span class="symbol">,</span><span class="normal">DC</span><span class="symbol">=</span><span class="normal">com</span>
51 <span class="preproc"># computer</span><span class="symbol">-</span><span class="normal">ou </span><span class="symbol">=</span><span class="normal"> OU</span><span class="symbol">=</span><span class="usertype">Linux</span><span class="normal"> Computers</span><span class="symbol">,</span></pre></td>
52 </tr>
53 </tbody>
54 </table>
55 </div>
56
41 <div class="informalexample"><pre class="programlisting">
42 [domain.example.com]
43 computer-ou = OU=Linux Computers,DC=domain,DC=example,DC=com
44 # computer-ou = OU=Linux Computers,
45 </pre></div>
5746 <p>Specify the OU as an LDAP DN. It can be relative to the
5847 Root DSE, or a complete LDAP DN. Obviously the OU must exist
5948 in the directory.</p>
6453 </div>
6554 <div class="footer">
6655 <hr>
67 Generated by GTK-Doc V1.18</div>
56 Generated by GTK-Doc
57 </div>
6858 </body>
69 </html>
59 </html>
77 <link rel="up" href="guide-configuring.html" title="Configuring realmd">
88 <link rel="prev" href="guide-configuring.html" title="Configuring realmd">
99 <link rel="next" href="guide-configuring-realm.html" title="Realm specific settings">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
2625 specify the settings you wish to override.</p>
2726 <div class="section">
2827 <div class="titlepage"><div><div><h3 class="title">
29 <a name="idp5677840"></a>default-home</h3></div></div></div>
28 <a name="idp10210096"></a>default-home</h3></div></div></div>
3029 <p>Specify the <code class="option">default-home</code> setting in
3130 order to control how to set the home directory for accounts
3231 that have no home directory explicitly set.</p>
33 <div class="informalexample">
34 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
35 <tbody>
36 <tr>
37 <td class="listing_lines" align="right"><pre>1
38 2
39 3</pre></td>
40 <td class="listing_code"><pre class="programlisting"><span class="symbol">[</span><span class="normal">active</span><span class="symbol">-</span><span class="normal">directory</span><span class="symbol">]</span>
41 <span class="keyword">default</span><span class="symbol">-</span><span class="normal">home </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">home</span><span class="symbol">/%</span><span class="normal">D</span><span class="symbol">/%</span><span class="normal">U</span>
42 <span class="preproc"># default</span><span class="symbol">-</span><span class="normal">home </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">nfs</span><span class="symbol">/</span><span class="normal">home</span><span class="symbol">/%</span><span class="normal">D</span><span class="symbol">-%</span><span class="normal">U</span></pre></td>
43 </tr>
44 </tbody>
45 </table>
46 </div>
47
32 <div class="informalexample"><pre class="programlisting">
33 [users]
34 default-home = /home/%D/%U
35 # default-home = /nfs/home/%D-%U
36 </pre></div>
4837 <p>The default setting for this is <code class="option">/home/%D/%U</code>. The
4938 <code class="option">%D</code> format is replaced by the domain name. In the case of
5039 Active Directory this is the short domain name. The <code class="option">%U</code>
5847 </div>
5948 <div class="section">
6049 <div class="titlepage"><div><div><h3 class="title">
61 <a name="idp8624576"></a>default-shell</h3></div></div></div>
50 <a name="idp9160400"></a>default-shell</h3></div></div></div>
6251 <p>Specify the <code class="option">default-shell</code> setting in
6352 order to control how to set the Unix shell for accounts that
6453 have no shell explicitly set.</p>
65 <div class="informalexample">
66 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
67 <tbody>
68 <tr>
69 <td class="listing_lines" align="right"><pre>1
70 2
71 3</pre></td>
72 <td class="listing_code"><pre class="programlisting"><span class="symbol">[</span><span class="normal">active</span><span class="symbol">-</span><span class="normal">directory</span><span class="symbol">]</span>
73 <span class="keyword">default</span><span class="symbol">-</span><span class="normal">shell </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">bin</span><span class="symbol">/</span><span class="normal">bash</span>
74 <span class="preproc"># default</span><span class="symbol">-</span><span class="normal">shell </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">bin</span><span class="symbol">/</span><span class="normal">sh</span></pre></td>
75 </tr>
76 </tbody>
77 </table>
78 </div>
79
54 <div class="informalexample"><pre class="programlisting">
55 [users]
56 default-shell = /bin/bash
57 # default-shell = /bin/sh
58 </pre></div>
8059 <p>The default setting for this is <code class="option">/bin/bash</code> shell. The
8160 shell should be a valid shell if you expect the domain users be able to log
8261 in. For example it should exist in the <code class="filename">/etc/shells</code> file.</p>
9069 </div>
9170 <div class="footer">
9271 <hr>
93 Generated by GTK-Doc V1.18</div>
72 Generated by GTK-Doc
73 </div>
9474 </body>
95 </html>
75 </html>
55 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
66 <link rel="home" href="index.html" title="realmd">
77 <link rel="up" href="guide.html" title="Part I. Administrative Guide">
8 <link rel="prev" href="guide-freeipa.html" title="Using with other Kerberos realms">
8 <link rel="prev" href="guide-kerberos.html" title="Using with other Kerberos realms">
99 <link rel="next" href="guide-configuring-users.html" title="user">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
15 <td><a accesskey="p" href="guide-freeipa.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
14 <td><a accesskey="p" href="guide-kerberos.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
1615 <td><a accesskey="u" href="guide.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
1716 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
1817 <th width="100%" align="center">realmd</th>
2322 <a name="guide-configuring"></a>Configuring realmd</h2></div></div></div>
2423 <div class="toc"><dl>
2524 <dt><span class="section"><a href="guide-configuring.html#guide-configuring-active-directory">active-directory</a></span></dt>
26 <dd><dl><dt><span class="section"><a href="guide-configuring.html#idp5951456">default-client</a></span></dt></dl></dd>
25 <dd><dl><dt><span class="section"><a href="guide-configuring.html#idp10481264">default-client</a></span></dt></dl></dd>
2726 <dt><span class="section"><a href="guide-configuring-users.html">user</a></span></dt>
2827 <dd><dl>
29 <dt><span class="section"><a href="guide-configuring-users.html#idp5677840">default-home</a></span></dt>
30 <dt><span class="section"><a href="guide-configuring-users.html#idp8624576">default-shell</a></span></dt>
28 <dt><span class="section"><a href="guide-configuring-users.html#idp10210096">default-home</a></span></dt>
29 <dt><span class="section"><a href="guide-configuring-users.html#idp9160400">default-shell</a></span></dt>
3130 </dl></dd>
3231 <dt><span class="section"><a href="guide-configuring-realm.html">Realm specific settings</a></span></dt>
33 <dd><dl><dt><span class="section"><a href="guide-configuring-realm.html#idp8420032">computer-ou</a></span></dt></dl></dd>
32 <dd><dl><dt><span class="section"><a href="guide-configuring-realm.html#idp8241632">computer-ou</a></span></dt></dl></dd>
3433 </dl></div>
3534 <p><span class="command"><strong>realmd</strong></span> can be tweaked by network administrators
3635 to act in specific ways. This is done by placing settings in a
5049 specify the settings you wish to override.</p>
5150 <div class="section">
5251 <div class="titlepage"><div><div><h3 class="title">
53 <a name="idp5951456"></a>default-client</h3></div></div></div>
52 <a name="idp10481264"></a>default-client</h3></div></div></div>
5453 <p>Specify the <code class="option">default-client</code> setting in
5554 order to control which client software is the preferred default
5655 for use with Active Directory.</p>
57 <div class="informalexample">
58 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
59 <tbody>
60 <tr>
61 <td class="listing_lines" align="right"><pre>1
62 2
63 3</pre></td>
64 <td class="listing_code"><pre class="programlisting"><span class="symbol">[</span><span class="normal">active</span><span class="symbol">-</span><span class="normal">directory</span><span class="symbol">]</span>
65 <span class="keyword">default</span><span class="symbol">-</span><span class="normal">client </span><span class="symbol">=</span><span class="normal"> sssd</span>
66 <span class="preproc"># default</span><span class="symbol">-</span><span class="normal">client </span><span class="symbol">=</span><span class="normal"> winbind</span></pre></td>
67 </tr>
68 </tbody>
69 </table>
70 </div>
71
56 <div class="informalexample"><pre class="programlisting">
57 [active-directory]
58 default-client = sssd
59 # default-client = winbind
60 </pre></div>
7261 <p>The default setting for this is
7362 <code class="option">sssd</code> which uses
7463 <a class="ulink" href="https://fedorahosted.org/sssd/" target="_top">SSSD</a> as
10695 </div>
10796 <div class="footer">
10897 <hr>
109 Generated by GTK-Doc V1.18</div>
98 Generated by GTK-Doc
99 </div>
110100 </body>
111 </html>
101 </html>
0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>FreeIPA client software</title>
5 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
6 <link rel="home" href="index.html" title="realmd">
7 <link rel="up" href="guide-freeipa.html" title="Using with FreeIPA">
8 <link rel="prev" href="guide-freeipa.html" title="Using with FreeIPA">
9 <link rel="next" href="guide-freeipa-join.html" title="Joining a FreeIPA domain">
10 <link rel="stylesheet" href="style.css" type="text/css">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
14 <td><a accesskey="p" href="guide-freeipa.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
15 <td><a accesskey="u" href="guide-freeipa.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
16 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
17 <th width="100%" align="center">realmd</th>
18 <td><a accesskey="n" href="guide-freeipa-join.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
19 </tr></table>
20 <div class="section">
21 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
22 <a name="guide-freeipa-client"></a>FreeIPA client software</h2></div></div></div>
23 <p>As part of configuring an FreeIPA domain for use
24 on the local computer, <span class="command"><strong>realmd</strong></span> will install and
25 configure client software to enable domain accounts to be used on
26 the local computer.</p>
27 <p>For a FreeIPA domain this is
28 <a class="ulink" href="https://fedorahosted.org/sssd/" target="_top">SSSD</a>.</p>
29 </div>
30 <div class="footer">
31 <hr>
32 Generated by GTK-Doc
33 </div>
34 </body>
35 </html>
0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>Joining a FreeIPA domain</title>
5 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
6 <link rel="home" href="index.html" title="realmd">
7 <link rel="up" href="guide-freeipa.html" title="Using with FreeIPA">
8 <link rel="prev" href="guide-freeipa-client.html" title="FreeIPA client software">
9 <link rel="next" href="guide-freeipa-permit.html" title="Logins using Domain Accounts">
10 <link rel="stylesheet" href="style.css" type="text/css">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
14 <td><a accesskey="p" href="guide-freeipa-client.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
15 <td><a accesskey="u" href="guide-freeipa.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
16 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
17 <th width="100%" align="center">realmd</th>
18 <td><a accesskey="n" href="guide-freeipa-permit.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
19 </tr></table>
20 <div class="section">
21 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
22 <a name="guide-freeipa-join"></a>Joining a FreeIPA domain</h2></div></div></div>
23 <p>To join a FreeIPA domain with <span class="command"><strong>realmd</strong></span>
24 you can use the <a class="link" href="realm.html" title="realm"><span class="command"><strong>realm</strong></span></a>
25 command line tool:</p>
26 <div class="informalexample"><pre class="screen">
27 $ <span class="command"><strong>realm join --verbose ipa.example.com</strong></span>
28 </pre></div>
29 <p>By specifying the <code class="option">--verbose</code> it's easier
30 to see what went wrong if the join fails.</p>
31 <p>Other tools also use <span class="command"><strong>realmd</strong></span> which can
32 be used to perform the join operation, for example: GNOME
33 Control Center.</p>
34 <p>The join operation does the following:</p>
35 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
36 <li class="listitem"><p>Discovers information about the domain.</p></li>
37 <li class="listitem"><p>Installs the necessary software to join the domain, such as SSSD.</p></li>
38 <li class="listitem"><p>Prompts for administrative credentials.</p></li>
39 <li class="listitem"><p>A computer account in the domain will be created, and or updated.</p></li>
40 <li class="listitem"><p>A host keytab file at <code class="filename">/etc/krb5.keytab</code> is created.</p></li>
41 <li class="listitem"><p>Configures the SSSD service, and restarts and enables it as appropriate.</p></li>
42 <li class="listitem"><p>Enables domain users in <code class="filename">/etc/nsswitch.conf</code></p></li>
43 </ul></div>
44 <p>After the join operation is complete, domain accounts should
45 be usable locally, although logins using domain accounts are
46 not necessarily enabled.</p>
47 <p>You verify that domain accounts are working with with a
48 command like this:</p>
49 <div class="informalexample"><pre class="screen">
50 $ <span class="command"><strong>getent passwd admin@ipa.example.com</strong></span>
51 </pre></div>
52 <p>The join operation will create or update a computer account
53 in the domain.</p>
54 </div>
55 <div class="footer">
56 <hr>
57 Generated by GTK-Doc
58 </div>
59 </body>
60 </html>
0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>Logins using Domain Accounts</title>
5 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
6 <link rel="home" href="index.html" title="realmd">
7 <link rel="up" href="guide-freeipa.html" title="Using with FreeIPA">
8 <link rel="prev" href="guide-freeipa-join.html" title="Joining a FreeIPA domain">
9 <link rel="next" href="guide-kerberos.html" title="Using with other Kerberos realms">
10 <link rel="stylesheet" href="style.css" type="text/css">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
14 <td><a accesskey="p" href="guide-freeipa-join.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
15 <td><a accesskey="u" href="guide-freeipa.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
16 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
17 <th width="100%" align="center">realmd</th>
18 <td><a accesskey="n" href="guide-kerberos.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
19 </tr></table>
20 <div class="section">
21 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
22 <a name="guide-freeipa-permit"></a>Logins using Domain Accounts</h2></div></div></div>
23 <p>Once the
24 <a class="link" href="guide-freeipa-join.html" title="Joining a FreeIPA domain">computer is joined</a>
25 to a FreeIPA domain, the machine will automatically follow the
26 domain settings for whether users are able to log into the
27 machine or not.</p>
28 <p>To override this behavior and permit any domain account
29 to log in, use the following command.</p>
30 <div class="informalexample"><pre class="screen">
31 $ <span class="command"><strong>realm permit --realm domain.example.com --all</strong></span>
32 </pre></div>
33 <p>To permit only specific accounts from the domain to log in
34 use the following command. The first time this command is run
35 it will change the mode to only allow logins by specific accounts,
36 and then add the specified accounts to the list of accounts
37 to permit.</p>
38 <div class="informalexample"><pre class="screen">
39 $ <span class="command"><strong>realm permit --realm domain.example.com user1@ipa.example.com user2@ipa.example.com</strong></span>
40 </pre></div>
41 <p>To deny logins from any domain account, use the following
42 command.</p>
43 <div class="informalexample"><pre class="screen">
44 $ <span class="command"><strong>realm deny --realm domain.example.com --all</strong></span>
45 </pre></div>
46 </div>
47 <div class="footer">
48 <hr>
49 Generated by GTK-Doc
50 </div>
51 </body>
52 </html>
11 <html>
22 <head>
33 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>Using with other Kerberos realms</title>
4 <title>Using with FreeIPA</title>
55 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
66 <link rel="home" href="index.html" title="realmd">
77 <link rel="up" href="guide.html" title="Part I. Administrative Guide">
8 <link rel="prev" href="guide-freeipa.html" title="Using with FreeIPA">
9 <link rel="next" href="guide-configuring.html" title="Configuring realmd">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
8 <link rel="prev" href="guide-active-directory-permit.html" title="Logins using Domain Accounts">
9 <link rel="next" href="guide-freeipa-client.html" title="FreeIPA client software">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
15 <td><a accesskey="p" href="guide-freeipa.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
14 <td><a accesskey="p" href="guide-active-directory-permit.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
1615 <td><a accesskey="u" href="guide.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
1716 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
1817 <th width="100%" align="center">realmd</th>
19 <td><a accesskey="n" href="guide-configuring.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
18 <td><a accesskey="n" href="guide-freeipa-client.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
2019 </tr></table>
2120 <div class="chapter">
2221 <div class="titlepage"><div><div><h2 class="title">
23 <a name="guide-freeipa"></a>Using with other Kerberos realms</h2></div></div></div>
24 <div class="toc"><dl><dt><span class="section"><a href="guide-freeipa.html#idp8469584">Discovering Kerberos realms</a></span></dt></dl></div>
25 <p><span class="command"><strong>realmd</strong></span> can discover generic Kerberos realms.
26 Since there is no standard way to enroll a computer against a Kerberos
27 server, it is not possible to do this with <span class="command"><strong>realmd</strong></span>.</p>
22 <a name="guide-freeipa"></a>Using with FreeIPA</h2></div></div></div>
23 <div class="toc"><dl>
24 <dt><span class="section"><a href="guide-freeipa.html#idp9324656">Discovering FreeIPA domains</a></span></dt>
25 <dt><span class="section"><a href="guide-freeipa-client.html">FreeIPA client software</a></span></dt>
26 <dt><span class="section"><a href="guide-freeipa-join.html">Joining a FreeIPA domain</a></span></dt>
27 <dt><span class="section"><a href="guide-freeipa-permit.html">Logins using Domain Accounts</a></span></dt>
28 </dl></div>
29 <p><span class="command"><strong>realmd</strong></span> can discover FreeIPA domains and join
30 the current computer as an account on a domain. This allows using domain
31 users locally, and log into the local machine with FreeIPA domain
32 credentials.</p>
2833 <div class="section">
2934 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
30 <a name="idp8469584"></a>Discovering Kerberos realms</h2></div></div></div>
35 <a name="idp9324656"></a>Discovering FreeIPA domains</h2></div></div></div>
3136 <p><span class="command"><strong>realmd</strong></span> discovers which domains or
3237 realms it can use or configure. It can discover and identify
33 Kerberos domains by looking up the appropriate DNS SRV
34 records.</p>
35 <p>The following DNS SRV record is required to be present
38 FreeIPA domains by looking up the appropriate DNS SRV
39 records and by connecting to the server and retrieving
40 its TLS certificate.</p>
41 <p>The following DNS SRV records are required to be present
3642 for <span class="command"><strong>realmd</strong></span> to identify a provided realm as
37 a Kerberos domain.</p>
43 an Kerberos domain.</p>
3844 <div class="informalexample"><pre class="screen">
39 # In this example the Kerberos domain is 'domain.example.com'
45 # In this example the FreeIPA domain is 'domain.example.com'
4046 <span class="emphasis"><em>_kerberos._udp.</em></span>domain.example.com.
4147 </pre></div>
48 <p>In addition <span class="command"><strong>realmd</strong></span> connects to the first
49 three KDC's listed and tests if they are FreeIPA servers. It
50 does this by connecting via HTTPS and retrieving their certificate
51 from the <code class="filename">/ipa/config/ca.crt</code> location. It
52 compares this certificate with the one being used on KDC HTTPS
53 server. If they match the domain is treated as a FreeIPA domain.</p>
54 <p>To see how <span class="command"><strong>realmd</strong></span> is discovering a
55 particular domain name, try a command like the following. Using
56 the <code class="option">--verbose</code> argument displays verbose
57 discovery information.</p>
4258 <div class="informalexample"><pre class="screen">
4359 $ <span class="command"><strong>realm --verbose discover domain.example.com</strong></span>
44 * Searching for kerberos SRV records for domain: _kerberos._udp.domain.example.com
45 * Searching for MSDCS SRV records on domain: _kerberos._tcp.dc._msdcs.domain.example.com
60 * Searching for kerberos SRV records for domain: _kerberos._udp.ipa.thewalter.lan
61 * Searching for MSDCS SRV records on domain: _kerberos._tcp.dc._msdcs.ipa.thewalter.lan
4662 * dc.domain.example.com:88
4763 * Trying to retrieve IPA certificate from dc.domain.example.com
48 ! Couldn't read certificate via HTTP: No PEM-encoded certificate found
49 ! Couldn't discover IPA KDC: No PEM-encoded certificate found
64 * Retrieved IPA CA certificate verifies the HTTPS connection
5065 * Found kerberos DNS records for: domain.example.com
66 * Found IPA style certificate for: domain.example.com
5167 * Successfully discovered: domain.example.com
5268 ...
5369 </pre></div>
5571 </div>
5672 <div class="footer">
5773 <hr>
58 Generated by GTK-Doc V1.18</div>
74 Generated by GTK-Doc
75 </div>
5976 </body>
60 </html>
77 </html>
77 <link rel="up" href="guide.html" title="Part I. Administrative Guide">
88 <link rel="prev" href="guide-configuring-realm.html" title="Realm specific settings">
99 <link rel="next" href="development.html" title="Part II. Developer Reference">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
1817 <th width="100%" align="center">realmd</th>
1918 <td><a accesskey="n" href="development.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
2019 </tr></table>
21 <div class="chapter"><div class="titlepage"><div><div><h2 class="title">
22 <a name="guide-integration"></a>Integration</h2></div></div></div></div>
20 <div class="chapter">
21 <div class="titlepage"><div><div><h2 class="title">
22 <a name="guide-integration"></a>Integration</h2></div></div></div>
23 <p>Not yet written</p>
24 </div>
2325 <div class="footer">
2426 <hr>
25 Generated by GTK-Doc V1.18</div>
27 Generated by GTK-Doc
28 </div>
2629 </body>
27 </html>
30 </html>
0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <title>Using with other Kerberos realms</title>
5 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
6 <link rel="home" href="index.html" title="realmd">
7 <link rel="up" href="guide.html" title="Part I. Administrative Guide">
8 <link rel="prev" href="guide-freeipa-permit.html" title="Logins using Domain Accounts">
9 <link rel="next" href="guide-configuring.html" title="Configuring realmd">
10 <link rel="stylesheet" href="style.css" type="text/css">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
14 <td><a accesskey="p" href="guide-freeipa-permit.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
15 <td><a accesskey="u" href="guide.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
16 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
17 <th width="100%" align="center">realmd</th>
18 <td><a accesskey="n" href="guide-configuring.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
19 </tr></table>
20 <div class="chapter">
21 <div class="titlepage"><div><div><h2 class="title">
22 <a name="guide-kerberos"></a>Using with other Kerberos realms</h2></div></div></div>
23 <div class="toc"><dl><dt><span class="section"><a href="guide-kerberos.html#idp7957184">Discovering Kerberos realms</a></span></dt></dl></div>
24 <p><span class="command"><strong>realmd</strong></span> can discover generic Kerberos realms.
25 Since there is no standard way to enroll a computer against a Kerberos
26 server, it is not possible to do this with <span class="command"><strong>realmd</strong></span>.</p>
27 <div class="section">
28 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
29 <a name="idp7957184"></a>Discovering Kerberos realms</h2></div></div></div>
30 <p><span class="command"><strong>realmd</strong></span> discovers which domains or
31 realms it can use or configure. It can discover and identify
32 Kerberos domains by looking up the appropriate DNS SRV
33 records.</p>
34 <p>The following DNS SRV record is required to be present
35 for <span class="command"><strong>realmd</strong></span> to identify a provided realm as
36 a Kerberos domain.</p>
37 <div class="informalexample"><pre class="screen">
38 # In this example the Kerberos domain is 'domain.example.com'
39 <span class="emphasis"><em>_kerberos._udp.</em></span>domain.example.com.
40 </pre></div>
41 <div class="informalexample"><pre class="screen">
42 $ <span class="command"><strong>realm --verbose discover domain.example.com</strong></span>
43 * Searching for kerberos SRV records for domain: _kerberos._udp.domain.example.com
44 * Searching for MSDCS SRV records on domain: _kerberos._tcp.dc._msdcs.domain.example.com
45 * dc.domain.example.com:88
46 * Trying to retrieve IPA certificate from dc.domain.example.com
47 ! Couldn't read certificate via HTTP: No PEM-encoded certificate found
48 ! Couldn't discover IPA KDC: No PEM-encoded certificate found
49 * Found kerberos DNS records for: domain.example.com
50 * Successfully discovered: domain.example.com
51 ...
52 </pre></div>
53 </div>
54 </div>
55 <div class="footer">
56 <hr>
57 Generated by GTK-Doc
58 </div>
59 </body>
60 </html>
77 <link rel="up" href="index.html" title="realmd">
88 <link rel="prev" href="index.html" title="realmd">
99 <link rel="next" href="realm-manual.html" title="Command manual pages">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
3332 <dt><span class="section"><a href="guide-active-directory.html#guide-active-directory-discover">Discovering Active Directory domains</a></span></dt>
3433 <dt><span class="section"><a href="guide-active-directory-client.html">Active Directory client software</a></span></dt>
3534 <dd><dl>
36 <dt><span class="section"><a href="guide-active-directory-client.html#idp7085344">Using SSSD with Active Directory</a></span></dt>
37 <dt><span class="section"><a href="guide-active-directory-client.html#idp6195920">Using Winbind with Active Directory</a></span></dt>
35 <dt><span class="section"><a href="guide-active-directory-client.html#idp6975760">Using SSSD with Active Directory</a></span></dt>
36 <dt><span class="section"><a href="guide-active-directory-client.html#idp8187936">Using Winbind with Active Directory</a></span></dt>
3837 </dl></dd>
3938 <dt><span class="section"><a href="guide-active-directory-join.html">Joining an Active Directory domain</a></span></dt>
4039 <dt><span class="section"><a href="guide-active-directory-permit.html">Logins using Domain Accounts</a></span></dt>
4140 </dl></dd>
4241 <dt><span class="chapter"><a href="guide-freeipa.html">Using with FreeIPA</a></span></dt>
43 <dd><dl><dt><span class="section"><a href="guide-freeipa.html#idp7845984">Discovering FreeIPA domains</a></span></dt></dl></dd>
44 <dt><span class="chapter"><a href="guide-freeipa.html">Using with other Kerberos realms</a></span></dt>
45 <dd><dl><dt><span class="section"><a href="guide-freeipa.html#idp8469584">Discovering Kerberos realms</a></span></dt></dl></dd>
42 <dd><dl>
43 <dt><span class="section"><a href="guide-freeipa.html#idp9324656">Discovering FreeIPA domains</a></span></dt>
44 <dt><span class="section"><a href="guide-freeipa-client.html">FreeIPA client software</a></span></dt>
45 <dt><span class="section"><a href="guide-freeipa-join.html">Joining a FreeIPA domain</a></span></dt>
46 <dt><span class="section"><a href="guide-freeipa-permit.html">Logins using Domain Accounts</a></span></dt>
47 </dl></dd>
48 <dt><span class="chapter"><a href="guide-kerberos.html">Using with other Kerberos realms</a></span></dt>
49 <dd><dl><dt><span class="section"><a href="guide-kerberos.html#idp7957184">Discovering Kerberos realms</a></span></dt></dl></dd>
4650 <dt><span class="chapter"><a href="guide-configuring.html">Configuring realmd</a></span></dt>
4751 <dd><dl>
4852 <dt><span class="section"><a href="guide-configuring.html#guide-configuring-active-directory">active-directory</a></span></dt>
49 <dd><dl><dt><span class="section"><a href="guide-configuring.html#idp5951456">default-client</a></span></dt></dl></dd>
53 <dd><dl><dt><span class="section"><a href="guide-configuring.html#idp10481264">default-client</a></span></dt></dl></dd>
5054 <dt><span class="section"><a href="guide-configuring-users.html">user</a></span></dt>
5155 <dd><dl>
52 <dt><span class="section"><a href="guide-configuring-users.html#idp5677840">default-home</a></span></dt>
53 <dt><span class="section"><a href="guide-configuring-users.html#idp8624576">default-shell</a></span></dt>
56 <dt><span class="section"><a href="guide-configuring-users.html#idp10210096">default-home</a></span></dt>
57 <dt><span class="section"><a href="guide-configuring-users.html#idp9160400">default-shell</a></span></dt>
5458 </dl></dd>
5559 <dt><span class="section"><a href="guide-configuring-realm.html">Realm specific settings</a></span></dt>
56 <dd><dl><dt><span class="section"><a href="guide-configuring-realm.html#idp8420032">computer-ou</a></span></dt></dl></dd>
60 <dd><dl><dt><span class="section"><a href="guide-configuring-realm.html#idp8241632">computer-ou</a></span></dt></dl></dd>
5761 </dl></dd>
5862 <dt><span class="chapter"><a href="guide-integration.html">Integration</a></span></dt>
5963 </dl>
6165 </div>
6266 <div class="footer">
6367 <hr>
64 Generated by GTK-Doc V1.18</div>
68 Generated by GTK-Doc
69 </div>
6570 </body>
66 </html>
71 </html>
+0
-105
doc/manual/html/html.css less more
0 @import url("style.css");
1
2 TABLE.navigation {
3 background-color: #238b49 !important;
4 border-width: 0 !important;
5 color: white;
6 font-family: Georgia, "Times New Roman", Times, serif;
7 height: 4em !important;
8 }
9
10 TABLE.navigation TH {
11 font-size: 30pt !important;
12 font-weight: normal;
13 text-align: left !important;
14 padding-left: 10pt;
15 }
16
17 TABLE.navigation TH:first-child {
18 padding-left: 40pt;
19 }
20
21 .shortcuts {
22 color: white !important;
23 }
24
25 .shortcuts a {
26 color: white !important;
27 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
28 }
29
30 P.title {
31 font-size: 30pt !important;
32 }
33
34 BODY {
35 padding-top: 5.5em !important;
36 margin: 0px;
37 }
38
39
40 /* Target all Firefox, since firefox has bug wrt TABLE + position: fixed */
41 @-moz-document url-prefix() {
42 TABLE.navigation { position: static !important; }
43 BODY { padding-top: 0 !important; }
44 }
45
46 DIV.book,
47 DIV.refentry,
48 DIV.chapter,
49 DIV.index,
50 DIV.footer,
51 DIV.section,
52 DIV.part {
53 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
54 font-size: 9.5pt;
55 line-height: 150%;
56 }
57
58 BODY > DIV.book,
59 BODY > DIV.footer {
60 margin-left: 1em;
61 margin-right: 1em;
62 }
63
64 BODY > DIV.refentry,
65 BODY > DIV.chapter,
66 BODY > DIV.index,
67 BODY > DIV.section {
68 margin-left: 3em;
69 margin-right: 1em;
70 }
71
72 DIV.variablelist TABLE {
73 font-size: 9.5pt;
74 line-height: 150%;
75 }
76
77 DIV.refsect1,
78 DIV.refsect2,
79 DIV.refsynopsisdiv {
80 margin-bottom: 3em !important;
81 }
82
83 H2 {
84 position: relative;
85 left: -1em;
86 font-weight: normal !important;
87 }
88
89 H3 {
90 position: relative;
91 left: -1em;
92 font-weight: normal !important;
93 }
94
95 DD > DL {
96 margin-top: 0.3em;
97 margin-bottom: 0.3em;
98 }
99
100 PRE.screen {
101 border: solid 1px #729fcf;
102 padding: 0.5em;
103 background: #e6f3ff;
104 }
55 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
66 <link rel="home" href="index.html" title="realmd">
77 <link rel="next" href="guide.html" title="Part I. Administrative Guide">
8 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
9 <link rel="stylesheet" href="html.css" type="text/css">
8 <link rel="stylesheet" href="style.css" type="text/css">
109 </head>
1110 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1211 <div class="book">
1312 <div class="titlepage">
1413 <div>
1514 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">realmd</p></th></tr></table></div>
16 <div><p class="releaseinfo">for 0.11.90
15 <div><p class="releaseinfo">for 0.12
1716 </p></div>
1817 </div>
1918 <hr>
3029 <dt><span class="section"><a href="guide-active-directory.html#guide-active-directory-discover">Discovering Active Directory domains</a></span></dt>
3130 <dt><span class="section"><a href="guide-active-directory-client.html">Active Directory client software</a></span></dt>
3231 <dd><dl>
33 <dt><span class="section"><a href="guide-active-directory-client.html#idp7085344">Using SSSD with Active Directory</a></span></dt>
34 <dt><span class="section"><a href="guide-active-directory-client.html#idp6195920">Using Winbind with Active Directory</a></span></dt>
32 <dt><span class="section"><a href="guide-active-directory-client.html#idp6975760">Using SSSD with Active Directory</a></span></dt>
33 <dt><span class="section"><a href="guide-active-directory-client.html#idp8187936">Using Winbind with Active Directory</a></span></dt>
3534 </dl></dd>
3635 <dt><span class="section"><a href="guide-active-directory-join.html">Joining an Active Directory domain</a></span></dt>
3736 <dt><span class="section"><a href="guide-active-directory-permit.html">Logins using Domain Accounts</a></span></dt>
3837 </dl></dd>
3938 <dt><span class="chapter"><a href="guide-freeipa.html">Using with FreeIPA</a></span></dt>
40 <dd><dl><dt><span class="section"><a href="guide-freeipa.html#idp7845984">Discovering FreeIPA domains</a></span></dt></dl></dd>
41 <dt><span class="chapter"><a href="guide-freeipa.html">Using with other Kerberos realms</a></span></dt>
42 <dd><dl><dt><span class="section"><a href="guide-freeipa.html#idp8469584">Discovering Kerberos realms</a></span></dt></dl></dd>
39 <dd><dl>
40 <dt><span class="section"><a href="guide-freeipa.html#idp9324656">Discovering FreeIPA domains</a></span></dt>
41 <dt><span class="section"><a href="guide-freeipa-client.html">FreeIPA client software</a></span></dt>
42 <dt><span class="section"><a href="guide-freeipa-join.html">Joining a FreeIPA domain</a></span></dt>
43 <dt><span class="section"><a href="guide-freeipa-permit.html">Logins using Domain Accounts</a></span></dt>
44 </dl></dd>
45 <dt><span class="chapter"><a href="guide-kerberos.html">Using with other Kerberos realms</a></span></dt>
46 <dd><dl><dt><span class="section"><a href="guide-kerberos.html#idp7957184">Discovering Kerberos realms</a></span></dt></dl></dd>
4347 <dt><span class="chapter"><a href="guide-configuring.html">Configuring realmd</a></span></dt>
4448 <dd><dl>
4549 <dt><span class="section"><a href="guide-configuring.html#guide-configuring-active-directory">active-directory</a></span></dt>
46 <dd><dl><dt><span class="section"><a href="guide-configuring.html#idp5951456">default-client</a></span></dt></dl></dd>
50 <dd><dl><dt><span class="section"><a href="guide-configuring.html#idp10481264">default-client</a></span></dt></dl></dd>
4751 <dt><span class="section"><a href="guide-configuring-users.html">user</a></span></dt>
4852 <dd><dl>
49 <dt><span class="section"><a href="guide-configuring-users.html#idp5677840">default-home</a></span></dt>
50 <dt><span class="section"><a href="guide-configuring-users.html#idp8624576">default-shell</a></span></dt>
53 <dt><span class="section"><a href="guide-configuring-users.html#idp10210096">default-home</a></span></dt>
54 <dt><span class="section"><a href="guide-configuring-users.html#idp9160400">default-shell</a></span></dt>
5155 </dl></dd>
5256 <dt><span class="section"><a href="guide-configuring-realm.html">Realm specific settings</a></span></dt>
53 <dd><dl><dt><span class="section"><a href="guide-configuring-realm.html#idp8420032">computer-ou</a></span></dt></dl></dd>
57 <dd><dl><dt><span class="section"><a href="guide-configuring-realm.html#idp8241632">computer-ou</a></span></dt></dl></dd>
5458 </dl></dd>
5559 <dt><span class="chapter"><a href="guide-integration.html">Integration</a></span></dt>
5660 </dl></dd>
8084 </div>
8185 <div class="footer">
8286 <hr>
83 Generated by GTK-Doc V1.18</div>
87 Generated by GTK-Doc
88 </div>
8489 </body>
85 </html>
90 </html>
0 <ANCHOR id="realm" href="realmd/realm.html">
1 <ANCHOR id="gdbus-org.freedesktop.realmd.Provider" href="realmd/gdbus-org.freedesktop.realmd.Provider.html">
2 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Provider" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-interface-org-freedesktop-realmd-Provider">
3 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.Provider" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-methods-org.freedesktop.realmd.Provider">
4 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Provider.Discover" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-method-org-freedesktop-realmd-Provider.Discover">
5 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.Provider" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-properties-org.freedesktop.realmd.Provider">
6 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Provider.Name" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Name">
7 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Provider.Version" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Version">
8 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Provider.Realms" href="realmd/gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Realms">
9 <ANCHOR id="gdbus-org.freedesktop.realmd.Realm" href="realmd/gdbus-org.freedesktop.realmd.Realm.html">
10 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Realm" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-interface-org-freedesktop-realmd-Realm">
11 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.Realm" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-methods-org.freedesktop.realmd.Realm">
12 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">
13 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">
14 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.Realm" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-properties-org.freedesktop.realmd.Realm">
15 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.Name" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Name">
16 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.Configured" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Configured">
17 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">
18 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.Details" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Details">
19 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages">
20 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.LoginFormats" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginFormats">
21 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">
22 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins" href="realmd/gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">
23 <ANCHOR id="gdbus-org.freedesktop.realmd.Kerberos" href="realmd/gdbus-org.freedesktop.realmd.Kerberos.html">
24 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Kerberos" href="realmd/gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos">
25 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.Kerberos" href="realmd/gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-properties-org.freedesktop.realmd.Kerberos">
26 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Kerberos.RealmName" href="realmd/gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.RealmName">
27 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Kerberos.DomainName" href="realmd/gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.DomainName">
28 <ANCHOR id="gdbus-org.freedesktop.realmd.KerberosMembership" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html">
29 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-KerberosMembership" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-interface-org-freedesktop-realmd-KerberosMembership">
30 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.KerberosMembership" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-methods-org.freedesktop.realmd.KerberosMembership">
31 <ANCHOR id="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">
32 <ANCHOR id="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">
33 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.KerberosMembership" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-properties-org.freedesktop.realmd.KerberosMembership">
34 <ANCHOR id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator">
35 <ANCHOR id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials">
36 <ANCHOR id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials" href="realmd/gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials">
37 <ANCHOR id="gdbus-org.freedesktop.realmd.Service" href="realmd/gdbus-org.freedesktop.realmd.Service.html">
38 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Service" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-interface-org-freedesktop-realmd-Service">
39 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.Service" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-methods-org.freedesktop.realmd.Service">
40 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Service.Cancel" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel">
41 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Service.SetLocale" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.SetLocale">
42 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Service.Release" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Release">
43 <ANCHOR id="gdbus-signals-org.freedesktop.realmd.Service" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-signals-org.freedesktop.realmd.Service">
44 <ANCHOR id="gdbus-signal-org-freedesktop-realmd-Service.Diagnostics" href="realmd/gdbus-org.freedesktop.realmd.Service.html#gdbus-signal-org-freedesktop-realmd-Service.Diagnostics">
0 <ANCHOR id="realm" href="realm.html">
1 <ANCHOR id="gdbus-org.freedesktop.realmd.Provider" href="gdbus-org.freedesktop.realmd.Provider.html">
2 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Provider" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-interface-org-freedesktop-realmd-Provider">
3 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.Provider" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-methods-org.freedesktop.realmd.Provider">
4 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Provider.Discover" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-method-org-freedesktop-realmd-Provider.Discover">
5 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.Provider" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-properties-org.freedesktop.realmd.Provider">
6 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Provider.Name" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Name">
7 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Provider.Version" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Version">
8 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Provider.Realms" href="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Realms">
9 <ANCHOR id="gdbus-org.freedesktop.realmd.Realm" href="gdbus-org.freedesktop.realmd.Realm.html">
10 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Realm" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-interface-org-freedesktop-realmd-Realm">
11 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.Realm" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-methods-org.freedesktop.realmd.Realm">
12 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">
13 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">
14 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.Realm" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-properties-org.freedesktop.realmd.Realm">
15 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.Name" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Name">
16 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.Configured" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Configured">
17 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">
18 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.Details" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Details">
19 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages">
20 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.LoginFormats" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginFormats">
21 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">
22 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins" href="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">
23 <ANCHOR id="gdbus-org.freedesktop.realmd.Kerberos" href="gdbus-org.freedesktop.realmd.Kerberos.html">
24 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Kerberos" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-interface-org-freedesktop-realmd-Kerberos">
25 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.Kerberos" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-properties-org.freedesktop.realmd.Kerberos">
26 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Kerberos.RealmName" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.RealmName">
27 <ANCHOR id="gdbus-property-org-freedesktop-realmd-Kerberos.DomainName" href="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.DomainName">
28 <ANCHOR id="gdbus-org.freedesktop.realmd.KerberosMembership" href="gdbus-org.freedesktop.realmd.KerberosMembership.html">
29 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-KerberosMembership" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-interface-org-freedesktop-realmd-KerberosMembership">
30 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.KerberosMembership" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-methods-org.freedesktop.realmd.KerberosMembership">
31 <ANCHOR id="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">
32 <ANCHOR id="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">
33 <ANCHOR id="gdbus-properties-org.freedesktop.realmd.KerberosMembership" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-properties-org.freedesktop.realmd.KerberosMembership">
34 <ANCHOR id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator">
35 <ANCHOR id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials">
36 <ANCHOR id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials" href="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials">
37 <ANCHOR id="gdbus-org.freedesktop.realmd.Service" href="gdbus-org.freedesktop.realmd.Service.html">
38 <ANCHOR id="gdbus-interface-org-freedesktop-realmd-Service" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-interface-org-freedesktop-realmd-Service">
39 <ANCHOR id="gdbus-methods-org.freedesktop.realmd.Service" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-methods-org.freedesktop.realmd.Service">
40 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Service.Cancel" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel">
41 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Service.SetLocale" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.SetLocale">
42 <ANCHOR id="gdbus-method-org-freedesktop-realmd-Service.Release" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Release">
43 <ANCHOR id="gdbus-signals-org.freedesktop.realmd.Service" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-signals-org.freedesktop.realmd.Service">
44 <ANCHOR id="gdbus-signal-org-freedesktop-realmd-Service.Diagnostics" href="gdbus-org.freedesktop.realmd.Service.html#gdbus-signal-org-freedesktop-realmd-Service.Diagnostics">
77 <link rel="up" href="guide.html" title="Part I. Administrative Guide">
88 <link rel="prev" href="guide.html" title="Part I. Administrative Guide">
99 <link rel="next" href="realm.html" title="realm">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
2726 </div>
2827 <div class="footer">
2928 <hr>
30 Generated by GTK-Doc V1.18</div>
29 Generated by GTK-Doc
30 </div>
3131 </body>
32 </html>
32 </html>
77 <link rel="up" href="realm-manual.html" title="Command manual pages">
88 <link rel="prev" href="realm-manual.html" title="Command manual pages">
99 <link rel="next" href="guide-active-directory.html" title="Using with Active Directory">
10 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
11 <link rel="stylesheet" href="html.css" type="text/css">
10 <link rel="stylesheet" href="style.css" type="text/css">
1211 </head>
1312 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
1413 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
2928 </tr></table></div>
3029 <div class="refsynopsisdiv">
3130 <h2>Synopsis</h2>
32 <div class="cmdsynopsis"><p><code class="command">realm discover -v [realm-name]</code> </p></div>
33 <div class="cmdsynopsis"><p><code class="command">realm join -v [-U user] [realm-name]</code> </p></div>
34 <div class="cmdsynopsis"><p><code class="command">realm leave -v [-U user] [realm-name]</code> </p></div>
31 <div class="cmdsynopsis"><p><code class="command">realm discover</code> [realm-name]</p></div>
32 <div class="cmdsynopsis"><p><code class="command">realm join</code> [-U user] [realm-name]</p></div>
33 <div class="cmdsynopsis"><p><code class="command">realm leave</code> [-U user] [realm-name]</p></div>
3534 <div class="cmdsynopsis"><p><code class="command">realm list</code> </p></div>
36 <div class="cmdsynopsis"><p><code class="command">realm permit [-a] [-R realm] {user} ...</code> </p></div>
37 <div class="cmdsynopsis"><p><code class="command">realm deny [-a] [-R realm] {user} ...</code> </p></div>
38 </div>
39 <div class="refsect1">
40 <a name="idp7639472"></a><h2>Description</h2>
35 <div class="cmdsynopsis"><p><code class="command">realm permit</code> [-a] [-R realm] {user...}</p></div>
36 <div class="cmdsynopsis"><p><code class="command">realm deny</code> [-a] [-R realm] {user...}</p></div>
37 </div>
38 <div class="refsect1">
39 <a name="idp7728688"></a><h2>Description</h2>
4140 <p><span class="command"><strong>realm</strong></span> is a command line tool that
4241 can be used to manage enrollment in kerberos realms, like Active
4342 Directory domains or IPA domains.</p>
6665 </table></div>
6766 </div>
6867 <div class="refsect1">
69 <a name="idp7645744"></a><h2>Discover</h2>
68 <a name="idp7734960"></a><h2>Discover</h2>
7069 <p>Discover a realm and its capabilities.</p>
7170 <div class="informalexample">
7271 <pre class="programlisting">
9695 </tr>
9796 <tr>
9897 <td><p><span class="term"><code class="option">--server-software=xxx</code></span></p></td>
99 <td><p>Only discover realms for run the
98 <td><p>Only discover realms which run the
10099 given server software. Possible values include
101100 <em class="replaceable"><code>active-directory</code></em> or
102101 <em class="replaceable"><code>freeipa</code></em>.</p></td>
103102 </tr>
104 </tbody>
105 </table></div>
106 </div>
107 <div class="refsect1">
108 <a name="idp7655744"></a><h2>Join</h2>
103 <tr>
104 <td><p><span class="term"><code class="option">--membership-software=xxx</code></span></p></td>
105 <td><p>Only discover realms for which the given
106 membership software can be used to subsequently perform enrollment.
107 Possible values include <em class="replaceable"><code>samba</code></em> or
108 <em class="replaceable"><code>adcli</code></em>. </p></td>
109 </tr>
110 </tbody>
111 </table></div>
112 </div>
113 <div class="refsect1">
114 <a name="idp7747616"></a><h2>Join</h2>
109115 <p>Configure the local machine for use with a realm.</p>
110116 <div class="informalexample">
111117 <pre class="programlisting">
124130 <p>Joining arbitrary kerberos realms is not supported. The realm
125131 must have a supported mechanism for joining from a client machine, such
126132 as Active Directory or FreeIPA.</p>
127 <p>Unless a [--user] is explicitly specified, then if
128 possible, an automatic join is attempted first.</p>
129 <p>The following options can be used:</p>
130 <div class="variablelist"><table border="0" class="variablelist">
131 <colgroup>
132 <col align="left" valign="top">
133 <col>
134 </colgroup>
135 <tbody>
133 <p>Unless a <code class="literal">--user</code> is explicitly specified, an automatic join is attempted first.</p>
134 <p>Note that the <code class="literal">--user </code>, <code class="literal">--no-password</code>,
135 and <code class="literal">--one-time-password </code> options are mutually exclusive.
136 At most one of them can be specified.</p>
137 <p>The following options can be used:</p>
138 <div class="variablelist"><table border="0" class="variablelist">
139 <colgroup>
140 <col align="left" valign="top">
141 <col>
142 </colgroup>
143 <tbody>
144 <tr>
145 <td><p><span class="term"><code class="option">--user=xxx</code></span></p></td>
146 <td><p>The user name to be used to authenticate
147 with when joining the machine to the realm. You will
148 be prompted for a password.</p></td>
149 </tr>
150 <tr>
151 <td><p><span class="term"><code class="option">--computer-ou=OU=xxx</code></span></p></td>
152 <td><p>The distinguished name of an organizational
153 unit to create the computer account. The exact format
154 of the distinguished name depends on the client software
155 and membership software. You can usually omit the root
156 DSE portion of distinguished name.</p></td>
157 </tr>
158 <tr>
159 <td><p><span class="term"><code class="option">--no-password</code></span></p></td>
160 <td><p>Perform the join automatically without
161 a password.</p></td>
162 </tr>
163 <tr>
164 <td><p><span class="term"><code class="option">--one-time-password=xxxx</code></span></p></td>
165 <td><p>Perform the join using a one time password
166 specified on the command line. This is not possible with
167 all types of realms.</p></td>
168 </tr>
136169 <tr>
137170 <td><p><span class="term"><code class="option">--client-software=xxx</code></span></p></td>
138171 <td><p>Only join realms for which we can
143176 is automatically selected.</p></td>
144177 </tr>
145178 <tr>
146 <td><p><span class="term"><code class="option">--computer-ou=OU=xxx</code></span></p></td>
147 <td><p>The distinguished name of an organizational
148 unit to create the computer account. The exact format
149 of the distinguished name depends on the client software
150 and membership software. You can usually omit the root
151 DSE portion of distinguished name.</p></td>
179 <td><p><span class="term"><code class="option">--server-software=xxx</code></span></p></td>
180 <td><p>Only join realms for run the
181 given server software. Possible values include
182 <em class="replaceable"><code>active-directory</code></em> or
183 <em class="replaceable"><code>freeipa</code></em>.</p></td>
152184 </tr>
153185 <tr>
154186 <td><p><span class="term"><code class="option">--membership-software=xxx</code></span></p></td>
158190 supported for all realms. By default the membership software
159191 is automatically selected.</p></td>
160192 </tr>
161 <tr>
162 <td><p><span class="term"><code class="option">--one-time-password=xxxx</code></span></p></td>
163 <td><p>Perform the join using a one time password
164 specified on the command line. This is not possible with
165 all types of realms.</p></td>
166 </tr>
167 <tr>
168 <td><p><span class="term"><code class="option">--server-software=xxx</code></span></p></td>
169 <td><p>Only join realms for run the
170 given server software. Possible values include
171 <em class="replaceable"><code>active-directory</code></em> or
172 <em class="replaceable"><code>freeipa</code></em>.</p></td>
173 </tr>
174 <tr>
175 <td><p><span class="term"><code class="option">--user</code></span></p></td>
176 <td><p>The user name to be used to authenticate
177 with when joining the machine to the realm. You will
178 be prompted for a password.</p></td>
179 </tr>
180 </tbody>
181 </table></div>
182 </div>
183 <div class="refsect1">
184 <a name="idp7676592"></a><h2>Leave</h2>
193 </tbody>
194 </table></div>
195 </div>
196 <div class="refsect1">
197 <a name="idp7772336"></a><h2>Leave</h2>
185198 <p>Deconfigure the local machine for use with a realm.</p>
186199 <div class="informalexample">
187200 <pre class="programlisting">
230243 </table></div>
231244 </div>
232245 <div class="refsect1">
233 <a name="idp7690256"></a><h2>List</h2>
246 <a name="idp7786000"></a><h2>List</h2>
234247 <p>List all the discovered and configured realms.</p>
235 <div class="informalexample">
236 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
237 <tbody>
238 <tr>
239 <td class="listing_lines" align="right"><pre>1</pre></td>
240 <td class="listing_code"><pre class="programlisting"><span class="normal">$ realm list</span></pre></td>
241 </tr>
242 </tbody>
243 </table>
244 </div>
245
246 </div>
247 <div class="refsect1">
248 <a name="idp7692736"></a><h2>Permit</h2>
248 <div class="informalexample"><pre class="programlisting">
249 $ realm list
250 </pre></div>
251 <p>By default, realms that have been discovered, but not configured (using
252 the <code class="option">join</code> command), are not displayed. Also, by default, the
253 list of realm details displayed is verbose. The options below can be used to
254 change this default behavior</p>
255 <p>The following options can be used:</p>
256 <div class="variablelist"><table border="0" class="variablelist">
257 <colgroup>
258 <col align="left" valign="top">
259 <col>
260 </colgroup>
261 <tbody>
262 <tr>
263 <td><p><span class="term"><code class="option">--all</code></span></p></td>
264 <td><p>Show all discovered realms (whether or not
265 they have been configured). </p></td>
266 </tr>
267 <tr>
268 <td><p><span class="term"><code class="option">--name-only</code></span></p></td>
269 <td><p>Display only realm names (as opposed to
270 verbose output).</p></td>
271 </tr>
272 </tbody>
273 </table></div>
274 </div>
275 <div class="refsect1">
276 <a name="idp7793728"></a><h2>Permit</h2>
249277 <p>Permit local login by users of the realm.</p>
250278 <div class="informalexample">
251279 <pre class="programlisting">
280308 </table></div>
281309 </div>
282310 <div class="refsect1">
283 <a name="idp7701696"></a><h2>Deny</h2>
311 <a name="idp7802688"></a><h2>Deny</h2>
284312 <p>Deny local login by users of the realm.</p>
285313 <div class="informalexample">
286314 <pre class="programlisting">
303331 <tbody>
304332 <tr>
305333 <td><p><span class="term"><code class="option">--all, -a</code></span></p></td>
306 <td><p>Deny login by any validuser of the
334 <td><p>Deny login by any valid user of the
307335 realm.</p></td>
308336 </tr>
309337 <tr>
317345 </div>
318346 <div class="footer">
319347 <hr>
320 Generated by GTK-Doc V1.18</div>
348 Generated by GTK-Doc
349 </div>
321350 </body>
322 </html>
351 </html>
+0
-76
doc/manual/html/realmd.devhelp2 less more
0 <?xml version="1.0" encoding="utf-8" standalone="no"?>
1 <!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
2 <book xmlns="http://www.devhelp.net/book" title="realmd" link="index.html" author="" name="realmd" version="2" language="c">
3 <chapters>
4 <sub name="Administrative Guide" link="guide.html">
5 <sub name="Command manual pages" link="realm-manual.html">
6 <sub name="realm" link="realm.html"/>
7 </sub>
8 <sub name="Using with Active Directory" link="guide-active-directory.html">
9 <sub name="Discovering Active Directory domains" link="guide-active-directory.html#guide-active-directory-discover"/>
10 <sub name="Active Directory client software" link="guide-active-directory-client.html">
11 <sub name="Using SSSD with Active Directory" link="guide-active-directory-client.html#idp7085344"/>
12 <sub name="Using Winbind with Active Directory" link="guide-active-directory-client.html#idp6195920"/>
13 </sub>
14 <sub name="Joining an Active Directory domain" link="guide-active-directory-join.html"/>
15 <sub name="Logins using Domain Accounts" link="guide-active-directory-permit.html"/>
16 </sub>
17 <sub name="Using with FreeIPA" link="guide-freeipa.html">
18 <sub name="Discovering FreeIPA domains" link="guide-freeipa.html#idp7845984"/>
19 </sub>
20 <sub name="Using with other Kerberos realms" link="guide-freeipa.html">
21 <sub name="Discovering Kerberos realms" link="guide-freeipa.html#idp8469584"/>
22 </sub>
23 <sub name="Configuring realmd" link="guide-configuring.html">
24 <sub name="active-directory" link="guide-configuring.html#guide-configuring-active-directory">
25 <sub name="default-client" link="guide-configuring.html#idp5951456"/>
26 </sub>
27 <sub name="user" link="guide-configuring-users.html">
28 <sub name="default-home" link="guide-configuring-users.html#idp5677840"/>
29 <sub name="default-shell" link="guide-configuring-users.html#idp8624576"/>
30 </sub>
31 <sub name="Realm specific settings" link="guide-configuring-realm.html">
32 <sub name="computer-ou" link="guide-configuring-realm.html#idp8420032"/>
33 </sub>
34 </sub>
35 <sub name="Integration" link="guide-integration.html"/>
36 </sub>
37 <sub name="Developer Reference" link="development.html">
38 <sub name="DBus Interface Reference" link="dbus-interface-reference.html">
39 <sub name="org.freedesktop.realmd.Provider" link="gdbus-org.freedesktop.realmd.Provider.html"/>
40 <sub name="org.freedesktop.realmd.Realm" link="gdbus-org.freedesktop.realmd.Realm.html"/>
41 <sub name="org.freedesktop.realmd.Kerberos" link="gdbus-org.freedesktop.realmd.Kerberos.html"/>
42 <sub name="org.freedesktop.realmd.KerberosMembership" link="gdbus-org.freedesktop.realmd.KerberosMembership.html"/>
43 <sub name="org.freedesktop.realmd.Service" link="gdbus-org.freedesktop.realmd.Service.html"/>
44 </sub>
45 <sub name="Raw DBus Interfaces" link="dbus-interface-raw.html"/>
46 </sub>
47 </chapters>
48 <functions>
49 <keyword type="method" name="The Discover() method" link="gdbus-org.freedesktop.realmd.Provider.html#gdbus-method-org-freedesktop-realmd-Provider.Discover"/>
50 <keyword type="property" name="The &quot;Name&quot; property" link="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Name"/>
51 <keyword type="property" name="The &quot;Version&quot; property" link="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Version"/>
52 <keyword type="property" name="The &quot;Realms&quot; property" link="gdbus-org.freedesktop.realmd.Provider.html#gdbus-property-org-freedesktop-realmd-Provider.Realms"/>
53 <keyword type="method" name="The Deconfigure() method" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.Deconfigure"/>
54 <keyword type="method" name="The ChangeLoginPolicy() method" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy"/>
55 <keyword type="property" name="The &quot;Name&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Name"/>
56 <keyword type="property" name="The &quot;Configured&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Configured"/>
57 <keyword type="property" name="The &quot;SupportedInterfaces&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces"/>
58 <keyword type="property" name="The &quot;Details&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.Details"/>
59 <keyword type="property" name="The &quot;RequiredPackages&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages"/>
60 <keyword type="property" name="The &quot;LoginFormats&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginFormats"/>
61 <keyword type="property" name="The &quot;LoginPolicy&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy"/>
62 <keyword type="property" name="The &quot;PermittedLogins&quot; property" link="gdbus-org.freedesktop.realmd.Realm.html#gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins"/>
63 <keyword type="property" name="The &quot;RealmName&quot; property" link="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.RealmName"/>
64 <keyword type="property" name="The &quot;DomainName&quot; property" link="gdbus-org.freedesktop.realmd.Kerberos.html#gdbus-property-org-freedesktop-realmd-Kerberos.DomainName"/>
65 <keyword type="method" name="The Join() method" link="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Join"/>
66 <keyword type="method" name="The Leave() method" link="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave"/>
67 <keyword type="property" name="The &quot;SuggestedAdministrator&quot; property" link="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator"/>
68 <keyword type="property" name="The &quot;SupportedJoinCredentials&quot; property" link="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials"/>
69 <keyword type="property" name="The &quot;SupportedLeaveCredentials&quot; property" link="gdbus-org.freedesktop.realmd.KerberosMembership.html#gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials"/>
70 <keyword type="method" name="The Cancel() method" link="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Cancel"/>
71 <keyword type="method" name="The SetLocale() method" link="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.SetLocale"/>
72 <keyword type="method" name="The Release() method" link="gdbus-org.freedesktop.realmd.Service.html#gdbus-method-org-freedesktop-realmd-Service.Release"/>
73 <keyword type="signal" name="The &quot;Diagnostics&quot; signal" link="gdbus-org.freedesktop.realmd.Service.html#gdbus-signal-org-freedesktop-realmd-Service.Diagnostics"/>
74 </functions>
75 </book>
0 .synopsis, .classsynopsis
1 {
2 /* tango:aluminium 1/2 */
3 background: #eeeeec;
4 border: solid 1px #d3d7cf;
5 padding: 0.5em;
6 }
7 .programlisting
8 {
9 /* tango:sky blue 0/1 */
10 background: #e6f3ff;
11 border: solid 1px #729fcf;
12 padding: 0.5em;
13 }
14 .variablelist
15 {
16 padding: 4px;
17 margin-left: 3em;
18 }
19 .variablelist td:first-child
20 {
21 vertical-align: top;
0 @import url("gtk-doc.css");
1
2 TABLE.navigation {
3 background-color: #238b49 !important;
4 border-width: 0 !important;
5 color: white;
6 font-family: Georgia, "Times New Roman", Times, serif;
7 height: 4em !important;
228 }
239
24 @media screen {
25 sup a.footnote
26 {
27 position: relative;
28 top: 0em ! important;
29
30 }
31 /* this is needed so that the local anchors are displayed below the naviagtion */
32 div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
33 {
34 display: inline-block;
35 position: relative;
36 top:-5em;
37 }
38 /* this seems to be a bug in the xsl style sheets when generating indexes */
39 div.index div.index
40 {
41 top: 0em;
42 }
43 /* make space for the fixed navigation bar and add space at the bottom so that
44 * link targets appear somewhat close to top
45 */
46 body
47 {
48 padding-top: 3.2em;
49 padding-bottom: 20em;
50 }
51 /* style and size the navigation bar */
52 table.navigation#top
53 {
54 position: fixed;
55 /* tango:scarlet red 0/1 */
56 background: #ffe6e6;
57 border: solid 1px #ef2929;
58 margin-top: 0;
59 margin-bottom: 0;
60 top: 0;
61 left: 0;
62 height: 3em;
63 z-index: 10;
64 }
65 .navigation a, .navigation a:visited
66 {
67 /* tango:scarlet red 3 */
68 color: #a40000;
69 }
70 .navigation a:hover
71 {
72 /* tango:scarlet red 1 */
73 color: #ef2929;
74 }
75 td.shortcuts
76 {
77 /* tango:scarlet red 1 */
78 color: #ef2929;
79 font-size: 80%;
80 white-space: nowrap;
81 }
82 }
83 @media print {
84 table.navigation {
85 visibility: collapse;
86 display: none;
87 }
88 div.titlepage table.navigation {
89 visibility: visible;
90 display: table;
91 /* tango:scarlet red 0/1 */
92 background: #ffe6e6;
93 border: solid 1px #ef2929;
94 margin-top: 0;
95 margin-bottom: 0;
96 top: 0;
97 left: 0;
98 height: 3em;
99 }
10 TABLE.navigation TH {
11 font-size: 30pt !important;
12 font-weight: normal;
13 text-align: left !important;
14 padding-left: 10pt;
10015 }
10116
102 .navigation .title
103 {
104 font-size: 200%;
17 TABLE.navigation TH:first-child {
18 padding-left: 40pt;
10519 }
10620
107 div.gallery-float
108 {
109 float: left;
110 padding: 10px;
111 }
112 div.gallery-float img
113 {
114 border-style: none;
115 }
116 div.gallery-spacer
117 {
118 clear: both;
21 .shortcuts {
22 color: white !important;
11923 }
12024
121 a, a:visited
122 {
123 text-decoration: none;
124 /* tango:sky blue 2 */
125 color: #3465a4;
126 }
127 a:hover
128 {
129 text-decoration: underline;
130 /* tango:sky blue 1 */
131 color: #729fcf;
25 .shortcuts a {
26 color: white !important;
27 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
13228 }
13329
134 div.table table
135 {
136 border-collapse: collapse;
137 border-spacing: 0px;
138 /* tango:aluminium 3 */
139 border: solid 1px #babdb6;
30 P.title {
31 font-size: 30pt !important;
14032 }
14133
142 div.table table td, div.table table th
143 {
144 /* tango:aluminium 3 */
145 border: solid 1px #babdb6;
146 padding: 3px;
147 vertical-align: top;
34 BODY {
35 padding-top: 5.5em !important;
36 margin: 0px;
14837 }
14938
150 div.table table th
151 {
152 /* tango:aluminium 2 */
153 background-color: #d3d7cf;
39
40 /* Target all Firefox, since firefox has bug wrt TABLE + position: fixed */
41 @-moz-document url-prefix() {
42 TABLE.navigation { position: static !important; }
43 BODY { padding-top: 0 !important; }
15444 }
15545
156 hr
157 {
158 /* tango:aluminium 3 */
159 color: #babdb6;
160 background: #babdb6;
161 border: none 0px;
162 height: 1px;
163 clear: both;
46 DIV.book,
47 DIV.refentry,
48 DIV.chapter,
49 DIV.index,
50 DIV.footer,
51 DIV.section,
52 DIV.part {
53 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
54 font-size: 9.5pt;
55 line-height: 150%;
16456 }
16557
166 .footer
167 {
168 padding-top: 3.5em;
169 /* tango:aluminium 3 */
170 color: #babdb6;
171 text-align: center;
172 font-size: 80%;
58 BODY > DIV.book,
59 BODY > DIV.footer,
60 BODY > DIV.part {
61 margin-left: 1em;
62 margin-right: 1em;
17363 }
17464
175 .warning
176 {
177 /* tango:orange 0/1 */
178 background: #ffeed9;
179 border-color: #ffb04f;
180 }
181 .note
182 {
183 /* tango:chameleon 0/0.5 */
184 background: #d8ffb2;
185 border-color: #abf562;
186 }
187 .note, .warning
188 {
189 padding: 0.5em;
190 border-width: 1px;
191 border-style: solid;
192 }
193 .note h3, .warning h3
194 {
195 margin-top: 0.0em
196 }
197 .note p, .warning p
198 {
199 margin-bottom: 0.0em
65 BODY > DIV.refentry,
66 BODY > DIV.chapter,
67 BODY > DIV.index,
68 BODY > DIV.section {
69 margin-left: 3em;
70 margin-right: 1em;
20071 }
20172
202 /* blob links */
203 h2 .extralinks, h3 .extralinks
204 {
205 float: right;
206 /* tango:aluminium 3 */
207 color: #babdb6;
208 font-size: 80%;
209 font-weight: normal;
73 DIV.variablelist TABLE {
74 font-size: 9.5pt;
75 line-height: 150%;
21076 }
21177
212 .annotation
213 {
214 /* tango:aluminium 5 */
215 color: #555753;
216 font-size: 80%;
217 font-weight: normal;
78 DIV.refsect1,
79 DIV.refsect2,
80 DIV.refsynopsisdiv {
81 margin-bottom: 3em !important;
21882 }
21983
220 /* code listings */
221
222 .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
223 .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
224 .listing_code .programlisting .function { color: #000000; font-weight: bold; }
225 .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
226 .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
227 .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
228 .listing_code .programlisting .normal { color: #000000; }
229 .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
230 .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
231 .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
232 .listing_code .programlisting .type { color: #000000; }
233 .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
234 .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
235
236 .listing_frame {
237 /* tango:sky blue 1 */
238 border: solid 1px #729fcf;
239 padding: 0px;
84 H2 {
85 position: relative;
86 left: -1em;
87 font-weight: normal !important;
24088 }
24189
242 .listing_lines, .listing_code {
243 margin-top: 0px;
244 margin-bottom: 0px;
245 padding: 0.5em;
246 }
247 .listing_lines {
248 /* tango:sky blue 0.5 */
249 background: #a6c5e3;
250 /* tango:aluminium 6 */
251 color: #2e3436;
252 }
253 .listing_code {
254 /* tango:sky blue 0 */
255 background: #e6f3ff;
256 }
257 .listing_code .programlisting {
258 /* override from previous */
259 border: none 0px;
260 padding: 0px;
261 }
262 .listing_lines pre, .listing_code pre {
263 margin: 0px;
90 H3 {
91 position: relative;
92 left: -1em;
93 font-weight: normal !important;
26494 }
26595
96 DD > DL {
97 margin-top: 0.3em;
98 margin-bottom: 0.3em;
99 }
100
101 PRE.screen {
102 border: solid 1px #729fcf;
103 padding: 0.5em;
104 background: #e6f3ff;
105 }
106
107 CODE.option {
108 white-space: nowrap;
109 }
+0
-105
doc/manual/html.css less more
0 @import url("style.css");
1
2 TABLE.navigation {
3 background-color: #238b49 !important;
4 border-width: 0 !important;
5 color: white;
6 font-family: Georgia, "Times New Roman", Times, serif;
7 height: 4em !important;
8 }
9
10 TABLE.navigation TH {
11 font-size: 30pt !important;
12 font-weight: normal;
13 text-align: left !important;
14 padding-left: 10pt;
15 }
16
17 TABLE.navigation TH:first-child {
18 padding-left: 40pt;
19 }
20
21 .shortcuts {
22 color: white !important;
23 }
24
25 .shortcuts a {
26 color: white !important;
27 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
28 }
29
30 P.title {
31 font-size: 30pt !important;
32 }
33
34 BODY {
35 padding-top: 5.5em !important;
36 margin: 0px;
37 }
38
39
40 /* Target all Firefox, since firefox has bug wrt TABLE + position: fixed */
41 @-moz-document url-prefix() {
42 TABLE.navigation { position: static !important; }
43 BODY { padding-top: 0 !important; }
44 }
45
46 DIV.book,
47 DIV.refentry,
48 DIV.chapter,
49 DIV.index,
50 DIV.footer,
51 DIV.section,
52 DIV.part {
53 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
54 font-size: 9.5pt;
55 line-height: 150%;
56 }
57
58 BODY > DIV.book,
59 BODY > DIV.footer {
60 margin-left: 1em;
61 margin-right: 1em;
62 }
63
64 BODY > DIV.refentry,
65 BODY > DIV.chapter,
66 BODY > DIV.index,
67 BODY > DIV.section {
68 margin-left: 3em;
69 margin-right: 1em;
70 }
71
72 DIV.variablelist TABLE {
73 font-size: 9.5pt;
74 line-height: 150%;
75 }
76
77 DIV.refsect1,
78 DIV.refsect2,
79 DIV.refsynopsisdiv {
80 margin-bottom: 3em !important;
81 }
82
83 H2 {
84 position: relative;
85 left: -1em;
86 font-weight: normal !important;
87 }
88
89 H3 {
90 position: relative;
91 left: -1em;
92 font-weight: normal !important;
93 }
94
95 DD > DL {
96 margin-top: 0.3em;
97 margin-bottom: 0.3em;
98 }
99
100 PRE.screen {
101 border: solid 1px #729fcf;
102 padding: 0.5em;
103 background: #e6f3ff;
104 }
2929
3030 <refsynopsisdiv>
3131 <cmdsynopsis>
32 <command>realm discover <arg choice="plain">-v</arg> <arg choice="opt">realm-name</arg></command>
33 </cmdsynopsis>
34 <cmdsynopsis>
35 <command>realm join <arg choice="plain">-v</arg> <arg choice="opt">-U user</arg> <arg choice="opt">realm-name</arg></command>
36 </cmdsynopsis>
37 <cmdsynopsis>
38 <command>realm leave <arg choice="plain">-v</arg> <arg choice="opt">-U user</arg> <arg choice="opt">realm-name</arg></command>
32 <command>realm discover</command> <arg choice="opt">realm-name</arg>
33 </cmdsynopsis>
34 <cmdsynopsis>
35 <command>realm join</command> <arg choice="opt">-U user</arg> <arg choice="opt">realm-name</arg>
36 </cmdsynopsis>
37 <cmdsynopsis>
38 <command>realm leave</command> <arg choice="opt">-U user</arg> <arg choice="opt">realm-name</arg>
3939 </cmdsynopsis>
4040 <cmdsynopsis>
4141 <command>realm list</command>
4242 </cmdsynopsis>
4343 <cmdsynopsis>
44 <command>realm permit <arg choice="opt">-a</arg> <arg choice="opt">-R realm</arg> <arg choice="req">user</arg> ...</command>
45 </cmdsynopsis>
46 <cmdsynopsis>
47 <command>realm deny <arg choice="opt">-a</arg> <arg choice="opt">-R realm</arg> <arg choice="req">user</arg> ...</command>
44 <command>realm permit</command> <arg choice="opt">-a</arg> <arg choice="opt">-R realm</arg> <arg choice="req" rep="repeat">user</arg>
45 </cmdsynopsis>
46 <cmdsynopsis>
47 <command>realm deny</command> <arg choice="opt">-a</arg> <arg choice="opt">-R realm</arg> <arg choice="req" rep="repeat">user</arg>
4848 </cmdsynopsis>
4949 </refsynopsisdiv>
5050
107107 </varlistentry>
108108 <varlistentry>
109109 <term><option>--server-software=xxx</option></term>
110 <listitem><para>Only discover realms for run the
110 <listitem><para>Only discover realms which run the
111111 given server software. Possible values include
112112 <replaceable>active-directory</replaceable> or
113113 <replaceable>freeipa</replaceable>.</para></listitem>
114114 </varlistentry>
115 <varlistentry>
116 <term><option>--membership-software=xxx</option></term>
117 <listitem><para>Only discover realms for which the given
118 membership software can be used to subsequently perform enrollment.
119 Possible values include <replaceable>samba</replaceable> or
120 <replaceable>adcli</replaceable>. </para></listitem>
121 </varlistentry>
115122 </variablelist>
116123
117124 </refsect1>
142149 must have a supported mechanism for joining from a client machine, such
143150 as Active Directory or FreeIPA.</para>
144151
145 <para>Unless a <arg>--user</arg> is explicitly specified, then if
146 possible, an automatic join is attempted first.</para>
147
148 <para>The following options can be used:</para>
149
150 <variablelist>
152 <para>Unless a <literal>--user</literal> is explicitly specified, an automatic join is attempted first.</para>
153
154 <para>Note that the <literal>--user </literal>, <literal>--no-password</literal>,
155 and <literal>--one-time-password </literal> options are mutually exclusive.
156 At most one of them can be specified.</para>
157
158 <para>The following options can be used:</para>
159
160 <variablelist>
161 <varlistentry>
162 <term><option>--user=xxx</option></term>
163 <listitem><para>The user name to be used to authenticate
164 with when joining the machine to the realm. You will
165 be prompted for a password.</para></listitem>
166 </varlistentry>
167 <varlistentry>
168 <term><option>--computer-ou=OU=xxx</option></term>
169 <listitem><para>The distinguished name of an organizational
170 unit to create the computer account. The exact format
171 of the distinguished name depends on the client software
172 and membership software. You can usually omit the root
173 DSE portion of distinguished name.</para></listitem>
174 </varlistentry>
175 <varlistentry>
176 <term><option>--no-password</option></term>
177 <listitem><para>Perform the join automatically without
178 a password.</para></listitem>
179 </varlistentry>
180 <varlistentry>
181 <term><option>--one-time-password=xxxx</option></term>
182 <listitem><para>Perform the join using a one time password
183 specified on the command line. This is not possible with
184 all types of realms.</para></listitem>
185 </varlistentry>
151186 <varlistentry>
152187 <term><option>--client-software=xxx</option></term>
153188 <listitem><para>Only join realms for which we can
158193 is automatically selected.</para></listitem>
159194 </varlistentry>
160195 <varlistentry>
161 <term><option>--computer-ou=OU=xxx</option></term>
162 <listitem><para>The distinguished name of an organizational
163 unit to create the computer account. The exact format
164 of the distinguished name depends on the client software
165 and membership software. You can usually omit the root
166 DSE portion of distinguished name.</para></listitem>
196 <term><option>--server-software=xxx</option></term>
197 <listitem><para>Only join realms for run the
198 given server software. Possible values include
199 <replaceable>active-directory</replaceable> or
200 <replaceable>freeipa</replaceable>.</para></listitem>
167201 </varlistentry>
168202 <varlistentry>
169203 <term><option>--membership-software=xxx</option></term>
173207 supported for all realms. By default the membership software
174208 is automatically selected.</para></listitem>
175209 </varlistentry>
176 <varlistentry>
177 <term><option>--one-time-password=xxxx</option></term>
178 <listitem><para>Perform the join using a one time password
179 specified on the command line. This is not possible with
180 all types of realms.</para></listitem>
181 </varlistentry>
182 <varlistentry>
183 <term><option>--server-software=xxx</option></term>
184 <listitem><para>Only join realms for run the
185 given server software. Possible values include
186 <replaceable>active-directory</replaceable> or
187 <replaceable>freeipa</replaceable>.</para></listitem>
188 </varlistentry>
189 <varlistentry>
190 <term><option>--user</option></term>
191 <listitem><para>The user name to be used to authenticate
192 with when joining the machine to the realm. You will
193 be prompted for a password.</para></listitem>
194 </varlistentry>
195210 </variablelist>
196211
197212 </refsect1>
257272 </programlisting>
258273 </informalexample>
259274
275 <para>By default, realms that have been discovered, but not configured (using
276 the <option>join</option> command), are not displayed. Also, by default, the
277 list of realm details displayed is verbose. The options below can be used to
278 change this default behavior</para>
279
280 <para>The following options can be used:</para>
281
282 <variablelist>
283 <varlistentry>
284 <term><option>--all</option></term>
285 <listitem><para>Show all discovered realms (whether or not
286 they have been configured). </para></listitem>
287 </varlistentry>
288 <varlistentry>
289 <term><option>--name-only</option></term>
290 <listitem><para>Display only realm names (as opposed to
291 verbose output).</para></listitem>
292 </varlistentry>
293 </variablelist>
260294 </refsect1>
261295
262296 <refsect1>
321355 <variablelist>
322356 <varlistentry>
323357 <term><option>--all, -a</option></term>
324 <listitem><para>Deny login by any validuser of the
358 <listitem><para>Deny login by any valid user of the
325359 realm.</para></listitem>
326360 </varlistentry>
327361 <varlistentry>
+0
-52
doc/manual/realmd-docs.sgml less more
0 <?xml version="1.0"?>
1 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
2 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
3 [
4 <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
5 <!ENTITY version SYSTEM "../version.xml">
6 ]>
7 <book id="index">
8 <bookinfo>
9 <title>realmd</title>
10 <releaseinfo>for &version;</releaseinfo>
11 </bookinfo>
12
13 <part id="guide">
14 <title>Administrative Guide</title>
15 <chapter xml:id="realm-manual">
16 <title>Command manual pages</title>
17 <xi:include href="realm.xml"/>
18 </chapter>
19
20 <xi:include href="realmd-guide-active-directory.xml"/>
21 <xi:include href="realmd-guide-freeipa.xml"/>
22 <xi:include href="realmd-guide-kerberos.xml"/>
23 <xi:include href="realmd-guide-configuring.xml"/>
24
25 <chapter id="guide-integration">
26 <title>Integration</title>
27 </chapter>
28 </part>
29
30 <part id="development">
31 <title>Developer Reference</title>
32 <chapter xml:id="dbus-interface-reference">
33 <title>DBus Interface Reference</title>
34 <xi:include href="realmd-org.freedesktop.realmd.Provider.xml"/>
35 <xi:include href="realmd-org.freedesktop.realmd.Realm.xml"/>
36 <xi:include href="realmd-org.freedesktop.realmd.Kerberos.xml"/>
37 <xi:include href="realmd-org.freedesktop.realmd.KerberosMembership.xml"/>
38 <xi:include href="realmd-org.freedesktop.realmd.Service.xml"/>
39 </chapter>
40 <chapter xml:id="dbus-interface-raw">
41 <title>Raw DBus Interfaces</title>
42 <para>These are the current raw DBus interfaces for realmd.</para>
43 <programlisting role="rawhtml">
44 <textobject>
45 <?dbhtml-include href="realmd-org.freedesktop.realmd.xml"?>
46 </textobject>
47 </programlisting>
48 </chapter>
49 </part>
50
51 </book>
0 <?xml version="1.0"?>
1 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
2 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
3 [
4 <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
5 <!ENTITY version SYSTEM "../version.xml">
6 ]>
7 <book id="index">
8 <bookinfo>
9 <title>realmd</title>
10 <releaseinfo>for &version;</releaseinfo>
11 </bookinfo>
12
13 <part id="guide">
14 <title>Administrative Guide</title>
15 <chapter id="realm-manual">
16 <title>Command manual pages</title>
17 <xi:include href="realm.xml"/>
18 </chapter>
19
20 <xi:include href="realmd-guide-active-directory.xml"/>
21 <xi:include href="realmd-guide-freeipa.xml"/>
22 <xi:include href="realmd-guide-kerberos.xml"/>
23 <xi:include href="realmd-guide-configuring.xml"/>
24
25 <chapter id="guide-integration">
26 <title>Integration</title>
27 <para>Not yet written</para>
28 </chapter>
29 </part>
30
31 <part id="development">
32 <title>Developer Reference</title>
33 <chapter id="dbus-interface-reference">
34 <title>DBus Interface Reference</title>
35 <xi:include href="realmd-org.freedesktop.realmd.Provider.xml"/>
36 <xi:include href="realmd-org.freedesktop.realmd.Realm.xml"/>
37 <xi:include href="realmd-org.freedesktop.realmd.Kerberos.xml"/>
38 <xi:include href="realmd-org.freedesktop.realmd.KerberosMembership.xml"/>
39 <xi:include href="realmd-org.freedesktop.realmd.Service.xml"/>
40 </chapter>
41 <chapter id="dbus-interface-raw">
42 <title>Raw DBus Interfaces</title>
43 <para>These are the current raw DBus interfaces for realmd.</para>
44 <programlisting role="rawhtml">
45 <?dbhtml-include href="realmd-org.freedesktop.realmd.xml"?>
46 </programlisting>
47 </chapter>
48 </part>
49
50 </book>
9797
9898 <informalexample>
9999 <programlisting language="js">
100 [active-directory]
100 [users]
101101 default-home = /home/%D/%U
102102 # default-home = /nfs/home/%D-%U
103103 </programlisting>
129129
130130 <informalexample>
131131 <programlisting language="js">
132 [active-directory]
132 [users]
133133 default-shell = /bin/bash
134134 # default-shell = /bin/sh
135135 </programlisting>
195195 create a computer account at a specific OU.</para>
196196
197197 </section>
198 </section>
198
199 </section>
199200 </chapter>
77 <chapter id="guide-freeipa">
88 <title>Using with FreeIPA</title>
99
10 <para><command>realmd</command> can discover FreeIPA domains. It is not
11 yet possible to join the computer to the domain.</para>
10 <para><command>realmd</command> can discover FreeIPA domains and join
11 the current computer as an account on a domain. This allows using domain
12 users locally, and log into the local machine with FreeIPA domain
13 credentials.</para>
1214
1315 <section>
1416 <title>Discovering FreeIPA domains</title>
5860
5961 </section>
6062
63 <section id="guide-freeipa-client">
64 <title>FreeIPA client software</title>
65 <para>As part of configuring an FreeIPA domain for use
66 on the local computer, <command>realmd</command> will install and
67 configure client software to enable domain accounts to be used on
68 the local computer.</para>
69
70 <para>For a FreeIPA domain this is
71 <ulink url="https://fedorahosted.org/sssd/">SSSD</ulink>.</para>
72
73 </section>
74
75 <section id="guide-freeipa-join">
76 <title>Joining a FreeIPA domain</title>
77
78 <para>To join a FreeIPA domain with <command>realmd</command>
79 you can use the <link linkend="realm"><command>realm</command></link>
80 command line tool:</para>
81
82 <informalexample>
83 <screen>
84 $ <command>realm join --verbose ipa.example.com</command>
85 </screen>
86 </informalexample>
87
88 <para>By specifying the <option>--verbose</option> it's easier
89 to see what went wrong if the join fails.</para>
90
91 <para>Other tools also use <command>realmd</command> which can
92 be used to perform the join operation, for example: GNOME
93 Control Center.</para>
94
95 <para>The join operation does the following:</para>
96 <itemizedlist>
97 <listitem><para>Discovers information about the domain.</para></listitem>
98 <listitem><para>Installs the necessary software to join the domain, such as SSSD.</para></listitem>
99 <listitem><para>Prompts for administrative credentials.</para></listitem>
100 <listitem><para>A computer account in the domain will be created, and or updated.</para></listitem>
101 <listitem><para>A host keytab file at <filename>/etc/krb5.keytab</filename> is created.</para></listitem>
102 <listitem><para>Configures the SSSD service, and restarts and enables it as appropriate.</para></listitem>
103 <listitem><para>Enables domain users in <filename>/etc/nsswitch.conf</filename></para></listitem>
104 </itemizedlist>
105
106 <para>After the join operation is complete, domain accounts should
107 be usable locally, although logins using domain accounts are
108 not necessarily enabled.</para>
109
110 <para>You verify that domain accounts are working with with a
111 command like this:</para>
112
113 <informalexample>
114 <screen>
115 $ <command>getent passwd admin@ipa.example.com</command>
116 </screen>
117 </informalexample>
118
119 <para>The join operation will create or update a computer account
120 in the domain.</para>
121
122 </section>
123
124 <section id="guide-freeipa-permit">
125 <title>Logins using Domain Accounts</title>
126
127 <para>Once the
128 <link linkend="guide-freeipa-join">computer is joined</link>
129 to a FreeIPA domain, the machine will automatically follow the
130 domain settings for whether users are able to log into the
131 machine or not.</para>
132
133 <para>To override this behavior and permit any domain account
134 to log in, use the following command.</para>
135
136 <informalexample>
137 <screen>
138 $ <command>realm permit --realm domain.example.com --all</command>
139 </screen>
140 </informalexample>
141
142 <para>To permit only specific accounts from the domain to log in
143 use the following command. The first time this command is run
144 it will change the mode to only allow logins by specific accounts,
145 and then add the specified accounts to the list of accounts
146 to permit.</para>
147
148 <informalexample>
149 <screen>
150 $ <command>realm permit --realm domain.example.com user1@ipa.example.com user2@ipa.example.com</command>
151 </screen>
152 </informalexample>
153
154 <para>To deny logins from any domain account, use the following
155 command.</para>
156
157 <informalexample>
158 <screen>
159 $ <command>realm deny --realm domain.example.com --all</command>
160 </screen>
161 </informalexample>
162
163 </section>
164
61165 </chapter>
44 <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
55 ]>
66
7 <chapter id="guide-freeipa">
7 <chapter id="guide-kerberos">
88 <title>Using with other Kerberos realms</title>
99
1010 <para><command>realmd</command> can discover generic Kerberos realms.
+0
-45
doc/manual/realmd-org.freedesktop.realmd.Kerberos.xml less more
0 <?xml version="1.0" encoding="utf-8"?>
1 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
2 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3 ]>
4 <refentry id="gdbus-org.freedesktop.realmd.Kerberos">
5 <refmeta> <refentrytitle role="top_of_page" id="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</refentrytitle>
6 <indexterm zone="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page"><primary sortas="Kerberos">org.freedesktop.realmd.Kerberos</primary></indexterm>
7 </refmeta> <refnamediv> <refname>org.freedesktop.realmd.Kerberos</refname> <refpurpose>a kerberos realm</refpurpose> </refnamediv> <refsect1 role="properties">
8 <title role="properties.title">Properties</title>
9 <synopsis>
10 <link linkend="gdbus-property-org-freedesktop-realmd-Kerberos.RealmName">RealmName</link> readable s
11 <link linkend="gdbus-property-org-freedesktop-realmd-Kerberos.DomainName">DomainName</link> readable s
12 </synopsis>
13 </refsect1>
14 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-realmd-Kerberos">
15 <title role="desc.title">Description</title>
16 <para><para> An interface that describes a kerberos realm in more detail. This
17 is always implemented on an DBus object path that also implements
18 the <link linkend="gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</link> interface.
19 </para></para>
20 </refsect1>
21 <refsect1 role="details" id="gdbus-properties-org.freedesktop.realmd.Kerberos">
22 <title role="details.title">Property Details</title>
23 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Kerberos.RealmName">
24 <title>The "RealmName" property</title>
25 <indexterm zone="gdbus-property-org-freedesktop-realmd-Kerberos.RealmName"><primary sortas="Kerberos:RealmName">org.freedesktop.realmd.Kerberos:RealmName</primary></indexterm>
26 <programlisting>
27 RealmName readable s
28 </programlisting>
29 <para><para>the kerberos realm name</para><para> The kerberos name for this realm. This is usually in upper
30 case.
31 </para></para>
32 </refsect2>
33 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Kerberos.DomainName">
34 <title>The "DomainName" property</title>
35 <indexterm zone="gdbus-property-org-freedesktop-realmd-Kerberos.DomainName"><primary sortas="Kerberos:DomainName">org.freedesktop.realmd.Kerberos:DomainName</primary></indexterm>
36 <programlisting>
37 DomainName readable s
38 </programlisting>
39 <para><para>the DNS domain name</para><para> The DNS domain name for this realm.
40 </para></para>
41 </refsect2>
42 </refsect1>
43 </refentry>
44
+0
-242
doc/manual/realmd-org.freedesktop.realmd.KerberosMembership.xml less more
0 <?xml version="1.0" encoding="utf-8"?>
1 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
2 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3 ]>
4 <refentry id="gdbus-org.freedesktop.realmd.KerberosMembership">
5 <refmeta> <refentrytitle role="top_of_page" id="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</refentrytitle>
6 <indexterm zone="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page"><primary sortas="KerberosMembership">org.freedesktop.realmd.KerberosMembership</primary></indexterm>
7 </refmeta> <refnamediv> <refname>org.freedesktop.realmd.KerberosMembership</refname> <refpurpose></refpurpose> </refnamediv> <refsynopsisdiv role="synopsis">
8 <title role="synopsis.title">Methods</title>
9 <synopsis>
10 <link linkend="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">Join</link> (IN (ssv) credentials,
11 IN a{sv} options);
12 <link linkend="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">Leave</link> (IN (ssv) credentials,
13 IN a{sv} options);
14 </synopsis>
15 </refsynopsisdiv>
16 <refsect1 role="properties">
17 <title role="properties.title">Properties</title>
18 <synopsis>
19 <link linkend="gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator">SuggestedAdministrator</link> readable s
20 <link linkend="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials">SupportedJoinCredentials</link> readable a(ss)
21 <link linkend="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials">SupportedLeaveCredentials</link> readable a(ss)
22 </synopsis>
23 </refsect1>
24 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-realmd-KerberosMembership">
25 <title role="desc.title">Description</title>
26 <para><para> An interface used to configure this machine by joining a realm.
27 </para><para> It sets up a computer/host account in the realm for this machine
28 and a keytab to track the credentials for that account.
29 </para><para> The various properties are guaranteed to have been updated before
30 the operation methods return, if they change state.
31 </para></para>
32 </refsect1>
33 <refsect1 role="details" id="gdbus-methods-org.freedesktop.realmd.KerberosMembership">
34 <title role="details.title">Method Details</title>
35 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">
36 <title>The Join() method</title>
37 <indexterm zone="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join"><primary sortas="KerberosMembership.Join">org.freedesktop.realmd.KerberosMembership.Join()</primary></indexterm>
38 <programlisting>
39 Join (IN (ssv) credentials,
40 IN a{sv} options);
41 </programlisting>
42 <para><para> Join this machine to the realm and enroll the machine.
43 </para><para> If this method returns successfully then the machine will be
44 joined to the realm. It is not necessary to restart services or the
45 machine afterward. Relevant properties on the realm will be updated
46 before the method returns.
47 </para><para> The <parameter>credentials</parameter> should be set according to one of the
48 supported credentials returned by
49 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>:SupportedJoinCredentials.
50 The first string in the tuple is the type, the second string
51 is the owner, and the variant contains the credential contents
52 See the discussion at
53 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>:SupportedJoinCredentials
54 for more information.
55 </para><para> <parameter>options</parameter> can contain, but is not limited to, the following values:
56 <itemizedlist>
57 <listitem><para><literal>operation</literal>: a string
58 identifier chosen by the client, which can then later be
59 passed to <link linkend="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</link> in order
60 to cancel the operation</para></listitem>
61 <listitem><para><literal>computer-ou</literal>: a string
62 containing an LDAP DN for an organizational unit where the
63 computer account should be created</para></listitem>
64 <listitem><para><literal>assume-packages</literal>: a boolean
65 which overrides makes the join assume that all needed
66 software packages have already been installed</para></listitem>
67 </itemizedlist>
68 </para><para> This method requires authorization for the PolicyKit action
69 called <literal>org.freedesktop.realmd.configure-realm</literal>.
70 </para><para> In addition to common DBus error results, this method may return:
71 <itemizedlist>
72 <listitem><para><literal>org.freedesktop.realmd.Error.Failed</literal>:
73 may be returned if the join failed for a generic reason.</para></listitem>
74 <listitem><para><literal>org.freedesktop.realmd.Error.Cancelled</literal>:
75 returned if the operation was cancelled.</para></listitem>
76 <listitem><para><literal>org.freedesktop.realmd.Error.NotAuthorized</literal>:
77 returned if the calling client is not permitted to perform an join
78 operation.</para></listitem>
79 <listitem><para><literal>org.freedesktop.realmd.Error.AuthenticationFailed</literal>:
80 returned if the credentials passed did not authenticate against the realm
81 correctly. It is appropriate to prompt the user again.</para></listitem>
82 <listitem><para><literal>org.freedesktop.realmd.Error.AlreadyEnrolled</literal>:
83 returned if already enrolled in this realm, or another realm and enrolling
84 in multiple realms is not supported.</para></listitem>
85 <listitem><para><literal>org.freedesktop.realmd.Error.Busy</literal>:
86 returned if the service is currently performing another operation like
87 join or leave.</para></listitem>
88 </itemizedlist>
89 </para></para>
90 <variablelist role="params">
91 <varlistentry>
92 <term><literal>IN (ssv) <parameter>credentials</parameter></literal>:</term>
93 <listitem><para></para></listitem>
94 </varlistentry>
95 <varlistentry>
96 <term><literal>IN a{sv} <parameter>options</parameter></literal>:</term>
97 <listitem><para></para></listitem>
98 </varlistentry>
99 </variablelist>
100 </refsect2>
101 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">
102 <title>The Leave() method</title>
103 <indexterm zone="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave"><primary sortas="KerberosMembership.Leave">org.freedesktop.realmd.KerberosMembership.Leave()</primary></indexterm>
104 <programlisting>
105 Leave (IN (ssv) credentials,
106 IN a{sv} options);
107 </programlisting>
108 <para><para> Leave the realm and unenroll the machine.
109 </para><para> If this method returns successfully then the machine will have
110 left the domain and been unenrolled. It is not necessary to restart
111 services or the machine afterward. Relevant properties on the realm
112 will be updated before the method returns.
113 </para><para> The <parameter>credentials</parameter> should be set according to one of the
114 supported credentials returned by
115 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>:SupportedUnenrollCredentials.
116 The first string in the tuple is the type, the second string
117 is the owner, and the variant contains the credential contents
118 See the discussion at
119 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>:SupportedEnrollCredentials
120 for more information.
121 </para><para> <parameter>options</parameter> can contain, but is not limited to, the following values:
122 <itemizedlist>
123 <listitem><para><literal>operation</literal>: a string
124 identifier chosen by the client, which can then later be
125 passed to <link linkend="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</link> in order
126 to cancel the operation</para></listitem>
127 </itemizedlist>
128 </para><para> This method requires authorization for the PolicyKit action
129 called <literal>org.freedesktop.realmd.deconfigure-realm</literal>.
130 </para><para> In addition to common DBus error results, this method may return:
131 <itemizedlist>
132 <listitem><para><literal>org.freedesktop.realmd.Error.Failed</literal>:
133 may be returned if the unenroll failed for a generic reason.</para></listitem>
134 <listitem><para><literal>org.freedesktop.realmd.Error.Cancelled</literal>:
135 returned if the operation was cancelled.</para></listitem>
136 <listitem><para><literal>org.freedesktop.realmd.Error.NotAuthorized</literal>:
137 returned if the calling client is not permitted to perform an unenroll
138 operation.</para></listitem>
139 <listitem><para><literal>org.freedesktop.realmd.Error.AuthenticationFailed</literal>:
140 returned if the credentials passed did not authenticate against the realm
141 correctly. It is appropriate to prompt the user again.</para></listitem>
142 <listitem><para><literal>org.freedesktop.realmd.Error.NotEnrolled</literal>:
143 returned if not enrolled in this realm.</para></listitem>
144 <listitem><para><literal>org.freedesktop.realmd.Error.Busy</literal>:
145 returned if the service is currently performing another operation like
146 enroll or unenroll.</para></listitem>
147 </itemizedlist>
148 </para></para>
149 <variablelist role="params">
150 <varlistentry>
151 <term><literal>IN (ssv) <parameter>credentials</parameter></literal>:</term>
152 <listitem><para></para></listitem>
153 </varlistentry>
154 <varlistentry>
155 <term><literal>IN a{sv} <parameter>options</parameter></literal>:</term>
156 <listitem><para></para></listitem>
157 </varlistentry>
158 </variablelist>
159 </refsect2>
160 </refsect1>
161 <refsect1 role="details" id="gdbus-properties-org.freedesktop.realmd.KerberosMembership">
162 <title role="details.title">Property Details</title>
163 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator">
164 <title>The "SuggestedAdministrator" property</title>
165 <indexterm zone="gdbus-property-org-freedesktop-realmd-KerberosMembership.SuggestedAdministrator"><primary sortas="KerberosMembership:SuggestedAdministrator">org.freedesktop.realmd.KerberosMembership:SuggestedAdministrator</primary></indexterm>
166 <programlisting>
167 SuggestedAdministrator readable s
168 </programlisting>
169 <para><para>common administrator name</para><para> The common administrator name for this type of realm. This
170 can be used by clients as a hint when prompting the user for
171 administrative authentication.
172 </para></para>
173 </refsect2>
174 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials">
175 <title>The "SupportedJoinCredentials" property</title>
176 <indexterm zone="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedJoinCredentials"><primary sortas="KerberosMembership:SupportedJoinCredentials">org.freedesktop.realmd.KerberosMembership:SupportedJoinCredentials</primary></indexterm>
177 <programlisting>
178 SupportedJoinCredentials readable a(ss)
179 </programlisting>
180 <para><para>credentials supported for joining</para><para> Various kinds of credentials that are supported when calling the
181 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>.Join() method.
182 </para><para> Each credential is represented by a type, and an owner. The type
183 denotes which kind of credential is passed to the method. The
184 owner indicates to the client how to prompt the user or obtain
185 the credential, and to the service how to use the credential.
186 </para><para> The various types are:
187 <itemizedlist>
188 <listitem><para><literal>ccache</literal>:
189 the credentials should contain an array of bytes as a
190 <literal>ay</literal> containing the data from a kerberos
191 credential cache file.</para></listitem>
192 <listitem><para><literal>password</literal>:
193 the credentials should contain a pair of strings as a
194 <literal>(ss)</literal> representing a name and
195 password. The name may contain a realm in the standard
196 kerberos format. If a realm is missing, it will default
197 to this realm. </para></listitem>
198 <listitem><para><literal>secret</literal>:
199 the credentials should contain a string secret as an
200 <literal>ay</literal> array of bytes. This is usually used
201 for one time passwords.</para></listitem>
202 <listitem><para><literal>automatic</literal>:
203 the credentials should contain an empty string as a
204 <literal>s</literal>. Using <literal>automatic</literal>
205 indicates that default or system credentials are to be
206 used.</para></listitem>
207 </itemizedlist>
208 </para><para> The various owners are:
209 <itemizedlist>
210 <listitem><para><literal>administrator</literal>:
211 the credentials belong to a kerberos user principal.
212 The caller may use this as a hint to prompt the user
213 for administrative credentials.</para></listitem>
214 <listitem><para><literal>user</literal>:
215 the credentials belong to a kerberos user principal.
216 The caller may use this as a hint to prompt the user
217 for his (possibly non-administrative)
218 credentials.</para></listitem>
219 <listitem><para><literal>computer</literal>:
220 the credentials belong to a computer account.</para></listitem>
221 <listitem><para><literal>none</literal>:
222 the credentials have an unspecified owner, such as a one
223 time secret.</para></listitem>
224 </itemizedlist>
225 </para></para>
226 </refsect2>
227 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials">
228 <title>The "SupportedLeaveCredentials" property</title>
229 <indexterm zone="gdbus-property-org-freedesktop-realmd-KerberosMembership.SupportedLeaveCredentials"><primary sortas="KerberosMembership:SupportedLeaveCredentials">org.freedesktop.realmd.KerberosMembership:SupportedLeaveCredentials</primary></indexterm>
230 <programlisting>
231 SupportedLeaveCredentials readable a(ss)
232 </programlisting>
233 <para><para>credentials supported for leaving</para><para> Various kinds of credentials that are supported when calling the
234 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>.Leave() method.
235 </para><para> See <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>:SupportedJoinCredentials for
236 a discussion of what the values represent.
237 </para></para>
238 </refsect2>
239 </refsect1>
240 </refentry>
241
+0
-145
doc/manual/realmd-org.freedesktop.realmd.Provider.xml less more
0 <?xml version="1.0" encoding="utf-8"?>
1 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
2 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3 ]>
4 <refentry id="gdbus-org.freedesktop.realmd.Provider">
5 <refmeta> <refentrytitle role="top_of_page" id="gdbus-interface-org-freedesktop-realmd-Provider.top_of_page">org.freedesktop.realmd.Provider</refentrytitle>
6 <indexterm zone="gdbus-interface-org-freedesktop-realmd-Provider.top_of_page"><primary sortas="Provider">org.freedesktop.realmd.Provider</primary></indexterm>
7 </refmeta> <refnamediv> <refname>org.freedesktop.realmd.Provider</refname> <refpurpose>a realm provider</refpurpose> </refnamediv> <refsynopsisdiv role="synopsis">
8 <title role="synopsis.title">Methods</title>
9 <synopsis>
10 <link linkend="gdbus-method-org-freedesktop-realmd-Provider.Discover">Discover</link> (IN s string,
11 IN a{sv} options,
12 OUT i relevance,
13 OUT ao realm);
14 </synopsis>
15 </refsynopsisdiv>
16 <refsect1 role="properties">
17 <title role="properties.title">Properties</title>
18 <synopsis>
19 <link linkend="gdbus-property-org-freedesktop-realmd-Provider.Name">Name</link> readable s
20 <link linkend="gdbus-property-org-freedesktop-realmd-Provider.Version">Version</link> readable s
21 <link linkend="gdbus-property-org-freedesktop-realmd-Provider.Realms">Realms</link> readable ao
22 </synopsis>
23 </refsect1>
24 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-realmd-Provider">
25 <title role="desc.title">Description</title>
26 <para><para> Various realm providers represent different software implementations
27 that provide access to realms or domains.
28 </para><para> This interface is implemented by individual providers, but is
29 aggregated globally at the system bus name
30 <literal>org.freedesktop.realmd</literal>
31 with the object path <literal>/org/freedesktop/realmd</literal>
32 </para></para>
33 </refsect1>
34 <refsect1 role="details" id="gdbus-methods-org.freedesktop.realmd.Provider">
35 <title role="details.title">Method Details</title>
36 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-Provider.Discover">
37 <title>The Discover() method</title>
38 <indexterm zone="gdbus-method-org-freedesktop-realmd-Provider.Discover"><primary sortas="Provider.Discover">org.freedesktop.realmd.Provider.Discover()</primary></indexterm>
39 <programlisting>
40 Discover (IN s string,
41 IN a{sv} options,
42 OUT i relevance,
43 OUT ao realm);
44 </programlisting>
45 <para><para> Discover realms for the given string. The input <parameter>string</parameter> is
46 usually a domain or realm name, perhaps typed by a user. If
47 an empty string is provided the realm provider should try to
48 discover a default realm if possible (eg: from DHCP).
49 </para><para> <parameter>options</parameter> can contain, but is not limited to, the following values:
50 <itemizedlist>
51 <listitem><para><literal>operation</literal>: a string
52 identifier chosen by the client, which can then later be
53 passed to <link linkend="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</link> in order
54 to cancel the operation</para></listitem>
55 <listitem><para><literal>client-software</literal>: a string
56 containing the client software identifier that the returned
57 realms should match.</para></listitem>
58 <listitem><para><literal>server-software</literal>: a string
59 containing the client software identifier that the returned
60 realms should match.</para></listitem>
61 </itemizedlist>
62 </para><para> The <parameter>relevance</parameter> returned can be used to rank results from
63 different discover calls to different providers. Implementors
64 should return a positive number if the provider highly
65 recommends that the realms be handled by this provider,
66 or a zero if it can possibly handle the realms. Negative
67 should be returned if no realms are found.
68 </para><para> This method does not return an error when no realms are
69 discovered. It simply returns an <parameter>realm</parameter> list.
70 </para><para> To see diagnostic information about the discovery process
71 connect to the org.freedesktop.realmd.Service::Diagnostics
72 signal.
73 </para><para> This method requires authorization for the PolicyKit action
74 called <literal>org.freedesktop.realmd.discover-realm</literal>.
75 </para><para> In addition to common DBus error results, this method may
76 return:
77 <itemizedlist>
78 <listitem><para><literal>org.freedesktop.realmd.Error.Failed</literal>:
79 may be returned if the discovery could not be run for some reason.</para></listitem>
80 <listitem><para><literal>org.freedesktop.realmd.Error.Cancelled</literal>:
81 returned if the operation was cancelled.</para></listitem>
82 <listitem><para><literal>org.freedesktop.realmd.Error.NotAuthorized</literal>:
83 returned if the calling client is not permitted to perform a discovery
84 operation.</para></listitem>
85 </itemizedlist>
86 </para></para>
87 <variablelist role="params">
88 <varlistentry>
89 <term><literal>IN s <parameter>string</parameter></literal>:</term>
90 <listitem><para>an input string to discover realms for</para></listitem>
91 </varlistentry>
92 <varlistentry>
93 <term><literal>IN a{sv} <parameter>options</parameter></literal>:</term>
94 <listitem><para>options for the discovery operation</para></listitem>
95 </varlistentry>
96 <varlistentry>
97 <term><literal>OUT i <parameter>relevance</parameter></literal>:</term>
98 <listitem><para>the relevance of the returned results</para></listitem>
99 </varlistentry>
100 <varlistentry>
101 <term><literal>OUT ao <parameter>realm</parameter></literal>:</term>
102 <listitem><para>a list of realms discovered</para></listitem>
103 </varlistentry>
104 </variablelist>
105 </refsect2>
106 </refsect1>
107 <refsect1 role="details" id="gdbus-properties-org.freedesktop.realmd.Provider">
108 <title role="details.title">Property Details</title>
109 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Provider.Name">
110 <title>The "Name" property</title>
111 <indexterm zone="gdbus-property-org-freedesktop-realmd-Provider.Name"><primary sortas="Provider:Name">org.freedesktop.realmd.Provider:Name</primary></indexterm>
112 <programlisting>
113 Name readable s
114 </programlisting>
115 <para><para>the name of the provider</para><para> The name of the provider. This is not normally displayed
116 to the user, but may be useful for diagnostics or debugging.
117 </para></para>
118 </refsect2>
119 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Provider.Version">
120 <title>The "Version" property</title>
121 <indexterm zone="gdbus-property-org-freedesktop-realmd-Provider.Version"><primary sortas="Provider:Version">org.freedesktop.realmd.Provider:Version</primary></indexterm>
122 <programlisting>
123 Version readable s
124 </programlisting>
125 <para><para>the version of the provider</para><para> The version of the provider. This is not normally used in
126 logic, but may be useful for diagnostics or debugging.
127 </para></para>
128 </refsect2>
129 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Provider.Realms">
130 <title>The "Realms" property</title>
131 <indexterm zone="gdbus-property-org-freedesktop-realmd-Provider.Realms"><primary sortas="Provider:Realms">org.freedesktop.realmd.Provider:Realms</primary></indexterm>
132 <programlisting>
133 Realms readable ao
134 </programlisting>
135 <para><para>a list of realms</para><para> A list of known, enrolled or discovered realms. All realms
136 that this provider knows about are listed here. As realms
137 are discovered they are added to this list.
138 </para><para> Each realm is represented by the DBus object path of the
139 realm object.
140 </para></para>
141 </refsect2>
142 </refsect1>
143 </refentry>
144
+0
-307
doc/manual/realmd-org.freedesktop.realmd.Realm.xml less more
0 <?xml version="1.0" encoding="utf-8"?>
1 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
2 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3 ]>
4 <refentry id="gdbus-org.freedesktop.realmd.Realm">
5 <refmeta> <refentrytitle role="top_of_page" id="gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</refentrytitle>
6 <indexterm zone="gdbus-interface-org-freedesktop-realmd-Realm.top_of_page"><primary sortas="Realm">org.freedesktop.realmd.Realm</primary></indexterm>
7 </refmeta> <refnamediv> <refname>org.freedesktop.realmd.Realm</refname> <refpurpose>a realm</refpurpose> </refnamediv> <refsynopsisdiv role="synopsis">
8 <title role="synopsis.title">Methods</title>
9 <synopsis>
10 <link linkend="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">Deconfigure</link> (IN a{sv} options);
11 <link linkend="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">ChangeLoginPolicy</link> (IN s login_policy,
12 IN as permitted_add,
13 IN as permitted_remove,
14 IN a{sv} options);
15 </synopsis>
16 </refsynopsisdiv>
17 <refsect1 role="properties">
18 <title role="properties.title">Properties</title>
19 <synopsis>
20 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.Name">Name</link> readable s
21 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.Configured">Configured</link> readable s
22 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">SupportedInterfaces</link> readable as
23 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.Details">Details</link> readable a(ss)
24 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages">RequiredPackages</link> readable as
25 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.LoginFormats">LoginFormats</link> readable as
26 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">LoginPolicy</link> readable s
27 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">PermittedLogins</link> readable as
28 </synopsis>
29 </refsect1>
30 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-realmd-Realm">
31 <title role="desc.title">Description</title>
32 <para><para> Represents one realm.
33 </para><para> Contains generic information about a realm, and useful properties for
34 introspecting what kind of realm this is and how to work with
35 the realm.
36 </para><para> Use <link linkend="gdbus-property-org-freedesktop-realmd-Provider.Realms">"Realms"</link> or
37 #<link linkend="gdbus-method-org-freedesktop-realmd-Provider.Discover">Discover()</link> to get access to some
38 kerberos realm objects.
39 </para><para> Realms will always implement additional interfaces, such as
40 <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>. Do not assume that all realms
41 implement that kerberos interface. Use the
42 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">"SupportedInterfaces"</link> property to see
43 which interfaces are set.
44 </para><para> Different realms support various ways to configure them on the
45 system. Use the <link linkend="gdbus-property-org-freedesktop-realmd-Realm.Configured">"Configured"</link> property
46 to determine if a realm is configured. If it is configured the
47 property will be set to the interface of the mechanism that was
48 used to configure it.
49 </para><para> To configure a realm, look in the
50 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">"SupportedInterfaces"</link> property for a
51 recognized purpose specific interface that can be used for
52 configuration, such as the
53 <link linkend="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</link> interface and its
54 #<link linkend="gdbus-method-org-freedesktop-realmd-KerberosMembership.Join">Join()</link> method.
55 </para><para> To deconfigure a realm from the current system, you can use the
56 #<link linkend="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">Deconfigure()</link> method. In additon some
57 of the configuration specific interfaces provide methods to
58 deconfigure a realm in a specific way, such as
59 #<link linkend="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">Leave()</link> method.
60 </para><para> The various properties are guaranteed to have been updated before
61 the operation methods return, if they change state.
62 </para></para>
63 </refsect1>
64 <refsect1 role="details" id="gdbus-methods-org.freedesktop.realmd.Realm">
65 <title role="details.title">Method Details</title>
66 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure">
67 <title>The Deconfigure() method</title>
68 <indexterm zone="gdbus-method-org-freedesktop-realmd-Realm.Deconfigure"><primary sortas="Realm.Deconfigure">org.freedesktop.realmd.Realm.Deconfigure()</primary></indexterm>
69 <programlisting>
70 Deconfigure (IN a{sv} options);
71 </programlisting>
72 <para><para>deconfigure this realm</para><para> Deconfigure this realm from the local machine with standard
73 default behavior.
74 </para><para> The behavior of this method depends on the which configuration
75 interface is present in the
76 <link linkend="gdbus-interface-org-freedesktop-realmd-Realm.top_of_page">org.freedesktop.realmd.Realm</link>.Configured property. It does not
77 always delete membership accounts in the realm, but just
78 reconfigures the local machine so it no longer is configured
79 for the given realm. In some cases the implementation may try
80 to update membership accounts, but this is not guaranteed.
81 </para><para> Various configuration interfaces may support more specific ways
82 to deconfigure a realm in a specific way, such as the
83 #<link linkend="gdbus-method-org-freedesktop-realmd-KerberosMembership.Leave">Leave()</link> method.
84 </para><para> <parameter>options</parameter> can contain, but is not limited to, the following values:
85 <itemizedlist>
86 <listitem><para><literal>operation</literal>: a string
87 identifier chosen by the client, which can then later be
88 passed to <link linkend="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</link> in order
89 to cancel the operation</para></listitem>
90 </itemizedlist>
91 </para><para> This method requires authorization for the PolicyKit action
92 called <literal>org.freedesktop.realmd.deconfigure-realm</literal>.
93 </para><para> In addition to common DBus error results, this method may return:
94 <itemizedlist>
95 <listitem><para><literal>org.freedesktop.realmd.Error.Failed</literal>:
96 may be returned if the deconfigure failed for a generic reason.</para></listitem>
97 <listitem><para><literal>org.freedesktop.realmd.Error.Cancelled</literal>:
98 returned if the operation was cancelled.</para></listitem>
99 <listitem><para><literal>org.freedesktop.realmd.Error.NotAuthorized</literal>:
100 returned if the calling client is not permitted to deconfigure a
101 realm.</para></listitem>
102 <listitem><para><literal>org.freedesktop.realmd.Error.NotConfigured</literal>:
103 returned if this realm is not configured on the machine.</para></listitem>
104 <listitem><para><literal>org.freedesktop.realmd.Error.Busy</literal>:
105 returned if the service is currently performing another operation like
106 join or leave.</para></listitem>
107 </itemizedlist>
108 </para></para>
109 <variablelist role="params">
110 <varlistentry>
111 <term><literal>IN a{sv} <parameter>options</parameter></literal>:</term>
112 <listitem><para></para></listitem>
113 </varlistentry>
114 </variablelist>
115 </refsect2>
116 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">
117 <title>The ChangeLoginPolicy() method</title>
118 <indexterm zone="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy"><primary sortas="Realm.ChangeLoginPolicy">org.freedesktop.realmd.Realm.ChangeLoginPolicy()</primary></indexterm>
119 <programlisting>
120 ChangeLoginPolicy (IN s login_policy,
121 IN as permitted_add,
122 IN as permitted_remove,
123 IN a{sv} options);
124 </programlisting>
125 <para><para> Change the login policy and/or permitted logins for this realm.
126 </para><para> Not all realms support the all the various login policies. An
127 error will be returned if the new login policy is not supported.
128 You may specify an empty string for the <parameter>login_policy</parameter> argument
129 which will cause no change in the policy itself. If the policy
130 is changed, it will be reflected in the
131 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">"LoginPolicy"</link> property.
132 </para><para> The <parameter>permitted_add</parameter> and <parameter>permitted_remove</parameter> arguments represent
133 lists of login names that should be added and removed from
134 the <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link>:PermittedLogins property.
135 </para><para> <parameter>options</parameter> can contain, but is not limited to, the following values:
136 <itemizedlist>
137 <listitem><para><literal>operation</literal>: a string
138 identifier chosen by the client, which can then later be
139 passed to <link linkend="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel()</link> in order
140 to cancel the operation</para></listitem>
141 </itemizedlist>
142 </para><para> This method requires authorization for the PolicyKit action
143 called <literal>org.freedesktop.realmd.login-policy</literal>.
144 </para><para> In addition to common DBus error results, this method may return:
145 <itemizedlist>
146 <listitem><para><literal>org.freedesktop.realmd.Error.Failed</literal>:
147 may be returned if the policy change failed for a generic reason.</para></listitem>
148 <listitem><para><literal>org.freedesktop.realmd.Error.Cancelled</literal>:
149 returned if the operation was cancelled.</para></listitem>
150 <listitem><para><literal>org.freedesktop.realmd.Error.NotAuthorized</literal>:
151 returned if the calling client is not permitted to change login policy
152 operation.</para></listitem>
153 <listitem><para><literal>org.freedesktop.realmd.Error.NotConfigured</literal>:
154 returned if the realm is not configured.</para></listitem>
155 <listitem><para><literal>org.freedesktop.realmd.Error.Busy</literal>:
156 returned if the service is currently performing another operation like
157 join or leave.</para></listitem>
158 </itemizedlist>
159 </para></para>
160 <variablelist role="params">
161 <varlistentry>
162 <term><literal>IN s <parameter>login_policy</parameter></literal>:</term>
163 <listitem><para>the new login policy, or an empty string</para></listitem>
164 </varlistentry>
165 <varlistentry>
166 <term><literal>IN as <parameter>permitted_add</parameter></literal>:</term>
167 <listitem><para>a list of logins to permit</para></listitem>
168 </varlistentry>
169 <varlistentry>
170 <term><literal>IN as <parameter>permitted_remove</parameter></literal>:</term>
171 <listitem><para>a list of logins to not permit</para></listitem>
172 </varlistentry>
173 <varlistentry>
174 <term><literal>IN a{sv} <parameter>options</parameter></literal>:</term>
175 <listitem><para>options for this operation</para></listitem>
176 </varlistentry>
177 </variablelist>
178 </refsect2>
179 </refsect1>
180 <refsect1 role="details" id="gdbus-properties-org.freedesktop.realmd.Realm">
181 <title role="details.title">Property Details</title>
182 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.Name">
183 <title>The "Name" property</title>
184 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.Name"><primary sortas="Realm:Name">org.freedesktop.realmd.Realm:Name</primary></indexterm>
185 <programlisting>
186 Name readable s
187 </programlisting>
188 <para><para>the realm name</para><para> This is the name of the realm, appropriate for display to
189 end users where necessary.
190 </para></para>
191 </refsect2>
192 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.Configured">
193 <title>The "Configured" property</title>
194 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.Configured"><primary sortas="Realm:Configured">org.freedesktop.realmd.Realm:Configured</primary></indexterm>
195 <programlisting>
196 Configured readable s
197 </programlisting>
198 <para><para>whether this domain is configured and how</para><para> If this property is an empty string, then the realm is not
199 configured. Otherwise the realm is configured, and contains
200 a string which is the interface that represents how it was
201 configured, for example <link linkend="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</link>.
202 </para></para>
203 </refsect2>
204 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces">
205 <title>The "SupportedInterfaces" property</title>
206 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.SupportedInterfaces"><primary sortas="Realm:SupportedInterfaces">org.freedesktop.realmd.Realm:SupportedInterfaces</primary></indexterm>
207 <programlisting>
208 SupportedInterfaces readable as
209 </programlisting>
210 <para><para> Additional supported interfaces of this realm. This includes
211 interfaces that contain more information about the realm,
212 such as <link linkend="gdbus-interface-org-freedesktop-realmd-Kerberos.top_of_page">org.freedesktop.realmd.Kerberos</link> and interfaces
213 which contain methods for configuring a realm, such as
214 <link linkend="gdbus-interface-org-freedesktop-realmd-KerberosMembership.top_of_page">org.freedesktop.realmd.KerberosMembership</link>.
215 </para></para>
216 </refsect2>
217 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.Details">
218 <title>The "Details" property</title>
219 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.Details"><primary sortas="Realm:Details">org.freedesktop.realmd.Realm:Details</primary></indexterm>
220 <programlisting>
221 Details readable a(ss)
222 </programlisting>
223 <para><para>informational details about the realm</para><para> Informational details about the realm. The following values
224 should be present:
225 <itemizedlist>
226 <listitem><para><literal>server-software</literal>:
227 identifier of the software running on the server (eg:
228 <literal>active-directory</literal>).</para></listitem>
229 <listitem><para><literal>client-software</literal>:
230 identifier of the software running on the client (eg:
231 <literal>sssd</literal>).</para></listitem>
232 </itemizedlist>
233 </para></para>
234 </refsect2>
235 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages">
236 <title>The "RequiredPackages" property</title>
237 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.RequiredPackages"><primary sortas="Realm:RequiredPackages">org.freedesktop.realmd.Realm:RequiredPackages</primary></indexterm>
238 <programlisting>
239 RequiredPackages readable as
240 </programlisting>
241 <para><para>prerequisite software</para><para> Software packages that are required in order for a join to
242 succeed. These are either simple strings like <literal>sssd</literal>,
243 or strings with an operator and version number like
244 <literal>sssd >= 1.9.0</literal>
245 </para><para> These values are specific to the packaging system that is
246 being run.
247 </para></para>
248 </refsect2>
249 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.LoginFormats">
250 <title>The "LoginFormats" property</title>
251 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.LoginFormats"><primary sortas="Realm:LoginFormats">org.freedesktop.realmd.Realm:LoginFormats</primary></indexterm>
252 <programlisting>
253 LoginFormats readable as
254 </programlisting>
255 <para><para>supported formats for login names</para><para> Supported formats for login to this realm. This is only
256 relevant once the realm has been enrolled. The formats
257 will contain a <literal><constant>U</constant></literal> in the string, which
258 indicate where the user name should be placed. The formats
259 may contain a <literal><constant>D</constant></literal> in the string which
260 indicate where a domain name should be placed.
261 </para><para> The first format in the list is the preferred format for
262 login names.
263 </para></para>
264 </refsect2>
265 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">
266 <title>The "LoginPolicy" property</title>
267 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy"><primary sortas="Realm:LoginPolicy">org.freedesktop.realmd.Realm:LoginPolicy</primary></indexterm>
268 <programlisting>
269 LoginPolicy readable s
270 </programlisting>
271 <para><para>the policy for logins using this realm</para><para> The policy for logging into this computer using this realm.
272 </para><para> The policy can be changed using the
273 #<link linkend="gdbus-method-org-freedesktop-realmd-Realm.ChangeLoginPolicy">ChangeLoginPolicy()</link> method.
274 </para><para> The following policies are predefined. Not all providers
275 support all these policies and there may be provider specific
276 policies or multiple policies represented in the string:
277 <itemizedlist>
278 <listitem><para><literal>allow-any-login</literal>: allow
279 login by any authenticated user present in this
280 realm.</para></listitem>
281 <listitem><para><literal>allow-permitted-logins</literal>:
282 only allow the logins permitted in the
283 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">"PermittedLogins"</link>
284 property.</para></listitem>
285 <listitem><para><literal>deny-any-login</literal>:
286 don't allow any logins via authenticated users of this
287 realm.</para></listitem>
288 </itemizedlist>
289 </para></para>
290 </refsect2>
291 <refsect2 role="property" id="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins">
292 <title>The "PermittedLogins" property</title>
293 <indexterm zone="gdbus-property-org-freedesktop-realmd-Realm.PermittedLogins"><primary sortas="Realm:PermittedLogins">org.freedesktop.realmd.Realm:PermittedLogins</primary></indexterm>
294 <programlisting>
295 PermittedLogins readable as
296 </programlisting>
297 <para><para>the permitted login names</para><para> The list of permitted authenticated users allowed to login
298 into this computer. This is only relevant if the
299 <link linkend="gdbus-property-org-freedesktop-realmd-Realm.LoginPolicy">"LoginPolicy"</link> property
300 contains the <literal>allow-permitted-logins</literal>
301 string.
302 </para></para>
303 </refsect2>
304 </refsect1>
305 </refentry>
306
+0
-131
doc/manual/realmd-org.freedesktop.realmd.Service.xml less more
0 <?xml version="1.0" encoding="utf-8"?>
1 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
2 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
3 ]>
4 <refentry id="gdbus-org.freedesktop.realmd.Service">
5 <refmeta> <refentrytitle role="top_of_page" id="gdbus-interface-org-freedesktop-realmd-Service.top_of_page">org.freedesktop.realmd.Service</refentrytitle>
6 <indexterm zone="gdbus-interface-org-freedesktop-realmd-Service.top_of_page"><primary sortas="Service">org.freedesktop.realmd.Service</primary></indexterm>
7 </refmeta> <refnamediv> <refname>org.freedesktop.realmd.Service</refname> <refpurpose>the realmd service</refpurpose> </refnamediv> <refsynopsisdiv role="synopsis">
8 <title role="synopsis.title">Methods</title>
9 <synopsis>
10 <link linkend="gdbus-method-org-freedesktop-realmd-Service.Cancel">Cancel</link> (IN s operation);
11 <link linkend="gdbus-method-org-freedesktop-realmd-Service.SetLocale">SetLocale</link> (IN s locale);
12 <link linkend="gdbus-method-org-freedesktop-realmd-Service.Release">Release</link> ();
13 </synopsis>
14 </refsynopsisdiv>
15 <refsect1 role="signal_proto">
16 <title role="signal_proto.title">Signals</title>
17 <synopsis>
18 <link linkend="gdbus-signal-org-freedesktop-realmd-Service.Diagnostics">Diagnostics</link> (s data,
19 s operation);
20 </synopsis>
21 </refsect1>
22 <refsect1 role="desc" id="gdbus-interface-org-freedesktop-realmd-Service">
23 <title role="desc.title">Description</title>
24 <para><para> Global calls for managing the realmd service. Usually you'll want
25 to use <link linkend="gdbus-interface-org-freedesktop-realmd-Provider.top_of_page">org.freedesktop.realmd.Provider</link> instead.
26 </para><para> This interface is implemented by the realmd service, and is always
27 available at the object path <literal>/org/freedesktop/realmd</literal>
28 </para><para> The service also implements the
29 <literal>org.freedesktop.DBus.ObjectManager</literal> interface which
30 makes it easy to retrieve all realmd objects and properties in one go.
31 </para></para>
32 </refsect1>
33 <refsect1 role="details" id="gdbus-methods-org.freedesktop.realmd.Service">
34 <title role="details.title">Method Details</title>
35 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-Service.Cancel">
36 <title>The Cancel() method</title>
37 <indexterm zone="gdbus-method-org-freedesktop-realmd-Service.Cancel"><primary sortas="Service.Cancel">org.freedesktop.realmd.Service.Cancel()</primary></indexterm>
38 <programlisting>
39 Cancel (IN s operation);
40 </programlisting>
41 <para><para> Cancel a realmd operation. To be able to cancel an operation
42 pass a uniquely chosen <literal>operation</literal> string
43 identifier as an option in the methods <literal>options</literal>
44 argument.
45 </para><para> These operation string identifiers should be unique per client
46 calling the realmd service.
47 </para><para> It is not guaranteed that the service can or will cancel the
48 operation. For example the operation may have already completed
49 by the time this method is handled. The caller of the operation
50 method will receive a
51 <literal>org.freedesktop.realmd.Error.Cancelled</literal>
52 if the operation was cancelled.
53 </para></para>
54 <variablelist role="params">
55 <varlistentry>
56 <term><literal>IN s <parameter>operation</parameter></literal>:</term>
57 <listitem><para>the operation to cancel</para></listitem>
58 </varlistentry>
59 </variablelist>
60 </refsect2>
61 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-Service.SetLocale">
62 <title>The SetLocale() method</title>
63 <indexterm zone="gdbus-method-org-freedesktop-realmd-Service.SetLocale"><primary sortas="Service.SetLocale">org.freedesktop.realmd.Service.SetLocale()</primary></indexterm>
64 <programlisting>
65 SetLocale (IN s locale);
66 </programlisting>
67 <para><para> Set the language <parameter>locale</parameter> for the client. This locale is used
68 for error messages. The locale is used until the next time
69 this method is called, the client disconnects, or the client
70 calls #<link linkend="gdbus-method-org-freedesktop-realmd-Service.Release">Release()</link>.
71 </para></para>
72 <variablelist role="params">
73 <varlistentry>
74 <term><literal>IN s <parameter>locale</parameter></literal>:</term>
75 <listitem><para>the locale for the client</para></listitem>
76 </varlistentry>
77 </variablelist>
78 </refsect2>
79 <refsect2 role="method" id="gdbus-method-org-freedesktop-realmd-Service.Release">
80 <title>The Release() method</title>
81 <indexterm zone="gdbus-method-org-freedesktop-realmd-Service.Release"><primary sortas="Service.Release">org.freedesktop.realmd.Service.Release()</primary></indexterm>
82 <programlisting>
83 Release ();
84 </programlisting>
85 <para><para> Normally realmd waits until all clients have disconnected
86 before exiting itself, sometime later. For long lived clients
87 they can call this method to allow the realmd service to quit.
88 This is an optimization. The daemon will not exit immediately.
89 It is safe to call this multiple times.
90 </para></para>
91 <variablelist role="params">
92 </variablelist>
93 </refsect2>
94 </refsect1>
95 <refsect1 role="details" id="gdbus-signals-org.freedesktop.realmd.Service">
96 <title role="details.title">Signal Details</title>
97 <refsect2 role="signal" id="gdbus-signal-org-freedesktop-realmd-Service.Diagnostics">
98 <title>The "Diagnostics" signal</title>
99 <indexterm zone="gdbus-signal-org-freedesktop-realmd-Service.Diagnostics"><primary sortas="Service::Diagnostics">org.freedesktop.realmd.Service::Diagnostics</primary></indexterm>
100 <programlisting>
101 Diagnostics (s data,
102 s operation);
103 </programlisting>
104 <para><para> This signal is fired when diagnostics result from an operation
105 in the provider or one of its realms.
106 </para><para> It is not guaranteed that this signal is emitted once per line.
107 More than one line may be contained in <parameter>data</parameter>, or a partial
108 line. New line characters are embedded in <parameter>data</parameter>.
109 </para><para> This signal is sent explicitly to the client which invoked
110 operation method. In order to tell which operation this
111 diagnostic data results from, pass a unique
112 <literal>operation</literal> string identifier in the
113 <literal>options</literal> argument of the operation method.
114 That same identifier will be passed back via the <parameter>operation</parameter>
115 argument of this signal.
116 </para></para>
117 <variablelist role="params">
118 <varlistentry>
119 <term><literal>s <parameter>data</parameter></literal>:</term>
120 <listitem><para>diagnostic data</para></listitem>
121 </varlistentry>
122 <varlistentry>
123 <term><literal>s <parameter>operation</parameter></literal>:</term>
124 <listitem><para>the operation this data resulted from</para></listitem>
125 </varlistentry>
126 </variablelist>
127 </refsect2>
128 </refsect1>
129 </refentry>
130
+0
-64
doc/manual/realmd-org.freedesktop.realmd.xml less more
0 <?xml version="1.0"?>
1 <span>&lt;node name='/'&gt;
2 &lt;interface name='org.freedesktop.realmd.Provider'&gt;
3 &lt;property name='Name' type='s' access='read'&gt;&lt;/property&gt;
4 &lt;property name='Version' type='s' access='read'&gt;&lt;/property&gt;
5 &lt;property name='Realms' type='ao' access='read'&gt;&lt;/property&gt;
6 &lt;method name='Discover'&gt;
7 &lt;arg name='string' type='s' direction='in'&gt;&lt;/arg&gt;
8 &lt;arg name='options' type='a{sv}' direction='in'&gt;&lt;/arg&gt;
9 &lt;arg name='relevance' type='i' direction='out'&gt;&lt;/arg&gt;
10 &lt;arg name='realm' type='ao' direction='out'&gt;&lt;/arg&gt;
11 &lt;/method&gt;
12 &lt;/interface&gt;
13 &lt;interface name='org.freedesktop.realmd.Service'&gt;
14 &lt;method name='Cancel'&gt;
15 &lt;arg name='operation' type='s' direction='in'&gt;&lt;/arg&gt;
16 &lt;/method&gt;
17 &lt;method name='SetLocale'&gt;
18 &lt;arg name='locale' type='s' direction='in'&gt;&lt;/arg&gt;
19 &lt;/method&gt;
20 &lt;signal name='Diagnostics'&gt;
21 &lt;arg name='data' type='s'&gt;&lt;/arg&gt;
22 &lt;arg name='operation' type='s'&gt;&lt;/arg&gt;
23 &lt;/signal&gt;
24 &lt;method name='Release'&gt;
25 &lt;/method&gt;
26 &lt;/interface&gt;
27 &lt;interface name='org.freedesktop.realmd.Realm'&gt;
28 &lt;property name='Name' type='s' access='read'&gt;&lt;/property&gt;
29 &lt;property name='Configured' type='s' access='read'&gt;&lt;/property&gt;
30 &lt;method name='Deconfigure'&gt;
31 &lt;arg name='options' type='a{sv}' direction='in'&gt;&lt;/arg&gt;
32 &lt;/method&gt;
33 &lt;property name='SupportedInterfaces' type='as' access='read'&gt;&lt;/property&gt;
34 &lt;property name='Details' type='a(ss)' access='read'&gt;&lt;/property&gt;
35 &lt;property name='RequiredPackages' type='as' access='read'&gt;&lt;/property&gt;
36 &lt;property name='LoginFormats' type='as' access='read'&gt;&lt;/property&gt;
37 &lt;property name='LoginPolicy' type='s' access='read'&gt;&lt;/property&gt;
38 &lt;property name='PermittedLogins' type='as' access='read'&gt;&lt;/property&gt;
39 &lt;method name='ChangeLoginPolicy'&gt;
40 &lt;arg name='login_policy' type='s' direction='in'&gt;&lt;/arg&gt;
41 &lt;arg name='permitted_add' type='as' direction='in'&gt;&lt;/arg&gt;
42 &lt;arg name='permitted_remove' type='as' direction='in'&gt;&lt;/arg&gt;
43 &lt;arg name='options' type='a{sv}' direction='in'&gt;&lt;/arg&gt;
44 &lt;/method&gt;
45 &lt;/interface&gt;
46 &lt;interface name='org.freedesktop.realmd.Kerberos'&gt;
47 &lt;property name='RealmName' type='s' access='read'&gt;&lt;/property&gt;
48 &lt;property name='DomainName' type='s' access='read'&gt;&lt;/property&gt;
49 &lt;/interface&gt;
50 &lt;interface name='org.freedesktop.realmd.KerberosMembership'&gt;
51 &lt;property name='SuggestedAdministrator' type='s' access='read'&gt;&lt;/property&gt;
52 &lt;property name='SupportedJoinCredentials' type='a(ss)' access='read'&gt;&lt;/property&gt;
53 &lt;property name='SupportedLeaveCredentials' type='a(ss)' access='read'&gt;&lt;/property&gt;
54 &lt;method name='Join'&gt;
55 &lt;arg name='credentials' type='(ssv)' direction='in'&gt;&lt;/arg&gt;
56 &lt;arg name='options' type='a{sv}' direction='in'&gt;&lt;/arg&gt;
57 &lt;/method&gt;
58 &lt;method name='Leave'&gt;
59 &lt;arg name='credentials' type='(ssv)' direction='in'&gt;&lt;/arg&gt;
60 &lt;arg name='options' type='a{sv}' direction='in'&gt;&lt;/arg&gt;
61 &lt;/method&gt;
62 &lt;/interface&gt;
63 &lt;/node&gt;</span>
+0
-0
doc/manual/realmd-overrides.txt less more
(Empty file)
+0
-0
doc/manual/realmd-sections.txt less more
(Empty file)
+0
-0
doc/manual/realmd.types less more
(Empty file)
0 .synopsis, .classsynopsis
1 {
2 /* tango:aluminium 1/2 */
3 background: #eeeeec;
4 border: solid 1px #d3d7cf;
5 padding: 0.5em;
6 }
7 .programlisting
8 {
9 /* tango:sky blue 0/1 */
10 background: #e6f3ff;
11 border: solid 1px #729fcf;
12 padding: 0.5em;
13 }
14 .variablelist
15 {
16 padding: 4px;
17 margin-left: 3em;
18 }
19 .variablelist td:first-child
20 {
21 vertical-align: top;
22 }
23
24 @media screen {
25 sup a.footnote
26 {
27 position: relative;
28 top: 0em ! important;
29 }
30 /* this is needed so that the local anchors are displayed below the naviagtion */
31 div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
32 {
33 display: inline-block;
34 position: relative;
35 top:-5em;
36 }
37 /* this seems to be a bug in the xsl style sheets when generating indexes */
38 div.index div.index
39 {
40 top: 0em;
41 }
42 /* make space for the fixed navigation bar and add space at the bottom so that
43 * link targets appear somewhat close to top
44 */
45 body
46 {
47 padding-top: 3.2em;
48 padding-bottom: 20em;
49 }
50 /* style and size the navigation bar */
51 table.navigation#top
52 {
53 position: fixed;
54 /* tango:scarlet red 0/1 */
55 background: #ffe6e6;
56 border: solid 1px #ef2929;
57 margin-top: 0;
58 margin-bottom: 0;
59 top: 0;
60 left: 0;
61 height: 3em;
62 z-index: 10;
63 }
64 .navigation a, .navigation a:visited
65 {
66 /* tango:scarlet red 3 */
67 color: #a40000;
68 }
69 .navigation a:hover
70 {
71 /* tango:scarlet red 1 */
72 color: #ef2929;
73 }
74 td.shortcuts
75 {
76 /* tango:scarlet red 1 */
77 color: #ef2929;
78 font-size: 80%;
79 white-space: nowrap;
80 }
81 }
82 @media print {
83 table.navigation {
84 visibility: collapse;
85 display: none;
86 }
87 div.titlepage table.navigation {
88 visibility: visible;
89 display: table;
90 /* tango:scarlet red 0/1 */
91 background: #ffe6e6;
92 border: solid 1px #ef2929;
93 margin-top: 0;
94 margin-bottom: 0;
95 top: 0;
96 left: 0;
97 height: 3em;
98 }
99 }
100
101 .navigation .title
102 {
103 font-size: 200%;
104 }
105
106 div.gallery-float
107 {
108 float: left;
109 padding: 10px;
110 }
111 div.gallery-float img
112 {
113 border-style: none;
114 }
115 div.gallery-spacer
116 {
117 clear: both;
118 }
119
120 a, a:visited
121 {
122 text-decoration: none;
123 /* tango:sky blue 2 */
124 color: #3465a4;
125 }
126 a:hover
127 {
128 text-decoration: underline;
129 /* tango:sky blue 1 */
130 color: #729fcf;
131 }
132
133 div.table table
134 {
135 border-collapse: collapse;
136 border-spacing: 0px;
137 /* tango:aluminium 3 */
138 border: solid 1px #babdb6;
139 }
140
141 div.table table td, div.table table th
142 {
143 /* tango:aluminium 3 */
144 border: solid 1px #babdb6;
145 padding: 3px;
146 vertical-align: top;
147 }
148
149 div.table table th
150 {
151 /* tango:aluminium 2 */
152 background-color: #d3d7cf;
153 }
154
155 hr
156 {
157 /* tango:aluminium 3 */
158 color: #babdb6;
159 background: #babdb6;
160 border: none 0px;
161 height: 1px;
162 clear: both;
163 }
164
165 .footer
166 {
167 padding-top: 3.5em;
168 /* tango:aluminium 3 */
169 color: #babdb6;
170 text-align: center;
171 font-size: 80%;
172 }
173
174 .warning
175 {
176 /* tango:orange 0/1 */
177 background: #ffeed9;
178 border-color: #ffb04f;
179 }
180 .note
181 {
182 /* tango:chameleon 0/0.5 */
183 background: #d8ffb2;
184 border-color: #abf562;
185 }
186 .note, .warning
187 {
188 padding: 0.5em;
189 border-width: 1px;
190 border-style: solid;
191 }
192 .note h3, .warning h3
193 {
194 margin-top: 0.0em
195 }
196 .note p, .warning p
197 {
198 margin-bottom: 0.0em
199 }
200
201 /* blob links */
202 h2 .extralinks, h3 .extralinks
203 {
204 float: right;
205 /* tango:aluminium 3 */
206 color: #babdb6;
207 font-size: 80%;
208 font-weight: normal;
209 }
210
211 .annotation
212 {
213 /* tango:aluminium 5 */
214 color: #555753;
215 font-size: 80%;
216 font-weight: normal;
217 }
218
219 /* code listings */
220
221 .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
222 .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
223 .listing_code .programlisting .function { color: #000000; font-weight: bold; }
224 .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
225 .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
226 .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
227 .listing_code .programlisting .normal { color: #000000; }
228 .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
229 .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
230 .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
231 .listing_code .programlisting .type { color: #000000; }
232 .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
233 .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
234
235 .listing_frame {
236 /* tango:sky blue 1 */
237 border: solid 1px #729fcf;
238 padding: 0px;
239 }
240
241 .listing_lines, .listing_code {
242 margin-top: 0px;
243 margin-bottom: 0px;
244 padding: 0.5em;
245 }
246 .listing_lines {
247 /* tango:sky blue 0.5 */
248 background: #a6c5e3;
249 /* tango:aluminium 6 */
250 color: #2e3436;
251 }
252 .listing_code {
253 /* tango:sky blue 0 */
254 background: #e6f3ff;
255 }
256 .listing_code .programlisting {
257 /* override from previous */
258 border: none 0px;
259 padding: 0px;
260 }
261 .listing_lines pre, .listing_code pre {
262 margin: 0px;
263 }
Binary diff not shown
Binary diff not shown
0 @import url("gtk-doc.css");
1
2 TABLE.navigation {
3 background-color: #238b49 !important;
4 border-width: 0 !important;
5 color: white;
6 font-family: Georgia, "Times New Roman", Times, serif;
7 height: 4em !important;
8 }
9
10 TABLE.navigation TH {
11 font-size: 30pt !important;
12 font-weight: normal;
13 text-align: left !important;
14 padding-left: 10pt;
15 }
16
17 TABLE.navigation TH:first-child {
18 padding-left: 40pt;
19 }
20
21 .shortcuts {
22 color: white !important;
23 }
24
25 .shortcuts a {
26 color: white !important;
27 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
28 }
29
30 P.title {
31 font-size: 30pt !important;
32 }
33
34 BODY {
35 padding-top: 5.5em !important;
36 margin: 0px;
37 }
38
39
40 /* Target all Firefox, since firefox has bug wrt TABLE + position: fixed */
41 @-moz-document url-prefix() {
42 TABLE.navigation { position: static !important; }
43 BODY { padding-top: 0 !important; }
44 }
45
46 DIV.book,
47 DIV.refentry,
48 DIV.chapter,
49 DIV.index,
50 DIV.footer,
51 DIV.section,
52 DIV.part {
53 font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif;
54 font-size: 9.5pt;
55 line-height: 150%;
56 }
57
58 BODY > DIV.book,
59 BODY > DIV.footer,
60 BODY > DIV.part {
61 margin-left: 1em;
62 margin-right: 1em;
63 }
64
65 BODY > DIV.refentry,
66 BODY > DIV.chapter,
67 BODY > DIV.index,
68 BODY > DIV.section {
69 margin-left: 3em;
70 margin-right: 1em;
71 }
72
73 DIV.variablelist TABLE {
74 font-size: 9.5pt;
75 line-height: 150%;
76 }
77
78 DIV.refsect1,
79 DIV.refsect2,
80 DIV.refsynopsisdiv {
81 margin-bottom: 3em !important;
82 }
83
84 H2 {
85 position: relative;
86 left: -1em;
87 font-weight: normal !important;
88 }
89
90 H3 {
91 position: relative;
92 left: -1em;
93 font-weight: normal !important;
94 }
95
96 DD > DL {
97 margin-top: 0.3em;
98 margin-bottom: 0.3em;
99 }
100
101 PRE.screen {
102 border: solid 1px #729fcf;
103 padding: 0.5em;
104 background: #e6f3ff;
105 }
106
107 CODE.option {
108 white-space: nowrap;
109 }
Binary diff not shown
+0
-0
doc/manual/tmpl/realmd-unused.sgml less more
(Empty file)
0 <?xml version='1.0'?> <!--*- mode: xml -*-->
1 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
2 version="1.0"
3 xmlns="http://www.w3.org/TR/xhtml1/transitional"
4 exclude-result-prefixes="#default">
5 <xsl:template name="version-greater-or-equal">
6 <xsl:param name="ver1"></xsl:param>
7 <xsl:param name="ver2"></xsl:param>
8 <xsl:variable name="vp1">
9 <xsl:choose>
10 <xsl:when test="contains($ver1, '.')">
11 <xsl:value-of select="substring-before($ver1, '.')"/>
12 </xsl:when>
13 <xsl:otherwise>
14 <xsl:value-of select="$ver1"/>
15 </xsl:otherwise>
16 </xsl:choose>
17 </xsl:variable>
18 <xsl:variable name="vp2">
19 <xsl:choose>
20 <xsl:when test="contains($ver2, '.')">
21 <xsl:value-of select="substring-before($ver2, '.')"/>
22 </xsl:when>
23 <xsl:otherwise>
24 <xsl:value-of select="$ver2"/>
25 </xsl:otherwise>
26 </xsl:choose>
27 </xsl:variable>
28 <xsl:choose>
29 <xsl:when test="$vp1 &gt; $vp2">
30 1
31 </xsl:when>
32 <xsl:when test="$vp1 &lt; $vp2">
33 0
34 </xsl:when>
35 <xsl:when test="$vp1 = $vp2">
36 <xsl:choose>
37 <xsl:when test="contains($ver1, '.') and contains($ver2, '.')">
38 <xsl:call-template name="version-greater-or-equal">
39 <xsl:with-param name="ver1" select="substring-after($ver1, '.')"/>
40 <xsl:with-param name="ver2" select="substring-after($ver2, '.')"/>
41 </xsl:call-template>
42 </xsl:when>
43 <xsl:when test="contains($ver2, '.')">
44 0
45 </xsl:when>
46 <xsl:otherwise>
47 1
48 </xsl:otherwise>
49 </xsl:choose>
50 </xsl:when>
51 </xsl:choose>
52 </xsl:template>
53 </xsl:stylesheet>
0 0.12
0 0.13.2
4949 subdir = doc/website
5050 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
5151 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
52 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
53 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
52 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
53 $(top_srcdir)/configure.ac
5454 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5555 $(ACLOCAL_M4)
5656 mkinstalldirs = $(install_sh) -d
112112 GMOFILES = @GMOFILES@
113113 GMSGFMT = @GMSGFMT@
114114 GREP = @GREP@
115 GTKDOC_CHECK = @GTKDOC_CHECK@
116 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
117 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
118 GTKDOC_MKPDF = @GTKDOC_MKPDF@
119 GTKDOC_REBASE = @GTKDOC_REBASE@
120 HTML_DIR = @HTML_DIR@
121115 INSTALL = @INSTALL@
122116 INSTALL_DATA = @INSTALL_DATA@
123117 INSTALL_PROGRAM = @INSTALL_PROGRAM@
180174 USE_NLS = @USE_NLS@
181175 VERSION = @VERSION@
182176 XGETTEXT = @XGETTEXT@
177 XMLTO = @XMLTO@
183178 XSLTPROC = @XSLTPROC@
184179 abs_builddir = @abs_builddir@
185180 abs_srcdir = @abs_srcdir@
194189 bindir = @bindir@
195190 build_alias = @build_alias@
196191 builddir = @builddir@
192 cachedir = @cachedir@
197193 datadir = @datadir@
198194 datarootdir = @datarootdir@
199195 docdir = @docdir@
416412 rm -rf $(builddir)/html/*
417413
418414 upload: all
419 rsync -Hvax --exclude docs --exclude releases \
415 rsync -Hvax --exclude docs --exclude internals --exclude releases \
420416 html/* anarchy.freedesktop.org:/srv/www.freedesktop.org/www/software/realmd/
421417
422418 .PHONY: html
+0
-280
gtk-doc.make less more
0 # -*- mode: makefile -*-
1
2 ####################################
3 # Everything below here is generic #
4 ####################################
5
6 if GTK_DOC_USE_LIBTOOL
7 GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
8 GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
9 GTKDOC_RUN = $(LIBTOOL) --mode=execute
10 else
11 GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
12 GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
13 GTKDOC_RUN =
14 endif
15
16 # We set GPATH here; this gives us semantics for GNU make
17 # which are more like other make's VPATH, when it comes to
18 # whether a source that is a target of one rule is then
19 # searched for in VPATH/GPATH.
20 #
21 GPATH = $(srcdir)
22
23 TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
24
25 SETUP_FILES = \
26 $(content_files) \
27 $(DOC_MAIN_SGML_FILE) \
28 $(DOC_MODULE)-sections.txt \
29 $(DOC_MODULE)-overrides.txt
30
31 EXTRA_DIST = \
32 $(HTML_IMAGES) \
33 $(SETUP_FILES)
34
35 DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \
36 html-build.stamp pdf-build.stamp \
37 tmpl.stamp sgml.stamp html.stamp pdf.stamp
38
39 SCANOBJ_FILES = \
40 $(DOC_MODULE).args \
41 $(DOC_MODULE).hierarchy \
42 $(DOC_MODULE).interfaces \
43 $(DOC_MODULE).prerequisites \
44 $(DOC_MODULE).signals
45
46 REPORT_FILES = \
47 $(DOC_MODULE)-undocumented.txt \
48 $(DOC_MODULE)-undeclared.txt \
49 $(DOC_MODULE)-unused.txt
50
51 CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
52
53 if ENABLE_GTK_DOC
54 if GTK_DOC_BUILD_HTML
55 HTML_BUILD_STAMP=html-build.stamp
56 else
57 HTML_BUILD_STAMP=
58 endif
59 if GTK_DOC_BUILD_PDF
60 PDF_BUILD_STAMP=pdf-build.stamp
61 else
62 PDF_BUILD_STAMP=
63 endif
64
65 all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
66 else
67 all-local:
68 endif
69
70 docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP)
71
72 $(REPORT_FILES): sgml-build.stamp
73
74 #### setup ####
75
76 setup-build.stamp:
77 -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
78 echo ' DOC Preparing build'; \
79 files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \
80 if test "x$$files" != "x" ; then \
81 for file in $$files ; do \
82 test -f $(abs_srcdir)/$$file && \
83 cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
84 done; \
85 fi; \
86 test -d $(abs_srcdir)/tmpl && \
87 { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \
88 chmod -R u+w $(abs_builddir)/tmpl; } \
89 fi
90 @touch setup-build.stamp
91
92 #### scan ####
93
94 scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
95 @echo ' DOC Scanning header files'
96 @_source_dir='' ; \
97 for i in $(DOC_SOURCE_DIR) ; do \
98 _source_dir="$${_source_dir} --source-dir=$$i" ; \
99 done ; \
100 gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES)
101 @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \
102 echo " DOC Introspecting gobjects"; \
103 scanobj_options=""; \
104 gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \
105 if test "$(?)" = "0"; then \
106 if test "x$(V)" = "x1"; then \
107 scanobj_options="--verbose"; \
108 fi; \
109 fi; \
110 CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
111 gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \
112 else \
113 for i in $(SCANOBJ_FILES) ; do \
114 test -f $$i || touch $$i ; \
115 done \
116 fi
117 @touch scan-build.stamp
118
119 $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
120 @true
121
122 #### templates ####
123
124 tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
125 @echo ' DOC Rebuilding template files'
126 @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
127 @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
128 if test -w $(abs_srcdir) ; then \
129 cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \
130 fi \
131 fi
132 @touch tmpl-build.stamp
133
134 tmpl.stamp: tmpl-build.stamp
135 @true
136
137 $(srcdir)/tmpl/*.sgml:
138 @true
139
140 #### xml ####
141
142 sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
143 @echo ' DOC Building XML'
144 @-chmod -R u+w $(srcdir)
145 @_source_dir='' ; \
146 for i in $(DOC_SOURCE_DIR) ; do \
147 _source_dir="$${_source_dir} --source-dir=$$i" ; \
148 done ; \
149 gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS)
150 @touch sgml-build.stamp
151
152 sgml.stamp: sgml-build.stamp
153 @true
154
155 #### html ####
156
157 html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
158 @echo ' DOC Building HTML'
159 @rm -rf html
160 @mkdir html
161 @mkhtml_options=""; \
162 gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \
163 if test "$(?)" = "0"; then \
164 if test "x$(V)" = "x1"; then \
165 mkhtml_options="$$mkhtml_options --verbose"; \
166 fi; \
167 fi; \
168 gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
169 if test "$(?)" = "0"; then \
170 mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \
171 fi; \
172 cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
173 -@test "x$(HTML_IMAGES)" = "x" || \
174 for file in $(HTML_IMAGES) ; do \
175 if test -f $(abs_srcdir)/$$file ; then \
176 cp $(abs_srcdir)/$$file $(abs_builddir)/html; \
177 fi; \
178 if test -f $(abs_builddir)/$$file ; then \
179 cp $(abs_builddir)/$$file $(abs_builddir)/html; \
180 fi; \
181 done;
182 @echo ' DOC Fixing cross-references'
183 @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
184 @touch html-build.stamp
185
186 #### pdf ####
187
188 pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
189 @echo ' DOC Building PDF'
190 @rm -f $(DOC_MODULE).pdf
191 @mkpdf_options=""; \
192 gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \
193 if test "$(?)" = "0"; then \
194 if test "x$(V)" = "x1"; then \
195 mkpdf_options="$$mkpdf_options --verbose"; \
196 fi; \
197 fi; \
198 if test "x$(HTML_IMAGES)" != "x"; then \
199 for img in $(HTML_IMAGES); do \
200 part=`dirname $$img`; \
201 echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \
202 if test $$? != 0; then \
203 mkpdf_options="$$mkpdf_options --imgdir=$$part"; \
204 fi; \
205 done; \
206 fi; \
207 gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS)
208 @touch pdf-build.stamp
209
210 ##############
211
212 clean-local:
213 @rm -f *~ *.bak
214 @rm -rf .libs
215
216 distclean-local:
217 @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \
218 $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
219 @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
220 rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \
221 rm -rf tmpl; \
222 fi
223
224 maintainer-clean-local: clean
225 @rm -rf xml html
226
227 install-data-local:
228 @installfiles=`echo $(builddir)/html/*`; \
229 if test "$$installfiles" = '$(builddir)/html/*'; \
230 then echo 1>&2 'Nothing to install' ; \
231 else \
232 if test -n "$(DOC_MODULE_VERSION)"; then \
233 installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
234 else \
235 installdir="$(DESTDIR)$(TARGET_DIR)"; \
236 fi; \
237 $(mkinstalldirs) $${installdir} ; \
238 for i in $$installfiles; do \
239 echo ' $(INSTALL_DATA) '$$i ; \
240 $(INSTALL_DATA) $$i $${installdir}; \
241 done; \
242 if test -n "$(DOC_MODULE_VERSION)"; then \
243 mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
244 $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
245 fi; \
246 $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \
247 fi
248
249 uninstall-local:
250 @if test -n "$(DOC_MODULE_VERSION)"; then \
251 installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
252 else \
253 installdir="$(DESTDIR)$(TARGET_DIR)"; \
254 fi; \
255 rm -rf $${installdir}
256
257 #
258 # Require gtk-doc when making dist
259 #
260 if ENABLE_GTK_DOC
261 dist-check-gtkdoc:
262 else
263 dist-check-gtkdoc:
264 @echo "*** gtk-doc must be installed and enabled in order to make dist"
265 @false
266 endif
267
268 dist-hook: dist-check-gtkdoc dist-hook-local
269 @mkdir $(distdir)/tmpl
270 @mkdir $(distdir)/html
271 @-cp ./tmpl/*.sgml $(distdir)/tmpl
272 @cp ./html/* $(distdir)/html
273 @-cp ./$(DOC_MODULE).pdf $(distdir)/
274 @-cp ./$(DOC_MODULE).types $(distdir)/
275 @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/
276 @cd $(distdir) && rm -f $(DISTCLEANFILES)
277 @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html
278
279 .PHONY : dist-hook-local docs
00 service/org.freedesktop.realmd.policy.in
11 service/realm-command.c
2 service/realm-example.c
3 service/realm-invocation.c
24 service/realm-kerberos.c
35 service/realm-provider.c
46 service/realm-samba.c
57 service/realm-sssd-ad.c
68 service/realm-sssd-config.c
9 service/realm-sssd-ipa.c
710 tools/realm.c
811 tools/realm-client.c
912 tools/realm-discover.c
+181
-162
po/pl.po less more
0 # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
1 # Aviary.pl
2 # Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
3 # pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas:
4 # gnomepl@aviary.pl
5 # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
6 # Piotr Drąg <piotrdrag@gmail.com>, 2012.
7 # Aviary.pl <gnomepl@aviary.pl>, 2012.
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 #
4 # Translators:
85 msgid ""
96 msgstr ""
107 "Project-Id-Version: realmd\n"
118 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2012-11-01 17:40+0100\n"
13 "PO-Revision-Date: 2012-11-01 17:42+0100\n"
14 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
15 "Language-Team: Polish <gnomepl@aviary.pl>\n"
16 "Language: pl\n"
9 "POT-Creation-Date: 2013-02-11 12:53+0100\n"
10 "PO-Revision-Date: 2013-02-13 18:08+0000\n"
11 "Last-Translator: stef0x77 <stefw@gnome.org>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
1713 "MIME-Version: 1.0\n"
1814 "Content-Type: text/plain; charset=UTF-8\n"
1915 "Content-Transfer-Encoding: 8bit\n"
20 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
21 "|| n%100>=20) ? 1 : 2);\n"
22 "X-Poedit-Language: Polish\n"
23 "X-Poedit-Country: Poland\n"
16 "Language: pl\n"
17 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
2418
2519 #: ../service/org.freedesktop.realmd.policy.in.h:1
2620 msgid "Discover realm"
3630
3731 #: ../service/org.freedesktop.realmd.policy.in.h:4
3832 msgid "Authentication is required to join this machine to a realm or domain"
39 msgstr ""
40 "Wymagane jest uwierzytelnienie, aby dołączyć ten komputer do obszaru lub "
41 "domeny"
33 msgstr "Wymagane jest uwierzytelnienie, aby dołączyć ten komputer do obszaru lub domeny"
4234
4335 #: ../service/org.freedesktop.realmd.policy.in.h:5
4436 msgid "Remove machine from realm"
4739 #: ../service/org.freedesktop.realmd.policy.in.h:6
4840 msgid ""
4941 "Authentication is required to remove this computer from a realm or domain."
50 msgstr ""
51 "Wymagane jest uwierzytelnienie, aby usunąć ten komputer z obszaru lub domeny."
42 msgstr "Wymagane jest uwierzytelnienie, aby usunąć ten komputer z obszaru lub domeny."
5243
5344 #: ../service/org.freedesktop.realmd.policy.in.h:7
5445 msgid "Change login policy"
5849 msgid ""
5950 "Authentication is required to change the policy of who can log in on this "
6051 "computer."
61 msgstr ""
62 "Wymagane jest uwierzytelnienie, aby zmienić politykę zezwalania na logowanie "
63 "na tym komputerze."
64
65 #: ../service/realm-command.c:345
52 msgstr "Wymagane jest uwierzytelnienie, aby zmienić politykę zezwalania na logowanie na tym komputerze."
53
54 #: ../service/realm-command.c:346
6655 #, c-format
6756 msgid "Process was terminated with signal: %d"
6857 msgstr "Proces został zakończony z sygnałem: %d"
6958
70 #: ../service/realm-command.c:394
59 #: ../service/realm-command.c:395
7160 msgid "The operation was cancelled"
7261 msgstr "Działanie zostało anulowane"
7362
74 #: ../service/realm-kerberos.c:116
63 #: ../service/realm-command.c:572
64 #, c-format
65 msgid "Configured command not found: %s"
66 msgstr "Nie odnaleziono skonfigurowanego polecenia: %s"
67
68 #: ../service/realm-command.c:577
69 #, c-format
70 msgid "Skipped command: %s"
71 msgstr "Pominięto polecenie: %s"
72
73 #: ../service/realm-command.c:583
74 #, c-format
75 msgid "Configured command invalid: %s"
76 msgstr "Skonfigurowane polecenie jest nieprawidłowe: %s"
77
78 #: ../service/realm-example.c:183 ../service/realm-samba.c:272
79 #: ../service/realm-sssd-ad.c:391
80 #, c-format
81 msgid "Unsupported or unknown membership software '%s'"
82 msgstr "Nieobsługiwane lub nieznane oprogramowania członkostwa \"%s\""
83
84 #: ../service/realm-example.c:296 ../service/realm-samba.c:312
85 msgid "Already joined to a domain"
86 msgstr "Już dołączono do domeny"
87
88 #: ../service/realm-example.c:305 ../service/realm-example.c:392
89 msgid "Admin name or password is not valid"
90 msgstr "Nazwa administratora lub hasło jest nieprawidłowe"
91
92 #: ../service/realm-example.c:361 ../service/realm-samba.c:446
93 #: ../service/realm-sssd-ad.c:642
94 msgid "Not currently joined to this domain"
95 msgstr "Obecnie nie dołączono do tej domeny"
96
97 #: ../service/realm-example.c:427
98 msgid "Need credentials for leaving this domain"
99 msgstr ""
100
101 #: ../service/realm-invocation.c:533
102 msgid "Not authorized to perform this action"
103 msgstr "Brak upoważnienia do wykonania tej czynności"
104
105 #: ../service/realm-kerberos.c:117 ../service/realm-kerberos.c:195
106 #: ../service/realm-provider.c:114
107 msgid "Operation was cancelled."
108 msgstr ""
109
110 #: ../service/realm-kerberos.c:122
75111 msgid "Failed to enroll machine in realm. See diagnostics."
76 msgstr ""
77 "Zapisanie komputera do obszaru się nie powiodło. Proszę zobaczyć wyjście "
78 "diagnostyczne."
79
80 #: ../service/realm-kerberos.c:186
112 msgstr "Zapisanie komputera do obszaru się nie powiodło. Proszę zobaczyć wyjście diagnostyczne."
113
114 #: ../service/realm-kerberos.c:200
81115 msgid "Failed to unenroll machine from domain. See diagnostics."
82 msgstr ""
83 "Wypisanie komputera z domeny się nie powiodło. Proszę zobaczyć wyjście "
84 "diagnostyczne."
85
86 #: ../service/realm-kerberos.c:228
116 msgstr "Wypisanie komputera z domeny się nie powiodło. Proszę zobaczyć wyjście diagnostyczne."
117
118 #: ../service/realm-kerberos.c:246
87119 msgid "Enrolling this realm using a credential cache is not supported"
88 msgstr ""
89 "Zapisywanie do tego obszaru używając pamięci podręcznej danych "
90 "uwierzytelniających jest nieobsługiwane"
91
92 #: ../service/realm-kerberos.c:229
120 msgstr "Zapisywanie do tego obszaru używając pamięci podręcznej danych uwierzytelniających jest nieobsługiwane"
121
122 #: ../service/realm-kerberos.c:247
93123 msgid "Unenrolling this realm using a credential cache is not supported"
94 msgstr ""
95 "Wypisywanie z tego obszaru używając pamięci podręcznej danych "
96 "uwierzytelniających jest nieobsługiwane"
97
98 #: ../service/realm-kerberos.c:235 ../service/realm-kerberos.c:281
99 #: ../service/realm-kerberos.c:327 ../service/realm-kerberos.c:370
100 #: ../service/realm-kerberos.c:663
124 msgstr "Wypisywanie z tego obszaru używając pamięci podręcznej danych uwierzytelniających jest nieobsługiwane"
125
126 #: ../service/realm-kerberos.c:253 ../service/realm-kerberos.c:299
127 #: ../service/realm-kerberos.c:345 ../service/realm-kerberos.c:388
128 #: ../service/realm-kerberos.c:669
101129 msgid "Already running another action"
102130 msgstr "Inne działanie jest już uruchomione"
103131
104 #: ../service/realm-kerberos.c:274
132 #: ../service/realm-kerberos.c:292
105133 msgid "Enrolling this realm using a secret is not supported"
106134 msgstr "Zapisywanie do tego obszaru używając sekretu jest nieobsługiwane"
107135
108 #: ../service/realm-kerberos.c:275
136 #: ../service/realm-kerberos.c:293
109137 msgid "Unenrolling this realm using a secret is not supported"
110138 msgstr "Wypisywanie z tego obszaru używając sekretu jest nieobsługiwane"
111139
112 #: ../service/realm-kerberos.c:320
140 #: ../service/realm-kerberos.c:338
113141 msgid "Enrolling this realm using a password is not supported"
114142 msgstr "Zapisywanie do tego obszaru używając hasła jest nieobsługiwane"
115143
116 #: ../service/realm-kerberos.c:321
144 #: ../service/realm-kerberos.c:339
117145 msgid "Unenrolling this realm using a password is not supported"
118146 msgstr "Wypisywanie z tego obszaru używając hasła jest nieobsługiwane"
119147
120 #: ../service/realm-kerberos.c:363
148 #: ../service/realm-kerberos.c:381
121149 msgid "Enrolling this realm without credentials is not supported"
122 msgstr ""
123 "Zapisywanie do tego obszaru bez danych uwierzytelniających jest "
124 "nieobsługiwane"
125
126 #: ../service/realm-kerberos.c:364
150 msgstr "Zapisywanie do tego obszaru bez danych uwierzytelniających jest nieobsługiwane"
151
152 #: ../service/realm-kerberos.c:382
127153 msgid "Unenrolling this realm without credentials is not supported"
128 msgstr ""
129 "Wypisywanie z tego obszaru bez danych uwierzytelniających jest nieobsługiwane"
130
131 #: ../service/realm-kerberos.c:420
154 msgstr "Wypisywanie z tego obszaru bez danych uwierzytelniających jest nieobsługiwane"
155
156 #: ../service/realm-kerberos.c:438
132157 msgid "Invalid zero length credential cache argument"
133 msgstr ""
134 "Nieprawidłowy parametr pamięci podręcznej danych uwierzytelniających o "
135 "zerowej długości"
136
137 #: ../service/realm-kerberos.c:605
158 msgstr "Nieprawidłowy parametr pamięci podręcznej danych uwierzytelniających o zerowej długości"
159
160 #: ../service/realm-kerberos.c:614
138161 msgid "Failed to change permitted logins. See diagnostics."
139 msgstr ""
140 "Zmiana zezwolonych logowań się nie powiodła. Proszę zobaczyć wyjście "
141 "diagnostyczne."
142
143 #: ../service/realm-kerberos.c:714 ../service/realm-provider.c:166
144 msgid "Not authorized to perform this action"
145 msgstr "Brak upoważnienia do wykonania tej czynności"
146
147 #: ../service/realm-kerberos.c:905
162 msgstr "Zmiana zezwolonych logowań się nie powiodła. Proszę zobaczyć wyjście diagnostyczne."
163
164 #: ../service/realm-kerberos.c:876
148165 #, c-format
149166 msgid "The realm does not allow specifying logins"
150167 msgstr "Obszar nie zezwala na określanie logowań"
151168
152 #: ../service/realm-kerberos.c:913
169 #: ../service/realm-kerberos.c:884
153170 #, c-format
154171 msgid "Invalid login argument%s%s%s does not match the login format."
155 msgstr ""
156 "Nieprawidłowy parametr logowania%s%s%s nie pasuje do formatu logowania."
157
158 #: ../service/realm-provider.c:109
172 msgstr "Nieprawidłowy parametr logowania%s%s%s nie pasuje do formatu logowania."
173
174 #: ../service/realm-provider.c:119
159175 msgid "Failed to discover realm. See diagnostics."
160 msgstr ""
161 "Wykrycie obszaru się nie powiodło. Proszę zobaczyć wyjście diagnostyczne."
176 msgstr "Wykrycie obszaru się nie powiodło. Proszę zobaczyć wyjście diagnostyczne."
162177
163178 #: ../service/realm-samba.c:211 ../service/realm-sssd-ad.c:282
164179 #, c-format
165180 msgid "Failed to calculate domain workgroup"
166181 msgstr "Obliczenie grupy roboczej domeny się nie powiodło"
167182
168 #: ../service/realm-samba.c:272 ../service/realm-sssd-ad.c:391
169 #, c-format
170 msgid "Unsupported or unknown membership software '%s'"
171 msgstr "Nieobsługiwane lub nieznane oprogramowania członkostwa \"%s\""
172
173 #: ../service/realm-samba.c:312
174 msgid "Already joined to a domain"
175 msgstr "Już dołączono do domeny"
176
177 #: ../service/realm-samba.c:446 ../service/realm-sssd-ad.c:642
178 msgid "Not currently joined to this domain"
179 msgstr "Obecnie nie dołączono do tej domeny"
180
181183 #: ../service/realm-samba.c:512
182184 #, c-format
183185 msgid "Not joined to this domain"
203205 msgid ""
204206 "Joining a domain with a one time password is only supported with the '%s' "
205207 "membership software"
206 msgstr ""
207 "Dołączenie do domeny za pomocą jednorazowego hasła jest obsługiwane tylko za "
208 "pomocą oprogramowania członkostwa \"%s\""
208 msgstr "Dołączenie do domeny za pomocą jednorazowego hasła jest obsługiwane tylko za pomocą oprogramowania członkostwa \"%s\""
209209
210210 #: ../service/realm-sssd-ad.c:422
211211 #, c-format
212212 msgid ""
213213 "Joining a domain with a user password is only supported with the '%s' "
214214 "membership software"
215 msgstr ""
216 "Dołączenie do domeny za pomocą hasła użytkownika jest obsługiwane tylko za "
217 "pomocą oprogramowania członkostwa \"%s\""
215 msgstr "Dołączenie do domeny za pomocą hasła użytkownika jest obsługiwane tylko za pomocą oprogramowania członkostwa \"%s\""
218216
219217 #: ../service/realm-sssd-ad.c:439
220218 #, c-format
221219 msgid "Unsupported credentials for joining a domain"
222220 msgstr "Nieobsługiwane dane uwierzytelniające do dołączenia do domeny"
223221
224 #: ../service/realm-sssd-ad.c:482
222 #: ../service/realm-sssd-ad.c:482 ../tools/realm-join.c:198
225223 msgid "Already joined to this domain"
226224 msgstr "Już dołączono do tej domeny"
227225
229227 msgid "A domain with this name is already configured"
230228 msgstr "Domena o tej nazwie jest już skonfigurowana"
231229
232 #: ../service/realm-sssd-config.c:125
230 #: ../service/realm-sssd-config.c:154
233231 #, c-format
234232 msgid "Already have domain %s in sssd.conf config file"
235233 msgstr "Domena %s już istnieje w pliku konfiguracji sssd.conf"
234
235 #: ../service/realm-sssd-config.c:199
236 #, c-format
237 msgid "Don't have domain %s in sssd.conf config file"
238 msgstr ""
236239
237240 #: ../tools/realm.c:40
238241 msgid "Discover available realm"
258261 msgid "Deny user logins"
259262 msgstr "Zabrania logowania użytkownika"
260263
261 #: ../tools/realm.c:172
264 #: ../tools/realm.c:175
262265 msgid "Couldn't read credential cache"
263266 msgstr "Nie można odczytać pamięci podręcznej danych uwierzytelniających"
264267
265 #: ../tools/realm.c:202
268 #: ../tools/realm.c:217
266269 msgid "Couldn't initialize kerberos"
267270 msgstr "Nie można zainicjować oprogramowania Kerberos"
268271
269 #: ../tools/realm.c:211
272 #: ../tools/realm.c:226
270273 #, c-format
271274 msgid "Couldn't parse user name: %s"
272275 msgstr "Nie można przetworzyć nazwy użytkownika: %s"
273276
274 #: ../tools/realm.c:217
277 #: ../tools/realm.c:232
275278 msgid "Couldn't setup kerberos options"
276279 msgstr "Nie można ustawić opcji oprogramowania Kerberos"
277280
278 #: ../tools/realm.c:226
281 #: ../tools/realm.c:245
279282 #, c-format
280283 msgid "Couldn't create credential cache file: %s"
281 msgstr ""
282 "Nie można utworzyć pliku pamięci podręcznej danych uwierzytelniających: %s"
283
284 #: ../tools/realm.c:233
284 msgstr "Nie można utworzyć pliku pamięci podręcznej danych uwierzytelniających: %s"
285
286 #: ../tools/realm.c:252
285287 msgid "Couldn't resolve credential cache"
286288 msgstr "Nie można rozwiązać pamięci podręcznej danych uwierzytelniających"
287289
288 #: ../tools/realm.c:239
290 #: ../tools/realm.c:258
289291 msgid "Couldn't setup credential cache"
290292 msgstr "Nie można ustawić pamięci podręcznej danych uwierzytelniających"
291293
292 #: ../tools/realm.c:247
294 #: ../tools/realm.c:266
293295 #, c-format
294296 msgid "Invalid password for %s"
295297 msgstr "Nieprawidłowe hasło dla %s"
296298
297 #: ../tools/realm.c:250
299 #: ../tools/realm.c:269
298300 #, c-format
299301 msgid "Couldn't authenticate as %s"
300302 msgstr "Nie można uwierzytelnić jako %s"
301303
302 #: ../tools/realm.c:295
304 #: ../tools/realm.c:314
303305 msgid "Install mode to a specific prefix"
304306 msgstr "Tryb instalacji do podanego przedrostka"
305307
306 #: ../tools/realm.c:296
308 #: ../tools/realm.c:315
307309 msgid "Verbose output"
308310 msgstr "Więcej informacji"
309311
310 #: ../tools/realm-client.c:163
312 #: ../tools/realm-client.c:177 ../tools/realm-client.c:187
311313 msgid "Couldn't connect to realm service"
312314 msgstr "Nie można połączyć z usługą obszarów"
313315
314 #: ../tools/realm-client.c:184
316 #: ../tools/realm-client.c:216
315317 msgid "Couldn't load the realm service"
316318 msgstr "Nie można wczytać usługi obszarów"
317319
318 #: ../tools/realm-client.c:202
320 #: ../tools/realm-client.c:233
319321 msgid "Couldn't connect to system bus"
320322 msgstr "Nie można połączyć z magistralą systemową"
321323
322 #: ../tools/realm-client.c:232
324 #: ../tools/realm-client.c:263
323325 #, c-format
324326 msgid "Couldn't create socket pair: %s"
325327 msgstr "Nie można utworzyć pary gniazd: %s"
326328
327 #: ../tools/realm-client.c:240 ../tools/realm-client.c:272
329 #: ../tools/realm-client.c:271 ../tools/realm-client.c:303
328330 msgid "Couldn't create socket"
329331 msgstr "Nie można utworzyć gniazda"
330332
331 #: ../tools/realm-client.c:253
333 #: ../tools/realm-client.c:284
332334 msgid "Couldn't run realmd"
333335 msgstr "Nie można uruchomić usługi realmd"
334336
335 #: ../tools/realm-client.c:480
337 #: ../tools/realm-client.c:513
336338 #, c-format
337339 msgid "Realm does not support membership using a password"
338340 msgstr "Obszar nie obsługuje członkostwa używając hasła"
339341
340 #: ../tools/realm-client.c:495
342 #: ../tools/realm-client.c:528
341343 #, c-format
342344 msgid "Password for %s: "
343345 msgstr "Hasło dla %s: "
344346
345 #: ../tools/realm-client.c:501
347 #: ../tools/realm-client.c:534
346348 #, c-format
347349 msgid "Couldn't prompt for password: %s"
348350 msgstr "Nie można zapytać o hasło: %s"
349351
350 #: ../tools/realm-client.c:543
352 #: ../tools/realm-client.c:575
351353 #, c-format
352354 msgid "Realm does not support membership using a one time password"
353355 msgstr "Obszar nie obsługuje członkostwa używając hasła jednorazowego"
354356
355 #: ../tools/realm-client.c:565
357 #: ../tools/realm-client.c:597
356358 #, c-format
357359 msgid "Realm does not support automatic membership"
358360 msgstr "Obszar nie obsługuje automatycznego członkostwa"
359361
360 #: ../tools/realm-discover.c:125
362 #: ../tools/realm-discover.c:132
361363 msgid "Couldn't discover realms"
362364 msgstr "Nie można wykryć obszarów"
363365
364 #: ../tools/realm-discover.c:145
366 #: ../tools/realm-discover.c:152
365367 msgid "No default realm discovered"
366368 msgstr "Nie wykryto domyślnego obszaru"
367369
368 #: ../tools/realm-discover.c:147
370 #: ../tools/realm-discover.c:154
369371 #, c-format
370372 msgid "No such realm found: %s"
371373 msgstr "Nie odnaleziono takiego obszaru: %s"
372374
373 #: ../tools/realm-discover.c:169
375 #: ../tools/realm-discover.c:178
374376 msgid "Show all discovered realms"
375377 msgstr "Wyświetla wszystkie wykryte obszary"
376378
377 #: ../tools/realm-discover.c:170 ../tools/realm-join.c:237
378 #: ../tools/realm-leave.c:268
379 #: ../tools/realm-discover.c:179 ../tools/realm-discover.c:272
380 msgid "Show only the names"
381 msgstr "Wyświetla tylko nazwy"
382
383 #: ../tools/realm-discover.c:180 ../tools/realm-join.c:250
384 #: ../tools/realm-leave.c:266
379385 msgid "Use specific client software"
380386 msgstr "Używa podanego oprogramowania klienta"
381387
382 #: ../tools/realm-discover.c:171 ../tools/realm-join.c:239
383 #: ../tools/realm-leave.c:271
388 #: ../tools/realm-discover.c:181 ../tools/realm-join.c:254
389 msgid "Use specific membership software"
390 msgstr "Używa podanego oprogramowania członkostwa"
391
392 #: ../tools/realm-discover.c:182 ../tools/realm-join.c:252
393 #: ../tools/realm-leave.c:269
384394 msgid "Use specific server software"
385395 msgstr "Używa podanego oprogramowania serwera"
386396
387 #: ../tools/realm-discover.c:253
397 #: ../tools/realm-discover.c:271
388398 msgid "Show all realms"
389399 msgstr "Wyświetla wszystkie obszary"
390400
393403 msgid "Couldn't join realm"
394404 msgstr "Nie można dołączyć do obszaru"
395405
396 #: ../tools/realm-join.c:185
406 #: ../tools/realm-join.c:188
397407 msgid "Couldn't discover realm"
398408 msgstr "Nie można wykryć obszaru"
399409
400 #: ../tools/realm-join.c:188
410 #: ../tools/realm-join.c:191
401411 msgid "No such realm found"
402412 msgstr "Nie odnaleziono takiego obszaru"
403413
404 #: ../tools/realm-join.c:233
414 #: ../tools/realm-join.c:246
405415 msgid "User name to use for enrollment"
406416 msgstr "Nazwa użytkownika do użycia do zapisania"
407417
408 #: ../tools/realm-join.c:235
418 #: ../tools/realm-join.c:248
409419 msgid "Computer OU DN to join"
410420 msgstr "OU DN komputera do dołączenia"
411421
412 #: ../tools/realm-join.c:241
413 msgid "Use specific membership software"
414 msgstr "Używa podanego oprogramowania członkostwa"
415
416 #: ../tools/realm-join.c:243
422 #: ../tools/realm-join.c:256
423 msgid "Join automatically without a password"
424 msgstr "Dołącza automatycznie bez hasła"
425
426 #: ../tools/realm-join.c:258
417427 msgid "Join using a preset one time password"
418428 msgstr "Dołącza używając obecnego jednorazowego hasła"
419429
420 #: ../tools/realm-join.c:258
430 #: ../tools/realm-join.c:273
421431 msgid "Specify one realm to join"
422432 msgstr "Podaje jeden obszar do dołączenia"
423433
424 #: ../tools/realm-leave.c:183 ../tools/realm-leave.c:210
434 #: ../tools/realm-join.c:278
435 msgid ""
436 "The --no-password argument cannot be used with --one-time-password or --user"
437 msgstr "Parametr --no-password nie może być używany z --one-time-password lub --user"
438
439 #: ../tools/realm-join.c:284
440 msgid "The --one-time-password argument cannot be used with --user"
441 msgstr "Parametr --one-time-password nie może być używany z --user"
442
443 #: ../tools/realm-leave.c:181 ../tools/realm-leave.c:208
425444 msgid "Couldn't leave realm"
426445 msgstr "Nie można opuścić obszaru"
427446
428 #: ../tools/realm-leave.c:269
447 #: ../tools/realm-leave.c:267
429448 msgid "Remove computer from realm"
430449 msgstr "Usuwa komputer z obszaru"
431450
432 #: ../tools/realm-leave.c:272
451 #: ../tools/realm-leave.c:270
433452 msgid "User name to use for removal"
434453 msgstr "Nazwa użytkownika do użycia do usunięcia"
435454
436 #: ../tools/realm-logins.c:130
455 #: ../tools/realm-logins.c:128
437456 msgid "Couldn't permit logins"
438457 msgstr "Nie można zezwolić na logowania"
439458
440 #: ../tools/realm-logins.c:130
459 #: ../tools/realm-logins.c:128
441460 msgid "Couldn't deny logins"
442461 msgstr "Nie można zabronić logowań"
443462
444 #: ../tools/realm-logins.c:198
463 #: ../tools/realm-logins.c:196
445464 msgid "Permit any domain user login"
446465 msgstr "Zezwala na logowanie użytkownika do każdej domeny"
447466
448 #: ../tools/realm-logins.c:198
467 #: ../tools/realm-logins.c:196
449468 msgid "Deny any domain user login"
450469 msgstr "Zabrania logowania użytkownika do każdej domeny"
451470
452 #: ../tools/realm-logins.c:199
471 #: ../tools/realm-logins.c:197
453472 msgid "Realm to permit/deny logins for"
454473 msgstr "Obszar, do którego pozwolić/zabronić na logowanie"
455474
456 #: ../tools/realm-logins.c:218
475 #: ../tools/realm-logins.c:216
457476 msgid "No users should be specified with -a or --all"
458477 msgstr "Nie można podawać użytkowników z opcją -a lub --all"
459478
460 #: ../tools/realm-logins.c:225
479 #: ../tools/realm-logins.c:223
461480 msgid "Specify users to permit"
462481 msgstr "Podaje użytkowników do zezwolenia"
463482
464 #: ../tools/realm-logins.c:225
483 #: ../tools/realm-logins.c:223
465484 msgid "Specify users to deny"
466485 msgstr "Podaje użytkowników do zabronienia"
2525 realm-diagnostics.c realm-diagnostics.h \
2626 realm-discovery.c realm-discovery.h \
2727 realm-errors.c realm-errors.h \
28 realm-example.c realm-example.h \
29 realm-example-provider.c realm-example-provider.h \
2830 realm-ini-config.c realm-ini-config.h \
31 realm-invocation.c realm-invocation.h \
2932 realm-ipa-discover.c realm-ipa-discover.h \
3033 realm-kerberos.c realm-kerberos.h \
3134 realm-kerberos-discover.c realm-kerberos-discover.h \
5760 -DSYSCONF_DIR="\"$(sysconfdir)\"" \
5861 -DPROVIDER_DIR="\"$(privatedir)/provider.d\"" \
5962 -DLOCALEDIR=\""$(datadir)/locale"\" \
63 -DSTATE_DIR="\"$(localstatedir)/realmd\"" \
64 -DCACHEDIR="\"$(cachedir)\"" \
6065 $(PACKAGEKIT_CFLAGS) \
6166 $(POLKIT_CFLAGS) \
6267 $(GLIB_CFLAGS) \
7681 # Install and uninstall the config for this distro
7782 install-data-local:
7883 $(INSTALL_PROGRAM) -d $(DESTDIR)$(privatedir)
84 $(INSTALL_PROGRAM) -d $(DESTDIR)$(localstatedir)/realmd
85 $(INSTALL_PROGRAM) -d $(DESTDIR)$(cachedir)
7986 $(INSTALL_DATA) $(srcdir)/realmd-$(DISTRO).conf $(DESTDIR)$(privatedir)/realmd-distro.conf
8087 uninstall-local:
8188 rm -f $(DESTDIR)$(privatedir)/realmd-distro.conf
5353 private_PROGRAMS = realmd$(EXEEXT)
5454 subdir = service
5555 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
56 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
57 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
56 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
57 $(top_srcdir)/configure.ac
5858 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5959 $(ACLOCAL_M4)
6060 mkinstalldirs = $(install_sh) -d
7070 realmd-realm-command.$(OBJEXT) realmd-realm-daemon.$(OBJEXT) \
7171 realmd-realm-diagnostics.$(OBJEXT) \
7272 realmd-realm-discovery.$(OBJEXT) realmd-realm-errors.$(OBJEXT) \
73 realmd-realm-example.$(OBJEXT) \
74 realmd-realm-example-provider.$(OBJEXT) \
7375 realmd-realm-ini-config.$(OBJEXT) \
76 realmd-realm-invocation.$(OBJEXT) \
7477 realmd-realm-ipa-discover.$(OBJEXT) \
7578 realmd-realm-kerberos.$(OBJEXT) \
7679 realmd-realm-kerberos-discover.$(OBJEXT) \
202205 GMOFILES = @GMOFILES@
203206 GMSGFMT = @GMSGFMT@
204207 GREP = @GREP@
205 GTKDOC_CHECK = @GTKDOC_CHECK@
206 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
207 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
208 GTKDOC_MKPDF = @GTKDOC_MKPDF@
209 GTKDOC_REBASE = @GTKDOC_REBASE@
210 HTML_DIR = @HTML_DIR@
211208 INSTALL = @INSTALL@
212209 INSTALL_DATA = @INSTALL_DATA@
213210 INSTALL_PROGRAM = @INSTALL_PROGRAM@
270267 USE_NLS = @USE_NLS@
271268 VERSION = @VERSION@
272269 XGETTEXT = @XGETTEXT@
270 XMLTO = @XMLTO@
273271 XSLTPROC = @XSLTPROC@
274272 abs_builddir = @abs_builddir@
275273 abs_srcdir = @abs_srcdir@
284282 bindir = @bindir@
285283 build_alias = @build_alias@
286284 builddir = @builddir@
285 cachedir = @cachedir@
287286 datadir = @datadir@
288287 datarootdir = @datarootdir@
289288 docdir = @docdir@
360359 realm-diagnostics.c realm-diagnostics.h \
361360 realm-discovery.c realm-discovery.h \
362361 realm-errors.c realm-errors.h \
362 realm-example.c realm-example.h \
363 realm-example-provider.c realm-example-provider.h \
363364 realm-ini-config.c realm-ini-config.h \
365 realm-invocation.c realm-invocation.h \
364366 realm-ipa-discover.c realm-ipa-discover.h \
365367 realm-kerberos.c realm-kerberos.h \
366368 realm-kerberos-discover.c realm-kerberos-discover.h \
392394 -DSYSCONF_DIR="\"$(sysconfdir)\"" \
393395 -DPROVIDER_DIR="\"$(privatedir)/provider.d\"" \
394396 -DLOCALEDIR=\""$(datadir)/locale"\" \
397 -DSTATE_DIR="\"$(localstatedir)/realmd\"" \
398 -DCACHEDIR="\"$(cachedir)\"" \
395399 $(PACKAGEKIT_CFLAGS) \
396400 $(POLKIT_CFLAGS) \
397401 $(GLIB_CFLAGS) \
519523 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-diagnostics.Po@am__quote@
520524 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-discovery.Po@am__quote@
521525 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-errors.Po@am__quote@
526 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-example-provider.Po@am__quote@
527 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-example.Po@am__quote@
522528 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-ini-config.Po@am__quote@
529 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-invocation.Po@am__quote@
523530 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-ipa-discover.Po@am__quote@
524531 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-kerberos-discover.Po@am__quote@
525532 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realmd-realm-kerberos-membership.Po@am__quote@
655662 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
656663 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-errors.obj `if test -f 'realm-errors.c'; then $(CYGPATH_W) 'realm-errors.c'; else $(CYGPATH_W) '$(srcdir)/realm-errors.c'; fi`
657664
665 realmd-realm-example.o: realm-example.c
666 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-example.o -MD -MP -MF $(DEPDIR)/realmd-realm-example.Tpo -c -o realmd-realm-example.o `test -f 'realm-example.c' || echo '$(srcdir)/'`realm-example.c
667 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-example.Tpo $(DEPDIR)/realmd-realm-example.Po
668 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-example.c' object='realmd-realm-example.o' libtool=no @AMDEPBACKSLASH@
669 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
670 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-example.o `test -f 'realm-example.c' || echo '$(srcdir)/'`realm-example.c
671
672 realmd-realm-example.obj: realm-example.c
673 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-example.obj -MD -MP -MF $(DEPDIR)/realmd-realm-example.Tpo -c -o realmd-realm-example.obj `if test -f 'realm-example.c'; then $(CYGPATH_W) 'realm-example.c'; else $(CYGPATH_W) '$(srcdir)/realm-example.c'; fi`
674 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-example.Tpo $(DEPDIR)/realmd-realm-example.Po
675 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-example.c' object='realmd-realm-example.obj' libtool=no @AMDEPBACKSLASH@
676 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
677 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-example.obj `if test -f 'realm-example.c'; then $(CYGPATH_W) 'realm-example.c'; else $(CYGPATH_W) '$(srcdir)/realm-example.c'; fi`
678
679 realmd-realm-example-provider.o: realm-example-provider.c
680 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-example-provider.o -MD -MP -MF $(DEPDIR)/realmd-realm-example-provider.Tpo -c -o realmd-realm-example-provider.o `test -f 'realm-example-provider.c' || echo '$(srcdir)/'`realm-example-provider.c
681 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-example-provider.Tpo $(DEPDIR)/realmd-realm-example-provider.Po
682 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-example-provider.c' object='realmd-realm-example-provider.o' libtool=no @AMDEPBACKSLASH@
683 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
684 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-example-provider.o `test -f 'realm-example-provider.c' || echo '$(srcdir)/'`realm-example-provider.c
685
686 realmd-realm-example-provider.obj: realm-example-provider.c
687 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-example-provider.obj -MD -MP -MF $(DEPDIR)/realmd-realm-example-provider.Tpo -c -o realmd-realm-example-provider.obj `if test -f 'realm-example-provider.c'; then $(CYGPATH_W) 'realm-example-provider.c'; else $(CYGPATH_W) '$(srcdir)/realm-example-provider.c'; fi`
688 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-example-provider.Tpo $(DEPDIR)/realmd-realm-example-provider.Po
689 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-example-provider.c' object='realmd-realm-example-provider.obj' libtool=no @AMDEPBACKSLASH@
690 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
691 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-example-provider.obj `if test -f 'realm-example-provider.c'; then $(CYGPATH_W) 'realm-example-provider.c'; else $(CYGPATH_W) '$(srcdir)/realm-example-provider.c'; fi`
692
658693 realmd-realm-ini-config.o: realm-ini-config.c
659694 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-ini-config.o -MD -MP -MF $(DEPDIR)/realmd-realm-ini-config.Tpo -c -o realmd-realm-ini-config.o `test -f 'realm-ini-config.c' || echo '$(srcdir)/'`realm-ini-config.c
660695 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-ini-config.Tpo $(DEPDIR)/realmd-realm-ini-config.Po
668703 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-ini-config.c' object='realmd-realm-ini-config.obj' libtool=no @AMDEPBACKSLASH@
669704 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
670705 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-ini-config.obj `if test -f 'realm-ini-config.c'; then $(CYGPATH_W) 'realm-ini-config.c'; else $(CYGPATH_W) '$(srcdir)/realm-ini-config.c'; fi`
706
707 realmd-realm-invocation.o: realm-invocation.c
708 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-invocation.o -MD -MP -MF $(DEPDIR)/realmd-realm-invocation.Tpo -c -o realmd-realm-invocation.o `test -f 'realm-invocation.c' || echo '$(srcdir)/'`realm-invocation.c
709 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-invocation.Tpo $(DEPDIR)/realmd-realm-invocation.Po
710 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-invocation.c' object='realmd-realm-invocation.o' libtool=no @AMDEPBACKSLASH@
711 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
712 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-invocation.o `test -f 'realm-invocation.c' || echo '$(srcdir)/'`realm-invocation.c
713
714 realmd-realm-invocation.obj: realm-invocation.c
715 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-invocation.obj -MD -MP -MF $(DEPDIR)/realmd-realm-invocation.Tpo -c -o realmd-realm-invocation.obj `if test -f 'realm-invocation.c'; then $(CYGPATH_W) 'realm-invocation.c'; else $(CYGPATH_W) '$(srcdir)/realm-invocation.c'; fi`
716 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/realmd-realm-invocation.Tpo $(DEPDIR)/realmd-realm-invocation.Po
717 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='realm-invocation.c' object='realmd-realm-invocation.obj' libtool=no @AMDEPBACKSLASH@
718 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
719 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -c -o realmd-realm-invocation.obj `if test -f 'realm-invocation.c'; then $(CYGPATH_W) 'realm-invocation.c'; else $(CYGPATH_W) '$(srcdir)/realm-invocation.c'; fi`
671720
672721 realmd-realm-ipa-discover.o: realm-ipa-discover.c
673722 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(realmd_CFLAGS) $(CFLAGS) -MT realmd-realm-ipa-discover.o -MD -MP -MF $(DEPDIR)/realmd-realm-ipa-discover.Tpo -c -o realmd-realm-ipa-discover.o `test -f 'realm-ipa-discover.c' || echo '$(srcdir)/'`realm-ipa-discover.c
12801329 # Install and uninstall the config for this distro
12811330 install-data-local:
12821331 $(INSTALL_PROGRAM) -d $(DESTDIR)$(privatedir)
1332 $(INSTALL_PROGRAM) -d $(DESTDIR)$(localstatedir)/realmd
1333 $(INSTALL_PROGRAM) -d $(DESTDIR)$(cachedir)
12831334 $(INSTALL_DATA) $(srcdir)/realmd-$(DISTRO).conf $(DESTDIR)$(privatedir)/realmd-distro.conf
12841335 uninstall-local:
12851336 rm -f $(DESTDIR)$(privatedir)/realmd-distro.conf
108108 g_ptr_array_add (args, NULL);
109109
110110 realm_command_runv_async ((gchar **)args->pdata, environ, input,
111 invocation, NULL, on_join_process,
111 invocation, on_join_process,
112112 g_object_ref (async));
113113
114114 g_ptr_array_free (args, TRUE);
1616 #include "realm-daemon.h"
1717 #include "realm-command.h"
1818 #include "realm-diagnostics.h"
19 #include "realm-invocation.h"
1920 #include "realm-settings.h"
2021
2122 #include <glib/gi18n-lib.h>
406407 gchar **environ,
407408 GBytes *input,
408409 GDBusMethodInvocation *invocation,
409 GCancellable *cancellable,
410410 GAsyncReadyCallback callback,
411411 gpointer user_data)
412412 {
418418 int error_fd = -1;
419419 int input_fd = -1;
420420 ProcessSource *process_source;
421 GCancellable *cancellable;
421422 GSource *source;
422423 gchar *cmd_string;
423424 gchar *env_string;
427428 guint i;
428429
429430 g_return_if_fail (argv != NULL);
430 g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
431431 g_return_if_fail (invocation == NULL || G_IS_DBUS_METHOD_INVOCATION (invocation));
432
433 cancellable = realm_invocation_get_cancellable (invocation);
432434
433435 for (i = 0; i < NUM_FDS; i++)
434436 child_fds[i] = -1;
549551 realm_command_run_known_async (const gchar *known_command,
550552 gchar **environ,
551553 GDBusMethodInvocation *invocation,
552 GCancellable *cancellable,
553554 GAsyncReadyCallback callback,
554555 gpointer user_data)
555556 {
556557 const gchar *command_line;
558 GSimpleAsyncResult *async;
559 CommandClosure *command;
557560 GError *error = NULL;
561 gchar *message = NULL;
562 gint exit_code = -1;
558563 gchar **argv;
559564 gint unused;
560565
561 const gchar *empty_argv[] = {
562 "/bin/true",
563 "empty-configured-command",
564 known_command,
565 NULL,
566 };
567
568 const gchar *invalid_argv[] = {
569 "/bin/false",
570 "invalid-configured-command",
571 known_command,
572 NULL
573 };
574
575566 g_return_if_fail (known_command != NULL);
576 g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
577567 g_return_if_fail (invocation == NULL || G_IS_DBUS_METHOD_INVOCATION (invocation));
578568
579569 command_line = realm_settings_value ("commands", known_command);
580570 if (command_line == NULL) {
581 g_warning ("Couldn't find the configured string commands/%s", known_command);
582 argv = g_strdupv ((gchar **)invalid_argv);
571 message = g_strdup_printf (_("Configured command not found: %s"), known_command);
572 g_warning ("Configured command not found: %s", known_command);
573 exit_code = 127;
583574
584575 } else if (is_only_whitespace (command_line)) {
585 argv = g_strdupv ((gchar **)empty_argv);
576 message = g_strdup_printf (_("Skipped command: %s"), known_command);
577 exit_code = 0;
586578
587579 } else if (!g_shell_parse_argv (command_line, &unused, &argv, &error)) {
588580 g_warning ("Couldn't parse the command line: %s: %s", command_line, error->message);
589581 g_error_free (error);
590 argv = g_strdupv ((gchar **)invalid_argv);
591 }
592
593 realm_command_runv_async (argv, environ, NULL, invocation, cancellable, callback, user_data);
594 g_strfreev (argv);
582 message = g_strdup_printf (_("Configured command invalid: %s"), command_line);
583 exit_code = 127;
584
585 }
586
587 if (message == NULL) {
588 realm_command_runv_async (argv, environ, NULL, invocation, callback, user_data);
589 g_free (argv);
590
591 } else {
592 async = g_simple_async_result_new (NULL, callback, user_data, realm_command_runv_async);
593 command = g_slice_new0 (CommandClosure);
594 command->output = g_string_new (message);
595 command->exit_code = exit_code;
596 g_simple_async_result_set_op_res_gpointer (async, command, command_closure_free);
597 g_simple_async_result_complete_in_idle (async);
598 g_object_unref (async);
599 g_free (message);
600 }
595601 }
596602
597603 gint
619625
620626 return command->exit_code;
621627 }
628
629 static void
630 clear_and_free_password (gpointer data)
631 {
632 gchar *password = data;
633 memset ((char *)password, 0, strlen (password));
634 g_free (password);
635 }
636
637 GBytes *
638 realm_command_build_password_line (GBytes *password)
639 {
640 GByteArray *array;
641 gconstpointer data;
642 gsize length;
643 guchar *result;
644
645 array = g_byte_array_new ();
646 data = g_bytes_get_data (password, &length);
647 g_byte_array_append (array, data, length);
648
649 /*
650 * We add a new line, which getpass() used inside command expects
651 */
652 g_byte_array_append (array, (guchar *)"\n", 1);
653 length = array->len;
654
655 /*
656 * In addition we add null terminator. This is not
657 * written to 'net' command, but used by clear_and_free_password().
658 */
659 g_byte_array_append (array, (guchar *)"\0", 1);
660
661 result = g_byte_array_free (array, FALSE);
662 return g_bytes_new_with_free_func (result, length,
663 clear_and_free_password, result);
664 }
2222 gchar **environ,
2323 GBytes *input,
2424 GDBusMethodInvocation *invocation,
25 GCancellable *cancellable,
2625 GAsyncReadyCallback callback,
2726 gpointer user_data);
2827
2928 void realm_command_run_known_async (const gchar *known_command,
3029 gchar **environ,
3130 GDBusMethodInvocation *invocation,
32 GCancellable *cancellable,
3331 GAsyncReadyCallback callback,
3432 gpointer user_data);
3533
3735 GString **output,
3836 GError **error);
3937
38 GBytes * realm_command_build_password_line (GBytes *password);
39
4040 G_END_DECLS
4141
4242 #endif /* REALM_COMMAND_H */
1919 #include "realm-dbus-generated.h"
2020 #include "realm-diagnostics.h"
2121 #include "realm-errors.h"
22 #include "realm-example-provider.h"
23 #include "realm-invocation.h"
2224 #include "realm-kerberos-provider.h"
2325 #include "realm-samba-provider.h"
2426 #include "realm-settings.h"
2527 #include "realm-sssd-provider.h"
2628
2729 #include <glib.h>
30 #include <glib-unix.h>
2831 #include <glib/gi18n.h>
29
30 #include <polkit/polkit.h>
3132
3233 #include <stdio.h>
3334 #include <errno.h>
3536 #define TIMEOUT 60 /* seconds */
3637 #define HOLD_INTERNAL (GUINT_TO_POINTER (~0))
3738
38 static GObject *current_invocation = NULL;
3939 static GMainLoop *main_loop = NULL;
4040
41 static gboolean service_persist = FALSE;
42 static GHashTable *service_clients = NULL;
41 static GHashTable *service_holds = NULL;
4342 static gint64 service_quit_at = 0;
4443 static guint service_timeout_id = 0;
4544 static guint service_bus_name_owner_id = 0;
4948 static gchar *service_install = NULL;
5049 static gint service_dbus_fd = -1;
5150
52 typedef struct {
53 guint watch;
54 gchar *locale;
55 } RealmClient;
56
5751 /* We use this for registering the dbus errors */
5852 GQuark realm_error = 0;
5953
60 /* We use a lock here because it's called from dbus threads */
61 G_LOCK_DEFINE(polkit_authority);
62 static PolkitAuthority *polkit_authority = NULL;
63
64 static void
65 on_invocation_gone (gpointer unused,
66 GObject *where_the_object_was)
67 {
68 g_warning ("a GDBusMethodInvocation was released but the invocation was "
69 "registered as part of a realm_daemon_lock_for_action()");
70 g_assert (where_the_object_was == current_invocation);
71 current_invocation = NULL;
72 }
73
74 gboolean
75 realm_daemon_lock_for_action (GDBusMethodInvocation *invocation)
76 {
77 g_return_val_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation), FALSE);
78
79 if (current_invocation)
80 return FALSE;
81
82 current_invocation = G_OBJECT (invocation);
83 g_object_weak_ref (current_invocation, on_invocation_gone, NULL);
84
85 /* Hold the daemon up while action */
86 realm_daemon_hold ("current-invocation");
87
88 return TRUE;
89 }
90
91 void
92 realm_daemon_unlock_for_action (GDBusMethodInvocation *invocation)
93 {
94 g_return_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation));
95
96 if (current_invocation != G_OBJECT (invocation)) {
97 g_warning ("trying to realm_daemon_unlock_for_action() with an invocation "
98 "that is not registered as the current locked action.");
99 return;
100 }
101
102 g_object_weak_unref (current_invocation, on_invocation_gone, NULL);
103 current_invocation = NULL;
104
105 /* Matches the hold in realm_daemon_lock_for_action() */
106 realm_daemon_release ("current-invocation");
107 }
108
10954 gboolean
11055 realm_daemon_is_dbus_peer (void)
11156 {
12267 realm_daemon_has_debug_flag (void)
12368 {
12469 return service_debug;
125 }
126
127 void
128 realm_daemon_set_locale_until_loop (GDBusMethodInvocation *invocation)
129 {
130 /* TODO: Not yet implemented, need threadsafe implementation */
131 }
132
133 gboolean
134 realm_daemon_check_dbus_action (const gchar *sender,
135 const gchar *action_id)
136 {
137 PolkitAuthorizationResult *result;
138 PolkitAuthority *authority;
139 PolkitSubject *subject;
140 GError *error = NULL;
141 gboolean ret;
142
143 /* If we're a dbus peer, just allow all calls */
144 if (realm_daemon_is_dbus_peer ())
145 return TRUE;
146
147 g_return_val_if_fail (sender != NULL, FALSE);
148 g_return_val_if_fail (action_id != NULL, FALSE);
149
150 G_LOCK (polkit_authority);
151
152 authority = polkit_authority ? g_object_ref (polkit_authority) : NULL;
153
154 G_UNLOCK (polkit_authority);
155
156 if (!authority) {
157 authority = polkit_authority_get_sync (NULL, &error);
158 if (authority == NULL) {
159 g_warning ("failure to get polkit authority: %s", error->message);
160 g_error_free (error);
161 return FALSE;
162 }
163
164 G_LOCK (polkit_authority);
165
166 if (polkit_authority == NULL) {
167 polkit_authority = g_object_ref (authority);
168
169 } else {
170 g_object_unref (authority);
171 authority = g_object_ref (polkit_authority);
172 }
173
174 G_UNLOCK (polkit_authority);
175 }
176
177 /* do authorization async */
178 subject = polkit_system_bus_name_new (sender);
179 result = polkit_authority_check_authorization_sync (authority, subject, action_id, NULL,
180 POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION, NULL, &error);
181
182 g_object_unref (authority);
183 g_object_unref (subject);
184
185 /* failed */
186 if (result == NULL) {
187 g_warning ("couldn't check polkit authorization%s%s",
188 error ? ": " : "", error ? error->message : "");
189 g_error_free (error);
190 return FALSE;
191 }
192
193 ret = polkit_authorization_result_get_is_authorized (result);
194 g_object_unref (result);
195
196 return ret;
197 }
198
199 static void
200 on_client_vanished (GDBusConnection *connection,
201 const gchar *name,
202 gpointer user_data)
203 {
204 g_debug ("client gone away: %s", name);
205 g_hash_table_remove (service_clients, name);
206 }
207
208 static RealmClient *
209 lookup_or_register_client (const gchar *sender)
210 {
211 RealmClient *client;
212
213 client = g_hash_table_lookup (service_clients, sender);
214 if (!client) {
215 client = g_slice_new0 (RealmClient);
216 client->watch = g_bus_watch_name (G_BUS_TYPE_SYSTEM, sender,
217 G_BUS_NAME_WATCHER_FLAGS_NONE,
218 NULL, on_client_vanished, NULL, NULL);
219 g_debug ("client using service: %s", sender);
220 g_hash_table_insert (service_clients, g_strdup (sender), client);
221 }
222
223 return client;
22470 }
22571
22672 void
23480 g_assert (hold != NULL);
23581 g_assert (!g_dbus_is_unique_name (hold));
23682
237
238 if (g_hash_table_lookup (service_clients, hold))
83 if (g_hash_table_lookup (service_holds, hold))
23984 g_critical ("realm_daemon_hold: already have hold: %s", hold);
24085 g_debug ("holding service: %s", hold);
241 g_hash_table_insert (service_clients, g_strdup (hold), g_slice_new0 (RealmClient));
86 g_hash_table_add (service_holds, g_strdup (hold));
24287 }
24388
24489 void
24893 g_assert (!g_dbus_is_unique_name (hold));
24994
25095 g_debug ("releasing service: %s", hold);
251 if (!g_hash_table_remove (service_clients, hold))
96 if (!g_hash_table_remove (service_holds, hold))
25297 g_critical ("realm_daemon_release: don't have hold: %s", hold);
25398 }
25499
260105
261106 service_timeout_id = 0;
262107
263 if (g_hash_table_size (service_clients) > 0)
108 if (g_hash_table_size (service_holds) > 0)
264109 return FALSE;
265110
266111 now = g_get_monotonic_time ();
279124 void
280125 realm_daemon_poke (void)
281126 {
282 if (service_persist)
283 return;
284 if (g_hash_table_size (service_clients) > 0)
127 if (g_hash_table_size (service_holds) > 0)
285128 return;
286129 service_quit_at = g_get_monotonic_time () + (TIMEOUT * G_TIME_SPAN_SECOND);
287130 if (service_timeout_id == 0)
289132 }
290133
291134 static void
292 realm_client_unwatch_and_free (gpointer data)
293 {
294 RealmClient *client = data;
295
296 g_assert (data != NULL);
297 if (client->watch)
298 g_bus_unwatch_name (client->watch);
299 g_free (client->locale);
300 g_slice_free (RealmClient, client);
301
302 realm_daemon_poke ();
303 }
304
305 static gboolean
306 on_idle_hold_for_message (gpointer user_data)
307 {
308 GDBusMessage *message = user_data;
309 const gchar *sender = g_dbus_message_get_sender (message);
310 lookup_or_register_client (sender);
311 return FALSE; /* don't call again */
312 }
313
314 static GDBusMessage *
315 on_connection_filter (GDBusConnection *connection,
316 GDBusMessage *message,
317 gboolean incoming,
318 gpointer user_data)
319 {
320 const gchar *own_name = user_data;
321 GDBusMessageType type;
322
323 /* Each time we see an incoming function call, keep the service alive */
324 if (incoming) {
325 type = g_dbus_message_get_message_type (message);
326 if (type == G_DBUS_MESSAGE_TYPE_METHOD_CALL) {
327
328 /* All methods besides 'Release' on the Service interface cause us to watch client */
329 if (!g_str_equal (own_name, g_dbus_message_get_sender (message)) &&
330 !(g_str_equal (g_dbus_message_get_path (message), REALM_DBUS_SERVICE_PATH) &&
331 g_str_equal (g_dbus_message_get_member (message), "Release") &&
332 g_str_equal (g_dbus_message_get_interface (message), REALM_DBUS_SERVICE_INTERFACE))) {
333 g_idle_add_full (G_PRIORITY_DEFAULT,
334 on_idle_hold_for_message,
335 g_object_ref (message),
336 g_object_unref);
337 }
338 }
339 }
340
341 return message;
342 }
343
344 static gboolean
345 on_service_release (RealmDbusService *object,
346 GDBusMethodInvocation *invocation)
347 {
348 const char *sender;
349
350 sender = g_dbus_method_invocation_get_sender (invocation);
351 g_debug ("explicitly releasing service: %s", sender);
352 g_hash_table_remove (service_clients, sender);
353
354 return TRUE;
355 }
356
357 static gboolean
358 on_service_cancel (RealmDbusService *object,
359 GDBusMethodInvocation *invocation,
360 const gchar *operation_id)
361 {
362 /* TODO: Needs implementation */
363 realm_dbus_service_complete_cancel (object, invocation);
364 return TRUE;
365 }
366
367 static gboolean
368 on_service_set_locale (RealmDbusService *object,
369 GDBusMethodInvocation *invocation,
370 const gchar *arg_locale)
371 {
372 RealmClient *client;
373 const gchar *sender;
374
375 sender = g_dbus_method_invocation_get_sender (invocation);
376 client = lookup_or_register_client (sender);
377
378 g_free (client->locale);
379 client->locale = g_strdup (arg_locale);
380
381 realm_dbus_service_complete_set_locale (object, invocation);
382 return TRUE;
383 }
384
385 static void
386135 on_name_acquired (GDBusConnection *connection,
387136 const gchar *name,
388137 gpointer unused)
417166 RealmProvider *all_provider;
418167 RealmProvider *provider;
419168
169 realm_invocation_initialize (connection);
420170 realm_diagnostics_initialize (connection);
421171
422172 object_server = g_dbus_object_manager_server_new (REALM_DBUS_SERVICE_PATH);
438188 realm_all_provider_register (all_provider, provider);
439189 g_object_unref (provider);
440190
191 if (realm_settings_boolean (REALM_DBUS_IDENTIFIER_EXAMPLE, "enabled")) {
192 provider = realm_example_provider_new ();
193 g_dbus_object_manager_server_export (object_server, G_DBUS_OBJECT_SKELETON (provider));
194 realm_all_provider_register (all_provider, provider);
195 g_object_unref (provider);
196 }
197
441198 g_dbus_object_manager_server_set_connection (object_server, connection);
442199
443200 /* Use this to control the life time of the providers */
445202 all_provider, g_object_unref);
446203
447204 /* Matches the hold() in main() */
448 realm_daemon_release ("main");
205 realm_daemon_release ("startup");
206
207 g_dbus_connection_start_message_processing (connection);
449208 }
450209
451210 static void
455214 {
456215 GError *error = NULL;
457216 GDBusConnection *connection;
458 const gchar *self_name;
459217 guint owner_id;
460218
461219 connection = g_bus_get_finish (result, &error);
467225 } else {
468226 g_debug ("connected to bus");
469227
470 /* Add a filter which keeps service alive */
471 self_name = g_dbus_connection_get_unique_name (connection);
472 g_dbus_connection_add_filter (connection, on_connection_filter,
473 (gchar *)self_name, NULL);
474
475228 initialize_service (connection);
476229
477230 owner_id = g_bus_own_name_on_connection (connection,
533286 guid = g_dbus_generate_guid ();
534287 g_dbus_connection_new (G_IO_STREAM (stream), guid,
535288 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER |
536 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS,
289 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS |
290 G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING,
537291 NULL, NULL, on_peer_connection_new, NULL);
538292
539293 g_free (guid);
568322 g_string_free (string, TRUE);
569323 }
570324
325 static gboolean
326 on_signal_quit (gpointer data)
327 {
328 g_main_loop_quit (data);
329 return FALSE;
330 }
331
571332 int
572333 main (int argc,
573334 char *argv[])
574335 {
575 RealmDbusService *service;
576336 GOptionContext *context;
577337 GError *error = NULL;
578338 const gchar *env;
604364 path = g_strdup_printf ("%s:/usr/sbin:/sbin", env ? env : "/usr/bin:/bin");
605365 g_setenv ("PATH", path, TRUE);
606366 g_free (path);
367
368 /* Setup our TMPDIR to our own cache directory */
369 g_setenv ("TMPDIR", CACHEDIR, TRUE);
607370
608371 context = g_option_context_new ("realmd");
609372 g_option_context_add_main_entries (context, option_entries, NULL);
632395 }
633396 }
634397
398 service_holds = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
399
635400 if (g_getenv ("REALM_DEBUG"))
636401 service_debug = TRUE;
637402 if (g_getenv ("REALM_PERSIST") || service_debug || service_install)
638 service_persist = TRUE;
403 realm_daemon_hold ("persist-daemon");
639404
640405 if (service_debug) {
641 g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG,
642 on_realm_log_debug, NULL);
406 g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, on_realm_log_debug, NULL);
407 g_log_set_always_fatal (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING);
643408 }
644409
645410 realm_error = realm_error_quark ();
646 service_clients = g_hash_table_new_full (g_str_hash, g_str_equal,
647 g_free, realm_client_unwatch_and_free);
648 realm_daemon_hold ("main");
649
650 service = realm_dbus_service_skeleton_new ();
651 g_signal_connect (service, "handle-release", G_CALLBACK (on_service_release), NULL);
652 g_signal_connect (service, "handle-set-locale", G_CALLBACK (on_service_set_locale), NULL);
653 g_signal_connect (service, "handle-cancel", G_CALLBACK (on_service_cancel), NULL);
411 realm_daemon_hold ("startup");
654412
655413 g_debug ("starting service");
656414 connect_to_bus_or_peer ();
657415
658416 main_loop = g_main_loop_new (NULL, FALSE);
417
418 g_unix_signal_add (SIGINT, on_signal_quit, main_loop);
419 g_unix_signal_add (SIGTERM, on_signal_quit, main_loop);
659420
660421 g_main_loop_run (main_loop);
661422
666427 g_object_unref (object_server);
667428 }
668429
669 G_LOCK (polkit_authority);
670 g_clear_object (&polkit_authority);
671 G_UNLOCK (polkit_authority);
672
673430 g_debug ("stopping service");
674431 realm_settings_uninit ();
432 realm_invocation_cleanup ();
675433 g_main_loop_unref (main_loop);
676434
677 g_object_unref (service);
678 g_hash_table_unref (service_clients);
435 g_hash_table_unref (service_holds);
679436 g_free (service_install);
680437 return 0;
681438 }
2020
2121 G_BEGIN_DECLS
2222
23 gboolean realm_daemon_lock_for_action (GDBusMethodInvocation *invocation);
24
25 void realm_daemon_unlock_for_action (GDBusMethodInvocation *invocation);
26
27 void realm_daemon_set_locale_until_loop (GDBusMethodInvocation *invocation);
28
2923 void realm_daemon_hold (const gchar *identifier);
3024
3125 void realm_daemon_release (const gchar *identifier);
32
33 void realm_daemon_set_locale (const gchar *sender,
34 const gchar *locale,
35 const gchar *operation_id);
3626
3727 gboolean realm_daemon_is_dbus_peer (void);
3828
4232
4333 void realm_daemon_poke (void);
4434
45 gboolean realm_daemon_check_dbus_action (const gchar *sender,
46 const gchar *action_id);
47
4835 void realm_daemon_export_object (GDBusObjectSkeleton *object);
4936
5037 G_END_DECLS
1515
1616 #include "realm-dbus-constants.h"
1717 #include "realm-diagnostics.h"
18 #include "realm-invocation.h"
1819
1920 #include <string.h>
2021 #include <syslog.h>
2122
2223 static GDBusConnection *the_connection = NULL;
2324 static GString *line_buffer = NULL;
24 static GQuark operation_id_quark = 0;
2525
2626 void
2727 realm_diagnostics_initialize (GDBusConnection *connection)
3434
3535 the_connection = connection;
3636 g_object_add_weak_pointer (G_OBJECT (the_connection), (gpointer *)&the_connection);
37
38 operation_id_quark = g_quark_from_static_string ("realm-diagnostics-operation-id");
39 }
40
41 const gchar *
42 realm_diagnostics_get_operation_id (GDBusMethodInvocation *invocation)
43 {
44 return g_object_get_qdata (G_OBJECT (invocation), operation_id_quark);
45 }
46
47 void
48 realm_diagnostics_setup_options (GDBusMethodInvocation *invocation,
49 GVariant *options)
50 {
51 gchar *operation_id;
52
53 g_return_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation));
54 g_return_if_fail (options != NULL);
55
56 if (g_variant_lookup (options, REALM_DBUS_OPTION_OPERATION, "s", &operation_id)) {
57 g_object_set_qdata_full (G_OBJECT (invocation), operation_id_quark,
58 operation_id, g_free);
59 }
6037 }
6138
6239 static void
191168 realm_diagnostics_signal (GDBusMethodInvocation *invocation,
192169 const gchar *data)
193170 {
194 const gchar *operation_id;
171 const gchar *operation;
195172 GError *error = NULL;
173 const gchar *sender;
196174
197175 if (!the_connection || !invocation)
198176 return;
199177
200 operation_id = g_object_get_qdata (G_OBJECT (invocation), operation_id_quark);
201 if (operation_id == NULL)
202 operation_id = "";
178 operation = realm_invocation_get_operation (invocation);
179 if (operation == NULL)
180 operation = "";
203181
204 g_dbus_connection_emit_signal (the_connection, g_dbus_method_invocation_get_sender (invocation),
182 /* This might be NULL if operating in peer mode, but that's appropriate for use below */
183 sender = g_dbus_method_invocation_get_sender (invocation);
184
185 g_dbus_connection_emit_signal (the_connection, sender,
205186 REALM_DBUS_SERVICE_PATH, REALM_DBUS_SERVICE_INTERFACE,
206 REALM_DBUS_DIAGNOSTICS_SIGNAL, g_variant_new ("(ss)", data, operation_id),
187 REALM_DBUS_DIAGNOSTICS_SIGNAL, g_variant_new ("(ss)", data, operation),
207188 &error);
208189
209190 if (error != NULL) {
2222
2323 void realm_diagnostics_initialize (GDBusConnection *connection);
2424
25 void realm_diagnostics_setup_options (GDBusMethodInvocation *invocation,
26 GVariant *options);
27
28 const gchar * realm_diagnostics_get_operation_id (GDBusMethodInvocation *invocation);
29
3025 void realm_diagnostics_info (GDBusMethodInvocation *invocation,
3126 const gchar *format,
3227 ...) G_GNUC_PRINTF (2, 3);
2525 { REALM_ERROR_ALREADY_CONFIGURED, REALM_DBUS_ERROR_ALREADY_CONFIGURED },
2626 { REALM_ERROR_NOT_CONFIGURED, REALM_DBUS_ERROR_NOT_CONFIGURED },
2727 { REALM_ERROR_AUTH_FAILED, REALM_DBUS_ERROR_AUTH_FAILED },
28 { REALM_ERROR_CANCELLED, REALM_DBUS_ERROR_CANCELLED },
2829 };
2930
3031 /*
3131 REALM_ERROR_ALREADY_CONFIGURED,
3232 REALM_ERROR_NOT_CONFIGURED,
3333 REALM_ERROR_AUTH_FAILED,
34 REALM_ERROR_CANCELLED,
3435 _NUM_REALM_ERRORS
3536 } RealmErrorCodes;
3637
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #include "realm-daemon.h"
17 #include "realm-dbus-constants.h"
18 #include "realm-diagnostics.h"
19 #include "realm-discovery.h"
20 #include "realm-errors.h"
21 #include "realm-example.h"
22 #include "realm-example-provider.h"
23 #include "realm-ini-config.h"
24 #include "realm-settings.h"
25 #include "realm-kerberos.h"
26
27 #include <string.h>
28
29 #define EXAMPLE_DOMAIN "EXAMPLE.COM"
30
31 struct _RealmExampleProvider {
32 RealmProvider parent;
33 RealmIniConfig *config;
34 };
35
36 typedef struct {
37 RealmProviderClass parent_class;
38 } RealmExampleProviderClass;
39
40 enum {
41 PROP_0,
42 PROP_EXAMPLE_CONFIG,
43 };
44
45 #define REALM_EXAMPLE_CONFIG STATE_DIR "/example.conf"
46
47 #define REALM_DBUS_EXAMPLE_PATH "/org/freedesktop/realmd/Example"
48
49 #define ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyz012346789-."
50
51 G_DEFINE_TYPE (RealmExampleProvider, realm_example_provider, REALM_TYPE_PROVIDER);
52
53 static void
54 realm_example_provider_init (RealmExampleProvider *self)
55 {
56 self->config = realm_ini_config_new (REALM_INI_NONE);
57 }
58
59 static void
60 realm_example_provider_constructed (GObject *obj)
61 {
62 RealmExampleProvider *self;
63 GError *error = NULL;
64 gchar **sections;
65 gint i;
66
67 G_OBJECT_CLASS (realm_example_provider_parent_class)->constructed (obj);
68
69 self = REALM_EXAMPLE_PROVIDER (obj);
70
71 realm_ini_config_read_file (self->config, REALM_EXAMPLE_CONFIG, &error);
72 if (error != NULL) {
73 g_warning ("Couldn't load config file: %s: %s",
74 REALM_EXAMPLE_CONFIG, error->message);
75 g_error_free (error);
76 }
77
78 realm_provider_set_name (REALM_PROVIDER (self), "Example");
79
80 sections = realm_ini_config_get_sections (self->config);
81 for (i = 0; sections != NULL && sections[i] != NULL; i++) {
82 realm_provider_lookup_or_register_realm (REALM_PROVIDER (self),
83 REALM_TYPE_EXAMPLE,
84 sections[i], NULL);
85 }
86
87 g_strfreev (sections);
88 }
89
90 static gboolean
91 on_discover_timeout (gpointer user_data)
92 {
93 GSimpleAsyncResult *async = G_SIMPLE_ASYNC_RESULT (user_data);
94 g_simple_async_result_complete (async);
95 return FALSE;
96 }
97
98 static gchar *
99 parse_example_name (const char *string)
100 {
101 gchar *domain;
102 gsize length;
103
104 domain = g_ascii_strdown (string, -1);
105 g_strstrip (domain);
106
107 length = strlen (domain);
108
109 if (!length ||
110 strspn (domain, ALLOWED_CHARS) != length ||
111 strstr (domain, "..") != NULL ||
112 domain[0] == '.') {
113 g_free (domain);
114 return NULL;
115 }
116
117 if (g_str_has_suffix (domain, ".")) {
118 domain[length] = '\0';
119 length--;
120 }
121
122 /* No, I don't care */
123 if (!g_str_has_suffix (domain, "example.org") &&
124 !g_str_has_suffix (domain, "example.com") &&
125 !g_str_has_suffix (domain, "example.net")) {
126 g_free (domain);
127 return NULL;
128 }
129
130 if (length > 11) {
131 if (domain[length - 12] != '.') {
132 g_free (domain);
133 return NULL;
134 }
135 }
136
137 return domain;
138 }
139
140 static void
141 realm_example_provider_discover_async (RealmProvider *provider,
142 const gchar *string,
143 GVariant *options,
144 GDBusMethodInvocation *invocation,
145 GAsyncReadyCallback callback,
146 gpointer user_data)
147 {
148 GSimpleAsyncResult *async;
149
150 async = g_simple_async_result_new (G_OBJECT (provider), callback, user_data,
151 realm_example_provider_discover_async);
152
153
154 if (!realm_provider_match_software (options,
155 REALM_DBUS_IDENTIFIER_EXAMPLE,
156 REALM_DBUS_IDENTIFIER_EXAMPLE,
157 REALM_DBUS_IDENTIFIER_EXAMPLE)) {
158 g_simple_async_result_complete_in_idle (async);
159
160 /* A valid example domain name */
161 } else {
162 g_simple_async_result_set_op_res_gpointer (async,
163 parse_example_name (string),
164 g_free);
165
166 g_timeout_add_seconds_full (G_PRIORITY_DEFAULT,
167 g_random_int_range (2, 5),
168 on_discover_timeout,
169 g_object_ref (async),
170 g_object_unref);
171 }
172
173 g_object_unref (async);
174 }
175
176 static GList *
177 realm_example_provider_discover_finish (RealmProvider *provider,
178 GAsyncResult *result,
179 gint *relevance,
180 GError **error)
181 {
182 RealmKerberos *realm = NULL;
183 GSimpleAsyncResult *async;
184 gchar *domain;
185
186 async = G_SIMPLE_ASYNC_RESULT (result);
187 domain = g_simple_async_result_get_op_res_gpointer (async);
188 if (domain == NULL || realm_settings_section (domain) == NULL)
189 return NULL;
190
191 realm = realm_provider_lookup_or_register_realm (provider,
192 REALM_TYPE_EXAMPLE,
193 domain, NULL);
194
195 if (realm == NULL)
196 return NULL;
197
198 *relevance = 10;
199 return g_list_append (NULL, g_object_ref (realm));
200 }
201
202 static void
203 realm_example_provider_get_property (GObject *obj,
204 guint prop_id,
205 GValue *value,
206 GParamSpec *pspec)
207 {
208 RealmExampleProvider *self = REALM_EXAMPLE_PROVIDER (obj);
209
210 switch (prop_id) {
211 case PROP_EXAMPLE_CONFIG:
212 g_value_set_object (value, self->config);
213 break;
214 default:
215 G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
216 break;
217 }
218 }
219
220 static void
221 realm_example_provider_finalize (GObject *obj)
222 {
223 RealmExampleProvider *self = REALM_EXAMPLE_PROVIDER (obj);
224
225 g_object_unref (self->config);
226
227 G_OBJECT_CLASS (realm_example_provider_parent_class)->finalize (obj);
228 }
229
230 void
231 realm_example_provider_class_init (RealmExampleProviderClass *klass)
232 {
233 RealmProviderClass *provider_class = REALM_PROVIDER_CLASS (klass);
234 GObjectClass *object_class = G_OBJECT_CLASS (klass);
235
236 provider_class->discover_async = realm_example_provider_discover_async;
237 provider_class->discover_finish = realm_example_provider_discover_finish;
238
239 object_class->constructed = realm_example_provider_constructed;
240 object_class->get_property = realm_example_provider_get_property;
241 object_class->finalize = realm_example_provider_finalize;
242
243 g_object_class_install_property (object_class, PROP_EXAMPLE_CONFIG,
244 g_param_spec_object ("example-config", "Example Config", "Example Config",
245 REALM_TYPE_INI_CONFIG, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
246 }
247
248 RealmProvider *
249 realm_example_provider_new (void)
250 {
251 return g_object_new (REALM_TYPE_EXAMPLE_PROVIDER,
252 "g-object-path", REALM_DBUS_EXAMPLE_PATH,
253 NULL);
254 }
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #ifndef __REALM_EXAMPLE_PROVIDER_H__
17 #define __REALM_EXAMPLE_PROVIDER_H__
18
19 #include <gio/gio.h>
20
21 #include "realm-provider.h"
22
23 G_BEGIN_DECLS
24
25 #define REALM_TYPE_EXAMPLE_PROVIDER (realm_example_provider_get_type ())
26 #define REALM_EXAMPLE_PROVIDER(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), REALM_TYPE_EXAMPLE_PROVIDER, RealmExampleProvider))
27 #define REALM_IS_EXAMPLE_PROVIDER(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), REALM_TYPE_EXAMPLE_PROVIDER))
28
29 typedef struct _RealmExampleProvider RealmExampleProvider;
30
31 GType realm_example_provider_get_type (void) G_GNUC_CONST;
32
33 RealmProvider * realm_example_provider_new (void);
34
35 G_END_DECLS
36
37 #endif /* __REALM_EXAMPLE_PROVIDER_H__ */
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #include "realm-dbus-constants.h"
17 #include "realm-dbus-generated.h"
18
19 #include "realm-errors.h"
20 #include "realm-example.h"
21 #include "realm-ini-config.h"
22 #include "realm-invocation.h"
23 #include "realm-kerberos-membership.h"
24 #include "realm-settings.h"
25
26 #include <glib/gi18n.h>
27
28 /* A cancellable delay
29 */
30
31 typedef struct {
32 GSimpleAsyncResult *async;
33 guint timeout_id;
34 GCancellable *cancellable;
35 guint cancel_id;
36 } SleepAsyncData;
37
38 static void
39 free_sleep_async_data (gpointer user_data)
40 {
41 SleepAsyncData *data = user_data;
42 if (data->cancellable) {
43 /* g_cancellable_disconnect would dead-lock here
44 */
45 g_signal_handler_disconnect (data->cancellable, data->cancel_id);
46 g_object_unref (data->cancellable);
47 }
48 g_object_unref (data->async);
49 g_free (data);
50 }
51
52 static gboolean
53 on_sleep_async_done (gpointer user_data)
54 {
55 SleepAsyncData *data = user_data;
56 g_simple_async_result_complete (data->async);
57 return FALSE;
58 }
59
60 static void
61 on_sleep_async_cancelled (GCancellable *cancellable,
62 gpointer user_data)
63 {
64 SleepAsyncData *data = user_data;
65 g_simple_async_result_complete (data->async);
66 g_source_remove (data->timeout_id);
67 }
68
69 static void
70 usleep_async (gulong microseconds,
71 GCancellable *cancellable,
72 GAsyncReadyCallback callback,
73 gpointer user_data)
74 {
75 SleepAsyncData *data = g_new0(SleepAsyncData, 1);
76 data->async = g_simple_async_result_new (NULL,
77 callback, user_data,
78 usleep_async);
79
80 if (cancellable) {
81 data->cancellable = g_object_ref (cancellable);
82 data->cancel_id = g_cancellable_connect (cancellable,
83 G_CALLBACK (on_sleep_async_cancelled),
84 data, NULL);
85 g_simple_async_result_set_check_cancellable (data->async, cancellable);
86 }
87
88 data->timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT,
89 microseconds / 1000,
90 on_sleep_async_done,
91 data, (GDestroyNotify)free_sleep_async_data);
92 }
93
94 static gboolean
95 usleep_finish (GAsyncResult *result,
96 GError **error)
97 {
98 GSimpleAsyncResult *simple;
99
100 g_return_val_if_fail (g_simple_async_result_is_valid (result,
101 NULL,
102 usleep_async),
103 FALSE);
104
105 simple = (GSimpleAsyncResult *) result;
106 if (g_simple_async_result_propagate_error (simple, error))
107 return FALSE;
108
109 return TRUE;
110 }
111
112 struct _RealmExample {
113 RealmKerberos parent;
114 RealmIniConfig *config;
115 gulong config_sig;
116 };
117
118 typedef struct {
119 RealmKerberosClass parent_class;
120 } RealmExampleClass;
121
122 enum {
123 PROP_0,
124 PROP_PROVIDER,
125 };
126
127 static void realm_example_kerberos_membership_iface (RealmKerberosMembershipIface *iface);
128
129 G_DEFINE_TYPE_WITH_CODE (RealmExample, realm_example, REALM_TYPE_KERBEROS,
130 G_IMPLEMENT_INTERFACE (REALM_TYPE_KERBEROS_MEMBERSHIP, realm_example_kerberos_membership_iface);
131 );
132
133 static void
134 realm_example_init (RealmExample *self)
135 {
136
137 }
138
139 static void
140 realm_example_constructed (GObject *obj)
141 {
142 RealmKerberos *kerberos = REALM_KERBEROS (obj);
143 GVariant *supported;
144
145 G_OBJECT_CLASS (realm_example_parent_class)->constructed (obj);
146
147 realm_kerberos_set_details (kerberos,
148 REALM_DBUS_OPTION_SERVER_SOFTWARE, REALM_DBUS_IDENTIFIER_EXAMPLE,
149 REALM_DBUS_OPTION_CLIENT_SOFTWARE, REALM_DBUS_IDENTIFIER_EXAMPLE,
150 NULL);
151
152 supported = realm_kerberos_membership_build_supported (
153 REALM_KERBEROS_CREDENTIAL_PASSWORD, REALM_KERBEROS_OWNER_ADMIN,
154 0);
155
156 g_variant_ref_sink (supported);
157 realm_kerberos_set_supported_join_creds (kerberos, supported);
158 g_variant_unref (supported);
159
160 supported = realm_kerberos_membership_build_supported (
161 REALM_KERBEROS_CREDENTIAL_PASSWORD, REALM_KERBEROS_OWNER_ADMIN,
162 REALM_KERBEROS_CREDENTIAL_AUTOMATIC, REALM_KERBEROS_OWNER_NONE,
163 0);
164
165 g_variant_ref_sink (supported);
166 realm_kerberos_set_supported_leave_creds (kerberos, supported);
167 g_variant_unref (supported);
168
169 realm_kerberos_set_login_policy (kerberos, REALM_KERBEROS_ALLOW_ANY_LOGIN);
170 }
171
172 static gboolean
173 validate_membership_options (GVariant *options,
174 GError **error)
175 {
176 const gchar *software;
177
178 /* Figure out the method that we're going to use to enroll */
179 if (g_variant_lookup (options, REALM_DBUS_OPTION_MEMBERSHIP_SOFTWARE, "&s", &software)) {
180 if (!g_str_equal (software, REALM_DBUS_IDENTIFIER_EXAMPLE)) {
181 g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
182 _("Unsupported or unknown membership software '%s'"), software);
183 return FALSE;
184 }
185 }
186
187 return TRUE;
188 }
189
190 static gboolean
191 match_admin_and_password (RealmIniConfig *config,
192 const gchar *realm_name,
193 const gchar *admin_name,
194 GBytes *password)
195 {
196 const gchar *admin;
197 const gchar *pass;
198 gconstpointer data;
199 gsize size;
200
201 admin = realm_settings_value (realm_name, "example-administrator");
202 if (admin == NULL)
203 return FALSE;
204 if (!g_str_equal (admin_name, admin))
205 return FALSE;
206
207 pass = realm_settings_value (realm_name, "example-password");
208 if (pass == NULL)
209 return FALSE;
210 data = g_bytes_get_data (password, &size);
211 if (strlen (pass) != size)
212 return FALSE;
213 return (memcmp (data, pass, size) == 0);
214 }
215
216 typedef struct {
217 RealmExample *self;
218 GSimpleAsyncResult *async;
219 } OpData;
220
221 static gdouble
222 settings_join_delay (const gchar *realm_name)
223 {
224 gchar *endptr = NULL;
225 const gchar *string;
226 gdouble value;
227
228 string = realm_settings_value (realm_name, "example-join-delay");
229 if (string == NULL)
230 return 0.0;
231
232 value = g_strtod (string, &endptr);
233 if (!endptr || endptr[0] != '\0')
234 return 0.0;
235
236 return value * G_USEC_PER_SEC;
237 }
238
239 static void
240 free_op_data (OpData *data)
241 {
242 g_object_unref (data->self);
243 g_object_unref (data->async);
244 g_free (data);
245 }
246
247 static void
248 on_join_sleep_done (GObject *source,
249 GAsyncResult *res,
250 gpointer user_data)
251 {
252 OpData *data = user_data;
253 GError *error = NULL;
254 const gchar *realm_name;
255
256 if (usleep_finish (res, &error)) {
257 realm_name = realm_kerberos_get_name (REALM_KERBEROS (data->self));
258 realm_ini_config_change (data->self->config, realm_name, &error,
259 "login-formats", "%U@%D",
260 "login-permitted", "",
261 "login-policy", REALM_DBUS_LOGIN_POLICY_PERMITTED,
262 NULL);
263 }
264
265 if (error)
266 g_simple_async_result_take_error (data->async, error);
267
268 g_simple_async_result_complete (data->async);
269 free_op_data (data);
270 }
271
272 static void
273 realm_example_join_async (RealmKerberosMembership *membership,
274 const gchar *name,
275 GBytes *password,
276 RealmKerberosFlags flags,
277 GVariant *options,
278 GDBusMethodInvocation *invocation,
279 GAsyncReadyCallback callback,
280 gpointer user_data)
281 {
282 RealmExample *self = REALM_EXAMPLE (membership);
283 RealmKerberos *kerberos = REALM_KERBEROS (self);
284 GSimpleAsyncResult *async;
285 GError *error = NULL;
286 const gchar *realm_name;
287
288 realm_name = realm_kerberos_get_name (kerberos);
289 async = g_simple_async_result_new (G_OBJECT (self), callback, user_data,
290 realm_example_join_async);
291
292 /* Make sure not already enrolled in a realm */
293 if (realm_ini_config_have_section (self->config, realm_name)) {
294 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_ALREADY_CONFIGURED,
295 _("Already joined to a domain"));
296 g_simple_async_result_complete_in_idle (async);
297
298 } else if (!validate_membership_options (options, &error)) {
299 g_simple_async_result_take_error (async, error);
300 g_simple_async_result_complete_in_idle (async);
301
302 } else if (!match_admin_and_password (self->config, realm_name, name, password)) {
303 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_AUTH_FAILED,
304 _("Admin name or password is not valid"));
305 g_simple_async_result_complete_in_idle (async);
306
307 } else {
308 OpData *data = g_new0 (OpData, 1);
309 data->self = g_object_ref (self);
310 data->async = g_object_ref (async);
311 usleep_async (settings_join_delay (realm_name),
312 realm_invocation_get_cancellable (invocation),
313 on_join_sleep_done, data);
314 }
315
316 g_object_unref (async);
317 }
318
319 static void
320 on_leave_sleep_done (GObject *source,
321 GAsyncResult *res,
322 gpointer user_data)
323 {
324 OpData *data = user_data;
325 GError *error = NULL;
326 const gchar *realm_name;
327
328 if (usleep_finish (res, &error)) {
329 realm_name = realm_kerberos_get_name (REALM_KERBEROS (data->self));
330
331 if (realm_ini_config_begin_change (data->self->config, &error)) {
332 realm_ini_config_remove_section (data->self->config, realm_name);
333 realm_ini_config_finish_change (data->self->config, &error);
334 }
335 }
336
337 if (error)
338 g_simple_async_result_take_error (data->async, error);
339
340 g_simple_async_result_complete (data->async);
341 free_op_data (data);
342 }
343
344 static GSimpleAsyncResult *
345 setup_leave (RealmExample *self,
346 GVariant *options,
347 GDBusMethodInvocation *invocation,
348 GAsyncReadyCallback callback,
349 gpointer user_data)
350 {
351 GSimpleAsyncResult *async;
352 const gchar *realm_name;
353
354 realm_name = realm_kerberos_get_name (REALM_KERBEROS (self));
355 async = g_simple_async_result_new (G_OBJECT (self), callback, user_data, setup_leave);
356
357 /* Check that enrolled in this realm */
358 if (!realm_ini_config_have_section (self->config, realm_name)) {
359 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_NOT_CONFIGURED,
360 _("Not currently joined to this domain"));
361 g_simple_async_result_complete_in_idle (async);
362 g_object_unref (async);
363 return NULL;
364 }
365
366 return async;
367 }
368
369 static void
370 realm_example_leave_password_async (RealmKerberosMembership *membership,
371 const gchar *name,
372 GBytes *password,
373 RealmKerberosFlags flags,
374 GVariant *options,
375 GDBusMethodInvocation *invocation,
376 GAsyncReadyCallback callback,
377 gpointer user_data)
378 {
379 RealmExample *self = REALM_EXAMPLE (membership);
380 GSimpleAsyncResult *async;
381 const gchar *realm_name;
382
383 async = setup_leave (self, options, invocation, callback, user_data);
384 if (async == NULL)
385 return;
386
387 realm_name = realm_kerberos_get_name (REALM_KERBEROS (self));
388
389 if (!match_admin_and_password (self->config, realm_name, name, password)) {
390 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_AUTH_FAILED,
391 _("Admin name or password is not valid"));
392 g_simple_async_result_complete_in_idle (async);
393
394 } else {
395 OpData *data = g_new0 (OpData, 1);
396 data->self = g_object_ref (self);
397 data->async = g_object_ref (async);
398 usleep_async (settings_join_delay (realm_name),
399 realm_invocation_get_cancellable (invocation),
400 on_leave_sleep_done, data);
401 }
402
403 g_object_unref (async);
404 }
405
406 static void
407 realm_example_leave_automatic_async (RealmKerberosMembership *membership,
408 RealmKerberosFlags flags,
409 GVariant *options,
410 GDBusMethodInvocation *invocation,
411 GAsyncReadyCallback callback,
412 gpointer user_data)
413 {
414 RealmExample *self = REALM_EXAMPLE (membership);
415 GSimpleAsyncResult *async;
416 const gchar *realm_name;
417
418 async = setup_leave (self, options, invocation, callback, user_data);
419 if (async == NULL)
420 return;
421
422 realm_name = realm_kerberos_get_realm_name (REALM_KERBEROS (self));
423
424 if (realm_settings_boolean (realm_name, "example-no-auto-leave") == TRUE) {
425 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_AUTH_FAILED,
426 _("Need credentials for leaving this domain"));
427 g_simple_async_result_complete_in_idle (async);
428
429 } else {
430 OpData *data = g_new0 (OpData, 1);
431 data->self = g_object_ref (self);
432 data->async = g_object_ref (async);
433 usleep_async (settings_join_delay (realm_name),
434 realm_invocation_get_cancellable (invocation),
435 on_leave_sleep_done, data);
436 }
437
438 g_object_unref (async);
439 }
440
441 static void
442 realm_example_logins_async (RealmKerberos *realm,
443 GDBusMethodInvocation *invocation,
444 RealmKerberosLoginPolicy login_policy,
445 const gchar **add,
446 const gchar **remove,
447 GAsyncReadyCallback callback,
448 gpointer user_data)
449 {
450 RealmExample *self = REALM_EXAMPLE (realm);
451 GSimpleAsyncResult *async;
452 GError *error = NULL;
453 const gchar *name;
454
455 async = g_simple_async_result_new (G_OBJECT (realm), callback, user_data,
456 realm_example_logins_async);
457
458 name = realm_kerberos_get_name (realm);
459
460 if (realm_ini_config_begin_change (self->config, &error)) {
461 realm_ini_config_set (self->config, name, "login-policy",
462 realm_kerberos_login_policy_to_string (login_policy));
463 realm_ini_config_set_list_diff (self->config, name, "login-permitted",
464 ", ", add, remove);
465 realm_ini_config_finish_change (self->config, &error);
466 }
467
468 if (error != NULL)
469 g_simple_async_result_take_error (async, error);
470
471 g_simple_async_result_complete_in_idle (async);
472 g_object_unref (async);
473 }
474
475 static void
476 update_properties (RealmExample *self)
477 {
478 RealmKerberos *kerberos = REALM_KERBEROS (self);
479 GDBusInterface *iface;
480 const gchar *name;
481 gchar *domain;
482 gchar *realm;
483 gchar **formats;
484 gchar **permitted;
485 gchar *policy;
486 const gchar *admin;
487 gboolean configured;
488
489 g_object_freeze_notify (G_OBJECT (self));
490
491 name = realm_kerberos_get_name (kerberos);
492
493 domain = name ? g_ascii_strdown (name, -1) : NULL;
494 realm_kerberos_set_domain_name (kerberos, domain);
495 g_free (domain);
496
497 realm = name ? g_ascii_strup (name, -1) : NULL;
498 realm_kerberos_set_realm_name (kerberos, realm);
499 g_free (realm);
500
501 /* Setup the workgroup property */
502 formats = realm_ini_config_get_list (self->config, name, "login-formats", ", ");
503 realm_kerberos_set_login_formats (kerberos, (const gchar **)formats);
504 g_strfreev (formats);
505
506 permitted = realm_ini_config_get_list (self->config, name, "login-permitted", ", ");
507 realm_kerberos_set_permitted_logins (kerberos, (const gchar **)permitted);
508 g_strfreev (permitted);
509
510 policy = realm_ini_config_get (self->config, name, "login-policy");
511 iface = g_dbus_object_get_interface (G_DBUS_OBJECT (self), REALM_DBUS_REALM_INTERFACE);
512 g_object_set (iface, "login-policy", policy, NULL);
513 g_free (policy);
514
515 admin = realm_settings_value (name, "example-administrator");
516 realm_kerberos_set_suggested_admin (kerberos, admin ? admin : "");
517
518 configured = realm_ini_config_have_section (self->config, name);
519 realm_kerberos_set_configured (kerberos, configured);
520 }
521
522 static void
523 on_config_changed (RealmIniConfig *config,
524 gpointer user_data)
525 {
526 update_properties (REALM_EXAMPLE (user_data));
527 }
528
529 static gboolean
530 realm_example_membership_generic_finish (RealmKerberosMembership *realm,
531 GAsyncResult *result,
532 GError **error)
533 {
534 if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
535 return FALSE;
536
537 update_properties (REALM_EXAMPLE (realm));
538 return TRUE;
539 }
540
541 static gboolean
542 realm_example_generic_finish (RealmKerberos *realm,
543 GAsyncResult *result,
544 GError **error)
545 {
546 if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
547 return FALSE;
548
549 update_properties (REALM_EXAMPLE (realm));
550 return TRUE;
551 }
552
553 static void
554 realm_example_set_property (GObject *obj,
555 guint prop_id,
556 const GValue *value,
557 GParamSpec *pspec)
558 {
559 RealmExample *self = REALM_EXAMPLE (obj);
560 RealmProvider *provider;
561
562 switch (prop_id) {
563 case PROP_PROVIDER:
564 provider = g_value_get_object (value);
565 g_object_get (provider, "example-config", &self->config, NULL);
566 self->config_sig = g_signal_connect (self->config, "changed",
567 G_CALLBACK (on_config_changed),
568 self);
569 break;
570 default:
571 G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
572 break;
573 }
574 }
575
576 static void
577 realm_example_notify (GObject *obj,
578 GParamSpec *spec)
579 {
580 if (g_str_equal (spec->name, "name"))
581 update_properties (REALM_EXAMPLE (obj));
582
583 if (G_OBJECT_CLASS (realm_example_parent_class)->notify)
584 G_OBJECT_CLASS (realm_example_parent_class)->notify (obj, spec);
585 }
586
587 static void
588 realm_example_finalize (GObject *obj)
589 {
590 RealmExample *self = REALM_EXAMPLE (obj);
591
592 if (self->config)
593 g_object_unref (self->config);
594
595 G_OBJECT_CLASS (realm_example_parent_class)->finalize (obj);
596 }
597
598 void
599 realm_example_class_init (RealmExampleClass *klass)
600 {
601 RealmKerberosClass *kerberos_class = REALM_KERBEROS_CLASS (klass);
602 GObjectClass *object_class = G_OBJECT_CLASS (klass);
603
604 kerberos_class->logins_async = realm_example_logins_async;
605 kerberos_class->logins_finish = realm_example_generic_finish;
606
607 object_class->constructed = realm_example_constructed;
608 object_class->set_property = realm_example_set_property;
609 object_class->notify = realm_example_notify;
610 object_class->finalize = realm_example_finalize;
611
612 g_object_class_override_property (object_class, PROP_PROVIDER, "provider");
613 }
614
615 static void
616 realm_example_kerberos_membership_iface (RealmKerberosMembershipIface *iface)
617 {
618 iface->enroll_password_async = realm_example_join_async;
619 iface->enroll_finish = realm_example_membership_generic_finish;
620 iface->unenroll_password_async = realm_example_leave_password_async;
621 iface->unenroll_automatic_async = realm_example_leave_automatic_async;
622 iface->unenroll_finish = realm_example_membership_generic_finish;
623 }
624
625 RealmKerberos *
626 realm_example_new (const gchar *name,
627 RealmProvider *provider)
628 {
629 return g_object_new (REALM_TYPE_EXAMPLE,
630 "name", name,
631 "provider", provider,
632 NULL);
633 }
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #ifndef __REALM_EXAMPLE_H__
17 #define __REALM_EXAMPLE_H__
18
19 #include <gio/gio.h>
20
21 #include "realm-kerberos.h"
22 #include "realm-provider.h"
23
24 G_BEGIN_DECLS
25
26 #define REALM_TYPE_EXAMPLE (realm_example_get_type ())
27 #define REALM_EXAMPLE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), REALM_TYPE_EXAMPLE, RealmExample))
28 #define REALM_IS_EXAMPLE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), REALM_TYPE_EXAMPLE))
29
30 typedef struct _RealmExample RealmExample;
31
32 GType realm_example_get_type (void) G_GNUC_CONST;
33
34 RealmKerberos * realm_example_new (const gchar *name,
35 RealmProvider *provider);
36
37 G_END_DECLS
38
39 #endif /* __REALM_EXAMPLE_H__ */
966966 g_free (delim);
967967 }
968968
969 gchar **
970 realm_ini_config_get_sections (RealmIniConfig *self)
971 {
972 GHashTableIter iter;
973 gpointer section;
974 gchar **sections;
975 gint i = 0;
976
977 g_return_val_if_fail (REALM_IS_INI_CONFIG (self), NULL);
978
979 sections = g_new0 (gchar *, g_hash_table_size (self->sections) + 1);
980 g_hash_table_iter_init (&iter, self->sections);
981 while (g_hash_table_iter_next (&iter, &section, NULL))
982 sections[i++] = g_strdup (section);
983
984 return sections;
985 }
986
969987 gboolean
970988 realm_ini_config_have_section (RealmIniConfig *self,
971989 const gchar *section)
104104 const gchar *section,
105105 GHashTable *parameters);
106106
107 gchar ** realm_ini_config_get_sections (RealmIniConfig *self);
108
107109 gboolean realm_ini_config_have_section (RealmIniConfig *self,
108110 const gchar *section);
109111
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #include "realm-daemon.h"
17 #include "realm-dbus-constants.h"
18 #include "realm-dbus-generated.h"
19 #include "realm-invocation.h"
20
21 #include <glib.h>
22 #include <glib/gi18n.h>
23
24 #include <polkit/polkit.h>
25
26 #include <string.h>
27
28 typedef struct {
29 const gchar *interface;
30 const gchar *method;
31 const gchar *action_id;
32 int options_param;
33 } InvocationMethod;
34
35 static InvocationMethod invocation_methods[] = {
36 { REALM_DBUS_PROVIDER_INTERFACE, "Discover", "org.freedesktop.realmd.discover-realm", 2 },
37 { REALM_DBUS_KERBEROS_MEMBERSHIP_INTERFACE, "Join", "org.freedesktop.realmd.configure-realm", 2 },
38 { REALM_DBUS_KERBEROS_MEMBERSHIP_INTERFACE, "Leave", "org.freedesktop.realmd.deconfigure-realm", 2 },
39 { REALM_DBUS_REALM_INTERFACE, "Deconfigure", "org.freedesktop.realmd.deconfigure-realm", 1 },
40 { REALM_DBUS_REALM_INTERFACE, "ChangeLoginPolicy", "org.freedesktop.realmd.login-policy", 4 },
41 };
42
43 typedef struct {
44 GCancellable *cancellable;
45 gchar *identifier;
46 const gchar *operation;
47 const InvocationMethod *method;
48 } InvocationData;
49
50 typedef struct {
51 guint watch;
52 gchar *locale;
53 } InvocationClient;
54
55 static const GVariantType *asv_type = NULL;
56 static GObject *current_invocation = NULL;
57 static GQuark invocation_data_quark = 0;
58
59 /* These are protected by the mutex */
60 static GHashTable *invocation_clients = NULL;
61 static GHashTable *cancellables = NULL;
62 static PolkitAuthority *polkit_authority = NULL;
63 G_LOCK_DEFINE_STATIC (invocations);
64
65 #define PEER ":peer"
66
67 static void
68 on_cancellable_gone (gpointer user_data,
69 GObject *where_the_object_was)
70 {
71 gchar *invocation_id = user_data;
72
73 G_LOCK (invocations);
74
75 g_hash_table_remove (cancellables, invocation_id);
76
77 G_UNLOCK (invocations);
78 }
79
80 static void
81 invocation_data_free (void *data)
82 {
83 InvocationData *invo = data;
84 if (invo->cancellable)
85 g_object_unref (invo->cancellable);
86 g_free (invo->identifier);
87 g_slice_free (InvocationData, invo);
88 }
89
90 static void
91 on_client_vanished (GDBusConnection *connection,
92 const gchar *name,
93 gpointer user_data)
94 {
95 g_debug ("client gone away: %s", name);
96
97 G_LOCK (invocations);
98
99 g_hash_table_remove (invocation_clients, name);
100
101 G_UNLOCK (invocations);
102 }
103
104 static InvocationClient *
105 lookup_or_register_client (const gchar *sender)
106 {
107 InvocationClient *client;
108
109 g_assert (sender != NULL);
110
111 client = g_hash_table_lookup (invocation_clients, sender);
112 if (!client) {
113 client = g_slice_new0 (InvocationClient);
114 if (!g_str_equal (sender, PEER)) {
115 client->watch = g_bus_watch_name (G_BUS_TYPE_SYSTEM, sender,
116 G_BUS_NAME_WATCHER_FLAGS_NONE,
117 NULL, on_client_vanished, NULL, NULL);
118 g_debug ("client using service: %s", sender);
119 }
120 g_hash_table_insert (invocation_clients, g_strdup (sender), client);
121 }
122
123 return client;
124 }
125
126 static gboolean
127 on_idle_setup_client (gpointer user_data)
128 {
129 gchar *sender = user_data;
130
131 G_LOCK (invocations);
132
133 lookup_or_register_client (sender);
134
135 G_UNLOCK (invocations);
136
137 return FALSE; /* don't call again */
138 }
139
140 static gchar *
141 extract_operation (GDBusMessage *message,
142 const InvocationMethod *method)
143 {
144 gchar *operation = NULL;
145 GVariant *params;
146 GVariant *options;
147 gint idx;
148
149 if (!method->options_param)
150 return NULL;
151
152 params = g_dbus_message_get_body (message);
153 idx = method->options_param - 1;
154
155 if (g_variant_n_children (params) <= idx)
156 return NULL;
157
158 options = g_variant_get_child_value (params, idx);
159 if (g_variant_is_of_type (options, asv_type)) {
160 if (!g_variant_lookup (options, REALM_DBUS_OPTION_OPERATION, "&s", &operation))
161 operation = NULL;
162 }
163
164 g_variant_unref (options);
165 return operation;
166 }
167
168 static void
169 prepare_method_in_dbus_worker_thread (GDBusMessage *message,
170 const gchar *sender)
171 {
172 const InvocationMethod *invo_method;
173 InvocationData *invo = NULL;
174 const gchar *interface;
175 const gchar *method;
176 gchar *operation;
177 gchar *key;
178 gint i;
179
180 g_assert (sender != NULL);
181
182 interface = g_dbus_message_get_interface (message);
183
184 /* Do no processing these interfaces */
185 if (g_str_equal (interface, REALM_DBUS_SERVICE_INTERFACE) ||
186 g_str_equal (interface, DBUS_PROPERTIES_INTERFACE) ||
187 g_str_equal (interface, DBUS_INTROSPECTABLE_INTERFACE) ||
188 g_str_equal (interface, DBUS_PEER_INTERFACE))
189 return;
190
191 method = g_dbus_message_get_member (message);
192
193 invo_method = NULL;
194 for (i = 0; i < G_N_ELEMENTS (invocation_methods); i++) {
195 if (g_str_equal (invocation_methods[i].interface, interface) &&
196 g_str_equal (invocation_methods[i].method, method)) {
197 invo_method = invocation_methods + i;
198 break;
199 }
200 }
201
202 /* Find the operation id for this message */
203 if (invo_method) {
204 invo = g_slice_new0 (InvocationData);
205 invo->method = invo_method;
206
207 operation = extract_operation (message, invo_method);
208 if (operation) {
209 g_debug ("Using '%s' operation for method '%s' invocation on '%s' interface",
210 operation, method, interface);
211 invo->identifier = g_strdup_printf ("%s %s", sender, operation);
212 invo->operation = strchr (invo->identifier, ' ');
213 g_assert (invo->operation != NULL);
214 invo->operation++;
215 } else {
216 invo->identifier = g_strdup (sender);
217 invo->operation = NULL;
218 }
219 }
220
221 g_object_set_qdata_full (G_OBJECT (message), invocation_data_quark,
222 invo, invocation_data_free);
223
224 G_LOCK (invocations);
225
226 /* Prepare a cancellable if desired */
227 if (invo && invo->operation) {
228 invo->cancellable = g_hash_table_lookup (cancellables, invo->identifier);
229 if (invo->cancellable == NULL) {
230 invo->cancellable = g_cancellable_new ();
231 key = g_strdup (invo->identifier);
232 g_hash_table_insert (cancellables, key, invo->cancellable);
233 g_debug ("Registered cancellable for operation '%s'", operation);
234 g_object_weak_ref (G_OBJECT (invo->cancellable), on_cancellable_gone, key);
235 } else {
236 g_object_ref (invo->cancellable);
237 }
238 }
239
240 /* Setup a client later if necessary */
241 if (g_hash_table_lookup (invocation_clients, sender) == NULL)
242 g_idle_add_full (G_PRIORITY_DEFAULT, on_idle_setup_client, g_strdup (sender), g_free);
243
244 G_UNLOCK (invocations);
245 }
246
247 static GDBusMessage *
248 on_connection_filter (GDBusConnection *connection,
249 GDBusMessage *message,
250 gboolean incoming,
251 gpointer user_data)
252 {
253 const gchar *own_name = user_data;
254 GDBusMessageType type;
255 const gchar *sender;
256
257 /* Each time we see an incoming function call, keep the service alive */
258 if (incoming) {
259 type = g_dbus_message_get_message_type (message);
260 if (type == G_DBUS_MESSAGE_TYPE_METHOD_CALL) {
261 sender = g_dbus_message_get_sender (message);
262 g_return_val_if_fail (sender != NULL || realm_daemon_is_dbus_peer (), message);
263
264 if (sender == NULL)
265 sender = PEER;
266 if (!own_name || g_strcmp0 (own_name, sender) != 0)
267 prepare_method_in_dbus_worker_thread (message, sender);
268 }
269 }
270
271 return message;
272 }
273
274 static gboolean
275 on_service_release (RealmDbusService *object,
276 GDBusMethodInvocation *invocation)
277 {
278 const char *sender;
279
280 sender = g_dbus_method_invocation_get_sender (invocation);
281 g_return_val_if_fail (sender != NULL || realm_daemon_is_dbus_peer (), FALSE);
282
283 if (sender == NULL)
284 sender = PEER;
285
286 g_debug ("explicitly releasing service: %s", sender);
287
288 G_LOCK (invocations);
289
290 g_hash_table_remove (invocation_clients, sender);
291
292 G_UNLOCK (invocations);
293
294 realm_dbus_service_complete_release (object, invocation);
295
296 return TRUE;
297 }
298
299 static gboolean
300 on_service_cancel (RealmDbusService *object,
301 GDBusMethodInvocation *invocation,
302 const gchar *operation)
303 {
304 GCancellable *cancellable;
305 gchar *identifier;
306 const gchar *sender;
307
308 sender = g_dbus_method_invocation_get_sender (invocation);
309 g_return_val_if_fail (sender != NULL || realm_daemon_is_dbus_peer (), FALSE);
310
311 if (sender == NULL)
312 sender = PEER;
313
314 G_LOCK (invocations);
315
316 identifier = g_strdup_printf ("%s %s", sender, operation);
317 cancellable = g_hash_table_lookup (cancellables, identifier);
318 g_free (identifier);
319
320 if (cancellable)
321 g_object_ref (cancellable);
322
323 G_UNLOCK (invocations);
324
325 realm_dbus_service_complete_cancel (object, invocation);
326
327 if (cancellable) {
328 g_debug ("Cancelling operation '%s'", operation);
329
330 g_cancellable_cancel (cancellable);
331 g_object_unref (cancellable);
332 } else {
333 g_debug ("Nothing to cancel for '%s'", operation);
334 }
335
336 return TRUE;
337 }
338
339 static gboolean
340 on_service_set_locale (RealmDbusService *object,
341 GDBusMethodInvocation *invocation,
342 const gchar *arg_locale)
343 {
344 InvocationClient *client;
345 const gchar *sender;
346
347 sender = g_dbus_method_invocation_get_sender (invocation);
348 g_return_val_if_fail (sender != NULL || realm_daemon_is_dbus_peer (), FALSE);
349
350 if (sender == NULL)
351 sender = PEER;
352
353 G_LOCK (invocations);
354
355 client = lookup_or_register_client (sender);
356 g_free (client->locale);
357 client->locale = g_strdup (arg_locale);
358
359 G_UNLOCK (invocations);
360
361 realm_dbus_service_complete_set_locale (object, invocation);
362 return TRUE;
363 }
364
365 static void
366 unwatch_and_free_client (gpointer data)
367 {
368 InvocationClient *client = data;
369
370 g_assert (data != NULL);
371 if (client->watch)
372 g_bus_unwatch_name (client->watch);
373 g_free (client->locale);
374 g_slice_free (InvocationClient, client);
375
376 realm_daemon_poke ();
377 }
378
379 void
380 realm_invocation_initialize (GDBusConnection *connection)
381 {
382 RealmDbusService *service;
383 const gchar *self_name;
384
385 invocation_data_quark = g_quark_from_static_string ("realmd-invocation-data");
386 asv_type = G_VARIANT_TYPE ("a{sv}");
387
388 cancellables = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
389 invocation_clients = g_hash_table_new_full (g_str_hash, g_str_equal,
390 g_free, unwatch_and_free_client);
391
392 /* Add a filter which keeps service alive */
393 self_name = g_dbus_connection_get_unique_name (connection);
394 g_dbus_connection_add_filter (connection, on_connection_filter,
395 g_strdup (self_name), g_free);
396
397 service = realm_dbus_service_skeleton_new ();
398 g_signal_connect (service, "handle-release", G_CALLBACK (on_service_release), NULL);
399 g_signal_connect (service, "handle-set-locale", G_CALLBACK (on_service_set_locale), NULL);
400 g_signal_connect (service, "handle-cancel", G_CALLBACK (on_service_cancel), NULL);
401 g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (service),
402 connection, REALM_DBUS_SERVICE_PATH, NULL);
403
404 }
405
406 void
407 realm_invocation_cleanup (void)
408 {
409 g_hash_table_destroy (cancellables);
410 cancellables = NULL;
411
412 g_hash_table_destroy (invocation_clients);
413 invocation_clients = NULL;
414
415 g_clear_object (&polkit_authority);
416 }
417
418 static InvocationData *
419 lookup_invocation_data (GDBusMethodInvocation *invocation)
420 {
421 InvocationData *invo;
422 GDBusMessage *message;
423
424 invo = g_object_get_qdata (G_OBJECT (invocation), invocation_data_quark);
425 if (invo == NULL) {
426 message = g_dbus_method_invocation_get_message (invocation);
427 invo = g_object_get_qdata (G_OBJECT (message), invocation_data_quark);
428 if (invo != NULL)
429 g_object_set_qdata (G_OBJECT (invocation), invocation_data_quark, invo);
430 }
431
432 return invo;
433 }
434
435 static gboolean
436 check_dbus_action (const gchar *sender,
437 const gchar *action_id)
438 {
439 PolkitAuthorizationResult *result;
440 PolkitAuthority *authority;
441 PolkitSubject *subject;
442 GError *error = NULL;
443 gboolean ret;
444
445 /* If we're a dbus peer, just allow all calls */
446 if (realm_daemon_is_dbus_peer ())
447 return TRUE;
448
449 g_return_val_if_fail (sender != NULL, FALSE);
450 g_return_val_if_fail (action_id != NULL, FALSE);
451
452 G_LOCK (invocations);
453
454 authority = polkit_authority ? g_object_ref (polkit_authority) : NULL;
455
456 G_UNLOCK (invocations);
457
458 if (!authority) {
459 authority = polkit_authority_get_sync (NULL, &error);
460 if (authority == NULL) {
461 g_warning ("failure to get polkit authority: %s", error->message);
462 g_error_free (error);
463 return FALSE;
464 }
465
466 G_LOCK (invocations);
467
468 if (polkit_authority == NULL) {
469 polkit_authority = g_object_ref (authority);
470
471 } else {
472 g_object_unref (authority);
473 authority = g_object_ref (polkit_authority);
474 }
475
476 G_UNLOCK (invocations);
477 }
478
479 /* do authorization async */
480 subject = polkit_system_bus_name_new (sender);
481 result = polkit_authority_check_authorization_sync (authority, subject, action_id, NULL,
482 POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION, NULL, &error);
483
484 g_object_unref (authority);
485 g_object_unref (subject);
486
487 /* failed */
488 if (result == NULL) {
489 g_warning ("couldn't check polkit authorization%s%s",
490 error ? ": " : "", error ? error->message : "");
491 g_error_free (error);
492 return FALSE;
493 }
494
495 ret = polkit_authorization_result_get_is_authorized (result);
496 g_object_unref (result);
497
498 return ret;
499 }
500
501
502 gboolean
503 realm_invocation_authorize (GDBusMethodInvocation *invocation)
504 {
505 const gchar *action_id = NULL;
506 const gchar *sender;
507 InvocationData *invo;
508 gboolean ret;
509
510 invo = lookup_invocation_data (invocation);
511
512 if (invo != NULL && invo->method != NULL)
513 action_id = invo->method->action_id;
514
515 if (action_id == NULL) {
516 g_warning ("Couldn't authorize unregistered method '%s' on interface '%s'",
517 g_dbus_method_invocation_get_method_name (invocation),
518 g_dbus_method_invocation_get_interface_name (invocation));
519 ret = FALSE;
520
521 } else {
522 sender = g_dbus_method_invocation_get_sender (invocation);
523 ret = check_dbus_action (sender, action_id);
524 }
525
526 if (ret == FALSE) {
527 g_debug ("rejecting access to method '%s' on interface '%s' at %s",
528 g_dbus_method_invocation_get_method_name (invocation),
529 g_dbus_method_invocation_get_interface_name (invocation),
530 g_dbus_method_invocation_get_object_path (invocation));
531 g_dbus_method_invocation_return_dbus_error (invocation, REALM_DBUS_ERROR_NOT_AUTHORIZED,
532 _("Not authorized to perform this action"));
533 }
534
535 return ret;
536 }
537
538 GCancellable *
539 realm_invocation_get_cancellable (GDBusMethodInvocation *invocation)
540 {
541 InvocationData *invo;
542 g_return_val_if_fail (invocation != NULL, NULL);
543 invo = lookup_invocation_data (invocation);
544 return invo ? invo->cancellable : NULL;
545 }
546
547 const gchar *
548 realm_invocation_get_operation (GDBusMethodInvocation *invocation)
549 {
550 InvocationData *invo;
551 g_return_val_if_fail (invocation != NULL, NULL);
552 invo = lookup_invocation_data (invocation);
553 return invo ? invo->operation : NULL;
554 }
555
556 const gchar *
557 realm_invocation_get_key (GDBusMethodInvocation *invocation)
558 {
559 InvocationData *invo;
560 g_return_val_if_fail (invocation != NULL, NULL);
561 invo = g_object_get_qdata (G_OBJECT (invocation), invocation_data_quark);
562 invo = lookup_invocation_data (invocation);
563 return invo ? invo->identifier : NULL;
564 }
565
566 static void
567 on_invocation_gone (gpointer unused,
568 GObject *where_the_object_was)
569 {
570 g_warning ("a GDBusMethodInvocation was released but the invocation was "
571 "registered as part of a realm_invocation_lock_daemon()");
572 g_assert (where_the_object_was == current_invocation);
573 current_invocation = NULL;
574 }
575
576 gboolean
577 realm_invocation_lock_daemon (GDBusMethodInvocation *invocation)
578 {
579 g_return_val_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation), FALSE);
580
581 if (current_invocation)
582 return FALSE;
583
584 current_invocation = G_OBJECT (invocation);
585 g_object_weak_ref (current_invocation, on_invocation_gone, NULL);
586
587 /* Hold the daemon up while action */
588 realm_daemon_hold ("current-invocation");
589
590 return TRUE;
591 }
592
593 void
594 realm_invocation_unlock_daemon (GDBusMethodInvocation *invocation)
595 {
596 g_return_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation));
597
598 if (current_invocation != G_OBJECT (invocation)) {
599 g_warning ("trying to realm_invocation_unlock_daemon() with an invocation "
600 "that is not registered as the current locked action.");
601 return;
602 }
603
604 g_object_weak_unref (current_invocation, on_invocation_gone, NULL);
605 current_invocation = NULL;
606
607 /* Matches the hold in realm_invocation_lock_daemon() */
608 realm_daemon_release ("current-invocation");
609 }
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #ifndef __REALM_INVOCATION_H__
17 #define __REALM_INVOCATION_H__
18
19 #include <gio/gio.h>
20
21 G_BEGIN_DECLS
22
23 void realm_invocation_initialize (GDBusConnection *connection);
24
25 void realm_invocation_cleanup (void);
26
27 gboolean realm_invocation_authorize (GDBusMethodInvocation *invocation);
28
29 GCancellable * realm_invocation_get_cancellable (GDBusMethodInvocation *invocation);
30
31 const gchar * realm_invocation_get_operation (GDBusMethodInvocation *invocation);
32
33 const gchar * realm_invocation_get_key (GDBusMethodInvocation *invocation);
34
35 gboolean realm_invocation_lock_daemon (GDBusMethodInvocation *invocation);
36
37 void realm_invocation_unlock_daemon (GDBusMethodInvocation *invocation);
38
39 G_END_DECLS
40
41 #endif /* __REALM_INVOCATION_H__ */
1919 #include "realm-diagnostics.h"
2020 #include "realm-discovery.h"
2121 #include "realm-errors.h"
22 #include "realm-invocation.h"
2223 #include "realm-network.h"
2324
2425 #include <glib/gi18n.h>
118119 /* TODO: This stuff will shortly be part of glib */
119120
120121 typedef struct {
122 GCancellable *cancellable;
121123 guchar *buf;
122124 gsize count;
123125 gsize nread;
127129 read_all_closure_free (gpointer data)
128130 {
129131 ReadAllClosure *closure = data;
132 if (closure->cancellable)
133 g_object_unref (closure->cancellable);
130134 g_free (closure->buf);
131135 g_slice_free (ReadAllClosure, closure);
132136 }
138142 {
139143 GSimpleAsyncResult *simple = user_data;
140144 ReadAllClosure *closure = g_simple_async_result_get_op_res_gpointer (simple);
145
141146 GError *error = NULL;
142147 gssize nread;
143148
160165 g_input_stream_read_async (G_INPUT_STREAM (stream),
161166 closure->buf + closure->nread,
162167 closure->count - closure->nread,
163 G_PRIORITY_DEFAULT, NULL,
168 G_PRIORITY_DEFAULT, closure->cancellable,
164169 read_all_callback, g_object_ref (simple));
165170 }
166171 else
175180 static void
176181 read_all_bytes_async (GInputStream *stream,
177182 gsize count,
183 GCancellable *cancellable,
178184 GAsyncReadyCallback callback,
179185 gpointer user_data)
180186 {
187193 closure = g_slice_new0 (ReadAllClosure);
188194 closure->buf = g_malloc (count);
189195 closure->count = count;
196 closure->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
190197 g_simple_async_result_set_op_res_gpointer (simple, closure, read_all_closure_free);
191198
192199 g_input_stream_read_async (stream, closure->buf, count,
193 G_PRIORITY_DEFAULT, NULL,
200 G_PRIORITY_DEFAULT, cancellable,
194201 read_all_callback, simple);
195202 }
196203
217224 }
218225
219226 typedef struct {
227 GCancellable *cancellable;
220228 GBytes *bytes;
221229 gsize written;
222230 } WriteAllClosure;
225233 write_all_closure_free (gpointer data)
226234 {
227235 WriteAllClosure *closure = data;
236 if (closure->cancellable)
237 g_object_unref (closure->cancellable);
228238 g_bytes_unref (closure->bytes);
229239 g_slice_free (WriteAllClosure, closure);
230240 }
257267 data + closure->written,
258268 size - closure->written,
259269 G_PRIORITY_DEFAULT,
260 NULL,
270 closure->cancellable,
261271 write_all_callback,
262272 g_object_ref (simple));
263273 }
272282
273283 static void
274284 write_all_bytes_async (GOutputStream *stream,
275 GBytes *bytes,
276 GAsyncReadyCallback callback,
277 gpointer user_data)
285 GBytes *bytes,
286 GCancellable *cancellable,
287 GAsyncReadyCallback callback,
288 gpointer user_data)
278289 {
279290 GSimpleAsyncResult *simple;
280291 WriteAllClosure *closure;
287298 write_all_bytes_async);
288299 closure = g_slice_new0 (WriteAllClosure);
289300 closure->bytes = g_bytes_ref (bytes);
301 closure->cancellable = cancellable ? g_object_ref (cancellable) : cancellable;
290302 g_simple_async_result_set_op_res_gpointer (simple, closure, write_all_closure_free);
291303
292304 g_output_stream_write_async (stream,
293305 data, size,
294306 G_PRIORITY_DEFAULT,
295 NULL,
307 cancellable,
296308 write_all_callback,
297309 simple);
298310 }
438450 gpointer user_data)
439451 {
440452 RealmIpaDiscover *self = REALM_IPA_DISCOVER (user_data);
453 GCancellable *cancellable;
441454 GError *error = NULL;
442455 GInputStream *input;
443456
446459 write_all_bytes_finish (G_OUTPUT_STREAM (source), result, &error);
447460 if (error == NULL) {
448461 input = g_io_stream_get_input_stream (G_IO_STREAM (self->current_connection));
449 read_all_bytes_async (input, 100 * 1024,
462 cancellable = realm_invocation_get_cancellable (self->invocation);
463 read_all_bytes_async (input, 100 * 1024, cancellable,
450464 on_read_http_response, g_object_ref (self));
451465 } else {
452466 ipa_discover_take_error (self, "Couldn't send HTTP request for certificate", error);
463477 {
464478 RealmIpaDiscover *self = REALM_IPA_DISCOVER (user_data);
465479 gchar *request;
480 GCancellable *cancellable;
466481 GSocketConnection *connection;
467482 GOutputStream *output;
468483 GError *error = NULL;
479494 if (error == NULL) {
480495 self->current_connection = G_IO_STREAM (connection);
481496 output = g_io_stream_get_output_stream (self->current_connection);
482 write_all_bytes_async (output, self->http_request,
497 cancellable = realm_invocation_get_cancellable (self->invocation);
498 write_all_bytes_async (output, self->http_request, cancellable,
483499 on_write_http_request, g_object_ref (self));
484500
485501 /* Errors that mean no domain discovered */
523539 }
524540 }
525541
526 #define VALID_DNS_CHARS \
527 "abcdefghijklnmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-."
528
529542 void
530543 realm_ipa_discover_async (GSrvTarget *kdc,
531544 GDBusMethodInvocation *invocation,
533546 gpointer user_data)
534547 {
535548 RealmIpaDiscover *self;
549 GCancellable *cancellable;
536550 GSocketClient *client;
537551 const gchar *hostname;
538552
539553 g_return_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation));
540554
555 cancellable = realm_invocation_get_cancellable (invocation);
541556 self = g_object_new (REALM_TYPE_IPA_DISCOVER, NULL);
542557 self->invocation = g_object_ref (invocation);
543558 self->callback = callback;
545560 self->kdc = g_srv_target_copy (kdc);
546561
547562 hostname = g_srv_target_get_hostname (self->kdc);
548
549 /* If an invalid hostname, skip and go to next step */
550 if (strspn (hostname, VALID_DNS_CHARS) != strlen (hostname)) {
551 ipa_discover_complete (self);
552 return;
553 }
554
555563 client = g_socket_client_new ();
556564
557565 /* Initial socket connections are limited to a low timeout*/
572580
573581 realm_diagnostics_info (self->invocation, "Trying to retrieve IPA certificate from %s", hostname);
574582
575 g_socket_client_connect_to_host_async (client, hostname, 443,
576 NULL, on_connect_to_host, g_object_ref (self));
583 g_socket_client_connect_to_host_async (client, hostname, 443, cancellable,
584 on_connect_to_host, g_object_ref (self));
577585
578586 g_object_unref (client);
579587
1919 #include "realm-discovery.h"
2020 #include "realm-errors.h"
2121 #include "realm-ipa-discover.h"
22 #include "realm-invocation.h"
2223 #include "realm-kerberos-discover.h"
2324 #include "realm-network.h"
2425
173174
174175 /*
175176 * No errors from the IPA discovery are treated as discovery
176 * failures, but merely the abscence of IPA.
177 * failures, but merely the abscence of IPA. Unless explicitly
178 * cancelled.
177179 */
178 if (error) {
180 if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
181 g_clear_error (&self->error);
182 self->error = error;
183
184 } else {
179185 realm_diagnostics_error (self->key.invocation, error,
180186 "Couldn't discover IPA KDC");
181 g_clear_error (&self->error);
187 g_clear_error (&error);
182188 }
183189
184190 maybe_complete_discover (self);
205211
206212 /* If domain is not AD, start IPA discovery, for first N KDCs */
207213 for (l = self->servers, i = 0; l != NULL && i < 3; l = g_list_next (l), i++) {
214 self->outstanding_ipa++;
208215 realm_ipa_discover_async (l->data, invocation,
209216 on_discover_ipa, g_object_ref (self));
210 self->outstanding_ipa++;
211217 }
212218 }
213219
320326 kerberos_discover_domain_begin (RealmKerberosDiscover *self)
321327 {
322328 GDBusMethodInvocation *invocation = self->key.invocation;
329 GCancellable *cancellable;
323330 GResolver *resolver;
324331 gchar *msdcs;
325332
326333 g_assert (self->domain != NULL);
334
335 cancellable = realm_invocation_get_cancellable (invocation);
327336
328337 realm_diagnostics_info (invocation,
329338 "Searching for kerberos SRV records for domain: _kerberos._udp.%s",
330339 self->domain);
331340
332341 resolver = g_resolver_get_default ();
333 g_resolver_lookup_service_async (resolver, "kerberos", "udp", self->domain, NULL,
342 g_resolver_lookup_service_async (resolver, "kerberos", "udp", self->domain, cancellable,
334343 on_resolve_kerberos, g_object_ref (self));
335344 self->outstanding_kerberos = 1;
336345
341350 "Searching for MSDCS SRV records on domain: _kerberos._tcp.%s",
342351 msdcs);
343352
344 g_resolver_lookup_service_async (resolver, "kerberos", "tcp", msdcs, NULL,
353 g_resolver_lookup_service_async (resolver, "kerberos", "tcp", msdcs, cancellable,
345354 on_resolve_msdcs, g_object_ref (self));
346355 self->outstanding_msdcs = 1;
347356
388397 const Key *key = p;
389398
390399 return str_hash0 (key->string) ^
391 str_hash0 (realm_diagnostics_get_operation_id (key->invocation)) ^
392 str_hash0 (g_dbus_method_invocation_get_sender (key->invocation));
400 str_hash0 (realm_invocation_get_key (key->invocation));
393401 }
394402
395403 static gboolean
400408 const Key *k2 = v2;
401409
402410 return g_strcmp0 (k1->string, k2->string) == 0 &&
403 g_strcmp0 (realm_diagnostics_get_operation_id (k1->invocation),
404 realm_diagnostics_get_operation_id (k2->invocation)) == 0 &&
405 g_strcmp0 (g_dbus_method_invocation_get_sender (k1->invocation),
406 g_dbus_method_invocation_get_sender (k2->invocation)) == 0;
411 g_strcmp0 (realm_invocation_get_key (k1->invocation),
412 realm_invocation_get_key (k2->invocation)) == 0;
407413 }
408414
409415 static gboolean
2020 #include "realm-diagnostics.h"
2121 #include "realm-discovery.h"
2222 #include "realm-errors.h"
23 #include "realm-invocation.h"
2324 #include "realm-kerberos.h"
2425 #include "realm-kerberos-membership.h"
2526 #include "realm-login-name.h"
109110 realm_diagnostics_error (invocation, error, NULL);
110111 g_dbus_method_invocation_return_gerror (invocation, error);
111112
113 } else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
114 realm_diagnostics_error (invocation, error, "Cancelled");
115 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_CANCELLED,
116 _("Operation was cancelled."));
117
112118 } else {
113119 realm_diagnostics_error (invocation, error, "Failed to enroll machine in realm");
114120 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_FAILED,
115121 _("Failed to enroll machine in realm. See diagnostics."));
116122 }
117123
118 realm_daemon_unlock_for_action (invocation);
124 realm_invocation_unlock_daemon (invocation);
119125 }
120126
121127 static void
145151 {
146152 MethodClosure *closure = user_data;
147153 RealmKerberosMembershipIface *iface;
154 GCancellable *cancellable;
148155 GError *error = NULL;
149156
150157 iface = REALM_KERBEROS_MEMBERSHIP_GET_IFACE (closure->self);
151158 g_return_if_fail (iface->unenroll_finish != NULL);
152159
153 (iface->enroll_finish) (REALM_KERBEROS_MEMBERSHIP (closure->self), result, &error);
160 cancellable = realm_invocation_get_cancellable (closure->invocation);
161 if (!g_cancellable_set_error_if_cancelled (cancellable, &error))
162 (iface->enroll_finish) (REALM_KERBEROS_MEMBERSHIP (closure->self), result, &error);
154163
155164 if (error != NULL) {
156165 enroll_method_reply (closure->invocation, error);
160169 /* Only flush the name caches if not in install mode */
161170 } else if (!realm_daemon_is_install_mode ()) {
162171 realm_command_run_known_async ("name-caches-flush", NULL, closure->invocation,
163 NULL, on_name_caches_flush, closure);
172 on_name_caches_flush, closure);
164173
165174 } else {
166175 enroll_method_reply (closure->invocation, NULL);
178187 } else if (error->domain == REALM_ERROR || error->domain == G_DBUS_ERROR) {
179188 realm_diagnostics_error (invocation, error, NULL);
180189 g_dbus_method_invocation_return_gerror (invocation, error);
190
191 } else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
192 realm_diagnostics_error (invocation, error, "Cancelled");
193 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_CANCELLED,
194 _("Operation was cancelled."));
181195
182196 } else {
183197 realm_diagnostics_error (invocation, error, "Failed to unenroll machine from realm");
185199 _("Failed to unenroll machine from domain. See diagnostics."));
186200 }
187201
188 realm_daemon_unlock_for_action (invocation);
202 realm_invocation_unlock_daemon (invocation);
189203 }
190204
191205 static void
195209 {
196210 MethodClosure *closure = user_data;
197211 RealmKerberosMembershipIface *iface;
212 GCancellable *cancellable;
198213 GError *error = NULL;
199214
200215 iface = REALM_KERBEROS_MEMBERSHIP_GET_IFACE (closure->self);
201216 g_return_if_fail (iface->unenroll_finish != NULL);
202217
203 (iface->unenroll_finish) (REALM_KERBEROS_MEMBERSHIP (closure->self), result, &error);
218 cancellable = realm_invocation_get_cancellable (closure->invocation);
219 if (!g_cancellable_set_error_if_cancelled (cancellable, &error))
220 (iface->unenroll_finish) (REALM_KERBEROS_MEMBERSHIP (closure->self), result, &error);
221
204222 unenroll_method_reply (closure->invocation, error);
205223
206224 g_clear_error (&error);
229247 return;
230248 }
231249
232 if (!realm_daemon_lock_for_action (invocation)) {
250 if (!realm_invocation_lock_daemon (invocation)) {
233251 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_BUSY,
234252 _("Already running another action"));
235253 return;
275293 return;
276294 }
277295
278 if (!realm_daemon_lock_for_action (invocation)) {
296 if (!realm_invocation_lock_daemon (invocation)) {
279297 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_BUSY,
280298 _("Already running another action"));
281299 return;
321339 return;
322340 }
323341
324 if (!realm_daemon_lock_for_action (invocation)) {
342 if (!realm_invocation_lock_daemon (invocation)) {
325343 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_BUSY,
326344 _("Already running another action"));
327345 return;
364382 return;
365383 }
366384
367 if (!realm_daemon_lock_for_action (invocation)) {
385 if (!realm_invocation_lock_daemon (invocation)) {
368386 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_BUSY,
369387 _("Already running another action"));
370388 return;
473491 RealmKerberosCredential cred_type;
474492 gboolean assume = FALSE;
475493 gint ret;
476
477 /* Make note of the current operation id, for diagnostics */
478 realm_diagnostics_setup_options (invocation, options);
479494
480495 if (!validate_and_parse_credentials (invocation, credentials, &flags, &cred_type, &creds))
481496 return TRUE;
526541 const gchar *computer_ou;
527542 RealmKerberosCredential cred_type;
528543
529 /* Make note of the current operation id, for diagnostics */
530 realm_diagnostics_setup_options (invocation, options);
531
532544 if (g_variant_lookup (options, REALM_DBUS_OPTION_COMPUTER_OU, "&s", &computer_ou)) {
533545 g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
534546 "The computer-ou argument is not supported when leaving a domain.");
567579 {
568580 RealmKerberos *self = REALM_KERBEROS (user_data);
569581
570 /* Make note of the current operation id, for diagnostics */
571 realm_diagnostics_setup_options (invocation, options);
572
573582 enroll_or_unenroll_with_automatic (self, REALM_KERBEROS_OWNER_COMPUTER,
574583 options, invocation, FALSE);
575584 return TRUE;
605614 g_error_free (error);
606615 }
607616
608 realm_daemon_unlock_for_action (closure->invocation);
617 realm_invocation_unlock_daemon (closure->invocation);
609618 method_closure_free (closure);
610619 }
611620
624633 gchar **policies;
625634 gint policies_set = 0;
626635 gint i;
627
628 /* Make note of the current operation id, for diagnostics */
629 realm_diagnostics_setup_options (invocation, options);
630636
631637 policies = g_strsplit_set (login_policy, ", \t", -1);
632638 for (i = 0; policies[i] != NULL; i++) {
657663 return TRUE;
658664 }
659665
660 if (!realm_daemon_lock_for_action (invocation)) {
666 if (!realm_invocation_lock_daemon (invocation)) {
661667 g_dbus_method_invocation_return_error (invocation, REALM_ERROR, REALM_ERROR_BUSY,
662668 _("Already running another action"));
663669 return TRUE;
678684 GDBusInterfaceSkeleton *iface,
679685 GDBusMethodInvocation *invocation)
680686 {
681 const gchar *interface = g_dbus_method_invocation_get_interface_name (invocation);
682 const gchar *method = g_dbus_method_invocation_get_method_name (invocation);
683 const gchar *action_id = NULL;
684 gboolean ret = FALSE;
685
686 /* Each method has its own polkit authorization */
687 if (g_str_equal (interface, REALM_DBUS_KERBEROS_MEMBERSHIP_INTERFACE)) {
688 if (g_str_equal (method, "Join"))
689 action_id = "org.freedesktop.realmd.configure-realm";
690 else if (g_str_equal (method, "Leave"))
691 action_id = "org.freedesktop.realmd.deconfigure-realm";
692
693 } else if (g_str_equal (interface, REALM_DBUS_REALM_INTERFACE)) {
694 if (g_str_equal (method, "Deconfigure"))
695 action_id = "org.freedesktop.realmd.deconfigure-realm";
696 else if (g_str_equal (method, "ChangeLoginPolicy"))
697 action_id = "org.freedesktop.realmd.login-policy";
698 }
699
700 if (action_id == NULL) {
701 g_warning ("encountered unknown method during auth checks: %s.%s",
702 interface, method);
703 ret = FALSE;
704 } else {
705 ret = realm_daemon_check_dbus_action (g_dbus_method_invocation_get_sender (invocation),
706 action_id);
707 }
708
709 if (ret == FALSE) {
710 g_debug ("rejecting access to: %s.%s method on %s",
711 interface, method, g_dbus_method_invocation_get_object_path (invocation));
712 g_dbus_method_invocation_return_dbus_error (invocation, REALM_DBUS_ERROR_NOT_AUTHORIZED,
713 _("Not authorized to perform this action"));
714 }
715
716 return ret;
687 return realm_invocation_authorize (invocation);
717688 }
718689
719690 static void
860831 G_TYPE_HASH_TABLE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
861832
862833 g_object_class_install_property (object_class, PROP_PROVIDER,
863 g_param_spec_object ("provider", "Provider", "Samba Provider",
834 g_param_spec_object ("provider", "Provider", "Realm Provider",
864835 REALM_TYPE_PROVIDER, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
865836 }
866837
12431214 realm_dbus_realm_set_permitted_logins (self->pv->realm_iface, (const gchar * const*)value);
12441215 }
12451216
1217 const gchar *
1218 realm_kerberos_login_policy_to_string (RealmKerberosLoginPolicy value)
1219 {
1220 switch (value) {
1221 case REALM_KERBEROS_ALLOW_ANY_LOGIN:
1222 return REALM_DBUS_LOGIN_POLICY_ANY;
1223 case REALM_KERBEROS_ALLOW_PERMITTED_LOGINS:
1224 return REALM_DBUS_LOGIN_POLICY_PERMITTED;
1225 case REALM_KERBEROS_DENY_ANY_LOGIN:
1226 return REALM_DBUS_LOGIN_POLICY_DENY;
1227 case REALM_KERBEROS_POLICY_NOT_SET:
1228 return "";
1229 default:
1230 g_return_val_if_reached ("");
1231 }
1232 }
1233
12461234 void
12471235 realm_kerberos_set_login_policy (RealmKerberos *self,
12481236 RealmKerberosLoginPolicy value)
12491237 {
1250 const gchar *policy = "";
1251
1252 g_return_if_fail (REALM_IS_KERBEROS (self));
1253 switch (value) {
1254 case REALM_KERBEROS_ALLOW_ANY_LOGIN:
1255 policy = REALM_DBUS_LOGIN_POLICY_ANY;
1256 break;
1257 case REALM_KERBEROS_ALLOW_PERMITTED_LOGINS:
1258 policy = REALM_DBUS_LOGIN_POLICY_PERMITTED;
1259 break;
1260 case REALM_KERBEROS_DENY_ANY_LOGIN:
1261 policy = REALM_DBUS_LOGIN_POLICY_DENY;
1262 break;
1263 case REALM_KERBEROS_POLICY_NOT_SET:
1264 policy = "";
1265 break;
1266 }
1267
1268 realm_dbus_realm_set_login_policy (self->pv->realm_iface, policy);
1238 realm_dbus_realm_set_login_policy (self->pv->realm_iface,
1239 realm_kerberos_login_policy_to_string (value));
12691240 }
12701241
12711242 void
121121 void realm_kerberos_set_login_policy (RealmKerberos *self,
122122 RealmKerberosLoginPolicy value);
123123
124 const gchar * realm_kerberos_login_policy_to_string (RealmKerberosLoginPolicy value);
125
124126 void realm_kerberos_set_login_formats (RealmKerberos *self,
125127 const gchar **value);
126128
1515
1616 #include "realm-diagnostics.h"
1717 #include "realm-daemon.h"
18 #include "realm-invocation.h"
1819 #include "realm-packages.h"
1920 #include "realm-settings.h"
2021
159160 GSimpleAsyncResult *res = G_SIMPLE_ASYNC_RESULT (user_data);
160161 InstallClosure *install = g_simple_async_result_get_op_res_gpointer (res);
161162 gchar **package_ids;
163 GCancellable *cancellable;
162164 GError *error = NULL;
163165 PkResults *results;
164166 gchar *desc;
171173
172174 } else {
173175 realm_diagnostics_info (install->invocation, "Installing: %s", desc);
174 pk_task_install_packages_async (install->task, package_ids, NULL,
176 cancellable = realm_invocation_get_cancellable (install->invocation);
177 pk_task_install_packages_async (install->task, package_ids, cancellable,
175178 on_install_progress, install,
176179 on_install_installed, g_object_ref (res));
177180 }
211214 for (i = 0; package_sets[i] != NULL; i++) {
212215 section = g_strdup_printf ("%s-packages", package_sets[i]);
213216 settings = realm_settings_section (section);
217 if (settings == NULL) {
218 g_critical ("No section found in settings: %s", section);
219 return;
220 }
214221 g_free (section);
215222
216223 g_hash_table_iter_init (&iter, settings);
1919 #include "realm-diagnostics.h"
2020 #include "realm-discovery.h"
2121 #include "realm-errors.h"
22 #include "realm-invocation.h"
2223 #include "realm-kerberos.h"
2324 #include "realm-provider.h"
2425 #include "realm-settings.h"
7172 gpointer user_data)
7273 {
7374 MethodClosure *closure = user_data;
75 GCancellable *cancellable;
7476 GVariant *retval;
7577 GError *error = NULL;
7678 GPtrArray *results;
7779 const gchar *path;
78 GList *realms;
80 GList *realms = NULL;
7981 gint relevance;
8082 GList *l;
8183
82 realms = realm_provider_discover_finish (closure->self, result, &relevance, &error);
84 cancellable = realm_invocation_get_cancellable (closure->invocation);
85 if (!g_cancellable_set_error_if_cancelled (cancellable, &error))
86 realms = realm_provider_discover_finish (closure->self, result, &relevance, &error);
87
8388 if (error == NULL) {
8489 realms = g_list_sort (realms, sort_configured_first);
8590 results = g_ptr_array_new ();
102107 realm_diagnostics_error (closure->invocation, error, NULL);
103108 g_dbus_method_invocation_return_gerror (closure->invocation, error);
104109
110 } else if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
111 realm_diagnostics_error (closure->invocation, error, "Cancelled");
112 g_dbus_method_invocation_return_error (closure->invocation, REALM_ERROR, REALM_ERROR_CANCELLED,
113 _("Operation was cancelled."));
114
105115 } else {
106116 realm_diagnostics_error (closure->invocation, error, "Failed to discover realm");
107117 g_dbus_method_invocation_return_error (closure->invocation, REALM_ERROR, REALM_ERROR_FAILED,
122132 {
123133 RealmProvider *self = REALM_PROVIDER (user_data);
124134
125 /* Make note of the current operation id, for diagnostics */
126 realm_diagnostics_setup_options (invocation, options);
127
128135 realm_provider_discover (self, string, options, invocation, on_discover_complete,
129136 method_closure_new (self, invocation));
130137
136143 GDBusInterfaceSkeleton *iface,
137144 GDBusMethodInvocation *invocation)
138145 {
139 const gchar *interface = g_dbus_method_invocation_get_interface_name (invocation);
140 const gchar *method = g_dbus_method_invocation_get_method_name (invocation);
141 const gchar *action_id = NULL;
142 gboolean ret = FALSE;
143
144 /* Each method has its own polkit authorization */
145 if (g_str_equal (interface, REALM_DBUS_PROVIDER_INTERFACE)) {
146 if (g_str_equal (method, "Discover")) {
147 action_id = "org.freedesktop.realmd.discover-realm";
148 } else {
149 g_warning ("encountered unknown method during auth checks: %s.%s",
150 interface, method);
151 action_id = NULL;
152 }
153
154 if (action_id != NULL)
155 ret = realm_daemon_check_dbus_action (g_dbus_method_invocation_get_sender (invocation),
156 action_id);
157 else
158 ret = FALSE;
159 }
160
161 if (ret == FALSE) {
162 g_debug ("rejecting access to: %s.%s method on %s",
163 interface, method, g_dbus_method_invocation_get_object_path (invocation));
164 g_dbus_method_invocation_return_dbus_error (invocation, REALM_DBUS_ERROR_NOT_AUTHORIZED,
165 _("Not authorized to perform this action"));
166 }
167
168 return ret;
146 return realm_invocation_authorize (invocation);
169147 }
170148
171149 static void
361339 }
362340
363341 gboolean
364 realm_provider_match_options (GVariant *options,
365 const gchar *server_software,
366 const gchar *client_software)
342 realm_provider_match_software (GVariant *options,
343 const gchar *server_software,
344 const gchar *client_software,
345 const gchar *membership_software)
367346 {
368347 const gchar *string;
369348
370349 g_return_val_if_fail (server_software != NULL, FALSE);
371350 g_return_val_if_fail (client_software != NULL, FALSE);
351 g_return_val_if_fail (membership_software != NULL, FALSE);
372352
373353 if (g_variant_lookup (options, REALM_DBUS_OPTION_SERVER_SOFTWARE, "&s", &string)) {
374354 if (!g_str_equal (server_software, string))
380360 return FALSE;
381361 }
382362
363 if (g_variant_lookup (options, REALM_DBUS_OPTION_MEMBERSHIP_SOFTWARE, "&s", &string)) {
364 if (!g_str_equal (membership_software, string))
365 return FALSE;
366 }
367
383368 return TRUE;
384369 }
9090 void realm_provider_set_realms (RealmProvider *self,
9191 const gchar **value);
9292
93 gboolean realm_provider_match_options (GVariant *options,
93 gboolean realm_provider_match_software (GVariant *options,
9494 const gchar *server_software,
95 const gchar *client_software);
95 const gchar *client_software,
96 const gchar *membership_software);
9697
9798 G_END_DECLS
9899
3232 #include <string.h>
3333
3434 typedef struct {
35 GCancellable *cancellable;
3635 GDBusMethodInvocation *invocation;
3736 gchar *create_computer_arg;
3837 GHashTable *settings;
4241 } JoinClosure;
4342
4443 static void
45 clear_and_free_password (gpointer data)
46 {
47 gchar *password = data;
48 memset ((char *)password, 0, strlen (password));
49 g_free (password);
50 }
51
52 static void
5344 join_closure_free (gpointer data)
5445 {
5546 JoinClosure *join = data;
56
57 g_clear_object (&join->cancellable);
5847
5948 g_bytes_unref (join->password_input);
6049 g_free (join->user_name);
7463 GDBusMethodInvocation *invocation)
7564 {
7665 JoinClosure *join;
77 GByteArray *array;
78 const guchar *data;
79 guchar *input;
80 gsize length;
8166
8267 join = g_slice_new0 (JoinClosure);
8368 join->realm = g_strdup (realm);
8469 join->invocation = invocation ? g_object_ref (invocation) : NULL;
8570
86 if (password) {
87 array = g_byte_array_new ();
88 data = g_bytes_get_data (password, &length);
89 g_byte_array_append (array, data, length);
90
91 /*
92 * We add a new line, which getpass() used inside net
93 * command expects
94 */
95 g_byte_array_append (array, (guchar *)"\n", 1);
96 length = array->len;
97
98 /*
99 * In addition we add null terminator. This is not
100 * written to 'net' command, but used by clear_and_free_password().
101 */
102 g_byte_array_append (array, (guchar *)"\0", 1);
103
104 input = g_byte_array_free (array, FALSE);
105 join->password_input = g_bytes_new_with_free_func (input, length,
106 clear_and_free_password, input);
107 }
71 if (password)
72 join->password_input = realm_command_build_password_line (password);
10873
10974 join->user_name = g_strdup (user_name);
11075
145110 va_end (va);
146111
147112 realm_command_runv_async ((gchar **)args->pdata, environ, input,
148 join->invocation, join->cancellable, callback, user_data);
113 join->invocation, callback, user_data);
149114
150115 g_ptr_array_free (args, TRUE);
151116 }
253218 g_pattern_match_simple ("*failed*: Object class violation*", output->str) ||
254219 g_pattern_match_simple ("*failed*: Insufficient access*", output->str) ||
255220 g_pattern_match_simple ("*: Access denied*", output->str) ||
256 g_pattern_match_simple ("*not have administrator privileges*", output->str)) {
221 g_pattern_match_simple ("*not have administrator privileges*", output->str) ||
222 g_pattern_match_simple ("*failure*: *not been granted the requested logon type*", output->str) ||
223 g_pattern_match_simple ("*failure*: User not allowed to log on to this computer*", output->str) ||
224 g_pattern_match_simple ("*failure*: *specified account is not allowed to authenticate to the machine*", output->str)) {
257225 g_set_error (&error, REALM_ERROR, REALM_ERROR_AUTH_FAILED,
258226 "Insufficient permissions to join the domain %s",
259227 join->realm);
228 } else if (g_pattern_match_simple ("*: Logon failure*", output->str)) {
229 g_set_error (&error, REALM_ERROR, REALM_ERROR_AUTH_FAILED,
230 "The %s account, password, or credentials are invalid",
231 join->user_name);
260232 } else {
261233 g_set_error (&error, REALM_ERROR, REALM_ERROR_INTERNAL,
262234 "Joining the domain %s failed", join->realm);
109109 async = g_simple_async_result_new (G_OBJECT (provider), callback, user_data,
110110 realm_samba_provider_discover_async);
111111
112 if (!realm_provider_match_options (options,
113 REALM_DBUS_IDENTIFIER_ACTIVE_DIRECTORY,
114 REALM_DBUS_IDENTIFIER_WINBIND)) {
112 if (!realm_provider_match_software (options,
113 REALM_DBUS_IDENTIFIER_ACTIVE_DIRECTORY,
114 REALM_DBUS_IDENTIFIER_WINBIND,
115 REALM_DBUS_IDENTIFIER_SAMBA)) {
115116 g_simple_async_result_complete_in_idle (async);
116117
117118 } else {
5858 realm_service_enable_and_restart_finish (result, &error);
5959 if (error == NULL) {
6060 realm_command_run_known_async ("winbind-enable-logins", NULL, invocation,
61 NULL, on_nss_complete, g_object_ref (res));
61 on_nss_complete, g_object_ref (res));
6262
6363 } else {
6464 g_simple_async_result_take_error (res, error);
179179 g_object_unref);
180180
181181 realm_command_run_known_async ("winbind-disable-logins", NULL, invocation,
182 NULL, on_nss_do_disable, g_object_ref (res));
182 on_nss_do_disable, g_object_ref (res));
183183
184184 g_object_unref (res);
185185 }
3838 return;
3939 }
4040
41 realm_command_run_known_async (command, NULL, invocation, NULL, callback, user_data);
41 realm_command_run_known_async (command, NULL, invocation, callback, user_data);
4242 }
4343
4444 static gboolean
180180
181181 return string;
182182 }
183
184 gboolean
185 realm_settings_boolean (const gchar *section,
186 const gchar *key)
187 {
188 const gchar *string;
189
190 string = realm_settings_value (section, key);
191 if (string == NULL) {
192 g_warning ("no value found for '%s/%s' in realmd config", section, key);
193 return FALSE;
194 }
195
196 return g_ascii_strcasecmp (string, "true") == 0 ||
197 g_ascii_strcasecmp (string, "1") == 0 ||
198 g_ascii_strcasecmp (string, "yes") == 0;
199 }
4141 const gchar * realm_settings_string (const gchar *section,
4242 const gchar *key);
4343
44 gboolean realm_settings_boolean (const gchar *section,
45 const gchar *key);
46
4447 G_END_DECLS
4548
4649 #endif /* __REALM_SETTINGS_H__ */
181181
182182 if (error == NULL) {
183183 realm_command_run_known_async ("sssd-enable-logins", NULL, join->invocation,
184 NULL, on_enable_nss_done, g_object_ref (async));
184 on_enable_nss_done, g_object_ref (async));
185185
186186 } else {
187187 g_simple_async_result_take_error (async, error);
9696 return have;
9797 }
9898
99 static gboolean
100 update_domain (RealmIniConfig *config,
101 const char *section,
102 va_list va,
103 GError **error)
104 {
105 GHashTable *parameters;
106 const gchar *name;
107 const gchar *value;
108 gchar *shell;
109
110 /* Always make sure this is set */
111 shell = realm_ini_config_get (config, "nss", "default_shell");
112 if (shell == NULL) {
113 realm_ini_config_set (config, "nss", "default_shell",
114 realm_settings_string ("users", "default-shell"));
115 }
116 g_free (shell);
117
118 parameters = g_hash_table_new (g_str_hash, g_str_equal);
119 while ((name = va_arg (va, const gchar *)) != NULL) {
120 value = va_arg (va, const gchar *);
121 g_hash_table_insert (parameters, (gpointer)name, (gpointer)value);
122 }
123
124 realm_ini_config_set_all (config, section, parameters);
125 g_hash_table_unref (parameters);
126
127 return realm_ini_config_finish_change (config, error);
128
129 }
130
99131 gboolean
100132 realm_sssd_config_add_domain (RealmIniConfig *config,
101133 const gchar *domain,
102134 GError **error,
103135 ...)
104136 {
105 GHashTable *parameters;
106 const gchar *name;
107 const gchar *value;
108137 const gchar *domains[2];
109 gchar *section;
110 gchar *shell;
138 gboolean ret;
139 gchar *section;
111140 va_list va;
112141
113142 g_return_val_if_fail (REALM_IS_INI_CONFIG (config), FALSE);
132161 realm_ini_config_set (config, "sssd", "config_file_version", "2");
133162 }
134163
135 /* Always make sure this is set */
136 shell = realm_ini_config_get (config, "nss", "default_shell");
137 if (shell == NULL) {
138 realm_ini_config_set (config, "nss", "default_shell",
139 realm_settings_string ("users", "default-shell"));
140 }
141 g_free (shell);
142
143164 domains[0] = domain;
144165 domains[1] = NULL;
145166 realm_ini_config_set_list_diff (config, "sssd", "domains", ", ", domains, NULL);
146167
147 parameters = g_hash_table_new (g_str_hash, g_str_equal);
148168 va_start (va, error);
149 while ((name = va_arg (va, const gchar *)) != NULL) {
150 value = va_arg (va, const gchar *);
151 g_hash_table_insert (parameters, (gpointer)name, (gpointer)value);
152 }
169 ret = update_domain (config, section, va, error);
153170 va_end (va);
154171
155 realm_ini_config_set_all (config, section, parameters);
156 g_hash_table_unref (parameters);
157 g_free (section);
158
159 return realm_ini_config_finish_change (config, error);
172 g_free (section);
173
174 return ret;
175 }
176
177 gboolean
178 realm_sssd_config_update_domain (RealmIniConfig *config,
179 const gchar *domain,
180 GError **error,
181 ...)
182 {
183 gchar *section;
184 gboolean ret;
185 va_list va;
186
187 g_return_val_if_fail (REALM_IS_INI_CONFIG (config), FALSE);
188 g_return_val_if_fail (domain != NULL, FALSE);
189 g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
190
191 if (!realm_ini_config_begin_change (config, error))
192 return FALSE;
193
194 section = realm_sssd_config_domain_to_section (domain);
195 if (!realm_ini_config_have_section (config, section)) {
196 realm_ini_config_abort_change (config);
197 g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT,
198 _("Don't have domain %s in sssd.conf config file"), domain);
199 g_free (section);
200 return FALSE;
201 }
202
203 va_start (va, error);
204 ret = update_domain (config, section, va, error);
205 va_end (va);
206
207 g_free (section);
208
209 return ret;
160210 }
161211
162212 gboolean
184234
185235 return realm_ini_config_finish_change (config, error);
186236 }
237
238 gboolean
239 realm_sssd_config_load_domain (RealmIniConfig *config,
240 const gchar *domain,
241 gchar **out_section,
242 gchar **id_provider,
243 gchar **realm_name)
244 {
245 const gchar *field_name;
246 gchar *section;
247 gchar *type;
248 gchar *name;
249
250 g_return_val_if_fail (REALM_IS_INI_CONFIG (config), FALSE);
251 g_return_val_if_fail (domain != NULL, FALSE);
252
253 section = realm_sssd_config_domain_to_section (domain);
254 type = realm_ini_config_get (config, section, "id_provider");
255
256 if (g_strcmp0 (type, "ad") == 0) {
257 field_name = "ad_domain";
258
259 } else if (g_strcmp0 (type, "ipa") == 0) {
260 field_name = "ipa_domain";
261
262 } else {
263 g_free (section);
264 g_free (type);
265 return FALSE;
266 }
267
268 name = realm_ini_config_get (config, section, field_name);
269 if (name == NULL)
270 name = realm_ini_config_get (config, section, "krb5_realm");
271 if (name == NULL)
272 name = g_strdup (domain);
273
274 if (realm_name) {
275 *realm_name = name;
276 name = NULL;
277 }
278
279 if (id_provider) {
280 *id_provider = type;
281 type = NULL;
282 }
283
284 if (out_section) {
285 *out_section = section;
286 section = NULL;
287 }
288
289 g_free (type);
290 g_free (section);
291 g_free (name);
292 return TRUE;
293 }
3737 GError **error,
3838 ...) G_GNUC_NULL_TERMINATED;
3939
40 gboolean realm_sssd_config_update_domain (RealmIniConfig *config,
41 const gchar *domain,
42 GError **error,
43 ...);
44
4045 gboolean realm_sssd_config_remove_domain (RealmIniConfig *config,
4146 const gchar *domain,
4247 GError **error);
4348
49 gboolean realm_sssd_config_load_domain (RealmIniConfig *config,
50 const gchar *domain,
51 gchar **section,
52 gchar **id_provider,
53 gchar **realm_name);
54
4455 G_END_DECLS
4556
4657 #endif /* __REALM_SSSD_CONFIG_H__ */
1313
1414 #include "config.h"
1515
16 #include "realm-ipa-discover.h"
1716 #include "realm-command.h"
1817 #include "realm-daemon.h"
1918 #include "realm-dbus-constants.h"
2019 #include "realm-diagnostics.h"
2120 #include "realm-discovery.h"
2221 #include "realm-errors.h"
22 #include "realm-ipa-discover.h"
23 #include "realm-kerberos.h"
24 #include "realm-kerberos-membership.h"
2325 #include "realm-packages.h"
2426 #include "realm-provider.h"
2527 #include "realm-service.h"
28 #include "realm-settings.h"
2629 #include "realm-sssd.h"
2730 #include "realm-sssd-ipa.h"
2831 #include "realm-sssd-config.h"
2932
33 #include <glib/gi18n.h>
3034 #include <glib/gstdio.h>
3135
3236 #include <errno.h>
4044 RealmSssdClass parent_class;
4145 } RealmSssdIpaClass;
4246
43 G_DEFINE_TYPE (RealmSssdIpa, realm_sssd_ipa, REALM_TYPE_SSSD);
47 static const gchar *NO_PACKAGES[] = {
48 NULL,
49 };
50
51 static const gchar *IPA_PACKAGES[] = {
52 REALM_DBUS_IDENTIFIER_FREEIPA,
53 REALM_DBUS_IDENTIFIER_SSSD,
54 NULL
55 };
56
57 static void realm_sssd_ipa_kerberos_membership_iface (RealmKerberosMembershipIface *iface);
58
59 G_DEFINE_TYPE_WITH_CODE (RealmSssdIpa, realm_sssd_ipa, REALM_TYPE_SSSD,
60 G_IMPLEMENT_INTERFACE (REALM_TYPE_KERBEROS_MEMBERSHIP, realm_sssd_ipa_kerberos_membership_iface);
61 );
4462
4563 static void
4664 realm_sssd_ipa_init (RealmSssdIpa *self)
5270 realm_sssd_ipa_constructed (GObject *obj)
5371 {
5472 RealmKerberos *kerberos = REALM_KERBEROS (obj);
73 GVariant *supported;
5574
5675 G_OBJECT_CLASS (realm_sssd_ipa_parent_class)->constructed (obj);
5776
5978 REALM_DBUS_OPTION_SERVER_SOFTWARE, REALM_DBUS_IDENTIFIER_FREEIPA,
6079 REALM_DBUS_OPTION_CLIENT_SOFTWARE, REALM_DBUS_IDENTIFIER_SSSD,
6180 NULL);
81
82 /*
83 * NOTE: The ipa-client-install service requires that we pass a password directly
84 * to the process, and not a ccache. It also accepts a one time password.
85 */
86 supported = realm_kerberos_membership_build_supported (
87 REALM_KERBEROS_CREDENTIAL_PASSWORD, REALM_KERBEROS_OWNER_ADMIN,
88 REALM_KERBEROS_CREDENTIAL_SECRET, REALM_KERBEROS_OWNER_NONE,
89 0);
90
91 realm_kerberos_set_supported_join_creds (kerberos, supported);
92
93 supported = realm_kerberos_membership_build_supported (
94 REALM_KERBEROS_CREDENTIAL_PASSWORD, REALM_KERBEROS_OWNER_ADMIN,
95 REALM_KERBEROS_CREDENTIAL_AUTOMATIC, REALM_KERBEROS_OWNER_NONE,
96 0);
97
98 realm_kerberos_set_supported_leave_creds (kerberos, supported);
99
100 realm_kerberos_set_suggested_admin (kerberos, "admin");
101 realm_kerberos_set_required_package_sets (kerberos, IPA_PACKAGES);
62102 }
63103
64104 void
67107 GObjectClass *object_class = G_OBJECT_CLASS (klass);
68108 object_class->constructed = realm_sssd_ipa_constructed;
69109 }
110
111 typedef struct {
112 GDBusMethodInvocation *invocation;
113 gchar **argv;
114 GBytes *input;
115 } EnrollClosure;
116
117 static void
118 enroll_closure_free (gpointer data)
119 {
120 EnrollClosure *enroll = data;
121 g_object_unref (enroll->invocation);
122 g_strfreev (enroll->argv);
123 g_bytes_unref (enroll->input);
124 g_slice_free (EnrollClosure, enroll);
125 }
126
127 static void
128 on_enable_nss_done (GObject *source,
129 GAsyncResult *result,
130 gpointer user_data)
131 {
132 GSimpleAsyncResult *async = G_SIMPLE_ASYNC_RESULT (user_data);
133 GError *error = NULL;
134 gint status;
135
136 status = realm_command_run_finish (result, NULL, &error);
137 if (error == NULL && status != 0)
138 g_set_error (&error, REALM_ERROR, REALM_ERROR_INTERNAL,
139 _("Enabling SSSD in nsswitch.conf and PAM failed."));
140 if (error != NULL)
141 g_simple_async_result_take_error (async, error);
142
143 g_simple_async_result_complete (async);
144 g_object_unref (async);
145 }
146
147 static void
148 on_restart_done (GObject *source,
149 GAsyncResult *result,
150 gpointer user_data)
151 {
152 GSimpleAsyncResult *async = G_SIMPLE_ASYNC_RESULT (user_data);
153 EnrollClosure *enroll = g_simple_async_result_get_op_res_gpointer (async);
154 RealmSssd *sssd = REALM_SSSD (g_async_result_get_source_object (user_data));
155 GError *error = NULL;
156
157 realm_service_enable_and_restart_finish (result, &error);
158 if (error == NULL) {
159 realm_sssd_update_properties (sssd);
160 realm_command_run_known_async ("sssd-enable-logins", NULL, enroll->invocation,
161 on_enable_nss_done, g_object_ref (async));
162 } else {
163 g_simple_async_result_take_error (async, error);
164 g_simple_async_result_complete (async);
165 }
166
167 g_object_unref (sssd);
168 g_object_unref (async);
169 }
170
171 static void
172 on_ipa_client_do_restart (GObject *source,
173 GAsyncResult *result,
174 gpointer user_data)
175 {
176 GSimpleAsyncResult *async = G_SIMPLE_ASYNC_RESULT (user_data);
177 EnrollClosure *enroll = g_simple_async_result_get_op_res_gpointer (async);
178 RealmSssd *sssd = REALM_SSSD (g_async_result_get_source_object (user_data));
179 RealmKerberos *realm = REALM_KERBEROS (sssd);
180 GError *error = NULL;
181 GString *output = NULL;
182 gchar *home;
183 gint status;
184
185 status = realm_command_run_finish (result, &output, &error);
186
187 if (error == NULL && status != 0) {
188
189 /*
190 * TODO: We need to update ipa-client-install to accept a
191 * ccache so we can get better feedback on invalid passwords.
192 * We run the process with LC_ALL=C so at least we know these
193 * messages will be in english.
194 */
195 if (g_pattern_match_simple ("*kinit: Password incorrect*", output->str)) {
196 g_set_error (&error, REALM_ERROR, REALM_ERROR_AUTH_FAILED,
197 "Password is incorrect");
198 } else {
199 g_set_error (&error, REALM_ERROR, REALM_ERROR_INTERNAL,
200 "Running ipa-client-install failed");
201 }
202 }
203
204 if (error == NULL) {
205 home = realm_sssd_build_default_home (realm_settings_string ("users", "default-home"));
206
207 realm_sssd_config_update_domain (realm_sssd_get_config (sssd),
208 realm_kerberos_get_name (realm), &error,
209 "re_expression", "(?P<name>[^@]+)@(?P<domain>.+$)",
210 "full_name_format", "%1$s@%2$s",
211 "cache_credentials", "True",
212 "use_fully_qualified_names", "True",
213 "simple_allow_users", ",",
214 "krb5_store_password_if_offline", "True",
215 "fallback_homedir", home,
216 NULL);
217
218 g_free (home);
219 }
220
221 if (error == NULL) {
222 realm_service_enable_and_restart ("sssd", enroll->invocation,
223 on_restart_done, g_object_ref (async));
224
225 } else {
226 g_simple_async_result_take_error (async, error);
227 g_simple_async_result_complete (async);
228 }
229
230 g_object_unref (sssd);
231 g_object_unref (async);
232 }
233
234 static void
235 on_install_do_join (GObject *source,
236 GAsyncResult *result,
237 gpointer user_data)
238 {
239 GSimpleAsyncResult *async = G_SIMPLE_ASYNC_RESULT (user_data);
240 EnrollClosure *enroll = g_simple_async_result_get_op_res_gpointer (async);
241 GError *error = NULL;
242
243 const gchar *env[] = {
244 "LANG=C",
245 NULL,
246 };
247
248 realm_packages_install_finish (result, &error);
249 if (error == NULL) {
250 realm_command_runv_async (enroll->argv, (gchar **)env,
251 enroll->input, enroll->invocation,
252 on_ipa_client_do_restart, g_object_ref (async));
253 } else {
254 g_simple_async_result_take_error (async, error);
255 g_simple_async_result_complete (async);
256 }
257
258 g_object_unref (async);
259 }
260
261 static void
262 join_ipa_async (RealmKerberosMembership *membership,
263 const gchar **argv,
264 GBytes *input,
265 RealmKerberosFlags flags,
266 GVariant *options,
267 GDBusMethodInvocation *invocation,
268 GAsyncReadyCallback callback,
269 gpointer user_data)
270 {
271 RealmKerberos *realm = REALM_KERBEROS (membership);
272 RealmSssd *sssd = REALM_SSSD (realm);
273 GSimpleAsyncResult *async;
274 EnrollClosure *enroll;
275 const gchar *domain_name;
276 const gchar *computer_ou;
277 const gchar *software;
278 const gchar **packages;
279
280 domain_name = realm_kerberos_get_name (realm);
281
282 async = g_simple_async_result_new (G_OBJECT (realm), callback, user_data, NULL);
283 enroll = g_slice_new0 (EnrollClosure);
284 enroll->input = input ? g_bytes_ref (input) : NULL;
285 enroll->argv = g_strdupv ((gchar **)argv);
286 enroll->invocation = g_object_ref (invocation);
287 g_simple_async_result_set_op_res_gpointer (async, enroll, enroll_closure_free);
288
289 if (g_variant_lookup (options, REALM_DBUS_OPTION_COMPUTER_OU, "&s", &computer_ou)) {
290 g_simple_async_result_set_error (async, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
291 _("The computer-ou argument is not supported when joining an IPA domain."));
292 g_simple_async_result_complete_in_idle (async);
293
294 } else if (g_variant_lookup (options, REALM_DBUS_OPTION_MEMBERSHIP_SOFTWARE, "&s", &software) &&
295 !g_str_equal (software, REALM_DBUS_IDENTIFIER_FREEIPA)) {
296 g_simple_async_result_set_error (async, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
297 _("Unsupported or unknown membership software '%s'"), software);
298 g_simple_async_result_complete_in_idle (async);
299
300 } else if (realm_sssd_get_config_section (sssd) != NULL) {
301 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_ALREADY_CONFIGURED,
302 _("Already joined to this domain"));
303 g_simple_async_result_complete_in_idle (async);
304
305 } else if (realm_sssd_config_have_domain (realm_sssd_get_config (sssd), domain_name)) {
306 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_ALREADY_CONFIGURED,
307 _("A domain with this name is already configured"));
308 g_simple_async_result_complete_in_idle (async);
309
310 } else {
311 packages = IPA_PACKAGES;
312 if (flags & REALM_KERBEROS_ASSUME_PACKAGES)
313 packages = NO_PACKAGES;
314 realm_packages_install_async (packages, invocation,
315 on_install_do_join, g_object_ref (async));
316 }
317
318 g_object_unref (async);
319 }
320
321 static void
322 realm_sssd_ipa_enroll_password_async (RealmKerberosMembership *membership,
323 const gchar *name,
324 GBytes *password,
325 RealmKerberosFlags flags,
326 GVariant *options,
327 GDBusMethodInvocation *invocation,
328 GAsyncReadyCallback callback,
329 gpointer user_data)
330 {
331 RealmKerberos *realm = REALM_KERBEROS (membership);
332 GBytes *input;
333
334 const gchar *argv[] = {
335 realm_settings_string ("paths", "ipa-client-install"),
336 "--domain", realm_kerberos_get_name (realm),
337 "--realm", realm_kerberos_get_realm_name (realm),
338 "--principal", name,
339 "-W",
340 "--mkhomedir",
341 "--no-ntp",
342 "--enable-dns-updates",
343 "--unattended",
344 NULL,
345 };
346
347 input = realm_command_build_password_line (password);
348
349 join_ipa_async (membership, argv, input, flags, options,
350 invocation, callback, user_data);
351
352 g_bytes_unref (input);
353 }
354
355 static const char *
356 secret_to_password (GBytes *secret,
357 gchar **password)
358 {
359 gconstpointer data;
360 gsize length;
361
362 /*
363 * In theory the password could be binary with embedded nulls.
364 * We don't support that. And we assume that we don't need to
365 * check for that here, because such a password will be wrong,
366 * and ipa-client-install will simply fail to join the domain.
367 */
368
369 data = g_bytes_get_data (secret, &length);
370 *password = g_strndup (data, length);
371 return *password;
372 }
373
374 static void
375 realm_sssd_ipa_enroll_secret_async (RealmKerberosMembership *membership,
376 GBytes *secret,
377 RealmKerberosFlags flags,
378 GVariant *options,
379 GDBusMethodInvocation *invocation,
380 GAsyncReadyCallback callback,
381 gpointer user_data)
382 {
383 RealmKerberos *realm = REALM_KERBEROS (membership);
384 char *password;
385
386 const gchar *argv[] = {
387 realm_settings_string ("paths", "ipa-client-install"),
388 "--domain", realm_kerberos_get_name (realm),
389 "--realm", realm_kerberos_get_realm_name (realm),
390 "--password", secret_to_password (secret, &password),
391 "--mkhomedir",
392 "--no-ntp",
393 "--enable-dns-updates",
394 "--unattended",
395 NULL,
396 };
397
398 /*
399 * TODO: Allow passing the password other than command line.
400 *
401 * ipa-client-install won't let us pass a password into a prompt
402 * when used with --unattended. We need --unattended since we can't
403 * handle arbitrary prompts. So pass the one time password on
404 * the command line. It's just a one time password, so in the short
405 * term this should be okay.
406 */
407
408 join_ipa_async (membership, argv, NULL, flags, options,
409 invocation, callback, user_data);
410
411 g_free (password);
412 }
413
414 static void
415 on_ipa_client_do_disable (GObject *source,
416 GAsyncResult *result,
417 gpointer user_data)
418 {
419 GSimpleAsyncResult *async = G_SIMPLE_ASYNC_RESULT (user_data);
420 EnrollClosure *enroll = g_simple_async_result_get_op_res_gpointer (async);
421 RealmSssd *sssd = REALM_SSSD (g_async_result_get_source_object (user_data));
422 GError *error = NULL;
423 gint status;
424
425 status = realm_command_run_finish (result, NULL, &error);
426
427 if (error == NULL && status != 0) {
428 g_set_error (&error, REALM_ERROR, REALM_ERROR_INTERNAL,
429 "Running ipa-client-install failed");
430 }
431
432 if (error == NULL) {
433 realm_sssd_deconfigure_domain_tail (sssd, async, enroll->invocation);
434
435 } else {
436 g_simple_async_result_take_error (async, error);
437 g_simple_async_result_complete (async);
438 }
439
440 g_object_unref (sssd);
441 g_object_unref (async);
442 }
443
444 static void
445 leave_ipa_async (RealmKerberosMembership *membership,
446 const gchar **argv,
447 GBytes *input,
448 RealmKerberosFlags flags,
449 GVariant *options,
450 GDBusMethodInvocation *invocation,
451 GAsyncReadyCallback callback,
452 gpointer user_data)
453 {
454 RealmKerberos *realm = REALM_KERBEROS (membership);
455 RealmSssd *sssd = REALM_SSSD (realm);
456 GSimpleAsyncResult *async;
457 EnrollClosure *enroll;
458 const gchar *computer_ou;
459
460 const gchar *env[] = {
461 "LANG=C",
462 NULL,
463 };
464
465 async = g_simple_async_result_new (G_OBJECT (realm), callback, user_data, NULL);
466 enroll = g_slice_new0 (EnrollClosure);
467 enroll->invocation = g_object_ref (invocation);
468 g_simple_async_result_set_op_res_gpointer (async, enroll, enroll_closure_free);
469
470 if (realm_sssd_get_config_section (sssd) == NULL) {
471 g_simple_async_result_set_error (async, REALM_ERROR, REALM_ERROR_NOT_CONFIGURED,
472 _("Not currently joined to this realm"));
473 g_simple_async_result_complete_in_idle (async);
474
475 } else if (g_variant_lookup (options, REALM_DBUS_OPTION_COMPUTER_OU, "&s", &computer_ou)) {
476 g_simple_async_result_set_error (async, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
477 "The computer-ou argument is not supported when leaving an IPA domain.");
478 g_simple_async_result_complete_in_idle (async);
479
480 } else {
481 realm_command_runv_async ((gchar **)argv, (gchar **)env, NULL, invocation,
482 on_ipa_client_do_disable, g_object_ref (async));
483 }
484
485 g_object_unref (async);
486 }
487
488 static void
489 realm_sssd_ipa_leave_password_async (RealmKerberosMembership *membership,
490 const char *name,
491 GBytes *password,
492 RealmKerberosFlags flags,
493 GVariant *options,
494 GDBusMethodInvocation *invocation,
495 GAsyncReadyCallback callback,
496 gpointer user_data)
497 {
498 GBytes *input;
499
500 const gchar *argv[] = {
501 realm_settings_string ("paths", "ipa-client-install"),
502 "--uninstall",
503 "--principal", name,
504 "-W",
505 "--unattended",
506 NULL
507 };
508
509 input = realm_command_build_password_line (password);
510 leave_ipa_async (membership, argv, input, flags, options,
511 invocation, callback, user_data);
512 g_bytes_unref (input);
513 }
514
515 static void
516 realm_sssd_ipa_leave_automatic_async (RealmKerberosMembership *membership,
517 RealmKerberosFlags flags,
518 GVariant *options,
519 GDBusMethodInvocation *invocation,
520 GAsyncReadyCallback callback,
521 gpointer user_data)
522 {
523 const gchar *argv[] = {
524 realm_settings_string ("paths", "ipa-client-install"),
525 "--uninstall",
526 "--unattended",
527 NULL
528 };
529
530 leave_ipa_async (membership, argv, NULL, flags, options,
531 invocation, callback, user_data);
532 }
533
534 static gboolean
535 realm_sssd_ipa_generic_finish (RealmKerberosMembership *realm,
536 GAsyncResult *result,
537 GError **error)
538 {
539 if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result), error))
540 return FALSE;
541
542 return TRUE;
543 }
544
545 static void
546 realm_sssd_ipa_kerberos_membership_iface (RealmKerberosMembershipIface *iface)
547 {
548 iface->enroll_password_async = realm_sssd_ipa_enroll_password_async;
549 iface->enroll_secret_async = realm_sssd_ipa_enroll_secret_async;
550 iface->enroll_finish = realm_sssd_ipa_generic_finish;
551 iface->unenroll_password_async = realm_sssd_ipa_leave_password_async;
552 iface->unenroll_automatic_async = realm_sssd_ipa_leave_automatic_async;
553 iface->unenroll_finish = realm_sssd_ipa_generic_finish;
554 }
6060 {
6161 RealmSssdProvider *self;
6262 GType realm_type;
63 const gchar *name;
6463 gchar **domains;
65 gchar *section;
66 gchar *realm;
6764 gchar *type;
68 gchar *domain;
65 gchar *name;
6966 gint i;
7067
7168 G_OBJECT_CLASS (realm_sssd_provider_parent_class)->constructed (obj);
7673
7774 domains = realm_sssd_config_get_domains (self->config);
7875 for (i = 0; domains && domains[i] != 0; i++) {
79 section = realm_sssd_config_domain_to_section (domains[i]);
80 type = realm_ini_config_get (self->config, section, "id_provider");
81 realm = realm_ini_config_get (self->config, section, "krb5_realm");
82 domain = NULL;
83
84 if (g_strcmp0 (type, "ad") == 0) {
85 name = domain = realm_ini_config_get (self->config, section, "ad_domain");
86 realm_type = REALM_TYPE_SSSD_AD;
87 } else if (g_strcmp0 (type, "ipa") == 0) {
88 name = domain = realm_ini_config_get (self->config, section, "ipa_domain");
89 realm_type = REALM_TYPE_SSSD_IPA;
90 } else {
91 name = domain = NULL;
92 realm_type = 0;
76 if (realm_sssd_config_load_domain (self->config, domains[i], NULL, &type, &name)) {
77 if (g_strcmp0 (type, "ad") == 0)
78 realm_type = REALM_TYPE_SSSD_AD;
79 else if (g_strcmp0 (type, "ipa") == 0)
80 realm_type = REALM_TYPE_SSSD_IPA;
81 else
82 realm_type = 0;
83
84 if (realm_type)
85 realm_provider_lookup_or_register_realm (REALM_PROVIDER (self), realm_type, name, NULL);
86
87 g_free (name);
88 g_free (type);
9389 }
94
95 if (name == NULL)
96 name = realm;
97 if (name == NULL)
98 name = domains[i];
99
100 if (realm_type)
101 realm_provider_lookup_or_register_realm (REALM_PROVIDER (self), realm_type, name, NULL);
102
103 g_free (realm);
104 g_free (type);
105 g_free (domain);
106 g_free (section);
10790 }
10891 g_strfreev (domains);
10992 }
132115 async = g_simple_async_result_new (G_OBJECT (provider), callback, user_data,
133116 realm_sssd_provider_discover_async);
134117
135 if (!realm_provider_match_options (options, REALM_DBUS_IDENTIFIER_ACTIVE_DIRECTORY,
136 REALM_DBUS_IDENTIFIER_SSSD) &&
137 !realm_provider_match_options (options, REALM_DBUS_IDENTIFIER_FREEIPA,
138 REALM_DBUS_IDENTIFIER_SSSD)) {
118 if (!realm_provider_match_software (options,
119 REALM_DBUS_IDENTIFIER_ACTIVE_DIRECTORY,
120 REALM_DBUS_IDENTIFIER_SSSD,
121 REALM_DBUS_IDENTIFIER_SAMBA) &&
122 !realm_provider_match_software (options,
123 REALM_DBUS_IDENTIFIER_ACTIVE_DIRECTORY,
124 REALM_DBUS_IDENTIFIER_SSSD,
125 REALM_DBUS_IDENTIFIER_ADCLI) &&
126 !realm_provider_match_software (options,
127 REALM_DBUS_IDENTIFIER_FREEIPA,
128 REALM_DBUS_IDENTIFIER_SSSD,
129 REALM_DBUS_IDENTIFIER_FREEIPA)) {
139130 g_simple_async_result_complete_in_idle (async);
140131
141132 } else {
4141 PROP_PROVIDER,
4242 };
4343
44 static void update_properties (RealmSssd *self);
45
4644 G_DEFINE_TYPE (RealmSssd, realm_sssd, REALM_TYPE_KERBEROS);
4745
4846 static void
6462 if (error != NULL)
6563 g_simple_async_result_take_error (async, error);
6664
67 update_properties (self);
65 realm_sssd_update_properties (self);
6866 g_simple_async_result_complete (async);
6967
7068 g_object_unref (async);
338336 g_ptr_array_free (permitted, TRUE);
339337 }
340338
341 static void
342 update_properties (RealmSssd *self)
339 void
340 realm_sssd_update_properties (RealmSssd *self)
343341 {
344342 GObject *obj = G_OBJECT (self);
345 const gchar *name;
343 const gchar *my_name;
344 gchar *name = NULL;
346345 gchar *section = NULL;
347 gchar *domain = NULL;
348346 gchar **domains;
349 gchar *realm;
350347 gint i;
351348
352349 g_object_freeze_notify (obj);
350
351 g_free (self->pv->section);
352 self->pv->section = NULL;
353
354 g_free (self->pv->domain);
355 self->pv->domain = NULL;
353356
354357 /* Find the config domain with our realm */
355358 domains = realm_sssd_config_get_domains (self->pv->config);
356 name = realm_kerberos_get_name (REALM_KERBEROS (self));
357 for (i = 0; domains && domains[i]; i++) {
358 section = realm_sssd_config_domain_to_section (domains[i]);
359 realm = realm_ini_config_get (self->pv->config, section, "krb5_realm");
360 if (realm && name && g_ascii_strcasecmp (realm, name) == 0) {
361 domain = g_strdup (domains[i]);
362 break;
363 } else {
359 my_name = realm_kerberos_get_name (REALM_KERBEROS (self));
360 for (i = 0; self->pv->section == NULL && domains && domains[i]; i++) {
361 if (realm_sssd_config_load_domain (self->pv->config, domains[i], &section, NULL, &name)) {
362 if (my_name && name && g_ascii_strcasecmp (my_name, name) == 0) {
363 self->pv->domain = g_strdup (domains[i]);
364 self->pv->section = section;
365 section = NULL;
366 }
367
364368 g_free (section);
365 section = NULL;
369 g_free (name);
366370 }
367371 }
368372 g_strfreev (domains);
369
370 g_free (self->pv->section);
371 self->pv->section = section;
372 g_free (self->pv->domain);
373 self->pv->domain = domain;
374373
375374 /* Update all the other properties */
376375 update_enrolled (self);
386385 on_config_changed (RealmIniConfig *config,
387386 gpointer user_data)
388387 {
389 update_properties (REALM_SSSD (user_data));
388 realm_sssd_update_properties (REALM_SSSD (user_data));
390389 }
391390
392391 static void
417416 GParamSpec *spec)
418417 {
419418 if (g_str_equal (spec->name, "name"))
420 update_properties (REALM_SSSD (obj));
419 realm_sssd_update_properties (REALM_SSSD (obj));
421420
422421 if (G_OBJECT_CLASS (realm_sssd_parent_class)->notify)
423422 G_OBJECT_CLASS (realm_sssd_parent_class)->notify (obj, spec);
596595 domains = realm_sssd_config_get_domains (deconf->config);
597596 if (domains == NULL || g_strv_length (domains) == 0) {
598597 realm_command_run_known_async ("sssd-disable-logins", NULL, deconf->invocation,
599 NULL, on_disable_nss_service, deconf);
598 on_disable_nss_service, deconf);
600599
601600 /* If any domains left, then restart sssd */
602601 } else {
638637 */
639638
640639 realm_command_run_known_async ("sssd-caches-flush", NULL, deconf->invocation,
641 NULL, on_sssd_clear_cache, deconf);
642 }
640 on_sssd_clear_cache, deconf);
641 }
5656 GSimpleAsyncResult *async,
5757 GDBusMethodInvocation *invocation);
5858
59 void realm_sssd_update_properties (RealmSssd *self);
60
5961 G_END_DECLS
6062
6163 #endif /* __REALM_SSSD_H__ */
2020
2121 [sssd-packages]
2222 sssd = /usr/sbin/sssd
23 sssd-tools = /usr/sbin/sss_cache
2324 libnss-sss =
2425 libpam-sss =
2526
4546 sssd-disable-service = /usr/sbin/update-rc.d sssd disable
4647 sssd-restart-service = /usr/sbin/service sssd restart
4748 sssd-stop-service = /usr/sbin/service sssd restart
49 sssd-caches-flush = /usr/sbin/sss_cache --users --groups --netgroups --services --autofs-maps
50
51 # Not sure if this is needed on debian, or if even possible
52 name-caches-flush =
55 smb.conf = /etc/smb.conf
66 sssd.conf = /etc/sssd/sssd.conf
77 adcli = /usr/sbin/adcli
8 ipa-client-install = /usr/sbin/ipa-client-install
89
910 [active-directory]
1011 default-client = sssd
2223 [users]
2324 default-shell = /bin/bash
2425 default-home = /home/%D/%U
26
27 [example]
28 enabled = no
29
30 [example.com]
31 example-administrator = Administrator
32 example-password = bureaucracy
1515 [adcli-packages]
1616 adcli = /usr/sbin/adcli
1717
18 [freeipa-packages]
19 freeipa-client = /usr/sbin/ipa-client-install
20
1821 [commands]
1922 winbind-enable-logins = /usr/sbin/authconfig --update --enablewinbind --enablewinbindauth --enablemkhomedir
2023 winbind-disable-logins = /usr/sbin/authconfig --update --disablewinbind --disablewinbindauth
2932 sssd-disable-service = /usr/bin/systemctl disable sssd.service
3033 sssd-restart-service = /usr/bin/systemctl restart sssd.service
3134 sssd-stop-service = /usr/bin/systemctl stop sssd.service
35 sssd-caches-flush = /usr/sbin/sss_cache --users --groups --netgroups --services --autofs-maps
3236
33 name-caches-flush = /usr/bin/systemctl try-restart accounts-daemon.service
34 sssd-caches-flush = /usr/sbin/sss_cache --users --groups --netgroups --services --autofs-maps
37 # Fedora and RHEL have libnss_sss in place by default, this is no longer needed
38 name-caches-flush =
77 $(NULL)
88
99 AM_CFLAGS = \
10 $(GLIB_CFLAGS)
10 $(GLIB_CFLAGS) \
11 $(POLKIT_CFLAGS)
1112
1213 LDADD = \
1314 $(GLIB_LIBS)
2425
2526 noinst_PROGRAMS = \
2627 frob-install-packages \
27 frob-package-set \
2828 $(NULL)
2929
3030 test_ini_config_SOURCES = \
6060 $(PACKAGEKIT_LIBS) \
6161 $(NULL)
6262
63 frob_package_set_SOURCES = \
64 frob-package-set.c \
65 $(top_srcdir)/service/realm-packages.c \
66 $(top_srcdir)/service/realm-settings.c \
67 $(top_srcdir)/service/realm-diagnostics.c \
68 $(NULL)
69
70 frob_package_set_CFLAGS = \
71 -I$(top_srcdir)/dbus \
72 $(PACKAGEKIT_CFLAGS) \
73 $(AM_CFLAGS) \
74 $(NULL)
75
76 frob_package_set_LDADD = \
77 $(PACKAGEKIT_LIBS) \
78 $(LDADD) \
79 $(NULL)
80
8163 PY_TESTS = \
8264 $(NULL)
8365
5050 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
5151 $(top_srcdir)/Makefile.decl $(top_srcdir)/depcomp
5252 check_PROGRAMS = $(am__EXEEXT_2)
53 noinst_PROGRAMS = frob-install-packages$(EXEEXT) \
54 frob-package-set$(EXEEXT) $(am__EXEEXT_1)
53 noinst_PROGRAMS = frob-install-packages$(EXEEXT) $(am__EXEEXT_1)
5554 subdir = tests
5655 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
57 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
58 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
56 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
57 $(top_srcdir)/configure.ac
5958 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
6059 $(ACLOCAL_M4)
6160 mkinstalldirs = $(install_sh) -d
7675 frob_install_packages_LINK = $(CCLD) $(frob_install_packages_CFLAGS) \
7776 $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
7877 am__objects_1 =
79 am_frob_package_set_OBJECTS = \
80 frob_package_set-frob-package-set.$(OBJEXT) \
81 frob_package_set-realm-packages.$(OBJEXT) \
82 frob_package_set-realm-settings.$(OBJEXT) \
83 frob_package_set-realm-diagnostics.$(OBJEXT) $(am__objects_1)
84 frob_package_set_OBJECTS = $(am_frob_package_set_OBJECTS)
85 am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
86 frob_package_set_DEPENDENCIES = $(am__DEPENDENCIES_1) \
87 $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
88 frob_package_set_LINK = $(CCLD) $(frob_package_set_CFLAGS) $(CFLAGS) \
89 $(AM_LDFLAGS) $(LDFLAGS) -o $@
9078 am_test_ini_config_OBJECTS = test-ini-config.$(OBJEXT) \
9179 realm-ini-config.$(OBJEXT) realm-samba-config.$(OBJEXT) \
9280 realm-settings.$(OBJEXT) $(am__objects_1)
141129 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
142130 am__v_CCLD_0 = @echo " CCLD " $@;
143131 am__v_CCLD_1 =
144 SOURCES = frob-install-packages.c $(frob_package_set_SOURCES) \
145 $(test_ini_config_SOURCES) $(test_login_name_SOURCES) \
146 $(test_samba_ou_format_SOURCES) $(test_sssd_config_SOURCES)
147 DIST_SOURCES = frob-install-packages.c $(frob_package_set_SOURCES) \
148 $(test_ini_config_SOURCES) $(test_login_name_SOURCES) \
149 $(test_samba_ou_format_SOURCES) $(test_sssd_config_SOURCES)
132 SOURCES = frob-install-packages.c $(test_ini_config_SOURCES) \
133 $(test_login_name_SOURCES) $(test_samba_ou_format_SOURCES) \
134 $(test_sssd_config_SOURCES)
135 DIST_SOURCES = frob-install-packages.c $(test_ini_config_SOURCES) \
136 $(test_login_name_SOURCES) $(test_samba_ou_format_SOURCES) \
137 $(test_sssd_config_SOURCES)
150138 am__can_run_installinfo = \
151139 case $$AM_UPDATE_INFO_DIR in \
152140 n|no|NO) false;; \
190178 GMOFILES = @GMOFILES@
191179 GMSGFMT = @GMSGFMT@
192180 GREP = @GREP@
193 GTKDOC_CHECK = @GTKDOC_CHECK@
194 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
195 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
196 GTKDOC_MKPDF = @GTKDOC_MKPDF@
197 GTKDOC_REBASE = @GTKDOC_REBASE@
198 HTML_DIR = @HTML_DIR@
199181 INSTALL = @INSTALL@
200182 INSTALL_DATA = @INSTALL_DATA@
201183 INSTALL_PROGRAM = @INSTALL_PROGRAM@
258240 USE_NLS = @USE_NLS@
259241 VERSION = @VERSION@
260242 XGETTEXT = @XGETTEXT@
243 XMLTO = @XMLTO@
261244 XSLTPROC = @XSLTPROC@
262245 abs_builddir = @abs_builddir@
263246 abs_srcdir = @abs_srcdir@
272255 bindir = @bindir@
273256 build_alias = @build_alias@
274257 builddir = @builddir@
258 cachedir = @cachedir@
275259 datadir = @datadir@
276260 datarootdir = @datarootdir@
277261 docdir = @docdir@
335319 $(NULL)
336320
337321 AM_CFLAGS = \
338 $(GLIB_CFLAGS)
322 $(GLIB_CFLAGS) \
323 $(POLKIT_CFLAGS)
339324
340325 LDADD = \
341326 $(GLIB_LIBS)
378363
379364 frob_install_packages_LDADD = \
380365 $(PACKAGEKIT_LIBS) \
381 $(NULL)
382
383 frob_package_set_SOURCES = \
384 frob-package-set.c \
385 $(top_srcdir)/service/realm-packages.c \
386 $(top_srcdir)/service/realm-settings.c \
387 $(top_srcdir)/service/realm-diagnostics.c \
388 $(NULL)
389
390 frob_package_set_CFLAGS = \
391 -I$(top_srcdir)/dbus \
392 $(PACKAGEKIT_CFLAGS) \
393 $(AM_CFLAGS) \
394 $(NULL)
395
396 frob_package_set_LDADD = \
397 $(PACKAGEKIT_LIBS) \
398 $(LDADD) \
399366 $(NULL)
400367
401368 PY_TESTS = \
458425 frob-install-packages$(EXEEXT): $(frob_install_packages_OBJECTS) $(frob_install_packages_DEPENDENCIES) $(EXTRA_frob_install_packages_DEPENDENCIES)
459426 @rm -f frob-install-packages$(EXEEXT)
460427 $(AM_V_CCLD)$(frob_install_packages_LINK) $(frob_install_packages_OBJECTS) $(frob_install_packages_LDADD) $(LIBS)
461 frob-package-set$(EXEEXT): $(frob_package_set_OBJECTS) $(frob_package_set_DEPENDENCIES) $(EXTRA_frob_package_set_DEPENDENCIES)
462 @rm -f frob-package-set$(EXEEXT)
463 $(AM_V_CCLD)$(frob_package_set_LINK) $(frob_package_set_OBJECTS) $(frob_package_set_LDADD) $(LIBS)
464428 test-ini-config$(EXEEXT): $(test_ini_config_OBJECTS) $(test_ini_config_DEPENDENCIES) $(EXTRA_test_ini_config_DEPENDENCIES)
465429 @rm -f test-ini-config$(EXEEXT)
466430 $(AM_V_CCLD)$(LINK) $(test_ini_config_OBJECTS) $(test_ini_config_LDADD) $(LIBS)
481445 -rm -f *.tab.c
482446
483447 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frob_install_packages-frob-install-packages.Po@am__quote@
484 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frob_package_set-frob-package-set.Po@am__quote@
485 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frob_package_set-realm-diagnostics.Po@am__quote@
486 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frob_package_set-realm-packages.Po@am__quote@
487 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frob_package_set-realm-settings.Po@am__quote@
488448 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realm-ini-config.Po@am__quote@
489449 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realm-login-name.Po@am__quote@
490450 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realm-samba-config.Po@am__quote@
523483 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frob-install-packages.c' object='frob_install_packages-frob-install-packages.obj' libtool=no @AMDEPBACKSLASH@
524484 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
525485 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_install_packages_CFLAGS) $(CFLAGS) -c -o frob_install_packages-frob-install-packages.obj `if test -f 'frob-install-packages.c'; then $(CYGPATH_W) 'frob-install-packages.c'; else $(CYGPATH_W) '$(srcdir)/frob-install-packages.c'; fi`
526
527 frob_package_set-frob-package-set.o: frob-package-set.c
528 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-frob-package-set.o -MD -MP -MF $(DEPDIR)/frob_package_set-frob-package-set.Tpo -c -o frob_package_set-frob-package-set.o `test -f 'frob-package-set.c' || echo '$(srcdir)/'`frob-package-set.c
529 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-frob-package-set.Tpo $(DEPDIR)/frob_package_set-frob-package-set.Po
530 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frob-package-set.c' object='frob_package_set-frob-package-set.o' libtool=no @AMDEPBACKSLASH@
531 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
532 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-frob-package-set.o `test -f 'frob-package-set.c' || echo '$(srcdir)/'`frob-package-set.c
533
534 frob_package_set-frob-package-set.obj: frob-package-set.c
535 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-frob-package-set.obj -MD -MP -MF $(DEPDIR)/frob_package_set-frob-package-set.Tpo -c -o frob_package_set-frob-package-set.obj `if test -f 'frob-package-set.c'; then $(CYGPATH_W) 'frob-package-set.c'; else $(CYGPATH_W) '$(srcdir)/frob-package-set.c'; fi`
536 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-frob-package-set.Tpo $(DEPDIR)/frob_package_set-frob-package-set.Po
537 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='frob-package-set.c' object='frob_package_set-frob-package-set.obj' libtool=no @AMDEPBACKSLASH@
538 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
539 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-frob-package-set.obj `if test -f 'frob-package-set.c'; then $(CYGPATH_W) 'frob-package-set.c'; else $(CYGPATH_W) '$(srcdir)/frob-package-set.c'; fi`
540
541 frob_package_set-realm-packages.o: $(top_srcdir)/service/realm-packages.c
542 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-realm-packages.o -MD -MP -MF $(DEPDIR)/frob_package_set-realm-packages.Tpo -c -o frob_package_set-realm-packages.o `test -f '$(top_srcdir)/service/realm-packages.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-packages.c
543 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-realm-packages.Tpo $(DEPDIR)/frob_package_set-realm-packages.Po
544 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/service/realm-packages.c' object='frob_package_set-realm-packages.o' libtool=no @AMDEPBACKSLASH@
545 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
546 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-realm-packages.o `test -f '$(top_srcdir)/service/realm-packages.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-packages.c
547
548 frob_package_set-realm-packages.obj: $(top_srcdir)/service/realm-packages.c
549 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-realm-packages.obj -MD -MP -MF $(DEPDIR)/frob_package_set-realm-packages.Tpo -c -o frob_package_set-realm-packages.obj `if test -f '$(top_srcdir)/service/realm-packages.c'; then $(CYGPATH_W) '$(top_srcdir)/service/realm-packages.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/service/realm-packages.c'; fi`
550 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-realm-packages.Tpo $(DEPDIR)/frob_package_set-realm-packages.Po
551 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/service/realm-packages.c' object='frob_package_set-realm-packages.obj' libtool=no @AMDEPBACKSLASH@
552 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
553 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-realm-packages.obj `if test -f '$(top_srcdir)/service/realm-packages.c'; then $(CYGPATH_W) '$(top_srcdir)/service/realm-packages.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/service/realm-packages.c'; fi`
554
555 frob_package_set-realm-settings.o: $(top_srcdir)/service/realm-settings.c
556 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-realm-settings.o -MD -MP -MF $(DEPDIR)/frob_package_set-realm-settings.Tpo -c -o frob_package_set-realm-settings.o `test -f '$(top_srcdir)/service/realm-settings.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-settings.c
557 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-realm-settings.Tpo $(DEPDIR)/frob_package_set-realm-settings.Po
558 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/service/realm-settings.c' object='frob_package_set-realm-settings.o' libtool=no @AMDEPBACKSLASH@
559 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
560 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-realm-settings.o `test -f '$(top_srcdir)/service/realm-settings.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-settings.c
561
562 frob_package_set-realm-settings.obj: $(top_srcdir)/service/realm-settings.c
563 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-realm-settings.obj -MD -MP -MF $(DEPDIR)/frob_package_set-realm-settings.Tpo -c -o frob_package_set-realm-settings.obj `if test -f '$(top_srcdir)/service/realm-settings.c'; then $(CYGPATH_W) '$(top_srcdir)/service/realm-settings.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/service/realm-settings.c'; fi`
564 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-realm-settings.Tpo $(DEPDIR)/frob_package_set-realm-settings.Po
565 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/service/realm-settings.c' object='frob_package_set-realm-settings.obj' libtool=no @AMDEPBACKSLASH@
566 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
567 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-realm-settings.obj `if test -f '$(top_srcdir)/service/realm-settings.c'; then $(CYGPATH_W) '$(top_srcdir)/service/realm-settings.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/service/realm-settings.c'; fi`
568
569 frob_package_set-realm-diagnostics.o: $(top_srcdir)/service/realm-diagnostics.c
570 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-realm-diagnostics.o -MD -MP -MF $(DEPDIR)/frob_package_set-realm-diagnostics.Tpo -c -o frob_package_set-realm-diagnostics.o `test -f '$(top_srcdir)/service/realm-diagnostics.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-diagnostics.c
571 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-realm-diagnostics.Tpo $(DEPDIR)/frob_package_set-realm-diagnostics.Po
572 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/service/realm-diagnostics.c' object='frob_package_set-realm-diagnostics.o' libtool=no @AMDEPBACKSLASH@
573 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
574 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-realm-diagnostics.o `test -f '$(top_srcdir)/service/realm-diagnostics.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-diagnostics.c
575
576 frob_package_set-realm-diagnostics.obj: $(top_srcdir)/service/realm-diagnostics.c
577 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -MT frob_package_set-realm-diagnostics.obj -MD -MP -MF $(DEPDIR)/frob_package_set-realm-diagnostics.Tpo -c -o frob_package_set-realm-diagnostics.obj `if test -f '$(top_srcdir)/service/realm-diagnostics.c'; then $(CYGPATH_W) '$(top_srcdir)/service/realm-diagnostics.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/service/realm-diagnostics.c'; fi`
578 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/frob_package_set-realm-diagnostics.Tpo $(DEPDIR)/frob_package_set-realm-diagnostics.Po
579 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/service/realm-diagnostics.c' object='frob_package_set-realm-diagnostics.obj' libtool=no @AMDEPBACKSLASH@
580 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
581 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(frob_package_set_CFLAGS) $(CFLAGS) -c -o frob_package_set-realm-diagnostics.obj `if test -f '$(top_srcdir)/service/realm-diagnostics.c'; then $(CYGPATH_W) '$(top_srcdir)/service/realm-diagnostics.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/service/realm-diagnostics.c'; fi`
582486
583487 realm-ini-config.o: $(top_srcdir)/service/realm-ini-config.c
584488 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT realm-ini-config.o -MD -MP -MF $(DEPDIR)/realm-ini-config.Tpo -c -o realm-ini-config.o `test -f '$(top_srcdir)/service/realm-ini-config.c' || echo '$(srcdir)/'`$(top_srcdir)/service/realm-ini-config.c
+0
-54
tests/frob-package-set.c less more
0 /* realmd -- Realm configuration service
1 *
2 * Copyright 2012 Red Hat Inc
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2 of the licence or (at
7 * your option) any later version.
8 *
9 * See the included COPYING file for more information.
10 *
11 * Author: Stef Walter <stefw@gnome.org>
12 */
13
14 #include "config.h"
15
16 #include <stdlib.h>
17
18 #include "service/realm-packages.h"
19 #include "service/realm-settings.h"
20
21 static void
22 on_packages (GObject *source,
23 GAsyncResult *result,
24 gpointer user_data)
25 {
26 GMainLoop *loop = user_data;
27 GError *error = NULL;
28
29 realm_packages_install_finish (result, &error);
30 g_assert_no_error (error);
31
32 g_main_loop_quit (loop);
33 }
34
35 int
36 main(int argc,
37 char *argv[])
38 {
39 GMainLoop *loop = NULL;
40 const gchar *package_sets[] = { "winbind" , NULL};
41
42 g_type_init ();
43
44 loop = g_main_loop_new (NULL, FALSE);
45
46 realm_settings_init ();
47 realm_packages_install_async (package_sets, NULL, on_packages, loop);
48
49 g_main_loop_run (loop);
50 g_main_loop_unref (loop);
51
52 return 0;
53 }
390390 }
391391
392392 static void
393 test_get_sections (Test *test,
394 gconstpointer unused)
395 {
396 const gchar *data = "[section]\n\t1= one\r\n2=two\n3=three\n[section2]\n[three]";
397 gchar **sections;
398
399 realm_ini_config_read_string (test->config, data);
400 sections = realm_ini_config_get_sections (test->config);
401 g_assert (sections != NULL);
402 g_assert_cmpint (g_strv_length (sections), ==, 3);
403 g_strfreev (sections);
404 }
405
406 static void
393407 test_have_section (Test *test,
394408 gconstpointer unused)
395409 {
643657 g_test_add ("/realmd/ini-config/set-section", Test, NULL, setup, test_set_section, teardown);
644658 g_test_add ("/realmd/ini-config/set-all", Test, NULL, setup, test_set_all, teardown);
645659
660 g_test_add ("/realmd/ini-config/get-sections", Test, NULL, setup, test_get_sections, teardown);
646661 g_test_add ("/realmd/ini-config/have-section", Test, NULL, setup, test_have_section, teardown);
647662 g_test_add ("/realmd/ini-config/remove-section-first", Test, NULL, setup, test_remove_section_first, teardown);
648663 g_test_add ("/realmd/ini-config/remove-section-middle", Test, NULL, setup, test_remove_section_middle, teardown);
163163 }
164164
165165 static void
166 test_update_domain (Test *test,
167 gconstpointer unused)
168 {
169 const gchar *data = "[domain/one]\nval=1\n[sssd]\ndomains=one";
170 const gchar *check = "[domain/one]\nval=1\nuno = 1\neins = one\n[sssd]\ndomains=one\n\n[nss]\ndefault_shell = /bin/bash\n";
171 GError *error = NULL;
172 gchar *output;
173 gboolean ret;
174
175 realm_ini_config_read_string (test->config, data);
176 ret = realm_ini_config_write_file (test->config, "/tmp/test-sssd.conf", &error);
177 g_assert_no_error (error);
178 g_assert (ret == TRUE);
179
180 g_assert (realm_sssd_config_have_domain (test->config, "one") == TRUE);
181 ret = realm_sssd_config_update_domain (test->config, "one", &error,
182 "uno", "1",
183 "eins", "one",
184 NULL);
185 g_assert_no_error (error);
186 g_assert (ret == TRUE);
187
188 ret = g_file_get_contents ("/tmp/test-sssd.conf", &output, NULL, &error);
189 g_assert_no_error (error);
190 g_assert (ret == TRUE);
191
192 g_assert_cmpstr (check, ==, output);
193 g_free (output);
194 }
195
196 static void
197 test_update_domain_missing (Test *test,
198 gconstpointer unused)
199 {
200 const gchar *data = "[domain/one]\nval=1\n[sssd]\ndomains=one";
201 GError *error = NULL;
202 gboolean ret;
203
204 realm_ini_config_read_string (test->config, data);
205 ret = realm_ini_config_write_file (test->config, "/tmp/test-sssd.conf", &error);
206 g_assert_no_error (error);
207 g_assert (ret == TRUE);
208
209 g_assert (realm_sssd_config_have_domain (test->config, "another") == FALSE);
210 ret = realm_sssd_config_update_domain (test->config, "another", &error,
211 "uno", "1",
212 "eins", "one",
213 NULL);
214 g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
215 g_assert (ret == FALSE);
216 }
217
218 static void
166219 test_remove_domain (Test *test,
167220 gconstpointer unused)
168221 {
295348 g_test_add ("/realmd/sssd-config/add-domain", Test, NULL, setup, test_add_domain, teardown);
296349 g_test_add ("/realmd/sssd-config/add-domain-already", Test, NULL, setup, test_add_domain_already, teardown);
297350 g_test_add ("/realmd/sssd-config/add-domain-only", Test, NULL, setup, test_add_domain_only, teardown);
351 g_test_add ("/realmd/sssd-config/update-domain", Test, NULL, setup, test_update_domain, teardown);
352 g_test_add ("/realmd/sssd-config/update-domain-missing", Test, NULL, setup, test_update_domain_missing, teardown);
298353 g_test_add ("/realmd/sssd-config/remove-domain", Test, NULL, setup, test_remove_domain, teardown);
299354 g_test_add ("/realmd/sssd-config/remove-domain-not-exist", Test, NULL, setup, test_remove_domain_not_exist, teardown);
300355 g_test_add ("/realmd/sssd-config/remove-domain-only", Test, NULL, setup, test_remove_domain_only, teardown);
5252 sbin_PROGRAMS = realm$(EXEEXT)
5353 subdir = tools
5454 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
55 am__aclocal_m4_deps = $(top_srcdir)/build/m4/gtk-doc.m4 \
56 $(top_srcdir)/build/m4/intltool.m4 $(top_srcdir)/configure.ac
55 am__aclocal_m4_deps = $(top_srcdir)/build/m4/intltool.m4 \
56 $(top_srcdir)/configure.ac
5757 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
5858 $(ACLOCAL_M4)
5959 mkinstalldirs = $(install_sh) -d
147147 GMOFILES = @GMOFILES@
148148 GMSGFMT = @GMSGFMT@
149149 GREP = @GREP@
150 GTKDOC_CHECK = @GTKDOC_CHECK@
151 GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
152 GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
153 GTKDOC_MKPDF = @GTKDOC_MKPDF@
154 GTKDOC_REBASE = @GTKDOC_REBASE@
155 HTML_DIR = @HTML_DIR@
156150 INSTALL = @INSTALL@
157151 INSTALL_DATA = @INSTALL_DATA@
158152 INSTALL_PROGRAM = @INSTALL_PROGRAM@
215209 USE_NLS = @USE_NLS@
216210 VERSION = @VERSION@
217211 XGETTEXT = @XGETTEXT@
212 XMLTO = @XMLTO@
218213 XSLTPROC = @XSLTPROC@
219214 abs_builddir = @abs_builddir@
220215 abs_srcdir = @abs_srcdir@
229224 bindir = @bindir@
230225 build_alias = @build_alias@
231226 builddir = @builddir@
227 cachedir = @cachedir@
232228 datadir = @datadir@
233229 datarootdir = @datarootdir@
234230 docdir = @docdir@
2121 #include "eggdbusobjectmanagerclient.h"
2222
2323 #include <glib/gi18n.h>
24 #include <glib-unix.h>
2425
2526 #include <sys/socket.h>
2627
129130 g_printerr ("%s", data);
130131 }
131132
133 static gboolean
134 on_ctrl_c_cancel_operation (gpointer data)
135 {
136 RealmDbusService *service = REALM_DBUS_SERVICE (data);
137 realm_dbus_service_call_cancel (service, realm_operation_id,
138 NULL, NULL, NULL);
139 g_printerr ("Cancelling...\n");
140
141 /* Remove this handler */
142 return FALSE;
143 }
144
132145 static RealmClient *
133146 realm_client_new_on_connection (GDBusConnection *connection,
134147 gboolean verbose,
135148 const gchar *bus_name)
136149 {
137150 RealmDbusProvider *provider;
151 RealmDbusService *service;
138152 GError *error = NULL;
139153 GInitable *ret;
140 RealmClient *client;
154 RealmClient *client = NULL;
141155 GDBusSignalFlags flags;
142156
143157 flags = G_DBUS_SIGNAL_FLAGS_NONE;
163177 return NULL;
164178 }
165179
180 service = realm_dbus_service_proxy_new_sync (connection,
181 G_DBUS_PROXY_FLAGS_NONE,
182 bus_name,
183 REALM_DBUS_SERVICE_PATH,
184 NULL, &error);
185 if (error != NULL) {
186 realm_handle_error (error, _("Couldn't connect to realm service"));
187 g_object_unref (provider);
188 return NULL;
189 }
190
166191 ret = g_initable_new (REALM_TYPE_CLIENT, NULL, &error,
167192 "flags", G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE,
168193 "name", bus_name,
175200 client = REALM_CLIENT (ret);
176201 client->provider = g_object_ref (provider);
177202 g_dbus_proxy_set_default_timeout (G_DBUS_PROXY (provider), G_MAXINT);
178 }
179
203
204 /* On Ctrl-C send a cancel to the server */
205 g_unix_signal_add_full (G_PRIORITY_HIGH, SIGINT,
206 on_ctrl_c_cancel_operation,
207 g_object_ref (service),
208 g_object_unref);
209 }
210
211 g_object_unref (service);
180212 g_object_unref (provider);
181213
182214 if (error != NULL) {
183215 realm_handle_error (error, _("Couldn't load the realm service"));
184 g_object_unref (client);
185216 return NULL;
186217 }
187218
305336 const gchar *string,
306337 const gchar *client_software,
307338 const gchar *server_software,
339 const gchar *membership_software,
308340 const gchar *dbus_interface,
309341 GError **error)
310342 {
328360
329361 options = realm_build_options (REALM_DBUS_OPTION_CLIENT_SOFTWARE, client_software,
330362 REALM_DBUS_OPTION_SERVER_SOFTWARE, server_software,
363 REALM_DBUS_OPTION_MEMBERSHIP_SOFTWARE, membership_software,
331364 NULL);
332365
333366 /* Start actual operation */
502535 }
503536 }
504537
505 kerberos = realm_client_to_kerberos (self, membership);
506 realm_name = realm_dbus_kerberos_get_realm_name (kerberos);
507 contents = realm_kinit_to_kerberos_cache (user_name, realm_name, password, error);
508 g_object_unref (kerberos);
509
510 if (!contents) {
511 creds = NULL;
512
513538 /* Do a kinit for the given realm */
514 } else if (use_ccache) {
515 creds = g_variant_new ("(ssv)", "ccache", owner, contents);
539 if (use_ccache) {
540 kerberos = realm_client_to_kerberos (self, membership);
541 realm_name = realm_dbus_kerberos_get_realm_name (kerberos);
542 contents = realm_kinit_to_kerberos_cache (user_name, realm_name, password, error);
543 g_object_unref (kerberos);
544
545 if (!contents)
546 creds = NULL;
547 else
548 creds = g_variant_new ("(ssv)", "ccache", owner, contents);
516549
517550 /* Just prompt for a password, and pass it in */
518551 } else {
519 g_variant_unref (contents);
520552 creds = g_variant_new ("(ssv)", "password", owner,
521553 g_variant_new ("(ss)", user_name, password));
522554 }
4141 const gchar *string,
4242 const gchar *client_software,
4343 const gchar *server_software,
44 const gchar *membership_software,
4445 const gchar *dbus_interface,
4546 GError **error);
4647
4141
4242 static void
4343 print_realm_info (RealmClient *client,
44 gboolean name_only,
4445 RealmDbusRealm *realm)
4546 {
4647 RealmDbusKerberos *kerberos;
5859 g_return_if_fail (REALM_DBUS_IS_REALM (realm));
5960 g_print ("%s\n", realm_dbus_realm_get_name (realm));
6061
62 if (name_only)
63 return;
64
6165 kerberos = realm_client_to_kerberos (client, realm);
6266 if (kerberos) {
6367 print_kerberos_info (client, kerberos);
107111 perform_discover (RealmClient *client,
108112 const gchar *string,
109113 gboolean all,
114 gboolean name_only,
110115 const gchar *server_software,
111 const gchar *client_software)
116 const gchar *client_software,
117 const gchar *membership_software)
112118 {
113119 GHashTable *seen;
114120 gboolean found = FALSE;
117123 GList *realms;
118124 GList *l;
119125
120 realms = realm_client_discover (client, string, client_software, server_software,
126 realms = realm_client_discover (client, string, client_software,
127 server_software, membership_software,
121128 REALM_DBUS_REALM_INTERFACE, &error);
122129
123130 if (error != NULL) {
130137 for (l = realms; l != NULL; l = g_list_next (l)) {
131138 name = realm_dbus_realm_get_name (l->data);
132139 if (all || !g_hash_table_lookup (seen, name)) {
133 print_realm_info (client, l->data);
140 print_realm_info (client, name_only, l->data);
134141 g_hash_table_add (seen, (gchar *)name);
135142 found = TRUE;
136143 }
158165 GOptionContext *context;
159166 gchar *arg_client_software = NULL;
160167 gchar *arg_server_software = NULL;
168 gchar *arg_membership_software = NULL;
161169 GError *error = NULL;
162170 gboolean arg_all = FALSE;
171 gboolean arg_name_only = FALSE;
163172 gint result = 0;
164173 gint ret;
165174 gint i;
166175
167176 GOptionEntry option_entries[] = {
168177 { "all", 'a', 0, G_OPTION_ARG_NONE, &arg_all, N_("Show all discovered realms"), NULL },
178 { "name-only", 'n', 0, G_OPTION_ARG_NONE, &arg_name_only, N_("Show only the names"), NULL },
169179 { "client-software", 0, 0, G_OPTION_ARG_STRING, &arg_client_software, N_("Use specific client software"), NULL },
180 { "membership-software", 0, 0, G_OPTION_ARG_STRING, &arg_membership_software, N_("Use specific membership software"), NULL },
170181 { "server-software", 0, 0, G_OPTION_ARG_STRING, &arg_server_software, N_("Use specific server software"), NULL },
171182 { NULL, }
172183 };
186197 /* The default realm? */
187198 } else if (argc == 1) {
188199 ret = perform_discover (client, NULL, arg_all,
189 arg_server_software, arg_client_software);
200 arg_name_only,
201 arg_server_software,
202 arg_client_software,
203 arg_membership_software);
190204
191205 /* Specific realms */
192206 } else {
193207 for (i = 1; i < argc; i++) {
194208 ret = perform_discover (client, argv[i], arg_all,
195 arg_server_software, arg_client_software);
209 arg_name_only,
210 arg_server_software,
211 arg_client_software,
212 arg_membership_software);
196213 if (ret != 0)
197214 result = ret;
198215 }
200217
201218 g_free (arg_server_software);
202219 g_free (arg_client_software);
220 g_free (arg_membership_software);
203221 g_option_context_free (context);
204222 return result;
205223 }
206224
207225 static int
208226 perform_list (RealmClient *client,
209 gboolean all)
227 gboolean all,
228 gboolean name_only)
210229 {
211230 RealmDbusProvider *provider;
212231 const gchar *const *realms;
220239 for (i = 0; realms && realms[i] != NULL; i++) {
221240 realm = realm_client_get_realm (client, realms[i]);
222241 if (all || realm_is_configured (realm)) {
223 print_realm_info (client, realm);
242 print_realm_info (client, name_only, realm);
224243 printed = TRUE;
225244 }
226245 g_object_unref (realm);
243262 {
244263 GOptionContext *context;
245264 gboolean arg_all = FALSE;
265 gboolean arg_name_only = FALSE;
246266 GError *error = NULL;
247267 gint ret = 0;
248268
249269 GOptionEntry option_entries[] = {
250270 { "all", 'a', 0, G_OPTION_ARG_NONE, &arg_all, N_("Show all realms"), NULL },
271 { "name-only", 'n', 0, G_OPTION_ARG_NONE, &arg_name_only, N_("Show only the names"), NULL },
251272 { NULL, }
252273 };
253274
266287 ret = 2;
267288
268289 } else {
269 return perform_list (client, arg_all);
290 ret = perform_list (client, arg_all, arg_name_only);
270291 }
271292
272293 g_option_context_free (context);
179179 GList *realms;
180180 gint ret;
181181
182 realms = realm_client_discover (client, string, client_software, server_software,
182 realms = realm_client_discover (client, string, client_software,
183 server_software, membership_software,
183184 REALM_DBUS_KERBEROS_MEMBERSHIP_INTERFACE, &error);
184185
185186 if (error != NULL) {
123123 g_ptr_array_add (opts, option);
124124 }
125125
126 option = g_variant_new ("{sv}", "operation", g_variant_new_string (realm_operation_id));
127 g_ptr_array_add (opts, option);
128
126129 options = g_variant_new_array (G_VARIANT_TYPE ("{sv}"), (GVariant * const*)opts->pdata, opts->len);
127130 g_ptr_array_free (opts, TRUE);
128131
206209 krb5_ccache ccache = NULL;
207210 krb5_creds my_creds;
208211 GVariant *result = NULL;
212 const gchar *directory;
209213
210214 code = krb5_init_context (&context);
211215 if (code != 0) {
228232 goto cleanup;
229233 }
230234
231 filename = g_build_filename (g_get_user_runtime_dir (), "realmd-krb5-cache.XXXXXX", NULL);
235 directory = g_get_user_runtime_dir ();
236 if (!g_file_test (directory, G_FILE_TEST_IS_DIR))
237 directory = g_get_tmp_dir ();
238
239 filename = g_build_filename (directory, "realmd-krb5-cache.XXXXXX", NULL);
232240 temp_fd = g_mkstemp_full (filename, O_RDWR, S_IRUSR | S_IWUSR);
233241 if (temp_fd == -1) {
234242 int errn = errno;
2222
2323 G_BEGIN_DECLS
2424
25 #define realm_operation_id "realm-enroll"
25 #define realm_operation_id "client-operation"
2626
2727 extern GOptionEntry realm_global_options[];
2828