3 # Save simple memory usage options
5 require './squid-lib.pl';
6 $access{'musage'} || &error($text{'emem_ecannot'});
8 &lock_file($config{'squid_conf'});
10 $whatfailed = $text{'smem_ftsmo'};
12 if ($squid_version < 2) {
13 &save_opt("cache_mem", \&check_size, $conf);
14 &save_opt("cache_swap", \&check_size, $conf);
17 &save_opt_bytes("cache_mem", $conf);
18 &save_opt("fqdncache_size", \&check_size, $conf);
20 if ($squid_version < 2) {
21 &save_opt("maximum_object_size", \&check_obj_size, $conf);
24 &save_opt_bytes("maximum_object_size", $conf);
26 &save_opt("ipcache_size", \&check_size, $conf);
28 if ($in{'cache_dir_def'}) {
29 &save_directive($conf, "cache_dir", [ ]);
32 for($i=0; defined($dir = $in{"cache_dir_$i"}); $i++) {
33 if ($squid_version >= 2.4) {
34 $lv1 = $in{"cache_lv1_$i"}; $lv2 = $in{"cache_lv2_$i"};
35 $size = $in{"cache_size_$i"};
36 $type = $in{"cache_type_$i"};
37 $opts = $in{"cache_opts_$i"};
38 next if (!$dir && !$lv1 && !$lv2 && !$size);
39 &check_error(\&check_dir, $dir);
40 &check_error(\&check_dirsize, $size);
41 &check_error(\&check_dircount, $lv1);
42 &check_error(\&check_dircount, $lv2);
43 push(@chd, { 'name' => 'cache_dir',
44 'values' => [ $type, $dir, $size,
45 $lv1, $lv2, $opts ] });
47 elsif ($squid_version >= 2.3) {
48 $lv1 = $in{"cache_lv1_$i"}; $lv2 = $in{"cache_lv2_$i"};
49 $size = $in{"cache_size_$i"};
50 $type = $in{"cache_type_$i"};
51 next if (!$dir && !$lv1 && !$lv2 && !$size);
52 &check_error(\&check_dir, $dir);
53 &check_error(\&check_dirsize, $size);
54 &check_error(\&check_dircount, $lv1);
55 &check_error(\&check_dircount, $lv2);
56 push(@chd, { 'name' => 'cache_dir',
57 'values' => [ $type, $dir, $size,
60 elsif ($squid_version >= 2) {
61 $lv1 = $in{"cache_lv1_$i"}; $lv2 = $in{"cache_lv2_$i"};
62 $size = $in{"cache_size_$i"};
63 next if (!$dir && !$lv1 && !$lv2 && !$size);
64 &check_error(\&check_dir, $dir);
65 &check_error(\&check_dirsize, $size);
66 &check_error(\&check_dircount, $lv1);
67 &check_error(\&check_dircount, $lv2);
68 push(@chd, { 'name' => 'cache_dir',
69 'values' => [ $dir, $size, $lv1, $lv2 ] });
73 &check_error(\&check_dir, $dir);
74 push(@chd, { 'name' => 'cache_dir',
75 'values' => [ $dir ] });
79 &error($text{'scache_emsg0'});
81 &save_directive($conf, "cache_dir", \@chd);
83 if ($squid_version < 2) {
84 &save_opt("swap_level1_dirs", \&check_dircount, $conf);
85 &save_opt("swap_level2_dirs", \&check_dircount, $conf);
86 &save_opt("store_avg_object_size", \&check_objsize, $conf);
89 &save_opt_bytes("store_avg_object_size", $conf);
91 &save_opt("store_objects_per_bucket", \&check_bucket, $conf);
94 &unlock_file($config{'squid_conf'});
95 &webmin_log("mem", undef, undef, \%in);
100 return $_[0] =~ /^\d+$/ ? undef : &text('smem_emsg1',$_[0]);
105 return $_[0] =~ /^\d+$/ && $_[0] > 0 && $_[0] <= 100
106 ? undef : &text('smem_emsg2',$_[0]);
111 return $_[0] =~ /^\d+$/ && $_[0] > 0 && $_[0] <= 100
112 ? undef : &text('smem_emsg3',$_[0]);
117 return $_[0] =~ /^\d+$/ ? undef : &text('smem_emsg4',$_[0]);