1#!/usr/local/bin/perl 2# edit_host.cgi 3# Display options for a new or existing host config 4 5require (-r 'sshd-lib.pl' ? './sshd-lib.pl' : './ssh-lib.pl'); 6&ReadParse(); 7if ($in{'new'}) { 8 &ui_print_header(undef, $text{'host_create'}, "", "chost"); 9 } 10else { 11 &ui_print_header(undef, $text{'host_edit'}, "", "ehost"); 12 $hconf = &get_client_config(); 13 $host = $hconf->[$in{'idx'}]; 14 $conf = $host->{'members'}; 15 } 16 17# Get version and type 18if (&get_product_name() eq 'usermin') { 19 $version_type = &get_ssh_type(); 20 $version_number = &get_ssh_version(); 21 } 22else { 23 $version_type = $version{'type'}; 24 $version_number = $version{'number'}; 25 } 26 27print &ui_form_start("save_host.cgi", "post"); 28print &ui_hidden("idx", $in{'idx'}); 29print &ui_hidden("new", $in{'new'}); 30print &ui_table_start($text{'host_header'}, "width=100%", 2); 31 32# Name for this host 33print &ui_table_row($text{'host_name'}, 34 &ui_opt_textbox("name", $host->{'values'}->[0] eq '*' ? '' : 35 $host->{'values'}->[0], 36 50, $text{'hosts_all'})); 37 38# Default user to login as 39$user = &find_value("User", $conf); 40print &ui_table_row($text{'host_user'}, 41 &ui_opt_textbox("user", $user, 20, $text{'host_user_def'})); 42 43# Send keep-alive packets? 44$keep = &find_value("KeepAlive", $conf); 45print &ui_table_row($text{'host_keep'}, 46 &yes_no_default_radio("keep", $keep)); 47 48# Real hostname to connect to 49$hostname = &find_value("HostName", $conf); 50print &ui_table_row($text{'host_hostname'}, 51 &ui_opt_textbox("hostname", $hostname, 30, $text{'host_hostname_def'})); 52 53# Port to use 54$port = &find_value("Port", $conf); 55print &ui_table_row($text{'host_port'}, 56 &ui_opt_textbox("port", $port, 6, $text{'default'}." (22)")); 57 58# Ask for password if needed, or fail fast? 59$batch = &find_value("BatchMode", $conf); 60print &ui_table_row($text{'host_batch'}, 61 &yes_no_default_radio("batch", $batch)); 62 63# Compress SSH? 64$comp = &find_value("Compression", $conf); 65print &ui_table_row($text{'host_comp'}, 66 &yes_no_default_radio("comp", $comp)); 67 68# Escape character in session 69$escape = &find_value("EscapeChar", $conf); 70print &ui_table_row($text{'host_escape'}, 71 &ui_radio("escape_def", $escape eq "" ? 1 : 72 $escape eq "none" ? 2 : 0, 73 [ [ 1, $text{'default'}." (~.)" ], 74 [ 2, $text{'host_escape_none'} ], 75 [ 0, &ui_textbox("escape", 76 $escape eq "none" ? "" : $escape, 4) ] ])); 77 78if ($version_type ne 'ssh' || $version_number < 3) { 79 # SSH compression level 80 $clevel = &find_value("CompressionLevel", $conf); 81 print &ui_table_row($text{'host_clevel'}, 82 &ui_radio("clevel_def", $clevel ? 0 : 1, 83 [ [ 1, $text{'default'} ], 84 [ 0, &ui_select("clevel", $clevel, 85 [ map { [ $_, $text{"host_clevel_".$_} ] } 86 (1 .. 9) ]) ] ])); 87 88 # Number of times to attempt connection 89 $attempts = &find_value("ConnectionAttempts", $conf); 90 print &ui_table_row($text{'host_attempts'}, 91 &ui_opt_textbox("attempts", $attempts, 5, $text{'default'})); 92 93 # Use local privileged port? 94 $priv = &find_value("UsePrivilegedPort", $conf); 95 print &ui_table_row($text{'host_priv'}, 96 &yes_no_default_radio("priv", $priv)); 97 98 # Try RSH if SSH fails? 99 $rsh = &find_value("FallBackToRsh", $conf); 100 print &ui_table_row($text{'host_rsh'}, 101 &yes_no_default_radio("rsh", $rsh)); 102 103 # Use RSH only? 104 $usersh = &find_value("UseRsh", $conf); 105 print &ui_table_row($text{'host_usersh'}, 106 &yes_no_default_radio("usersh", $usersh)); 107 } 108 109# Forward SSH agent? 110$agent = &find_value("ForwardAgent", $conf); 111print &ui_table_row($text{'host_agent'}, 112 &yes_no_default_radio('agent', $agent)); 113 114# Forward X connection? 115$x11 = &find_value("ForwardX11", $conf); 116print &ui_table_row($text{'host_x11'}, 117 &yes_no_default_radio('x11', $x11)); 118 119# Strictly check host keys? 120$strict = &find_value("StrictHostKeyChecking", $conf); 121print &ui_table_row($text{'host_strict'}, 122 &ui_radio('strict', lc($strict) eq 'no' ? 0 : 123 lc($strict) eq 'yes' ? 1 : 124 lc($strict) eq 'ask' ? 3 : 2, 125 [ [ 0, $text{'yes'} ], [ 1, $text{'no'} ], 126 [ 3, $text{'host_ask'} ], [ 2, $text{'default'} ] ])); 127 128if ($version_type eq 'openssh') { 129 # Double-check remote host IP? 130 $checkip = &find_value("CheckHostIP", $conf); 131 print &ui_table_row($text{'host_checkip'}, 132 &yes_no_default_radio('checkip', $checkip)); 133 134 # SSH protocols to try 135 $prots = &find_value("Protocol", $conf); 136 print &ui_table_row($text{'host_prots'}, 137 &ui_select("prots", $prots, 138 [ [ '', $text{'default'} ], 139 [ 1, $text{'host_prots1'} ], 140 [ 2, $text{'host_prots2'} ], 141 [ '1,2', $text{'host_prots12'} ], 142 [ '2,1', $text{'host_prots21'} ] ], 1, 0, 1)); 143 } 144 145print &ui_table_hr(); 146 147# Local ports to forward 148@lforward = &find("LocalForward", $conf); 149@ltable = ( ); 150$i = 0; 151foreach $l (@lforward, { }) { 152 local ($lp, $rh, $rp) = ( $l->{'values'}->[0], 153 split(/:/, $l->{'values'}->[1]) ); 154 push(@ltable, [ &ui_textbox("llport_$i", $lp, 8), 155 &ui_textbox("lrhost_$i", $rh, 8), 156 &ui_textbox("lrport_$i", $rp, 8) ]); 157 $i++; 158 } 159print &ui_table_row($text{'host_lforward'}, 160 &ui_columns_table([ $text{'host_llport'}, $text{'host_lrhost'}, 161 $text{'host_lrport'} ], 162 50, \@ltable)); 163 164print &ui_table_hr(); 165 166# Remote ports to forward 167@rforward = &find("RemoteForward", $conf); 168@rtable = ( ); 169$i = 0; 170foreach $r (@rforward, { }) { 171 local ($rp, $lh, $lp) = ( $r->{'values'}->[0], 172 split(/:/, $r->{'values'}->[1]) ); 173 push(@rtable, [ &ui_textbox("rrport_$i", $rp, 8), 174 &ui_textbox("rlhost_$i", $lh, 40), 175 &ui_textbox("rlport_$i", $lp, 8) ]); 176 $i++; 177 } 178print &ui_table_row($text{'host_rforward'}, 179 &ui_columns_table([ $text{'host_rrport'}, $text{'host_rlhost'}, 180 $text{'host_rlport'} ], 181 50, \@rtable)); 182 183print &ui_table_end(); 184if ($in{'new'}) { 185 print &ui_form_end([ [ undef, $text{'create'} ] ]); 186 } 187else { 188 print &ui_form_end([ [ undef, $text{'save'} ], 189 [ 'delete', $text{'delete'} ] ]); 190 } 191 192&ui_print_footer("list_hosts.cgi", $text{'hosts_return'}, 193 "", $text{'index_return'}); 194 195