2025-07-05 22:26:42 +02:00

150 lines
8.1 KiB
Markdown

# skyscraper5 TODO
* [DONE] LocalStreamReader (und rsr-server) ausgliedern, damit Main Assembly wieder in MSIL kompiliert werden kann.
* [DONE] LocalStreamReader als eigene Assembly (Library)
* [DONE] rsr-server als eigene eigene Assembly (Console Application)
* [DONE] dvbtmagic als eigene Assembly, hat ja nicht wirklich was mit skyscraping zu tun.
* AC3 Parser (kein Decoder) fur Ancillary Data
* MP2 Parser (kein Decoder) fur Ancillary Data
* AAC Parser (kein Decoder) fur Ancillary Data
* MPEG-2 Parser (kein Decoder) fur Auxillary Data
* H.264 Parser (kein Decoder) fur Auxillary Data
* H.265 Parser (kein Decoder) fur Auxillary Data
* [DONE] LNB Typen definieren, und in der UI einstellbar machen
* [DONE] LNB Typen sollten pro Tuner-Anschluss, nicht pro Satellit definiert werden.
* [DONE] Antennen Typen definieren, und in der UI einstellbar machen
* [DONE] GPS Position sollte ermittelt werden konnen.
* [DONE] manuell
* [DONE] direkt angeschlossenes Gerat per SerialPort
* [DONE] via TCP aus gpsd
* [DONE] via UDP Broadcast/Multicast
* [DONE] Blindscan-Jobs in Datenbank schreiben. (inkl. Tuner-ID/MAC, LNB-Typ, Antennen-Typ und GPS Daten)
* [DONE] Blindscan-Ergebnisse in Datenbank schreiben
* rudimanteren Java-Port
* (inkl. Disketten-Image for the lulz - keine Abhangigkeiten außer vielleicht Apache Commons ;) )
* [DONE] uberlegen, ob sich satbeams.com scrapen lasst.
* [DONE] Dabei einzelne Satelliten, Beams und Footprints dieser Beams in DB schreiben,
* und dann in der UI Moglichkeit bieten, anhand von GPS-Daten, Antennen-Typ und LNB-Typ zu ermitteln welche Beams empfangbar sind.
* [DONE] satbeams.com geht definitiv nicht.
* [DONE] Aber das da: https://genmap.lyngsat.org/server2/kml
* [DONE] Das ist ein JSON, welches eine Liste an KML-Files zuruckgibt.
* [DONE] KML File parsen trivial - ist XML.
* [DONE] mithilfe von https://gis.stackexchange.com/questions/42879/check-if-lat-long-point-is-within-a-set-of-polygons-using-google-maps/46720#46720 testen ob in shape
* Blockstream parsen. Dazu Blog-Post "Anatomy of Blockstream Satellite" zur Hilfe nehmen. ( https://destevez.net/2022/10/anatomy-of-blockstream-satellite/ )
* Client/Server-Architektur fur ScraperStorage
* [DONE] Architektur aufbauen, um Handler fur eingehende MPE/IP Pakete auszugliedern
* [DONE] APRS in eben jenes ausgliedern
* [DONE] Plugin-System so ausbauen, dass Assembly-Scanning nur noch an einer Stelle notwendig ist.
* [DONE] T2MI Packet Types
* [DONE] StreamTypeAutodetection
* [DONE] Behandlung des Gewinners nicht im SkyscraperContext sondern im Contestant selber, sonst ist's witzlos.
* [DONE] ScraperStorageFactoryConnectionManager
* [DONE] TunerFactoryConnectionManager
* [DONE] TsDescriptorUnpacker
* [DONE] Mpeg2ExtensionDescriptorConverter
* [DONE] UserDefinedDescriptorUnpacker
* [DONE] bereits vorhandene PrivateDataSpecifiers in eigene Assemblys auslagern
* [DONE] DvbExtensionDescriptorConverter
* [DONE] DsmCcMessageUnpacker
* [DONE] PushMacManagementMessage
* [DONE] GPS in der UI auswählbar machen
* [DONE] Optional Fenster mit GPS Daten einblenden lassen
* [DONE] GPS via GeoIP simulieren
* [DONE] Kabel-TV Frequenzlistengenerator
* [DONE] sauberen Exception-Tree aufbauen, mit Vererbung und allem drum und dran.
* Tests mit Code-Coverage
* [DONE] TS-Generator als System.IO.Stream
* [DONE] PAT-Generator
* [DONE] PMT-Generator
* [DONE] SDT-Generator
* [DONE] CAT-Generator
* [DONE] TDT-Generator
* [DONE] TOT-Generator
* [DONE] Namespaces aufräumen
* [DONE] StreamReader Versionen prüfen. Eventuell eine KnownIssues Funktion zum Server hinzufügen? (Beispiel: StreamReader 1.2.4.101 sehr gut, StreamReader 1.2.5.176 doof)
* [DONE] Dafür PE-Parser hinzufügen (um DLLs und EXEn zu parsen)
* [DONE] DLL-Versionsinfo aus PE lesen.
* [DONE] 1.2.5.194 -> bad
* [DONE] 1.2.5.176 -> bad
* [DONE] 1.2.4.101 -> good
* Inhalte von einer Datenbank in eine andere kopieren.
* [DONE] Im SDT Parser sollte der Message Descriptor geparst werden.
* [DONE] Die Messages sollten natürlich auch in eine Datenbank geschrieben werden.
* [DONE] In TestDrid: Kooperativer Blindscan. Scannen mit einer Karte, zappen mit einer anderen.
* Tuning Retries
* ExternalEsIdDescriptor implementieren.
* Natürlich auch in die Datenbank schreiben.
* Unbekanntes Text Encoding auf Eutelsat 7, 12648 H, MIS3
* [DONE] "Unknown Protocol" 50
* [DONE] "Unknown Protocal" 47
* [DONE] In MinioObjectStorage.cs bei Zeile 132 - behandeln dass nicht immer unbedingt eine MinioException rauskommt!
* skyscraper5.Ietf.Rfc971.InternetHeader sollte Validatable implementieren.
* In Testdrid: Einen Notizblock
* Wenn ein Blindscan false zurückgibt, aber dennoch Ergebnisse geliefert hat, diese trotzdem abklopfen.
* [DONE] Paketfiltersystem hinzufügen, statt Pakete manuell zu droppen.
* [DONE] Aufzeichnungssystem in den Paketfilter verlagern.
* [DONE] Scramble Paket Dropper
* Tester ob zwischen Scramble und Non-Scramble geswitcht wird.
* Den Screenshotter da dran hängen!
* [DONE] TEI Paket Dropper
* [DONE] Prioritätensystem da dran hängen. (Schließlich sollen die Pakete immer zuerst aufgezeichnet werden)
* [DONE] Skip x (512) Packets Filter
* PCR Monitor dorthin verlagern
* TCP Proxy dorthin verlagern
* Descriptor 0x2E (46) bei PMT (TsDescriptorUnpacker.cs, Zeile 81)
* Netzwerkschnittstelle einbauen
* PCAP Writer
* UDPDump
* TAP Adapter (siehe https://github.com/HBSnail/UniversalTunTapDriver/blob/master/README.md )
* /dev/null
* IP-in-IP Encapsulation, new Socket(AddressFamily.InterNetwork, Socket.Raw, ProtocolType.IP)
* [DONE] Intelsat Internet reverse engineeren. Gutes Beispiel auf Intelsat 68,5°E 12625/H. TS Header ist nicht 4 sondern 9 Bytes
* [DONE] Oder auf Intelsat 72,1°E 12718/H
* [DONE] Hängt möglicherweise mit Digital Devices BBFRAMES zusammen?
* Ja, tut es, deshalb auch BBFRAME Header parsen
* SeaweedFS als File-Storage implementieren
* In GSE und MPE Paketen:
* [DONE] DNS Responses parsen und daraus "lernen"
* [DONE] DNS Type 39
* UDP L2TP & L2F Pakete parsen & reingucken. (z.B. in skyscraper_20240830_1254_0235E_11620_H_5931.ts)
* NTP parsen (z.B. in 12551_h_intelsat_like_internet.ts)
* [DONE] Von hier klauen: https://github.com/kapetan/dns
* In IP-in-IP Pakete reingucken.
* In IPv6 Encapsulation Pakete reingucken.
* In GRE Pakete reingucken.
* In RFC3652 Pakete (Type 253) reingucken. Ist in der Payload das Offset 6 = 0x45, so ist ein getunneltes IPv4 Paket. :)
* [DONE] ServiceListDescriptor im BatParser
* [DONE] ExtensionDescriptor 32, in DvbExtensionDescriptorConverter, Zeile 35
* [DONE] CAID 0x0649 in CaSystemNames
* [DONE] DNS Record Type 48 [ {Z:\Freebies\Datasets\SkyscraperLibrarian\DVB-S\E0008_Ku_Thor\skyscraper_20230404_2125_0010W_11876_V_19999.ts}, {Z:\Freebies\Datasets\SkyscraperLibrarian\DVB-S August 2024\Telstar15\skyscraper_20240826_1530_0150W_12596_V_44999.ts} ]
* [DONE] RCS Maps parsen
* [DONE] RCS Maps in DB schreiben
* [DONE] NuGet Caching Proxy
* [DONE] DNS Record Type 49213
* HLS Stream
* benötigt vorher einen PCR delayten Stream
* benötigt vorher einen Rate-Limited Stream
* [DONE] ScraperStorage ablösen, und stattdessen DataStorage und FileStorage einzeln setzen.
* .tar/.tar.gz File mit FilesystemStorage Inhalt importieren
* WGS84 zu Lat/Lon konvertieren - für RCS-Map.
* Beispielcode in C# hier: https://stackoverflow.com/a/16660841
* Benötigt vorher eine Ermittelung der UTM-Zone:
* Beispielcode zur Ermittelung der UTM-Zone (in R) hier: https://stackoverflow.com/a/68725547
* [DONE] IP-Protokoll 139 (skyscraper_20230408_1727_0390E_12739_H_3926_gse.ts)
* [DONE] DNS Record Type 20366 (skyscraper_20230410_1450_0660E_12626_V_38329.ts)
* [DONE] DNS IN ( {Z:\Freebies\Datasets\SkyscraperLibrarian\DVB-S August 2024\Telstar15\skyscraper_20240826_1530_0150W_12596_V_44999.ts} )
* [DONE] Für BigFiles: Gesplitteter Stream, für FAT32 und Freunde
* [DONE] Einen "Forget Blindscan Job" Button in der UI
* TransportProtocolDescriptor - unbekannte ProtocolIDs ohne Exception behandeln. (Vielleicht eine Warning?)
* Weitere Datenbanktreiber
* Microsoft SQL Server
* Oracle
* Cassandra
* SQLite
* MongoDB
* Redis
* IBM DB2
* Firebird
* ScraperStorage: Big File
* ScraperStorage: Big File mit Index