/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 network-hooks.d/bridge

  • Committer: Teddy Hogeborn
  • Date: 2008-07-20 06:33:48 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080720063348-jscgy5p0itrgvlo8
* mandos-clients.conf ([foo]): Uncommented.
  ([foo]/secret): New.
  ([foo]/secfile): Commented out.
  ([foo]/checker): Changed to "fping -q -- %%(fqdn)s".
  ([foo]/timeout): New.

* server.py: New modeline for Python and Emacs.  Set a logging format.
  (Client.__init__): Bug fix: Choose either the value from the options
                     object or pass the argument through string_to_delta
                     for both "timeout" and "interval".
  (Client.checker_callback): Bug fix: Do not log spurious "Checker for
                             <foo> failed" messages.
  (Client.start_checker): Moved "Starting checker" log message down to
                          just before actually starting the subprocess.
                          Do not redirect the subprocesses' stdout to a
                          pipe.
  (peer_certificate, fingerprint): Added docstrings.
  (entry_group_state_changed): Call "killme()" instead of
                               "main_loop.quit()".
  (daemon, killme): New functions.
  (exitstatus, main_loop_started): New global variables.
  (__main__): Removed the "--cert", "--key", "--ca", and "--crl"
              options.  Removed the sleep command from the default
              checker.  Add a console logger in debug mode.  Call
              "killme()" instead of "main_loop.quit()" when there are no
              more clients.  Call "daemon()" if not in debug mode.
              Register "cleanup()" to run at exit.  Ignore some
              signals.  Catch DBusException to detect another running
              server and exit cleanly.  Exit with "exitstatus".
  (cleanup): New function.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/sh
2
 
#
3
 
# This is an example of a Mandos client network hook.  This hook
4
 
# brings up a bridge interface as specified in a separate
5
 
# configuration file.  To be used, this file and any needed
6
 
# configuration file(s) should be copied into the
7
 
# /etc/mandos/network-hooks.d directory.
8
 
9
 
# Copying and distribution of this file, with or without modification,
10
 
# are permitted in any medium without royalty provided the copyright
11
 
# notice and this notice are preserved.  This file is offered as-is,
12
 
# without any warranty.
13
 
 
14
 
set -e
15
 
 
16
 
CONFIG="$MANDOSNETHOOKDIR/bridge.conf"
17
 
 
18
 
addrtoif(){
19
 
    grep -liFe "$1" /sys/class/net/*/address \
20
 
        | sed -e 's,.*/\([^/]*\)/[^/]*,\1,'
21
 
}
22
 
 
23
 
# Read config file, which must set "BRIDGE", "PORT_ADDRESSES", and
24
 
# optionally "IPADDRS" and "ROUTES".
25
 
if [ -e "$CONFIG" ]; then
26
 
    . "$CONFIG"
27
 
fi
28
 
 
29
 
if [ -z "$BRIDGE" -o -z "$PORT_ADDRESSES" ]; then
30
 
    exit
31
 
fi
32
 
 
33
 
if [ -n "$DEVICE" -a "$DEVICE" != "$BRIDGE" ]; then
34
 
    exit
35
 
fi
36
 
 
37
 
for b in /sbin/brctl /usr/sbin/brctl; do
38
 
    if [ -e "$b" ]; then
39
 
        brctl="$b"
40
 
        break
41
 
    fi
42
 
done
43
 
 
44
 
case "$1" in
45
 
    start)
46
 
        "$brctl" addbr "$BRIDGE"
47
 
        for address in $PORT_ADDRESSES; do
48
 
            interface=`addrtoif "$address"`
49
 
            "$brctl" addif "$BRIDGE" "$interface"
50
 
            ip link set dev "$interface" up
51
 
        done
52
 
        ip link set dev "$BRIDGE" up
53
 
        sleep "$DELAY"
54
 
        if [ -n "$IPADDRS" ]; then
55
 
            for ipaddr in $IPADDRS; do
56
 
                ip addr add "$ipaddr" dev "$BRIDGE"
57
 
            done
58
 
        fi
59
 
        if [ -n "$ROUTES" ]; then
60
 
            for route in $ROUTES; do
61
 
                ip route add "$route" dev "$BRIDGE"
62
 
            done
63
 
        fi
64
 
        ;;
65
 
    stop)
66
 
        ip link set dev "$BRIDGE" down
67
 
        for address in $PORT_ADDRESSES; do
68
 
            interface=`addrtoif "$address"`
69
 
            ip link set dev "$interface" down
70
 
            "$brctl" delif "$BRIDGE" "$interface"
71
 
        done
72
 
        "$brctl" delbr "$BRIDGE"
73
 
        ;;
74
 
    files)
75
 
        echo /bin/ip
76
 
        echo "$brctl"
77
 
        ;;
78
 
    modules)
79
 
        echo bridge
80
 
        ;;
81
 
esac