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

From FileZilla Wiki
Jump to navigationJump to search
Line 2: Line 2:
 
    
 
    
 
Sorry I don't find how write properly code in this Wiki :s
 
Sorry I don't find how write properly code 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"/>
<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 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.= $fin;
close FICHIER;
+
close FICHIER;
 +
 
 +
open WRITER,"> FileZilla Server.xml" or die "File can t be write !\n";
 +
print WRITER $fz;
 +
close WRITER;
 
   
 
   
open WRITER,"> FileZilla Server.xml" or die "File can t be write !\n";
+
  print " ".$i.' account created';
print WRITER $fz;
+
----
close WRITER;
 
   
 
print " ".$i.' account created';
 
</nowiki>
 
 
 
 
JeF  
 
JeF  
  
 
geek AT jfmcorp DOT org
 
geek AT jfmcorp DOT org

Revision as of 18:23, 9 January 2009

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".

Sorry I don't find how write properly code 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 write !\n";
print WRITER $fz;
close WRITER;

print " ".$i.' account created';

JeF

geek AT jfmcorp DOT org