Difference between revisions of "Transfer user accounts from Another FTP Server"
From FileZilla Wiki
Jump to navigationJump to search (added code tag) |
|||
(36 intermediate revisions by 19 users not shown) | |||
Line 1: | Line 1: | ||
− | This is a | + | 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 FileZilla Server account file "[[FileZilla Server.xml]]". |
− | Sorry I | + | Sorry I can't find how to write code properly in this Wiki :s |
− | + | ||
− | < | + | <code> |
− | #!C:\Perl\bin -w | + | #!C:\Perl\bin -w |
− | use Digest::MD5 qw(md5_hex); | + | use Digest::MD5 qw(md5_hex); |
− | |||
− | sub copyrights | + | 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 !"; | + | open FICHIER,"< users.ini" or die "File can t be read !"; |
− | $motiflogin = 'Login='; | + | $motiflogin = 'Login='; |
− | $motifpass = 'Pass='; | + | $motifpass = 'Pass='; |
− | $motifdir='Dir'; | + | $motifdir='Dir'; |
− | $motifattr='Attr'; | + | $motifattr='Attr'; |
− | $debut='<FileZillaServer> | + | $debut='<FileZillaServer> |
− | <Settings> | + | <Settings> |
− | <Item name="Admin port" type="numeric">14147</Item> | + | <Item name="Admin port" type="numeric">14147</Item> |
− | </Settings> | + | </Settings> |
− | <Groups/> | + | <Groups/> |
− | <Users> | + | <Users> |
− | '; | + | '; |
− | $paramdivers = '<Option Name="Group"/> | + | $paramdivers = '<Option Name="Group"></Option> |
− | <Option Name="Bypass server userlimit">0</Option> | + | <Option Name="Bypass server userlimit">0</Option> |
− | <Option Name="User Limit">0</Option> | + | <Option Name="User Limit">0</Option> |
− | <Option Name="IP Limit">0</Option> | + | <Option Name="IP Limit">0</Option> |
− | <Option Name="Enabled">1</Option> | + | <Option Name="Enabled">1</Option> |
− | <Option Name="Comments"/> | + | <Option Name="Comments"></Option> |
− | <Option Name="ForceSsl">0</Option> | + | <Option Name="ForceSsl">0</Option> |
− | <IpFilter> | + | <IpFilter> |
− | <Disallowed/> | + | <Disallowed /> |
− | <Allowed/> | + | <Allowed /> |
− | </IpFilter> | + | </IpFilter> |
− | <Permissions>'; | + | <Permissions>'; |
− | $userfin='</Permissions> | + | $userfin= '</Permissions> |
− | <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0"> | + | <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0"> |
− | <Download/> | + | <Download /> |
− | <Upload/> | + | <Upload /> |
− | </SpeedLimits> | + | </SpeedLimits> |
− | </User>'; | + | </User>'; |
− | $fin = '</Users> | + | $fin = '</Users> |
− | </FileZillaServer>'; | + | </FileZillaServer>'; |
− | $i=0; | + | $i=0; |
− | $fz=$debut; | + | $fz=$debut; |
− | while ($ligne = <FICHIER>){ | + | while ($ligne = <FICHIER>){ |
− | + | if ($ligne =~ /^$motiflogin[\.\w-]*/i) { | |
− | + | @tab=split(/=/,$&); | |
− | + | $fz.= "<User Name=\"".$tab[1]."\">\n"; | |
− | + | $i++; | |
− | + | $h=1; | |
− | + | } | |
elsif ($ligne =~ /^$motifpass[\w-]*/i) { | 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; | + | $fz.= $userfin."\n"; |
− | close FICHIER; | + | $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'; | |
− | + | ||
− | + | </code | |
− | |||
− | print " ".$i.' account created'; | ||
− | </ | ||
+ | ---- | ||
JeF | JeF | ||
geek AT jfmcorp DOT org | geek AT jfmcorp DOT org |
Latest revision as of 16:08, 14 July 2019
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 FileZilla Server account file "FileZilla Server.xml".
Sorry I can't find how to write code properly in this Wiki :s
#!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';
</code
JeF
geek AT jfmcorp DOT org