Difference between revisions of "Transfer user accounts from Another FTP Server"

From FileZilla Wiki
Jump to navigationJump to search
(New page: This is a perl script that read G6FTPD user accounts file users.ini, extract some informations (login, password, folder and rights) and write it in FilleZilla Server account file "FileZill...)
 
(added code tag)
 
(37 intermediate revisions by 20 users not shown)
Line 1: Line 1:
This is a perl script that read G6FTPD user accounts file users.ini, extract some informations (login, password, folder and rights) and write it in FilleZilla Server account file "FileZilla Server.xml".
+
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 don't find how write properly code in this Wiki :s
+
Sorry I can't find how to write code properly in this Wiki :s
 +
 
 +
<code>
 +
#!C:\Perl\bin -w
 +
use Digest::MD5 qw(md5_hex);
 
   
 
   
<nowiki>
+
sub copyrights
#!C:\Perl\bin -w
+
{
use Digest::MD5 qw(md5_hex);
+
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 !";
 
   
 
   
sub copyrights
+
$motiflogin = 'Login=';
{
+
$motifpass = 'Pass=';
my (@perm)=@_;
+
$motifdir='Dir';
my $rights="";
+
$motifattr='Attr';
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 !";
+
$debut='<FileZillaServer>
 +
<Settings>
 +
<Item name="Admin port" type="numeric">14147</Item>
 +
</Settings>
 +
<Groups/>
 +
<Users>
 +
';
 
   
 
   
$motiflogin = 'Login=';
 
$motifpass = 'Pass=';
 
$motifdir='Dir';
 
$motifattr='Attr';
 
 
   
 
   
$debut='<FileZillaServer>
+
$paramdivers = '<Option Name="Group"></Option>
<Settings>
+
<Option Name="Bypass server userlimit">0</Option>
<Item name="Admin port" type="numeric">14147</Item>
+
<Option Name="User Limit">0</Option>
</Settings>
+
<Option Name="IP Limit">0</Option>
<Groups/>
+
<Option Name="Enabled">1</Option>
<Users>
+
<Option Name="Comments"></Option>
';
+
<Option Name="ForceSsl">0</Option>
 +
<IpFilter>
 +
<Disallowed />
 +
<Allowed />
 +
</IpFilter>
 +
<Permissions>';
 
   
 
   
 
   
 
   
$paramdivers = '<Option Name="Group"/>
+
$userfin= '</Permissions>
<Option Name="Bypass server userlimit">0</Option>
+
<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10"   ServerUlLimitBypass="0">
<Option Name="User Limit">0</Option>
+
<Download />
<Option Name="IP Limit">0</Option>
+
<Upload />
<Option Name="Enabled">1</Option>
+
</SpeedLimits>
<Option Name="Comments"/>
+
</User>';
<Option Name="ForceSsl">0</Option>
 
<IpFilter>
 
<Disallowed/>
 
<Allowed/>
 
</IpFilter>
 
<Permissions>';
 
 
   
 
   
 +
$fin = '</Users>
 +
</FileZillaServer>';
 
   
 
   
$userfin='</Permissions>
+
$i=0;
<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
+
$fz=$debut;
<Download/>
+
while ($ligne = <FICHIER>){
<Upload/>
 
</SpeedLimits>
 
</User>';
 
 
   
 
   
$fin = '</Users>
+
if ($ligne =~ /^$motiflogin[\.\w-]*/i) {
</FileZillaServer>';
+
@tab=split(/=/,$&);
+
$fz.= "<User Name=\"".$tab[1]."\">\n";
$i=0;
+
$i++;
$fz=$debut;
+
$h=1;
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(/=/,$&);
+
@tab=split(/=/,$&);
$fz.= "<Option Name=\"Pass\">".md5_hex($tab[1])."</Option>\n";
+
$fz.= "<Option Name=\"Pass\">".md5_hex($tab[1])."</Option>\n";
$fz.= $paramdivers."\n";
+
$fz.= $paramdivers."\n";
}
+
}
elsif ($ligne =~ /^$motifdir[\w\ \.\\:=]*/i) {
+
elsif ($ligne =~ /^$motifdir[\w\ \.\\:=]*/i) {
@tab=split(/=/,$&);
+
@tab=split(/=/,$&);
$fz.= "<Permission Dir=\"".$tab[1]."\">\n";
+
$fz.= "<Permission Dir=\"".$tab[1]."\">\n";
}
+
}
elsif ($ligne =~ /^$motifattr[-\w=]*/i) {
+
elsif ($ligne =~ /^$motifattr[-\w=]*/i) {
@tab=split(/=/,$&);
+
@tab=split(/=/,$&);
@perm=split(//,$tab[1]);
+
@perm=split(//,$tab[1]);
$fz.= copyrights(@perm);
+
$fz.= copyrights(@perm);
$fz.= '<Option Name="IsHome">'.$h.'</Option>'."\n";
+
$fz.= '<Option Name="IsHome">'.$h.'</Option>'."\n";
$fz.= '<Option Name="AutoCreate">0</Option>'."\n".'</Permission>'."\n";
+
$fz.= '<Option Name="AutoCreate">0</Option>'."\n".'</Permission>'."\n";
$h=0;
+
$h=0;
}
+
}
elsif ($ligne =~ /^\n/i) {
+
elsif ($ligne =~ /^\n/i) {
$fz.= $userfin."\n";
+
$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 write !\n";
+
 
print WRITER $fz;
+
  open WRITER,"> FileZilla Server.xml" or die "File can't be written !\n";
close WRITER;
+
print WRITER $fz;
 +
close WRITER;
 
   
 
   
print " ".$i.' account created';
+
print " ".$i.' account created';
</nowiki>
+
 
 +
</code
 +
 
 +
----
 +
JeF
 +
 
 +
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