/mandos/release

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

« back to all changes in this revision

Viewing changes to plugin-runner.xml

Convert some programs to use the exit codes from <sysexits.h>.  Change
all programs using the "argp" parsing functions to use them correctly;
checking return value, using argp_error() to report parse errors etc.

* plugin-runner.c: Use <sysexits.h> exit codes.  Always use fallback,
                   even on option errors, except for "--help", etc.
  (getplugin): Make sure "errno" is set correctly on return.
  (main): Declare our own "--help", "--usage", and "--version"
          options which do not cause the fallback to be invoked.
          In all other options, use fallback on any error.
  (parse_opt, parse_opt_config_file): Reset errno at start and return
                                      errno.  No need to check "arg"
                                      for NULL.  New "--help",
                                      "--usage", and "--version"
                                      options.
  (parse_opt): Accept empty string as global option.  Do not print
               errors which will be detected and reported later.  Do
               "argp_error()" on parse error or empty plugin names.
* plugins.d/mandos-client.c: Use <sysexits.h> exit codes.  Do not
                             return successful exit code on "--help",
                             etc. since this would give the wrong
                             message to "plugin-runner".
  (main): Declare our own "--help", "--usage", and "--version"
          options which do not return a successful exit code.
  (parse_opt): Reset errno at start and return errno.  Do
               "argp_error()" on parse errors.  New "--help",
               "--usage", and "--version" options.
* plugins.d/password-prompt.c: Use exit codes from <sysexits.h>.  Do
                               not return successful exit code on
                               "--help", etc. since this would give
                               the wrong message to "plugin-runner".
  (main): Declare our own "--help", "--usage", and "--version" options
          which do not return a successful exit code.  Do
          close(STDOUT_FILENO) after writing to check its return code.
  (parse_opt): Reset errno at start and return errno.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3
3
        "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4
4
<!ENTITY COMMANDNAME "plugin-runner">
5
 
<!ENTITY TIMESTAMP "2016-03-05">
 
5
<!ENTITY TIMESTAMP "2009-01-17">
6
6
<!ENTITY % common SYSTEM "common.ent">
7
7
%common;
8
8
]>
19
19
        <firstname>Björn</firstname>
20
20
        <surname>Påhlsson</surname>
21
21
        <address>
22
 
          <email>belorn@recompile.se</email>
 
22
          <email>belorn@fukt.bsnet.se</email>
23
23
        </address>
24
24
      </author>
25
25
      <author>
26
26
        <firstname>Teddy</firstname>
27
27
        <surname>Hogeborn</surname>
28
28
        <address>
29
 
          <email>teddy@recompile.se</email>
 
29
          <email>teddy@fukt.bsnet.se</email>
30
30
        </address>
31
31
      </author>
32
32
    </authorgroup>
33
33
    <copyright>
34
34
      <year>2008</year>
35
35
      <year>2009</year>
36
 
      <year>2010</year>
37
 
      <year>2011</year>
38
 
      <year>2012</year>
39
 
      <year>2013</year>
40
 
      <year>2014</year>
41
 
      <year>2015</year>
42
 
      <year>2016</year>
43
36
      <holder>Teddy Hogeborn</holder>
44
37
      <holder>Björn Påhlsson</holder>
45
38
    </copyright>
120
113
      <arg><option>--plugin-dir=<replaceable
121
114
      >DIRECTORY</replaceable></option></arg>
122
115
      <sbr/>
123
 
      <arg><option>--plugin-helper-dir=<replaceable
124
 
      >DIRECTORY</replaceable></option></arg>
125
 
      <sbr/>
126
116
      <arg><option>--config-file=<replaceable
127
117
      >FILE</replaceable></option></arg>
128
118
      <sbr/>
270
260
            Disable the plugin named
271
261
            <replaceable>PLUGIN</replaceable>.  The plugin will not be
272
262
            started.
273
 
          </para>
 
263
          </para>       
274
264
        </listitem>
275
265
      </varlistentry>
276
266
      
329
319
      </varlistentry>
330
320
      
331
321
      <varlistentry>
332
 
        <term><option>--plugin-helper-dir
333
 
        <replaceable>DIRECTORY</replaceable></option></term>
334
 
        <listitem>
335
 
          <para>
336
 
            Specify a different plugin helper directory.  The default
337
 
            is <filename>/lib/mandos/plugin-helpers</filename>, which
338
 
            will exist in the initial <acronym>RAM</acronym> disk
339
 
            environment.  (This will simply be passed to all plugins
340
 
            via the <envar>MANDOSPLUGINHELPERDIR</envar> environment
341
 
            variable.  See <xref linkend="writing_plugins"/>)
342
 
          </para>
343
 
        </listitem>
344
 
      </varlistentry>
345
 
      
346
 
      <varlistentry>
347
322
        <term><option>--config-file
348
323
        <replaceable>FILE</replaceable></option></term>
349
324
        <listitem>
450
425
      <para>
451
426
        The plugin will run in the initial RAM disk environment, so
452
427
        care must be taken not to depend on any files or running
453
 
        services not available there.  Any helper executables required
454
 
        by the plugin (which are not in the <envar>PATH</envar>) can
455
 
        be placed in the plugin helper directory, the name of which
456
 
        will be made available to the plugin via the
457
 
        <envar>MANDOSPLUGINHELPERDIR</envar> environment variable.
 
428
        services not available there.
458
429
      </para>
459
430
      <para>
460
431
        The plugin must exit cleanly and free all allocated resources
503
474
      only passes on its environment to all the plugins.  The
504
475
      environment passed to plugins can be modified using the
505
476
      <option>--global-env</option> and <option>--env-for</option>
506
 
      options.  Also, the <option>--plugin-helper-dir</option> option
507
 
      will affect the environment variable
508
 
      <envar>MANDOSPLUGINHELPERDIR</envar> for the plugins.
 
477
      options.
509
478
    </para>
510
479
  </refsect1>
511
480
  
554
523
      The <option>--config-file</option> option is ignored when
555
524
      specified from within a configuration file.
556
525
    </para>
557
 
    <xi:include href="bugs.xml"/>
558
526
  </refsect1>
559
527
  
560
528
  <refsect1 id="examples">
603
571
    </informalexample>
604
572
    <informalexample>
605
573
      <para>
606
 
        Read a different configuration file, run plugins from a
607
 
        different directory, specify an alternate plugin helper
608
 
        directory and add two options to the
 
574
        Run plugins from a different directory, read a different
 
575
        configuration file, and add two options to the
609
576
        <citerefentry><refentrytitle >mandos-client</refentrytitle>
610
577
        <manvolnum>8mandos</manvolnum></citerefentry> plugin:
611
578
      </para>
612
579
      <para>
613
580
 
614
581
<!-- do not wrap this line -->
615
 
<userinput>cd /etc/keys/mandos; &COMMANDNAME;  --config-file=/etc/mandos/plugin-runner.conf --plugin-dir /usr/lib/x86_64-linux-gnu/mandos/plugins.d --plugin-helper-dir /usr/lib/x86_64-linux-gnu/mandos/plugin-helpers --options-for=mandos-client:--pubkey=pubkey.txt,--seckey=seckey.txt</userinput>
 
582
<userinput>cd /etc/keys/mandos; &COMMANDNAME;  --config-file=/etc/mandos/plugin-runner.conf --plugin-dir /usr/lib/mandos/plugins.d --options-for=mandos-client:--pubkey=pubkey.txt,--seckey=seckey.txt</userinput>
616
583
 
617
584
      </para>
618
585
    </informalexample>
650
617
  <refsect1 id="see_also">
651
618
    <title>SEE ALSO</title>
652
619
    <para>
653
 
      <citerefentry><refentrytitle>intro</refentrytitle>
654
 
      <manvolnum>8mandos</manvolnum></citerefentry>,
655
620
      <citerefentry><refentrytitle>cryptsetup</refentrytitle>
656
621
      <manvolnum>8</manvolnum></citerefentry>,
657
622
      <citerefentry><refentrytitle>crypttab</refentrytitle>