Help - Zoeken - Gebruikers - Kalender
Volledige versie: Hulp gevraagd: drakloop PERL script aanpassen
MandrivaClub.NL > Forum > Documentatie en Programmeren
kris
Zou me iemand kunnen helpen het drakloop script van MDV geschikt te maken voor MCNLive?

Hier topic in het Engels:
http://forum.mandrivaclub.com/viewtopic.ph...7091d5fe5f93da6

En hier het probleem:


My questions. Would there be an easier way to create an encrypted directory/container on an external drive, for example a USB stick ?
drakloop only allows to create one inside the /home/user dir.
I would like to add drakloop to MCNLive where users could use drakloop for creating the dir on the flash drive. On a live system the
/home dir is in RAM and lost after a reboot/shutdown. And the workaraound is not an option for unexperienced just starting Linux user.

I guess I would need to change the script.

The perl script /usr/bin/drakloop defines:

my $encdir = $ENV{HOME} . "/$dir";

and:

my $CFGFILE = $ENV{HOME} . "/.mountlooprc";

and:

$dir = $ENV{HOME} . "/$dir";


What would I need to change to let the user just enter in the text field, for example: /mnt/removable/secret or /mnt/sda1/secret or wherever they would like their new 'secret' dir. What about this leading ' . ' What does it do?


# urpmi mountloop

Het script is dan : /usr/bin/drakloop

--chris
Alain
Welke variabelen geef je mee aan het script?
kris
Wow, een antwoord :-)

Maar ik begrijp de vraag niet.

De gebruiker wordt gevraagd een directory name te typen, bv je tikt in:

secure

Het script maakt daarvan: /home/<user>/secure

Wat je ook geeft, steeds maakt het script de map onder /home/<user>/

$dir = $ENV{HOME} . "/$dir";


Wat ik graag wil is dat het mogelijk is, bv:

/mnt/removable/secure

op een usb stick aan te maken. Als ik dat nu probeer, wordt dat automatisch:

/home/<user>/mnt/removable/secure

Voor mcnlive heb ik niks aan een map in /home ...


Alain
$ENV{HOME} is een omgevings variabele in BASH als ik me niet vergis. Je zult dus op dezelfde manier een als $dir een variabele moeten maken die gevuld wordt door de gebruiker of keihard je eigen directory moeten definieren.

Ik zou beginnen door $ENV{HOME} in de relevante regels te vervangen door een variabele en deze eerst vullen met $ENV{HOME} Vervolgens kun je kijken of het nog werkt als je deze variabele vult met je eigen waarde. Als je wilt dat je gebruiker het in kan geven zul je iets nodig hebben als scanf() (in C). Als je zover bent wil ik wel eens kijken hoe dat in PERL moet. ;).gif
kris
Ga ik volgende week proberen.
Mijn hoofdprobleem is dat ik niet weet wat dit

spatie punt spatie:

$dir = $ENV{HOME} . "/$dir";


doet.

Hier trouwens hoe het GUI eruit ziet en wat erachter is:

http://www.aerospacesoftware.com/cryptoloop-howto.html

Het klinkt ingewikkeld, maar als je het gewoon doet is het heel makkelijk. Een van de goed werkende maar onbekende drakxtools, om een beveiligde container/bestand te maken die een map bevat zonder dat je een nieuwe partitie moet aanmaken. En men heeft de volledige controle als gebruiker. Dat zou prima zijn op MCNLive, anders dan knoppix, waar alles in de achtergrond wordt gemaakt, en op command line etc.





dansmug
Dat punt staat voor een concatenatie: het aan mekaar kleven van twee strings.
Dus als
$dir = test
$ENV{HOME} = /home/chris
dan wordt
$ENV{HOME} . "/$dir" = /home/chris/test

Inleiding tot Perl
kris
ahaa :-) thx Steffen!

Nou, dit wordt een kleine uitdaging voor mij.
Blijkt niet zo makkelijk het programmatje zomaar aan te passen, vanwegen het config bestandje
.mountlooprc en de hele opzet van drakloop, waar geen menu is om mountlooprc te vinden/te zoeken.


Dit wordt iets voor de vakantie. Kan nog enkele maanden duren icon_cry.gif
Alain
Ik zit hier voorlopig nog in Oekraine en heb hier geen linux bakje, maar je mag me best eens een mailtje sturen (@home.nl adres) met de code en de exacte wens. Dan kan ik wel even voor je kijken, want het lijkt me niet zo heel lastig voor een programmeur. ;).gif
kris
Oekraine .....

Wat jammer dat je geen MCNLive CD erbij hebt. Een: urpmi mountloop, en alles zou er zijn.

Ik kan het helaas heel slecht uitleggen, daarom hier met screenshots.

drakloop is perl gui frontend voor de commandos mountloop, umountloop, encsetup.
(en dd en modprobe cryptoloop aes, losetup )

Alles hangt aan een config bestand .mountlooprc, en het pad naar dit bestand is soort of hardcoded:

my $CFGFILE = $ENV{HOME} . "/.mountlooprc";


Zelf als ik de env home varibale eruit haal, er ontbreekt een variable om dit bestand te vinden.

drakloop heeft vier functies:
1. een beveiligde map/container creeren
2. een bestaande map deleten
3. een bestaande map mounten
4. een bestaande map umounten

Het config bestand mountlooprc wordt aangemaakt op het moment dat je een container maakt, en in /home/user geplaatst. Als je drakloop start en er is een container wordt ie getoond en je kunt hem markeren, omdat de info over deze container in het config bestand te vinden is:

IPB Image

Voor MCNLive hebben wij een menu nodig waar wij kunnen zeggen waar het config bestand te saven is en waar het te vinden is. Als je namelijk een livecd start is de home dir altijd vers and zonder config, en de gebruiker heeft millioen mogelijkheden waar hij zon container wil, hij wil het niet in /home.

Hier een mockup van mij, waar ik een menu heb toegevoegd, (wat nog niet werkt), "search":

IPB Image

Als je het perl script bekijkt, wordt het duidelijk. Er ontbreekt gewoon een hele functionaliteit, dus een variable of zo.

Ik ga je het script emailen. Is heel klein.
Alain
Ik heb even gekeken en je kunt bijvoorbeeld simpel beginnen met een parameter mee te geven aan het script. Dat wordt iets als:

# Set directory

$usage='drakloop <directory to use>'

die "Usage: $usage\n" if $ARGC != 1;
$my_dir = $ARGV[0];


en dan vervang je $ENV{HOME} door $my_dir

Je kunt er later een filedialog aanhangen. Dit moet waarschijnlijk met Gtk2::FileSelection Dit wordt iets als:

# Get directory

my $dirselection = Gtk2::FileSelection->new('Select directoy');
$dirselection->dir_list;
$my_dir = $dirselection->filename;


Zoiets heb ik gedachte, maar kan niets uitproberen hier ...
kris
Ja, dat zou een optie zijn. Helaas moet dan de gebruiker eerst een terminal openen, en een commando typen, bv drakloop --/mnt/removable/secret

En hij kan drakloop niet meer via het menu starten.
Is het mogelijk een (grafisch) wrapper te maken, die van te voren wordt uitgevoerd, waar de gebruiker alleen naar een dir wordt gevraagd, en daarna wordt drakloop met de dir als parameter gestart?

Sorry, maar ik heb steeds de gebruiker in gedachte die nog nooit Linux heeft gedraaid.
(Een linux gebruiker heeft het grafische drakloop helemaal niet nodig, hij kan mountloop etc vanaf commandline met dir gebruiken ...)
Alain
Dat zou met de tweede optie dus kunnen, maar ik kan hier niets testen. Zodra ik weer achter mijn vertrouwde linux bakje zit zal ik eens wat uitproberen (wordt hopelijk begin juli).
kris
Dat zou met de tweede optie dus kunnen, maar ik kan hier niets testen. Zodra ik weer achter mijn vertrouwde linux bakje zit zal ik eens wat uitproberen (wordt hopelijk begin juli).


smile.gif
Dit is een "Print" versie van onze forums. Om de volledige versie met meer informatie, afbeeldingen en opmaakte bekijken, a.u.b. klik hier.