Handle hostnames with upper-case letters
[webmin.git] / inetd / inetd-lib.pl
1 # inetd-lib.pl
2 # Common functions for managing inetd.conf and services files
3
4 BEGIN { push(@INC, ".."); };
5 use WebminCore;
6 &init_config();
7
8 $lib = &get_mod_lib();
9 if ($lib) {
10         do $lib;
11         }
12
13 # list_inets_files()
14 # Returns a list of inetd configuration files
15 sub list_inets_files
16 {
17 local @files = ( $config{'inetd_conf_file'} );
18 if ($config{'inetd_dir'}) {
19         opendir(DIR, $config{'inetd_dir'});
20         local $f;
21         foreach $f (readdir(DIR)) {
22                 next if ($f =~ /^\./);
23                 push(@files, "$config{'inetd_dir'}/$f");
24                 }
25         closedir(DIR);
26         }
27 return @files;
28 }
29
30 # list_rpcs()
31 # Returns a list of rpc services, in the format
32 #  line name number aliases index
33 sub list_rpcs
34 {
35 local(@rv, $l);
36 $l = 0;
37 open(RPC, $config{rpc_file});
38 while(<RPC>) {
39         chop; s/#.*$//g;
40         if (/^(\S+)\s+(\d+)\s*(.*)$/) {
41                 push(@rv, [ $l, $1, $2, $3, scalar(@rv) ]);
42                 }
43         $l++;
44         }
45 close(RPC);
46 return @rv;
47 }
48         
49 # create_rpc(name, number, aliases)
50 # Create a new rpc file entry
51 sub create_rpc
52 {
53 &open_tempfile(RPC, ">> $config{rpc_file}");
54 &print_tempfile(RPC, "$_[0]\t$_[1]",($_[2] ? "\t$_[2]\n" : "\n"));
55 &close_tempfile(RPC);
56 }
57
58
59 # modify_rpc(line, name, number, aliases)
60 # Change an existing rpc program
61 sub modify_rpc
62 {
63 local(@rpcs);
64 open(RPC, $config{rpc_file});
65 @rpcs = <RPC>;
66 close(RPC);
67 $rpcs[$_[0]] = "$_[1]\t$_[2]".($_[3] ? "\t$_[3]\n" : "\n");
68 &open_tempfile(RPC, "> $config{rpc_file}");
69 &print_tempfile(RPC, @rpcs);
70 &close_tempfile(RPC);
71 }
72
73
74 # delete_rpc(line)
75 # Delete an entry from the rpc file
76 sub delete_rpc
77 {
78 local(@rpcs);
79 open(RPC, $config{rpc_file});
80 @rpcs = <RPC>;
81 close(RPC);
82 splice(@rpcs, $_[0], 1);
83 &open_tempfile(RPC, "> $config{rpc_file}");
84 &print_tempfile(RPC, @rpcs);
85 &close_tempfile(RPC);
86 }
87
88
89 sub lock_inetd_files
90 {
91 &lock_file($config{'inetd_conf_file'}, 0, 1);
92 &lock_file($config{'services_file'}, 0, 1);
93 &lock_file($config{'protocols_file'}, 0, 1);
94 &lock_file($config{'rpc_file'}, 0, 1);
95 }
96
97 sub unlock_inetd_files
98 {
99 &unlock_file($config{'inetd_conf_file'});
100 &unlock_file($config{'services_file'});
101 &unlock_file($config{'protocols_file'});
102 &unlock_file($config{'rpc_file'});
103 }
104
105 1;