2 # Create, update or delete a file set
4 require './bacula-backup-lib.pl';
6 $conf = &get_director_config();
7 $parent = &get_director_config_parent();
8 @filesets = &find("FileSet", $conf);
11 $fileset = &find_by("Name", $in{'old'}, \@filesets);
12 $fileset || &error($text{'fileset_egone'});
15 $fileset = { 'type' => 1,
20 &lock_file($parent->{'file'});
22 # Just delete this one
23 $name = &find_value("Name", $fileset->{'members'});
24 $child = &find_dependency("FileSet", $name, [ "Job", "JobDefs" ], $conf);
25 $child && &error(&text('fileset_echild', $child));
26 &save_directive($conf, $parent, $fileset, undef, 0);
29 # Validate and store inputs
30 &error_setup($text{'fileset_err'});
31 $in{'name'} =~ /\S/ || &error($text{'fileset_ename'});
32 if ($in{'new'} || $in{'name'} ne $in{'old'}) {
33 $clash = &find_by("Name", $in{'name'}, \@filesets);
34 $clash && &error($text{'fileset_eclash'});
36 &save_directive($conf, $fileset, "Name", $in{'name'}, 1);
39 $in{'include'} =~ s/\r//g;
40 $in{'include'} =~ s/\\/\//g;
41 @include = split(/\n+/, $in{'include'});
42 $inc = &find("Include", $fileset->{'members'});
44 $inc = { 'name' => 'Include', 'type' => 1, 'members' => [ ] };
45 &save_directive($conf, $fileset, undef, $inc, 1);
47 &save_directives($conf, $inc, "File", \@include, 2);
48 $opts = &find("Options", $inc->{'members'});
50 $opts = { 'name' => 'Options', 'type' => 1, 'members' => [ ] };
51 &save_directive($conf, $inc, undef, $opts, 2);
53 &save_directive($conf, $opts, "signature",
54 $in{'signature'} || undef, 3);
57 $in{'exclude'} =~ s/\r//g;
58 $in{'exclude'} =~ s/\\/\//g;
59 @exclude = split(/\n+/, $in{'exclude'});
60 $exc = &find("Exclude", $fileset->{'members'});
61 if (!$exc && @exclude) {
62 $exc = { 'name' => 'Exclude', 'type' => 1, 'members' => [ ] };
63 &save_directive($conf, $fileset, undef, $exc, 1);
66 &save_directives($conf, $exc, "File", \@exclude, 2);
69 # Save compression level
71 &save_directive($conf, $opts, "Compression", $in{'comp'}, 1);
74 &save_directive($conf, $opts, "Compression", undef);
77 &save_directive($conf, $opts, "OneFS", $in{'onefs'} || undef, 1);
81 &save_directive($conf, $parent, undef, $fileset, 0);
86 &unlock_file($parent->{'file'});
87 &auto_apply_configuration();
88 &webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
89 "fileset", $in{'old'} || $in{'name'});
90 &redirect("list_filesets.cgi");