/mandos/trunk

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

« back to all changes in this revision

Viewing changes to plugin-runner.xml

  • Committer: Teddy Hogeborn
  • Date: 2016-03-09 21:23:21 UTC
  • Revision ID: teddy@recompile.se-20160309212321-2qlkzj9tecepc8xq
Server: Add Python 3 compatibility

Add Python 3 compatibility by not using the python-avahi module.  Also
fix miscellaneous things which differs in Python 3.  Especially hard
to fix is loading and saving clients data between Python 3 and 2,
since pickle formats have problems with strings.

* INSTALL: Remove python-avahi (and change python-gobject to
  python-gi, which is preferred now).
* debian/control (Source: mandos/Build-Depends-Indep): Remove
  "python-avahi".
* mandos: Wrap future_builtins import in try-except clause.  Do not
  import avahi module.  Use codecs.decode(..., "base64) instead of
  .decode("base64).  Use .keys(), .values(), and .items() instead of
  .iterkeys(), .itervalues(), and .iteritems().
  (alternate_dbus_interfaces/wrapper): Python 3 still requires the
  "black magic", but luckily it still works.  The Python 3 type()
  constructor requires first argument to be a string, not a byte
  string.
  (copy_function): New.  Use throughout.
  (Avahi, avahi): New class and global variable.
  (GnuTLS._need_version): Changed to be a byte string.
  (main): Decode byte strings loaded from pickle file.
  (main/cleanup): Dump using pickle prototoc 2 which Python 2 can
  read.

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 "2023-04-30">
 
5
<!ENTITY TIMESTAMP "2016-03-05">
6
6
<!ENTITY % common SYSTEM "common.ent">
7
7
%common;
8
8
]>
40
40
      <year>2014</year>
41
41
      <year>2015</year>
42
42
      <year>2016</year>
43
 
      <year>2017</year>
44
 
      <year>2018</year>
45
 
      <year>2019</year>
46
43
      <holder>Teddy Hogeborn</holder>
47
44
      <holder>Björn Påhlsson</holder>
48
45
    </copyright>
423
420
    <title>PLUGINS</title>
424
421
    <para>
425
422
      This program will get a password by running a number of
426
 
      <firstterm>plugins</firstterm>, which are executable programs in
427
 
      a directory in the initial <acronym>RAM</acronym> disk
428
 
      environment.  The default directory is
 
423
      <firstterm>plugins</firstterm>, which are simply executable
 
424
      programs in a directory in the initial <acronym>RAM</acronym>
 
425
      disk environment.  The default directory is
429
426
      <filename>/lib/mandos/plugins.d</filename>, but this can be
430
427
      changed with the <option>--plugin-dir</option> option.  The
431
428
      plugins are started in parallel, and the first plugin to output
437
434
    <refsect2 id="writing_plugins">
438
435
      <title>WRITING PLUGINS</title>
439
436
      <para>
440
 
        A plugin is an executable program which prints a password to
441
 
        its standard output and then exits with a successful (zero)
442
 
        exit status.  If the exit status is not zero, any output on
 
437
        A plugin is simply a program which prints a password to its
 
438
        standard output and then exits with a successful (zero) exit
 
439
        status.  If the exit status is not zero, any output on
443
440
        standard output will be ignored by the plugin runner.  Any
444
441
        output on its standard error channel will simply be passed to
445
442
        the standard error of the plugin runner, usually the system
547
544
            </para>
548
545
          </listitem>
549
546
        </varlistentry>
550
 
        <varlistentry>
551
 
          <term><filename class="directory"
552
 
          >/lib/mandos/plugins.d</filename></term>
553
 
          <listitem>
554
 
            <para>
555
 
              The default plugin directory; can be changed by the
556
 
              <option>--plugin-dir</option> option.
557
 
            </para>
558
 
          </listitem>
559
 
        </varlistentry>
560
 
        <varlistentry>
561
 
          <term><filename class="directory"
562
 
          >/lib/mandos/plugin-helpers</filename></term>
563
 
          <listitem>
564
 
            <para>
565
 
              The default plugin helper directory; can be changed by
566
 
              the <option>--plugin-helper-dir</option> option.
567
 
            </para>
568
 
          </listitem>
569
 
        </varlistentry>
570
547
      </variablelist>
571
548
    </para>
572
549
  </refsect1>
628
605
      <para>
629
606
        Read a different configuration file, run plugins from a
630
607
        different directory, specify an alternate plugin helper
631
 
        directory and add four options to the
 
608
        directory and add two options to the
632
609
        <citerefentry><refentrytitle >mandos-client</refentrytitle>
633
610
        <manvolnum>8mandos</manvolnum></citerefentry> plugin:
634
611
      </para>
635
612
      <para>
636
613
 
637
614
<!-- do not wrap this line -->
638
 
<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,&#x200b;--seckey=seckey.txt,&#x200b;--tls-pubkey=tls-pubkey.pem,&#x200b;--tls-privkey=tls-privkey.pem</userinput>
 
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>
639
616
 
640
617
      </para>
641
618
    </informalexample>