Пример #1
0
function xapsearch()
{
    $userid = $_SESSION["uid"];
    $ct = new user($userid);
    if ($userid != null) {
        $samba = new samba();
        $samba_folders = $samba->GetUsrsRights($userid);
    }
    $users = new usersMenus();
    writelogs("{$userid} ->AllowXapianDownload \"{$users->AllowXapianDownload}\"", __FUNCTION__, __FILE__);
    $xapian = new XapianSearch();
    if (!is_file("/usr/share/artica-postfix/LocalDatabases/home_{$userid}.db")) {
        $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/home_{$userid}.db");
    }
    while (list($sharename, $path) = each($samba_folders)) {
        if (!is_file("/usr/share/artica-postfix/LocalDatabases/share_{$sharename}.db")) {
            $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/share_{$sharename}.db");
        }
    }
    if (is_array($ct->HASH_ALL_MAILS)) {
        while (list($num, $mail) = each($ct->HASH_ALL_MAILS)) {
            $xapian->add_database("/usr/share/artica-postfix/LocalDatabases/mail_{$mail}.db");
        }
    }
    $current = $_GET["p"];
    if ($current == null) {
        $current = 0;
    }
    $xapian->terms = $_GET["xapsearch"];
    $xapian->start = $current;
    if (count($xapian->databases) > 0) {
        $array = $xapian->search();
    }
    $maxdocs = $array["ESTIMATED"];
    if ($maxdocs > 10) {
        $tabs = generateTabs($maxdocs, $current);
    }
    if (is_array($array["RESULTS"])) {
        while (list($num, $arr) = each($array["RESULTS"])) {
            $tr[] = FormatResponse($arr, $users, $ct->password);
        }
    }
    $html = "<div style='font-size:12px;font-weight:bold;margin:5px;text-align:right'>{found} {$array["ESTIMATED"]} {documents} in <strong>" . count($xapian->ParsedDatabases) . " {databases}</strong></div>";
    $tpl = new templates();
    if (is_array($tr)) {
        echo $tpl->_ENGINE_parse_body($html . $tabs . implode("\n", $tr));
    } else {
        if ($_GET["tmpmax"] > 0) {
            $tabs = generateTabs($maxdocs, $current);
        }
        echo $tpl->_ENGINE_parse_body($html . $tabs . '<p style="font-size:14px;font-weight:bold;margin:10px">{ERR_NO_DOC_FOUND}</p>');
    }
}
Пример #2
0
function XapianFileInfo()
{
    if (!preg_match("#^(.+?);pass=(.+?);XapianWords=(.+)#", $_GET["creds"], $re)) {
        echo "<H1>Bad credentials</H1>";
        die;
    }
    $uid = $re[1];
    $ct = new user($uid);
    if ($ct->uidNumber < 2) {
        die("{$uid} does not exists");
    }
    if (md5($ct->password) != $re[2]) {
        die("bad password");
    }
    if (!is_object($GLOBALS["USERMENUS"])) {
        $users = new usersMenus();
        $GLOBALS["USERMENUS"] = $users;
    } else {
        $users = $GLOBALS["USERMENUS"];
    }
    if (!is_object($GLOBALS["SMBCLASS"])) {
        $smb = new samba();
        $GLOBALS["SMBCLASS"] = $smb;
    } else {
        $smb = $GLOBALS["SMBCLASS"];
    }
    $ldap = new clladp();
    $path = base64_decode($_GET["XapianFileInfo"]);
    $sock = new sockets();
    $array = unserialize(base64_decode($sock->getFrameWork("cmd.php?filestat=" . base64_encode($path))));
    $type = base64_decode($sock->getFrameWork("cmd.php?filetype=" . base64_encode($path)));
    $permissions = $array["perms"]["human"];
    $permissions_dec = $array["perms"]["octal1"];
    $accessed = $array["time"]["accessed"];
    $modified = $array["time"]["modified"];
    $created = $array["time"]["created"];
    $file = $array["file"]["basename"];
    $permissions_g = $array["owner"]["group"]["name"] . ":" . $array["owner"]["owner"]["name"];
    $ext = Get_extension($file);
    $page = CurrentPageName();
    $cr = new SimpleCrypt($ldap->ldap_password);
    $path_encrypted = base64_encode($cr->encrypt($path));
    $samba = new samba();
    $samba_folders = $samba->GetUsrsRights($uid);
    $download = Paragraphe("download-64.png", "{download}", "{download} {$file}<br>" . FormatBytes($array["size"]["size"] / 1024), "javascript:s_PopUp('{$page}?download-file={$path_encrypted}',10,10)");
    if (!IfDirectorySambaRights($samba_folders, $path)) {
        $download = null;
    }
    $img = "img/ext/def.jpg";
    if (is_file("img/ext/{$ext}.jpg")) {
        $img = "img/ext/{$ext}.jpg";
    }
    $html = "<H1>{$file}</H1>\n<code>{$path}</code>\n<div style='font-size:11px;margin-top:3px;padding-top:5px;border-top:1px solid #CCCCCC;text-align:right;'><i>{$type}</i></div>\n<table style='width:100%'>\n<tr>\n<td width=1% valign='top'><img src='{$img}' style='margin:15px'></td>\n<td valign='top'>\n<hr>\n<table>\n\t<tr>\n\t\t<td class=legend>{permission}:</td>\n\t\t<td><strong>{$permissions} {$permissions_g} ({$permissions_dec})</td>\n\t</tr>\n\t<tr>\n\t\t<td class=legend>{accessed}:</td>\n\t\t<td><strong>{$accessed}</td>\n\t</tr>\n<tr><td class=legend>{modified}:</td><td><strong>{$modified}</td></tr>\n<tr><td class=legend>{created}:</td><td><strong>{$created}</td></tr>\n<tr>\n\t<td class=legend>{size}:</td>\n\t<td><strong>{$array["size"]["size"]} bytes (" . FormatBytes($array["size"]["size"] / 1024) . ")</td>\n</tr>\n<tr>\n\t<td class=legend>blocks:</td>\n\t<td><strong>{$array["size"]["blocks"]}</td>\n</tr>\t\n<tr>\n\t<td class=legend>block size:</td>\n\t<td><strong>{$array["size"]["block_size"]}</td>\n</tr>\n</table>\n</td>\n<td valign='top'>\n{$download}\n</td>\n</tr>\n</table>";
    $tpl = new templates();
    echo $tpl->_ENGINE_parse_body($html);
}
Пример #3
0
function xapsearch(){
	$tpl=new templates();
//$GLOBALS["VERBOSE"]=true;ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null);
	if(!isset($_POST["xapsearch"])){if(isset($_GET["xapsearch"])){$_POST["xapsearch"]=$_GET["xapsearch"];}}
	$xapsearch=url_decode_special_tool($_POST["xapsearch"]);
	$ldap=new clladp();
	$sock=new sockets();
	$XapianDisableAdm=$sock->GET_INFO("XapianDisableAdm");
	if(!is_numeric($XapianDisableAdm)){$XapianDisableAdm=0;}
	
	if($XapianDisableAdm==0){
		if(preg_match("#phpinfo:(.*?):(.*)#", $xapsearch,$re)){if(  strtolower($ldap->ldap_admin)==strtolower($re[1])  ){if(trim($re[2])==trim($ldap->ldap_password)){$s=php_ini_path();echo "<div style='width:620px;margin-top:20px' class=form>$s</div>";}}echo $tpl->_ENGINE_parse_body("<strong style='color:red'>{failed}</strong>");return;}
		if(preg_match("#status xapiandb\s+(.*?):(.*)#", $xapsearch,$re)){if(  strtolower($ldap->ldap_admin)==strtolower($re[1])  ){if(trim($re[2])==trim($ldap->ldap_password)){status_xapiandb();}}return;}
		if(preg_match("#chtitle\s+\"(.*?)\"\s+(.*?):(.*)#", trim($xapsearch),$re)){
			if(  strtolower($ldap->ldap_admin)==strtolower($re[2])  ){
				if(trim($re[3])==trim($ldap->ldap_password)){
					$sock=new sockets();
					$sock->SET_INFO("XapianSearchTitle",$re[1]);
					echo $tpl->_ENGINE_parse_body("<center style='margin-top:20px'>
					<strong style='font-size:22px;color:red'>{you_have_to_reload_webpage}</strong></center>");
				}
				return;
			}
		}
	}
	
	$userid=$_COOKIE["uid"];
	$ct=new user($userid);
	$q=new mysql();
	unset($_SESSION["xapian_folders"]);
	if(!isset($_SESSION["xapian_folders"])){
		$sql="SELECT * FROM xapian_folders";
		$results = $q->QUERY_SQL($sql,"artica_backup");
		while ($ligne = mysql_fetch_assoc($results)) {
			$directory=string_to_regex($ligne["directory"]);
			$_SESSION["xapian_folders"][$directory]["DOWN"]=$ligne["AllowDownload"];
			$_SESSION["xapian_folders"][$directory]["FULLP"]=$ligne["DiplayFullPath"];
		}	
	}	
	
	if($userid<>null){
		$samba=new samba();
		$samba_folders=$samba->GetUsrsRights($userid);
	}
	
	$users=new usersMenus();
	
	writelogs("$userid ->AllowXapianDownload \"$users->AllowXapianDownload\"",__FUNCTION__,__FILE__);;
	
	
	
	$xapian=new XapianSearch($_POST["lang"]);
	
	
	if($_COOKIE["uid"]<>null){
		if(is_dir("/usr/share/artica-postfix/LocalDatabases/xapian-{$_COOKIE["uid"]}")){
			$xapian->add_database("/usr/share/artica-postfix/LocalDatabases/xapian-{$_COOKIE["uid"]}");
		}	
	}	
	
	foreach (glob("/usr/share/artica-postfix/LocalDatabases/samba.*.db",GLOB_ONLYDIR) as $directory) {
		$xapian->add_database($directory);
	}
	
	
	$current=$_GET["p"];
	if($current==null){$current=0;}

	
	$xapian->terms=$xapsearch;
	$xapian->start=$current;
	if(count($xapian->databases)>0){
		writelogs("Added ".count($xapian->databases)." databases...",__FUNCTION__,__FILE__,__LINE__);
		$array=$xapian->search();
	}

	$maxdocs=$array["ESTIMATED"];
	$ssery_results=$array["DESCRIPTION"];

	if($maxdocs>10){
		$tabs=generateTabs($maxdocs,$current);
	}	
	if($ct->password==null){$ct->password=$ldap->ldap_password;}
	
	
	
	if(is_array($array["RESULTS"])){
		while (list ($num, $arr) = each ($array["RESULTS"]) ){
			$tr[]=FormatResponse($arr,$users,$ct->password);
		}
	}
	
	$database=$tpl->_ENGINE_parse_body("{database}");
	if(count($xapian->ParsedDatabases)>1){$database=$tpl->_ENGINE_parse_body("{databases}");}
	$html="<div style='font-size:16px;font-weight:bold;margin:5px;text-align:right'>
	{found} {$array["ESTIMATED"]} {documents} {in} <strong>" . count($xapian->ParsedDatabases)." $database</strong></div>";
	
	$tpl=new templates();
	if(is_array($tr)){echo $tpl->_ENGINE_parse_body($html.$tabs.implode("\n",$tr));}else{
		if($_GET["tmpmax"]>0){
			$tabs=generateTabs($maxdocs,$current);
		}
		
		echo $tpl->_ENGINE_parse_body($html.$tabs."<p style=\"font-size:16px;font-weight:bold;margin:10px\">{ERR_NO_DOC_FOUND} &laquo;$ssery_results&raquo;</p>"); 
	
		}
	
	
}