/[smeserver]/rpms/e-smith-backup/sme10/e-smith-backup-2.6.0-replacehal.patch
ViewVC logotype

Contents of /rpms/e-smith-backup/sme10/e-smith-backup-2.6.0-replacehal.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Sat Jan 30 20:30:14 2021 UTC (3 years, 10 months ago) by chrissn
Branch: MAIN
CVS Tags: e-smith-backup-2_6_0-20_el7_sme
* Sat Jan 30 2021 Chris Sansom-Ninnes <chris@sansom.ninnes.net> 2.6.0-20.sme
- Replace hal-* calls with BlockDevices [SME: 11319]

1 diff -urN e-smith-backup-2.6.0.old/root/etc/e-smith/events/actions/workstation-backup-dar e-smith-backup-2.6.0/root/etc/e-smith/events/actions/workstation-backup-dar
2 --- e-smith-backup-2.6.0.old/root/etc/e-smith/events/actions/workstation-backup-dar 2021-01-30 20:13:44.698955067 +0000
3 +++ e-smith-backup-2.6.0/root/etc/e-smith/events/actions/workstation-backup-dar 2021-01-30 20:18:00.982571819 +0000
4 @@ -31,6 +31,7 @@
5 use File::Glob qw(bsd_glob);
6 use esmith::ConfigDB;
7 use esmith::Backup;
8 +use esmith::BlockDevices;
9
10 sub ldie;
11 sub start_dar_killer;
12 @@ -312,77 +313,61 @@
13 return $code;
14 }
15
16 -
17 +# Copied from /etc/e-smith/web/functions/backup
18 +# TODO: Move to a shared module
19 sub checkMount
20 {
21 # check if $mountdir is mounted
22 my $mountdir = shift;
23 $|=1; # Auto-flush
24 -
25 - # copy STDOUT to another filehandle
26 - open (my $STDOLD, '>&', STDOUT);
27 -
28 - open(STDOUT, ">/dev/null");
29 - if ( open(MOUNTDIR, "|-", "/bin/findmnt", $mountdir)){;}
30
31 - # restore STDOUT
32 - open (STDOUT, '>&', $STDOLD);
33 -
34 - return (!close(MOUNTDIR));
35 + my @res = qx( findmnt $mountdir );
36 + return ( !@res );
37 }
38
39
40 -# dmount is copied from /etc/e-smith/web/functions/backup
41 -# it could become a common function later
42 +# Copied from /etc/e-smith/web/functions/backup
43 +# TODO: Move to a shared module
44 sub dmount
45 {
46 # mount dar unit according to dar-workstation configuration
47 # return nothing if mount successfull
48
49 my ($host,$share,$mountdir,$login,$password,$VFSType) = @_;
50 -
51 +
52 if ($VFSType eq 'cifs')
53 {
54 - return ( qx(/bin/mount -t cifs "//$host/$share" $mountdir -o credentials=/etc/dar/CIFScredentials,nounix 2>&1) );
55 + return ( qx(/bin/mount -t cifs "//$host/$share" $mountdir -o credentials=/etc/dar/CIFScredentials,nounix 2>&1) );
56 }
57 elsif ($VFSType eq 'nfs')
58 {
59 - return ( qx(/bin/mount -t nfs -o nolock "$host:/$share" $mountdir 2>&1) );
60 + return ( qx(/bin/mount -t nfs -o nolock "$host:/$share" $mountdir 2>&1) );
61 }
62 elsif ($VFSType eq 'usb')
63 {
64 my $device = "";
65 - my $blkdev = "";
66 my $vollbl = "";
67 - foreach my $udi (qx(hal-find-by-property --key volume.fsusage --string filesystem))
68 - {
69 - $udi =~ m/^(\S+)/;
70 - my $is_mounted = qx(hal-get-property --udi $1 --key volume.is_mounted);
71
72 - if ($is_mounted eq "false\n")
73 - {
74 - $blkdev = qx(hal-get-property --udi $1 --key block.device);
75 - if ($blkdev =~ m/^(\S+)/) {$blkdev = $1;}
76 - }
77 - if ($is_mounted eq "false\n")
78 - {
79 - $vollbl = qx(hal-get-property --udi $1 --key volume.label);
80 - $vollbl =~ m/^(\S+)/;
81 - if ($vollbl =~ /^\s/) {$vollbl = 'nolabel';}
82 - }
83 + my $devices = esmith::BlockDevices->new ('allowmount' => 'disabled');
84 + my ($valid, $invalid) = $devices->checkBackupDrives(0, 1);
85
86 - chomp $vollbl;
87 - chomp $blkdev;
88 - $vollbl = "media/$vollbl";
89 - if ($vollbl eq $share) {$device = $blkdev;}
90 + if ( ${$valid}[0] ) {
91 + foreach ( @{$valid} ) {
92 + warn $_;
93 + $vollbl = $devices->label($_);
94 + if ( $share eq "media/$vollbl" ) {
95 + $device = "/dev/$_";
96 + }
97 + }
98 }
99 - return ( qx(/bin/mount $device "/$share" 2>&1) );
100 + $devices->destroy;
101 + return ( qx (mount $device /$share 2>&1) );
102 }
103 else
104 {
105 - return ("Mount of type $VFSType not supported.\n");
106 + return ("Error while mounting $host/$share : $VFSType not supported.\n");
107 }
108 -}
109 +}
110
111
112 sub removeTree
113 diff -urN e-smith-backup-2.6.0.old/root/etc/e-smith/web/functions/backup e-smith-backup-2.6.0/root/etc/e-smith/web/functions/backup
114 --- e-smith-backup-2.6.0.old/root/etc/e-smith/web/functions/backup 2021-01-30 20:13:44.674956230 +0000
115 +++ e-smith-backup-2.6.0/root/etc/e-smith/web/functions/backup 2021-01-30 20:17:32.531942610 +0000
116 @@ -27,6 +27,7 @@
117 use esmith::ConfigDB;
118 use esmith::Backup;
119 use esmith::BackupHistoryDB;
120 +use esmith::BlockDevices;
121 use esmith::AccountsDB;
122 use esmith::cgi;
123 use esmith::util;
124 @@ -697,9 +698,9 @@
125 if (defined $status && $status eq "on")
126 {
127
128 - #--------------------------------------------------
129 - # Untaint parameters and check for validity
130 - #--------------------------------------------------
131 + #--------------------------------------------------
132 + # Untaint parameters and check for validity
133 + #--------------------------------------------------
134
135 my $backupHour = $q->param ('backupHour');
136 if ($backupHour =~ /^(.*)$/) {
137 @@ -1237,23 +1238,20 @@
138 $q, undef, $fm->localise('CONFIGURE_WORKSTN_BACKUP'));
139
140 if ( $VFSType eq 'usb' ) {
141 - foreach my $udi (qx(hal-find-by-property --key volume.fsusage --string filesystem)) {
142 - $udi =~ m/^(\S+)/;
143 + my $devices = esmith::BlockDevices->new ('allowmount' => 'disabled');
144 + my ($valid, $invalid) = $devices->checkBackupDrives(0, 1);
145
146 - my $is_mounted = qx(hal-get-property --udi $1 --key volume.is_mounted);
147 -
148 - if ($is_mounted eq "false\n") {
149 - my $vollbl = qx(hal-get-property --udi $1 --key volume.label);
150 - $vollbl =~ m/^(\S+)/;
151 - if ($vollbl =~ /^\s/) {$vollbl = 'nolabel';}
152 - chomp $vollbl;
153 - push @usbdisks, $vollbl;
154 + if ( ${$valid}[0] ) {
155 + foreach ( @{$valid} ) {
156 + push @usbdisks, $devices->label($_);
157 }
158 }
159 - unless ($usbdisks[0]){
160 + else
161 + {
162 push @usbdisks, $fm->localise('ERR_NO_USB_DISK');
163 $error='nousb';
164 }
165 + $devices->destroy;
166 }
167 if ( $VFSType eq 'mnt' )
168 {
169 @@ -1509,9 +1507,9 @@
170 return;
171 }
172
173 - #--------------------------------------------------
174 - # Untaint parameters and check for validity
175 - #--------------------------------------------------
176 + #--------------------------------------------------
177 + # Untaint parameters and check for validity
178 + #--------------------------------------------------
179
180 my $VFSType = $q->param ('VFSType');
181 if ( $VFSType eq 'nousb')
182 @@ -3007,7 +3005,7 @@
183 my $dumpsize = 0;
184
185 open(DF, "-|")
186 - or exec '/bin/df', '-P', '-t', 'ext3', '-t', 'ext4';
187 + or exec '/bin/df', '-P', '-t', 'ext3', '-t', 'ext4', '-t', 'xfs';
188
189 while (<DF>)
190 {
191 @@ -3034,7 +3032,7 @@
192 my $halffree = 0;
193
194 open(DF, "-|")
195 - or exec '/bin/df', '-P', '-t', 'ext3', '-t', 'ext4', '/tmp';
196 + or exec '/bin/df', '-P', '-t', 'ext3', '-t', 'ext4', '-t', 'xfs', '/tmp';
197
198 while (<DF>)
199 {
200 @@ -3106,30 +3104,21 @@
201 elsif ($VFSType eq 'usb')
202 {
203 my $device = "";
204 - my $blkdev = "";
205 my $vollbl = "";
206 - foreach my $udi (qx(hal-find-by-property --key volume.fsusage --string filesystem)) {
207 - $udi =~ m/^(\S+)/;
208 - my $is_mounted = qx(hal-get-property --udi $1 --key volume.is_mounted);
209 -
210 - if ($is_mounted eq "false\n") {
211 - $blkdev = qx(hal-get-property --udi $1 --key block.device);
212 - if ($blkdev =~ m/^(\S+)/) {$blkdev = $1;}
213 - }
214 - if ($is_mounted eq "false\n") {
215 - $vollbl = qx(hal-get-property --udi $1 --key volume.label);
216 - $vollbl =~ m/^(\S+)/;
217 - if ($vollbl =~ /^\s/) {$vollbl = 'nolabel';}
218 - }
219 -
220 - chomp $vollbl;
221 - chomp $blkdev;
222 - $vollbl = "media/$vollbl";
223 - if ($vollbl eq $share) {
224 - $device = $blkdev;
225 - }
226 +
227 + my $devices = esmith::BlockDevices->new ('allowmount' => 'disabled');
228 + my ($valid, $invalid) = $devices->checkBackupDrives(0, 1);
229 +
230 + if ( ${$valid}[0] ) {
231 + foreach ( @{$valid} ) {
232 + $vollbl = $devices->label($_);
233 + if ( $share eq "media/$vollbl" ) {
234 + $device = "/dev/$_";
235 + }
236 + }
237 }
238 - return ( qx(/bin/mount $device "/$share" 2>&1) );
239 + $devices->destroy;
240 + return ( qx (mount $device /$share 2>&1) );
241 }
242 else
243 {
244 @@ -3142,17 +3131,9 @@
245 # check if $mountdir is mounted
246 my $mountdir = shift;
247 $|=1; # Auto-flush
248 -
249 - # copy STDOUT to another filehandle
250 - open (my $STDOLD, '>&', STDOUT);
251 -
252 - open(STDOUT, ">/dev/null");
253 - if ( open(MOUNTDIR, "|-", "/bin/findmnt", $mountdir)){;}
254 -
255 - # restore STDOUT
256 - open (STDOUT, '>&', $STDOLD);
257 -
258 - return (!close(MOUNTDIR));
259 +
260 + my @res = qx( findmnt $mountdir );
261 + return ( !@res );
262 }
263
264 sub bmount
265 diff -urN e-smith-backup-2.6.0.old/root/usr/share/perl5/vendor_perl/esmith/BlockDevices.pm e-smith-backup-2.6.0/root/usr/share/perl5/vendor_perl/esmith/BlockDevices.pm
266 --- e-smith-backup-2.6.0.old/root/usr/share/perl5/vendor_perl/esmith/BlockDevices.pm 2021-01-30 20:13:44.702954873 +0000
267 +++ e-smith-backup-2.6.0/root/usr/share/perl5/vendor_perl/esmith/BlockDevices.pm 2021-01-30 20:16:39.613490616 +0000
268 @@ -200,7 +200,7 @@
269 # Return two arrays, valid drives, invalid drives
270 sub checkBackupDrives
271 {
272 - my ($self,$bsize) = @_;
273 + my ($self,$bsize,$removable) = @_;
274 my @valid = ();
275 my @invalid = ();
276 $self->scanBlocks; # scan all block devices
277 @@ -209,6 +209,7 @@
278 my $checks = 'UU RO FS'; # These checks are always valid
279 $checks .= ' MO' if ($allowmount eq 'enabled');
280 $checks .= ' SZ' if ($bsize); # Only run the size check when a valid size is given
281 + $checks .= ' RM' if ($removable); # Only run the removable check if asked
282
283 foreach my $drive (keys %{$hashref})
284 {
285 @@ -239,6 +240,10 @@
286 {
287 $hashref->{$drive}{REASON} .='MO ' if $self->mountpoint ($drive); last;
288 }
289 + if (/^RM/si) # Non-removable
290 + {
291 + $hashref->{$drive}{REASON} .='RM ' unless $self->removable ($drive); last;
292 + }
293 if (/^SZ/si) # filesystem size, this includes mounting to check free space
294 {
295 $hashref->{$drive}{REASON} .='SZ ' if $self->checkBackupDriveSize ($drive, $bsize);
296 @@ -360,13 +365,20 @@
297 return ($hashref->{$kname}{MODEL});
298 }
299
300 +sub removable
301 +{
302 + my ($self,$kname) = @_;
303 + my $hashref = $self->{_blox};
304 + return ($hashref->{$kname}{RM}) ? 1 : $EMPTY;
305 +}
306 +
307 # Given the KNAME return the label
308 # returns 'no label' if none found
309 sub label
310 {
311 my ($self,$kname) = @_;
312 my $hashref = $self->{_blox};
313 - return ($hashref->{$kname}{LABEL}) || gettext('no label');
314 + return ($hashref->{$kname}{LABEL}) || gettext('nolabel');
315 }
316
317 sub size

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed