#!/usr/bin/perl # save_poll.cgi # Update, create or delete a server to poll require './fetchmail-lib.pl'; &ReadParse(); &error_setup($text{'poll_err'}); if ($config{'config_file'}) { $file = $config{'config_file'}; } else { &can_edit_user($in{'user'}) || &error($text{'poll_ecannot'}); @uinfo = getpwnam($in{'user'}); $file = "$uinfo[7]/.fetchmailrc"; } @conf = &parse_config_file($file); if (!$in{'new'}) { $poll = $conf[$in{'idx'}]; } &lock_file($file); if ($in{'adduser'}) { # Go back to the edit form &redirect("edit_poll.cgi?file=$file&idx=$in{'idx'}&adduser=1&user=$in{'user'}"); exit; } elsif ($in{'check'}) { # Go to the mail checking CGI &redirect("check.cgi?file=$file&idx=$in{'idx'}&adduser=1&user=$in{'user'}"); exit; } elsif ($in{'delete'}) { # Just delete the poll &delete_poll($poll, $file); } else { # Validate poll inputs $in{'poll'} =~ /^\S+$/ || &error($text{'poll_epoll'}); $in{'via_def'} || &check_host($in{'via'}) || &error($text{'poll_evia'}); !$in{'via_def'} || &check_host($in{'poll'}) || &error($text{'poll_epoll'}); $in{'port_def'} || $in{'port'} =~ /^\d+$/ || &error($text{'poll_eport'}); if (!$in{'interface_def'}) { $in{'interface'} =~ /^\S+$/ || &error($text{'poll_einterface'}); &check_ipaddress($in{'interface_net'}) || &error($text{'poll_enet'}); &check_ipaddress($in{'interface_mask'}) || !$in{'interface_mask'} || &error($text{'poll_emask'}); } # Create the poll structure $poll->{'poll'} = $in{'poll'}; $poll->{'skip'} = $in{'skip'}; $poll->{'via'} = $in{'via_def'} ? undef : $in{'via'}; $poll->{'proto'} = $in{'proto'}; $poll->{'auth'} = $in{'auth'}; $poll->{'port'} = $in{'port_def'} ? undef : $in{'port'}; if ($in{'interface_def'}) { delete($poll->{'interface'}); } else { local @interface = ( $in{'interface'}, $in{'interface_net'} ); push(@interface, $in{'interface_mask'}) if ($in{'interface_mask'}); $poll->{'interface'} = join("/", @interface); } # Validate user inputs for($i=0; defined($in{"user_$i"}); $i++) { $user = $poll->{'users'}->[$i]; next if (!$in{"user_$i"}); $in{"user_$i"} =~ /^\S*$/ || &error($text{'poll_euser'}); $user->{'user'} = $in{"user_$i"}; $user->{'pass'} = $in{"pass_$i"}; local @is = split(/\s+/, $in{"is_$i"}); $user->{'is'} = \@is; $user->{'keep'} = $in{"keep_$i"}; $user->{'fetchall'} = $in{"fetchall_$i"}; if ($in{"keep_$i"} == 1 && $in{"fetchall_$i"} == 1) { &error($text{'poll_eboth'}); } $user->{'ssl'} = $in{"ssl_$i"}; $user->{'preconnect'} = $in{"preconnect_$i"}; $user->{'postconnect'} = $in{"postconnect_$i"}; push(@users, $user); } $poll->{'users'} = \@users; if ($in{'new'}) { &create_poll($poll, $file); if ($in{'user'} && $< == 0) { local @uinfo = getpwnam($in{'user'}); &system_logged("chown $uinfo[2]:$uinfo[3] $file"); } &system_logged("chmod 700 $file"); } else { &modify_poll($poll, $file); } } &unlock_file($file); &webmin_log($in{'new'} ? 'create' : $in{'delete'} ? 'delete' : 'modify', 'poll', $poll->{'poll'}, $config{'config_file'} ? { 'file' => $file } : { 'user' => $in{'user'} } ); &redirect(!$fetchmail_config && $config{'view_mode'} ? "edit_user.cgi?user=$in{'user'}" : ""); sub check_host { return 1 if (&to_ipaddress($_[0]) || &to_ip6address($_[0])); return 0 if (&to_ipaddress("www.webmin.com")); # only fail if we are online return 1; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 468 B | 0644 |
|
acl_security.pl | File | 1.63 KB | 0755 |
|
backup_config.pl | File | 838 B | 0755 |
|
cgi_args.pl | File | 696 B | 0755 |
|
check.cgi | File | 1.54 KB | 0755 |
|
check.pl | File | 2.47 KB | 0755 |
|
config | File | 113 B | 0644 |
|
config-cobalt-linux | File | 113 B | 0644 |
|
config-coherent-linux | File | 113 B | 0644 |
|
config-corel-linux | File | 113 B | 0644 |
|
config-debian-linux | File | 113 B | 0644 |
|
config-gentoo-linux | File | 113 B | 0644 |
|
config-mandrake-linux | File | 113 B | 0644 |
|
config-msc-linux | File | 113 B | 0644 |
|
config-open-linux | File | 113 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 113 B | 0644 |
|
config-openmamba-linux | File | 113 B | 0644 |
|
config-redhat-linux | File | 113 B | 0644 |
|
config-slackware-linux | File | 113 B | 0644 |
|
config-sol-linux | File | 113 B | 0644 |
|
config-suse-linux | File | 113 B | 0644 |
|
config-syno-linux | File | 137 B | 0644 |
|
config-trustix-linux | File | 113 B | 0644 |
|
config-turbo-linux | File | 113 B | 0644 |
|
config-united-linux | File | 113 B | 0644 |
|
config.info | File | 603 B | 0644 |
|
config.info.bg | File | 1.14 KB | 0644 |
|
config.info.ca | File | 705 B | 0644 |
|
config.info.cs | File | 386 B | 0644 |
|
config.info.de | File | 726 B | 0644 |
|
config.info.es | File | 277 B | 0644 |
|
config.info.it | File | 746 B | 0644 |
|
config.info.nl | File | 707 B | 0644 |
|
config.info.no | File | 647 B | 0644 |
|
config.info.pl | File | 777 B | 0644 |
|
config.info.ru | File | 544 B | 0644 |
|
config.info.uk | File | 551 B | 0644 |
|
config.info.zh_TW | File | 265 B | 0644 |
|
defaultacl | File | 41 B | 0644 |
|
edit_cron.cgi | File | 1.95 KB | 0755 |
|
edit_global.cgi | File | 2.72 KB | 0755 |
|
edit_poll.cgi | File | 7.16 KB | 0755 |
|
edit_user.cgi | File | 549 B | 0755 |
|
feedback_files.pl | File | 266 B | 0755 |
|
fetchmail-lib.pl | File | 8.02 KB | 0755 |
|
index.cgi | File | 4.63 KB | 0755 |
|
install_check.pl | File | 355 B | 0755 |
|
log_parser.pl | File | 1.35 KB | 0755 |
|
module.info | File | 213 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 154 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 198 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 241 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 254 B | 0644 |
|
module.info.ca | File | 153 B | 0644 |
|
module.info.ca.auto | File | 18 B | 0644 |
|
module.info.cs | File | 44 B | 0644 |
|
module.info.cs.auto | File | 132 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 154 B | 0644 |
|
module.info.de | File | 152 B | 0644 |
|
module.info.de.auto | File | 23 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 274 B | 0644 |
|
module.info.es | File | 39 B | 0644 |
|
module.info.es.auto | File | 133 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 167 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 222 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 160 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 181 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 214 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 177 B | 0644 |
|
module.info.hu | File | 133 B | 0644 |
|
module.info.hu.auto | File | 18 B | 0644 |
|
module.info.it | File | 39 B | 0644 |
|
module.info.it.auto | File | 128 B | 0644 |
|
module.info.ja | File | 34 B | 0644 |
|
module.info.ja.auto | File | 157 B | 0644 |
|
module.info.ko | File | 33 B | 0644 |
|
module.info.ko.auto | File | 163 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 189 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 161 B | 0644 |
|
module.info.ms | File | 138 B | 0644 |
|
module.info.ms.auto | File | 18 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 166 B | 0644 |
|
module.info.nl | File | 34 B | 0644 |
|
module.info.nl.auto | File | 136 B | 0644 |
|
module.info.no | File | 32 B | 0644 |
|
module.info.no.auto | File | 126 B | 0644 |
|
module.info.pl | File | 151 B | 0644 |
|
module.info.pl.auto | File | 18 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 175 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 184 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 162 B | 0644 |
|
module.info.ru | File | 44 B | 0644 |
|
module.info.ru.auto | File | 201 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 168 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 169 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 172 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 306 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 166 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 254 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 226 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 185 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 139 B | 0644 |
|
module.info.zh_TW | File | 33 B | 0644 |
|
module.info.zh_TW.auto | File | 115 B | 0644 |
|
prefs.info | File | 41 B | 0644 |
|
save_cron.cgi | File | 1.73 KB | 0755 |
|
save_global.cgi | File | 1.53 KB | 0755 |
|
save_poll.cgi | File | 3.33 KB | 0755 |
|
start.cgi | File | 1015 B | 0755 |
|
stop.cgi | File | 730 B | 0755 |
|