Skip to content

Instantly share code, notes, and snippets.

@mithereal
Last active February 2, 2017 22:06
Show Gist options
  • Save mithereal/cee2edc8f794acc573423ff5799a6798 to your computer and use it in GitHub Desktop.
Save mithereal/cee2edc8f794acc573423ff5799a6798 to your computer and use it in GitHub Desktop.
test filezilla fites in filezilla.xml for validity
<?php
//this will test and validate your filezilla exported sites ie filezilla.xml file run this in the dir filezilla.xml is ie
//'php verify.php filezilla.xml' or
//'php verify.php filezilla.xml verify' to validate ftp details
//an html file called filezilla_status will contain the ftp info
$xml_file = $argv[1];
if(isset($argv[1] && $argv[1] == "verify")){
$test_ftp = true;
}else{
$test_ftp = false;
}
$xml_host_key = "*FILEZILLA3*SERVERS*SERVER*HOST";
$xml_port_key = "*FILEZILLA3*SERVERS*SERVER*PORT";
$xml_user_key = "*FILEZILLA3*SERVERS*SERVER*USER";
$xml_pass_key = "*FILEZILLA3*SERVERS*SERVER*PASS";
$xml_name_key = "*FILEZILLA3*SERVERS*SERVER*NAME";
$story_array = array();
$counter = 0;
$debug = true;
class xml_story{
var $host, $port,$user,$pass, $valid;
}
function startTag($parser, $data){
global $current_tag;
$current_tag .= "*$data";
}
function endTag($parser, $data){
global $current_tag;
$tag_key = strrpos($current_tag, '*');
$current_tag = substr($current_tag, 0, $tag_key);
}
function contents($parser, $data){
global $current_tag, $xml_host_key, $xml_port_key, $counter, $story_array,$xml_user_key,$xml_pass_key,$xml_name_key;
switch($current_tag){
case $xml_host_key:
$story_array[$counter] = new xml_story();
$story_array[$counter]->host = $data;
break;
case $xml_port_key:
$story_array[$counter]->port = $data;
//$counter++;
break;
case $xml_user_key:
$story_array[$counter]->user = $data;
// $counter++;
break;
case $xml_pass_key:
$story_array[$counter]->pass = $data;
$story_array[$counter]->plain_txt_pass = base64_decode($data);
// $counter++;
break;
case $xml_name_key:
$story_array[$counter]->name = $data;
$counter++;
break;
}
}
function get_percentage($total, $number)
{
if ( $total > 0 ) {
return round($number / ($total / 100),2);
} else {
return 0;
}
}
function test_ftp($vals){
$ftp_server = $vals->host;
$ftp_user = $vals->user;
$ftp_pass = $vals->plain_txt_pass;
$result = null;
// set up a connection or die
if(isset($debug))
echo 'attempting to connect to' . $ftp_server;
$conn_id = ftp_connect($ftp_server);
if(is_resource($conn_id)){
// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
if(isset($debug))
echo "Connected as $ftp_user@$ftp_server\n";
$result="valid";
} else {
if(isset($debug))
echo "Couldn't connect as $ftp_user\n";
$result="invalid";
}
// close the connection
ftp_close($conn_id);
}else{
$result="invalid";
}
return $result;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "contents");
$fp = fopen($xml_file, "r") or die("Could not open file");
$data = fread($fp, filesize($xml_file)) or die("Could not read file");
if(!(xml_parse($xml_parser, $data, feof($fp)))){
die("Error on line " . xml_get_current_line_number($xml_parser));
}
xml_parser_free($xml_parser);
fclose($fp);
$html =
'<html>
<head>
<title>Filezilla Parser</title>
</head>
<body bgcolor="#FFFFFF">
<table width="1001" border="1">
<tr>
<td width="47"><strong>NO</strong></td>
<td width="185"><strong>Name</strong></td>
<td width="229"><strong>Host</strong></td>
<td width="221"><strong>User Name</strong></td>
<td width="125"><strong>Password</strong></td>
<td width="154"><strong>Port</strong></td>
<td><strong>Status</strong></td>
</tr>';
for($x=0;$x<count($story_array);$x++){
echo get_percentage(count($story_array), $x) ."\n";
if($test_ftp == true){
$story_array[$x]->valid = test_ftp($story_array[$x]);
}else{
$story_array[$x]->valid = "Unknown";
}
$html .= "
<tr>
<td height='38'></td>
<td>" . $story_array[$x]->name . " </td>
<td>" . $story_array[$x]->host . "</td>
<td>" . $story_array[$x]->user . "</td>
<td>" . $story_array[$x]->plain_txt_pass . "</td>
<td>" . $story_array[$x]->port . "</td>
<td>" . $story_array[$x]->valid . "</td>
</tr>";
}
$html .=
'</table>
</body>
</html>';
if(isset($debug))
echo $html;
file_put_contents('filezilla_status.html',$html);
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment