fixes init script for non ipv6 enabled systems #472755
[packages/xinetd.git] / xinetd / xconv-new.pl
1 #!/usr/bin/perl -w
2
3 # $RCSid = "$Id: xconv-new.pl,v 1.2 2003/02/27 22:16:54 steveg Exp $";
4
5 use strict;
6
7 print <DATA>;
8
9 while (<>) {
10     next if /^#/ || /^$/;
11     s/\s+$//;
12     my ($service, $socket_type, $protocol, $wait, $user, $server,
13         @server_args) = split;
14
15     my ($cps, $id, $instances, $rpc_version, $type);
16
17     $service =~ s#^tcpmux/\+?##;
18
19     $protocol =~ s#^(tcp.*)/.*#$1#;
20     if ($protocol =~ s#^rpc/##) {
21         print STDERR "Warning: Service $service not added because\n";
22         print STDERR "xinetd does not handle rpc services well\n";
23         next;
24         $type = "RPC";
25         $rpc_version = $1 if $service =~ s#/(.*)##;
26     }
27
28     if ($wait =~ /\.(\d+)/) {                   # [no]wait[.maxcpm]
29         $cps = sprintf("%.f", $1/60);
30     } elsif ($wait =~ m#/(\d+)(/(\d+))?#) {     # [no]wait[/maxchild[/maxcpm]]
31         $instances = $1;
32         $cps = sprintf("%.f", $3/60) if $3;
33     }
34     $wait =~ s/^wait.*/yes/;
35     $wait =~ s/^nowait.*/no/;
36
37     $user =~ s#/.*##;                           # Strip /login-class
38     my $group = $1 if $user =~ s/[.:](.*)//;    # user.group or user:group
39
40     my $flags = "";
41     if ($server =~ m#/tcpd$#) {
42         $flags .= " NAMEINARGS NOLIBWRAP";
43     } else {
44         shift @server_args;
45         if ($server eq "internal") {
46             $type   = "INTERNAL";
47             $id     = "$service-$socket_type";
48             $server = undef;
49         }
50     }
51
52     print "service $service\n";
53     print "{\n";
54     print "\tflags       = $flags\n";
55     print "\trpc_version = $rpc_version\n"      if $rpc_version;
56     print "\tsocket_type = $socket_type\n";
57     print "\tprotocol    = $protocol\n";
58     print "\twait        = $wait\n";
59     print "\tinstances   = $instances\n"        if $instances;
60     print "\tcps         = $cps\n"              if $cps;
61     print "\tuser        = $user\n";
62     print "\tgroup       = $group\n"            if defined $group;
63     print "\ttype        = $type\n"             if $type;
64     print "\tid          = $id\n"               if $id;
65     print "\tserver      = $server\n"           if $server;
66     print "\tserver_args = @server_args\n"      if @server_args;
67     print "}\n\n";
68 }
69
70 __DATA__
71 # This file generated by xconv.pl, included with the xinetd
72 # package.  xconv.pl was written by Rob Braun (bbraun@synack.net)
73 #
74 # The file is merely a translation of your inetd.conf file into
75 # the equivalent in xinetd.conf syntax.  xinetd has many
76 # features that may not be taken advantage of with this translation.
77 # Please refer to the xinetd.conf man page for more information
78 # on how to properly configure xinetd.
79
80
81 # The defaults section sets some information for all services
82 defaults
83 {
84         #The maximum number of requests a particular service may handle
85         # at once.
86         instances   = 25
87
88         # The type of logging.  This logs to a file that is specified.
89         # Another option is: SYSLOG syslog_facility [syslog_level]
90         log_type    = FILE /var/log/servicelog
91
92         # What to log when the connection succeeds.
93         # PID logs the pid of the server processing the request.
94         # HOST logs the remote host's ip address.
95         # USERID logs the remote user (using RFC 1413)
96         # EXIT logs the exit status of the server.
97         # DURATION logs the duration of the session.
98         log_on_success = HOST PID
99
100         # What to log when the connection fails.  Same options as above
101         log_on_failure = HOST 
102
103         # The maximum number of connections a specific IP address can
104         # have to a specific service.
105         per_source  = 5
106 }