Editing Transfer user accounts from Another FTP Server
From FileZilla Wiki
Jump to navigationJump to searchWarning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | This is a | + | 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 | + | Sorry I don't find how write properly code in this Wiki :s |
− | |||
− | |||
− | |||
− | |||
− | + | <nowiki> | |
− | + | #!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) { | 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'; | |
− | + | </nowiki> | |
− | </ | ||
− | |||
− | |||
− | |||
− | |||
− |