[ 'name' => 'feed_type', 'type' => 'list', 'values' => [ 'Leaks' => 'Leaks', 'CVEs' => 'CVEs', 'DDoS' => 'DDoS', 'Ransomware' => 'Ransomware', 'Releases' => 'Releases', 'EOL' => "EOL" ] ] ]]; public function getURI() { switch ($this->getKey("feed_type")) { case 'Leaks': return 'https://pypbbsgyhtlerxdyfuvv.supabase.co/storage/v1/object/dane/leak.json'; break; case 'CVEs': return 'https://pypbbsgyhtlerxdyfuvv.supabase.co/storage/v1/object/dane/2025.json'; break; case 'DDoS': return 'https://pypbbsgyhtlerxdyfuvv.supabase.co/storage/v1/object/dane/ddos.json'; break; case 'Ransomware': return 'https://pypbbsgyhtlerxdyfuvv.supabase.co/storage/v1/object/dane/ransomware.json'; break; case 'EOL': return 'https://pypbbsgyhtlerxdyfuvv.supabase.co/storage/v1/object/dane/eol.json'; break; case 'Releases': return 'https://pypbbsgyhtlerxdyfuvv.supabase.co/storage/v1/object/dane/releases.json'; break; default: return 'https://cybermonit.com'; break; } } public function collectData() { $opts = array( 'accept: */*', 'apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InB5cGJic2d5aHRsZXJ4ZHlmdXZ2Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxMjUwNzAsImV4cCI6MjA1NTcwMTA3MH0.xmcCqJUgvRtVsp6XmaH1YmUeerqZRZNQ_XmCnpOEFAo', 'authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InB5cGJic2d5aHRsZXJ4ZHlmdXZ2Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxMjUwNzAsImV4cCI6MjA1NTcwMTA3MH0.xmcCqJUgvRtVsp6XmaH1YmUeerqZRZNQ_XmCnpOEFAo', 'origin: https://cybermonit.com', 'referer: https://cybermonit.com', 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/6.8.2 Chrome/122.0.6261.171 Safari/537.36', 'x-client-info: supabase-js-web/2.49.1', ); $html = getContents($this->getURI(), $opts); $data = json_decode($html, true); array_walk_recursive($data, function(&$item, $key) { $item = htmlspecialchars($item); }); switch ($this->getKey("feed_type")) { case 'Leaks': foreach ($data as $obj) { $this->items[] = [ 'title' => sprintf("%s - %s", empty($obj['domain']) ? 'Unknown' : $obj['domain'], $obj['data_leaked']), 'timestamp' => $obj['breach_date'], 'uri' => "https://cybermonit.com/leaks", 'categories' => ['leaks'], 'content' => $obj['description'], 'uid' => sha1(sprintf("%s.%s.%s", $obj['domain'], $obj['breach_date'], self::SALT)) ]; } break; case 'CVEs': foreach ($data as $obj) { $this->items[] = [ 'title' => sprintf("%s (%s %s) - %s", $obj['cve_id'], $obj['score'], $obj['severity_en'], substr($obj['description'], 0, 150).'[...]'), 'timestamp' => $obj['publishedDate'], 'uri' => "https://cybermonit.com/cve", "categories" => ['CVEs'], 'content' => $obj['description'], 'uid' => sha1(sprintf("%s.%s.%s", $obj['cve_id'], $obj['publishedDate'], self::SALT)) ]; } break; case 'DDoS': foreach ($data['targets'] as $obj) { $this->items[] = [ 'title' => sprintf("%s", $obj['host']), 'timestamp' => null, 'uri' => "https://cybermonit.com/ddos", "categories" => ['DDoS'], "content" => sprintf("IP: %s
Type: %s
Method: %s
Port: %s
Use SSL: %s", $obj['ip'], $obj['type'], $obj['method'], $obj['port'], $obj['use_ssl'] == 1 ? "True" : "False"), 'uid' => sha1(sprintf("%s.%s.%s", $obj['host'], $obj['ip'], self::SALT)) ]; } break; case 'Ransomware': foreach ($data as $obj) { $this->items[] = [ 'title' => sprintf("%s attack on %s (%s)", $obj['group'], $obj['victim'], $obj['country']), 'timestamp' => $obj['attackdate'], "categories" => ['Ransomware', $obj['group']], 'uri' => "https://cybermonit.com/ransomware", "content" => "Ransomware attack ({$obj['group']}) on {$obj['victim']}, country: {$obj['country']}", 'uid' => sha1(sprintf("%s.%s.%s", $obj['victim'], $obj['attackdate'], self::SALT)) ]; } break; case 'Releases': foreach ($data as $obj) { $this->items[] = [ 'title' => sprintf("%s %s", $obj['nazwa_projektu'], $obj['wersja']), 'timestamp' => $obj['data_wydania'], 'categories' => ['Releases'], 'uri' => $obj['url_zdjecia'], 'content' => sprintf("%s updated to version %s. Project URL: %s, Release notes: %s", $obj['nazwa_projektu'], $obj['wersja'], $obj['url_projektu'], $obj['url_zdjecia']), 'uid' => sha1(sprintf("%s.%s.%s", $obj['nazwa_projektu'], $obj['data_wydania'], self::SALT)) ]; } break; case 'EOL': foreach ($data as $key => $v) { $val = $v[0]; $this->items[] = [ 'title' => sprintf("%s %s %s", $key, $val['cycle'], $val['lts'] == true ? 'LTS' : ''), 'timestamp'=> null, 'categories'=> ['EOL'], 'uri' => $this->getURI(), 'content' => sprintf("Product: %s
Version: %s
Release date: %s
End of life: %s", $key, $val['cycle'], $val['releaseDate'], $val['eol']), 'uid' => sha1(sprintf("%s.%s.%s", $key, $val['eol'], self::SALT)) ]; } break; default: break; } usort($this->items, function($a, $b) { if ($a['timestamp'] == $b['timestamp']) { return 0; } return ($a['timestamp'] > $b['timestamp']) ? -1 : 1; }); } }