Transfer user accounts from Another FTP Server

From FileZilla Wiki
Revision as of 15:33, 14 February 2013 by MiriamBruce1983 (talk | contribs)
Jump to navigationJump to search

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

There are no situations we can't find the way from! As you realize, essay writers writing service should assist you see the way out from academic papers completing embarrassment.