]>
Commit | Line | Data |
---|---|---|
cd1a2927 MT |
1 | #!/usr/bin/perl\r |
2 | #\r | |
3 | # SmoothWall CGIs\r | |
4 | #\r | |
5 | # This code is distributed under the terms of the GPL\r | |
6 | #\r | |
7 | # (c) The SmoothWall Team\r | |
8 | #\r | |
9 | # $Id: remote.cgi,v 1.6.2.8 2005/02/22 22:21:56 gespinasse Exp $\r | |
10 | #\r | |
11 | \r | |
12 | use strict;\r | |
13 | \r | |
14 | # enable only the following on debugging purpose\r | |
15 | #use warnings;\r | |
16 | #use CGI::Carp 'fatalsToBrowser';\r | |
17 | \r | |
18 | require 'CONFIG_ROOT/general-functions.pl';\r | |
19 | require "${General::swroot}/lang.pl";\r | |
20 | require "${General::swroot}/header.pl";\r | |
21 | \r | |
22 | my %remotesettings=();\r | |
23 | my %checked=();\r | |
24 | my $errormessage='';\r | |
25 | \r | |
26 | &Header::showhttpheaders();\r | |
27 | \r | |
28 | $remotesettings{'ENABLE_SSH'} = 'off';\r | |
29 | $remotesettings{'ENABLE_SSH_PROTOCOL1'} = 'off';\r | |
30 | $remotesettings{'ENABLE_SSH_PORTFW'} = 'off';\r | |
31 | $remotesettings{'ACTION'} = '';\r | |
32 | &Header::getcgihash(\%remotesettings);\r | |
33 | \r | |
34 | if ($remotesettings{'ACTION'} eq $Lang::tr{'save'})\r | |
35 | {\r | |
36 | # not existing here indicates the box is unticked\r | |
37 | $remotesettings{'ENABLE_SSH_PASSWORDS'} = 'off' unless exists $remotesettings{'ENABLE_SSH_PASSWORDS'};\r | |
38 | $remotesettings{'ENABLE_SSH_KEYS'} = 'off' unless exists $remotesettings{'ENABLE_SSH_KEYS'};\r | |
39 | \r | |
40 | \r | |
41 | &General::writehash("${General::swroot}/remote/settings", \%remotesettings);\r | |
42 | if ($remotesettings{'ENABLE_SSH'} eq 'on')\r | |
43 | {\r | |
44 | &General::log($Lang::tr{'ssh is enabled'});\r | |
45 | if ($remotesettings{'ENABLE_SSH_PASSWORDS'} eq 'off'\r | |
46 | and $remotesettings{'ENABLE_SSH_KEYS'} eq 'off')\r | |
47 | {\r | |
48 | $errormessage = $Lang::tr{'ssh no auth'};\r | |
49 | }\r | |
50 | system ('/bin/touch', "${General::swroot}/remote/enablessh");\r | |
51 | }\r | |
52 | else\r | |
53 | {\r | |
54 | &General::log($Lang::tr{'ssh is disabled'});\r | |
55 | unlink "${General::swroot}/remote/enablessh";\r | |
56 | }\r | |
57 | \r | |
58 | if ($remotesettings{'ENABLE_SSH_PROTOCOL1'} eq 'on')\r | |
59 | {\r | |
60 | &General::log($Lang::tr{'ssh1 enabled'});\r | |
61 | }\r | |
62 | else\r | |
63 | {\r | |
64 | &General::log($Lang::tr{'ssh1 disabled'});\r | |
65 | }\r | |
66 | \r | |
67 | system('/usr/local/bin/restartssh') == 0\r | |
68 | or $errormessage = "$Lang::tr{'bad return code'} " . $?/256;\r | |
69 | }\r | |
70 | \r | |
71 | &General::readhash("${General::swroot}/remote/settings", \%remotesettings);\r | |
72 | \r | |
73 | # not existing here means they're undefined and the default value should be\r | |
74 | # used\r | |
75 | $remotesettings{'ENABLE_SSH_PASSWORDS'} = 'on' unless exists $remotesettings{'ENABLE_SSH_PASSWORDS'};\r | |
76 | $remotesettings{'ENABLE_SSH_KEYS'} = 'on' unless exists $remotesettings{'ENABLE_SSH_KEYS'};\r | |
77 | \r | |
78 | $checked{'ENABLE_SSH'}{'off'} = '';\r | |
79 | $checked{'ENABLE_SSH'}{'on'} = '';\r | |
80 | $checked{'ENABLE_SSH'}{$remotesettings{'ENABLE_SSH'}} = "checked='checked'";\r | |
81 | $checked{'ENABLE_SSH_PROTOCOL1'}{'off'} = '';\r | |
82 | $checked{'ENABLE_SSH_PROTOCOL1'}{'on'} = '';\r | |
83 | $checked{'ENABLE_SSH_PROTOCOL1'}{$remotesettings{'ENABLE_SSH_PROTOCOL1'}} = "checked='checked'";\r | |
84 | $checked{'ENABLE_SSH_PORTFW'}{'off'} = '';\r | |
85 | $checked{'ENABLE_SSH_PORTFW'}{'on'} = '';\r | |
86 | $checked{'ENABLE_SSH_PORTFW'}{$remotesettings{'ENABLE_SSH_PORTFW'}} = "checked='checked'";\r | |
87 | $checked{'ENABLE_SSH_PASSWORDS'}{'off'} = '';\r | |
88 | $checked{'ENABLE_SSH_PASSWORDS'}{'on'} = '';\r | |
89 | $checked{'ENABLE_SSH_PASSWORDS'}{$remotesettings{'ENABLE_SSH_PASSWORDS'}} = "checked='checked'";\r | |
90 | $checked{'ENABLE_SSH_KEYS'}{'off'} = '';\r | |
91 | $checked{'ENABLE_SSH_KEYS'}{'on'} = '';\r | |
92 | $checked{'ENABLE_SSH_KEYS'}{$remotesettings{'ENABLE_SSH_KEYS'}} = "checked='checked'";\r | |
93 | \r | |
94 | \r | |
95 | &Header::openpage($Lang::tr{'remote access'}, 1, '');\r | |
96 | \r | |
97 | &Header::openbigbox('100%', 'left', '', $errormessage);\r | |
98 | \r | |
99 | if ($errormessage) {\r | |
100 | &Header::openbox('100%', 'left', $Lang::tr{'error messages'});\r | |
101 | print "<FONT CLASS='base'>$errormessage </FONT>\n";\r | |
102 | &Header::closebox();\r | |
103 | }\r | |
104 | \r | |
105 | print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";\r | |
106 | \r | |
107 | &Header::openbox('100%', 'left', 'SSH:');\r | |
108 | print <<END\r | |
109 | <table width='100%'>\r | |
110 | <tr>\r | |
111 | <td><input type='checkbox' name='ENABLE_SSH' $checked{'ENABLE_SSH'}{'on'} /></td>\r | |
112 | <td class='base' colspan='2'>$Lang::tr{'ssh access'}</td>\r | |
113 | </tr>\r | |
114 | <tr>\r | |
115 | <td> </td>\r | |
116 | <td><input type='checkbox' name='ENABLE_SSH_PROTOCOL1' $checked{'ENABLE_SSH_PROTOCOL1'}{'on'} /></td>\r | |
117 | <td width='100%' class='base'>$Lang::tr{'ssh1 support'}</td>\r | |
118 | </tr>\r | |
119 | <tr>\r | |
120 | <td> </td>\r | |
121 | <td><input type='checkbox' name='ENABLE_SSH_PORTFW' $checked{'ENABLE_SSH_PORTFW'}{'on'} /></td>\r | |
122 | <td width='100%' class='base'>$Lang::tr{'ssh portfw'}</td>\r | |
123 | </tr>\r | |
124 | <tr>\r | |
125 | <td> </td>\r | |
126 | <td><input type='checkbox' name='ENABLE_SSH_PASSWORDS' $checked{'ENABLE_SSH_PASSWORDS'}{'on'} /></td>\r | |
127 | <td width='100%' class='base'>$Lang::tr{'ssh passwords'}</td>\r | |
128 | </tr>\r | |
129 | <tr>\r | |
130 | <td> </td>\r | |
131 | <td><input type='checkbox' name='ENABLE_SSH_KEYS' $checked{'ENABLE_SSH_KEYS'}{'on'} /></td>\r | |
132 | <td width='100%' class='base'>$Lang::tr{'ssh keys'}</td>\r | |
133 | </tr>\r | |
134 | <tr>\r | |
135 | <td colspan='3' align='center'><hr /><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>\r | |
136 | </tr>\r | |
137 | </table>\r | |
138 | END\r | |
139 | ;\r | |
140 | &Header::closebox();\r | |
141 | \r | |
142 | print "</form>\n";\r | |
143 | \r | |
144 | &Header::openbox('100%', 'left', $Lang::tr{'ssh host keys'});\r | |
145 | \r | |
146 | print "<table>\n";\r | |
147 | \r | |
148 | print <<END\r | |
149 | <tr><td class='boldbase'><b>$Lang::tr{'ssh key'}</b></td>\r | |
150 | <td class='boldbase'><b>$Lang::tr{'ssh fingerprint'}</b></td>\r | |
151 | <td class='boldbase'><b>$Lang::tr{'ssh key size'}</b></td></tr>\r | |
152 | END\r | |
153 | ;\r | |
154 | \r | |
155 | &viewkey("/etc/ssh/ssh_host_key.pub","RSA1");\r | |
156 | &viewkey("/etc/ssh/ssh_host_rsa_key.pub","RSA2");\r | |
157 | &viewkey("/etc/ssh/ssh_host_dsa_key.pub","DSA");\r | |
158 | \r | |
159 | print "</table>\n";\r | |
160 | \r | |
161 | &Header::closebox();\r | |
162 | \r | |
163 | &Header::closebigbox();\r | |
164 | \r | |
165 | &Header::closepage();\r | |
166 | \r | |
167 | \r | |
168 | sub viewkey\r | |
169 | {\r | |
170 | my $key = $_[0];\r | |
171 | my $name = $_[1];\r | |
172 | \r | |
173 | if ( -e $key )\r | |
174 | {\r | |
175 | my @temp = split(/ /,`/usr/bin/ssh-keygen -l -f $key`);\r | |
176 | my $keysize = &Header::cleanhtml($temp[0],"y");\r | |
177 | my $fingerprint = &Header::cleanhtml($temp[1],"y");\r | |
178 | print "<tr><td>$key ($name)</td><td><code>$fingerprint</code></td><td align='center'>$keysize</td></tr>\n";\r | |
179 | }\r | |
180 | }\r |