--- smeserver-usbdisksmanager-1.2/root/etc/e-smith/web/functions/usbdisks.old 2015-09-25 14:55:33.000000000 -0400
+++ smeserver-usbdisksmanager-1.2/root/etc/e-smith/web/functions/usbdisks 2017-03-24 17:39:23.000000000 -0400
@@ -38,6 +38,23 @@
sub modifyConfig ($$);
sub GeneralMenu ($);
sub aide($);
+sub USBModifyConfig;
+sub validUSBModifyConfig;
+sub USBAddDisk;
+sub validUSBAddDisk;
+sub USBModifyDisk;
+sub validUSBModifyDisk;
+sub USBMountDisk;
+sub USBUnMountDisk;
+sub USBMounttoDisk;
+sub USBUnMounttoDisk;
+sub disable_entry;
+sub enable_entry;
+sub disable_mediaentry;
+sub enable_mediaentry;
+sub delete_entry;
+sub UUIDgenerate;
+
@@ -117,7 +134,6 @@
my $tr_save_button = $fm->localise('tr_save_button');
my $tr_rapport = $fm->localise('tr_rapport');
my $tr_with = $fm->localise('tr_with');
-my $tr_removed = $fm->localise('tr_removed');
my $tr_disabled = $fm->localise('tr_disabled');
my $tr_enabled = $fm->localise('tr_enabled');
@@ -338,36 +354,49 @@
##
sub subdevices ($)
{
- my %mounted=`mount`;
+ #my %mounted=`mount`;
my $mounted=`mount`;
- my %fstab= `cat /etc/fstab`;
+ my @fstab= `cat /etc/fstab`;
my @blkid= `/sbin/blkid -c /dev/null `;
+ my @swap= `cat /proc/swaps|grep '/' |cut -f1`; warn $swap[0];
+ my @lvscan = `/sbin/lvscan`;
my %disques;
my $i = 0;
#my %hashes = (clef =>"valeur", clef2 => "valeur2", [%tablo], %table);
#verif usb
- #udevinfo -a -p /sys/block/sda
+ #for SME8: udevinfo -a -p /sys/block/sda
+ #for SME9: udevadm info -a -p /sys/block/sda
for (@blkid)
{
# chemin dev
- $disques{$i}{dev}= $_ =~ /^(\/dev\/[a-z\-]{2,3}[0-9]{1}):/ ? $1 : "$tr_unknown";
- my $device = $disques{$i}{dev};
+ #$disques{$i}{dev}= $_ =~ /^(\/dev\/[a-z\-]{2,3}[0-9]{1}):/ ? $1 : "$tr_unknown";
+ $disques{$i}{dev}= $_ =~ /^(\/dev\/[a-z0-9\-_\/]{2,}):/ ? $1 : "$tr_unknown";
+ my $oridevice = $disques{$i}{dev};
+ # for lvm /dev/mapper/main-root; change to /dev/main/root
+ $disques{$i}{dev}= $disques{$i}{dev} =~ /^\/dev\/mapper\/([a-z0-9_]{2,})-([a-z0-9_]{2,})$/ ? "/dev/$1/$2" : $disques{$i}{dev};
+ my $device = $disques{$i}{dev};
+ my $good = "";
+ $good = `/bin/readlink -f $device` if $device ne $oridevice;
# nom disque sda (not partition but hard drive)
- $disques{$i}{name}= $_ =~ /^\/dev\/([a-z\-]{2,3})[0-9]{1}:/ ? $1 : "$tr_unknown";
+ $disques{$i}{name}= $_ =~ /^\/dev\/([a-z\-]{2,})[0-9]*:/ ? $1 : "$tr_unknown";
+ #$disques{$i}{name}= $_ =~ /^\/dev\/([a-z0-9\-_\/]{2,}):/ ? $1 : "$tr_unknown";
# UUID
$disques{$i}{UUID}= $_ =~ /UUID="([0-9a-zA-Z\-]*)"/ ? $1 : "$tr_unknown";
# label for partition
$disques{$i}{LABEL}= $_ =~ /LABEL="([a-zA-Z0-9_\-]*)"/ ? $1 : "$tr_unknown";
# mouted or not
- $disques{$i}{mounted}= $mounted =~ /$device on (\/media\/[a-zA-Z0-9_]+) / ? $1 : "no" ;
+ $disques{$i}{mounted}= $mounted =~ /$device on ([\/\-a-zA-Z0-9_]+) / ? $1 : "no" ;
+ $disques{$i}{mounted}= $mounted =~ /$oridevice on ([\/\-a-zA-Z0-9_]+) / ? $1 : "no" if $oridevice ne $device;
+ # the one under does not work with regex , do not know why : map (/$good/ , @swap) ,maybe the / in the device path
+ $disques{$i}{mounted}= grep($good , @swap) ? 'swap' : "no" if $device =~ /swap/;
# is it in fstab
- $disques{$i}{fstab}= map ( /$device/, %fstab)? "yes" : "no";
+ $disques{$i}{fstab}= map ( /$device/, @fstab)? "yes" : "no";
my $UUID= $disques{$i}{UUID};
my $label= $disques{$i}{LABEL};
if ( ($disques{$i}{fstab} eq "no") && (! $UUID eq "") )
- {$disques{$i}{fstab}= map ( /$UUID/, %fstab)? "yes" : "no";}
+ {$disques{$i}{fstab}= map ( /$UUID/, @fstab)? "yes" : "no";}
if ( ($disques{$i}{fstab} eq "no") && (! $label eq "") )
- {$disques{$i}{fstab}= map ( /$label/, %fstab)? "yes" : "no";}
+ {$disques{$i}{fstab}= map ( /$label/, @fstab)? "yes" : "no";}
# file system type ext2 ext3 swap vfat ...
if ( $_ =~ / SEC_TYPE="([a-zA-Z0-9_\-]*)"/ )
{$disques{$i}{FSTYPE}= $_ =~ / SEC_TYPE="([a-zA-Z0-9_\-]*)"/ ? $1 : "$tr_unknown";}
@@ -376,9 +405,19 @@
# device type : usb ide sata/scsi
$disques{$i}{DEVTYPE}= "$tr_unknown";
my $name = $disques{$i}{name};
- # my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ;
+ # for SME8: my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ;
+ # for SME9: my $udevinfo = `/sbin/udevadm info -a -p /sys/block/$name` ;
# small change in udevinfo between rhel 4 and 5
- my $udevinfo = `/usr/bin/udevinfo -p /sys/block/$name -q env|grep "ID_BUS="|sed -e 's/^ID_//g'` ;
+ $disques{$i}{DEVTYPE}= "";
+ #LVM
+ $disques{$i}{DEVTYPE}= map ( /$device/, @lvscan)? "LVM" : "";
+ #RAID
+ my $infobis=`cat /proc/mdstat |grep -o md[0-9]*`;
+ $disques{$i}{DEVTYPE}= "RAID" if ($infobis =~ /$name/);
+ # real device
+ if ( $disques{$i}{DEVTYPE} eq "" ) {
+
+ my $udevinfo = `/sbin/udevadm info -p /sys/block/$name -q env |grep "ID_BUS="|sed -e 's/^ID_//g'` ;
if ($udevinfo =~ /BUS=ide/)
{
$disques{$i}{DEVTYPE}= "IDE";
@@ -411,8 +450,9 @@
$disques{$i}{DEVTYPE}= $udevinfo;
}
}
+ }
$i++;
- }
+ }
return %disques;
}
@@ -593,7 +633,7 @@
my $blkid= `/sbin/blkid -t UUID=$pud_UUID`;
my $name= $blkid =~ /^\/dev\/([a-z\-]{2,3})[0-9]{1}:/ ? $1 : "$tr_unknown";
my $type;
- my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ;
+ my $udevinfo = `/sbin/udevadm info -a -p /sys/block/$name` ;
if ($udevinfo =~ /BUS="ide"/)
{
$type= "IDE";
@@ -704,7 +744,7 @@
my $blkid= `/sbin/blkid -t UUID=$pud_UUID`;
my $name= $blkid =~ /^\/dev\/([a-z\-]{2,3})[0-9]{1}:/ ? $1 : "unknown";
my $type;
- my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ;
+ my $udevinfo = `/sbin/udevadm info -a -p /sys/block/$name` ;
if ($udevinfo =~ /BUS="ide"/)
{
$type= "IDE";
@@ -794,7 +834,7 @@
#destination
my $dest= $mounted =~ /$dev on (\/media\/[a-zA-Z0-9_]+) / ? $1 : "unknown" ;
my $mount=`/bin/umount -f $dest`;
- my $mounted= `/bin/mount`=~ /$dev on (\/media\/[a-zA-Z0-9_]+)/ ? "$tr_failure" : "$tr_success";
+ $mounted= `/bin/mount`=~ /$dev on (\/media\/[a-zA-Z0-9_]+)/ ? "$tr_failure" : "$tr_success";
showInitial ($q, "$tr_rapport umount :
$mounted
$dev : $dest: $mount
");
}