#!/usr/bin/perl # index.cgi # Display the icons for various types of proftpd config options require './proftpd-lib.pl'; # Check if proftpd is installed @st = stat($config{'proftpd_path'}); if (!@st) { &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0, &help_search_link("proftpd", "man", "doc", "google")); print &text('index_eproftpd', "<tt>$config{'proftpd_path'}</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n"; &foreign_require("software", "software-lib.pl"); $lnk = &software::missing_install_link("proftpd",$text{'index_proftpd'}, "../$module_name/", $text{'index_title'}); print $lnk,"<p>\n" if ($lnk); &ui_print_footer("/", $text{'index'}); exit; } # Check if the config file exists $conf = &get_config(); if (!@$conf) { &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0, &help_search_link("proftpd", "man", "doc", "google")); print &text('index_econf', "<tt>$config{'proftpd_conf'}</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n"; &ui_print_footer("/", $text{'index'}); exit; } # Check if the executable has changed .. if ($site{'size'} != $st[7]) { # Check if it really is proftpd and the right version $site{'size'} = $st[7]; $ver = &get_proftpd_version(\$out); if (!$ver) { &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0, &help_search_link("proftpd", "man", "doc", "google")); print &text('index_eproftpd2', "<tt>$config{'proftpd_path'}</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name", "<tt>$config{'proftpd_path'} -v</tt>", "<pre>$out</pre>"),"<p>\n"; &ui_print_footer("/", $text{'index'}); exit; } $site{'version'} = $ver; if ($site{'version'} < 0.99) { &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0, &help_search_link("proftpd", "man", "doc", "google")); print &text('index_eversion', "<tt>$config{'proftpd_path'}</tt>", "@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n"; &ui_print_footer("/", $text{'index'}); exit; } # Get the list of modules local @mods; open(MODS, "$config{'proftpd_path'} -l |"); while(<MODS>) { s/\r|\n//g; if (/^\s*(\S+)\.c$/) { push(@mods, $1); } } close(MODS); $site{'modules'} = join(" ", @mods); &write_file("$module_config_directory/site", \%site); } &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0, &help_search_link("proftpd", "man", "doc", "google"), undef, undef, &text('index_version', $site{'version'})); $conf = &get_config(); # Display global category icons print &ui_subheading($text{'index_global'}); $ft_icon = { "icon" => "images/dir.gif", "name" => $text{'ftpaccess_title'}, "link" => "ftpaccess.cgi" }; $us_icon = { "icon" => "images/ftpusers.gif", "name" => $text{'ftpusers_title'}, "link" => "edit_ftpusers.cgi" }; $ed_icon = { "icon" => "images/edit.gif", "name" => $text{'manual_configs'}, "link" => "allmanual_form.cgi" }; &config_icons("root global", "edit_global.cgi?", $ft_icon, $us_icon, $ed_icon); # Display global per-directory/limit options $global = &find_directive_struct("Global", $conf); $gconf = $global->{'members'} if ($global); @dir = ( &find_directive_struct("Directory", $gconf) , &find_directive_struct("Limit", $gconf) ); if (@dir) { print &ui_hr(); print &ui_subheading($text{'virt_header'}); foreach $d (@dir) { if ($d->{'name'} eq 'Limit') { push(@links, "limit_index.cgi?limit=". &indexof($d, @$gconf)."&global=1"); push(@titles, &text('virt_limit', $d->{'value'})); push(@icons, "images/limit.gif"); } else { push(@links, "dir_index.cgi?idx=". &indexof($d, @$gconf)."&global=1"); push(@titles, &text('virt_dir', $d->{'value'})); push(@icons, "images/dir.gif"); } } &icons_table(\@links, \@titles, \@icons, 3); } print "<table width=100%><tr><td>\n"; print "<form action=create_dir.cgi>\n"; print "<input type=hidden name=global value=1>\n"; print "<table border>\n"; print "<tr $tb> <td><b>$text{'virt_adddir'}</b></td> </tr>\n"; print "<tr $cb> <td><table>\n"; print "<tr> <td><b>$text{'virt_path'}</b></td>\n"; print "<td><input name=dir size=30>\n"; print "<input type=submit value=\"$text{'create'}\"></td> </tr>\n"; print "</table></td></tr></table></form>\n"; print "</td><td>\n"; print "<form action=create_limit.cgi>\n"; print "<input type=hidden name=global value=1>\n"; print "<table border>\n"; print "<tr $tb> <td><b>$text{'virt_addlimit'}</b></td> </tr>\n"; print "<tr $cb> <td><table>\n"; print "<tr> <td><b>$text{'virt_cmds'}</b></td>\n"; print "<td><input name=cmd size=20>\n"; print "<input type=submit value=\"$text{'create'}\"></td> </tr>\n"; print "</table></td></tr></table></form>\n"; print "</td></tr></table>\n"; # Start virtual server list with default push(@vname, $text{'index_defserv'}); push(@vlink, "virt_index.cgi"); push(@vdesc, $text{'index_defdesc'}); push(@vaddr, $text{'index_any'}); push(@vserv, &def(&find_directive("ServerName", $conf), $text{'default'})); # Add other virtual servers @virt = &find_directive_struct("VirtualHost", $conf); foreach $v (@virt) { $vm = $v->{'members'}; push(@vname, $text{'index_virt'}); push(@vlink, "virt_index.cgi?virt=".&indexof($v, @$conf)); push(@vaddr, $v->{'value'}); $sname = &find_directive("ServerName", $vm); local $ip = &to_ipaddress($v->{'value'}); push(@vdesc, &text('index_vdesc', $ip ? $ip : $text{'index_eip'})); push(@vserv, &def(&find_vdirective("ServerName", $vm, $conf), $text{'index_auto'})); } # Show virtual servers print &ui_hr(); print &ui_subheading($text{'index_virts'}); if ($config{'show_list'} && scalar(@vname)) { # as list for people with lots of servers print "<table width=100% border=1>\n"; print "<tr $tb> <td><b>$text{'index_type'}</b></td> ", "<td><b>$text{'index_addr'}</b></td> ", "<td><b>$text{'index_name'}</b></td> </tr>\n"; for($i=0; $i<@vname; $i++) { print "<tr $cb>\n"; print "<td><a href=\"$vlink[$i]\">", &html_escape($vname[$i]),"</a></td>\n"; print "<td>",&html_escape($vaddr[$i]),"</td>\n"; print "<td>",&html_escape($vserv[$i]),"</td>\n"; print "</tr>\n"; } print "</table>\n"; } else { # as icons for niceness print "<table width=100% cellpadding=5>\n"; for($i=0; $i<@vname; $i++) { print "<tr> <td valign=top align=center nowrap>"; print '<div class="row icons-row inline-row">'; &generate_icon("images/virt.gif", &html_escape($vname[$i]), $vlink[$i]); print "</div>\n"; print "</td> <td valign=top>\n"; print &html_escape($vdesc[$i]),"<br>\n"; print "<table width=100%><tr>\n"; print "<td width=30%><b>$text{'index_addr'}</b> ", &html_escape($vaddr[$i]),"</td>\n"; print "<td width=70%><b>$text{'index_name'}</b> ", &html_escape($vserv[$i]),"</td></tr>\n"; print "</table></td> </tr>\n"; } print "</table>\n"; } print "<form action=create_virt.cgi>\n"; print "<table border>\n"; print "<tr $tb> <td><b>$text{'index_create'}</b></td> </tr>\n"; print "<tr $cb> <td><table>\n"; print "<tr> <td><b>$text{'index_addr'}</b></td>\n"; print "<td><input name=addr size=25></td> </tr>\n"; print "<tr> <td><b>$text{'index_port'}</b></td>\n"; print "<td>",&opt_input(undef, "Port", $text{'default'}, 6),"</td> </tr>\n"; print "<tr> <td><b>$text{'index_name'}</b></td>\n"; print "<td>",&opt_input(undef, "ServerName", $text{'default'}, 25); print " \n"; print "<input type=submit value=\"$text{'create'}\"></td> </tr>\n"; print "</table></td></tr></table>\n"; print "</form>\n"; # Find out how ProFTPd is running ($inet, $inet_mod) = &running_under_inetd(); if (!$inet) { # Get the FTP server pid $pid = &get_proftpd_pid(); print &ui_hr(); print &ui_buttons_start(); } if (!$inet && $pid) { print &ui_buttons_row("apply.cgi", $text{'index_apply'}, &get_proftpd_version() > 1.22 ? $text{'index_applymsg2'} : $text{'index_applymsg'}); print &ui_buttons_row("stop.cgi", $text{'index_stop'}, $text{'index_stopmsg'}); } elsif (!$inet && !$pid) { print &ui_buttons_row("start.cgi", $text{'index_start'}, $inet_mod ? &text('index_startmsg', "/$inet_mod/") : $text{'index_startmsg2'}); } if (!$inet) { print &ui_buttons_end(); } &ui_print_footer("/", $text{'index'});
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 484 B | 0644 |
|
allmanual_form.cgi | File | 1.07 KB | 0755 |
|
allmanual_save.cgi | File | 652 B | 0755 |
|
anon_index.cgi | File | 2.64 KB | 0755 |
|
apply.cgi | File | 349 B | 0755 |
|
backup_config.pl | File | 797 B | 0755 |
|
config | File | 179 B | 0644 |
|
config-AlmaLinux-7.0-ALL | File | 292 B | 0644 |
|
config-Amazon-Linux-2-ALL | File | 258 B | 0644 |
|
config-CentOS-Linux-7.0-ALL | File | 292 B | 0644 |
|
config-CentOS-Stream-Linux-8.0-ALL | File | 292 B | 0644 |
|
config-CloudLinux-8.0-ALL | File | 292 B | 0644 |
|
config-Oracle-Linux-8.0-ALL | File | 292 B | 0644 |
|
config-Redhat-Enterprise-Linux-7.0-ALL | File | 258 B | 0644 |
|
config-Rocky-Linux-7.0-ALL | File | 292 B | 0644 |
|
config-Scientific-Linux-7.0-ALL | File | 258 B | 0644 |
|
config-Ubuntu-Linux | File | 231 B | 0644 |
|
config-cobalt-linux | File | 157 B | 0644 |
|
config-coherent-linux | File | 157 B | 0644 |
|
config-debian-linux | File | 227 B | 0644 |
|
config-debian-linux-10.0-ALL | File | 231 B | 0644 |
|
config-debian-linux-4.0-9.0 | File | 235 B | 0644 |
|
config-freebsd | File | 173 B | 0644 |
|
config-freebsd-8-ALL | File | 269 B | 0644 |
|
config-gentoo-linux | File | 165 B | 0644 |
|
config-mandrake-linux | File | 219 B | 0644 |
|
config-msc-linux | File | 157 B | 0644 |
|
config-open-linux | File | 157 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 223 B | 0644 |
|
config-redhat-linux | File | 222 B | 0644 |
|
config-redhat-linux-10.0-23.0 | File | 262 B | 0644 |
|
config-redhat-linux-24.0-ALL | File | 308 B | 0644 |
|
config-slackware-linux | File | 157 B | 0644 |
|
config-sol-linux | File | 195 B | 0644 |
|
config-suse-linux | File | 227 B | 0644 |
|
config-syno-linux | File | 179 B | 0644 |
|
config-trustix-linux | File | 227 B | 0644 |
|
config-turbo-linux | File | 237 B | 0644 |
|
config-united-linux | File | 227 B | 0644 |
|
config.info | File | 803 B | 0644 |
|
config.info.ca | File | 970 B | 0644 |
|
config.info.cs | File | 720 B | 0644 |
|
config.info.de | File | 933 B | 0644 |
|
config.info.es | File | 241 B | 0644 |
|
config.info.fa | File | 792 B | 0644 |
|
config.info.fr | File | 1.02 KB | 0644 |
|
config.info.hu | File | 0 B | 0644 |
|
config.info.ja | File | 789 B | 0644 |
|
config.info.ko | File | 686 B | 0644 |
|
config.info.nl | File | 661 B | 0644 |
|
config.info.no | File | 626 B | 0644 |
|
config.info.pl | File | 696 B | 0644 |
|
config.info.pt_BR | File | 769 B | 0644 |
|
config.info.ru | File | 349 B | 0644 |
|
config.info.uk | File | 376 B | 0644 |
|
config.info.zh_TW | File | 410 B | 0644 |
|
create_dir.cgi | File | 1.08 KB | 0755 |
|
create_ftpaccess.cgi | File | 784 B | 0755 |
|
create_limit.cgi | File | 1.16 KB | 0755 |
|
create_virt.cgi | File | 1.01 KB | 0755 |
|
delete_ftpaccess.cgi | File | 408 B | 0755 |
|
dir_index.cgi | File | 2.67 KB | 0755 |
|
edit_anon.cgi | File | 1.13 KB | 0755 |
|
edit_aserv.cgi | File | 2.03 KB | 0755 |
|
edit_dir.cgi | File | 2.07 KB | 0755 |
|
edit_dserv.cgi | File | 2.11 KB | 0755 |
|
edit_ftpaccess.cgi | File | 1.07 KB | 0755 |
|
edit_ftpusers.cgi | File | 589 B | 0755 |
|
edit_global.cgi | File | 1011 B | 0755 |
|
edit_limit.cgi | File | 3.77 KB | 0755 |
|
edit_lserv.cgi | File | 4.19 KB | 0755 |
|
edit_net.cgi | File | 777 B | 0755 |
|
edit_virt.cgi | File | 1020 B | 0755 |
|
edit_vserv.cgi | File | 1.37 KB | 0755 |
|
feedback_files.pl | File | 126 B | 0755 |
|
find_ftpaccess.cgi | File | 1.01 KB | 0755 |
|
ftpaccess.cgi | File | 1.37 KB | 0755 |
|
ftpaccess_index.cgi | File | 1.81 KB | 0755 |
|
index.cgi | File | 8.11 KB | 0755 |
|
install_check.pl | File | 429 B | 0755 |
|
limit_index.cgi | File | 2.9 KB | 0755 |
|
log_parser.pl | File | 3.14 KB | 0755 |
|
manual_form.cgi | File | 3.91 KB | 0755 |
|
manual_save.cgi | File | 3.14 KB | 0755 |
|
mod_auth.pl | File | 2.68 KB | 0755 |
|
mod_core.pl | File | 41.29 KB | 0755 |
|
mod_ldap.pl | File | 9.01 KB | 0755 |
|
mod_log.pl | File | 3.14 KB | 0755 |
|
mod_ls.pl | File | 4.4 KB | 0755 |
|
mod_pam.pl | File | 676 B | 0755 |
|
mod_readme.pl | File | 426 B | 0755 |
|
mod_site.pl | File | 443 B | 0755 |
|
mod_unixpw.pl | File | 1.54 KB | 0755 |
|
module.info | File | 204 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 151 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 193 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 225 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 230 B | 0644 |
|
module.info.ca | File | 141 B | 0644 |
|
module.info.ca.auto | File | 16 B | 0644 |
|
module.info.cs | File | 23 B | 0644 |
|
module.info.cs.auto | File | 139 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 162 B | 0644 |
|
module.info.de | File | 151 B | 0644 |
|
module.info.de.auto | File | 16 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 265 B | 0644 |
|
module.info.es | File | 25 B | 0644 |
|
module.info.es.auto | File | 139 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 159 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 220 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 150 B | 0644 |
|
module.info.fr | File | 24 B | 0644 |
|
module.info.fr.auto | File | 143 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 197 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 162 B | 0644 |
|
module.info.hu | File | 30 B | 0644 |
|
module.info.hu.auto | File | 136 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 159 B | 0644 |
|
module.info.ja | File | 26 B | 0644 |
|
module.info.ja.auto | File | 175 B | 0644 |
|
module.info.ko | File | 23 B | 0644 |
|
module.info.ko.auto | File | 147 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 151 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 161 B | 0644 |
|
module.info.ms | File | 148 B | 0644 |
|
module.info.ms.auto | File | 16 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 168 B | 0644 |
|
module.info.nl | File | 23 B | 0644 |
|
module.info.nl.auto | File | 128 B | 0644 |
|
module.info.no | File | 22 B | 0644 |
|
module.info.no.auto | File | 134 B | 0644 |
|
module.info.pl | File | 29 B | 0644 |
|
module.info.pl.auto | File | 137 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 155 B | 0644 |
|
module.info.pt_BR | File | 28 B | 0644 |
|
module.info.pt_BR.auto | File | 136 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 157 B | 0644 |
|
module.info.ru | File | 28 B | 0644 |
|
module.info.ru.auto | File | 194 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 162 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 152 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 152 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 309 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 164 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 224 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 237 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 189 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 146 B | 0644 |
|
module.info.zh_TW | File | 27 B | 0644 |
|
module.info.zh_TW.auto | File | 127 B | 0644 |
|
proftpd-lib.pl | File | 23.42 KB | 0755 |
|
save_anon.cgi | File | 594 B | 0755 |
|
save_aserv.cgi | File | 1.7 KB | 0755 |
|
save_dir.cgi | File | 874 B | 0755 |
|
save_dserv.cgi | File | 1.37 KB | 0755 |
|
save_ftpaccess.cgi | File | 486 B | 0755 |
|
save_ftpusers.cgi | File | 342 B | 0755 |
|
save_global.cgi | File | 529 B | 0755 |
|
save_limit.cgi | File | 1.02 KB | 0755 |
|
save_lserv.cgi | File | 1.79 KB | 0755 |
|
save_virt.cgi | File | 496 B | 0755 |
|
save_vserv.cgi | File | 1.55 KB | 0755 |
|
start.cgi | File | 223 B | 0755 |
|
stop.cgi | File | 207 B | 0755 |
|
userpermissions_form.cgi | File | 16.7 KB | 0755 |
|
virt_index.cgi | File | 2.62 KB | 0755 |
|