|
|
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".
| | Finding this post has sloevd my problem |
|
| |
| 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
| |