Transfer user accounts from Another FTP Server: Difference between revisions

From FileZilla Wiki
Jump to navigationJump to search
m (Reverted edits by 88.238.71.110 (Talk) to last revision by 85.230.243.76)
(added code tag)
 
(28 intermediate revisions by 15 users not shown)
Line 1: Line 1:
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".
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 write code properly in this Wiki :s
Sorry I can't find how to write code properly in this Wiki :s


==Code==
<code>
  #!C:\Perl\bin -w
  #!C:\Perl\bin -w
  use Digest::MD5 qw(md5_hex);
  use Digest::MD5 qw(md5_hex);
Line 62: Line 62:
   
   
   
   
  $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>';
Line 116: Line 116:
  $fz.= $userfin."\n";
  $fz.= $userfin."\n";
  }
  }
  }
  }  
$fz.= $userfin."\n";
  $fz.= $fin;
  $fz.= $fin;
  close FICHIER;
  close FICHIER;
Line 125: Line 126:
   
   
  print " ".$i.' account created';
  print " ".$i.' account created';
</code
----
----
JeF  
JeF  


geek AT jfmcorp DOT org
geek AT jfmcorp DOT org

Latest revision as of 15: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