'', 'file_type' => 0, 'size' => '', 'size_method' => 1, 'size_units' => 2, 'online' => 'on', 'order' => 'size DESC', 'page' => '0', 'view' => 1, ); function __construct(System $System) { parent::__construct($System); $this->Title = 'Sdílené soubory'; $this->Description = 'Prohledávání sdílených souborů'; $this->ParentClass = 'PagePortal'; } function ShowTime(): string { return date("H:i:s")."
\n"; } // Inicializace Logu //$LogFile = fopen('info.log','w'); function Loguj($Info) { //global $LogFile; //fputs($LogFile,$Info."\n"); } //Show_Array($GLOBALS); // Najde cestu ke keřenu function PlnaCesta($Row): string { // Vyhledání cesty $Otec = $Row['Parent']; $Cesta = ''; //$Row['name']; $i = 0; while (($Otec > 1) && ($i < $this->MaxNesting)) { $DbResult = $this->Database->query('SELECT Id,Name,Parent FROM NetworkShareItem WHERE Id='.$Otec); $Row = $DbResult->fetch_array(); $this->Loguj('Name: '.$Row['Name'].' ID:'.$Row['Id'].' Parent:'.$Row['Parent']); $Cesta = $Row['Name'].'\\'.$Cesta; $Otec = $Row['Parent']; $i++; } if ($i >= $this->MaxNesting) $Cesta = '?'.'\\'.$Cesta; return '\\\\'.$Cesta; } // Převede velikost v bajtech na odpovídající jednotky function PrevedVelikost($Velikost): string { $Jednotky = array('B','kB','MB','GB','TB','PB','EB'); while ($Velikost >= 1024) { $Velikost = round($Velikost / 1024 * 10) / 10; array_shift($Jednotky); } return $Velikost.' '.$Jednotky[0]; } function Show(): string { if (!ModuleUser::Cast($this->System->GetModule('User'))->User->CheckPermission('NetworkShare', 'Display')) return 'Nemáte oprávnění'; // If not only online checkbox checked if (array_key_exists('view', $_POST) and !array_key_exists('online', $_POST)) $_POST['online'] = 'off'; // Default host list view if ((count($_POST) == 0) and (count($_GET) == 0)) { $_POST['view'] = 1; $_POST['page'] = 0; } // Toggle order direction if (array_key_exists('order', $_GET) and ($_SESSION['order'] == $_GET['order'])) $_GET['order'] .= ' DESC'; foreach ($this->Promene as $Index => $Prvek) { if (!array_key_exists($Index, $_SESSION)) $_SESSION[$Index] = $this->Promene[$Index]; if (array_key_exists($Index, $_GET)) $_SESSION[$Index] = $_GET[$Index]; if (array_key_exists($Index, $_POST)) $_SESSION[$Index] = $_POST[$Index]; if (($Index == 'keyword') and (array_key_exists('view', $_GET))) $_SESSION[$Index] = $this->Promene[$Index]; if (($Index == 'view') and ((array_key_exists('keyword', $_POST)) or (array_key_exists('keyword', $_GET)))) $_SESSION[$Index] = ''; $$Index = $_SESSION[$Index]; //echo('$'.$Index.' = '.$_SESSION[$Index].'
'); } //echo($keyword); //if ($keyword) //if ($keyword != '') $view = ''; //$this->Database->select_db('share'); // Log search if (array_key_exists('keyword', $_POST) or array_key_exists('keyword', $_GET)) ModuleLog::Cast($this->System->GetModule('Log'))->NewRecord('Share', 'Hledaný výraz', $_SESSION['keyword']); // Zobrazení formuláře $Output = '
Hledat: '; $Output .= ' Typ:  Velikost:  '; if ($online == 'on') $Selected = 'checked '; else $Selected = ''; $Output .= 'Pouze aktivní uživatele
'; //$Output .= $view; if ($view != '') { // Zobrazení obsahu vybrané složky $DbResult = $this->Database->query('SELECT * FROM NetworkShareItem WHERE id='.$view); $Row = $DbResult->fetch_array(); $Cesta = $this->PlnaCesta($Row); $Output .= 'Obsah složky: '.$Cesta.$Row['name'].'
'; $Podminka = '(Parent='.$view.')'; $Nahoru = $Row['Parent']; } else { // Zobrazení výsledku vyhledávání $Output .= 'Výsledek hledání:
'; $Podminka = "(Name LIKE '%".strtr($keyword, '*', '%')."%')"; // Hledání podle typů $Pripony = array('', "(ext LIKE 'mp3') OR (ext LIKE 'wav') OR (ext LIKE 'ogg') OR (ext LIKE 'mid')", "(ext LIKE 'doc') OR (ext LIKE 'txt') OR (ext LIKE 'pdf')", "(ext LIKE 'zip') OR (ext LIKE 'rar') OR (ext LIKE 'ace') OR (ext LIKE 'tar')", "(ext LIKE 'mpeg') OR (ext LIKE 'mpg') OR (ext LIKE 'avi') OR (ext LIKE 'ogm') OR (ext LIKE 'mkv') OR (ext LIKE 'asf')", "(ext LIKE 'jpg') OR (ext LIKE 'gif') OR (ext LIKE 'bmp') OR (ext LIKE 'ico') OR (ext LIKE 'png')", "(type='2')", "(ext LIKE 'exe') OR (ext LIKE 'com')", "(ext LIKE 'iso') OR (ext LIKE 'nrg') OR (ext LIKE 'ccd') OR (ext LIKE 'bin') OR (ext LIKE 'mds')", ); if ($file_type > 0) $Podminka .= ' AND ('.$Pripony[$file_type].')'; //Hledání podle velikosti $Jednotky = array(1, 1024, 1048576, 1073741824); if (is_numeric($size)) { $Metoda = array('=', '>', '<'); $Velikost = $size * $Jednotky[$size_units]; $Podminka .= ' AND (Size'.$Metoda[$size_method].$Velikost.')'; } } // Omezení na online/offline uživatele //$this->Database->select_db('is'); if ($online == 'on') $DbResult = $this->Database->query('SELECT Id FROM NetworkDevice WHERE Online=1 AND Member IS NOT NULL'); else $DbResult = $this->Database->query('SELECT Id FROM NetworkDevice'); $Vyber = ''; while ($Row = $DbResult->fetch_array()) $Vyber .= $Row['Id'].','; $Podminka .= ' AND (Host IN ('.substr($Vyber, 0, -1).'))'; //echo($Podminka.'
'); //$this->Database->select_db('share'); //ShowTime(); // Zjištění počtu výskytů //DB_Query("SELECT COUNT(*) FROM NetworkShareItem WHERE ($Podminka)"); //$Row = DB_Row(); //$Pocet = $Row[0]; // Zobrazení [..] if (($view != '') && ($page == 0) && ($Nahoru > 0)) { $DbResult = $this->Database->query('SELECT * FROM NetworkShareItem WHERE Id='.$view); $Row = $DbResult->fetch_array(); //ShowArray($Row); $Datum = explode(' ', $Row['date']); $upstr = '[..]'.$this->PrevedVelikost($Row['size']).''.$Datum[0].''.$Cesta.''; } else $upstr = ''; // Nacteni vysledku z databaze $PerPage = 30; $Dotaz = "SELECT COUNT(*) FROM NetworkShareItem WHERE (".$Podminka.")"; if ($order != '') $Dotaz .= ' ORDER BY '.$order; $Dotaz .= " LIMIT ".($page * $PerPage).",".$PerPage; $DbResult = $this->Database->query($Dotaz); $Row = $DbResult->fetch_array(); $Pocet = $Row[0]; if ($Pocet > 0) { $Output .= 'Nalezeno celkem: '.$Pocet.' položek
'; } else $Output .= 'Podle zadaných podmínek nic nenalezeno'; if (($Pocet > 0) || ($upstr)) { $Output .= ''; $Output .= $upstr; if ($Pocet > 0) { // Zobrazení tabulky s výsledky $Pages = floor($Pocet / $PerPage); // echo($Dotaz); // Zobrazení poloľek while ($Row = $DbResult->fetch_array()) { // Loguj('Radek '.$Row['name']); $Radek = $Row; $Cesta = $this->PlnaCesta($Row); $Datum = explode(' ', $Radek['Date']); // Zobrazení řádku $Cesta2 = strtr($Cesta.$Radek['Name'], '\\', '/'); if ($Radek['Ext'] != '') $Cesta2 .= '.'.$Radek['Ext']; if ($Radek['Type'] != 0) $Adresa = 'index.php?view='.$Radek['Id'].'">['.$Radek['Name'].']'; else { if (strstr($_SERVER['HTTP_USER_AGENT'], 'Linux')) $Adresa = 'smb:'.$Cesta2.'">'.$Radek['Name']; else $Adresa = 'file:///'.$Cesta2.'">'.$Radek['Name']; } $Output .= ''. ''. ''. ''; } $Output .= '
SouborPříponaVelikostDatumUmístění
'.$Radek['Ext'].''.$this->PrevedVelikost($Radek['Size']).''.$Datum[0].''.$Cesta.'
'; } } if ($Pocet > 0) { // Celkový přehled if ($view == 1) { $DbResult = $this->Database->query('SELECT SUM(Size) FROM NetworkShareItem WHERE (Parent=1) AND (Host IN ('.substr($Vyber,0,-1).'))'); $Row = $DbResult->fetch_array(); $SizeOnline = $this->PrevedVelikost($Row[0]); $DbResult = $this->Database->query('SELECT Size FROM NetworkShareItem WHERE Id=1'); $Row = $DbResult->fetch_array(); $Size = $this->PrevedVelikost($Row['size']); $DbResult = $this->Database->query('SELECT COUNT(*) FROM NetworkShareItem'); $Row = $DbResult->fetch_array(); $Output .= '
Celková velikost online sdílených dat: '.$SizeOnline; $Output .= '
Celkem v databázi '.$Row[0].' položek o celkové velikosti '.$Size.'
'; $Output .= '
Popis služby:
Tento vyhledávač slouží k prohledávání obsahu samba sdílení všech uživatelů. Je postaven na filosofii, čím více lidí bude sdílet data, tím větší bude pravděpodobnost, že najdete to co hledáte. Každý počítač je jednou za den oskenován a informace o jeho sdílení jsou zaneseny do databáze. Každou hodinu probíhá kontrola zapnutých počítačů a jejich případné oskenování. Při hledání použíjte znak * podobně jako při vyhledávání souborů na disku.

Vyhledávání přes internetový prohlížeč Firefox
'; $Output .= 'WinAMP playlist mp3 souborů online počítačů

'; // Zobrazení chyb sdílení $Host = gethostbyaddr(GetRemoteAddress()); //echo($Host); $Host = strtoupper(substr($Host, 0, strpos($Host, '.'))); $DbResult = $this->Database->select('NetworkShareError', '*', 'Host="'.$Host.'"'); if ($DbResult->num_rows > 0) $Output .= 'Výpis chybových hlášení pro počítač '.$Host.':
'; //echo('host="'.$Host.'"'); while ($Row = $DbResult->fetch_array()) { $Row['Message'] = str_replace('/', '\\', $Row['Message']); $Output .= $Row['Message'].'
'; } } // Zobrazení seznamu stránek if ($Pages > 1) { if ($page > 0) $Output .= '<< '; if ($page > 0) $Output .= '< '; $PagesMax = $Pages; $PagesMin = 0; if ($PagesMax > ($page + 10)) $PagesMax = $page + 10; if ($PagesMin < ($page - 10)) { $Output .= ' .. '; $PagesMin = $page - 10; } for ($i = $PagesMin; $i <= $PagesMax; $i++) { if ($i == $page) $Output .= ''; $Output .= ''.($i + 1).' '; if ($i == $page) $Output .= ''; } if ($PagesMax < $Pages) $Output .= ' .. '; if ($page < $Pages) $Output .= '> '; if ($page < $Pages) $Output .= '>>'; } } return $Output; } }