diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-10-20 00:47:13 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-10-20 00:47:13 +0300 |
commit | 875887c8d47a19daf82800d37f70e14077a1ab73 (patch) | |
tree | 57d085960b074ff2c5b5fe8284e8b612138d0ab5 | |
parent | 9f4ea719bc29fb3ec049197a5071f925fcd9bb75 (diff) | |
download | mailfromd-875887c8d47a19daf82800d37f70e14077a1ab73.tar.gz mailfromd-875887c8d47a19daf82800d37f70e14077a1ab73.tar.bz2 |
Move pies to a stand-alone project.
* pies/Remove.
* doc/pies.texi: Remove.
* doc/Makefile.am: Update.
* doc/mailfromd.texi: Update.
* doc/pmult.texi: Update.
* po/POTFILES.in: Update.
* Makefile.am, NEWS: Update.
* mfd/lex.l: Use %top section to include config.h
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | NEWS | 9 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | doc/Makefile.am | 1 | ||||
-rw-r--r-- | doc/mailfromd.texi | 39 | ||||
-rw-r--r-- | doc/pies.texi | 1159 | ||||
-rw-r--r-- | doc/pmult.texi | 22 | ||||
-rw-r--r-- | mfd/lex.l | 5 | ||||
-rw-r--r-- | pies/.gitignore | 6 | ||||
-rw-r--r-- | pies/Makefile.am | 58 | ||||
-rw-r--r-- | pies/depmap.c | 170 | ||||
-rw-r--r-- | pies/limits.c | 299 | ||||
-rw-r--r-- | pies/meta1gram.y | 439 | ||||
-rw-r--r-- | pies/meta1lex.h | 31 | ||||
-rw-r--r-- | pies/meta1lex.l | 231 | ||||
-rw-r--r-- | pies/pies.c | 1587 | ||||
-rw-r--r-- | pies/pies.h | 205 | ||||
-rw-r--r-- | pies/pies.rcin | 31 | ||||
-rw-r--r-- | pies/progman.c | 1741 | ||||
-rw-r--r-- | pies/socket.c | 446 | ||||
-rw-r--r-- | po/POTFILES.in | 8 |
21 files changed, 26 insertions, 6463 deletions
diff --git a/Makefile.am b/Makefile.am index d9cbffc3..46f5b75c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -27,7 +27,6 @@ SUBDIRS = \ mtasim\ smap\ $(PMULT_DIR)\ - pies\ elisp\ po\ etc\ @@ -1,4 +1,4 @@ -Mailfromd NEWS -- history of user-visible changes. 2009-10-07 +Mailfromd NEWS -- history of user-visible changes. 2009-10-20 Copyright (C) 2005, 2006, 2007, 2008, 2009 Sergey Poznyakoff See the end of file for copying conditions. @@ -40,6 +40,13 @@ the source. Starting with this release the script file is renamed to `mailfromd.rc' is recognized and parsed. This ensures backward compatibility. +** Pies removed + +The `pies' utility has been removed from the package. It is moved +into a stand-alone package called `Pies'. See +http://pies.software.gnu.org.ua, for more information about the +package, including pointers to file downloads. + ** Unquoted literals The use of unquoted literals is no longer allowed. diff --git a/configure.ac b/configure.ac index 2ffd5e90..e92f0a98 100644 --- a/configure.ac +++ b/configure.ac @@ -710,7 +710,6 @@ AC_CONFIG_FILES([Makefile mtasim/Makefile smap/Makefile pmult/Makefile - pies/Makefile elisp/Makefile po/Makefile.in etc/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index 40451457..6a97f421 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -21,7 +21,6 @@ mailfromd_TEXINFOS=\ gacopyz.texi\ macros.texi\ mtasim.texi\ - pies.texi\ pmult.texi\ pragma-database.texi\ pragma-option.texi\ diff --git a/doc/mailfromd.texi b/doc/mailfromd.texi index f1d195f9..fcb00af2 100644 --- a/doc/mailfromd.texi +++ b/doc/mailfromd.texi @@ -37,7 +37,6 @@ * mtasim: (mailfromd) mtasim. MTA simulator. * smap: (mailfromd) smap. A universal socket-map program for MeTA1. * pmult: (mailfromd) pmult. Pmilter multiplexer program. -* pies: (mailfromd) pies. Program execution supervisor. @end direntry @end ifinfo @@ -110,7 +109,6 @@ documents @command{mailfromd} Version @value{VERSION}. * mtasim:: An @acronym{MTA} simulator. * smap:: A universal socket-map program for MeTA1. * pmult:: Pmilter multiplexer program. -* pies:: Program execution supervisor. * Reporting Bugs:: How to Report a Bug. Appendices @@ -340,39 +338,6 @@ Pmult Configuration * pmult-client:: Pmult Client Configuration. * pmult-debug:: Debugging Pmult. -Pies -- a program execution supervisor. - -* Pies Configuration File:: -* Component Statement:: -* include-meta1:: -* Global Configuration:: -* Pies Debugging:: -* Configuration Example:: -* Command Line Usage:: -* Pies Invocation:: - -Component Statement - -* Prerequisites:: -* Component Privileges:: -* Resources:: -* Actions Before Startup:: -* Exit Actions:: -* Output Redirectors:: -* Inetd-Style Components:: -* Meta1-Style Components:: -* Component Syntax Summary:: - -Global Configuration - -* Less Useful Statements:: - -Configuration Example - -* Simple Pies:: -* Hairy Pies:: -* Inetd Pies:: - Deprecated Features * pragma-option:: @@ -13238,10 +13203,6 @@ f, @{client_addr@} @chapter Pmilter multiplexer program. @include pmult.texi -@node pies -@chapter Pies -- a program execution supervisor. -@include pies.texi - @node Reporting Bugs @chapter How to Report a Bug diff --git a/doc/pies.texi b/doc/pies.texi deleted file mode 100644 index 7f020f11..00000000 --- a/doc/pies.texi +++ /dev/null @@ -1,1159 +0,0 @@ -@c This file is part of the Mailfromd manual. -@c Copyright (C) 2008, 2009 Sergey Poznyakoff -@c See file mailfromd.texi for copying conditions. -@c ******************************************************************* -@cindex component, pies - The name @command{pies} (pronounced @samp{p-yes}) stands for -@samp{Program Invocation and Execution Supervisor}. This utility -starts and controls execution of external programs, called -@dfn{components}. Each component is a stand-alone program, which is -executed in the foreground. Upon startup, @command{pies} reads the list -of components from its configuration file, starts them, and remains in -the background, controlling their execution. When any of the components -terminates, @command{pies} restarts it. Its configuration allows to -specify actions other than simple restart, depending on the exit code -of the component. - -@cindex prerequisite, pies -@cindex dependency, pies -@cindex dependents, pies -@anchor{component prerequisite} - A component @samp{A} may depend on another components, say -@samp{B} and @samp{C}, i.e. require them to be running at the moment of its -startup. Components @samp{B} and @samp{C} are called -@dfn{prerequisites} for @samp{A}, while @samp{A} is called a -@dfn{dependency} or @dfn{dependent} component of @samp{B}, @samp{C}. - - Before restarting any component, @command{pies} verifies if it is a -prerequisite for any other components. If so, it first terminates its -dependencies, then restarts the component, and then starts its -dependencies again, in the order of their appearance in the -configuration file. - - The standard output and standard error streams of a component can be -redirected to a file or to an arbitrary @command{syslog} channel. - -@anchor{init-style} -@cindex init-style components - These way of operation applies to so-called @dfn{init-style} -components, called so because of the similarity with the -@command{init} process manager. @command{Pies} is also able to handle -components that receive input on their @samp{stdin} and send reply to -@samp{stdout}. Such components are called @dfn{inetd-style} -components. - -@anchor{inetd-style} -@cindex inetd-style components - Inetd-style components are not executed right after @command{pies} -startup. Instead, @command{pies} opens a socket for each of them and -listens for connections on these sockets. When a connection arrives, -it decides what component the socket corresponds to, and invokes this -component to handle that connection. In this case, the connection is -bound to component's @samp{stdin} and @samp{stdout} streams. The -@samp{stderr} stream can be redirected to a file or to syslog, as -described above. This mode of operation is similar to that of -@command{inetd} utility. - -@anchor{meta1-style} -@cindex meta1-style components -@cindex smtps - The third type of components, supported by @command{pies} are -@dfn{meta1-style} components. As the name suggests this type is -designed expressly as a support for MeTA1 components, namely -@command{smtps}. This type can be regarded as a mixture of the above -two. For each meta1-style component @command{pies} opens a socket -after start-up, and then executes the component. Once the component -is running, @command{pies} passes it the file descriptor of the -socket, using a preconfigured @acronym{UNIX}-style socket. Further -handling of the socket is the responsibility of the component itself. - -@anchor{accept-style} -@cindex accept-style components - The last flavor of @command{pies} components are @dfn{accept-style} -components, which are handled basically as @samp{inetd-style} ones, -except that after binding to the socket @command{pies} immediately -starts the component, without waiting for an actual connection. - - Any number of components of all three styles can be handled -simultaneously. - - Components are started in the order of their appearance in the -configuration file and terminated in the reverse order. When starting or -stopping component dependencies, the same ordering is preserved. - - This order is reversed for files included by @code{include-meta1} -statement (@pxref{include-meta1}). - -@menu -* Pies Configuration File:: -* Component Statement:: -* include-meta1:: -* Global Configuration:: -* Pies Debugging:: -* Configuration Example:: -* Command Line Usage:: -* Pies Invocation:: -@end menu - -@node Pies Configuration File -@section Pies Configuration File - @command{Pies} reads its configuration from the main Mailutils -configuration file. @xref{configuration, Mailutils Configuration -File,, mailutils, GNU Mailutils Manual}, for a description of GNU -Mailutils configuration system. It is recommended to use -@code{include @var{directory}} statement (@pxref{Include, Include -Statement,, mailutils, GNU Mailutils Manual}), and to place -@command{pies} configuration in file @file{@var{directory}/pies}. -@xref{MeTA1}, for an example. - -The following standard Mailutils configuration statements are understood: - -@multitable @columnfractions 0.3 0.6 -@headitem Statement @tab Reference -@item debug @tab @xref{Debug Statement, Mailutils Debug Statement,, -mailutils, GNU Mailutils Manual}. -@item logging @tab @xref{Logging Statement, Mailutils Logging,, -mailutils, GNU Mailutils Manual}. -@item include @tab @xref{Include, Include Statements,, -mailutils, GNU Mailutils Manual}. -@item mailer @tab @xref{Mailer, Mailer Statement,, -mailutils, GNU Mailutils Manual}. -@item acl @tab @xref{ACL Statement, ACL Statement,, -mailutils, GNU Mailutils Manual}. -@end multitable - -@node Component Statement -@section Component Statement -@kwindex component - The @code{component} statement defines a new component: - -@smallexample -component @var{tag} @{ - @dots{} -@} -@end smallexample - -The component is identified by its @dfn{tag}, which is given as -argument to the @code{component} keyword. - -The following statements are allowed within the @code{component} block: - -@deffn {Pies Conf} mode @var{mode} - Declare the type (style) of the component. Accepted values for -@var{mode} are: - -@table @asis -@item exec -@itemx wait - Create an @samp{init-style} component (@pxref{init-style}). This is -the default. - -@item inetd -@itemx nostartaccept - Create an @samp{inetd-style} component (@pxref{inetd-style}). - -@item pass -@itemx pass-fd - Create a @samp{meta1-style} component (@pxref{meta1-style}). - -@item accept - Create a @samp{accept-style} component (@pxref{accept-style}). -@end table -@end deffn - -@deffn {Pies Conf} program @var{name} -Full file name of the component binary. This binary will be executed -(via @command{/bin/sh -c}) each time @command{pies} decides it needs -to start the component. - -To supply command line arguments, use @code{command} statement. -@end deffn - -@deffn {Pies Conf} command @var{string} -Command line for the program. The argument should be just as -arguments normally are, starting with the name of the program. The -latter may be different from the one specified to @code{program} -statement. Its value will be available to the program as -@code{argv[0]}. -@end deffn - -@deffn {Pies Conf} disable @var{bool} -If @var{bool} is @samp{true}, this component is disabled, -i.e. @command{pies} will ignore it. -@end deffn - -@deffn {Pies Conf} precious @var{bool} -@cindex precious components, pies -If @var{bool} is @samp{true}, this component is marked as precious. -Precious components are never disabled by @command{pies}, even if they -respawn too fast. -@end deffn - - -@menu -* Prerequisites:: -* Component Privileges:: -* Resources:: -* Actions Before Startup:: -* Exit Actions:: -* Output Redirectors:: -* Inetd-Style Components:: -* Meta1-Style Components:: -* Component Syntax Summary:: -@end menu - -@node Prerequisites -@subsection Component Prerequisites -@cindex declaring prerequisites -@cindex prerequisites, declaring -Prerequisites (@pxref{component prerequisite}) for a component are -declared using the following statement: - -@deffn {Pies Conf} prerequisites @var{tag-list} -The argument is either a list of component tags, @emph{defined before -this component}, or one of the following words: - -@table @asis -@item all -Declare all components defined so far as prerequisites for this one. - -@item none -No prerequisites. This is the default. -@end table -@end deffn - - If you wish, you can define dependents, instead of prerequisites: - -@deffn {Pies Conf} dependents @var{tag-list} -Declare dependents for this component. @var{var-list} is a list of -component tags. -@end deffn - -@node Component Privileges -@subsection Component Privileges -@cindex privileges, pies - Following statements control the privileges the component -is executed with. - -@deffn {Pies Conf} user @var{user-name} -Start component with the UID and GID of this user. -@end deffn - -@deffn {Pies Conf} group @var{group-list} -Retain supplementary groups, specified in @var{group-list}. -@end deffn - -@deffn {Pies Conf} allgroups @var{bool} -Retain all supplementary groups of which the user (as given with -@command{user} statement) is a member. This is the default for -components specified in @file{meta1.conf} file (@pxref{include-meta1}). -@end deffn - -@node Resources -@subsection Resources - -@deffn {Pies Conf} limits @var{string} -Impose limits on system resources, as defined by @var{string}. The -argument consists of @dfn{commands}, optionally separated by any -amount of whitespace. A command is a single command letter followed -by a number, that specifies the limit. The command letters are -case-insensitive and coincide with those used by the shell @code{ulimit} -utility: - -@multitable @columnfractions 0.3 0.6 -@headitem Command @tab The limit it sets -@item A @tab max address space (KB) -@item C @tab max core file size (KB) -@item D @tab max data size (KB) -@item F @tab maximum file size (KB) -@item M @tab max locked-in-memory address space (KB) -@item N @tab max number of open files -@item R @tab max resident set size (KB) -@item S @tab max stack size (KB) -@item T @tab max CPU time (MIN) -@item U @tab max number of processes -@item P @tab process priority -20..20 (negative = high priority) -@end multitable - -For example: - -@smallexample -limits T10 R20 U16 P20 -@end smallexample - -Additionally, the command letter @samp{L} is recognized. It is -reserved for future use (@samp{number of logins} limit) and is ignored -in version @value{VERSION}. -@end deffn - -@deffn {Pies Conf} umask @var{number} -Set the umask. The @var{number} must be an octal value not greater -than @samp{777}. The default umask is inherited at startup. -@end deffn - -@deffn {Pies Conf} env @var{args} -Set program environment. - -Arguments are a whitespace-delimited list of specifiers. The -following specifiers are understood: - -@table @asis -@item - (a dash) -Clear the environment. This is understood only when used as a first -word in @var{args}. - -@item -@var{name} -Unset the environment variable @var{name}. - -@item -@var{name}=@var{val} -Unset the environment variable @var{name} only if its value is @var{val}. - -@item @var{name} -Retain the environment variable @var{name}. - -@item @var{name}=@var{value} -Define environment variable @var{name} to have given @var{value}. - -@item @var{name}+=@var{value} -Retain variable @var{name} and append @var{value} to its existing -value. If no such variable is present in the environment, it is -created and @var{value} is assigned to it. However, if @var{value} -begins with a punctuation character, this character is removed from it -before the assignment. This is convenient for using this construct with -environment variables like @env{PATH}, e.g.: - -@smallexample -PATH+=:/sbin -@end smallexample - -In this example, if @env{PATH} exists, @samp{:/sbin} will be appended -to it. Otherwise, it will be created and @samp{/sbin} will be -assigned to it. - -@item @var{name}=+@var{value} -Retain variable @var{name} and prepend @var{value} to its existing -value. If no such variable is present in the environment, it is -created and @var{value} is assigned to it. However, if @var{value} -ends with a punctuation character, this character is removed from it -before assignment. -@end table -@end deffn - -@node Actions Before Startup -@subsection Actions Before Startup - - Several statements are available that specify actions to perform -immediately before starting the component: - -@deffn {Pies Conf} chdir @var{dir} -Change to the directory @var{dir}. -@end deffn - -@deffn {Pies Conf} remove-file @var{file-name} -Remove @var{file-name}. This is useful, for example, to remove stale -@acronym{UNIX} sockets or pid-files, which may otherwise prevent the -component from starting normally. - -As of version @value{VERSION} only one @command{remove-file} may be given. -@end deffn - -@deffn {Pies Conf} settle-timeout @var{number} -Wait @var{number} seconds. This is kind of kludge. Currently it is -used for components imported from @file{meta1.conf} file -(@pxref{include-meta1}), where @code{settle-timeout 1} is implied. -This may change in future versions. -@end deffn - -@node Exit Actions -@subsection Exit Actions -@kwindex return-code - The default behavior of @command{pies} if an @samp{init-style} -component terminates is to restart it. Unless the component -terminates with 0 exit code, a corresponding error message is issued -to the log file. This behavior can be modified using -@code{return-code} statement: - -@smallexample -return-code @var{codes} @{ - @dots{} -@} -@end smallexample - - The @var{codes} argument is a list of exit codes or signal names. -Exit codes can be specified either as decimal numbers or as symbolic code -names from the table below: - -@multitable @columnfractions 0.5 0.3 -@headitem Name @tab Numeric value -@item EX_OK @tab 0 -@item EX_USAGE @tab 64 -@item EX_DATAERR @tab 65 -@item EX_NOINPUT @tab 66 -@item EX_NOUSER @tab 67 -@item EX_NOHOST @tab 68 -@item EX_UNAVAILABLE @tab 69 -@item EX_SOFTWARE @tab 70 -@item EX_OSERR @tab 71 -@item EX_OSFILE @tab 72 -@item EX_CANTCREAT @tab 73 -@item EX_IOERR @tab 74 -@item EX_TEMPFAIL @tab 75 -@item EX_PROTOCOL @tab 76 -@item EX_NOPERM @tab 77 -@item EX_CONFIG @tab 78 -@end multitable - -Signal codes can be given either as @samp{SIG+@var{n}}, where @var{n} -is the signal number, or as signal names from the following list: -@samp{SIGHUP}, @samp{SIGINT}, @samp{SIGQUIT}, @samp{SIGILL}, -@samp{SIGTRAP}, @samp{SIGABRT}, @samp{SIGIOT}, @samp{SIGBUS}, -@samp{SIGFPE}, @samp{SIGKILL}, @samp{SIGUSR1}, @samp{SIGSEGV}, -@samp{SIGUSR2}, @samp{SIGPIPE}, @samp{SIGALRM}, @samp{SIGTERM}, -@samp{SIGSTKFLT}, @samp{SIGCHLD}, @samp{SIGCONT}, @samp{SIGSTOP}, -@samp{SIGTSTP}, @samp{SIGTTIN}, @samp{SIGTTOU}, @samp{SIGURG}, -@samp{SIGXCPU}, @samp{SIGXFSZ}, @samp{SIGVTALRM}, @samp{SIGPROF}, -@samp{SIGWINCH}, @samp{SIGPOLL}, @samp{SIGIO}, @samp{SIGPWR}, -@samp{SIGSYS}. - - If the component exits with an exit code listed in @var{codes} -or is terminated on a signal listed in @var{codes}, -@command{pies} executes actions specified by its substatements. -They are executed in the order of their appearance below: - -@deffn {Pies Conf} exec @var{command} -Execute external command. Prior to execution of @var{command} all -file descriptors are closed. It inherits the environment from the -main @command{pies} process with the following additional variables: - -@table @env -@item PIES_VERSION -The @command{pies} version number (@value{VERSION}). - -@item PIES_COMPONENT -Tag of the terminated component (@pxref{Component Statement, tag}). - -@item PIES_PID -PID of the terminated component. - -@item PIES_SIGNAL -If the component terminated on signal, the number of that signal. - -@item PIES_STATUS -Program exit code. -@end table -@end deffn - -@deffn {Pies Conf} action @samp{disable | restart} -If @samp{restart} is given, restart the component. This is the -default. Otherwise, mark the component as disabled. Component -dependents are stopped and marked as disabled as well. Once disabled, -the components are never restarted, unless their restart is requested -by the administrator. -@end deffn - -@deffn {Pies Conf} notify @var{email-string} -Send an email notification to addresses in @var{email-string}. The -latter is a comma-separated list of email addresses, e.g.: - -@smallexample -notify "root@@localhost,postmaster@@localhost"; -@end smallexample - -The @code{mailer} statement (@pxref{Mailer, Mailer Statement,, -mailutils, GNU Mailutils Manual}) configures the mailer used to send -the message. The message itself is configured by the @code{message} -statement. -@end deffn - -@deffn {Pies Conf} message @var{string} -Supply notification message text to use by @code{notify} statement. -@var{String} must be a valid RFC 822 message text, i.e. it must begin -with message headers, followed by an empty line and actual message -body. - -The following macro-variables are expanded within @var{string}: - -@multitable @columnfractions 0.5 0.5 -@headitem Variable @tab Expansion -@item canonical-program-name @tab @samp{pies} -@item program-name @tab Program name of the @command{pies} binary. -@item package @tab Package name (@samp{Mailfromd}). -@item version @tab Package version (@value{VERSION}). -@item mu-version @tab Version of GNU Mailutils. -@item component @tab Name of the terminated component. -@item retcode @tab Component exit code, in decimal. -@end multitable - -If @code{message} statement is not given, the following default -message is used instead: - -@smallexample -From: <> -X-Agent: $@{canonical-program-name@} ($@{package@} $@{version@}) -Subject: Component $@{component@} terminated with code $@{retcode@}. - -@end smallexample -@end deffn - - Any number of @code{return-code} statements are allowed, provided -that their @var{codes} do not intersect. - - Such statements can also be used outside of @code{component} block. -In this case, they supply global actions, i.e. actions applicable to -all components. Any @code{return-code} statements appearing within a -@code{component} block override the global ones. - -@node Output Redirectors -@subsection Output Redirectors -@cindex repeater - Output redirectors allow to redirect the standard error and/or standard -output of a component to a file or @command{syslog} facility. - -@deffn {Pies Conf} stderr @var{type} @var{channel} -@deffnx {Pies Conf} stdout @var{type} @var{channel} -Redirect standard error (if @code{stderr}) or standard output (if -@code{stdout}) to the given channel. - -The type of redirection is specified by @var{type} argument: - -@table @asis -@item file -Redirect to the file. In this case @var{channel} gives the full name of -the file. For example: - -@smallexample -stderr file /var/log/component/name.err; -@end smallexample - -@item syslog -Redirect to the syslog channel. The syslog priority is given by the -@var{channel} argument. Its allowed values are: @samp{emerg}, -@samp{alert}, @samp{crit}, @samp{err}, @samp{warning}, @samp{notice}, -@samp{info}, @samp{debug}. The facility is inherited from the -@code{logging} statement (@pxref{Logging Statement, Mailutils Logging,, -mailutils, GNU Mailutils Manual}), or from @code{facility} statement -(see below), if given. - -Example: - -@smallexample -stderr syslog err; -@end smallexample -@end table -@end deffn - -@deffn {Pies Conf} facility @var{syslog-facility} -Specify the syslog facility to use in syslog redirectors. Allowed -values for @var{syslog-facility} are: @samp{user}, @samp{daemon}, -@samp{auth}, @samp{authpriv}, @samp{mail}, @samp{cron}, @samp{local0} -through @samp{local7} (all names case-insensitive), or a facility number. -@end deffn - -@node Inetd-Style Components -@subsection Inetd-Style Components -@cindex inetd-style components - Inetd-style components are declared using @code{mode inetd} -statement. You must also declare a socket to listen for requests for -such components: - -@anchor{inetd-socket} -@deffn {Pies Conf} socket @var{url} -Define a socket to listen on. Allowed values for @var{url} are: - -@table @asis -@item file name -Specifies a @acronym{UNIX} socket file name. You may use a relative -file name, provided that @code{chdir} statement is used for this -component (@pxref{Actions Before Startup, chdir}). - -@item local://@var{file}[;@var{args}] -@itemx file://@var{file}[;@var{args}] -@itemx unix://@var{file}[;@var{args}] -Listen on the @acronym{UNIX} socket file @var{file}, which may be either -absolute or relative file name, as described above. Optional -arguments @var{args} control ownership and file mode of @var{file}. They -are a list of assignments, separated by semicolons. The following -values are allowed: - -@table @asis -@item user -User name of the socket owner. - -@item group -Owner group of the socket, if it differs from the @code{user} group. - -@item mode -Socket file mode (octal number between @samp{0} and @samp{777}). - -@item umask -Umask to use when creating the socket (octal number between @samp{0} -and @samp{777}). -@end table - -For example: - -@smallexample -socket unix:/var/run/socket;user=nobody;group=mail;mode=770 -@end smallexample - -@item inet://@var{ip}:@var{port} -Listen on IPv4 address @var{ip} (may be given as a symbolic host name), -on port @var{port}. -@end table - -Notice, that @command{pies} version @value{VERSION} handles only -@acronym{TCP} sockets and only IPv4 addresses. Support for IPv6 will -be added in future versions. Support for @acronym{UDP} sockets will -be added if there is a demand. -@end deffn - -@node Meta1-Style Components -@subsection Meta1-Style Components -@cindex meta1-style components - Meta1-style components are declared using @code{mode pass} -statement. For such components, you must declare both a socket to -listen on (@pxref{inetd-socket} and a @acronym{UNIX} socket name to -pass the file descriptor to the component. The latter is defined -using @code{pass-fd-socket} statement: - -@deffn {Pies Conf} pass-fd-socket @var{file-name} -The argument is an absolute or relative file name of the socket file. -In the latter case, the @code{chdir @var{dir}} statement must be used -for this component (@pxref{Actions Before Startup, chdir}), and the -socket will be looked under @var{dir}. - -This socket file is supposed to be created by the component binary -upon its startup. -@end deffn - -@node Component Syntax Summary -@subsection Component Syntax Summary - This subsection summarizes the @code{component} summary. For each -statement, a reference to its detailed description is supplied. - -@smallexample -component @var{tag} @{ - # @r{Component execution mode.} - # @xref{Component Statement, mode}. - mode @samp{exec | wait | accept | inetd | nostartaccept | pass-fd | pass}; - - # @r{Full name of the program.} - # @xref{Component Statement, program}. - program @var{name}; - # @r{Command line.} - # @xref{Component Statement, command}. - command @var{string}; - - # @r{Disable this entry.} - # @xref{Component Statement, disable}. - disable @var{bool}; - # @r{Mark this entry as precious.} - # @xref{Component Statement, precious}. - precious @var{bool}; - - # @r{List of prerequisites.} - # @xref{Prerequisites}. - prerequisites (@var{compnames}); - # @r{List of components for which this one is a prerequisite.} - # @xref{Prerequisites, dependents}. - dependents (@var{compnames}); - - # @r{Listen on the given url.} - # @xref{Inetd-Style Components}. - socket @var{url}; - - # @r{Pass fd through this socket.} - # @xref{Meta1-Style Components}. - pass-fd-socket @var{soket-name}; - - # @r{ACL for this component.} - # @xref{ACL Statement, ACL Statement,, mailutils, GNU Mailutils Manual}. - acl @{ @dots{} @} - - # @r{Override default syslog facility for this component.} - facility @var{facility}; - # @r{Redirect program's standard output to the given} - # @r{file or syslog priority.} - # @xref{Output Redirectors}. - stdout @samp{file | syslog} @var{channel}; - # @r{Redirect program's standard error to the given} - # @r{file or syslog priority.} - # @xref{Output Redirectors}. - stderr @samp{file | syslog} @var{channel}; - - # @r{Run with this user privileges.} - # @xref{Component Privileges}. - user @var{user-name}; - # @r{Retain supplementary group.} - # @xref{Component Privileges, group}. - group @var{group-name}; - # @r{Retain all supplementary groups of which user is a member.} - # @xref{Component Privileges, allgroups}. - allgroups @var{bool}; - - # @r{Set system limits.} - # @xref{Resources}. - limits @var{string}; - - # @r{Force this umask.} - # @xref{Resources, umask}. - umask @var{number}; - - # @r{Set program environment.} - # @xref{Resources, env}. - env @var{assignments}; - - # @r{Change to this directory before executing the component.} - # @xref{Actions Before Startup, chdir}. - chdir @var{dir}; - # @r{Remove @var{file-name} before starting the component.} - # @xref{Actions Before Startup, remove-file}. - remove-file @var{file-name}; - # @r{Time to wait before starting this component.} - # @xref{Actions Before Startup, settle-timeout}. - settle-timeout @var{number}; - - # @r{Actions:} - # @xref{Exit Actions}. - return-code @var{exit-code-list} @{ - # @r{Action to take when a component finishes with this return code.} - action @samp{disable | restart}; - # @r{Notify these addresses when then component terminates.} - notify @var{email-string}; - # @r{Notification message text (with headers).} - message @var{string}; |