This file is indexed.

/usr/bin/xconv.pl is in xinetd 1:2.3.15.3-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/perl
#/*
# * (c) Copyright 1998-2001 by Rob Braun
# * All rights reserved.  The file named COPYRIGHT specifies the terms
# * and conditions for redistribution.
# */

# $RCSid = "$Id$";

sub print_header;
sub print_defaults;


print_header;
print_defaults;

while( <STDIN> ) {

	chomp;

	# Remove comment lines
	if( grep /^#/, $_ ) {
		next;
	}

	@command = split ;

	if( !defined $command[0] ) {
		next;
	}

	if( grep /rpc/, $command[2] ) {
		print STDERR "Warning: Service $command[0] not added because\n";
		print STDERR "xinetd does not handle rpc services well\n";
		next;
	}

	print "service $command[0]\n";
	print "{\n";
	print "\tflags       = NAMEINARGS\n";
	print "\tsocket_type = $command[1]\n";
	print "\tprotocol    = $command[2]\n";
	if( grep /no/, $command[3] ) {
		print "\twait        = no\n";
	} else {
		print "\twait        = yes\n";
	}
	@user = split /[:\.]/, $command[4];
	print "\tuser        = $user[0]\n";
	if( defined $user[1] ) {
		print "\tgroup       = $user[1]\n";
	}
	if( grep /internal/, $command[5] ) {
		print "\ttype        = INTERNAL\n";
		print "\tid          = $command[0]-$command[1]\n";
	} else {
		print "\tserver      = $command[5]\n";
		print "\tserver_args = ";

		$i = 6;
		while( defined $command[$i] ) {
			print "$command[$i] ";
			$i++;
		}

		print "\n";
	}
	print "}\n";
	print "\n";
}

sub print_defaults
{
	print "# The defaults section sets some information for all services\n";
	print "defaults\n";
	print "{\n";
	print "\t#The maximum number of requests a particular service may handle\n";
	print "\t# at once.\n";
	print "\tinstances   = 25\n";
	print "\n";
	print "\t# The type of logging.  This logs to a file that is specified.\n";
	print "\t# Another option is: SYSLOG syslog_facility [syslog_level]\n";
	print "\tlog_type    = FILE /var/log/servicelog\n";
	print "\n";
	print "\t# What to log when the connection succeeds.\n";
	print "\t# PID logs the pid of the server processing the request.\n";
	print "\t# HOST logs the remote host's ip address.\n";
	print "\t# USERID logs the remote user (using RFC 1413)\n";
	print "\t# EXIT logs the exit status of the server.\n";
	print "\t# DURATION logs the duration of the session.\n";
	print "\tlog_on_success = HOST PID\n";
	print "\n";
	print "\t# What to log when the connection fails.  Same options as above\n";
	print "\tlog_on_failure = HOST\n";
	print "\n";
	print "\t# The maximum number of connections a specific IP address can\n";
	print "\t# have to a specific service.  \n";
	print "\tper_source  = 5\n";

	print "}\n";
	print "\n";
}

sub print_header
{
	print "# This file generated by xconv.pl, included with the xinetd\n";
	print "# package.  xconv.pl was written by Rob Braun (bbraun\@synack.net)\n";
	print "#\n";
	print "# The file is merely a translation of your inetd.conf file into\n";
	print "# the equivalent in xinetd.conf syntax.  xinetd has many \n";
	print "# features that may not be taken advantage of with this translation.\n";
	print "# Please refer to the xinetd.conf man page for more information \n";
	print "# on how to properly configure xinetd.\n";
	print "\n";
	print "\n";
}