コード例 #1
0
function getDirList($dirName)
{
    global $cfg, $db;
    include_once "AliasFile.php";
    $lastUser = "";
    $arUserTorrent = array();
    $arListTorrent = array();
    // sortOrder
    $sortOrder = getRequestVar("so");
    if ($sortOrder == "") {
        $sortOrder = $cfg["index_page_sortorder"];
    }
    // t-list
    $arList = getTransferArray($sortOrder);
    foreach ($arList as $entry) {
        $output = "";
        $displayname = $entry;
        $show_run = true;
        $torrentowner = getOwner($entry);
        $owner = IsOwner($cfg["user"], $torrentowner);
        $kill_id = "";
        $estTime = " ";
        // alias / stat
        $alias = getAliasName($entry) . ".stat";
        if (substr(strtolower($entry), -8) == ".torrent") {
            // this is a torrent-client
            $btclient = getTorrentClient($entry);
            $af = AliasFile::getAliasFileInstance($dirName . $alias, $torrentowner, $cfg, $btclient);
        } else {
            if (substr(strtolower($entry), -4) == ".url") {
                // this is wget. use tornado statfile
                $alias = str_replace(".url", "", $alias);
                $af = AliasFile::getAliasFileInstance($dirName . $alias, $cfg['user'], $cfg, 'tornado');
            } else {
                // this is "something else". use tornado statfile as default
                $af = AliasFile::getAliasFileInstance($dirName . $alias, $cfg['user'], $cfg, 'tornado');
            }
        }
        //XFER: add upload/download stats to the xfer array
        if ($cfg['enable_xfer'] == 1 && $cfg['xfer_realtime'] == 1) {
            $torrentTotalsCurrent = getTorrentTotalsCurrentOP($entry, $btclient, $af->uptotal, $af->downtotal);
            $sql = 'SELECT 1 FROM tf_xfer WHERE date = ' . $db->DBDate(time());
            $newday = !$db->GetOne($sql);
            showError($db, $sql);
            sumUsage($torrentowner, $torrentTotalsCurrent["downtotal"] + 0, $torrentTotalsCurrent["uptotal"] + 0, 'total');
            sumUsage($torrentowner, $torrentTotalsCurrent["downtotal"] + 0, $torrentTotalsCurrent["uptotal"] + 0, 'month');
            sumUsage($torrentowner, $torrentTotalsCurrent["downtotal"] + 0, $torrentTotalsCurrent["uptotal"] + 0, 'week');
            sumUsage($torrentowner, $torrentTotalsCurrent["downtotal"] + 0, $torrentTotalsCurrent["uptotal"] + 0, 'day');
            //XFER: if new day add upload/download totals to last date on record and subtract from today in SQL
            if ($newday) {
                $newday = 2;
                $sql = 'SELECT date FROM tf_xfer ORDER BY date DESC';
                $lastDate = $db->GetOne($sql);
                showError($db, $sql);
                // MySQL 4.1.0 introduced 'ON DUPLICATE KEY UPDATE' to make this easier
                $sql = 'SELECT 1 FROM tf_xfer WHERE user_id = "' . $torrentowner . '" AND date = "' . $lastDate . '"';
                if ($db->GetOne($sql)) {
                    $sql = 'UPDATE tf_xfer SET download = download+' . ($torrentTotalsCurrent["downtotal"] + 0) . ', upload = upload+' . ($torrentTotalsCurrent["uptotal"] + 0) . ' WHERE user_id = "' . $torrentowner . '" AND date = "' . $lastDate . '"';
                    $db->Execute($sql);
                    showError($db, $sql);
                } else {
                    showError($db, $sql);
                    $sql = 'INSERT INTO tf_xfer (user_id,date,download,upload) values ("' . $torrentowner . '","' . $lastDate . '",' . ($torrentTotalsCurrent["downtotal"] + 0) . ',' . ($torrentTotalsCurrent["uptotal"] + 0) . ')';
                    $db->Execute($sql);
                    showError($db, $sql);
                }
                $sql = 'SELECT 1 FROM tf_xfer WHERE user_id = "' . $torrentowner . '" AND date = ' . $db->DBDate(time());
                if ($db->GetOne($sql)) {
                    $sql = 'UPDATE tf_xfer SET download = download-' . ($torrentTotalsCurrent["downtotal"] + 0) . ', upload = upload-' . ($torrentTotalsCurrent["uptotal"] + 0) . ' WHERE user_id = "' . $torrentowner . '" AND date = ' . $db->DBDate(time());
                    $db->Execute($sql);
                    showError($db, $sql);
                } else {
                    showError($db, $sql);
                    $sql = 'INSERT INTO tf_xfer (user_id,date,download,upload) values ("' . $torrentowner . '",' . $db->DBDate(time()) . ',-' . ($torrentTotalsCurrent["downtotal"] + 0) . ',-' . ($torrentTotalsCurrent["uptotal"] + 0) . ')';
                    $db->Execute($sql);
                    showError($db, $sql);
                }
            }
        }
        $timeStarted = "";
        $torrentfilelink = "";
        if (!file_exists($dirName . $alias)) {
            $af->running = "2";
            // file is new
            $af->size = getDownloadSize($dirName . $entry);
            $af->WriteFile();
        }
        if (strlen($entry) >= 47) {
            // needs to be trimmed
            $displayname = substr($entry, 0, 44);
            $displayname .= "...";
        }
        if ($cfg["enable_torrent_download"]) {
            $torrentfilelink = "<a href=\"maketorrent.php?download=" . urlencode($entry) . "\"><img src=\"images/down.gif\" width=9 height=9 title=\"Download Torrent File\" border=0 align=\"absmiddle\"></a>";
        }
        //
        $hd = getStatusImage($af);
        $output .= "<tr>";
        $detailsLinkString = "<a style=\"font-size:9px; text-decoration:none;\" href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\">";
        // ========================================================== led + meta
        $output .= '<td valign="bottom" align="center">';
        // led
        $hd = getStatusImage($af);
        if ($af->running == 1) {
            $output .= "<a href=\"JavaScript:ShowDetails('downloadhosts.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\">";
        }
        $output .= "<img src=\"images/" . $hd->image . "\" width=\"16\" height=\"16\" title=\"" . $hd->title . $entry . "\" border=\"0\" align=\"absmiddle\">";
        if ($af->running == 1) {
            $output .= "</a>";
        }
        // meta
        $output .= $torrentfilelink;
        $output .= "</td>";
        // ================================================================ name
        $output .= "<td valign=\"bottom\">";
        $output .= $detailsLinkString;
        $output .= $displayname;
        $output .= "</a>";
        $output .= "</td>";
        $output .= "<td align=\"right\"><font class=\"tiny\">" . formatBytesToKBMGGB($af->size) . "</font></td>";
        $output .= "<td align=\"center\"><a href=\"message.php?to_user="******"\"><font class=\"tiny\">" . $torrentowner . "</font></a></td>";
        $output .= "<td valign=\"bottom\"><div align=\"center\">";
        if ($af->running == "2") {
            $output .= "<i><font color=\"#32cd32\">" . _NEW . "</font></i>";
        } elseif ($af->running == "3") {
            $estTime = "Waiting...";
            $qDateTime = '';
            if (is_file($dirName . "queue/" . $alias . ".Qinfo")) {
                $qDateTime = date("m/d/Y H:i:s", strval(filectime($dirName . "queue/" . $alias . ".Qinfo")));
            }
            $output .= "<i><font color=\"#000000\" onmouseover=\"return overlib('" . _QUEUED . ": " . $qDateTime . "<br>', CSSCLASS);\" onmouseout=\"return nd();\">" . _QUEUED . "</font></i>";
        } else {
            if ($af->time_left != "" && $af->time_left != "0") {
                $estTime = $af->time_left;
            }
            $sql_search_time = "Select time from tf_log where action like '%Upload' and file like '" . $entry . "%'";
            $result_search_time = $db->Execute($sql_search_time);
            list($uploaddate) = $result_search_time->FetchRow();
            $lastUser = $torrentowner;
            $sharing = $af->sharing . "%";
            $graph_width = 1;
            $progress_color = "#00ff00";
            $background = "#000000";
            $bar_width = "4";
            $popup_msg = _ESTIMATEDTIME . ": " . $af->time_left;
            $popup_msg .= "<br>" . _DOWNLOADSPEED . ": " . $af->down_speed;
            $popup_msg .= "<br>" . _UPLOADSPEED . ": " . $af->up_speed;
            $popup_msg .= "<br>" . _SHARING . ": " . $sharing;
            $popup_msg .= "<br>Seeds: " . $af->seeds;
            $popup_msg .= "<br>Peers: " . $af->peers;
            $popup_msg .= "<br>" . _USER . ": " . $torrentowner;
            $eCount = 0;
            foreach ($af->errors as $key => $value) {
                if (strpos($value, " (x")) {
                    $curEMsg = substr($value, strpos($value, " (x") + 3);
                    $eCount += substr($curEMsg, 0, strpos($curEMsg, ")"));
                } else {
                    $eCount += 1;
                }
            }
            $popup_msg .= "<br>" . _ERRORSREPORTED . ": " . strval($eCount);
            $popup_msg .= "<br>" . _UPLOADED . ": " . date("m/d/Y H:i:s", $uploaddate);
            if (is_file($dirName . $alias . ".pid")) {
                $timeStarted = "<br>" . _STARTED . ": " . date("m/d/Y H:i:s", strval(filectime($dirName . $alias . ".pid")));
            }
            // incriment the totals
            if (!isset($cfg["total_upload"])) {
                $cfg["total_upload"] = 0;
            }
            if (!isset($cfg["total_download"])) {
                $cfg["total_download"] = 0;
            }
            $cfg["total_upload"] = $cfg["total_upload"] + GetSpeedValue($af->up_speed);
            $cfg["total_download"] = $cfg["total_download"] + GetSpeedValue($af->down_speed);
            if ($af->percent_done >= 100) {
                if (trim($af->up_speed) != "" && $af->running == "1") {
                    $popup_msg .= $timeStarted;
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" style=\"font-size:7pt;\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\">seeding (" . $af->up_speed . ") " . $sharing . "</a>";
                } else {
                    $popup_msg .= "<br>" . _ENDED . ": " . date("m/d/Y H:i:s", strval(filemtime($dirName . $alias)));
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\"><i><font color=red>" . _DONE . "</font></i></a>";
                }
                $show_run = false;
            } else {
                if ($af->percent_done < 0) {
                    $popup_msg .= $timeStarted;
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\"><i><font color=\"#989898\">" . _INCOMPLETE . "</font></i></a>";
                    $show_run = true;
                } else {
                    $popup_msg .= $timeStarted;
                    if ($af->percent_done > 1) {
                        $graph_width = $af->percent_done;
                    }
                    if ($graph_width == 100) {
                        $background = $progress_color;
                    }
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\">";
                    $output .= "<font class=\"tiny\"><strong>" . $af->percent_done . "%</strong> @ " . $af->down_speed . "</font></a><br>";
                    $output .= "<table width=\"100\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
                    $output .= "<tr><td background=\"themes/" . $cfg["theme"] . "/images/progressbar.gif\" bgcolor=\"" . $progress_color . "\"><img src=\"images/blank.gif\" width=\"" . $graph_width . "\" height=\"" . $bar_width . "\" border=\"0\"></td>";
                    $output .= "<td bgcolor=\"" . $background . "\"><img src=\"images/blank.gif\" width=\"" . (100 - $graph_width) . "\" height=\"" . $bar_width . "\" border=\"0\"></td>";
                    $output .= "</tr></table>";
                }
            }
        }
        $output .= "</div></td>";
        $output .= "<td><div class=\"tiny\" align=\"center\">" . $estTime . "</div></td>";
        $output .= "<td><div align=center>";
        $torrentDetails = _TORRENTDETAILS;
        if ($lastUser != "") {
            $torrentDetails .= "\n" . _USER . ": " . $lastUser;
        }
        $output .= "<a href=\"details.php?torrent=" . urlencode($entry);
        if ($af->running == 1) {
            $output .= "&als=false";
        }
        $output .= "\"><img src=\"images/properties.png\" width=18 height=13 title=\"" . $torrentDetails . "\" border=0></a>";
        if ($owner || IsAdmin($cfg["user"])) {
            if ($af->percent_done >= 0 && $af->running == 1) {
                $output .= "<a href=\"index.php?alias_file=" . $alias . "&kill=" . $kill_id . "&kill_torrent=" . urlencode($entry) . "\"><img src=\"images/kill.gif\" width=16 height=16 title=\"" . _STOPDOWNLOAD . "\" border=0></a>";
                $output .= "<img src=\"images/delete_off.gif\" width=16 height=16 border=0>";
                if ($cfg['enable_multiops'] == 1) {
                    $output .= "<input type=\"checkbox\" name=\"torrent[]\" value=\"" . urlencode($entry) . "\">";
                }
            } else {
                if ($torrentowner == "n/a") {
                    $output .= "<img src=\"images/run_off.gif\" width=16 height=16 border=0 title=\"" . _NOTOWNER . "\">";
                } else {
                    if ($af->running == "3") {
                        $output .= "<a href=\"index.php?alias_file=" . $alias . "&dQueue=" . $kill_id . "&QEntry=" . urlencode($entry) . "\"><img src=\"images/queued.gif\" width=16 height=16 title=\"" . _DELQUEUE . "\" border=0></a>";
                    } else {
                        if (!is_file($cfg["torrent_file_path"] . $alias . ".pid")) {
                            // Allow Avanced start popup?
                            if ($cfg["advanced_start"] != 0) {
                                if ($show_run) {
                                    $output .= "<a href=\"#\" onclick=\"StartTorrent('startpop.php?torrent=" . urlencode($entry) . "')\"><img src=\"images/run_on.gif\" width=16 height=16 title=\"" . _RUNTORRENT . "\" border=0></a>";
                                } else {
                                    $output .= "<a href=\"#\" onclick=\"StartTorrent('startpop.php?torrent=" . urlencode($entry) . "')\"><img src=\"images/seed_on.gif\" width=16 height=16 title=\"" . _SEEDTORRENT . "\" border=0></a>";
                                }
                            } else {
                                // Quick Start
                                if ($show_run) {
                                    $output .= "<a href=\"" . $_SERVER['PHP_SELF'] . "?torrent=" . urlencode($entry) . "\"><img src=\"images/run_on.gif\" width=16 height=16 title=\"" . _RUNTORRENT . "\" border=0></a>";
                                } else {
                                    $output .= "<a href=\"" . $_SERVER['PHP_SELF'] . "?torrent=" . urlencode($entry) . "\"><img src=\"images/seed_on.gif\" width=16 height=16 title=\"" . _SEEDTORRENT . "\" border=0></a>";
                                }
                            }
                        } else {
                            // pid file exists so this may still be running or dieing.
                            $output .= "<img src=\"images/run_off.gif\" width=16 height=16 border=0 title=\"" . _STOPPING . "\">";
                        }
                    }
                }
                if (!is_file($cfg["torrent_file_path"] . $alias . ".pid")) {
                    $deletelink = $_SERVER['PHP_SELF'] . "?alias_file=" . $alias . "&delfile=" . urlencode($entry);
                    $output .= "<a href=\"" . $deletelink . "\" onclick=\"return ConfirmDelete('" . $entry . "')\"><img src=\"images/delete_on.gif\" width=16 height=16 title=\"" . _DELETE . "\" border=0></a>";
                    if ($cfg['enable_multiops'] == 1) {
                        $output .= "<input type=\"checkbox\" name=\"torrent[]\" value=\"" . urlencode($entry) . "\">";
                    }
                } else {
                    // pid file present so process may be still running. don't allow deletion.
                    $output .= "<img src=\"images/delete_off.gif\" width=16 height=16 title=\"" . _STOPPING . "\" border=0>";
                    if ($cfg['enable_multiops'] == 1) {
                        $output .= "<input type=\"checkbox\" name=\"torrent[]\" value=\"" . urlencode($entry) . "\">";
                    }
                }
            }
        } else {
            $output .= "<img src=\"images/locked.gif\" width=16 height=16 border=0 title=\"" . _NOTOWNER . "\">";
            $output .= "<img src=\"images/locked.gif\" width=16 height=16 border=0 title=\"" . _NOTOWNER . "\">";
            $output .= "<input type=\"checkbox\" disabled=\"disabled\">";
        }
        $output .= "</div>";
        $output .= "</td>";
        $output .= "</tr>\n";
        // Is this torrent for the user list or the general list?
        if ($cfg["user"] == getOwner($entry)) {
            array_push($arUserTorrent, $output);
        } else {
            array_push($arListTorrent, $output);
        }
    }
    //XFER: if a new day but no .stat files where found put blank entry into the DB for today to indicate accounting has been done for the new day
    if ($cfg['enable_xfer'] == 1 && $cfg['xfer_realtime'] == 1) {
        if (isset($newday) && $newday == 1) {
            $sql = 'INSERT INTO tf_xfer (user_id,date) values ( "",' . $db->DBDate(time()) . ')';
            $db->Execute($sql);
            showError($db, $sql);
        }
        getUsage(0, 'total');
        $month_start = date('j') >= $cfg['month_start'] ? date('Y-m-') . $cfg['month_start'] : date('Y-m-', strtotime('-1 Month')) . $cfg['month_start'];
        getUsage($month_start, 'month');
        $week_start = date('Y-m-d', strtotime('last ' . $cfg['week_start']));
        getUsage($week_start, 'week');
        $day_start = date('Y-m-d');
        getUsage($day_start, 'day');
    }
    // Now spit out the junk
    //XFER: return the junk as a string instead
    $output = '<table bgcolor="' . $cfg["table_data_bg"] . '" width="100%" bordercolor="' . $cfg["table_border_dk"] . '" border="1" cellpadding="3" cellspacing="0" class="sortable" id="transfer_table">';
    if (sizeof($arUserTorrent) > 0) {
        $output .= "<tr>";
        // first
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">";
        switch ($sortOrder) {
            case 'da':
                // sort by date ascending
                $output .= '<a href="?so=dd"><font class="adminlink">#</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=dd"><img src="images/s_down.gif" width="9" height="9" border="0"></a>';
                break;
            case 'dd':
                // sort by date descending
                $output .= '<a href="?so=da"><font class="adminlink">#</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=da"><img src="images/s_up.gif" width="9" height="9" border="0"></a>';
                break;
            default:
                $output .= '<a href="?so=dd"><font class="adminlink">#</font></a>';
                break;
        }
        $output .= "</div></td>";
        // name
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">";
        switch ($sortOrder) {
            case 'na':
                // sort alphabetically by name ascending
                $output .= '<a href="?so=nd"><font class="adminlink">' . $cfg["user"] . ": " . _TORRENTFILE . '</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=nd"><img src="images/s_down.gif" width="9" height="9" border="0"></a>';
                break;
            case 'nd':
                // sort alphabetically by name descending
                $output .= '<a href="?so=na"><font class="adminlink">' . $cfg["user"] . ": " . _TORRENTFILE . '</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=na"><img src="images/s_up.gif" width="9" height="9" border="0"></a>';
                break;
            default:
                $output .= '<a href="?so=na"><font class="adminlink">' . $cfg["user"] . ": " . _TORRENTFILE . '</font></a>';
                break;
        }
        $output .= "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">Size</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _USER . "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _STATUS . "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ESTIMATEDTIME . "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ADMIN . "</div></td>";
        $output .= "</tr>\n";
        foreach ($arUserTorrent as $torrentrow) {
            $output .= $torrentrow;
        }
    }
    // "Only Admin can see other user torrents"
    $boolCond = true;
    if ($cfg['enable_restrictivetview'] == 1) {
        $boolCond = IsAdmin();
    }
    if ($boolCond && sizeof($arListTorrent) > 0) {
        // "Only Admin can see other user torrents"
        $output .= "<tr>";
        // first
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">";
        switch ($sortOrder) {
            case 'da':
                // sort by date ascending
                $output .= '<a href="?so=dd"><font class="adminlink">#</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=dd"><img src="images/s_down.gif" width="9" height="9" border="0"></a>';
                break;
            case 'dd':
                // sort by date descending
                $output .= '<a href="?so=da"><font class="adminlink">#</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=da"><img src="images/s_up.gif" width="9" height="9" border="0"></a>';
                break;
            default:
                $output .= '<a href="?so=dd"><font class="adminlink">#</font></a>';
                break;
        }
        $output .= "</div></td>";
        // name
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">";
        switch ($sortOrder) {
            case 'na':
                // sort alphabetically by name ascending
                $output .= '<a href="?so=nd"><font class="adminlink">' . _TORRENTFILE . '</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=nd"><img src="images/s_down.gif" width="9" height="9" border="0"></a>';
                break;
            case 'nd':
                // sort alphabetically by name descending
                $output .= '<a href="?so=na"><font class="adminlink">' . _TORRENTFILE . '</font></a>';
                $output .= '&nbsp;';
                $output .= '<a href="?so=na"><img src="images/s_up.gif" width="9" height="9" border="0"></a>';
                break;
            default:
                $output .= '<a href="?so=na"><font class="adminlink">' . _TORRENTFILE . '</font></a>';
                break;
        }
        $output .= "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">Size</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _USER . "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _STATUS . "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ESTIMATEDTIME . "</div></td>";
        $output .= "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ADMIN . "</div></td>";
        $output .= "</tr>\n";
        foreach ($arListTorrent as $torrentrow) {
            $output .= $torrentrow;
        }
    }
    return $output;
}
コード例 #2
0
/**
 * injects a atorrent
 *
 * @param $torrent
 * @return boolean
 */
function injectTorrent($torrent)
{
    global $cfg;
    include_once "AliasFile.php";
    $af = AliasFile::getAliasFileInstance($cfg["torrent_file_path"] . getAliasName($torrent) . ".stat", $cfg['user'], $cfg);
    $af->running = "2";
    // file is new
    $af->size = getDownloadSize($cfg["torrent_file_path"] . $torrent);
    $af->WriteFile();
    return true;
}
コード例 #3
0
function getDirList($dirName)
{
    global $cfg, $db;
    include_once "AliasFile.php";
    include_once "RunningTorrent.php";
    $runningTorrents = getRunningTorrents();
    $arList = array();
    $file_filter = getFileFilter($cfg["file_types_array"]);
    if (is_dir($dirName)) {
        $handle = opendir($dirName);
    } else {
        // nothing to read
        if (IsAdmin()) {
            echo "<b>ERROR:</b> " . $dirName . " Path is not valid. Please edit <a href='admin.php?op=configSettings'>settings</a><br>";
        } else {
            echo "<b>ERROR:</b> Contact an admin the Path is not valid.<br>";
        }
        return;
    }
    $lastUser = "";
    $arUserTorrent = array();
    $arListTorrent = array();
    while ($entry = readdir($handle)) {
        if ($entry != "." && $entry != "..") {
            if (is_dir($dirName . "/" . $entry)) {
                // don''t do a thing
            } else {
                if (ereg($file_filter, $entry)) {
                    $key = filemtime($dirName . "/" . $entry) . md5($entry);
                    $arList[$key] = $entry;
                }
            }
        }
    }
    // sort the files by date
    krsort($arList);
    foreach ($arList as $entry) {
        $output = "";
        $displayname = $entry;
        $show_run = true;
        $torrentowner = getOwner($entry);
        $owner = IsOwner($cfg["user"], $torrentowner);
        $kill_id = "";
        $estTime = "&nbsp;";
        $alias = getAliasName($entry) . ".stat";
        $af = new AliasFile($dirName . $alias, $torrentowner);
        $timeStarted = "";
        $torrentfilelink = "";
        if (!file_exists($dirName . $alias)) {
            $af->running = "2";
            // file is new
            $af->size = getDownloadSize($dirName . $entry);
            $af->WriteFile();
        }
        if (strlen($entry) >= 47) {
            // needs to be trimmed
            $displayname = substr($entry, 0, 44);
            $displayname .= "...";
        }
        // find out if any screens are running and take their PID and make a KILL option
        foreach ($runningTorrents as $key => $value) {
            $rt = new RunningTorrent($value);
            if ($rt->statFile == $alias) {
                if ($kill_id == "") {
                    $kill_id = $rt->processId;
                } else {
                    // there is more than one PID for this torrent
                    // Add it so it can be killed as well.
                    $kill_id .= "|" . $rt->processId;
                }
            }
        }
        // Check to see if we have a pid without a process.
        if (is_file($cfg["torrent_file_path"] . $alias . ".pid") && empty($kill_id)) {
            // died outside of tf and pid still exists.
            @unlink($cfg["torrent_file_path"] . $alias . ".pid");
            if ($af->percent_done < 100 && $af->percent_done >= 0) {
                // The file is not running and the percent done needs to be changed
                $af->percent_done = ($af->percent_done + 100) * -1;
            }
            $af->running = "0";
            $af->time_left = "Torrent Died";
            $af->up_speed = "";
            $af->down_speed = "";
            // write over the status file so that we can display a new status
            $af->WriteFile();
        }
        if ($cfg["enable_torrent_download"]) {
            $torrentfilelink = "<a href=\"maketorrent.php?download=" . urlencode($entry) . "\"><img src=\"images/down.gif\" width=9 height=9 title=\"Download Torrent File\" border=0 align=\"absmiddle\"></a>";
        }
        $hd = getStatusImage($af);
        $output .= "<tr><td class=\"tiny\"><img src=\"images/" . $hd->image . "\" width=16 height=16 title=\"" . $hd->title . $entry . "\" border=0 align=\"absmiddle\">" . $torrentfilelink . $displayname . "</td>";
        $output .= "<td align=\"right\"><font class=\"tiny\">" . formatBytesToKBMGGB($af->size) . "</font></td>";
        $output .= "<td align=\"center\"><a href=\"message.php?to_user="******"\"><font class=\"tiny\">" . $torrentowner . "</font></a></td>";
        $output .= "<td valign=\"bottom\"><div align=\"center\">";
        if ($af->running == "2") {
            $output .= "<i><font color=\"#32cd32\">" . _NEW . "</font></i>";
        } elseif ($af->running == "3") {
            $estTime = "Waiting...";
            $qDateTime = '';
            if (is_file($dirName . "queue/" . $alias . ".Qinfo")) {
                $qDateTime = date("m/d/Y H:i:s", strval(filectime($dirName . "queue/" . $alias . ".Qinfo")));
            }
            $output .= "<i><font color=\"#000000\" onmouseover=\"return overlib('" . _QUEUED . ": " . $qDateTime . "<br>', CSSCLASS);\" onmouseout=\"return nd();\">" . _QUEUED . "</font></i>";
        } else {
            if ($af->time_left != "" && $af->time_left != "0") {
                $estTime = $af->time_left;
            }
            $sql_search_time = "Select time from tf_log where action like '%Upload' and file like '" . $entry . "%'";
            $result_search_time = $db->Execute($sql_search_time);
            list($uploaddate) = $result_search_time->FetchRow();
            $lastUser = $torrentowner;
            $sharing = $af->sharing . "%";
            $graph_width = 1;
            $progress_color = "#00ff00";
            $background = "#000000";
            $bar_width = "4";
            $popup_msg = _ESTIMATEDTIME . ": " . $af->time_left;
            $popup_msg .= "<br>" . _DOWNLOADSPEED . ": " . $af->down_speed;
            $popup_msg .= "<br>" . _UPLOADSPEED . ": " . $af->up_speed;
            $popup_msg .= "<br>" . _SHARING . ": " . $sharing;
            $popup_msg .= "<br>Seeds: " . $af->seeds;
            $popup_msg .= "<br>Peers: " . $af->peers;
            $popup_msg .= "<br>" . _USER . ": " . $torrentowner;
            $eCount = 0;
            foreach ($af->errors as $key => $value) {
                if (strpos($value, " (x")) {
                    $curEMsg = substr($value, strpos($value, " (x") + 3);
                    $eCount += substr($curEMsg, 0, strpos($curEMsg, ")"));
                } else {
                    $eCount += 1;
                }
            }
            $popup_msg .= "<br>" . _ERRORSREPORTED . ": " . strval($eCount);
            $popup_msg .= "<br>" . _UPLOADED . ": " . date("m/d/Y H:i:s", $uploaddate);
            if (is_file($dirName . $alias . ".pid")) {
                $timeStarted = "<br>" . _STARTED . ": " . date("m/d/Y H:i:s", strval(filectime($dirName . $alias . ".pid")));
            }
            // incriment the totals
            if (!isset($cfg["total_upload"])) {
                $cfg["total_upload"] = 0;
            }
            if (!isset($cfg["total_download"])) {
                $cfg["total_download"] = 0;
            }
            $cfg["total_upload"] = $cfg["total_upload"] + GetSpeedValue($af->up_speed);
            $cfg["total_download"] = $cfg["total_download"] + GetSpeedValue($af->down_speed);
            if ($af->percent_done >= 100) {
                if (trim($af->up_speed) != "" && $af->running == "1") {
                    $popup_msg .= $timeStarted;
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" style=\"font-size:7pt;\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\">seeding (" . $af->up_speed . ") " . $sharing . "</a>";
                } else {
                    $popup_msg .= "<br>" . _ENDED . ": " . date("m/d/Y H:i:s", strval(filemtime($dirName . $alias)));
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\"><i><font color=red>" . _DONE . "</font></i></a>";
                }
                $show_run = false;
            } else {
                if ($af->percent_done < 0) {
                    $popup_msg .= $timeStarted;
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\"><i><font color=\"#989898\">" . _INCOMPLETE . "</font></i></a>";
                    $show_run = true;
                } else {
                    $popup_msg .= $timeStarted;
                    if ($af->percent_done > 1) {
                        $graph_width = $af->percent_done;
                    }
                    if ($graph_width == 100) {
                        $background = $progress_color;
                    }
                    $output .= "<a href=\"JavaScript:ShowDetails('downloaddetails.php?alias=" . $alias . "&torrent=" . urlencode($entry) . "')\" onmouseover=\"return overlib('" . $popup_msg . "<br>', CSSCLASS);\" onmouseout=\"return nd();\">";
                    $output .= "<font class=\"tiny\"><strong>" . $af->percent_done . "%</strong> @ " . $af->down_speed . "</font></a><br>";
                    $output .= "<table width=\"100\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
                    $output .= "<tr><td background=\"themes/" . $cfg["theme"] . "/images/progressbar.gif\" bgcolor=\"" . $progress_color . "\"><img src=\"images/blank.gif\" width=\"" . $graph_width . "\" height=\"" . $bar_width . "\" border=\"0\"></td>";
                    $output .= "<td bgcolor=\"" . $background . "\"><img src=\"images/blank.gif\" width=\"" . (100 - $graph_width) . "\" height=\"" . $bar_width . "\" border=\"0\"></td>";
                    $output .= "</tr></table>";
                }
            }
        }
        $output .= "</div></td>";
        $output .= "<td><div class=\"tiny\" align=\"center\">" . $estTime . "</div></td>";
        $output .= "<td><div align=center>";
        $torrentDetails = _TORRENTDETAILS;
        if ($lastUser != "") {
            $torrentDetails .= "\n" . _USER . ": " . $lastUser;
        }
        $output .= "<a href=\"details.php?torrent=" . urlencode($entry);
        if ($af->running == 1) {
            $output .= "&als=false";
        }
        $output .= "\"><img src=\"images/properties.png\" width=18 height=13 title=\"" . $torrentDetails . "\" border=0></a>";
        if ($owner || IsAdmin($cfg["user"])) {
            if ($kill_id != "" && $af->percent_done >= 0 && $af->running == 1) {
                $output .= "<a href=\"index.php?alias_file=" . $alias . "&kill=" . $kill_id . "&kill_torrent=" . urlencode($entry) . "\"><img src=\"images/kill.gif\" width=16 height=16 title=\"" . _STOPDOWNLOAD . "\" border=0></a>";
                $output .= "<img src=\"images/delete_off.gif\" width=16 height=16 border=0>";
            } else {
                if ($torrentowner == "n/a") {
                    $output .= "<img src=\"images/run_off.gif\" width=16 height=16 border=0 title=\"" . _NOTOWNER . "\">";
                } else {
                    if ($af->running == "3") {
                        $output .= "<a href=\"index.php?alias_file=" . $alias . "&dQueue=" . $kill_id . "&QEntry=" . urlencode($entry) . "\"><img src=\"images/queued.gif\" width=16 height=16 title=\"" . _DELQUEUE . "\" border=0></a>";
                    } else {
                        if (!is_file($cfg["torrent_file_path"] . $alias . ".pid")) {
                            // Allow Avanced start popup?
                            if ($cfg["advanced_start"]) {
                                if ($show_run) {
                                    $output .= "<a href=\"#\" onclick=\"StartTorrent('startpop.php?torrent=" . urlencode($entry) . "')\"><img src=\"images/run_on.gif\" width=16 height=16 title=\"" . _RUNTORRENT . "\" border=0></a>";
                                } else {
                                    $output .= "<a href=\"#\" onclick=\"StartTorrent('startpop.php?torrent=" . urlencode($entry) . "')\"><img src=\"images/seed_on.gif\" width=16 height=16 title=\"" . _SEEDTORRENT . "\" border=0></a>";
                                }
                            } else {
                                // Quick Start
                                if ($show_run) {
                                    $output .= "<a href=\"" . $_SERVER['PHP_SELF'] . "?torrent=" . urlencode($entry) . "\"><img src=\"images/run_on.gif\" width=16 height=16 title=\"" . _RUNTORRENT . "\" border=0></a>";
                                } else {
                                    $output .= "<a href=\"" . $_SERVER['PHP_SELF'] . "?torrent=" . urlencode($entry) . "\"><img src=\"images/seed_on.gif\" width=16 height=16 title=\"" . _SEEDTORRENT . "\" border=0></a>";
                                }
                            }
                        } else {
                            // pid file exists so this may still be running or dieing.
                            $output .= "<img src=\"images/run_off.gif\" width=16 height=16 border=0 title=\"" . _STOPPING . "\">";
                        }
                    }
                }
                if (!is_file($cfg["torrent_file_path"] . $alias . ".pid")) {
                    $deletelink = $_SERVER['PHP_SELF'] . "?alias_file=" . $alias . "&delfile=" . urlencode($entry);
                    $output .= "<a href=\"" . $deletelink . "\" onclick=\"return ConfirmDelete('" . $entry . "')\"><img src=\"images/delete_on.gif\" width=16 height=16 title=\"" . _DELETE . "\" border=0></a>";
                } else {
                    // pid file present so process may be still running. don't allow deletion.
                    $output .= "<img src=\"images/delete_off.gif\" width=16 height=16 title=\"" . _STOPPING . "\" border=0>";
                }
            }
        } else {
            $output .= "<img src=\"images/locked.gif\" width=16 height=16 border=0 title=\"" . _NOTOWNER . "\">";
            $output .= "<img src=\"images/locked.gif\" width=16 height=16 border=0 title=\"" . _NOTOWNER . "\">";
        }
        $output .= "</div>";
        $output .= "</td>";
        $output .= "</tr>\n";
        // Is this torrent for the user list or the general list?
        if ($cfg["user"] == getOwner($entry)) {
            array_push($arUserTorrent, $output);
        } else {
            array_push($arListTorrent, $output);
        }
    }
    closedir($handle);
    // Now spit out the junk
    echo "<table bgcolor=\"" . $cfg["table_data_bg"] . "\" width=\"100%\" bordercolor=\"" . $cfg["table_border_dk"] . "\" border=1 cellpadding=3 cellspacing=0>";
    if (sizeof($arUserTorrent) > 0) {
        echo "<tr><td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . $cfg["user"] . ": " . _TORRENTFILE . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">Size</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _USER . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _STATUS . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ESTIMATEDTIME . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ADMIN . "</div></td>";
        echo "</tr>\n";
        foreach ($arUserTorrent as $torrentrow) {
            echo $torrentrow;
        }
    }
    if (sizeof($arListTorrent) > 0) {
        echo "<tr><td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _TORRENTFILE . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">Size</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _USER . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _STATUS . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ESTIMATEDTIME . "</div></td>";
        echo "<td background=\"themes/" . $cfg["theme"] . "/images/bar.gif\" bgcolor=\"" . $cfg["table_header_bg"] . "\"><div align=center class=\"title\">" . _ADMIN . "</div></td>";
        echo "</tr>\n";
        foreach ($arListTorrent as $torrentrow) {
            echo $torrentrow;
        }
    }
}