#!/bin/bash
# GPL v3 License
#################### headers_visible="false" exported_column="1" rules_hint="true"
. /etc/rc.d/PUPSTATE
. /etc/rc.d/BOOTCONFIG
#Удалим пустые точки монтирования
ls -A /mnt | grep "^[.]" > /tmp/removedir.txt
for n in `cat /tmp/removedir.txt`
do
rmdir /mnt/$n
done
#Получаем путь
DISK="`echo -n "$PUPSFS" | cut -f 1 -d ','`"
FILESYS="`echo -n "$PUPSFS" | cut -f 2 -d ','`"
MNT="`grep -i \"$DISK\" /etc/mtab | cut -f 2 -d " "`"
if [ "$FILESYS" = "iso9660" ];then # если загружаемся с CD
 if [ ! -d /mnt/home ]; then # если это чистая загрузка
 mount -t $FILESYS /dev/$DISK /mnt/cdrom
 MNT="/mnt/cdrom/"
 fi
else
gxmessage -encoding UTF-8  -bg "#ffc0c0" -center -name "load_sfs" -title "Поиск sfs-модулуй" -buttons "CDROM:2,$DISK:3" "
    Выберите, откуда будут подключаться SFS-модули.
    Примечание:
    С CDROM подключить SFS-модуль постоянно нельзя!
    "
 if [ $? = 2 ]; then
 mount -t iso9660 /dev/cdrom /mnt/cdrom 2>/dev/null
 MNT="/mnt/cdrom/"
 fi 
fi
echo "MNT=$MNT"
#Получаем список
ls $MNT | grep "\.sfs$" | sed -e '/^pup/d;/^zdrv/d' > /tmp/sfss
ls -A /mnt | grep "\.." | sed -e 's/^.//;s/$/.sfs/' >> /tmp/sfss
cat /tmp/sfss | sort | uniq -u > /tmp/SFSs
#Получаем список постоянно подключенных sfs
echo "$EXTRASFSLIST" | sed -e 's/ /\n/g' > /tmp/extrasfs
#Получаем информацию о точках подключения модулей
#Первые две строки определяют количество loop, в конкретном дистрибутиве можно заменить числом.
num_loops=`ls -al /dev/loop* | wc -l` 
current_loops=`expr $num_loops - 1`
echo "" > /tmp/LOOPs
for n in `seq 3 $current_loops`
do
 losetup-FULL /dev/loop"$n" >> /tmp/LOOPs
done 
 
export list_sfs='
<window title="Горячее подключение-отключение SFS" window-position="1" icon-name="gtk-cdrom" width="600">
<vbox>
<text><label>Работа с SFS файлами</label></text>
<hbox>
<vbox>
  <tree exported_column="0" rules_hint="true">
   <label>Подключить выбранный SFS файл?</label>
   <height>350</height><width>300</width>
   <input>cat /tmp/SFSs</input>
	<variable>ADD</variable>
   <action signal="button-release-event">exit</action>
  </tree>
 <button><label>Подключить постоянно</label>
 <action>echo $ADD > /tmp/BOOTCONFIG</action></button>
</vbox>
<vbox>
  <tree exported_column="0" rules_hint="true">
   <label>Отключить выбранный SFS файл?</label>
   <height>200</height><width>300</width>
   <input>ls -A /mnt | grep "\.." | sed -e "s/^.//;s/$/.sfs/"</input>
	<variable>REM</variable>
   <action signal="button-release-event">exit</action>
  </tree>
  <tree exported_column="0" rules_hint="true">
   <label>Отключить постоянный SFS файл?</label>
   <height>150</height><width>300</width>
   <input>cat /tmp/extrasfs</input>
	<variable>CREM</variable>
   <action signal="button-release-event">exit</action>
  </tree>
<hbox>
  <button yes></button>	
  <button no></button>
  <button><label>Справка</label><action>basichtmlviewer /usr/share/doc/SFS.htm$@</action></button>
</hbox>
</vbox>
</hbox>
</vbox>
</window>'
gtkdialog3 --program=list_sfs --center > /tmp/sfslog

. /tmp/sfslog
if [ "$EXIT" = "Yes" ]; then
 if [ "$ADD" != "" ]; then
 load_sfs $MNT/$ADD
  if [ "`cat /tmp/BOOTCONFIG`" = "$ADD" ]; then
  cat /etc/rc.d/BOOTCONFIG | grep -v EXTRASFSLIST > /tmp/BOOTCONFIG
  echo "EXTRASFSLIST='$EXTRASFSLIST $ADD'" >> /tmp/BOOTCONFIG
   if [ ! -d /mnt/home ]; then
   xmessage "Для постоянного подключения sfs-модуля
сначала создайте файл сохранения настроек,
модуль подключен только на эту сессию."
   else   
  mv /etc/rc.d/BOOTCONFIG /etc/rc.d/BOOTCONFIG~ #На время отладки скрипта, потом можно удалить
  mv /tmp/BOOTCONFIG /etc/rc.d/BOOTCONFIG
   fi
  fi
 fi
 if [ "$REM" != "" ]; then
 unload_sfs $MNT/$REM
 fi
 if [ "$CREM" != "" ]; then
 cat /etc/rc.d/BOOTCONFIG | grep -v EXTRASFSLIST > /tmp/BOOTCONFIG
 EXTRASFSLIST=`echo "$EXTRASFSLIST" | sed -e "s/$CREM//"`
 echo "EXTRASFSLIST='$EXTRASFSLIST'" >> /tmp/BOOTCONFIG
 numloop=`cat /tmp/LOOPs | grep $CREM | cut -f 1 -d ':' | sed -e 's/\/dev\/loop//'`
 busybox mount -t aufs -o remount,del:/initrd/pup_ro"$numloop"/ aufs / #v-34-alfa
 #Для Jeans - mount -o remount,del:/initrd/pup_ro"$numloop"/ /
 umount /initrd/pup_ro"$numloop"/
 mv /etc/rc.d/BOOTCONFIG /etc/rc.d/BOOTCONFIG~ #На время отладки скрипта, потом можно удалить
  mv /tmp/BOOTCONFIG /etc/rc.d/BOOTCONFIG
 fi
exit
fi

[ "$EXIT" = "No" ] && umount /mnt/cdrom | exit
[ "$EXIT" = "abort" ] && umount /mnt/cdrom | exit
