/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 mandos

  • Committer: Teddy Hogeborn
  • Date: 2008-08-16 03:29:08 UTC
  • Revision ID: teddy@fukt.bsnet.se-20080816032908-ihw7c05r2mnyk389
Add feature to specify custom environment variables for plugins.

* plugin-runner.c (plugin): New members "environ" and "envc" to
                            contain possible custom environment.
  (getplugin): Return NULL on failure instead of doing exit(); all
               callers changed.
  (add_to_char_array): New helper function for "add_argument" and
                       "add_environment".
  (addargument): Renamed to "add_argument".  Return bool.  Call
                 "add_to_char_array" to actually do things.
  (add_environment): New; analogous to "add_argument".
  (addcustomargument): Renamed to "add_to_argv" to avoid confusion
                       with "add_argument".
  (main): New options "--global-envs" and "--envs-for" to specify
          custom environment for plugins.  Print environment for
          plugins in debug mode.  Use asprintf instead of strcpy and
          strcat.  Use execve() for plugins with custom environments.
          Free environment for plugin when freeing plugin list.

Show diffs side-by-side

added added

removed removed

Lines of Context:
71
71
                        ('Mandos: %(levelname)s: %(message)s'))
72
72
logger.addHandler(syslogger)
73
73
 
 
74
console = logging.StreamHandler()
 
75
console.setFormatter(logging.Formatter('%(name)s: %(levelname)s:'
 
76
                                       ' %(message)s'))
 
77
logger.addHandler(console)
74
78
 
75
79
class AvahiError(Exception):
76
80
    def __init__(self, value):
115
119
        self.domain = domain
116
120
        self.host = host
117
121
        self.rename_count = 0
 
122
        self.max_renames = max_renames
118
123
    def rename(self):
119
124
        """Derived from the Avahi example code"""
120
125
        if self.rename_count >= self.max_renames:
121
126
            logger.critical(u"No suitable service name found after %i"
122
127
                            u" retries, exiting.", rename_count)
123
128
            raise AvahiServiceError("Too many renames")
124
 
        name = server.GetAlternativeServiceName(name)
125
 
        logger.error(u"Changing name to %r ...", name)
 
129
        self.name = server.GetAlternativeServiceName(self.name)
 
130
        logger.info(u"Changing name to %r ...", str(self.name))
126
131
        syslogger.setFormatter(logging.Formatter\
127
132
                               ('Mandos (%s): %%(levelname)s:'
128
 
                               ' %%(message)s' % name))
 
133
                               ' %%(message)s' % self.name))
129
134
        self.remove()
130
135
        self.add()
131
136
        self.rename_count += 1
717
722
    
718
723
    if not debug:
719
724
        syslogger.setLevel(logging.WARNING)
 
725
        console.setLevel(logging.WARNING)
720
726
    
721
727
    if server_settings["servicename"] != "Mandos":
722
728
        syslogger.setFormatter(logging.Formatter\
751
757
            avahi.DBUS_INTERFACE_SERVER )
752
758
    # End of Avahi example code
753
759
    
754
 
    if debug:
755
 
        console = logging.StreamHandler()
756
 
        # console.setLevel(logging.DEBUG)
757
 
        console.setFormatter(logging.Formatter\
758
 
                             ('%(levelname)s: %(message)s'))
759
 
        logger.addHandler(console)
760
 
        del console
761
 
    
762
760
    clients = Set()
763
761
    def remove_from_clients(client):
764
762
        clients.remove(client)
776
774
        sys.exit(1)
777
775
    
778
776
    if not debug:
 
777
        logger.removeHandler(console)
779
778
        daemon()
780
779
    
781
780
    pidfilename = "/var/run/mandos/mandos.pid"