How openwrtbuild/fastgithub102 works
FastGithub is a GitHub-focused DNS service: it discovers candidate GitHub IPs, scans them for reachability and performance, retains scan results, then answers DNS queries with preferred addresses. Separate hosted jobs perform full scans and rescan known results; the DNS service can also update and restore the machine’s DNS settings on Windows. The graph includes the middleware pipeline and release-check capability. Some wiring is documented only by the README or source index, so unsupported implementation links are omitted.
Main entry points: GithubScanService.cs Scan coordinator · GithubLookupFacotry.cs Lookup factory · GithubMetaProvider.cs GitHub meta lookup · PublicDnsProvider.cs Public DNS lookup
Components 21
Address discovery
- Lookup factory
FastGithub.Scanner/GithubLookupFacotry.cs - GitHub meta lookup
FastGithub.Scanner/LookupProviders/GithubMetaProvider.cs - Public DNS lookup
FastGithub.Scanner/LookupProviders/PublicDnsProvider.cs - IP address lookup
FastGithub.Scanner/LookupProviders/IPAddressComProvider.cs - Domain-address pair
FastGithub.Scanner/DomainAddress.cs
Scanning and results
- Scan schedules
FastGithub.Scanner/GithubFullScanHostedService.cs - Result rescan schedule
FastGithub.Scanner/GithubResultScanHostedService.cs - Scan coordinator
FastGithub.Scanner/GithubScanService.cs - Middleware pipeline
FastGithub.Core/PipelineBuilder.cs - Scan checks
FastGithub.Scanner/ScanMiddlewares/HttpsScanMiddleware.cs - Scan context and history
FastGithub.Scanner/GithubContext.cs - Reachability results
FastGithub.Scanner/GithubScanResults.cs - DNS HTTP handler
FastGithub.Scanner/GithubDnsHttpHandler.cs
DNS service
- DNS server host
FastGithub.Dns/DnsHostedService.cs - GitHub query resolver
FastGithub.Dns/GithubRequestResolver.cs - Machine DNS settings
FastGithub.Dns/NameServiceUtil.cs
Runtime operations
- Upgrade schedule
FastGithub.Upgrade/UpgradeHostedService.cs - Release checker
FastGithub.Upgrade/UpgradeService.cs - Release metadata
FastGithub.Upgrade/GiteeRelease.cs
Other components
- DNS client
- Gitee releases
Connections 23
- DNS client → DNS server host: queries
- DNS server host → GitHub query resolver: routes queries
FastGithub.Dns/DnsHostedService.cs - GitHub query resolver → Reachability results: reads results
FastGithub.Dns/GithubRequestResolver.cs - DNS server host → Machine DNS settings: sets DNS
FastGithub.Dns/DnsHostedService.cs - Scan schedules → Scan coordinator: starts full scans
FastGithub.Scanner/GithubFullScanHostedService.cs - Result rescan schedule → Scan coordinator: starts result scans
FastGithub.Scanner/GithubResultScanHostedService.cs - Scan coordinator → Lookup factory: requests addresses
FastGithub.Scanner/GithubScanService.cs - Scan coordinator → Middleware pipeline: builds pipelines
FastGithub.Scanner/GithubScanService.cs - Scan coordinator → Scan checks: configures checks
FastGithub.Scanner/GithubScanService.cs - Scan coordinator → Scan context and history: creates contexts
FastGithub.Scanner/GithubScanService.cs - Scan coordinator → Reachability results: stores and reads results
FastGithub.Scanner/GithubScanService.cs - GitHub meta lookup → Domain-address pair: produces addresses
FastGithub.Scanner/LookupProviders/GithubMetaProvider.cs - Public DNS lookup → Domain-address pair: produces addresses
FastGithub.Scanner/LookupProviders/PublicDnsProvider.cs - Lookup factory → GitHub meta lookup: uses provider
- Lookup factory → Public DNS lookup: uses provider
- Lookup factory → IP address lookup: uses provider
- GitHub meta lookup → Gitee releases: fallback data
- Public DNS lookup → Gitee releases: queries DNS sources
- IP address lookup → Gitee releases: reverse lookup
- DNS HTTP handler → Reachability results: uses results
FastGithub.Scanner/GithubDnsHttpHandler.cs - Upgrade schedule → Release checker: runs check
FastGithub.Upgrade/UpgradeHostedService.cs - Release checker → Gitee releases: fetches releases
FastGithub.Upgrade/UpgradeService.cs - Release checker → Release metadata: parses release
FastGithub.Upgrade/UpgradeService.cs