|
|
Line 1: |
Line 1: |
− | This is a perl script that read G6FTPD user accounts file users.ini, extract some information (login, password, folder and rights) and write it in FilleZilla Server account file "FileZilla Server.xml".
| + | bkh9oo9 il plasma walla awal ma garit ils3r 7asbali bl US Dolar n9damt KD ! shda3wa 7adda mala da3i !![]omarker Reply:November 8th, 2011 at 4:08 pmfe nas ymkn ybon haklbr !7ag dwanya kbeera ! ;p[] |
− |
| |
− | Sorry I can't find how write code properly in this Wiki :s
| |
− | | |
− | ==Code==
| |
− | #!C:\Perl\bin -w
| |
− | use Digest::MD5 qw(md5_hex);
| |
− |
| |
− | sub copyrights
| |
− | {
| |
− | my (@perm)=@_;
| |
− | my $rights="";
| |
− | if ($perm[0] eq "-")
| |
− | {$rights.= '<Option Name="FileRead">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="FileRead">1</Option>'."\n"; }
| |
− | if ($perm[1] eq "-")
| |
− | {$rights.= '<Option Name="FileWrite">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="FileWrite">1</Option>'."\n"; }
| |
− | if ($perm[2] eq "-")
| |
− | {$rights.= '<Option Name="FileDelete">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="FileDelete">1</Option>'."\n"; }
| |
− | if ($perm[3] eq "-")
| |
− | {$rights.= '<Option Name="FileAppend">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="Fileappend">1</Option>'."\n"; }
| |
− | if ($perm[4] eq "-")
| |
− | {$rights.= '<Option Name="DirCreate">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="DirCreate">1</Option>'."\n"; }
| |
− | if ($perm[5] eq "-")
| |
− | {$rights.= '<Option Name="DirList">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="DirList">1</Option>'."\n"; }
| |
− | if ($perm[6] eq "-")
| |
− | {$rights.= '<Option Name="DirDelete">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="DirDelete">1</Option>'."\n"; }
| |
− | if ($perm[7] eq "-")
| |
− | {$rights.= '<Option Name="DirSubdirs">0</Option>'."\n"; }
| |
− | else
| |
− | {$rights.= '<Option Name="DirSubdirs">1</Option>'."\n"; }
| |
− | return $rights;
| |
− | }
| |
− |
| |
− | open FICHIER,"< users.ini" or die "File can t be read !";
| |
− |
| |
− | $motiflogin = 'Login=';
| |
− | $motifpass = 'Pass=';
| |
− | $motifdir='Dir';
| |
− | $motifattr='Attr';
| |
− |
| |
− | $debut='<FileZillaServer>
| |
− | <Settings>
| |
− | <Item name="Admin port" type="numeric">14147</Item>
| |
− | </Settings>
| |
− | <Groups/>
| |
− | <Users>
| |
− | ';
| |
− |
| |
− |
| |
− | $paramdivers = '<Option Name="Group"/>
| |
− | <Option Name="Bypass server userlimit">0</Option>
| |
− | <Option Name="User Limit">0</Option>
| |
− | <Option Name="IP Limit">0</Option>
| |
− | <Option Name="Enabled">1</Option>
| |
− | <Option Name="Comments"/>
| |
− | <Option Name="ForceSsl">0</Option>
| |
− | <IpFilter>
| |
− | <Disallowed/>
| |
− | <Allowed/>
| |
− | </IpFilter>
| |
− | <Permissions>';
| |
− |
| |
− |
| |
− | $userfin='</Permissions>
| |
− | <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
| |
− | <Download/>
| |
− | <Upload/>
| |
− | </SpeedLimits>
| |
− | </User>';
| |
− |
| |
− | $fin = '</Users>
| |
− | </FileZillaServer>';
| |
− |
| |
− | $i=0;
| |
− | $fz=$debut;
| |
− | while ($ligne = <FICHIER>){
| |
− |
| |
− | if ($ligne =~ /^$motiflogin[\.\w-]*/i) {
| |
− | @tab=split(/=/,$&);
| |
− | $fz.= "<User Name=\"".$tab[1]."\">\n";
| |
− | $i++;
| |
− | $h=1;
| |
− | }
| |
− | elsif ($ligne =~ /^$motifpass[\w-]*/i) {
| |
− | @tab=split(/=/,$&);
| |
− | $fz.= "<Option Name=\"Pass\">".md5_hex($tab[1])."</Option>\n";
| |
− | $fz.= $paramdivers."\n";
| |
− | }
| |
− | elsif ($ligne =~ /^$motifdir[\w\ \.\\:=]*/i) {
| |
− | @tab=split(/=/,$&);
| |
− | $fz.= "<Permission Dir=\"".$tab[1]."\">\n";
| |
− | }
| |
− | elsif ($ligne =~ /^$motifattr[-\w=]*/i) {
| |
− | @tab=split(/=/,$&);
| |
− | @perm=split(//,$tab[1]);
| |
− | $fz.= copyrights(@perm);
| |
− | $fz.= '<Option Name="IsHome">'.$h.'</Option>'."\n";
| |
− | $fz.= '<Option Name="AutoCreate">0</Option>'."\n".'</Permission>'."\n";
| |
− | $h=0;
| |
− | }
| |
− | elsif ($ligne =~ /^\n/i) {
| |
− | $fz.= $userfin."\n";
| |
− | }
| |
− | }
| |
− | $fz.= $fin;
| |
− | close FICHIER;
| |
− |
| |
− | open WRITER,"> FileZilla Server.xml" or die "File can't be written !\n";
| |
− | print WRITER $fz;
| |
− | close WRITER;
| |
− |
| |
− | print " ".$i.' account created';
| |
− | ----
| |
− | JeF
| |
− | | |
− | geek AT jfmcorp DOT org
| |