1#!/usr/local/bin/perl
2# edit_proxy.cgi
3# Proxy servers config form
4
5require './webmin-lib.pl';
6&ReadParse();
7&ui_print_header(undef, $text{'proxy_title'}, "");
8
9# Show tabs
10@tabs = ( [ "proxy", $text{'proxy_tabproxy'}, "edit_proxy.cgi?mode=proxy" ],
11	  [ "down", $text{'proxy_tabdown'}, "edit_proxy.cgi?mode=down" ] );
12print &ui_tabs_start(\@tabs, "pd", $in{'mode'} || "proxy", 1);
13
14print &ui_tabs_start_tab("pd", "proxy");
15print $text{'proxy_desc'},"<p>\n";
16print &ui_form_start("change_proxy.cgi", "post");
17print &ui_table_start($text{'proxy_header'}, undef, 2, [ "width=30%" ]);
18
19# HTTP proxy
20print &ui_table_row($text{'proxy_http'},
21	&ui_opt_textbox("http", $gconfig{'http_proxy'}, 50,
22			$text{'proxy_none'}), undef, [ "valign=middle","valign=middle" ]);
23
24# FTP proxy
25print &ui_table_row($text{'proxy_ftp'},
26	&ui_opt_textbox("ftp", $gconfig{'ftp_proxy'}, 50,
27			$text{'proxy_none'}), undef, [ "valign=middle","valign=middle" ]);
28
29# No proxy for domains
30print &ui_table_row($text{'proxy_nofor'},
31	&ui_textbox("noproxy", $gconfig{'noproxy'}, 60), undef, [ "valign=middle","valign=middle" ]);
32
33# User and password
34print &ui_table_row($text{'proxy_user'},
35	&ui_textbox("puser", $gconfig{'proxy_user'}, 20), undef, [ "valign=middle","valign=middle" ]);
36print &ui_table_row($text{'proxy_pass'},
37	&ui_password("ppass", $gconfig{'proxy_pass'}, 20), undef, [ "valign=middle","valign=middle" ]);
38
39# Bind to address for outgoing connections
40print &ui_table_row($text{'proxy_bind'},
41	&ui_opt_textbox("bind", $gconfig{'bind_proxy'}, 35, $text{'default'}), undef, [ "valign=middle","valign=middle" ]);
42
43# Fallback to direct
44print &ui_table_row($text{'proxy_fallback'},
45	&ui_yesno_radio("fallback", int($gconfig{'proxy_fallback'})), undef, [ "valign=middle","valign=middle" ]);
46
47print &ui_table_end();
48print &ui_form_end([ [ "save", $text{'save'} ] ]);
49print &ui_tabs_end_tab();
50
51# OSDN mirror form
52print &ui_tabs_start_tab("pd", "down");
53print $text{'proxy_desc2'},"<p>\n";
54print &ui_form_start("change_osdn.cgi");
55print &ui_table_start($text{'proxy_header2'}, undef, 2);
56
57# Cache size
58print &ui_table_row($text{'proxy_cache'},
59		    &ui_radio("cache_def", $gconfig{'cache_size'} ? 0 : 1,
60			      [ [ 1, $text{'proxy_cache1'} ],
61				[ 0, $text{'proxy_cache0'} ] ])."\n".
62		    &ui_bytesbox("cache", $gconfig{'cache_size'}, 8), undef, [ "valign=middle","valign=middle" ]);
63
64# Cache time
65print &ui_table_row($text{'proxy_daysmax'},
66		    &ui_opt_textbox("days", $gconfig{'cache_days'}, 5,
67			    $text{'proxy_daysdef'})." ".$text{'proxy_days'}, undef, [ "valign=middle","valign=middle" ]);
68
69# Modules to cache in
70$excl = ($gconfig{'cache_mods'} =~ s/^\!//);
71@mods = split(/\s+/, $gconfig{'cache_mods'});
72print &ui_table_row($text{'proxy_mods'},
73		    &ui_radio("mods_def", !$gconfig{'cache_mods'} ? 0 :
74					  $excl ? 2 : 1,
75			      [ [ 0, $text{'proxy_mods0'} ],
76				[ 1, $text{'proxy_mods1'} ],
77				[ 2, $text{'proxy_mods2'} ] ])."<br>\n".
78		    &ui_select("mods", \@mods,
79			       [ map { [ $_->{'dir'}, $_->{'desc'} ] }
80				  sort { lc($a->{'desc'}) cmp lc($b->{'desc'}) }
81				   &get_all_module_infos() ],
82			       10, 1));
83
84print &ui_table_end();
85print &ui_form_end([ [ "save", $text{'save'} ],
86		     [ "clear", $text{'proxy_clear'} ] ]);
87
88@cached = &list_cached_files();
89if (@cached) {
90	# Show cache management and clearing buttons
91	print &ui_hr();
92	print &ui_buttons_start();
93	print &ui_buttons_row("cache.cgi", $text{'proxy_cacheb'},
94					   $text{'proxy_cachebdesc'});
95	$sz = &nice_size(&disk_usage_kb($main::http_cache_directory)*1024);
96	print &ui_buttons_row("clear_cache.cgi", $text{'proxy_clear'},
97			      &text('proxy_cleardesc', scalar(@cached), $sz));
98	print &ui_buttons_end();
99	}
100print &ui_tabs_end_tab();
101
102print &ui_tabs_end(1);
103
104&ui_print_footer("", $text{'index_return'});
105
106