1#!/usr/local/bin/perl 2# save_misc.cgi 3# save miscellaneous options 4 5require './sshd-lib.pl'; 6&ReadParse(); 7&error_setup($text{'misc_err'}); 8&lock_file($config{'sshd_config'}); 9$conf = &get_sshd_config(); 10 11&save_directive("X11Forwarding", $conf, $in{'x11'} ? 'yes' : 'no'); 12 13if ($version{'type'} ne 'ssh' || $version{'number'} < 2) { 14 if ($in{'xoff_def'}) { 15 &save_directive("X11DisplayOffset", $conf); 16 } 17 else { 18 $in{'xoff'} =~ /^\d+$/ || &error($text{'misc_exoff'}); 19 &save_directive("X11DisplayOffset", $conf, $in{'xoff'}); 20 } 21 22 if ($version{'type'} eq 'ssh' || $version{'number'} >= 2) { 23 if ($in{'xauth_def'}) { 24 &save_directive("XAuthLocation", $conf); 25 } 26 else { 27 -x $in{'xauth'} || &error($text{'misc_exauth'}); 28 &save_directive("XAuthLocation", $conf, $in{'xauth'}); 29 } 30 } 31 } 32 33if ($version{'type'} eq 'ssh' && $version{'number'} < 2) { 34 if ($in{'umask_def'}) { 35 &save_directive("Umask", $conf); 36 } 37 else { 38 $in{'umask'} =~ /^0[0-7][0-7][0-7]$/ || 39 &error($text{'misc_eumask'}); 40 &save_directive("Umask", $conf, $in{'umask'}); 41 } 42 } 43 44&save_directive("SyslogFacility", $conf, 45 $in{'syslog_def'} ? undef : uc($in{'syslog'})); 46 47if ($version{'type'} eq 'openssh') { 48 &save_directive("LogLevel", $conf, 49 $in{'loglevel_def'} ? undef : $in{'loglevel'}); 50 } 51 52if ($version{'type'} ne 'ssh' || $version{'number'} < 2) { 53 if ($in{'bits_def'}) { 54 &save_directive("ServerKeyBits", $conf); 55 } 56 else { 57 $in{'bits'} =~ /^\d+$/ || &error($text{'misc_ebits'}); 58 &save_directive("ServerKeyBits", $conf, $in{'bits'}); 59 } 60 } 61 62if ($version{'type'} eq 'ssh') { 63 &save_directive("QuietMode", $conf, $in{'quite'} ? 'yes' : 'no'); 64 } 65 66if ($version{'type'} ne 'ssh' || $version{'number'} < 2) { 67 if ($in{'regen_def'}) { 68 &save_directive("KeyRegenerationInterval", $conf); 69 } 70 else { 71 $in{'regen'} =~ /^\d+$/ || &error($text{'misc_eregen'}); 72 &save_directive("KeyRegenerationInterval", $conf, $in{'regen'}); 73 } 74 } 75 76if ($version{'type'} eq 'ssh' && $version{'number'} < 2) { 77 &save_directive("FascistLogging", $conf, $in{'fascist'} ? 'yes' : 'no'); 78 } 79 80if ($version{'type'} eq 'openssh' && $version{'number'} >= 2) { 81 if ($in{'pid_def'}) { 82 &save_directive("PidFile", $conf); 83 } 84 else { 85 $in{'pid'} =~ /^\S+$/ || &error($text{'misc_epid'}); 86 &save_directive("PidFile", $conf, $in{'pid'}); 87 } 88 } 89 90if ($version{'type'} eq 'openssh' && $version{'number'} >= 3.2) { 91 &save_directive("UsePrivilegeSeparation", $conf, 92 $in{'separ'} ? 'yes' : 'no'); 93 } 94 95&flush_file_lines(); 96&unlock_file($config{'sshd_config'}); 97&webmin_log("misc"); 98&redirect(""); 99 100