Difference between revisions of "Transfer user accounts from Another FTP Server"
From FileZilla Wiki
Jump to navigationJump to search (Undo revision 7746 by 85.230.243.76 (talk)) |
m (Reverted edits by 37.59.164.3 (talk) to last revision by CodeSquid) |
||
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". | |
+ | |||
+ | 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 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 written !\n"; | ||
+ | print WRITER $fz; | ||
+ | close WRITER; | ||
+ | |||
+ | print " ".$i.' account created'; | ||
+ | ---- | ||
+ | JeF | ||
+ | |||
+ | geek AT jfmcorp DOT org |
Revision as of 01:00, 22 July 2012
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 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 written !\n"; print WRITER $fz; close WRITER; print " ".$i.' account created';
JeF
geek AT jfmcorp DOT org