Transfer user accounts from Another FTP Server: Difference between revisions
m (Reverted edits by 83.206.115.61 (talk) to last revision by CodeSquid) |
(→Code) |
||
Line 47: | Line 47: | ||
open FICHIER,"< users.ini" or die "File can t be read !"; | 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> | |||
<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> | |||
<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.= $userfin."\n"; | |||
$fz.= $fin; | |||
close FICHIER; | |||
open WRITER,"> FileZilla Server.xml" or die "File can't be written !\n"; | open WRITER,"> FileZilla Server.xml" or die "File can't be written !\n"; |
Revision as of 17:11, 22 January 2013
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".
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>
<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>
<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.= $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