#!/usr/local/bin/perl # index.cgi # Display sshd option categories require './sshd-lib.pl'; # Check if config file exists if (!-r $config{'sshd_config'}) { &header($text{'index_title'}, "", "intro", 1, 1); print "
\n"; print &text('index_econfig', "$config{'sshd_config'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"

\n"; print "


\n"; &footer("/", $text{"index"}); exit; } # Check if sshd exists if (!&has_command($config{'sshd_path'})) { &header($text{'index_title'}, "", "intro", 1, 1); print "
\n"; print &text('index_esshd', "$config{'sshd_path'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"

\n"; print "


\n"; &footer("/", $text{"index"}); exit; } # Check if sshd is the right version $out = `$config{'sshd_path'} -h 2>&1`; if ($out =~ /(sshd\s+version\s+([0-9\.]+))/i || $out =~ /(ssh\s+secure\s+shell\s+([0-9\.]+))/i) { # Classic SSH - only versions 1 and 2 are supported if ($2 >= 3) { &header($text{'index_title'}, "", "intro", 1, 1); print "
\n"; print &text('index_eversion2', "$config{'sshd_path'}", $2),"

\n"; print "


\n"; &footer("/", $text{"index"}); exit; } $version{'type'} = 'ssh'; $version{'number'} = $2; $version{'full'} = $1; } elsif ($out =~ /(OpenSSH.([0-9\.]+))/i) { # OpenSSH .. assume all versions are supported $version{'type'} = 'openssh'; $version{'number'} = $2; $version{'full'} = $1; } elsif ($out =~ /(Sun_SSH_([0-9\.]+))/i) { # Solaris 9 SSH is actually OpenSSH 3.0 $version{'type'} = 'openssh'; $version{'number'} = 3.0; $version{'full'} = $1; } else { # Unknown version &header($text{'index_title'}, "", "intro", 1, 1); print "
\n"; print &text('index_eversion', "$config{'sshd_path'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"

\n"; print "


\n"; &footer("/", $text{"index"}); exit; } &write_file("$module_config_directory/version", \%version); &header($text{'index_title'}, "", "intro", 1, 1, 0, &help_search_link("ssh", "man", "doc", "google"), undef, undef, &text('index_version', $version{'full'})); print "
\n"; # Display icons for options foreach $i ('users', 'net', 'access', 'misc') { push(@links, "edit_$i.cgi"); push(@titles, $text{$i.'_title'}); push(@icons, "images/$i.gif"); } if (-r $config{'client_config'}) { push(@links, "list_hosts.cgi"); push(@titles, $text{'hosts_title'}); push(@icons, "images/hosts.gif"); } push(@links, "edit_sync.cgi"); push(@titles, $text{'sync_title'}); push(@icons, "images/sync.gif"); &icons_table(\@links, \@titles, \@icons, scalar(@links)); # Check if sshd is running $conf = &get_sshd_config(); $pidfile = &find_value("PidFile", $conf); $pidfile = $config{'pid_file'} if (!$pidfile); if (open(PID, $pidfile) && ($pid = int()) && kill(0, $pid)) { # Running .. offer to apply changes print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'index_applymsg'}
\n"; } else { # Not running .. offer to start print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "
$text{'index_startmsg'}
\n"; } close(PID); print "
\n"; &footer("/", $text{"index"});