404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@18.223.203.220: ~ $
<?php

class XmlTreeBuilder
{

	private $parser;
	private $node_stack;
	private $cur_node;
	private $cur_val;

	//TAG=0, VALUE=1, ELEMENTS=2

	public function &ParseFile($filename, &$err)
	{
		if (!is_file($filename)) {
			$err = $filename . ' is not a valid file.';
			return null;
		}
		$fd = fopen($filename, 'r');
		if (!$fd) {
			$err = 'failed to open file ' . $filename;
			return null;
		}
		$len = filesize($filename);
		if ($len > 0) {
			$contents = fread($fd, $len);
			fclose($fd);
			$root = $this->parseString($contents, $err);
		} else {
			$root = [];
			fclose($fd);
		}

		if ($err != null) {
			$err .= '<br> Failed to parse file ' . $filename;
			return null;
		}

		return $root;
	}

	private function parseString($xmlstring, &$err)
	{
		$this->parser = xml_parser_create();
		xml_set_object($this->parser, $this);
		xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
		xml_set_element_handler($this->parser, 'startElement', 'endElement');
		xml_set_character_data_handler($this->parser, 'characterData');

		// Build a Root node and initialize the node_stack...
		$this->node_stack = [];
		$this->cur_node = null;
		$this->startElement(null, 'root', []);

		// parse the data and free the parser...
		$result = xml_parse($this->parser, $xmlstring);
		if (!$result) {
			$err = 'XML error: ' . xml_error_string(xml_get_error_code($this->parser))
					. ' at line ' . xml_get_current_line_number($this->parser);
		}
		xml_parser_free($this->parser);
		if (!$result) {
			return null;
		}

		// return the root node...

		return $this->cur_node[2][0];
	}

	private function startElement($parser, $name, $attrs)
	{
		if ($this->cur_node != null) {
			$this->node_stack[] = $this->cur_node;
		}
		$this->cur_node = [];
		$this->cur_node[0] = $name; //'TAG'=0
//		foreach ($attrs as $key => $value) 
//		{
//			$node[$key] = $value;
//		}  //no attributes used in xml

		$this->cur_val = '';
		$this->cur_node[2] = []; //'ELEMENTS'=2
	}

	private function endElement($parser, $name)
	{
		$this->cur_node[1] = trim($this->cur_val); //'VALUE'=1
		$node = $this->cur_node;
		// and add it an element of the last node in the stack...
		$this->cur_node = array_pop($this->node_stack);
		$this->cur_node[2][] = $node;
	}

	private function characterData($parser, $data)
	{
		// add this data to the last node in the stack...
		$this->cur_val .= $data;
	}

	private function xmlNodeOutput(&$node, $space)
	{
		$output = str_repeat('  ', $space);
		$attrs = [];
		foreach (array_keys($node) as $key) {
			if ($key == 0) { //'TAG'
				$name = &$node[0];
			} elseif ($key == 1) { //'VALUE'
				$data = &$node[1];
			} elseif ($key == 2) { //'ELEMENTS'
				$elements = &$node[2];
			} else {
				$attrs[$key] = $node[$key];
			}
		}
		$name = $node[0]; //'TAG'
		$output .= "<$name";
		if (count($attrs) > 0) {
			foreach ($attrs as $key => $value) {
				$output .= " $key=\"$value\"";
			}
		}
		$output .= '>';

		if (count($elements) == 0) {
			$output .= "$data</$name>\n";
		} else {
			$output .= "\n";
			if ($data) {
				$output .= str_repeat('  ', $space + 1);
				$output .= $data . "\n";
			}

			foreach (array_keys($elements) as $key) {
				$output .= $this->xmlNodeOutput($elements[$key], $space + 1);
			}

			$output .= str_repeat('  ', $space);
			$output .= "</$name>\n";
		}
		return $output;
	}

}

Filemanager

Name Type Size Permission Actions
ws Folder 0755
CValidation.php File 26.65 KB 0644
ConfData.php File 860 B 0644
ConfigFile.php File 13.87 KB 0644
ConfigFileEx.php File 4.68 KB 0644
CustStatusCode.php File 2.19 KB 0644
DATTR_HELP.php File 773 B 0644
DATTR_HELP_ITEM.php File 2.53 KB 0644
DAttrBase.php File 12.42 KB 0644
DFileSect.php File 582 B 0644
DPage.php File 3.75 KB 0644
DTbl.php File 17.52 KB 0644
DUtil.php File 4.22 KB 0644
DispInfo.php File 4.36 KB 0644
GUIBase.php File 3.25 KB 0644
PathTool.php File 3.02 KB 0644
XmlTreeBuilder.php File 3.27 KB 0644
blowfish.php File 25.68 KB 0644
jCryption.php File 15.92 KB 0644