Showing preview only (5,546K chars total). Download the full file or copy to clipboard to get everything.
Repository: TechnitiumSoftware/DnsServer
Branch: master
Commit: 7f7ce2685ead
Files: 314
Total size: 5.2 MB
Directory structure:
gitextract_88vord7i/
├── .gitattributes
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── APIDOCS.md
├── Apps/
│ ├── AdvancedBlockingApp/
│ │ ├── AdvancedBlockingApp.csproj
│ │ ├── App.cs
│ │ └── dnsApp.config
│ ├── AdvancedForwardingApp/
│ │ ├── AdvancedForwardingApp.csproj
│ │ ├── App.cs
│ │ ├── adguard-upstreams.txt
│ │ └── dnsApp.config
│ ├── AutoPtrApp/
│ │ ├── App.cs
│ │ ├── AutoPtrApp.csproj
│ │ └── dnsApp.config
│ ├── BlockPageApp/
│ │ ├── App.cs
│ │ ├── BlockPageApp.csproj
│ │ ├── dnsApp.config
│ │ └── wwwroot/
│ │ └── index.html
│ ├── DefaultRecordsApp/
│ │ ├── App.cs
│ │ ├── DefaultRecordsApp.csproj
│ │ └── dnsApp.config
│ ├── Dns64App/
│ │ ├── App.cs
│ │ ├── Dns64App.csproj
│ │ └── dnsApp.config
│ ├── DnsBlockListApp/
│ │ ├── App.cs
│ │ ├── DnsBlockListApp.csproj
│ │ ├── dnsApp.config
│ │ ├── domain-blocklist.txt
│ │ └── ip-blocklist.txt
│ ├── DnsRebindingProtectionApp/
│ │ ├── App.cs
│ │ ├── DnsRebindingProtectionApp.csproj
│ │ └── dnsApp.config
│ ├── DropRequestsApp/
│ │ ├── App.cs
│ │ ├── DropRequestsApp.csproj
│ │ └── dnsApp.config
│ ├── FailoverApp/
│ │ ├── Address.cs
│ │ ├── CNAME.cs
│ │ ├── EmailAlert.cs
│ │ ├── FailoverApp.csproj
│ │ ├── HealthCheck.cs
│ │ ├── HealthCheckResponse.cs
│ │ ├── HealthMonitor.cs
│ │ ├── HealthService.cs
│ │ ├── WebHook.cs
│ │ └── dnsApp.config
│ ├── FilterAaaaApp/
│ │ ├── App.cs
│ │ ├── FilterAaaaApp.csproj
│ │ ├── README.md
│ │ └── dnsApp.config
│ ├── GeoContinentApp/
│ │ ├── Address.cs
│ │ ├── CNAME.cs
│ │ ├── GeoContinentApp.csproj
│ │ ├── MaxMind.cs
│ │ ├── ReadMe.txt
│ │ └── dnsApp.config
│ ├── GeoCountryApp/
│ │ ├── Address.cs
│ │ ├── CNAME.cs
│ │ ├── GeoCountryApp.csproj
│ │ ├── MaxMind.cs
│ │ ├── ReadMe.txt
│ │ └── dnsApp.config
│ ├── GeoDistanceApp/
│ │ ├── Address.cs
│ │ ├── CNAME.cs
│ │ ├── GeoDistanceApp.csproj
│ │ ├── MaxMind.cs
│ │ ├── ReadMe.txt
│ │ └── dnsApp.config
│ ├── LogExporterApp/
│ │ ├── App.cs
│ │ ├── AppConfig.cs
│ │ ├── LogEntry.cs
│ │ ├── LogExporterApp.csproj
│ │ ├── Strategy/
│ │ │ ├── ExportManager.cs
│ │ │ ├── FileExportStrategy.cs
│ │ │ ├── HttpExportStrategy.cs
│ │ │ ├── IExportStrategy.cs
│ │ │ └── SyslogExportStrategy.cs
│ │ └── dnsApp.config
│ ├── MispConnectorApp/
│ │ ├── App.cs
│ │ ├── MispConnectorApp.csproj
│ │ ├── README.md
│ │ └── dnsApp.config
│ ├── NoDataApp/
│ │ ├── App.cs
│ │ ├── NoDataApp.csproj
│ │ └── dnsApp.config
│ ├── NxDomainApp/
│ │ ├── App.cs
│ │ ├── NxDomainApp.csproj
│ │ └── dnsApp.config
│ ├── NxDomainOverrideApp/
│ │ ├── App.cs
│ │ ├── NxDomainOverrideApp.csproj
│ │ └── dnsApp.config
│ ├── QueryLogsMySqlApp/
│ │ ├── App.cs
│ │ ├── QueryLogsMySqlApp.csproj
│ │ └── dnsApp.config
│ ├── QueryLogsSqlServerApp/
│ │ ├── App.cs
│ │ ├── QueryLogsSqlServerApp.csproj
│ │ └── dnsApp.config
│ ├── QueryLogsSqliteApp/
│ │ ├── App.cs
│ │ ├── QueryLogsSqliteApp.csproj
│ │ └── dnsApp.config
│ ├── SplitHorizonApp/
│ │ ├── AddressTranslation.cs
│ │ ├── README.md
│ │ ├── SimpleAddress.cs
│ │ ├── SimpleCNAME.cs
│ │ ├── SplitHorizonApp.csproj
│ │ └── dnsApp.config
│ ├── WeightedRoundRobinApp/
│ │ ├── Address.cs
│ │ ├── CNAME.cs
│ │ ├── WeightedRoundRobinApp.csproj
│ │ └── dnsApp.config
│ ├── WhatIsMyDnsApp/
│ │ ├── App.cs
│ │ ├── WhatIsMyDnsApp.csproj
│ │ └── dnsApp.config
│ ├── WildIpApp/
│ │ ├── App.cs
│ │ ├── WildIpApp.csproj
│ │ └── dnsApp.config
│ ├── ZoneAliasApp/
│ │ ├── App.cs
│ │ ├── ZoneAliasApp.csproj
│ │ └── dnsApp.config
│ └── apps2.json
├── CHANGELOG.md
├── DnsServer.sln
├── DnsServerApp/
│ ├── DnsServerApp.csproj
│ ├── Program.cs
│ ├── Properties/
│ │ └── PublishProfiles/
│ │ └── FolderProfile.pubxml
│ ├── install.sh
│ ├── start.bat
│ ├── start.sh
│ ├── systemd.service
│ └── uninstall.sh
├── DnsServerCore/
│ ├── Auth/
│ │ ├── AuthManager.cs
│ │ ├── Group.cs
│ │ ├── Permission.cs
│ │ ├── User.cs
│ │ └── UserSession.cs
│ ├── Cluster/
│ │ ├── ClusterManager.cs
│ │ ├── ClusterNode.cs
│ │ └── InternalDnsClient.cs
│ ├── Dhcp/
│ │ ├── DhcpMessage.cs
│ │ ├── DhcpOption.cs
│ │ ├── DhcpServer.cs
│ │ ├── DhcpServerException.cs
│ │ ├── Exclusion.cs
│ │ ├── Lease.cs
│ │ ├── Options/
│ │ │ ├── BroadcastAddressOption.cs
│ │ │ ├── CAPWAPAccessControllerOption.cs
│ │ │ ├── ClasslessStaticRouteOption.cs
│ │ │ ├── ClientFullyQualifiedDomainNameOption.cs
│ │ │ ├── ClientIdentifierOption.cs
│ │ │ ├── DhcpMessageTypeOption.cs
│ │ │ ├── DomainNameOption.cs
│ │ │ ├── DomainNameServerOption.cs
│ │ │ ├── DomainSearchOption.cs
│ │ │ ├── HostNameOption.cs
│ │ │ ├── IpAddressLeaseTimeOption.cs
│ │ │ ├── MaximumDhcpMessageSizeOption.cs
│ │ │ ├── NetBiosNameServerOption.cs
│ │ │ ├── NetworkTimeProtocolServersOption.cs
│ │ │ ├── OptionOverloadOption.cs
│ │ │ ├── ParameterRequestListOption.cs
│ │ │ ├── RebindingTimeValueOption.cs
│ │ │ ├── RenewalTimeValueOption.cs
│ │ │ ├── RequestedIpAddressOption.cs
│ │ │ ├── RouterOption.cs
│ │ │ ├── ServerIdentifierOption.cs
│ │ │ ├── SubnetMaskOption.cs
│ │ │ ├── TftpServerAddressOption.cs
│ │ │ ├── VendorClassIdentifierOption.cs
│ │ │ └── VendorSpecificInformationOption.cs
│ │ └── Scope.cs
│ ├── Dns/
│ │ ├── Applications/
│ │ │ ├── DnsApplication.cs
│ │ │ ├── DnsApplicationAssemblyLoadContext.cs
│ │ │ ├── DnsApplicationManager.cs
│ │ │ └── InternalDnsServer.cs
│ │ ├── DirectDnsClient.cs
│ │ ├── DnsServer.cs
│ │ ├── DnsServerException.cs
│ │ ├── Dnssec/
│ │ │ ├── DnssecEcdsaPrivateKey.cs
│ │ │ ├── DnssecEddsaPrivateKey.cs
│ │ │ ├── DnssecPrivateKey.cs
│ │ │ └── DnssecRsaPrivateKey.cs
│ │ ├── ResolverDnsCache.cs
│ │ ├── ResolverPrefetchDnsCache.cs
│ │ ├── ResourceRecords/
│ │ │ ├── AuthRecordInfo.cs
│ │ │ ├── CacheRecordInfo.cs
│ │ │ ├── DnsNSRecordDataExtended.cs
│ │ │ ├── DnsResourceRecordExtensions.cs
│ │ │ ├── DnsSOARecordDataExtended.cs
│ │ │ ├── GenericRecordInfo.cs
│ │ │ ├── HistoryRecordInfo.cs
│ │ │ ├── NSRecordInfo.cs
│ │ │ ├── SOARecordInfo.cs
│ │ │ └── SVCBRecordInfo.cs
│ │ ├── StatsManager.cs
│ │ ├── Trees/
│ │ │ ├── AuthZoneNode.cs
│ │ │ ├── AuthZoneTree.cs
│ │ │ ├── CacheZoneTree.cs
│ │ │ ├── DomainTree.cs
│ │ │ ├── InvalidDomainNameException.cs
│ │ │ └── ZoneTree.cs
│ │ ├── ZoneManagers/
│ │ │ ├── AllowedZoneManager.cs
│ │ │ ├── AuthZoneManager.cs
│ │ │ ├── BlockListZoneManager.cs
│ │ │ ├── BlockedZoneManager.cs
│ │ │ └── CacheZoneManager.cs
│ │ └── Zones/
│ │ ├── ApexZone.cs
│ │ ├── AuthZone.cs
│ │ ├── AuthZoneInfo.cs
│ │ ├── CacheZone.cs
│ │ ├── CatalogSubDomainZone.cs
│ │ ├── CatalogZone.cs
│ │ ├── ForwarderSubDomainZone.cs
│ │ ├── ForwarderZone.cs
│ │ ├── PrimarySubDomainZone.cs
│ │ ├── PrimaryZone.cs
│ │ ├── SecondaryCatalogSubDomainZone.cs
│ │ ├── SecondaryCatalogZone.cs
│ │ ├── SecondaryForwarderZone.cs
│ │ ├── SecondarySubDomainZone.cs
│ │ ├── SecondaryZone.cs
│ │ ├── StubZone.cs
│ │ ├── SubDomainZone.cs
│ │ └── Zone.cs
│ ├── DnsServerCore.csproj
│ ├── DnsWebService.cs
│ ├── DnsWebServiceException.cs
│ ├── DnsWebServiceLegacy.cs
│ ├── Extensions.cs
│ ├── InvalidTokenWebServiceException.cs
│ ├── LogManager.cs
│ ├── TwoFactorAuthRequiredWebServiceException.cs
│ ├── WebServiceApi.cs
│ ├── WebServiceAppsApi.cs
│ ├── WebServiceAuthApi.cs
│ ├── WebServiceClusterApi.cs
│ ├── WebServiceDashboardApi.cs
│ ├── WebServiceDhcpApi.cs
│ ├── WebServiceLogsApi.cs
│ ├── WebServiceOtherZonesApi.cs
│ ├── WebServiceSettingsApi.cs
│ ├── WebServiceZonesApi.cs
│ ├── dohwww/
│ │ ├── css/
│ │ │ └── main.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── main.js
│ │ └── robots.txt
│ ├── named.root
│ ├── root-anchors.xml
│ └── www/
│ ├── css/
│ │ └── main.css
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── index.html
│ ├── js/
│ │ ├── apps.js
│ │ ├── auth.js
│ │ ├── cluster.js
│ │ ├── common.js
│ │ ├── dhcp.js
│ │ ├── dnsclient.js
│ │ ├── logs.js
│ │ ├── main.js
│ │ ├── other-zones.js
│ │ └── zone.js
│ ├── json/
│ │ ├── dnsclient-server-list-builtin.json
│ │ ├── quick-block-lists-builtin.json
│ │ ├── quick-forwarders-list-builtin.json
│ │ └── readme.txt
│ └── robots.txt
├── DnsServerCore.ApplicationCommon/
│ ├── DnsServerCore.ApplicationCommon.csproj
│ ├── IDnsAppRecordRequestHandler.cs
│ ├── IDnsApplication.cs
│ ├── IDnsApplicationPreference.cs
│ ├── IDnsAuthoritativeRequestHandler.cs
│ ├── IDnsPostProcessor.cs
│ ├── IDnsQueryLogger.cs
│ ├── IDnsQueryLogs.cs
│ ├── IDnsRequestBlockingHandler.cs
│ ├── IDnsRequestController.cs
│ └── IDnsServer.cs
├── DnsServerCore.HttpApi/
│ ├── DnsServerCore.HttpApi.csproj
│ ├── HttpApiClient.cs
│ ├── HttpApiClientException.cs
│ ├── InvalidTokenHttpApiClientException.cs
│ ├── Models/
│ │ ├── ClusterInfo.cs
│ │ ├── DashboardStats.cs
│ │ └── SessionInfo.cs
│ └── TwoFactorAuthRequiredHttpApiClientException.cs
├── DnsServerSystemTrayApp/
│ ├── DnsProvider.cs
│ ├── DnsServerSystemTrayApp.csproj
│ ├── MainApplicationContext.cs
│ ├── NotifyIconExtension.cs
│ ├── Program.cs
│ ├── Properties/
│ │ ├── PublishProfiles/
│ │ │ └── FolderProfile.pubxml
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── frmAbout.Designer.cs
│ ├── frmAbout.cs
│ ├── frmAbout.resx
│ ├── frmManageDnsProviders.Designer.cs
│ ├── frmManageDnsProviders.cs
│ └── frmManageDnsProviders.resx
├── DnsServerWindowsService/
│ ├── DnsServerWindowsService.csproj
│ ├── DnsServiceWorker.cs
│ ├── Program.cs
│ └── Properties/
│ └── PublishProfiles/
│ └── FolderProfile.pubxml
├── DnsServerWindowsSetup/
│ ├── DnsServerSetup.iss
│ ├── appinstall.iss
│ ├── dotnet.iss
│ ├── helper.iss
│ ├── legacy.iss
│ └── service.iss
├── DockerEnvironmentVariables.md
├── Dockerfile
├── LICENSE
├── README.md
├── SECURITY.md
├── build.md
└── docker-compose.yml
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
*.sh text eol=lf
supervisor.conf text eol=lf
systemd.service text eol=lf
# Using the HEREDOC feature expects LF:
Dockerfile text eol=lf
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: technitium # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
[Xx]64/
[Xx]86/
[Bb]uild/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Un-comment the next line if you do not want to checkin
# your web deploy settings because they may include unencrypted
# passwords
#*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Microsoft Azure ApplicationInsights config file
ApplicationInsights.config
# Windows Store app package directory
AppPackages/
BundleArtifacts/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# LightSwitch generated files
GeneratedArtifacts/
ModelManifest.xml
# Paket dependency manager
.paket/paket.exe
# FAKE - F# Make
.fake/
Other/
================================================
FILE: APIDOCS.md
================================================
# Technitium DNS Server API Documentation
Technitium DNS Server provides a HTTP API which is used by the web console to perform all actions. Thus any action that the web console does can be performed using this API from your own applications.
The URL in the documentation uses `localhost` and port `5380`. You should use the hostname/IP address and port that is specific to your DNS server instance.
## API Request
Unless it is explicitly specified, all HTTP API requests can use both `GET` or `POST` methods. When using `POST` method to pass the API parameters as form data, the `Content-Type` header must be set to `application/x-www-form-urlencoded`. When the HTTP API call is used to upload files, the call must use `POST` method and the `Content-Type` header must be set to `multipart/form-data`.
Note! The "set" type of API requests will overwrite any existing value managed by that call. The "add" type of API requests will append to existing value managed by the call.
## API Response Format
The HTTP API returns a JSON formatted response for all requests. The JSON object returned contains `status` property which indicate if the request was successful.
The `status` property can have following values:
- `ok`: This indicates that the call was successful.
- `error`: This response tells the call failed and provides additional properties that provide details about the error.
- `invalid-token`: When a session has expired or an invalid token was provided this response is received.
- `2fa-required`: When a user has two-factor authentication enabled and the OTP was not provided during login, change password, etc. API calls.
A successful response will look as shown below. Note that there will be other properties in the response which are specific to the request that was made.
```
{
"status": "ok"
}
```
In case of errors, the response will look as shown below. The `errorMessage` property can be shown in the UI to the user while the other two properties are useful for debugging.
```
{
"status": "error",
"errorMessage": "error message",
"stackTrace": "application stack trace",
"innerErrorMessage": "inner exception message"
}
```
## Name Server Address Format
The DNS server uses a specific text format to define the name server address to allow specifying multiple parameters like the domain name, IP address, port or URL. This format is used in the web console as well as in this API. It is used to specify forwarder address in DNS settings, conditional forwarder zone's FWD record, or the server address in DNS Client resolve query API calls.
- A name server address with just an IP address is specified just as its string literal with optional port number is as shown: `1.1.1.1` or `8.8.8.8:53`. When port is not specified, the default port number for the selected DNS transport protocol is used.
- A name server address with just a domain name is specified similarly as its string literal with optional port number is as shown: `dns.quad9.net:853` or `cloudflare-dns.com`. When port is not specified, the default port number for the selected DNS transport protocol is used.
- A combination of domain name and IP address together with optional port number is as shown: `cloudflare-dns.com (1.1.1.1)`, `dns.quad9.net (9.9.9.9:853)` or `dns.quad9.net:853 (9.9.9.9)`. Here, the domain name (with optional port number) is specified and the IP address (with optional port number) is specified in a round bracket. When port is not specified, the default port number for the selected DNS transport protocol is used. This allows the DNS server to use the specified IP address instead of trying to resolve it separately.
- A name server address that specifies a DNS-over-HTTPS URL is specified just as its string literal is as shown: `https://cloudflare-dns.com/dns-query`
- A combination of DNS-over-HTTPS URL and IP address together is as shown: `https://cloudflare-dns.com/dns-query (1.1.1.1)`. Here, the IP address of the domain name in the URL is specified in the round brackets. This allows the DNS server to use the specified IP address instead of trying to resolve it separately.
- IPv6 addresses must always be enclosed in square brackets when port is specified as shown: `cloudflare-dns.com ([2606:4700:4700::1111]:853)` or `[2606:4700:4700::1111]:853`
## User API Calls
These API calls allow to a user to login, logout, perform account management, etc. Once logged in, a session token is returned which MUST be used with all other API calls.
### Login
This call authenticates with the server and generates a session token to be used for subsequent API calls. The session token expires as per the user's session expiry timeout value (default 30 minutes) from the last API call.
URL:\
`http://localhost:5380/api/user/login?user=admin&pass=admin&includeInfo=true`
OBSOLETE PATH:\
`/api/login`
PERMISSIONS:\
None
WHERE:
- `user`: The username for the user account. The built-in administrator username on the DNS server is `admin`.
- `pass`: The password for the user account. The default password for `admin` user is `admin`.
- `totp` (optional): The time-based one-time password for the user account if it has Two Factor Authentication (2FA) enabled.
- `includeInfo` (optional): Includes basic info relevant for the user in response.
WARNING: It is highly recommended to change the password on first use to avoid security related issues.
RESPONSE:
```
{
"displayName": "Administrator",
"username": "admin",
"totpEnabled": false,
"token": "932b2a3495852c15af01598f62563ae534460388b6a370bfbbb8bb6094b698e9",
"info": {
"version": "14.3",
"dnsServerDomain": "server1",
"defaultRecordTtl": 3600,
"defaultNsRecordTtl": 14400,
"defaultSoaRecordTtl": 900,
"permissions": {
"Dashboard": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Zones": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Cache": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Allowed": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Blocked": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Apps": {
"canView": true,
"canModify": true,
"canDelete": true
},
"DnsClient": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Settings": {
"canView": true,
"canModify": true,
"canDelete": true
},
"DhcpServer": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Administration": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Logs": {
"canView": true,
"canModify": true,
"canDelete": true
}
}
},
"status": "ok"
}
```
WHERE:
- `token`: Is the session token generated that MUST be used with all subsequent API calls.
### Create API Token
Allows creating a non-expiring API token that can be used with automation scripts to make API calls. The token allows access to API calls with the same privileges as that of the user account. Thus its recommended to create a separate user account with limited permissions as required by the specific task that the token will be used for. The token cannot be used to change the user's password, or update the user profile details.
URL:\
`http://localhost:5380/api/user/createToken?user=admin&pass=admin&tokenName=MyToken1`
PERMISSIONS:\
None
WHERE:
- `user`: The username for the user account for which to generate the API token.
- `pass`: The password for the user account.
- `totp` (optional): The time-based one-time password for the user account if it has Two Factor Authentication (2FA) enabled.
- `tokenName`: The name of the created token to identify its session.
RESPONSE:
```
{
"username": "admin",
"tokenName": "MyToken1",
"token": "932b2a3495852c15af01598f62563ae534460388b6a370bfbbb8bb6094b698e9",
"status": "ok"
}
```
WHERE:
- `token`: Is the session token generated that MUST be used with all subsequent API calls.
### Logout
This call ends the session generated by the `login` or the `createToken` call. The `token` would no longer be valid after calling the `logout` API.
URL:\
`http://localhost:5380/api/user/logout?token=932b2a3495852c15af01598f62563ae534460388b6a370bfbbb8bb6094b698e9`
OBSOLETE PATH:\
`/api/logout`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"status": "ok"
}
```
### Get Session Info
Returns the same info as that of the `login` or the `createToken` calls for the session specified by the token.
URL:\
`http://localhost:5380/api/user/session/get?token=932b2a3495852c15af01598f62563ae534460388b6a370bfbbb8bb6094b698e9`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"displayName": "Administrator",
"username": "admin",
"totpEnabled": false,
"token": "932b2a3495852c15af01598f62563ae534460388b6a370bfbbb8bb6094b698e9",
"info": {
"version": "14.0",
"uptimestamp": "2023-07-29T08:01:31.1117463Z",
"dnsServerDomain": "server1.example.com",
"clusterInitialized": true,
"clusterDomain": "example.com"
"defaultRecordTtl": 3600,
"useSoaSerialDateScheme": false,
"dnssecValidation": true,
"permissions": {
"Dashboard": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Zones": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Cache": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Allowed": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Blocked": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Apps": {
"canView": true,
"canModify": true,
"canDelete": true
},
"DnsClient": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Settings": {
"canView": true,
"canModify": true,
"canDelete": true
},
"DhcpServer": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Administration": {
"canView": true,
"canModify": true,
"canDelete": true
},
"Logs": {
"canView": true,
"canModify": true,
"canDelete": true
}
}
},
"status": "ok"
}
```
### Delete User Session
Allows deleting a session for the current user.
URL:\
`http://localhost:5380/api/user/session/delete?token=x&partialToken=620c3bfcd09d0a07`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `partialToken`: The partial token as returned by the user profile details API call.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
### Change Password
Allows changing the password for the current logged in user account.
NOTE: It is highly recommended to change the `admin` user password on first use to avoid security related issues.
URL:\
`http://localhost:5380/api/user/changePassword?token=x&pass=password&newPass=newpassword`
OBSOLETE PATH:\
`/api/changePassword`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated only by the `login` call.
- `pass`: The current password for the currently logged in user.
- `newPass`: The new password to be set for the currently logged in user.
- `totp` (optional): The 6-digit code from the authenticator app if the user has 2FA enabled.
- `iterations` (optional): The number of iterations for PBKDF2 SHA256 password hashing.
RESPONSE:
```
{
"status": "ok"
}
```
### Initialize 2FA
Initializes two-factor authentication for the current logged in user account. The secret returned by this API call needs to be used with authenticator apps like microsoft Authenticator or Google Authenticator. This call is the first step to enable 2FA followed by calling the Enable 2FA API call.
URL:\
`http://localhost:5380/api/user/2fa/init?token=x`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated only by the `login` call.
RESPONSE:
```
{
"response": {
"totpEnabled": false,
"qrCodePngImage": "iVBORw0KGgoAAAANSUhEU...",
"secret": "RZ56CYOXKAXI5D23"
},
"status": "ok"
}
```
### Enable 2FA
Enables two-factor authentication for the current logged in user account. This API call can be called only after the Initialize 2FA API call.
URL:\
`http://localhost:5380/api/user/2fa/enable?token=x`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated only by the `login` call.
- `totp`: The 6-digit code from the authenticator app.
RESPONSE:
```
{
"status": "ok"
}
```
### Disable 2FA
Disables two-factor authentication for the current logged in user account.
URL:\
`http://localhost:5380/api/user/2fa/disable?token=x`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated only by the `login` call.
RESPONSE:
```
{
"status": "ok"
}
```
### Get User Profile Details
Gets the user account profile details.
URL:\
`http://localhost:5380/api/user/profile/get?token=x`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"response": {
"displayName": "Administrator",
"username": "admin",
"totpEnabled": false,
"disabled": false,
"previousSessionLoggedOn": "2022-09-15T12:59:05.944Z",
"previousSessionRemoteAddress": "127.0.0.1",
"recentSessionLoggedOn": "2022-09-15T13:57:50.1843973Z",
"recentSessionRemoteAddress": "127.0.0.1",
"sessionTimeoutSeconds": 1800,
"memberOfGroups": [
"Administrators"
],
"sessions": [
{
"username": "admin",
"isCurrentSession": true,
"partialToken": "620c3bfcd09d0a07",
"type": "Standard",
"tokenName": null,
"lastSeen": "2022-09-15T13:58:02.4728Z",
"lastSeenRemoteAddress": "127.0.0.1",
"lastSeenUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0"
}
]
},
"status": "ok"
}
```
### Set User Profile Details
Allows changing user account profile values.
URL:\
`http://localhost:5380/api/user/profile/set?token=x&displayName=Administrator&sessionTimeoutSeconds=1800`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated only by the `login` call.
- `displayName` (optional): The display name to set for the user account.
- `sessionTimeoutSeconds` (optional): The session timeout value to set in seconds for the user account.
RESPONSE:
```
{
"response": {
"displayName": "Administrator",
"username": "admin",
"totpEnabled": false,
"disabled": false,
"previousSessionLoggedOn": "2022-09-15T12:59:05.944Z",
"previousSessionRemoteAddress": "127.0.0.1",
"recentSessionLoggedOn": "2022-09-15T13:57:50.1843973Z",
"recentSessionRemoteAddress": "127.0.0.1",
"sessionTimeoutSeconds": 1800,
"memberOfGroups": [
"Administrators"
],
"sessions": [
{
"username": "admin",
"isCurrentSession": true,
"partialToken": "620c3bfcd09d0a07",
"type": "Standard",
"tokenName": null,
"lastSeen": "2022-09-15T14:00:50.288738Z",
"lastSeenRemoteAddress": "127.0.0.1",
"lastSeenUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0"
}
]
},
"status": "ok"
}
```
### Check For Update
This call requests the server to check for software update.
URL:\
`http://localhost:5380/api/user/checkForUpdate?token=x`
OBSOLETE PATH:\
`/api/checkForUpdate`
PERMISSIONS:\
None
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"response": {
"updateAvailable": true,
"updateVersion": "9.0",
"currentVersion": "8.1.4",
"updateTitle": "New Update Available!",
"updateMessage": "Follow the instructions from the link below to update the DNS server to the latest version. Read the change logs before installing the update to know if there are any breaking changes.",
"downloadLink": "https://download.technitium.com/dns/DnsServerSetup.zip",
"instructionsLink": "https://blog.technitium.com/2017/11/running-dns-server-on-ubuntu-linux.html",
"changeLogLink": "https://github.com/TechnitiumSoftware/DnsServer/blob/master/CHANGELOG.md"
},
"status": "ok"
}
```
## Dashboard API Calls
These API calls provide access to dashboard stats and allow deleting stat files.
### Get Stats
Returns the DNS stats that are displayed on the web console dashboard.
URL:\
`http://localhost:5380/api/dashboard/stats/get?token=x&type=LastHour&utc=true`
OBSOLETE PATH:\
`api/getStats`
PERMISSIONS:\
Dashboard: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node`: The node domain name for which the stats data is needed. When unspecified, the current node is used. Set node name as `cluster` to get aggregate stats for the entire cluster. This parameter can be used only when Clustering is initialized.
- `type` (optional): The duration type for which valid values are: [`LastHour`, `LastDay`, `LastWeek`, `LastMonth`, `LastYear`, `Custom`]. Default value is `LastHour`.
- `utc` (optional): Set to `true` to return the main chart data with labels in UTC date time format using which the labels can be converted into local time for display using the received `labelFormat`.
- `dontTrimQueryTypeData` (optional): Set to `true` to get full data for query type chart instead of top 10 entries. Default value is `false` when unspecified.
- `start` (optional): The start date in ISO 8601 format. Applies only to `custom` type.
- `end` (optional): The end date in ISO 8601 format. Applies only to `custom` type.
RESPONSE:
```
{
"response": {
"stats": {
"totalQueries": 925,
"totalNoError": 834,
"totalServerFailure": 1,
"totalNxDomain": 90,
"totalRefused": 0,
"totalAuthoritative": 47,
"totalRecursive": 348,
"totalCached": 481,
"totalBlocked": 49,
"totalDropped": 0,
"totalClients": 6,
"zones": 19,
"cachedEntries": 6330,
"allowedZones": 10,
"blockedZones": 1,
"allowListZones": 0,
"blockListZones": 307447
},
"mainChartData": {
"labelFormat": "HH:mm",
"labels": [
"2024-02-04T10:38:00.0000000Z",
"2024-02-04T10:39:00.0000000Z",
"2024-02-04T10:40:00.0000000Z",
"2024-02-04T10:41:00.0000000Z",
"2024-02-04T10:42:00.0000000Z",
"2024-02-04T10:43:00.0000000Z",
"2024-02-04T10:44:00.0000000Z",
"2024-02-04T10:45:00.0000000Z",
"2024-02-04T10:46:00.0000000Z",
"2024-02-04T10:47:00.0000000Z",
"2024-02-04T10:48:00.0000000Z",
"2024-02-04T10:49:00.0000000Z",
"2024-02-04T10:50:00.0000000Z",
"2024-02-04T10:51:00.0000000Z",
"2024-02-04T10:52:00.0000000Z",
"2024-02-04T10:53:00.0000000Z",
"2024-02-04T10:54:00.0000000Z",
"2024-02-04T10:55:00.0000000Z",
"2024-02-04T10:56:00.0000000Z",
"2024-02-04T10:57:00.0000000Z",
"2024-02-04T10:58:00.0000000Z",
"2024-02-04T10:59:00.0000000Z",
"2024-02-04T11:00:00.0000000Z",
"2024-02-04T11:01:00.0000000Z",
"2024-02-04T11:02:00.0000000Z",
"2024-02-04T11:03:00.0000000Z",
"2024-02-04T11:04:00.0000000Z",
"2024-02-04T11:05:00.0000000Z",
"2024-02-04T11:06:00.0000000Z",
"2024-02-04T11:07:00.0000000Z",
"2024-02-04T11:08:00.0000000Z",
"2024-02-04T11:09:00.0000000Z",
"2024-02-04T11:10:00.0000000Z",
"2024-02-04T11:11:00.0000000Z",
"2024-02-04T11:12:00.0000000Z",
"2024-02-04T11:13:00.0000000Z",
"2024-02-04T11:14:00.0000000Z",
"2024-02-04T11:15:00.0000000Z",
"2024-02-04T11:16:00.0000000Z",
"2024-02-04T11:17:00.0000000Z",
"2024-02-04T11:18:00.0000000Z",
"2024-02-04T11:19:00.0000000Z",
"2024-02-04T11:20:00.0000000Z",
"2024-02-04T11:21:00.0000000Z",
"2024-02-04T11:22:00.0000000Z",
"2024-02-04T11:23:00.0000000Z",
"2024-02-04T11:24:00.0000000Z",
"2024-02-04T11:25:00.0000000Z",
"2024-02-04T11:26:00.0000000Z",
"2024-02-04T11:27:00.0000000Z",
"2024-02-04T11:28:00.0000000Z",
"2024-02-04T11:29:00.0000000Z",
"2024-02-04T11:30:00.0000000Z",
"2024-02-04T11:31:00.0000000Z",
"2024-02-04T11:32:00.0000000Z",
"2024-02-04T11:33:00.0000000Z",
"2024-02-04T11:34:00.0000000Z",
"2024-02-04T11:35:00.0000000Z",
"2024-02-04T11:36:00.0000000Z",
"2024-02-04T11:37:00.0000000Z"
],
"datasets": [
{
"label": "Total",
"backgroundColor": "rgba(102, 153, 255, 0.1)",
"borderColor": "rgb(102, 153, 255)",
"borderWidth": 2,
"fill": true,
"data": [
4,
6,
13,
9,
27,
9,
11,
15,
9,
10,
5,
9,
5,
17,
6,
9,
61,
23,
9,
21,
8,
20,
5,
7,
35,
26,
33,
20,
7,
12,
4,
14,
3,
19,
37,
10,
18,
12,
7,
30,
47,
16,
10,
3,
12,
11,
37,
3,
18,
22,
16,
6,
15,
5,
41,
13,
7,
9,
17,
12
]
},
{
"label": "No Error",
"backgroundColor": "rgba(92, 184, 92, 0.1)",
"borderColor": "rgb(92, 184, 92)",
"borderWidth": 2,
"fill": true,
"data": [
4,
6,
11,
9,
22,
6,
11,
13,
9,
7,
5,
7,
4,
13,
5,
7,
59,
22,
8,
21,
8,
19,
5,
7,
31,
25,
24,
16,
6,
12,
4,
12,
3,
19,
36,
8,
18,
12,
7,
28,
46,
16,
10,
3,
11,
10,
34,
2,
10,
13,
11,
6,
15,
5,
40,
12,
6,
9,
14,
12
]
},
{
"label": "Server Failure",
"backgroundColor": "rgba(217, 83, 79, 0.1)",
"borderColor": "rgb(217, 83, 79)",
"borderWidth": 2,
"fill": true,
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"label": "NX Domain",
"backgroundColor": "rgba(120, 120, 120, 0.1)",
"borderColor": "rgb(120, 120, 120)",
"borderWidth": 2,
"fill": true,
"data": [
0,
0,
2,
0,
5,
3,
0,
2,
0,
3,
0,
2,
1,
4,
1,
2,
2,
1,
1,
0,
0,
1,
0,
0,
4,
1,
9,
4,
1,
0,
0,
2,
0,
0,
1,
2,
0,
0,
0,
2,
0,
0,
0,
0,
1,
1,
3,
1,
8,
9,
5,
0,
0,
0,
1,
1,
1,
0,
3,
0
]
},
{
"label": "Refused",
"backgroundColor": "rgba(91, 192, 222, 0.1)",
"borderColor": "rgb(91, 192, 222)",
"borderWidth": 2,
"fill": true,
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"label": "Authoritative",
"backgroundColor": "rgba(150, 150, 0, 0.1)",
"borderColor": "rgb(150, 150, 0)",
"borderWidth": 2,
"fill": true,
"data": [
0,
0,
1,
0,
3,
1,
0,
2,
1,
1,
0,
1,
0,
2,
1,
1,
1,
1,
2,
0,
0,
1,
0,
0,
2,
1,
3,
2,
0,
0,
0,
1,
0,
0,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
0,
4,
4,
2,
0,
2,
0,
1,
1,
0,
0,
0,
0
]
},
{
"label": "Recursive",
"backgroundColor": "rgba(23, 162, 184, 0.1)",
"borderColor": "rgb(23, 162, 184)",
"borderWidth": 2,
"fill": true,
"data": [
1,
3,
0,
1,
14,
2,
8,
4,
1,
3,
2,
3,
1,
3,
3,
3,
36,
8,
2,
14,
4,
6,
1,
1,
26,
17,
11,
10,
2,
4,
0,
8,
1,
7,
18,
0,
3,
0,
2,
10,
6,
1,
3,
1,
5,
4,
20,
0,
5,
7,
0,
3,
7,
0,
21,
7,
1,
3,
6,
5
]
},
{
"label": "Cached",
"backgroundColor": "rgba(111, 84, 153, 0.1)",
"borderColor": "rgb(111, 84, 153)",
"borderWidth": 2,
"fill": true,
"data": [
3,
3,
11,
8,
8,
4,
3,
8,
7,
4,
3,
4,
3,
10,
2,
4,
23,
14,
5,
7,
4,
13,
4,
6,
5,
8,
13,
6,
4,
8,
4,
4,
2,
12,
18,
8,
15,
12,
5,
18,
41,
15,
7,
2,
6,
6,
14,
2,
5,
6,
10,
3,
6,
5,
19,
5,
5,
6,
8,
7
]
},
{
"label": "Blocked",
"backgroundColor": "rgba(255, 165, 0, 0.1)",
"borderColor": "rgb(255, 165, 0)",
"borderWidth": 2,
"fill": true,
"data": [
0,
0,
1,
0,
2,
2,
0,
1,
0,
2,
0,
1,
1,
2,
0,
1,
1,
0,
0,
0,
0,
0,
0,
0,
2,
0,
6,
2,
1,
0,
0,
1,
0,
0,
0,
1,
0,
0,
0,
2,
0,
0,
0,
0,
0,
0,
2,
1,
4,
5,
4,
0,
0,
0,
0,
0,
1,
0,
3,
0
]
},
{
"label": "Dropped",
"backgroundColor": "rgba(30, 30, 30, 0.1)",
"borderColor": "rgb(30, 30, 30)",
"borderWidth": 2,
"fill": true,
"data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"label": "Clients",
"backgroundColor": "rgba(51, 122, 183, 0.1)",
"borderColor": "rgb(51, 122, 183)",
"borderWidth": 2,
"fill": true,
"data": [
3,
4,
3,
2,
3,
4,
2,
3,
3,
2,
2,
3,
3,
3,
2,
4,
3,
2,
2,
2,
2,
2,
2,
2,
3,
2,
3,
3,
2,
2,
2,
3,
2,
2,
3,
3,
1,
3,
3,
3,
3,
3,
3,
2,
3,
3,
4,
2,
3,
4,
4,
2,
4,
3,
3,
3,
3,
2,
2,
3
]
}
]
},
"queryResponseChartData": {
"labels": [
"Authoritative",
"Recursive",
"Cached",
"Blocked",
"Dropped"
],
"datasets": [
{
"data": [
47,
348,
481,
49,
0
],
"backgroundColor": [
"rgba(150, 150, 0, 0.5)",
"rgba(23, 162, 184, 0.5)",
"rgba(111, 84, 153, 0.5)",
"rgba(255, 165, 0, 0.5)",
"rgba(7, 7, 7, 0.5)"
]
}
]
},
"queryTypeChartData": {
"labels": [
"A",
"HTTPS",
"AAAA",
"SOA",
"SRV"
],
"datasets": [
{
"data": [
683,
196,
42,
2,
2
],
"backgroundColor": [
"rgba(102, 153, 255, 0.5)",
"rgba(92, 184, 92, 0.5)",
"rgba(7, 7, 7, 0.5)",
"rgba(91, 192, 222, 0.5)",
"rgba(150, 150, 0, 0.5)",
"rgba(23, 162, 184, 0.5)",
"rgba(111, 84, 153, 0.5)",
"rgba(255, 165, 0, 0.5)",
"rgba(51, 122, 183, 0.5)",
"rgba(150, 150, 150, 0.5)"
]
}
]
},
"protocolTypeChartData": {
"labels": [
"Udp"
],
"datasets": [
{
"data": [
925
],
"backgroundColor": [
"rgba(111, 84, 153, 0.5)",
"rgba(150, 150, 0, 0.5)",
"rgba(23, 162, 184, 0.5)",
"rgba(255, 165, 0, 0.5)",
"rgba(91, 192, 222, 0.5)"
]
}
]
},
"topClients": [
{
"name": "192.168.10.5",
"domain": "server1.home",
"hits": 463,
"rateLimited": false
},
{
"name": "192.168.10.12",
"domain": "vostro1.home",
"hits": 236,
"rateLimited": false
},
{
"name": "192.168.10.13",
"hits": 165,
"rateLimited": false
},
{
"name": "192.168.10.11",
"domain": "shreyas-zare.home",
"hits": 53,
"rateLimited": false
},
{
"name": "192.168.10.15",
"domain": "android-9c3d70b130d99b94.home",
"hits": 6,
"rateLimited": false
},
{
"name": "192.168.10.2",
"domain": "pi1.home",
"hits": 2,
"rateLimited": false
}
],
"topDomains": [
{
"name": "hses7-vod-cf-ace.cdn.hotstar.com",
"hits": 114
},
{
"name": "bifrost-api.hotstar.com",
"hits": 61
},
{
"name": "edge.microsoft.com",
"hits": 52
},
{
"name": "www.google.com",
"hits": 34
},
{
"name": "www.hotstar.com",
"hits": 24
},
{
"name": "safebrowsing.googleapis.com",
"hits": 15
},
{
"name": "www.bing.com",
"hits": 14
},
{
"name": "go.microsoft.com",
"hits": 14
},
{
"name": "graph.facebook.com",
"hits": 13
},
{
"name": "substrate.office.com",
"hits": 11
}
],
"topBlockedDomains": [
{
"name": "mobile.pipe.aria.microsoft.com",
"hits": 10
},
{
"name": "in.api.glance.inmobi.com",
"hits": 9
},
{
"name": "in.analytics.glance.inmobi.com",
"hits": 6
},
{
"name": "app-measurement.com",
"hits": 4
},
{
"name": "googleads.g.doubleclick.net",
"hits": 4
},
{
"name": "analytics.swiggy.com",
"hits": 2
},
{
"name": "firebase-settings.crashlytics.com",
"hits": 2
},
{
"name": "cdn.cookielaw.org",
"hits": 2
},
{
"name": "m.urbancompany.com",
"hits": 1
},
{
"name": "beacons.gvt2.com",
"hits": 1
}
]
},
"status": "ok"
}
```
### Get Top Stats
Returns the top stats data for specified stats type.
URL:\
`http://localhost:5380/api/dashboard/stats/getTop?token=x&type=LastHour&statsType=TopClients&limit=1000`
OBSOLETE PATH:\
`/api/getTopStats`
PERMISSIONS:\
Dashboard: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node`: The node domain name for which the stats data is needed. When unspecified, the current node is used. Set node name as `cluster` to get aggregate stats for the entire cluster. This parameter can be used only when Clustering is initialized.
- `type` (optional): The duration type for which valid values are: [`LastHour`, `LastDay`, `LastWeek`, `LastMonth`, `LastYear`, `custom`]. Default value is `LastHour`.
- `start` (optional): The start date in ISO 8601 format. Applies only to `custom` type.
- `end` (optional): The end date in ISO 8601 format. Applies only to `custom` type.
- `statsType`: The stats type for which valid values are : [`TopClients`, `TopDomains`, `TopBlockedDomains`]
- `limit` (optional): The limit of records to return. Default value is `1000`.
- `noReverseLookup` (optional): Set to `true` to disable reverse lookup for Top Clients list. This option is only applicable with `TopClients` stats type.
- `onlyRateLimitedClients` (optional): Set to `true` to list only clients which are being rate limited in the Top Clients list. This option is only applicable with `TopClients` stats type.
RESPONSE:
The response json will include the object with definition same in the `getStats` response depending on the `statsType`. For example below is the response for `TopClients`:
```
{
"response": {
"topClients": [
{
"name": "192.168.10.5",
"domain": "server1.local",
"hits": 236,
"rateLimited": false
},
{
"name": "192.168.10.4",
"domain": "nas1.local",
"hits": 16,
"rateLimited": false
},
{
"name": "192.168.10.6",
"domain": "server2.local",
"hits": 14,
"rateLimited": false
},
{
"name": "192.168.10.3",
"domain": "nas2.local",
"hits": 12,
"rateLimited": false
},
{
"name": "217.31.193.175",
"domain": "condor175.knot-resolver.cz",
"hits": 10,
"rateLimited": false
},
{
"name": "162.158.180.45",
"hits": 9,
"rateLimited": false
},
{
"name": "217.31.193.163",
"domain": "gondor-resolver.labs.nic.cz",
"hits": 9,
"rateLimited": false
},
{
"name": "210.245.24.68",
"hits": 8,
"rateLimited": false
},
{
"name": "101.91.16.140",
"hits": 8,
"rateLimited": false
}
],
},
"status": "ok"
}
```
### Delete All Stats
Permanently delete all hourly and daily stats files from the disk and clears all stats stored in memory. This call will clear all stats from the Dashboard.
URL:\
`http://localhost:5380/api/dashboard/stats/deleteAll?token=x`
OBSOLETE PATH:\
`/api/deleteAllStats`
PERMISSIONS:\
Dashboard: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node`: The node domain name for which the stats data needs to be deleted. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
## Authoritative Zone API Calls
These API calls allow managing all hosted zones on the DNS server.
### List Zones
List all authoritative zones hosted on this DNS server. The list contains only the zones that the user has View permissions for. These API calls requires permission for both the Zones section as well as the individual permission for each zone.
URL:\
`http://localhost:5380/api/zones/list?token=x&pageNumber=1&zonesPerPage=10`
OBSOLETE PATH:\
`/api/zone/list`\
`/api/listZones`
PERMISSIONS:\
Zones: View\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `pageNumber` (optional): When this parameter is specified, the API will return paginated results based on the page number and zones per pages options. When not specified, the API will return a list of all zones.
- `zonesPerPage` (optional): The number of zones per page to be returned. This option is only used when `pageNumber` options is specified. The default value is `10` when not specified.
RESPONSE:
```
{
"response": {
"pageNumber": 1,
"totalPages": 2,
"totalZones": 12,
"zones": [
{
"name": "",
"type": "Secondary",
"dnssecStatus": "SignedWithNSEC",
"soaSerial": 1,
"expiry": "2022-02-26T07:57:08.1842183Z",
"isExpired": false,
"syncFailed": false,
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "0.in-addr.arpa",
"type": "Primary",
"internal": true,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa",
"type": "Primary",
"internal": true,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "127.in-addr.arpa",
"type": "Primary",
"internal": true,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "255.in-addr.arpa",
"type": "Primary",
"internal": true,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "example.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "SignedWithNSEC",
"soaSerial": 1,
"notifyFailed": false,
"notifyFailedFor": [],
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "localhost",
"type": "Primary",
"internal": true,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "test0.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"notifyFailed": false,
"notifyFailedFor": [],
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "test1.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"notifyFailed": false,
"notifyFailedFor": [],
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
},
{
"name": "test2.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "Unsigned",
"soaSerial": 1,
"notifyFailed": false,
"notifyFailedFor": [],
"lastModified": "2022-02-26T07:57:08.1842183Z",
"disabled": false
}
]
},
"status": "ok"
}
```
### List Catalog Zones
Returns a list of Catalog zone names.
URL:\
`http://localhost:5380/api/zones/catalogs/list?token=x`
PERMISSIONS:\
Zones: View\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
RESPONSE:
```
{
"response": {
"catalogZoneNames": [
"catalog1"
]
},
"status": "ok"
}
```
### Create Zone
Creates a new authoritative zone.
URL:\
`http://localhost:5380/api/zones/create?token=x&zone=example.com&type=Primary`
OBSOLETE PATH:\
`/api/zone/create`\
`/api/createZone`
PERMISSIONS:\
Zones: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name for creating the new zone. The value can be valid domain name, an IP address, or an network address in CIDR format. When value is IP address or network address, a reverse zone is created.
- `type`: The type of zone to be created. Valid values are [`Primary`, `Secondary`, `Stub`, `Forwarder`, `SecondaryForwarder`, `Catalog`, `SecondaryCatalog`].
- `catalog` (optional): The name of the catalog zone to become its member zone. This option is valid only for `Primary`, `Secondary`, `Stub`, and `Forwarder` zones.
- `useSoaSerialDateScheme` (optional): Set value to `true` to enable using date scheme for SOA serial. This optional parameter is used only with `Primary`, `Forwarder`, and `Catalog` zones. Default value is `false`.
- `primaryNameServerAddresses` (optional): List of comma separated IP addresses or domain names of the primary name server. This optional parameter is used only with `Secondary`, `SecondaryForwarder`, `SecondaryCatalog`, and `Stub` zones. If this parameter is not used, the DNS server will try to recursively resolve the primary name server addresses automatically for `Secondary` and `Stub` zones. This option is required for `SecondaryForwarder` and `SecondaryCatalog` zones.
- `zoneTransferProtocol` (optional): The zone transfer protocol to be used by `Secondary`, `SecondaryForwarder`, and `SecondaryCatalog` zones. Valid values are [`Tcp`, `Tls`, `Quic`].
- `tsigKeyName` (optional): The TSIG key name to be used by `Secondary`, `SecondaryForwarder`, and `SecondaryCatalog` zones.
- `validateZone` (optional): Set value as `true` to enable ZONEMD validation. When enabled, the `Secondary` zone will be validated using the ZONEMD record after every zone transfer. The zone will get disabled if the validation fails. The zone must be DNSSEC signed for the validation to work. This option is only valid for `Secondary` zones.
- `initializeForwarder` (optional): Set value as `true` to initialize the Conditional Forwarder zone with an FWD record or set it to `false` to create an empty `Forwarder` zone. Default value is `true`.
- `protocol` (optional): The DNS transport protocol to be used by the Conditional Forwarder zone. This optional parameter is used with Conditional Forwarder zones. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`]. Default `Udp` protocol is used when this parameter is missing. The `initializeForwarder` parameter must be set to `true` to use this option.
- `forwarder` (optional): The address of the DNS server to be used as a forwarder. This optional parameter is required to be used with Conditional Forwarder zones. A special value `this-server` can be used as a forwarder which when used will forward all the requests internally to this DNS server such that you can override the zone with records and rest of the zone gets resolved via This Server. The `initializeForwarder` parameter must be set to `true` to use this option.
- `dnssecValidation` (optional): Set this boolean value to indicate if DNSSEC validation must be done. This optional parameter is required to be used with Conditional Forwarder zones. The `initializeForwarder` parameter must be set to `true` to use this option.
- `proxyType` (optional): The type of proxy that must be used for conditional forwarding. This optional parameter is required to be used with Conditional Forwarder zones. Valid values are [`NoProxy`, `DefaultProxy`, `Http`, `Socks5`]. Default value `DefaultProxy` is used when this parameter is missing. The `initializeForwarder` parameter must be set to `true` to use this option.
- `proxyAddress` (optional): The proxy server address to use when `proxyType` is configured. This optional parameter is required to be used with Conditional Forwarder zones. The `initializeForwarder` parameter must be set to `true` to use this option.
- `proxyPort` (optional): The proxy server port to use when `proxyType` is configured. This optional parameter is required to be used with Conditional Forwarder zones. The `initializeForwarder` parameter must be set to `true` to use this option.
- `proxyUsername` (optional): The proxy server username to use when `proxyType` is configured. This optional parameter is required to be used with Conditional Forwarder zones. The `initializeForwarder` parameter must be set to `true` to use this option.
- `proxyPassword` (optional): The proxy server password to use when `proxyType` is configured. This optional parameter is required to be used with Conditional Forwarder zones. The `initializeForwarder` parameter must be set to `true` to use this option.
REQUEST: To import a zone file while creating a `Primary` or `Forwarder` zone, use POST request with multi-part form data containing the zone file data.
RESPONSE:
```
{
"response": {
"domain": "example.com"
},
"status": "ok"
}
```
WHERE:
- `domain`: Will contain the zone that was created. This is specifically useful to know the reverse zone that was created.
### Import Zone
Allows importing a complete zone file or a set of DNS resource records in standard RFC 1035 zone file format.
URL:\
`http://localhost:5380/api/zones/import?token=x&zone=example.com&overwrite=true&overwriteSoaSerial=false`
PERMISSIONS:\
Zones: Modify
Zone: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to import.
- `overwrite` (optional): Set to `true` to allow overwriting existing resource record set for the records being imported.
- `overwriteSoaSerial` (optional): Set it to `true` to overwrite existing SOA record serial with the imported SOA record serial. Warning! Overwrite SOA serial option when used to set a lower SOA serial value than the current SOA serial will cause secondary zones to fail to sync.
REQUEST: This is a POST request call where the request must use `text/plain` content type with request body containing the zone file data OR the request must be multi-part form data with the zone file data.
RESPONSE:
```
{
"status": "ok"
}
```
### Export Zone
Exports the complete zone in standard RFC 1035 zone file format.
URL:\
`http://localhost:5380/api/zones/export?token=x&zone=example.com`
PERMISSIONS:\
Zones: View
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to export.
RESPONSE: Response is a downloadable text file with `Content-Type: text/plain` and `Content-Disposition: attachment`.
### Clone Zone
Clones an existing zone with all the records to create a new zone.
URL:\
`http://localhost:5380/api/zones/clone?token=x&zone=example.com&sourceZone=template.com`
PERMISSIONS:\
Zones: Modify
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to be created.
- `sourceZone`: The domain name of the zone to be cloned.
RESPONSE:
```
{
"status": "ok"
}
```
### Convert Zone Type
Converts zone from one type to another.
URL:\
`http://localhost:5380/api/zones/convert?token=x&zone=example.com&type=Primary`
PERMISSIONS:\
Zones: Delete
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to be converted.
- `type`: The zone type to convert the current zone to.
RESPONSE:
```
{
"status": "ok"
}
```
### Enable Zone
Enables an authoritative zone.
URL:\
`http://localhost:5380/api/zones/enable?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/enable`\
`/api/enableZone`
PERMISSIONS:\
Zones: Modify\
Zone: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to be enabled.
RESPONSE:
```
{
"status": "ok"
}
```
### Disable Zone
Disables an authoritative zone. This will prevent the DNS server from responding for queries to this zone.
URL:\
`http://localhost:5380/api/zones/disable?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/disable`\
`/api/disableZone`
PERMISSIONS:\
Zones: Modify\
Zone: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to be disabled.
RESPONSE:
```
{
"status": "ok"
}
```
### Delete Zone
Deletes an authoritative zone.
URL:\
`http://localhost:5380/api/zones/delete?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/delete`\
`/api/deleteZone`
PERMISSIONS:\
Zones: Delete\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to be deleted.
RESPONSE:
```
{
"status": "ok"
}
```
### Resync Zone
Allows resyncing a Secondary or Stub zone. This process will re-fetch all the records from the primary name server for the zone.
URL:\
`http://localhost:5380/api/zones/resync?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/resync`
PERMISSIONS:\
Zones: Modify\
Zone: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to resync.
RESPONSE:
```
{
"status": "ok"
}
```
### Get Zone Options
Gets the zone specific options.
URL:\
`http://localhost:5380/api/zones/options/get?token=x&zone=example.com&includeAvailableTsigKeyNames=true`
OBSOLETE PATH:\
`/api/zone/options`
PERMISSIONS:\
Zones: Modify\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to get options.
- `includeAvailableCatalogZoneNames`: Set to `true` to include list of available Catalog zone names on the DNS server.
- `includeAvailableTsigKeyNames`: Set to `true` to include list of available TSIG key names on the DNS server.
RESPONSE:
```
{
"response": {
"name": "example.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "Unsigned",
"notifyFailed": true,
"notifyFailedFor": [
"192.168.10.5"
],
"disabled": false,
"catalog": "catalog1",
"overrideCatalogQueryAccess": false,
"overrideCatalogZoneTransfer": false,
"overrideCatalogNotify": false,
"queryAccess": "Allow",
"queryAccessNetworkACL": [],
"zoneTransfer": "AllowOnlyZoneNameServers",
"zoneTransferNetworkACL": [],
"zoneTransferTsigKeyNames": [
"key.example.com"
],
"notify": "ZoneNameServers",
"notifyNameServers": [],
"update": "UseSpecifiedNetworkACL",
"updateNetworkACL": [
"192.168.180.0/24"
],
"updateSecurityPolicies": [
{
"tsigKeyName": "key.example.com",
"domain": "example.com",
"allowedTypes": [
"A",
"AAAA"
]
},
{
"tsigKeyName": "key.example.com",
"domain": "*.example.com",
"allowedTypes": [
"ANY"
]
}
],
"availableCatalogZoneNames": [
"catalog1"
],
"availableTsigKeyNames": [
"key.example.com",
"catalog"
]
},
"status": "ok"
}
```
### Set Zone Options
Sets the zone specific options.
URL:\
`http://localhost:5380/api/zones/options/set?token=x&zone=example.com&disabled=false&zoneTransfer=Allow&zoneTransferNameServers=¬ify=ZoneNameServers¬ifyNameServers=`
OBSOLETE PATH:\
`/api/zone/options`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to set options.
- `disabled` (optional): Sets if the zone is enabled or disabled.
- `catalog` (optional): Set a Catalog zone name to register as its member zone. This option is valid only for `Primary`, `Secondary`, `Stub`, and `Forwarder` zones.
- `overrideCatalogQueryAccess` (optional): Set to `true` to override Query Access option in the Catalog zone. This option is valid only for `Primary`, `Secondary`, `Stub`, and `Forwarder` zones.
- `overrideCatalogZoneTransfer` (optional): Set to `true` to override Zone Transfer option in the Catalog zone. This option is valid only for `Primary`, `Secondary`, and `Forwarder` zones.
- `overrideCatalogNotify` (optional): Set to `true` to override Notify option in the Catalog zone. This option is valid only for `Primary`, and `Forwarder` zones.
- `primaryNameServerAddresses` (optional): List of comma separated IP addresses or domain names of the primary name server. This optional parameter is used only with `Secondary`, `SecondaryForwarder`, `SecondaryCatalog`, and `Stub` zones. If this parameter is not used, the DNS server will try to recursively resolve the primary name server addresses automatically for `Secondary` and `Stub` zones. This option is required for `SecondaryForwarder` and `SecondaryCatalog` zones.
- `primaryZoneTransferProtocol `(optional): The zone transfer protocol to be used by `Secondary`, `SecondaryForwarder`, and `SecondaryCatalog` zones. Valid values are [`Tcp`, `Tls`, `Quic`].
- `primaryZoneTransferTsigKeyName` (optional): The TSIG key name to be used by `Secondary`, `SecondaryForwarder`, and `SecondaryCatalog` zones for zone transfer.
- `validateZone`: (optional): Set value as `true` to enable ZONEMD validation. When enabled, the `Secondary` zone will be validated using the ZONEMD record after every zone transfer. The zone will get disabled if the validation fails. The zone must be DNSSEC signed for the validation to work. This option is only valid for `Secondary` zones.
- `queryAccess` (optional): Valid options are [`Deny`, `Allow`, `AllowOnlyPrivateNetworks`, `AllowOnlyZoneNameServers`, `UseSpecifiedNetworkACL`, `AllowZoneNameServersAndUseSpecifiedNetworkACL`].
- `queryAccessNetworkACL` (optional): A comma separated Access Control List (ACL) of Network Access Control (NAC) entry. NAC is an IP address or network address to allow. Add `!` at the start of the NAC to deny access. The ACL is processed in the same order its listed. If no networks match, the default policy is to deny all except loopback. Set this parameter to `false` to remove existing values. This option is valid for all zones except `SecondaryCatalog` zone and only when `queryAccess` is set to `UseSpecifiedNetworkACL` or `AllowZoneNameServersAndUseSpecifiedNetworkACL`.
- `zoneTransfer` (optional): Sets if the zone allows zone transfer. Valid options are [`Deny`, `Allow`, `AllowOnlyZoneNameServers`, `UseSpecifiedNetworkACL`, `AllowZoneNameServersAndUseSpecifiedNetworkACL`]. This option is valid only for Primary and Secondary zones.
- `zoneTransferNetworkACL` (optional): A comma separated Access Control List (ACL) of Network Access Control (NAC) entry. NAC is an IP address or network address to allow. Add `!` at the start of the NAC to deny access. The ACL is processed in the same order its listed. If no networks match, the default policy is to deny all. Set this parameter to `false` to remove existing values. This option is valid only for `Primary`, `Secondary`, `Forwarder`, and `Catalog` zones and only when `zoneTransfer` is set to `UseSpecifiedNetworkACL` or `AllowZoneNameServersAndUseSpecifiedNetworkACL`.
- `zoneTransferTsigKeyNames` (optional): A list of comma separated TSIG keys names that are authorized to perform a zone transfer. Set this option to `false` to clear all key names. This option is valid only for `Primary`, `Secondary`, `Forwarder`, and `Catalog` zones.
- `notify` (optional): Sets if the DNS server should notify other DNS servers for zone updates. Valid options for `Primary` and `Secondary` zones are [`None`, `ZoneNameServers`, `SpecifiedNameServers`, `BothZoneAndSpecifiedNameServers`, `SeparateNameServersForCatalogAndMemberZones`]. Valid options for `Forwarder` and `Catalog` zones are [`None`, `SpecifiedNameServers`]. The `SeparateNameServersForCatalogAndMemberZones` option is valid only for `Catalog` zones. This option is valid only for `Primary`, `Secondary`, `Forwarder`, and `Catalog` zones.
- `notifyNameServers` (optional): A list of comma separated IP addresses which should be notified by the DNS server for zone updates. This list is used only when `notify` option is set to `SpecifiedNameServers` or `BothZoneAndSpecifiedNameServers`. This option is valid only for `Primary`, `Secondary`, `Forwarder`, and `Catalog` zones.
- `notifySecondaryCatalogsNameServers` (optional): A list of comma separated IP addresses which should be notified by the DNS server only for catalog zone updates. This list is used only when `notify` option is set to `SeparateNameServersForCatalogAndMemberZones`. This option is valid only for `Catalog` zones.
- `update` (optional): Sets if the DNS server should allow dynamic updates (RFC 2136). This option is valid only for `Primary`, `Secondary`, and `Forwarder` zones. Valid options for `Primary` zones are [`Deny`, `Allow`, `AllowOnlyZoneNameServers`, `UseSpecifiedNetworkACL`, `AllowZoneNameServersAndUseSpecifiedNetworkACL`]. Valid options for `Secondary` and `Forwarder` zones are [`Deny`, `Allow`, `UseSpecifiedNetworkACL`].
- `updateNetworkACL` (optional): A comma separated Access Control List (ACL) of Network Access Control (NAC) entry. NAC is an IP address or network address to allow. Add `!` at the start of the NAC to deny access. The ACL is processed in the same order its listed. If no networks match, the default policy is to deny all. Set this parameter to `false` to remove existing values. This option is valid only for `Primary`, `Secondary`, and `Forwarder` zones and only when `update` is set to `UseSpecifiedNetworkACL` or `AllowZoneNameServersAndUseSpecifiedNetworkACL`.
- `updateSecurityPolicies` (optional): A pipe `|` separated (used as both row and column separator) table data of security policies with each row containing the TSIG keys name, domain name and record types (comma separated) that are allowed. Use wildcard domain name to specify all sub domain names. Set this option to `false` to clear all security policies and stop TSIG authentication. This option is valid only for `Primary` and `Forwarder` zones.
RESPONSE:
```
{
"status": "ok"
}
```
### Get Zone Permissions
Gets the zone specific permissions.
URL:\
`http://localhost:5380/api/zones/permissions/get?token=x&zone=example.com&includeUsersAndGroups=true`
PERMISSIONS:\
Zones: Modify\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to get the permissions for.
- `includeUsersAndGroups`: Set to true to get a list of users and groups in the response.
RESPONSE:
```
{
"response": {
"section": "Zones",
"subItem": "example.com",
"userPermissions": [
{
"username": "admin",
"canView": true,
"canModify": true,
"canDelete": true
}
],
"groupPermissions": [
{
"name": "Administrators",
"canView": true,
"canModify": true,
"canDelete": true
},
{
"name": "DNS Administrators",
"canView": true,
"canModify": true,
"canDelete": true
}
],
"users": [
"admin",
"shreyas"
],
"groups": [
"Administrators",
"DHCP Administrators",
"DNS Administrators",
"Everyone"
]
},
"status": "ok"
}
```
### Set Zone Permissions
Sets the zone specific permissions.
URL:\
`http://localhost:5380/api/zones/permissions/set?token=x&zone=example.com&userPermissions=admin|true|true|true&groupPermissions=Administrators|true|true|true|DNS%20Administrators|true|true|true`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The domain name of the zone to get the permissions for.
- `userPermissions` (optional): A pipe `|` separated table data with each row containing username and boolean values for the view, modify and delete permissions. For example: user1|true|true|true|user2|true|false|false
- `groupPermissions` (optional): A pipe `|` separated table data with each row containing the group name and boolean values for the view, modify and delete permissions. For example: group1|true|true|true|group2|true|true|false
RESPONSE:
```
{
"response": {
"section": "Zones",
"subItem": "example.com",
"userPermissions": [
{
"username": "admin",
"canView": true,
"canModify": true,
"canDelete": true
}
],
"groupPermissions": [
{
"name": "Administrators",
"canView": true,
"canModify": true,
"canDelete": true
},
{
"name": "DNS Administrators",
"canView": true,
"canModify": true,
"canDelete": true
}
]
},
"status": "ok"
}
```
### Sign Zone
Signs the primary zone (DNSSEC).
URL:\
`http://localhost:5380/api/zones/dnssec/sign?token=x&zone=example.com&algorithm=ECDSA&dnsKeyTtl=86400&zskRolloverDays=30&nxProof=NSEC3&iterations=0&saltLength=0&curve=P256`
OBSOLETE PATH:\
`/api/zone/dnssec/sign`
PERMISSONS:
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone to sign.
- `algorithm`: The algorithm to be used for signing. Valid values are [`RSA`, `ECDSA`, `EDDSA`].
- `pemKskPrivateKey` (optional): The user specified private key in PEM format for Key Signing Key (KSK). When this parameter is specified, the private key specified is used instead of automatically generating it.
- `pemZskPrivateKey` (optional): The user specified private key in PEM format for Zone Signing Key (ZSK). When this parameter is specified, the private key specified is used instead of automatically generating it.
- `hashAlgorithm` (optional): The hash algorithm to be used when using `RSA` algorithm. Valid values are [`MD5`, `SHA1`, `SHA256`, `SHA512`]. This optional parameter is required when using `RSA` algorithm.
- `kskKeySize` (optional): The size of the Key Signing Key (KSK) in bits to be used when using `RSA` algorithm. This optional parameter is required when using `RSA` algorithm.
- `zskKeySize` (optional): The size of the Zone Signing Key (ZSK) in bits to be used when using `RSA` algorithm. This optional parameter is required when using `RSA` algorithm.
- `curve` (optional): The name of the curve to be used when using `ECDSA` or `EDDSA` algorithm. Valid values are [`P256`, `P384`] for `ECDSA` algorithm and [`ED25519`, `ED448`] for `EDDSA` algorithm. This optional parameter is required when using `ECDSA` or `EDDSA` algorithm.
- `dnsKeyTtl` (optional): The TTL value to be used for DNSKEY records. Default value is `86400` when not specified.
- `zskRolloverDays` (optional): The frequency in days that the DNS server must automatically rollover the Zone Signing Keys (ZSK) in the zone. Valid range is 0-365 days where 0 disables rollover. Default value is `30` when not specified.
- `nxProof` (optional): The type of proof of non-existence that must be used for signing the zone. Valid values are [`NSEC`, `NSEC3`]. Default value is `NSEC` when not specified.
- `iterations` (optional): The number of iterations to use for hashing in NSEC3. This optional parameter is only applicable when using `NSEC3` as the `nxProof`. Default value is `0` when not specified.
- `saltLength` (optional): The length of salt in bytes to use for hashing in NSEC3. This optional parameter is only applicable when using `NSEC3` as the `nxProof`. Default value is `0` when not specified.
RESPONSE:
```
{
"status": "ok"
}
```
### Unsign Zone
Unsigns the primary zone (DNSSEC).
URL:\
`http://localhost:5380/api/zones/dnssec/unsign?token=x&zone=example.com
OBSOLETE PATH:\
`/api/zone/dnssec/unsign`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone to unsign.
RESPONSE:
```
{
"status": "ok"
}
```
### Get DS Info
Get the DS info for the signed primary zone to help with updating DS records at the parent zone.
URL:\
`http://localhost:5380/api/zones/dnssec/viewDS?token=x&zone=example.com
PERMISSIONS:\
Zones: View\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the signed primary zone.
RESPONSE:
```
{
"response": {
"name": "example.com",
"type": "Primary",
"internal": false,
"disabled": false,
"dnssecStatus": "SignedWithNSEC",
"dsRecords": [
{
"keyTag": 47972,
"dnsKeyState": "Published",
"dnsKeyStateReadyBy": "2023-10-29T16:20:08.8007369Z",
"algorithm": "ECDSAP256SHA256",
"publicKey": "TK5a8pXPMspDwuh4Z3evOfNZm9kkc8IzwZDiCgIX6imxwkbpY9FTvhoI/ttZiLWZ5hvLbvrpsbd0liqSwqNmPg==",
"digests": [
{
"digestType": "SHA256",
"digest": "D59EBB413C88576B519B2980DF50493689A4A260383D0CB2F260251D5CA2E144"
},
{
"digestType": "SHA384",
"digest": "F8235EEAB1AEBCFAD28096DF8DCF820F25C685041562AAB63E1A3E1AC89D2FC3836E97114A64EC0E057DCA234451E50C"
}
]
}
]
},
"status": "ok"
}
```
### Get DNSSEC Properties
Get the DNSSEC properties for the primary zone.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/get?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/dnssec/getProperties`
PERMISSIONS:\
Zones: Modify\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
RESPONSE:
```
{
"response": {
"name": "example.com",
"type": "Primary",
"internal": false,
"disabled": false,
"dnssecStatus": "SignedWithNSEC",
"dnsKeyTtl": 3600,
"dnssecPrivateKeys": [
{
"keyTag": 15048,
"keyType": "KeySigningKey",
"algorithm": "ECDSAP256SHA256",
"state": "Published",
"stateChangedOn": "2022-12-18T14:39:50.0328321Z",
"stateReadyBy": "2022-12-18T16:14:50.0328321Z",
"isRetiring": false,
"rolloverDays": 0
},
{
"keyTag": 46152,
"keyType": "ZoneSigningKey",
"algorithm": "ECDSAP256SHA256",
"state": "Active",
"stateChangedOn": "2022-12-18T14:39:50.0661173Z",
"isRetiring": false,
"rolloverDays": 90
}
]
},
"status": "ok"
}
```
### Convert To NSEC
Converts a primary zone from NSEC3 to NSEC for proof of non-existence.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/convertToNSEC?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/dnssec/convertToNSEC`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
RESPONSE:
```
{
"status": "ok"
}
```
### Convert To NSEC3
Converts a primary zone from NSEC to NSEC3 for proof of non-existence.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/convertToNSEC3?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/dnssec/convertToNSEC3`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
RESPONSE:
```
{
"status": "ok"
}
```
### Update NSEC3 Parameters
Updates the iteration and salt length parameters for NSEC3.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/updateNSEC3Params?token=x&zone=example.com&iterations=0&saltLength=0`
OBSOLETE PATH:\
`/api/zone/dnssec/updateNSEC3Params`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `iterations` (optional): The number of iterations to use for hashing. Default value is `0` when not specified.
- `saltLength` (optional): The length of salt in bytes to use for hashing. Default value is `0` when not specified.
RESPONSE:
```
{
"status": "ok"
}
```
### Update DNSKEY TTL
Updates the TTL value for DNSKEY resource record set. The value can be updated only when all the DNSKEYs are in ready or active state.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/updateDnsKeyTtl?token=x&zone=example.com&ttl=86400`
OBSOLETE PATH:\
`/api/zone/dnssec/updateDnsKeyTtl`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `ttl`: The TTL value for the DNSKEY resource record set.
RESPONSE:
```
{
"status": "ok"
}
```
### Add Private Key
Adds a private key to be used for signing the zone with DNSSEC.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/addPrivateKey?token=x&zone=example.com&keyType=KeySigningKey&algorithm=ECDSA&curve=P256`
OBSOLETE PATH:\
`/api/zone/dnssec/generatePrivateKey`\
`/api/zones/dnssec/properties/generatePrivateKey`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `keyType`: The type of key for which the private key is to be generated. Valid values are [`KeySigningKey`, `ZoneSigningKey`].
- `rolloverDays` (optional): The frequency in days that the DNS server must automatically rollover the private key in the zone. Valid range is 0-365 days where 0 disables rollover. Default value is 90 days for Zone Signing Key (ZSK) and 0 days for Key Signing Key (KSK).
- `algorithm`: The algorithm to be used for signing. Valid values are [`RSA`, `ECDSA`, `EDDSA`].
- `pemPrivateKey` (optional): Specifies a user generated private key in PEM format to add. When not specified a private key will be automatically generated.
- `hashAlgorithm` (optional): The hash algorithm to be used when using `RSA` algorithm. Valid values are [`MD5`, `SHA1`, `SHA256`, `SHA512`]. This optional parameter is required when using `RSA` algorithm.
- `keySize` (optional): The size of the generated private key in bits to be used when using `RSA` algorithm. This optional parameter is required when using `RSA` algorithm.
- `curve` (optional): The name of the curve to be used when using `ECDSA` or `EDDSA` algorithm. Valid values are [`P256`, `P384`] for `ECDSA` algorithm and [`ED25519`, `ED448`] for `EDDSA` algorithm. This optional parameter is required when using `ECDSA` or `EDDSA` algorithm.
RESPONSE:
```
{
"status": "ok"
}
```
### Update Private Key
Updates the DNSSEC private key properties.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/updatePrivateKey?token=x&zone=example.com&keyTag=1234&rolloverDays=90`
OBSOLETE PATH:\
`/api/zone/dnssec/updatePrivateKey`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `keyTag`: The key tag of the private key to be updated.
- `rolloverDays`: The frequency in days that the DNS server must automatically rollover the private key in the zone. Valid range is 0-365 days where 0 disables rollover.
RESPONSE:
```
{
"status": "ok"
}
```
### Delete Private Key
Deletes a private key that has state set as `Generated`. Private keys with any other state cannot be delete.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/deletePrivateKey?token=x&zone=example.com&keyTag=12345`
OBSOLETE PATH:\
`/api/zone/dnssec/deletePrivateKey`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `keyTag`: The key tag of the private key to be deleted.
RESPONSE:
```
{
"status": "ok"
}
```
### Publish All Private Keys
Publishes all private keys that have state set as `Generated` by adding associated DNSKEY records for them. Once published, the keys will be automatically activated. For Key Signing Keys (KSK), once the state is set to `Ready` you can then safely replace the old DS record from the parent zone with a new DS key record for the KSK associated DNSKEY record. Once the new DS record is published at the parent zone, the DNS server will automatically detect and set the KSK state to `Active`.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/publishAllPrivateKeys?token=x&zone=example.com`
OBSOLETE PATH:\
`/api/zone/dnssec/publishAllPrivateKeys`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
RESPONSE:
```
{
"status": "ok"
}
```
### Rollover DNSKEY
Generates and publishes a new private key for the given key that has to be rolled over. The old private key and its associated DNSKEY record will be automatically retired and removed safely once the new key is active.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/rolloverDnsKey?token=x&zone=example.com&keyTag=12345`
OBSOLETE PATH:\
`/api/zone/dnssec/rolloverDnsKey`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `keyTag`: The key tag of the private key to rollover.
RESPONSE:
```
{
"status": "ok"
}
```
### Retire DNSKEY
Retires the specified private key and its associated DNSKEY record and removes it safely. To retire an existing DNSKEY, there must be at least one active key available.
URL:\
`http://localhost:5380/api/zones/dnssec/properties/retireDnsKey?token=x&zone=example.com&keyTag=12345`
OBSOLETE PATH:\
`/api/zone/dnssec/retireDnsKey`
PERMISSIONS:\
Zones: Modify\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `zone`: The name of the primary zone.
- `keyTag`: The key tag of the private key to retire.
RESPONSE:
```
{
"status": "ok"
}
```
### Add Record
Adds an resource record for an authoritative zone.
URL:\
`http://localhost:5380/api/zones/records/add?token=x&domain=example.com&zone=example.com`
OBSOLETE PATH:\
`/api/zone/addRecord`\
`/api/addRecord`
PERMISSIONS:\
Zones: None\
Zone: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `domain`: The domain name of the zone to add record.
- `zone` (optional): The name of the authoritative zone into which the `domain` exists. When unspecified, the closest authoritative zone will be used.
- `type`: The DNS resource record type. Supported record types are [`A`, `AAAA`, `NS`, `CNAME`, `PTR`, `MX`, `TXT`, `SRV`, `DNAME`, `DS`, `SSHFP`, `TLSA`, `SVCB`, `HTTPS`, `URI`, `CAA`] and proprietary types [`ANAME`, `FWD`, `APP`]. Unknown record types are also supported since v11.2.
- `ttl` (optional): The DNS resource record TTL value. This is the value in seconds that the DNS resolvers can cache the record for. When not specified the default TTL value from settings will be used.
- `overwrite` (optional): This option when set to `true` will overwrite existing resource record set for the selected `type` with the new record. Default value of `false` will add the new record into existing resource record set.
- `comments` (optional): Sets comments for the added resource record.
- `expiryTtl` (optional): Set to automatically delete the record when the value in seconds elapses since the record’s last modified time.
- `ipAddress` (optional): The IP address for adding `A` or `AAAA` record. A special value of `request-ip-address` can be used to set the record with the IP address of the API HTTP request to help with dynamic DNS update applications. This option is required and used only for `A` and `AAAA` records.
- `ptr` (optional): Set this option to `true` to add a reverse PTR record for the IP address in the `A` or `AAAA` record. This option is used only for `A` and `AAAA` records.
- `createPtrZone` (optional): Set this option to `true` to create a reverse zone for PTR record. This option is used for `A` and `AAAA` records.
- `updateSvcbHints` (optional): Set this option to `true` to update any SVCB/HTTPS records in the zone that has Automatic Hints option enabled and matches its target name with the current record's domain name. This option is used for `A` and `AAAA` records.
- `nameServer` (optional): The name server domain name. This option is required for adding `NS` record.
- `glue` (optional): This is the glue address for the name server in the `NS` record. This optional parameter is used for adding `NS` record.
- `cname` (optional): The CNAME domain name. This option is required for adding `CNAME` record.
- `ptrName` (optional): The PTR domain name. This option is required for adding `PTR` record.
- `exchange` (optional): The exchange domain name. This option is required for adding `MX` record.
- `preference` (optional): This is the preference value for `MX` record type. This option is required for adding `MX` record.
- `text` (optional): The text data for `TXT` record. This option is required for adding `TXT` record.
- `splitText` (optional): Set to `true` for using new line char to split text into multiple character-strings for adding `TXT` record.
- `mailbox` (optional): Set an email address for adding `RP` record.
- `txtDomain` (optional): Set a `TXT` record's domain name for adding `RP` record.
- `priority` (optional): This parameter is required for adding the `SRV` record.
- `weight` (optional): This parameter is required for adding the `SRV` record.
- `port` (optional): This parameter is required for adding the `SRV` record.
- `target` (optional): This parameter is required for adding the `SRV` record.
- `naptrOrder` (optional): This parameter is required for adding the `NAPTR` record.
- `naptrPreference` (optional): This parameter is required for adding the `NAPTR` record.
- `naptrFlags` (optional): This parameter is required for adding the `NAPTR` record.
- `naptrServices` (optional): This parameter is required for adding the `NAPTR` record.
- `naptrRegexp` (optional): This parameter is required for adding the `NAPTR` record.
- `naptrReplacement` (optional): This parameter is required for adding the `NAPTR` record.
- `dname` (optional): The DNAME domain name. This option is required for adding `DNAME` record.
- `keyTag` (optional): This parameter is required for adding `DS` record.
- `algorithm` (optional): Valid values are [`RSAMD5`, `DSA`, `RSASHA1`, `DSA-NSEC3-SHA1`, `RSASHA1-NSEC3-SHA1`, `RSASHA256`, `RSASHA512`, `ECC-GOST`, `ECDSAP256SHA256`, `ECDSAP384SHA384`, `ED25519`, `ED448`]. This parameter is required for adding `DS` record.
- `digestType` (optional): Valid values are [`SHA1`, `SHA256`, `GOST-R-34-11-94`, `SHA384`]. This parameter is required for adding `DS` record.
- `digest` (optional): A hex string value. This parameter is required for adding `DS` record.
- `sshfpAlgorithm` (optional): Valid values are [`RSA`, `DSA`, `ECDSA`, `Ed25519`, `Ed448`]. This parameter is required for adding `SSHFP` record.
- `sshfpFingerprintType` (optional): Valid values are [`SHA1`, `SHA256`]. This parameter is required for adding `SSHFP` record.
- `sshfpFingerprint` (optional): A hex string value. This parameter is required for adding `SSHFP` record.
- `tlsaCertificateUsage` (optional): Valid values are [`PKIX-TA`, `PKIX-EE`, `DANE-TA`, `DANE-EE`]. This parameter is required for adding `TLSA` record.
- `tlsaSelector` (optional): Valid values are [`Cert`, `SPKI`]. This parameter is required for adding `TLSA` record.
- `tlsaMatchingType` (optional): Valid value are [`Full`, `SHA2-256`, `SHA2-512`]. This parameter is required for adding `TLSA` record.
- `tlsaCertificateAssociationData` (optional): A X509 certificate in PEM format or a hex string value. This parameter is required for adding `TLSA` record.
- `svcPriority` (optional): The priority value for `SVCB` or `HTTPS` record. This parameter is required for adding `SCVB` or `HTTPS` record.
- `svcTargetName` (optional): The target domain name for `SVCB` or `HTTPS` record. This parameter is required for adding `SCVB` or `HTTPS` record.
- `svcParams` (optional): The service parameters for `SVCB` or `HTTPS` record which is a pipe separated list of key and value. For example, `alpn|h2,h3|port|53443`. To clear existing values, set it to `false`. This parameter is required for adding `SCVB` or `HTTPS` record.
- `autoIpv4Hint` (optional): Set this option to `true` to enable Automatic Hints for the `ipv4hint` parameter in the `svcParams`. This option is valid only for `SVCB` and `HTTPS` records.
- `autoIpv6Hint` (optional): Set this option to `true` to enable Automatic Hints for the `ipv6hint` parameter in the `svcParams`. This option is valid only for `SVCB` and `HTTPS` records.
- `uriPriority` (optional): The priority value for adding the `URI` record.
- `uriWeight` (optional): The weight value for adding the `URI` record.
- `uri` (optional): The URI value for adding the `URI` record.
- `flags` (optional): This parameter is required for adding the `CAA` record.
- `tag` (optional): This parameter is required for adding the `CAA` record.
- `value` (optional): This parameter is required for adding the `CAA` record.
- `aname` (optional): The ANAME domain name. This option is required for adding `ANAME` record.
- `protocol` (optional): This parameter is required for adding the `FWD` record. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`].
- `forwarder` (optional): The forwarder address. A special value of `this-server` can be used to directly forward requests internally to the DNS server. This parameter is required for adding the `FWD` record.
- `forwarderPriority` (optional): Set an integer priority value for adding the `FWD` record. Forwarders with high priority (lower value) will be queried before trying for low priority forwarders. Forwarders with the same priority will be concurrently queried.
- `dnssecValidation` (optional): Set this boolean value to indicate if DNSSEC validation must be done. This optional parameter is to be used with FWD records. Default value is `false`.
- `proxyType` (optional): The type of proxy that must be used for conditional forwarding. This optional parameter is to be used with FWD records. Valid values are [`NoProxy`, `DefaultProxy`, `Http`, `Socks5`]. Default value `DefaultProxy` is used when this parameter is missing.
- `proxyAddress` (optional): The proxy server address to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `proxyPort` (optional): The proxy server port to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `proxyUsername` (optional): The proxy server username to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `proxyPassword` (optional): The proxy server password to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `appName` (optional): The name of the DNS app. This parameter is required for adding the `APP` record.
- `classPath` (optional): This parameter is required for adding the `APP` record.
- `recordData` (optional): This parameter is used for adding the `APP` record as per the DNS app requirements.
- `rdata` (optional): This parameter is used for adding unknown i.e. unsupported record types. The value must be formatted as a hex string or a colon separated hex string.
RESPONSE:
```
{
"response": {
"zone": {
"name": "example.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "SignedWithNSEC",
"disabled": false
},
"addedRecord": {
"disabled": false,
"name": "example.com",
"type": "A",
"ttl": 3600,
"rData": {
"ipAddress": "3.3.3.3"
},
"dnssecStatus": "Unknown",
"lastUsedOn": "0001-01-01T00:00:00"
}
},
"status": "ok"
}
```
### Get Records
Gets all records for a given authoritative zone.
URL:\
`http://localhost:5380/api/zones/records/get?token=x&domain=example.com&zone=example.com&listZone=true`
OBSOLETE PATH:\
`/api/zone/getRecords`\
`/api/getRecords`
PERMISSIONS:\
Zones: None\
Zone: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `domain`: The domain name of the zone to get records.
- `zone` (optional): The name of the authoritative zone into which the `domain` exists. When unspecified, the closest authoritative zone will be used.
- `listZone` (optional): When set to `true` will list all records in the zone else will list records only for the given domain name. Default value is `false` when not specified.
RESPONSE:
```
{
"response": {
"zone": {
"name": "example.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "SignedWithNSEC3",
"disabled": false
},
"records": [
{
"disabled": false,
"name": "example.com",
"type": "A",
"ttl": 3600,
"rData": {
"ipAddress": "1.1.1.1"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "NS",
"ttl": 3600,
"rData": {
"nameServer": "server1"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "SOA",
"ttl": 900,
"rData": {
"primaryNameServer": "server1",
"responsiblePerson": "hostadmin.example.com",
"serial": 35,
"refresh": 900,
"retry": 300,
"expire": 604800,
"minimum": 900
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "RRSIG",
"ttl": 900,
"rData": {
"typeCovered": "NSEC3PARAM",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 900,
"signatureExpiration": "2022-03-15T11:45:31Z",
"signatureInception": "2022-03-05T10:45:31Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "vJ/fXkGKsapdvWjDhcfHsBxpZhSzMRLZv3/bEGJ4N3/K7jiM92Ik336W680SI7g+NyPCQ3gqE7ta/JEL4bht4Q=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "RRSIG",
"ttl": 900,
"rData": {
"typeCovered": "SOA",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 900,
"signatureExpiration": "2022-03-15T12:53:39Z",
"signatureInception": "2022-03-05T11:53:39Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "9PQHH3ZGCuFRYkn28SoilS8y8zszgeOpCfJpIOAaE5ao+iBPCXudHacr/EpgB2wLzXpRjR+WgiYjmJH17+6bKg=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "RRSIG",
"ttl": 3600,
"rData": {
"typeCovered": "A",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 3600,
"signatureExpiration": "2022-03-15T11:25:35Z",
"signatureInception": "2022-03-05T10:25:35Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "dWjn5hTWuEq57ncwGdVq+kdbMuFtuxLuZhYCcQMdsTxYkM/64RrPY6eYwfYQ7+fY1+QBSX2WudAM4dzbmL/s2A=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "RRSIG",
"ttl": 3600,
"rData": {
"typeCovered": "NS",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 3600,
"signatureExpiration": "2022-03-15T11:25:35Z",
"signatureInception": "2022-03-05T10:25:35Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "Yx+leBcYNFf0gUfN6rECWrUZwCDhJbAGk1BNOJN01nPakS5meSbDApUHJZeAzfSBcPzodK3ddmEuhho1MABaZw=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "RRSIG",
"ttl": 86400,
"rData": {
"typeCovered": "DNSKEY",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 86400,
"signatureExpiration": "2022-03-15T12:27:09Z",
"signatureInception": "2022-03-05T11:27:09Z",
"keyTag": 65078,
"signersName": "example.com",
"signature": "KWAK7o+FjJ2/6ZvX4C1wB41yRzlmec5pR2TTeNWlY/weg0MNKCLRs3uTopSjoTih+uq3IRR7Zx0iOcy7evOitA=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "RRSIG",
"ttl": 86400,
"rData": {
"typeCovered": "DNSKEY",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 86400,
"signatureExpiration": "2022-03-15T12:27:09Z",
"signatureInception": "2022-03-05T11:27:09Z",
"keyTag": 52896,
"signersName": "example.com",
"signature": "oHtt1gUmDXxI5GMfS+LJ6uxKUcuUu+5EELXdhLrbk5V/yganP6sMgA4hGkzokYM22LDowjSdO5qwzCW6IDgKxg=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "DNSKEY",
"ttl": 86400,
"rData": {
"flags": "SecureEntryPoint, ZoneKey",
"protocol": 3,
"algorithm": "ECDSAP256SHA256",
"publicKey": "dMRyc/Pji31mF3iHNrybPzbgvtb2NKtmXhjQq433BHI= ZveDa1z00VxDnugV1x7EDvpt+42TDh8OQwp1kOrpX0E=",
"computedKeyTag": 65078,
"dnsKeyState": "Ready",
"computedDigests": [
{
"digestType": "SHA256",
"digest": "BBE017B17E5CB5FFFF1EC2C7815367DF80D8E7EAEE4832D3ED192159D79B1EEB"
},
{
"digestType": "SHA384",
"digest": "0B0C9F1019BD3FE62C8B71F8C80E7A833BA468A7E303ABC819C0CB9BEDE8E26BB50CB1729547BFCCE2AE22390E44CDA3"
}
]
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "DNSKEY",
"ttl": 86400,
"rData": {
"flags": "ZoneKey",
"protocol": 3,
"algorithm": "ECDSAP256SHA256",
"publicKey": "IUvzTkf4JPg+7k57cQw7n7SR6/1dH7FaKxu9Cf+kcvo= UU+uoKRWnYAFHDNF0X3U8ZYetUyDF7fcNAwEaSQnIUM=",
"computedKeyTag": 61009,
"dnsKeyState": "Active"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "DNSKEY",
"ttl": 3600,
"rData": {
"flags": "SecureEntryPoint, ZoneKey",
"protocol": 3,
"algorithm": "ECDSAP256SHA256",
"publicKey": "KOJWFitKm58EgjO43GDnsFbnkGoqVKeLRkP8FGPAdhqA2F758Ta1mkxieEu0YN0EoX+u5bVuc5DEBFSv+U63CA==",
"computedKeyTag": 15048,
"dnsKeyState": "Published",
"dnsKeyStateReadyBy": "2022-12-18T16:14:50.0328321Z",
"computedDigests": [
{
"digestType": "SHA256",
"digest": "8EAFAE3305DB57A27CA5A261525515461CB7232A34A44AD96441B88BCA9B9849"
},
{
"digestType": "SHA384",
"digest": "4A6DA59E91872B5B835FCEE5987B17151A6F10FE409B595BEEEDB28FE64315C9C268493B59A0BF72EA84BE0F20A33F96"
}
]
},
"dnssecStatus": "Unknown",
"lastUsedOn": "0001-01-01T00:00:00"
},
{
"disabled": false,
"name": "example.com",
"type": "DNSKEY",
"ttl": 86400,
"rData": {
"flags": "ZoneKey",
"protocol": 3,
"algorithm": "ECDSAP256SHA256",
"publicKey": "337uQ11fdKbr6sKYq9mwwBC2xdnu0geuIkfHcIauKNI= rKk7pfVKlLfcGBOIn5hEVeod2aIRIyUiivdTPzrmpIo=",
"computedKeyTag": 4811,
"dnsKeyState": "Published"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "example.com",
"type": "NSEC3PARAM",
"ttl": 900,
"rData": {
"hashAlgorithm": "SHA1",
"flags": "None",
"iterations": 0,
"salt": ""
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "*.example.com",
"type": "A",
"ttl": 3600,
"rData": {
"ipAddress": "7.7.7.7"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "*.example.com",
"type": "RRSIG",
"ttl": 3600,
"rData": {
"typeCovered": "A",
"algorithm": "ECDSAP256SHA256",
"labels": 2,
"originalTtl": 3600,
"signatureExpiration": "2022-03-15T11:25:35Z",
"signatureInception": "2022-03-05T10:25:35Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "ZoUNNEdb8XWqHHi5o4BcUe7deRVlJZLhQtc3sjRtuJ68DNPDmQ0GfCrNTigJcomspr7CYqWcXfoSOqu6f2AyyQ=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "4F3CNT8CU22TNGEC382JJ4GDE4RB47UB.example.com",
"type": "RRSIG",
"ttl": 900,
"rData": {
"typeCovered": "NSEC3",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 900,
"signatureExpiration": "2022-03-15T11:45:31Z",
"signatureInception": "2022-03-05T10:45:31Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "piZeLYa6WpHyiJerPlXq2s+JKBjHznNALXHJCOfiQ4o/iTqWILoqYHfKB5AWrLwLmkxXcbKf63CnEMGlinRidg=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "4F3CNT8CU22TNGEC382JJ4GDE4RB47UB.example.com",
"type": "NSEC3",
"ttl": 900,
"rData": {
"hashAlgorithm": "SHA1",
"flags": "None",
"iterations": 0,
"salt": "",
"nextHashedOwnerName": "KG19N32806C832KIJDNGLQ8P9M2R5MDJ",
"types": [
"A"
]
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "KG19N32806C832KIJDNGLQ8P9M2R5MDJ.example.com",
"type": "RRSIG",
"ttl": 900,
"rData": {
"typeCovered": "NSEC3",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 900,
"signatureExpiration": "2022-03-15T11:45:31Z",
"signatureInception": "2022-03-05T10:45:31Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "i/PMxc1LFA9a8jLxju7SSpoY7y8aZYkAILcCRIxE3lTundPJmzFG0U9kve04kqT7+Klmzj3OzXnCvjTA54+DZA=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "KG19N32806C832KIJDNGLQ8P9M2R5MDJ.example.com",
"type": "NSEC3",
"ttl": 900,
"rData": {
"hashAlgorithm": "SHA1",
"flags": "None",
"iterations": 0,
"salt": "",
"nextHashedOwnerName": "MIFDNDT3NFF3OD53O7TLA1HRFF95JKUK",
"types": [
"NS",
"DS"
]
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "MIFDNDT3NFF3OD53O7TLA1HRFF95JKUK.example.com",
"type": "RRSIG",
"ttl": 900,
"rData": {
"typeCovered": "NSEC3",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 900,
"signatureExpiration": "2022-03-15T11:45:31Z",
"signatureInception": "2022-03-05T10:45:31Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "mr37TDMmWJ3YLNtpYy++S9eAeHIXKajX6jB8zLscJyC1uI0OFnSTuesfhIlLDbj0SDgrzRQWsLmvMKzfq89TJA=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "MIFDNDT3NFF3OD53O7TLA1HRFF95JKUK.example.com",
"type": "NSEC3",
"ttl": 900,
"rData": {
"hashAlgorithm": "SHA1",
"flags": "None",
"iterations": 0,
"salt": "",
"nextHashedOwnerName": "ONIB9MGUB9H0RML3CDF5BGRJ59DKJHVK",
"types": [
"CNAME"
]
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "ONIB9MGUB9H0RML3CDF5BGRJ59DKJHVK.example.com",
"type": "RRSIG",
"ttl": 900,
"rData": {
"typeCovered": "NSEC3",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 900,
"signatureExpiration": "2022-03-15T11:45:31Z",
"signatureInception": "2022-03-05T10:45:31Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "GGh/KkB6C2D55xRJa0zFbZ8As3DZK9btUamryZVmyo7FaLPyltkeRZor9OExgQ6HC1SLXNGJIfCO9cM4K6P8iw=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "ONIB9MGUB9H0RML3CDF5BGRJ59DKJHVK.example.com",
"type": "NSEC3",
"ttl": 900,
"rData": {
"hashAlgorithm": "SHA1",
"flags": "None",
"iterations": 0,
"salt": "",
"nextHashedOwnerName": "4F3CNT8CU22TNGEC382JJ4GDE4RB47UB",
"types": [
"A",
"NS",
"SOA",
"DNSKEY",
"NSEC3PARAM"
]
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "sub.example.com",
"type": "NS",
"ttl": 3600,
"rData": {
"nameServer": "server1"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "sub.example.com",
"type": "DS",
"ttl": 3600,
"rData": {
"keyTag": 46125,
"algorithm": "ECDSAP384SHA384",
"digestType": "SHA1",
"digest": "5590E425472785A16DC0F853000557DB5543C39E"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "sub.example.com",
"type": "RRSIG",
"ttl": 3600,
"rData": {
"typeCovered": "NS",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 3600,
"signatureExpiration": "2022-03-15T11:25:35Z",
"signatureInception": "2022-03-05T10:25:35Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "hFzYTL9V0/0UQZlvZpRWCOvu/2udvhswKoxpe4+quNuC6K59W7uCJLuDm/z0aFK5nW8Of4oTk2YjSBZo0nBSlg=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "sub.example.com",
"type": "RRSIG",
"ttl": 3600,
"rData": {
"typeCovered": "DS",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 3600,
"signatureExpiration": "2022-03-15T12:53:39Z",
"signatureInception": "2022-03-05T11:53:39Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "UYpUKV5Uq7DM3rltg3sPFOwYgRa2yBzT/j9U8xCh5oyXt27fIn3eemvqqe9qV4xeQaAN0QfQPkj9vmOZSAYafg=="
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "www.example.com",
"type": "CNAME",
"ttl": 3600,
"rData": {
"cname": "example.com"
},
"dnssecStatus": "Unknown"
},
{
"disabled": false,
"name": "www.example.com",
"type": "RRSIG",
"ttl": 3600,
"rData": {
"typeCovered": "CNAME",
"algorithm": "ECDSAP256SHA256",
"labels": 3,
"originalTtl": 3600,
"signatureExpiration": "2022-03-15T11:25:35Z",
"signatureInception": "2022-03-05T10:25:35Z",
"keyTag": 61009,
"signersName": "example.com",
"signature": "cAbYvDJhZGLS/uI5I4mSrh7S5gEUy6bmX2sY7zEd1XVFPqrUOZHbVZuwXPjA6r9/m0rCaww9RiG90JhNNDLEtA=="
},
"dnssecStatus": "Unknown"
}
]
},
"status": "ok"
}
```
### Update Record
Updates an existing record in an authoritative zone.
URL:\
`http://localhost:5380/api/zones/records/update?token=x&domain=mail.example.com&zone=example.com&type=A&value=127.0.0.1&newValue=127.0.0.2&ptr=false`
OBSOLETE PATH:\
`/api/zone/updateRecord`\
`/api/updateRecord`
PERMISSIONS:\
Zones: None\
Zone: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `domain`: The domain name of the zone to update the record.
- `zone` (optional): The name of the authoritative zone into which the `domain` exists. When unspecified, the closest authoritative zone will be used.
- `type`: The type of the resource record to update.
- `newDomain` (optional): The new domain name to be set for the record. To be used to rename sub domain name of the record.
- `ttl` (optional): The TTL value of the resource record. Default value of `3600` is used when parameter is missing.
- `disable` (optional): Specifies if the record should be disabled. The default value is `false` when this parameter is missing.
- `comments` (optional): Sets comments for the updated resource record.
- `expiryTtl` (optional): Set to automatically delete the record when the value in seconds elapses since the record’s last modified time.
- `ipAddress` (optional): The current IP address in the `A` or `AAAA` record. This parameter is required when updating `A` or `AAAA` record.
- `newIpAddress` (optional): The new IP address in the `A` or `AAAA` record. This parameter when missing will use the current value in the record.
- `ptr` (optional): Set this option to `true` to specify if the PTR record associated with the `A` or `AAAA` record must also be updated. This option is used only for `A` and `AAAA` records.
- `createPtrZone` (optional): Set this option to `true` to create a reverse zone for PTR record. This option is used only for `A` and `AAAA` records.
- `updateSvcbHints` (optional): Set this option to `true` to update any SVCB/HTTPS records in the zone that has Automatic Hints option enabled and matches its target name with the current record's domain name. This option is used for `A` and `AAAA` records.
- `nameServer` (optional): The current name server domain name. This option is required for updating `NS` record.
- `newNameServer` (optional): The new server domain name. This option is used for updating `NS` record.
- `glue` (optional): The comma separated list of IP addresses set as glue for the NS record. This parameter is used only when updating `NS` record.
- `cname` (optional): The CNAME domain name to update in the existing `CNAME` record.
- `primaryNameServer` (optional): This is the primary name server parameter in the SOA record. This parameter is required when updating the SOA record.
- `responsiblePerson` (optional): This is the responsible person parameter in the SOA record. This parameter is required when updating the SOA record.
- `serial` (optional): This is the serial parameter in the SOA record. This parameter is required when updating the SOA record.
- `refresh` (optional): This is the refresh parameter in the SOA record. This parameter is required when updating the SOA record.
- `retry` (optional): This is the retry parameter in the SOA record. This parameter is required when updating the SOA record.
- `expire` (optional): This is the expire parameter in the SOA record. This parameter is required when updating the SOA record.
- `minimum` (optional): This is the minimum parameter in the SOA record. This parameter is required when updating the SOA record.
- `useSerialDateScheme` (optional): Set value to `true` to enable using date scheme for SOA serial. This optional parameter is used only with `Primary`, `Forwarder`, and `Catalog` zones. Default value is `false`. This parameter is required when updating the SOA record.
- `ptrName`(optional): The current PTR domain name. This option is required for updating `PTR` record.
- `newPtrName`(optional): The new PTR domain name. This option is required for updating `PTR` record.
- `preference` (optional): The current preference value in an MX record. This parameter when missing will default to `1` value. This parameter is used only when updating `MX` record.
- `newPreference` (optional): The new preference value in an MX record. This parameter when missing will use the old value. This parameter is used only when updating `MX` record.
- `exchange` (optional): The current exchange domain name. This option is required for updating `MX` record.
- `newExchange` (optional): The new exchange domain name. This option is required for updating `MX` record.
- `text` (optional): The current text value. This option is required for updating `TXT` record.
- `newText` (optional): The new text value. This option is required for updating `TXT` record.
- `splitText` (optional): The current split text value. This option is used for updating `TXT` record and is set to `false` when unspecified.
- `newSplitText` (optional): The new split text value. This option is used for updating `TXT` record and is set to current split text value when unspecified.
- `mailbox` (optional): The current email address value. This option is required for updating `RP` record.
- `newMailbox` (optional): The new email address value. This option is used for updating `RP` record and is set to the current value when unspecified.
- `txtDomain` (optional): The current TXT record's domain name value. This option is required for updating `RP` record.
- `newTxtDomain` (optional). The new TXT record's domain name value. This option is used for updating `RP` record and is set to the current value when unspecified.
- `priority` (optional): This is the current priority in the SRV record. This parameter is required when updating the `SRV` record.
- `newPriority` (optional): This is the new priority in the SRV record. This parameter when missing will use the old value. This parameter is used when updating the `SRV` record.
- `weight` (optional): This is the current weight in the SRV record. This parameter is required when updating the `SRV` record.
- `newWeight` (optional): This is the new weight in the SRV record. This parameter when missing will use the old value. This parameter is used when updating the `SRV` record.
- `port` (optional): This is the port parameter in the SRV record. This parameter is required when updating the `SRV` record.
- `newPort` (optional): This is the new value of the port parameter in the SRV record. This parameter when missing will use the old value. This parameter is used to update the port parameter in the `SRV` record.
- `target` (optional): The current target value. This parameter is required when updating the `SRV` record.
- `newTarget` (optional): The new target value. This parameter when missing will use the old value. This parameter is required when updating the `SRV` record.
- `naptrOrder` (optional): The current value in the NAPTR record. This parameter is required when updating the `NAPTR` record.
- `naptrNewOrder` (optional): The new value in the NAPTR record. This parameter when missing will use the old value. This parameter is used when updating the `NAPTR` record.
- `naptrPreference` (optional): The current value in the NAPTR record. This parameter is required when updating the `NAPTR` record.
- `naptrNewPreference` (optional): The new value in the NAPTR record. This parameter when missing will use the old value. This parameter is used when updating the `NAPTR` record.
- `naptrFlags` (optional): The current value in the NAPTR record. This parameter is required when updating the `NAPTR` record.
- `naptrNewFlags` (optional): The new value in the NAPTR record. This parameter when missing will use the old value. This parameter is used when updating the `NAPTR` record.
- `naptrServices` (optional): The current value in the NAPTR record. This parameter is required when updating the `NAPTR` record.
- `naptrNewServices` (optional): The new value in the NAPTR record. This parameter when missing will use the old value. This parameter is used when updating the `NAPTR` record.
- `naptrRegexp` (optional): The current value in the NAPTR record. This parameter is required when updating the `NAPTR` record.
- `naptrNewRegexp` (optional): The new value in the NAPTR record. This parameter when missing will use the old value. This parameter is used when updating the `NAPTR` record.
- `naptrReplacement` (optional): The current value in the NAPTR record. This parameter is required when updating the `NAPTR` record.
- `naptrNewReplacement` (optional): The new value in the NAPTR record. This parameter when missing will use the old value. This parameter is used when updating the `NAPTR` record.
- `dname` (optional): The DNAME domain name. This parameter is required when updating the `DNAME` record.
- `keyTag` (optional): This parameter is required when updating `DS` record.
- `newKeyTag` (optional): This parameter is required when updating `DS` record.
- `algorithm` (optional): This parameter is required when updating `DS` record.
- `newAlgorithm` (optional): This parameter is required when updating `DS` record.
- `digestType` (optional): This parameter is required when updating `DS` record.
- `newDigestType` (optional): This parameter is required when updating `DS` record.
- `digest` (optional): This parameter is required when updating `DS` record.
- `newDigest` (optional): This parameter is required when updating `DS` record.
- `sshfpAlgorithm` (optional): This parameter is required when updating `SSHFP` record.
- `newSshfpAlgorithm` (optional): This parameter is required when updating `SSHFP` record.
- `sshfpFingerprintType` (optional): This parameter is required when updating `SSHFP` record.
- `newSshfpFingerprintType` (optional): This parameter is required when updating `SSHFP` record.
- `sshfpFingerprint` (optional): This parameter is required when updating `SSHFP` record.
- `newSshfpFingerprint` (optional): This parameter is required when updating `SSHFP` record.
- `tlsaCertificateUsage` (optional): This parameter is required when updating `TLSA` record.
- `newTlsaCertificateUsage` (optional): This parameter is required when updating `TLSA` record.
- `tlsaSelector` (optional): This parameter is required when updating `TLSA` record.
- `newTlsaSelector` (optional): This parameter is required when updating `TLSA` record.
- `tlsaMatchingType` (optional): This parameter is required when updating `TLSA` record.
- `newTlsaMatchingType` (optional): This parameter is required when updating `TLSA` record.
- `tlsaCertificateAssociationData` (optional): This parameter is required when updating `TLSA` record.
- `newTlsaCertificateAssociationData` (optional): This parameter is required when updating `TLSA` record.
- `svcPriority` (optional): The priority value for `SVCB` or `HTTPS` record. This parameter is required for updating `SCVB` or `HTTPS` record.
- `newSvcPriority` (optional): The new priority value for `SVCB` or `HTTPS` record. This parameter when missing will use the old value.
- `svcTargetName` (optional): The target domain name for `SVCB` or `HTTPS` record. This parameter is required for updating `SCVB` or `HTTPS` record.
- `newSvcTargetName` (optional): The new target domain name for `SVCB` or `HTTPS` record. This parameter when missing will use the old value.
- `svcParams` (optional): The service parameters for `SVCB` or `HTTPS` record which is a pipe separated list of key and value. For example, `alpn|h2,h3|port|53443`. To clear existing values, set it to `false`. This parameter is required for updating `SCVB` or `HTTPS` record.
- `newSvcParams` (optional): The new service parameters for `SVCB` or `HTTPS` record which is a pipe separated list of key and value. To clear existing values, set it to `false`. This parameter when missing will use the old value.
- `autoIpv4Hint` (optional): Set this option to `true` to enable Automatic Hints for the `ipv4hint` parameter in the `newSvcParams`. This option is valid only for `SVCB` and `HTTPS` records.
- `autoIpv6Hint` (optional): Set this option to `true` to enable Automatic Hints for the `ipv6hint` parameter in the `newSvcParams`. This option is valid only for `SVCB` and `HTTPS` records.
- `uriPriority` (optional): The priority value for the `URI` record. This parameter is required for updating the `URI` record.
- `newUriPriority` (optional): The new priority value for the `URI` record. This parameter when missing will use the old value.
- `uriWeight` (optional): The weight value for the `URI` record. This parameter is required for updating the `URI` record.
- `newUriWeight` (optional): The new weight value for the `URI` record. This parameter when missing will use the old value.
- `uri` (optional): The URI value for the `URI` record. This parameter is required for updating the `URI` record.
- `newUri` (optional): The new URI value for the `URI` record. This parameter when missing will use the old value.
- `flags` (optional): This is the flags parameter in the `CAA` record. This parameter is required when updating the `CAA` record.
- `newFlags` (optional): This is the new value of the flags parameter in the `CAA` record. This parameter is used to update the flags parameter in the `CAA` record.
- `tag` (optional): This is the tag parameter in the `CAA` record. This parameter is required when updating the `CAA` record.
- `newTag` (optional): This is the new value of the tag parameter in the `CAA` record. This parameter is used to update the tag parameter in the `CAA` record.
- `value` (optional): The current value in `CAA` record. This parameter is required when updating the `CAA` record.
- `newValue` (optional): The new value in `CAA` record. This parameter is required when updating the `CAA` record.
- `aname` (optional): The current `ANAME` domain name. This parameter is required when updating the `ANAME` record.
- `newAName` (optional): The new `ANAME` domain name. This parameter is required when updating the `ANAME` record.
- `protocol` (optional): This is the current protocol value in the `FWD` record. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`]. This parameter is optional and default value `Udp` will be used when updating the `FWD` record.
- `newProtocol` (optional): This is the new protocol value in the `FWD` record. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`]. This parameter is optional and default value `Udp` will be used when updating the `FWD` record.
- `forwarder` (optional): The current forwarder address. This parameter is required when updating the `FWD` record.
- `newForwarder` (optional): The new forwarder address. This parameter is required when updating the `FWD` record.
- `forwarderPriority` (optional): The current forwarder priority value. This optional parameter is to be used with `FWD` record. When unspecified, the default value of `0` will be used.
- `dnssecValidation` (optional): Set this boolean value to indicate if DNSSEC validation must be done. This optional parameter is to be used with FWD records. Default value is `false`.
- `proxyType` (optional): The type of proxy that must be used for conditional forwarding. This optional parameter is to be used with FWD records. Valid values are [`NoProxy`, `DefaultProxy`, `Http`, `Socks5`]. Default value `DefaultProxy` is used when this parameter is missing.
- `proxyAddress` (optional): The proxy server address to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `proxyPort` (optional): The proxy server port to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `proxyUsername` (optional): The proxy server username to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `proxyPassword` (optional): The proxy server password to use when `proxyType` is configured. This optional parameter is to be used with FWD records.
- `appName` (optional): This parameter is required for updating the `APP` record.
- `classPath` (optional): This parameter is required for updating the `APP` record.
- `recordData` (optional): This parameter is used for updating the `APP` record as per the DNS app requirements.
- `rdata` (optional): This parameter is used for updating unknown i.e. unsupported record types. The value must be formatted as a hex string or a colon separated hex string.
- `newRData` (optional): This parameter is used for updating unknown i.e. unsupported record types. The new value that must be formatted as a hex string or a colon separated hex string.
RESPONSE:
```
{
"response": {
"zone": {
"name": "example.com",
"type": "Primary",
"internal": false,
"dnssecStatus": "SignedWithNSEC",
"disabled": false
},
"updatedRecord": {
"disabled": false,
"name": "example.com",
"type": "SOA",
"ttl": 900,
"rData": {
"primaryNameServer": "server1.home",
"responsiblePerson": "hostadmin.example.com",
"serial": 75,
"refresh": 900,
"retry": 300,
"expire": 604800,
"minimum": 900
},
"dnssecStatus": "Unknown",
"lastUsedOn": "0001-01-01T00:00:00"
}
},
"status": "ok"
}
```
### Delete Record
Deletes a record from an authoritative zone.
URL:\
`http://localhost:5380/api/zones/records/delete?token=x&domain=example.com&zone=example.com&type=A&value=127.0.0.1`
OBSOLETE PATH:\
`/api/zone/deleteRecord`\
`/api/deleteRecord`
PERMISSIONS:\
Zones: None\
Zone: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `domain`: The domain name of the zone to delete the record.
- `zone` (optional): The name of the authoritative zone into which the `domain` exists. When unspecified, the closest authoritative zone will be used.
- `type`: The type of the resource record to delete.
- `ipAddress` (optional): This parameter is required when deleting `A` or `AAAA` record.
- `updateSvcbHints` (optional): Set this option to `true` to update any SVCB/HTTPS records in the zone that has Automatic Hints option enabled and matches its target name with the current record's domain name. This option is used for `A` and `AAAA` records.
- `nameServer` (optional): This parameter is required when deleting `NS` record.
- `ptrName` (optional): This parameter is required when deleting `PTR` record.
- `preference` (optional): This parameter is required when deleting `MX` record.
- `exchange` (optional): This parameter is required when deleting `MX` record.
- `text` (optional): This parameter is required when deleting `TXT` record.
- `splitText` (optional): This parameter is used when deleting `TXT` record. Default value is set to `false` when unspecified.
- `mailbox` (optional): Set an email address for deleting `RP` record.
- `txtDomain` (optional): Set a `TXT` record's domain name for deleting `RP` record.
- `priority` (optional): This parameter is required when deleting the `SRV` record.
- `weight` (optional): This parameter is required when deleting the `SRV` record.
- `port` (optional): This parameter is required when deleting the `SRV` record.
- `target` (optional): This parameter is required when deleting the `SRV` record.
- `naptrOrder` (optional): This parameter is required when deleting the `NAPTR` record.
- `naptrPreference` (optional): This parameter is required when deleting the `NAPTR` record.
- `naptrFlags` (optional): This parameter is required when deleting the `NAPTR` record.
- `naptrServices` (optional): This parameter is required when deleting the `NAPTR` record.
- `naptrRegexp` (optional): This parameter is required when deleting the `NAPTR` record.
- `naptrReplacement` (optional): This parameter is required when deleting the `NAPTR` record.
- `keyTag` (optional): This parameter is required when deleting `DS` record.
- `algorithm` (optional): This parameter is required when deleting `DS` record.
- `digestType` (optional): This parameter is required when deleting `DS` record.
- `digest` (optional): This parameter is required when deleting `DS` record.
- `sshfpAlgorithm` (optional): This parameter is required when deleting `SSHFP` record.
- `sshfpFingerprintType` (optional): This parameter is required when deleting `SSHFP` record.
- `sshfpFingerprint` (optional): This parameter is required when deleting `SSHFP` record.
- `tlsaCertificateUsage` (optional): This parameter is required when deleting `TLSA` record.
- `tlsaSelector` (optional): This parameter is required when deleting `TLSA` record.
- `tlsaMatchingType` (optional): This parameter is required when deleting `TLSA` record.
- `tlsaCertificateAssociationData` (optional): This parameter is required when deleting `TLSA` record.
- `svcPriority` (optional): The priority value for `SVCB` or `HTTPS` record. This parameter is required for deleting `SCVB` or `HTTPS` record.
- `svcTargetName` (optional): The target domain name for `SVCB` or `HTTPS` record. This parameter is required for deleting `SCVB` or `HTTPS` record.
- `svcParams` (optional): The service parameters for `SVCB` or `HTTPS` record which is a pipe separated list of key and value. For example, `alpn|h2,h3|port|53443`. To clear existing values, set it to `false`. This parameter is required for deleting `SCVB` or `HTTPS` record.
- `uriPriority` (optional): The priority value in the `URI` record. This parameter is required when deleting the `URI` record.
- `uriWeight` (optional): The weight value in the `URI` record. This parameter is required when deleting the `URI` record.
- `uri` (optional): The URI value in the `URI` record. This parameter is required when deleting the `URI` record.
- `flags` (optional): This is the flags parameter in the `CAA` record. This parameter is required when deleting the `CAA` record.
- `tag` (optional): This is the tag parameter in the `CAA` record. This parameter is required when deleting the `CAA` record.
- `value` (optional): This parameter is required when deleting the `CAA` record.
- `aname` (optional): This parameter is required when deleting the `ANAME` record.
- `protocol` (optional): This is the protocol parameter in the FWD record. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`]. This parameter is optional and default value `Udp` will be used when deleting the `FWD` record.
- `forwarder` (optional): This parameter is required when deleting the `FWD` record.
- `rdata` (optional): This parameter is used for deleting unknown i.e. unsupported record types. The value must be formatted as a hex string or a colon separated hex string.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
## DNS Cache API Calls
These API calls allow managing the DNS server cache.
### List Cached Zones
List all cached zones.
URL:\
`http://localhost:5380/api/cache/list?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/listCachedZones`
PERMISSIONS:\
Cache: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `domain` (Optional): The domain name to list records. If not passed, the domain is set to empty string which corresponds to the zone root.
- `direction` (Optional): Allows specifying the direction of browsing the zone. Valid values are [`up`, `down`] and the default value is `down` when parameter is missing. This option allows the server to skip empty labels in the domain name when browsing up or down.
RESPONSE:
```
{
"response": {
"domain": "google.com",
"zones": [],
"records": [
{
"name": "google.com",
"type": "A",
"ttl": "283 (4 mins 43 sec)",
"rData": {
"value": "216.58.199.174"
}
}
]
},
"status": "ok"
}
```
### Delete Cached Zone
Deletes a specific zone from the DNS cache.
URL:\
`http://localhost:5380/api/cache/delete?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/deleteCachedZone`
PERMISSIONS:\
Cache: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `domain`: The domain name to delete cached records from.
RESPONSE:
```
{
"status": "ok"
}
```
### Flush DNS Cache
This call clears all the DNS cache from the server forcing the DNS server to make recursive queries again to populate the cache.
URL:\
`http://localhost:5380/api/cache/flush?token=x`
OBSOLETE PATH:\
`/api/flushDnsCache`
PERMISSIONS:\
Cache: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"status": "ok"
}
```
## Allowed Zones API Calls
These API calls allow managing the Allowed zones.
### List Allowed Zones
List all allowed zones.
URL:\
`http://localhost:5380/api/allowed/list?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/listAllowedZones`
PERMISSIONS:\
Allowed: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `domain` (Optional): The domain name to list records. If not passed, the domain is set to empty string which corresponds to the zone root.
- `direction` (Optional): Allows specifying the direction of browsing the zone. Valid values are [`up`, `down`] and the default value is `down` when parameter is missing. This option allows the server to skip empty labels in the domain name when browsing up or down.
RESPONSE:
```
{
"response": {
"domain": "google.com",
"zones": [],
"records": [
{
"name": "google.com",
"type": "NS",
"ttl": "14400 (4 hours)",
"rData": {
"value": "server1"
}
},
{
"name": "google.com",
"type": "SOA",
"ttl": "14400 (4 hours)",
"rData": {
"primaryNameServer": "server1",
"responsiblePerson": "hostadmin.server1",
"serial": 1,
"refresh": 14400,
"retry": 3600,
"expire": 604800,
"minimum": 900
}
}
]
},
"status": "ok"
}
```
### Allow Zone
Adds a domain name into the Allowed Zones.
URL:\
`http://localhost:5380/api/allowed/add?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/allowZone`
PERMISSIONS:\
Allowed: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `domain`: The domain name for the zone to be added.
RESPONSE:
```
{
"status": "ok"
}
```
### Delete Allowed Zone
Allows deleting a zone from the Allowed Zones.
URL:\
`http://localhost:5380/api/allowed/delete?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/deleteAllowedZone`
PERMISSIONS:\
Allowed: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `domain`: The domain name for the zone to be deleted.
RESPONSE:
```
{
"status": "ok"
}
```
### Flush Allowed Zone
Flushes the Allowed zone to clear all records.
URL:\
`http://localhost:5380/api/allowed/flush?token=x`
OBSOLETE PATH:\
`/api/flushAllowedZone`
PERMISSIONS:\
Allowed: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"status": "ok"
}
```
### Import Allowed Zones
Imports domain names into the Allowed Zones.
URL:\
`http://localhost:5380/api/allowed/import?token=x`
OBSOLETE PATH:\
`/api/importAllowedZones`
PERMISSIONS:\
Allowed: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
REQUEST:
This is a `POST` request call where the content type of the request must be `application/x-www-form-urlencoded` and the content must be as shown below:
```
allowedZones=google.com,twitter.com
```
WHERE:
- `allowedZones`: A list of comma separated domain names that are to be imported.
RESPONSE:
```
{
"status": "ok"
}
```
### Export Allowed Zones
Allows exporting all the zones from the Allowed Zones as a text file.
URL:\
`http://localhost:5380/api/allowed/export?token=x`
OBSOLETE PATH:\
`/api/exportAllowedZones`
PERMISSIONS:\
Allowed: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
RESPONSE:
Response is a downloadable text file with `Content-Type: text/plain` and `Content-Disposition: attachment`.
## Blocked Zones API Calls
These API calls allow managing the Blocked zones.
### List Blocked Zones
List all blocked zones.
URL:\
`http://localhost:5380/api/blocked/list?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/listBlockedZones`
PERMISSIONS:\
Blocked: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `domain` (Optional): The domain name to list records. If not passed, the domain is set to empty string which corresponds to the zone root.
- `direction` (Optional): Allows specifying the direction of browsing the zone. Valid values are [`up`, `down`] and the default value is `down` when parameter is missing. This option allows the server to skip empty labels in the domain name when browsing up or down.
RESPONSE:
```
{
"response": {
"domain": "google.com",
"zones": [],
"records": [
{
"name": "google.com",
"type": "NS",
"ttl": "14400 (4 hours)",
"rData": {
"value": "server1"
}
},
{
"name": "google.com",
"type": "SOA",
"ttl": "14400 (4 hours)",
"rData": {
"primaryNameServer": "server1",
"responsiblePerson": "hostadmin.server1",
"serial": 1,
"refresh": 14400,
"retry": 3600,
"expire": 604800,
"minimum": 900
}
}
]
},
"status": "ok"
}
```
### Block Zone
Adds a domain name into the Blocked Zones.
URL:\
`http://localhost:5380/api/blocked/add?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/blockZone`
PERMISSIONS:\
Blocked: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `domain`: The domain name for the zone to be added.
RESPONSE:
```
{
"status": "ok"
}
```
### Delete Blocked Zone
Allows deleting a zone from the Blocked Zones.
URL:\
`http://localhost:5380/api/blocked/delete?token=x&domain=google.com`
OBSOLETE PATH:\
`/api/deleteBlockedZone`
PERMISSIONS:\
Blocked: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `domain`: The domain name for the zone to be deleted.
RESPONSE:
```
{
"status": "ok"
}
```
### Flush Blocked Zone
Flushes the Blocked zone to clear all records.
URL:\
`http://localhost:5380/api/blocked/flush?token=x`
OBSOLETE PATH:\
`/api/flushBlockedZone`
PERMISSIONS:\
Blocked: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"status": "ok"
}
```
### Import Blocked Zones
Imports domain names into Blocked Zones.
URL:\
`http://localhost:5380/api/blocked/import?token=x`
OBSOLETE PATH:\
`/api/importBlockedZones`
PERMISSIONS:\
Blocked: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
REQUEST:
This is a `POST` request call where the content type of the request must be `application/x-www-form-urlencoded` and the content must be as shown below:
```
blockedZones=google.com,twitter.com
```
WHERE:
- `blockedZones`: A list of comma separated domain names that are to be imported.
RESPONSE:
```
{
"status": "ok"
}
```
### Export Blocked Zones
Allows exporting all the zones from the Blocked Zones as a text file.
URL:\
`http://localhost:5380/api/blocked/export?token=x`
OBSOLETE PATH:\
`/api/exportBlockedZones`
PERMISSIONS:\
Blocked: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
RESPONSE:
Response is a downloadable text file with `Content-Type: text/plain` and `Content-Disposition: attachment`.
## DNS Apps API Calls
These API calls allows managing DNS Apps.
### List Apps
Lists all installed apps on the DNS server. If the DNS server has Internet access and is able to retrieve data from DNS App Store, the API call will also return if a store App has updates available.
URL:\
`http://localhost:5380/api/apps/list?token=x`
PERMISSIONS:\
Apps/Zones/Logs: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
RESPONSE:
```
{
"response": {
"apps": [
{
"name": "Block Page",
"version": "1.0",
"dnsApps": [
{
"classPath": "BlockPageWebServer.App",
"description": "Serves a block page from a built-in web server that can be displayed to the end user when a website is blocked by the DNS server.\n\nNote: You need to manually configure the custom IP addresses of this built-in web server in the blocking settings for the block page to be served.",
"isAppRecordRequestHandler": false,
"isRequestController": false,
"isAuthoritativeRequestHandler": false,
"isRequestBlockingHandler": false,
"isQueryLogger": false,
"isPostProcessor": false
}
]
},
{
"name": "What Is My DNS",
"version": "2.0",
"dnsApps": [
{
"classPath": "WhatIsMyDns.App",
"description": "Returns the IP address of the user's DNS Server for A, AAAA, and TXT queries.",
"isAppRecordRequestHandler": true,
"recordDataTemplate": null,
"isRequestController": false,
"isAuthoritativeRequestHandler": false,
"isRequestBlockingHandler": false,
"isQueryLogger": false,
"isPostProcessor": false
}
]
}
]
},
"status": "ok"
}
```
### List Store Apps
Lists all available apps on the DNS App Store.
URL:\
`http://localhost:5380/api/apps/listStoreApps?token=x`
PERMISSIONS:\
Apps: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
RESPONSE:
```
{
"response": {
"storeApps": [
{
"name": "Geo Continent",
"version": "1.1",
"description": "Returns A or AAAA records, or CNAME record based on the continent the client queries from using MaxMind GeoIP2 Country database. This app requires MaxMind GeoIP2 database and includes the GeoLite2 version for trial. To update the MaxMind GeoIP2 database for your app, download the GeoIP2-Country.mmdb file from MaxMind and zip it. Use the zip file with the manual Update option.",
"url": "https://download.technitium.com/dns/apps/GeoContinentApp.zip",
"size": "2.01 MB",
"installed": false
},
{
"name": "Geo Country",
"version": "1.1",
"description": "Returns A or AAAA records, or CNAME record based on the country the client queries from using MaxMind GeoIP2 Country database. This app requires MaxMind GeoIP2 database and includes the GeoLite2 version for trial. To update the MaxMind GeoIP2 database for your app, download the GeoIP2-Country.mmdb file from MaxMind and zip it. Use the zip file with the manual Update option.",
"url": "https://download.technitium.com/dns/apps/GeoCountryApp.zip",
"size": "2.01 MB",
"installed": false
},
{
"name": "Geo Distance",
"version": "1.1",
"description": "Returns A or AAAA records, or CNAME record of the server located geographically closest to the client using MaxMind GeoIP2 City database. This app requires MaxMind GeoIP2 database and includes the GeoLite2 version for trial. To update the MaxMind GeoIP2 database for your app, download the GeoIP2-City.mmdb file from MaxMind and zip it. Use the zip file with the manual Update option.",
"url": "https://download.technitium.com/dns/apps/GeoDistanceApp.zip",
"size": "28.6 MB",
"installed": false
},
{
"name": "Split Horizon",
"version": "1.1",
"description": "Returns different set of A or AAAA records, or CNAME record for clients querying over public and private networks.",
"url": "https://download.technitium.com/dns/apps/SplitHorizonApp.zip",
"size": "11.1 KB",
"installed": true,
"installedVersion": "1.1",
"updateAvailable": false
},
{
"name": "What Is My Dns",
"version": "1.1",
"description": "Returns the IP address of the user's DNS Server for A, AAAA, and TXT queries.",
"url": "https://download.technitium.com/dns/apps/WhatIsMyDnsApp.zip",
"size": "8.79 KB",
"installed": true,
"installedVersion": "1.1",
"updateAvailable": false
}
]
},
"status": "ok"
}
```
### Download And Install App
Download an app zip file from given URL and installs it on the DNS Server.
URL:\
`http://localhost:5380/api/apps/downloadAndInstall?token=x&name=app-name&url=https://example.com/app.zip`
PERMISSIONS:\
Apps: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the app to install.
- `url`: The URL of the app zip file. URL must start with `https://`.
RESPONSE:
```
{
"response": {
"installedApp": {
"name": "Wild IP",
"version": "1.0",
"dnsApps": [
{
"classPath": "WildIp.App",
"description": "Returns the IP address that was embedded in the subdomain name for A and AAAA queries. It works similar to sslip.io.",
"isAppRecordRequestHandler": true,
"recordDataTemplate": null,
"isRequestController": false,
"isAuthoritativeRequestHandler": false,
"isRequestBlockingHandler": false,
"isQueryLogger": false,
"isPostProcessor": false
}
]
}
},
"status": "ok"
}
```
### Download And Update App
Download an app zip file from given URL and updates an existing app installed on the DNS Server.
URL:\
`http://localhost:5380/api/apps/downloadAndUpdate?token=x&name=app-name&url=https://example.com/app.zip`
PERMISSIONS:\
Apps: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the app to install.
- `url`: The URL of the app zip file. URL must start with `https://`.
RESPONSE:
```
{
"response": {
"updatedApp": {
"name": "Wild IP",
"version": "1.0",
"dnsApps": [
{
"classPath": "WildIp.App",
"description": "Returns the IP address that was embedded in the subdomain name for A and AAAA queries. It works similar to sslip.io.",
"isAppRecordRequestHandler": true,
"recordDataTemplate": null,
"isRequestController": false,
"isAuthoritativeRequestHandler": false,
"isRequestBlockingHandler": false,
"isQueryLogger": false,
"isPostProcessor": false
}
]
}
},
"status": "ok"
}
```
### Install App
Installs a DNS application on the DNS server.
URL:\
`http://localhost:5380/api/apps/install?token=x&name=app-name`
PERMISSIONS:\
Apps: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the app to install.
REQUEST: This is a POST request call where the request must be multi-part form data with the DNS application zip file data in binary format.
RESPONSE:
```
{
"response": {
"installedApp": {
"name": "Wild IP",
"version": "1.0",
"dnsApps": [
{
"classPath": "WildIp.App",
"description": "Returns the IP address that was embedded in the subdomain name for A and AAAA queries. It works similar to sslip.io.",
"isAppRecordRequestHandler": true,
"recordDataTemplate": null,
"isRequestController": false,
"isAuthoritativeRequestHandler": false,
"isRequestBlockingHandler": false,
"isQueryLogger": false,
"isPostProcessor": false
}
]
}
},
"status": "ok"
}
```
### Update App
Allows to manually update an installed app using a provided app zip file.
URL:\
`http://localhost:5380/api/apps/update?token=x&name=app-name`
PERMISSIONS:\
Apps: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the app to update.
REQUEST: This is a POST request call where the request must be multi-part form data with the DNS application zip file data in binary format.
RESPONSE:
```
{
"response": {
"updatedApp": {
"name": "Wild IP",
"version": "1.0",
"dnsApps": [
{
"classPath": "WildIp.App",
"description": "Returns the IP address that was embedded in the subdomain name for A and AAAA queries. It works similar to sslip.io.",
"isAppRecordRequestHandler": true,
"recordDataTemplate": null,
"isRequestController": false,
"isAuthoritativeRequestHandler": false,
"isRequestBlockingHandler": false,
"isQueryLogger": false,
"isPostProcessor": false
}
]
}
},
"status": "ok"
}
```
### Uninstall App
Uninstall an app from the DNS server. This does not remove any APP records that were using this DNS application.
URL:\
`http://localhost:5380/api/apps/uninstall?token=x&name=app-name`
PERMISSIONS:\
Apps: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the app to uninstall.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
### Get App Config
Retrieve the DNS application config from the `dnsApp.config` file in the application folder.
URL:\
`http://localhost:5380/api/apps/config/get?token=x&name=app-name`
OBSOLETE PATH:\
`/api/apps/getConfig`
PERMISSIONS:\
Apps: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `name`: The name of the app to retrieve the config.
RESPONSE:
```
{
"response": {
"config": "config data or `null`"
},
"status": "ok"
}
```
### Set App Config
Saves the provided DNS application config into the `dnsApp.config` file in the application folder.
URL:\
`http://localhost:5380/api/apps/config/set?token=x&name=app-name`
OBSOLETE PATH:\
`/api/apps/setConfig`
PERMISSIONS:\
Apps: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the app to retrieve the config.
REQUEST: This is a POST request call where the content type of the request must be `application/x-www-form-urlencoded` and the content must be as shown below:
```
config=query-string-encoded-config-data
```
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
## DNS Client API Calls
These API calls allow interacting with the DNS Client section.
### Resolve Query
URL:\
`http://localhost:5380/api/dnsClient/resolve?token=x&server=this-server&domain=example.com&type=A&protocol=UDP`
OBSOLETE PATH:\
`/api/resolveQuery`
PERMISSIONS:\
DnsClient: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `server`: The name server to query using the DNS client. Use `recursive-resolver` to perform recursive resolution. Use `system-dns` to query the DNS servers configured on the system.
- `domain`: The domain name to query.
- `type`: The type of the query.
- `protocol` (optional): The DNS transport protocol to be used to query. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`]. The default value of `Udp` is used when the parameter is missing.
- `dnssec` (optional): Set to `true` to enable DNSSEC validation.
- `eDnsClientSubnet` (optional): The network address to be used with EDNS Client Subnet option in the request.
- `import` (optional): This parameter when set to `true` indicates that the response of the DNS query should be imported in the an authoritative zone on this DNS server. Default value is `false` when this parameter is missing. If a zone does not exists, a primary zone for the `domain` name is created and the records from the response are set into the zone. Import can be done only for primary and forwarder type of zones. When `type` is set to AXFR, then the import feature will work as if a zone transfer was requested and the complete zone will be updated as per the zone transfer response. Note that any existing record type for the given `type` will be overwritten when syncing the records. It is recommended to use `recursive-resolver` or the actual name server address for the `server` parameter when importing records. You must have Zones Modify permission to create a zone or Zone Modify permission to import records into an existing zone.
RESPONSE:
```
{
"response": {
"result": {
"Metadata": {
"NameServer": "server1:53 (127.0.0.1:53)",
"Protocol": "Udp",
"DatagramSize": "45 bytes",
"RoundTripTime": "1.42 ms"
},
"Identifier": 60127,
"IsResponse": true,
"OPCODE": "StandardQuery",
"AuthoritativeAnswer": true,
"Truncation": false,
"RecursionDesired": true,
"RecursionAvailable": true,
"Z": 0,
"AuthenticData": false,
"CheckingDisabled": false,
"RCODE": "NoError",
"QDCOUNT": 1,
"ANCOUNT": 1,
"NSCOUNT": 0,
"ARCOUNT": 0,
"Question": [
{
"Name": "example.com",
"Type": "A",
"Class": "IN"
}
],
"Answer": [
{
"Name": "example.com",
"Type": "A",
"Class": "IN",
"TTL": "86400 (1 day)",
"RDLENGTH": "4 bytes",
"RDATA": {
"IPAddress": "127.0.0.1"
}
}
],
"Authority": [],
"Additional": []
},
"rawResponses": []
},
"status": "ok"
}
```
## Settings API Calls
These API calls allow managing the DNS server settings.
### Get DNS Settings
This call returns all the DNS server settings.
URL:\
`http://localhost:5380/api/settings/get?token=x`
OBSOLETE PATH:\
`/api/getDnsSettings`
PERMISSIONS:\
Settings: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"response": {
"version": "14.3",
"uptimestamp": "2025-05-31T10:28:21.6864142Z",
"dnsServerDomain": "server1",
"dnsServerLocalEndPoints": [
"0.0.0.0:53",
"[::]:53"
],
"dnsServerIPv4SourceAddresses": [
"0.0.0.0"
],
"dnsServerIPv6SourceAddresses": [
"::"
],
"defaultRecordTtl": 3600,
"defaultNsRecordTtl": 14400,
"defaultSoaRecordTtl": 900,
"defaultResponsiblePerson": null,
"useSoaSerialDateScheme": false,
"minSoaRefresh": 300,
"minSoaRetry": 300,
"zoneTransferAllowedNetworks": [],
"notifyAllowedNetworks": [],
"dnsAppsEnableAutomaticUpdate": true,
"preferIPv6": false,
"enableUdpSocketPool": false,
"socketPoolExcludedPorts": [
53443
],
"udpPayloadSize": 1232,
"dnssecValidation": true,
"eDnsClientSubnet": false,
"eDnsClientSubnetIPv4PrefixLength": 24,
"eDnsClientSubnetIPv6PrefixLength": 56,
"eDnsClientSubnetIpv4Override": null,
"eDnsClientSubnetIpv6Override": null,
"qpmPrefixLimitsIPv4": [
{
"prefix": 32,
"udpLimit": 600,
"tcpLimit": 600
},
{
"prefix": 24,
"udpLimit": 6000,
"tcpLimit": 6000
}
],
"qpmPrefixLimitsIPv6": [
{
"prefix": 128,
"udpLimit": 600,
"tcpLimit": 600
},
{
"prefix": 64,
"udpLimit": 1200,
"tcpLimit": 1200
},
{
"prefix": 56,
"udpLimit": 6000,
"tcpLimit": 6000
}
],
"qpmLimitSampleMinutes": 5,
"qpmLimitUdpTruncationPercentage": 50,
"qpmLimitBypassList": [],
"clientTimeout": 2000,
"tcpSendTimeout": 10000,
"tcpReceiveTimeout": 10000,
"quicIdleTimeout": 60000,
"quicMaxInboundStreams": 100,
"listenBacklog": 100,
"maxConcurrentResolutionsPerCore": 100,
"webServiceLocalAddresses": [
"[::]"
],
"webServiceHttpPort": 5380,
"webServiceEnableTls": true,
"webServiceEnableHttp3": false,
"webServiceHttpToTlsRedirect": false,
"webServiceUseSelfSignedTlsCertificate": true,
"webServiceTlsPort": 53443,
"webServiceTlsCertificatePath": null,
"webServiceTlsCertificatePassword": "************",
"webServiceRealIpHeader": "X-Real-IP",
"enableDnsOverUdpProxy": false,
"enableDnsOverTcpProxy": false,
"enableDnsOverHttp": false,
"enableDnsOverTls": false,
"enableDnsOverHttps": false,
"enableDnsOverHttp3": false,
"enableDnsOverQuic": false,
"dnsOverUdpProxyPort": 538,
"dnsOverTcpProxyPort": 538,
"dnsOverHttpPort": 80,
"dnsOverTlsPort": 853,
"dnsOverHttpsPort": 443,
"dnsOverQuicPort": 853,
"reverseProxyNetworkACL": [],
"dnsTlsCertificatePath": null,
"dnsTlsCertificatePassword": "************",
"dnsOverHttpRealIpHeader": "X-Real-IP",
"tsigKeys": [
{
"keyName": "home",
"sharedSecret": "E9crgbHbzgEI+e+/pBmARRif70ScKf2sc/FjrgnCWyc=",
"algorithmName": "hmac-sha256"
}
],
"recursion": "AllowOnlyForPrivateNetworks",
"recursionNetworkACL": [],
"randomizeName": false,
"qnameMinimization": true,
"resolverRetries": 2,
"resolverTimeout": 1500,
"resolverConcurrency": 2,
"resolverMaxStackCount": 16,
"saveCache": true,
"serveStale": true,
"serveStaleTtl": 259200,
"serveStaleAnswerTtl": 30,
"serveStaleResetTtl": 30,
"serveStaleMaxWaitTime": 1800,
"cacheMaximumEntries": 10000,
"cacheMinimumRecordTtl": 10,
"cacheMaximumRecordTtl": 604800,
"cacheNegativeRecordTtl": 300,
"cacheFailureRecordTtl": 10,
"cachePrefetchEligibility": 2,
"cachePrefetchTrigger": 9,
"cachePrefetchSampleIntervalInMinutes": 5,
"cachePrefetchSampleEligibilityHitsPerHour": 30,
"enableBlocking": true,
"allowTxtBlockingReport": true,
"blockingBypassList": [],
"blockingType": "NxDomain",
"blockingAnswerTtl": 30,
"customBlockingAddresses": [
"127.0.0.1"
],
"blockListUrls": [
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts",
"https://big.oisd.nl/"
],
"blockListUpdateIntervalHours": 24,
"blockListNextUpdatedOn": "2024-02-01T20:15:08.658124Z",
"proxy": null,
"forwarders": null,
"forwarderProtocol": "Udp",
"concurrentForwarding": true,
"forwarderRetries": 3,
"forwarderTimeout": 2000,
"forwarderConcurrency": 2,
"enableLogging": true,
"loggingType": "File",
"ignoreResolverLogs": false,
"logQueries": false,
"useLocalTime": false,
"logFolder": "logs",
"maxLogFileDays": 30,
"enableInMemoryStats": false,
"maxStatFileDays": 365
},
"status": "ok"
}
```
### Set DNS Settings
This call allows to change the DNS server settings.
Note! Any parameter passed with this API call will overwrite existing value for that parameter. If you wish to append new values instead then you should first call the Get DNS Settings API to get the existing value, append your new value to it, and then pass the updated value with this API call.
URL:\
`http://localhost:5380/api/settings/set?token=x&dnsServerDomain=server1&dnsServerLocalEndPoints=0.0.0.0:53,[::]:53&webServiceLocalAddresses=0.0.0.0,[::]&webServiceHttpPort=5380&webServiceEnableTls=false&webServiceTlsPort=53443&webServiceTlsCertificatePath=&webServiceTlsCertificatePassword=&enableDnsOverHttp=false&enableDnsOverTls=false&enableDnsOverHttps=false&dnsTlsCertificatePath=&dnsTlsCertificatePassword=&preferIPv6=false&logQueries=true&allowRecursion=true&allowRecursionOnlyForPrivateNetworks=true&randomizeName=true&cachePrefetchEligibility=2&cachePrefetchTrigger=9&cachePrefetchSampleIntervalInMinutes=5&cachePrefetchSampleEligibilityHitsPerHour=30&proxyType=socks5&proxyAddress=192.168.10.2&proxyPort=9050&proxyUsername=username&proxyPassword=password&proxyBypass=127.0.0.0/8,169.254.0.0/16,fe80::/10,::1,localhost&forwarders=192.168.10.2&forwarderProtocol=Udp&useNxDomainForBlocking=false&blockListUrls=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts,https://mirror1.malwaredomains.com/files/justdomains,https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt,https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt`
OBSOLETE PATH:\
`/api/setDnsSettings`
PERMISSIONS:\
Settings: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `dnsServerDomain` (optional): The primary domain name used by this DNS Server to identify itself.
- `dnsServerLocalEndPoints` (optional): Local end points are the network interface IP addresses and ports you want the DNS Server to listen for requests.
- `dnsServerIPv4SourceAddresses` (optional): A comma separated list of IPv4 source addresses that the DNS server must use for making all outbound DNS requests when the server is connected to two or more networks. Network addresses are also accepted. By default, the IPv4 address of the network with a default route will be used as the source address.
- `dnsServerIPv6SourceAddresses` (optional): A comma separated list of IPv6 source addresses that the DNS server must use for making all outbound DNS requests when the server is connected to two or more networks. Network addresses are also accepted. By default, the IPv6 address of the network with a default route will be used as the source address. Note that this option will be used only when `Prefer IPv6` option is enabled.
- `defaultRecordTtl` (optional, cluster parameter): The default TTL value to use if not specified when adding or updating records in a Zone.
- `defaultNsRecordTtl` (optional, cluster parameter): The default TTL value to use if not specified when adding or updating NS records in a Primary Zone.
- `defaultSoaRecordTtl` (optional, cluster parameter): The default TTL value to use if not specified when adding or updating SOA records in a Primary Zone.
- `defaultResponsiblePerson` (optional, cluster parameter): The default SOA Responsible Person email address to use when adding a Primary Zone.
- `useSoaSerialDateScheme` (optional, cluster parameter): The default SOA Serial option to use if not specified when adding a Primary Zone.
- `minSoaRefresh` (optional, cluster parameter): The minimum Refresh interval to be used by Secondary, Stub, Secondary Forwarder, and Secondary Catalog zones. This value will be used if a zone's SOA Refresh value is less than the minimum value. Initial value is `300`.
- `minSoaRetry` (optional, cluster parameter): The minimum Retry interval to be used by Secondary, Stub, Secondary Forwarder, and Secondary Catalog zones zones. This value will be used if a zone's SOA Retry value is less than the minimum value. Initial value is `300`.
- `zoneTransferAllowedNetworks` (optional, cluster parameter): A comma separated list of IP addresses or network addresses that are allowed to perform zone transfer for all zones without any TSIG authentication.
- `notifyAllowedNetworks` (optional, cluster parameter): A comma separated list of IP addresses or network addresses that are allowed to Notify all secondary zones.
- `dnsAppsEnableAutomaticUpdate` (optional, cluster parameter): Set to `true` to allow DNS server to automatically update the DNS Apps from the DNS App Store. The DNS Server will check for updates every 24 hrs when this option is enabled.
- `preferIPv6` (optional): DNS Server will use IPv6 for querying whenever possible with this option enabled. Initial value is `false`.
- `enableUdpSocketPool` (optional): Set this to `true` to enable UDP socket pool. The DNS Server will use UDP socket pool for all outbound DNS-over-UDP requests when enabled.
- `socketPoolExcludedPorts` (optional): A comma separated list of port numbers that must be excluded from being used by the UDP socket pool.
- `udpPayloadSize` (optional, cluster parameter): The maximum EDNS UDP payload size that can be used to avoid IP fragmentation. Valid range is 512-4096 bytes. Initial value is `1232`.
- `dnssecValidation` (optional, cluster parameter): Set this to `true` to enable DNSSEC validation. DNS Server will validate all responses from name servers or forwarders when this option is enabled.
- `eDnsClientSubnet` (optional, cluster parameter): Set this to `true` to enable EDNS Client Subnet. DNS Server will use the public IP address of the request with a prefix length, or the existing Client Subnet option from the request while resolving requests.
- `eDnsClientSubnetIPv4PrefixLength` (optional, cluster parameter): The EDNS Client Subnet IPv4 prefix length to define the client subnet. Initial value is `24`.
- `eDnsClientSubnetIPv6PrefixLength` (optional, cluster parameter): The EDNS Client Subnet IPv6 prefix length to define the client subnet. Initial value is `56`.
- `eDnsClientSubnetIpv4Override` (optional, cluster parameter): The IPv4 network address that must be used as ECS for all outbound requests overriding client's actual subnet.
- `eDnsClientSubnetIpv6Override` (optional, cluster parameter): The IPv6 network address that must be used as ECS for all outbound requests overriding client's actual subnet.
- `qpmPrefixLimitsIPv4` (optional, cluster parameter): A pipe `|` separated multi row list of prefix, udpLimit and tcpLimit. Set this parameter to `false` to remove all entries. The maximum queries an IPv4 client subnet can make to DNS-over-UDP and DNS-over-TCP protocol services per minute on average based on the sample size. Set limit value to 0 to allow unlimited queries.
- `qpmPrefixLimitsIPv6` (optional, cluster parameter): A pipe `|` separated multi row list of prefix, udpLimit and tcpLimit. Set this parameter to `false` to remove all entries. The maximum queries an IPv6 client subnet can make to DNS-over-UDP and DNS-over-TCP protocol services per minute on average based on the sample size. Set limit value to 0 to allow unlimited queries.
- `qpmLimitSampleMinutes` (optional, cluster parameter): Sets the client query stats sample size in minutes for QPM limit feature. Initial value is `5`.
- `qpmLimitUdpTruncationPercentage` (optional, cluster parameter): The percentage of requests that are responded with a truncation (TC) response when QPM limit exceeds for DNS-over-UDP protocol service while the rest of the requests are dropped. A TC response will cause a real client to retry to DNS-over-TCP protocol service. Valid range is `0`-`100`. Initial value is `50`.
- `qpmLimitBypassList` (optional, cluster parameter): A comma separated list of IP addresses or network addresses that are allowed to bypass the QPM limit.
- `clientTimeout` (optional, cluster parameter): The amount of time the DNS server must wait in milliseconds before responding with a ServerFailure response to a client request when no answer is available. Valid range is `1000`-`10000`. Initial value is `4000`.
- `tcpSendTimeout` (optional, cluster parameter): The maximum amount of time in milliseconds a TCP socket will wait for the response to be sent. This option will apply for DNS requests being received by the DNS Server over TCP, TLS, TcpProxy, or HTTPS transports. Valid range is `1000`-`90000`. Initial value is `10000`.
- `tcpReceiveTimeout` (optional, cluster parameter): The maximum amount of time in milliseconds a TCP socket will wait for receiving data. This option will apply for DNS requests being received by the DNS Server over TCP, TLS, TcpProxy, or HTTPS transports. Valid range is `1000`-`90000`. Initial value is `10000`.
- `quicIdleTimeout` (optional, cluster parameter): The time interval in milliseconds after which an idle QUIC connection will be closed. This option applies only to QUIC transport protocol. Valid range is `1000`-`90000`. Initial value is `60000`.
- `quicMaxInboundStreams` (optional, cluster parameter): The max number of inbound bidirectional streams that can be accepted per QUIC connection. This option applies only to QUIC transport protocol. Valid range is `1`-`1000`. Initial value is `100`.
- `listenBacklog` (optional, cluster parameter): The maximum number of pending inbound connections. This option applies to TCP, TLS, TcpProxy, and QUIC transport protocols. Initial value is `100`.
- `maxConcurrentResolutionsPerCore` (optional, cluster parameter): The maximum number of concurrent async outbound resolutions that should be done per CPU core. Initial value is `100`.
- `webServiceLocalAddresses` (optional): Local addresses are the network interface IP addresses you want the web service to listen for requests.
- `webServiceHttpPort` (optional): Specify the TCP port number for the web console and this API web service. Initial value is `5380`.
- `webServiceEnableTls` (optional): Set this to `true` to start the HTTPS service to access web service.
- `webServiceEnableHttp3` (optional): Set this to `true` to enable HTTP/3 protocol for the web service.
- `webServiceHttpToTlsRedirect` (optional): Set this option to `true` to enable HTTP to HTTPS Redirection.
- `webServiceTlsPort` (optional): Specified the TCP port number for the web console for HTTPS access.
- `webServiceUseSelfSignedTlsCertificate` (optional): Set `true` for the web service to use an automatically generated self signed certificate when TLS certificate path is not specified.
- `webServiceTlsCertificatePath` (optional): Specify a PKCS #12 certificate (.pfx) file path on the server. The certificate must contain private key. This certificate is used by the web console for HTTPS access.
- `webServiceTlsCertificatePassword` (optional): Enter the certificate (.pfx) password, if any.
- `webServiceRealIpHeader` (optional): The HTTP header that must be used to read client's actual IP address when the request comes from a reverse proxy with a private IP address.
- `enableDnsOverUdpProxy` (optional): Enable this option to accept DNS-over-UDP-PROXY requests. It implements the [PROXY Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) for both version 1 & 2 over UDP datagram. Configure the `reverseProxyNetworkACL` option to allow only requests coming from your reverse proxy server.
- `enableDnsOverTcpProxy` (optional): Enable this option to accept DNS-over-TCP-PROXY requests. It implements the [PROXY Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) for both version 1 & 2 over TCP connection. Configure the `reverseProxyNetworkACL` option to allow only requests coming from your reverse proxy server.
- `enableDnsOverHttp` (optional): Enable this option to accept DNS-over-HTTP requests. It must be used with a TLS terminating reverse proxy like nginx. Configure the `reverseProxyNetworkACL` option to allow only requests coming from your reverse proxy server. Enabling this option also allows automatic TLS certificate renewal with HTTP challenge (webroot) for DNS-over-HTTPS service.
- `enableDnsOverTls` (optional): Enable this option to accept DNS-over-TLS requests.
- `enableDnsOverHttps` (optional): Enable this option to accept DNS-over-HTTPS requests.
- `enableDnsOverQuic` (optional): Enable this option to accept DNS-over-QUIC requests.
- `dnsOverUdpProxyPort` (optional): The UDP port number for DNS-over-UDP-PROXY protocol. Initial value is `538`.
- `dnsOverTcpProxyPort` (optional): The TCP port number for DNS-over-TCP-PROXY protocol. Initial value is `538`.
- `dnsOverHttpPort` (optional): The TCP port number for DNS-over-HTTP protocol. Initial value is `80`.
- `dnsOverTlsPort` (optional): The TCP port number for DNS-over-TLS protocol. Initial value is `853`.
- `dnsOverHttpsPort` (optional): The TCP port number for DNS-over-HTTPS protocol. Initial value is `443`.
- `dnsOverQuicPort` (optional): The UDP port number for DNS-over-QUIC protocol. Initial value is `853`.
- `reverseProxyNetworkACL` (optional): Configure the ACL to allow only requests coming from your reverse proxy server for DNS-over-UDP-PROXY, DNS-over-TCP-PROXY, and DNS-over-HTTP protocols. Enter IP addresses or network addresses one below another to allow access. Add ! character at the start to deny access, e.g. !192.168.10.0/24 will deny entire subnet. The ACL is processed in the same order its listed. If no networks match, the default policy is to deny all.
- `dnsTlsCertificatePath` (optional): Specify a PKCS #12 certificate (.pfx) file path on the server. The certificate must contain private key. This certificate is used by the DNS-over-TLS and DNS-over-HTTPS optional protocols.
- `dnsTlsCertificatePassword` (optional): Enter the certificate (.pfx) password, if any.
- `dnsOverHttpRealIpHeader` (optional): The HTTP header that must be used to read client's actual IP address when the request comes from a reverse proxy with a private IP address.
- `tsigKeys` (optional, cluster parameter): A pipe `|` separated multi row list of TSIG key name, shared secret, and algorithm. Set this parameter to `false` to remove all existing keys. Supported algorithms are [`hmac-md5.sig-alg.reg.int`, `hmac-sha1`, `hmac-sha256`, `hmac-sha256-128`, `hmac-sha384`, `hmac-sha384-192`, `hmac-sha512`, `hmac-sha512-256`].
- `recursion` (optional, cluster parameter): Sets the recursion policy for the DNS server. Valid values are [`Deny`, `Allow`, `AllowOnlyForPrivateNetworks`, `UseSpecifiedNetworkACL`].
- `recursionNetworkACL` (optional, cluster parameter): A comma separated Access Control List (ACL) of Network Access Control (NAC) entry. NAC is an IP address or network address to allow. Add `!` at the start of the NAC to deny access. The ACL is processed in the same order its listed. If no networks match, the default policy is to deny all except loopback. Set this parameter to `false` to remove existing values. These values are only used when `recursion` is set to `UseSpecifiedNetworkACL`.
- `randomizeName` (optional, cluster parameter): Enables QNAME randomization [draft-vixie-dnsext-dns0x20-00](https://tools.ietf.org/html/draft-vixie-dnsext-dns0x20-00) when using UDP as the transport protocol. Initial value is `true`.
- `qnameMinimization` (optional, cluster parameter): Enables QNAME minimization [draft-ietf-dnsop-rfc7816bis-04](https://tools.ietf.org/html/draft-ietf-dnsop-rfc7816bis-04) when doing recursive resolution. Initial value is `true`.
- `resolverRetries` (optional, cluster parameter): The number of retries that the recursive resolver must do.
- `resolverTimeout` (optional, cluster parameter): The timeout value in milliseconds for the recursive resolver.
- `resolverConcurrency` (optional, cluster parameter): The number of concurrent requests that should be sent by the recursive resolver to the name servers.
- `resolverMaxStackCount` (optional, cluster parameter): The max stack count that the recursive resolver must use.
- `saveCache` (optional): Enable this option to save DNS cache on disk when the DNS server stops. The saved cache will be loaded next time the DNS server starts.
- `serveStale` (optional): Enable the serve stale feature to improve resiliency by using expired or stale records in cache when the DNS server is unable to reach the upstream or authoritative name servers. Initial value is `true`.
- `serveStaleTtl` (optional): The TTL value in seconds which should be used for cached records that are expired. When the serve stale TTL too expires for a stale record, it gets removed from the cache. Recommended value is between 1-3 days and maximum supported value is 7 days. Initial value is `259200`.
- `serveStaleAnswerTtl` (optional): The TTL value in seconds which should be used for the records in a stale response. This is the TTL value that the client will be using to cache the stale records. The valid range is 0-300 seconds and recommended value is 30 seconds.
- `serveStaleResetTtl` (optional): The TTL value in seconds which should be used to reset the stale record's TTL value in the cache when the resolver fails to refresh the data. The TTL reset causes the stale records to become valid again so that they can be used to serve requests normally. This reset effectively prevents the resolver from attempting to frequently update the stale records. The valid range is 10-900 seconds and recommended value is 30 seconds.
- `serveStaleMaxWaitTime` (optional): The time in milliseconds that the DNS server must wait for the resolver before serving stale records from the cache. Lower value will ensure faster response at the expense of not getting updated data from the upstream. Setting value to 0 will instantly return stale answer without waiting for the resolver to fetch updates from the upstream. The valid range is 0-1800 milliseconds and default value is 1800 milliseconds.
- `cacheMinimumRecordTtl` (optional): The minimum TTL value that a record can have in cache. Set a value to make sure that the records with TTL value than it stays in cache for a minimum duration. Initial value is `10`.
- `cacheMaximumRecordTtl` (optional): The maximum TTL value that a record can have in cache. Set a lower value to allow the records to expire early. Initial value is `86400`.
- `cacheNegativeRecordTtl` (optional): The negative TTL value to use when there is no SOA MINIMUM value available. Initial value is `300`.
- `cacheFailureRecordTtl` (optional): The failure TTL value to used for caching failure responses. This allows storing failure record in cache and prevent frequent recursive resolution to name servers that are responding with `ServerFailure`. Initial value is `60`.
- `cachePrefetchEligibility` (optional): The minimum initial TTL value of a record needed to be eligible for prefetching.
- `cachePrefetchTrigger` (optional): A record with TTL value less than trigger value will initiate prefetch operation immediately for itself. Set `0` to disable prefetching & auto prefetching.
- `cachePrefetchSampleIntervalInMinutes` (optional): The interval to sample eligible domain names from last hour stats for auto prefetch.
- `cachePrefetchSampleEligibilityHitsPerHour` (optional): Minimum required hits per hour for a domain name to be eligible for auto prefetch.
- `enableBlocking` (optional, cluster parameter): Sets the DNS server to block domain names using Blocked Zone and Block List Zone.
- `allowTxtBlockingReport` (optional, cluster parameter): Specifies if the DNS Server should respond with TXT records containing a blocked domain report for TXT type requests.
- `blockingBypassList` (optional, cluster parameter): A comma separated list of IP addresses or network addresses that are allowed to bypass blocking.
- `blockingType` (optional, cluster parameter): Sets how the DNS server should respond to a blocked domain request. Valid values are [`AnyAddress`, `NxDomain`, `CustomAddress`] where `AnyAddress` is default which response with `0.0.0.0` and `::` IP addresses for blocked domains. Using `NxDomain` will respond with `NX Domain` response. `CustomAddress` will return the specified custom blocking addresses.
- `blockingAnswerTtl` (optional, cluster parameter): The TTL value in seconds that must be used for the records in a blocking response. This is the TTL value that the client will use to cache the blocking response.
- `customBlockingAddresses` (optional, cluster parameter): A comma separated list of IP addresses. Set the custom blocking addresses to be used for blocked domain response. These addresses are returned only when `blockingType` is set to `CustomAddress`.
- `blockListUrls` (optional, cluster parameter): A comma separated list of block list URLs that this server must automatically download and use with the block lists zone. DNS Server will use the data returned by the block list URLs to update the block list zone automatically every 24 hours. The expected file format is standard hosts file format or plain text file containing list of domains to block. Set this parameter to `false` to remove existing values.
- `blockListUpdateIntervalHours` (optional, cluster parameter): The interval in hours to automatically download and update the block lists. Initial value is `24`.
- `proxyType` (optional, cluster parameter): The type of proxy protocol to be used. Valid values are [`None`, `Http`, `Socks5`].
- `proxyAddress` (optional, cluster parameter): The proxy server hostname or IP address.
- `proxyPort` (optional, cluster parameter): The proxy server port.
- `proxyUsername` (optional, cluster parameter): The proxy server username.
- `proxyPassword` (optional, cluster parameter): The proxy server password.
- `proxyBypass` (optional, cluster parameter): A comma separated bypass list consisting of IP addresses, network addresses in CIDR format, or host/domain names to never use proxy for.
- `forwarders` (optional, cluster parameter): A comma separated list of forwarders to be used by this DNS server. Set this parameter to `false` string to remove existing forwarders so that the DNS server does recursive resolution by itself.
- `forwarderProtocol` (optional, cluster parameter): The forwarder DNS transport protocol to be used. Valid values are [`Udp`, `Tcp`, `Tls`, `Https`, `Quic`].
- `concurrentForwarding` (optional, cluster parameter): Set this option to `true` to allow querying two or more forwarders concurrently instead of sequentially querying them in their given order. The DNS server will automatically select forwarders (based on their average latency) to query and use the fastest response it receives from any of them. If none of the selected forwarders respond in time, the DNS server will similarly select forwarders from the remaining ones and queries them till all are tried before giving up.
- `forwarderRetries` (optional, cluster parameter): The number of retries that the forwarder DNS client must do.
- `forwarderTimeout` (optional, cluster parameter): The timeout value in milliseconds for the forwarder DNS client.
- `forwarderConcurrency` (optional, cluster parameter): The number of concurrent requests that the forwarder DNS client should do.
- `loggingType` (optional): Specifies how the error logs and audit logs are written. The valid values are [`None`, `File`, `Console`, `FileAndConsole`]. Initial value is `File`.
- `enableLogging` (optional)(obsolete, use `loggingType` instead): Enable this option to log error and audit logs into the log file. Initial value is `true`.
- `ignoreResolverLogs` (optional): Enable this option to stop logging domain name resolution errors into the log file.
- `logQueries` (optional): Enable this option to log every query received by this DNS Server and the corresponding response answers into the log file. Initial value is `false`.
- `useLocalTime` (optional): Enable this option to use local time instead of UTC for logging. Initial value is `false`.
- `logFolder` (optional): The folder path on the server where the log files should be saved. The path can be relative to the DNS server config folder. Initial value is `logs`.
- `maxLogFileDays` (optional): Max number of days to keep the log files. Log files older than the specified number of days will be deleted automatically. Recommended value is `365`. Set `0` to disable auto delete.
- `enableInMemoryStats` (optional): Set this option to `true` to enable in-memory stats. When enabled, only Last Hour data will be available on Dashboard and no stats data will be stored on disk.
- `maxStatFileDays` (optional): Max number of days to keep the dashboard stats. Stat files older than the specified number of days will be deleted automatically. Recommended value is `365`. Set `0` to disable auto delete.
NOTE! The parameters marked as a "cluster parameter" are synced automatically across all the Cluster nodes when Clustering is initialized.
REQUEST: Instead of query string or form data parameters described above, the request optionally can also POST settings as JSON data in the same format as returned by `getDnsSettings` API call.
RESPONSE:
This call returns the newly updated settings in the same format as that of the `getDnsSettings` call.
### Get TSIG Key Names
Returns a list of TSIG key names that are configured in the DNS server Settings.
URL:\
`http://localhost:5380/api/settings/getTsigKeyNames?token=x`
PERMISSIONS:\
Settings: View OR Zones: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"response": {
"tsigKeyNames": [
"key1",
"key2"
]
},
"status": "ok"
}
```
### Force Update Block Lists
This call allows to reset the next update schedule and force download and update of the block lists.
URL:\
`http://localhost:5380/api/settings/forceUpdateBlockLists?token=x`
OBSOLETE PATH:\
`/api/forceUpdateBlockLists`
PERMISSIONS:\
Settings: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"status": "ok"
}
```
NOTE! This API call is synced automatically across all Cluster nodes when Clustering is initialized.
### Temporarily Disable Block Lists
This call temporarily disables the block lists and block list zones.
URL:\
`http://localhost:5380/api/settings/temporaryDisableBlocking?token=x&minutes=5`
OBSOLETE PATH:\
`/api/temporaryDisableBlocking`
PERMISSIONS:\
Settings: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `minutes`: The time in minutes to disable the blocklist for.
RESPONSE:
```
{
"status": "ok",
"response": {
"temporaryDisableBlockingTill": "2021-10-10T01:14:27.1106773Z"
}
}
```
NOTE! This API call is synced automatically across all Cluster nodes when Clustering is initialized.
### Backup Settings
This call returns a zip file containing copies of all the items that were requested to be backed up.
URL:\
`http://localhost:5380/api/settings/backup?token=x&blockLists=true&logs=true&scopes=true&stats=true&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&authConfig=true`
OBSOLETE PATH:\
`/api/backupSettings`
PERMISSIONS:\
Settings: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `authConfig` (optional): Set to `true` to backup the authentication config file. Default value is `false`.
- `clusterConfig` (optional): Set to `true` to backup the Cluster config file. Default value is `false`.
- `webServiceSettings` (optional): Set to `true` to backup the web service config file. Default value is `false`.
- `dnsSettings` (optional): Set to `true` to backup DNS settings and certificate files. The Web Service or Optional Protocols TLS certificate (.pfx) files will be included in the backup only if they exist within the DNS server's config folder. Default value is `false`.
- `logSettings` (optional): Set to `true` to backup log settings file. Default value is `false`.
- `zones` (optional): Set to `true` to backup DNS zone files. Default value is `false`.
- `allowedZones` (optional): Set to `true` to backup allowed zones file. Default value is `false`.
- `blockedZones` (optional): Set to `true` to backup blocked zones file. Default value is `false`.
- `blockLists` (optional): Set to `true` to backup block lists cache files. Default value is `false`.
- `apps` (optional): Set to `true` to backup the installed DNS apps. Default value is `false`.
- `scopes` (optional): Set to `true` to backup DHCP scope files. Default value is `false`.
- `stats` (optional): Set to `true` to backup dashboard stats files. Default value is `false`.
- `logs` (optional): Set to `true` to backup log files. Default value is `false`.
RESPONSE:
A zip file with content type `application/zip` and content disposition set to `attachment`.
### Restore Settings
This call restores selected items from a given backup zip file.
URL:\
`http://localhost:5380/api/settings/restore?token=x&blockLists=true&logs=true&scopes=true&stats=true&zones=true&allowedZones=true&blockedZones=true&dnsSettings=true&logSettings=true&deleteExistingFiles=true&authConfig=true`
OBSOLETE PATH:\
`/api/restoreSettings`
PERMISSIONS:\
Settings: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `node` (optional): The node domain name for which the this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized.
- `authConfig` (optional): Set to `true` to restore the authentication config file. Default value is `false`.
- `clusterConfig` (optional): Set to `true` to restore the Cluster config file. Default value is `false`.
- `webServiceSettings` (optional): Set to `true` to restore the web service config file. Default value is `false`.
- `dnsSettings` (optional): Set to `true` to restore DNS settings and certificate files. Default value is `false`.
- `logSettings` (optional): Set to `true` to restore log settings file. Default value is `false`.
- `zones` (optional): Set to `true` to restore DNS zone files. Default value is `false`.
- `allowedZones` (optional): Set to `true` to restore allowed zones file. Default value is `false`.
- `blockedZones` (optional): Set to `true` to restore blocked zones file. Default value is `false`.
- `blockLists` (optional): Set to `true` to restore block lists cache files. Default value is `false`.
- `apps` (optional): Set to `true` to restore the DNS apps. Default value is `false`.
- `scopes` (optional): Set to `true` to restore DHCP scope files. Default value is `false`.
- `stats` (optional): Set to `true` to restore dashboard stats files. Default value is `false`.
- `logs` (optional): Set to `true` to restore log files. Default value is `false`.
- `deleteExistingFiles` (optional). Set to `true` to delete existing files for selected items. Default value is `false`.
REQUEST:
This is a `POST` request call where the request must be multi-part form data with the backup zip file data in binary format.
RESPONSE:
This call returns the newly updated settings in the same format as that of the `getDnsSettings` call.
## DHCP API Calls
Allows managing the built-in DHCP server.
### List DHCP Leases
Lists all the DHCP leases.
URL:\
`http://localhost:5380/api/dhcp/leases/list?token=x`
OBSOLETE PATH:\
`/api/listDhcpLeases`
PERMISSIONS:\
DhcpServer: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"response": {
"leases": [
{
"scope": "Default",
"type": "Reserved",
"hardwareAddress": "00-00-00-00-00-00",
"clientIdentifier": "1-000000000000",
"address": "192.168.1.5",
"hostName": "server1.local",
"leaseObtained": "08/25/2020 17:52:51",
"leaseExpires": "09/26/2020 14:27:12"
},
{
"scope": "Default",
"type": "Dynamic",
"hardwareAddress": "00-00-00-00-00-00",
"clientIdentifier": "1-000000000000",
"address": "192.168.1.13",
"hostName": null,
"leaseObtained": "06/15/2020 16:41:46",
"leaseExpires": "09/25/2020 12:39:54"
},
{
"scope": "Default",
"type": "Dynamic",
"hardwareAddress": "00-00-00-00-00-00",
"clientIdentifier": "1-000000000000",
"address": "192.168.1.15",
"hostName": "desktop-ea2miaf.local",
"leaseObtained": "06/18/2020 12:19:03",
"leaseExpires": "09/25/2020 12:17:11"
},
]
},
"status": "ok"
}
```
### Remove DHCP Lease
Removes a dynamic or reserved lease allocation. This API must be used carefully to make sure that there is no IP address conflict caused by removing a lease.
URL:\
`http://localhost:5380/api/dhcp/leases/remove?token=x&name=Default&hardwareAddress=00:00:00:00:00:00`
OBSOLETE PATH:\
`/api/removeDhcpLease`
PERMISSIONS:\
DhcpServer: Delete
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the DHCP scope.
- `clientIdentifier` (optional): The client identifier for the lease. Either `hardwareAddress` or `clientIdentifier` must be specified.
- `hardwareAddress` (optional): The MAC address of the device bearing the dynamic/reserved lease. Either `hardwareAddress` or `clientIdentifier` must be specified.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
### Convert To Reserved Lease
Converts a dynamic lease to reserved lease.
URL:\
`http://localhost:5380/api/dhcp/leases/convertToReserved?token=x&name=Default&hardwareAddress=00:00:00:00:00:00`
OBSOLETE PATH:\
`/api/convertToReservedLease`
PERMISSIONS:\
DhcpServer: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the DHCP scope.
- `clientIdentifier` (optional): The client identifier for the lease. Either `hardwareAddress` or `clientIdentifier` must be specified.
- `hardwareAddress` (optional): The MAC address of the device bearing the dynamic lease. Either `hardwareAddress` or `clientIdentifier` must be specified.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
### Convert To Dynamic Lease
Converts a reserved lease to dynamic lease.
URL:\
`http://localhost:5380/api/dhcp/leases/convertToDynamic?token=x&name=Default&hardwareAddress=00:00:00:00:00:00`
OBSOLETE PATH:\
`/api/convertToDynamicLease`
PERMISSIONS:\
DhcpServer: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the DHCP scope.
- `clientIdentifier` (optional): The client identifier for the lease. Either `hardwareAddress` or `clientIdentifier` must be specified.
- `hardwareAddress` (optional): The MAC address of the device bearing the reserved lease. Either `hardwareAddress` or `clientIdentifier` must be specified.
RESPONSE:
```
{
"response": {},
"status": "ok"
}
```
### List DHCP Scopes
Lists all the DHCP scopes available on the server.
URL:\
`http://localhost:5380/api/dhcp/scopes/list?token=x`
OBSOLETE PATH:\
`/api/listDhcpScopes`
PERMISSIONS:\
DhcpServer: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
RESPONSE:
```
{
"response": {
"scopes": [
{
"name": "Default",
"enabled": false,
"startingAddress": "192.168.1.1",
"endingAddress": "192.168.1.254",
"subnetMask": "255.255.255.0",
"networkAddress": "192.168.1.0",
"broadcastAddress": "192.168.1.255"
}
]
},
"status": "ok"
}
```
### Get DHCP Scope
Gets the complete details of the scope configuration.
URL:\
`http://localhost:5380/api/dhcp/scopes/get?token=x&name=Default`
OBSOLETE PATH:\
`/api/getDhcpScope`
PERMISSIONS:\
DhcpServer: View
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the DHCP scope.
RESPONSE:
```
{
"response": {
"name": "Default",
"startingAddress": "192.168.1.1",
"endingAddress": "192.168.1.254",
"subnetMask": "255.255.255.0",
"leaseTimeDays": 7,
"leaseTimeHours": 0,
"leaseTimeMinutes": 0,
"offerDelayTime": 0,
"pingCheckEnabled": false,
"pingCheckTimeout": 1000,
"pingCheckRetries": 2,
"domainName": "local",
"domainSearchList": [
"home.arpa",
"lan"
],
"dnsUpdates": true,
"dnsOverwriteForDynamicLease": false,
"dnsTtl": 900,
"serverAddress": "192.168.1.1",
"serverHostName": "tftp-server-1",
"bootFileName": "boot.bin",
"routerAddress": "192.168.1.1",
"useThisDnsServer": false,
"dnsServers": [
"192.168.1.5"
],
"winsServers": [
"192.168.1.5"
],
"ntpServers": [
"192.168.1.5"
],
"staticRoutes": [
{
"destination": "172.16.0.0",
"subnetMask": "255.255.255.0",
"router": "192.168.1.2"
}
],
"vendorInfo": [
{
"identifier": "substring(vendor-class-identifier,0,9)==\"PXEClient\"",
"information": "06:01:03:0A:04:00:50:58:45:09:14:00:00:11:52:61:73:70:62:65:72:72:79:20:50:69:20:42:6F:6F:74:FF"
}
],
"capwapAcIpAddresses": [
"192.168.1.2"
],
"tftpServerAddresses": [
"192.168.1.5",
"192.168.1.6"
],
"genericOptions": [
{
"code": 150,
"value": "C0:A8:01:01"
}
],
"exclusions": [
{
"startingAddress": "192.168.1.1",
"endingAddress": "192.168.1.10"
}
],
"reservedLeases": [
{
"hostName": null,
"hardwareAddress": "00-00-00-00-00-00",
"address": "192.168.1.10",
"comments": "comments"
}
],
"allowOnlyReservedLeases": false,
"blockLocallyAdministeredMacAddresses": true,
"ignoreClientIdentifierOption": true
},
"status": "ok"
}
```
### Set DHCP Scope
Sets the DHCP scope configuration.
URL:\
`http://localhost:5380/api/dhcp/scopes/set?token=x&name=Default&startingAddress=192.168.1.1&endingAddress=192.168.1.254&subnetMask=255.255.255.0&leaseTimeDays=7&leaseTimeHours=0&leaseTimeMinutes=0&offerDelayTime=0&domainName=local&dnsTtl=900&serverAddress=&serverHostName=&bootFileName=&routerAddress=192.168.1.1&useThisDnsServer=false&dnsServers=192.168.1.5&winsServers=192.168.1.5&ntpServers=192.168.1.5&staticRoutes=172.16.0.0|255.255.255.0|192.168.1.2&exclusions=192.168.1.1|192.168.1.10&reservedLeases=hostname|00-00-00-00-00-00|192.168.1.10|comments&allowOnlyReservedLeases=false`
OBSOLETE PATH:\
`/api/setDhcpScope`
PERMISSIONS:\
DhcpServer: Modify
WHERE:
- `token`: The session token generated by the `login` or the `createToken` call.
- `name`: The name of the DHCP scope.
- `newName` (optional): The new name of the DHCP scope to rename an existing scope.
- `startingAddress` (optional): The starting IP
gitextract_88vord7i/ ├── .gitattributes ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── APIDOCS.md ├── Apps/ │ ├── AdvancedBlockingApp/ │ │ ├── AdvancedBlockingApp.csproj │ │ ├── App.cs │ │ └── dnsApp.config │ ├── AdvancedForwardingApp/ │ │ ├── AdvancedForwardingApp.csproj │ │ ├── App.cs │ │ ├── adguard-upstreams.txt │ │ └── dnsApp.config │ ├── AutoPtrApp/ │ │ ├── App.cs │ │ ├── AutoPtrApp.csproj │ │ └── dnsApp.config │ ├── BlockPageApp/ │ │ ├── App.cs │ │ ├── BlockPageApp.csproj │ │ ├── dnsApp.config │ │ └── wwwroot/ │ │ └── index.html │ ├── DefaultRecordsApp/ │ │ ├── App.cs │ │ ├── DefaultRecordsApp.csproj │ │ └── dnsApp.config │ ├── Dns64App/ │ │ ├── App.cs │ │ ├── Dns64App.csproj │ │ └── dnsApp.config │ ├── DnsBlockListApp/ │ │ ├── App.cs │ │ ├── DnsBlockListApp.csproj │ │ ├── dnsApp.config │ │ ├── domain-blocklist.txt │ │ └── ip-blocklist.txt │ ├── DnsRebindingProtectionApp/ │ │ ├── App.cs │ │ ├── DnsRebindingProtectionApp.csproj │ │ └── dnsApp.config │ ├── DropRequestsApp/ │ │ ├── App.cs │ │ ├── DropRequestsApp.csproj │ │ └── dnsApp.config │ ├── FailoverApp/ │ │ ├── Address.cs │ │ ├── CNAME.cs │ │ ├── EmailAlert.cs │ │ ├── FailoverApp.csproj │ │ ├── HealthCheck.cs │ │ ├── HealthCheckResponse.cs │ │ ├── HealthMonitor.cs │ │ ├── HealthService.cs │ │ ├── WebHook.cs │ │ └── dnsApp.config │ ├── FilterAaaaApp/ │ │ ├── App.cs │ │ ├── FilterAaaaApp.csproj │ │ ├── README.md │ │ └── dnsApp.config │ ├── GeoContinentApp/ │ │ ├── Address.cs │ │ ├── CNAME.cs │ │ ├── GeoContinentApp.csproj │ │ ├── MaxMind.cs │ │ ├── ReadMe.txt │ │ └── dnsApp.config │ ├── GeoCountryApp/ │ │ ├── Address.cs │ │ ├── CNAME.cs │ │ ├── GeoCountryApp.csproj │ │ ├── MaxMind.cs │ │ ├── ReadMe.txt │ │ └── dnsApp.config │ ├── GeoDistanceApp/ │ │ ├── Address.cs │ │ ├── CNAME.cs │ │ ├── GeoDistanceApp.csproj │ │ ├── MaxMind.cs │ │ ├── ReadMe.txt │ │ └── dnsApp.config │ ├── LogExporterApp/ │ │ ├── App.cs │ │ ├── AppConfig.cs │ │ ├── LogEntry.cs │ │ ├── LogExporterApp.csproj │ │ ├── Strategy/ │ │ │ ├── ExportManager.cs │ │ │ ├── FileExportStrategy.cs │ │ │ ├── HttpExportStrategy.cs │ │ │ ├── IExportStrategy.cs │ │ │ └── SyslogExportStrategy.cs │ │ └── dnsApp.config │ ├── MispConnectorApp/ │ │ ├── App.cs │ │ ├── MispConnectorApp.csproj │ │ ├── README.md │ │ └── dnsApp.config │ ├── NoDataApp/ │ │ ├── App.cs │ │ ├── NoDataApp.csproj │ │ └── dnsApp.config │ ├── NxDomainApp/ │ │ ├── App.cs │ │ ├── NxDomainApp.csproj │ │ └── dnsApp.config │ ├── NxDomainOverrideApp/ │ │ ├── App.cs │ │ ├── NxDomainOverrideApp.csproj │ │ └── dnsApp.config │ ├── QueryLogsMySqlApp/ │ │ ├── App.cs │ │ ├── QueryLogsMySqlApp.csproj │ │ └── dnsApp.config │ ├── QueryLogsSqlServerApp/ │ │ ├── App.cs │ │ ├── QueryLogsSqlServerApp.csproj │ │ └── dnsApp.config │ ├── QueryLogsSqliteApp/ │ │ ├── App.cs │ │ ├── QueryLogsSqliteApp.csproj │ │ └── dnsApp.config │ ├── SplitHorizonApp/ │ │ ├── AddressTranslation.cs │ │ ├── README.md │ │ ├── SimpleAddress.cs │ │ ├── SimpleCNAME.cs │ │ ├── SplitHorizonApp.csproj │ │ └── dnsApp.config │ ├── WeightedRoundRobinApp/ │ │ ├── Address.cs │ │ ├── CNAME.cs │ │ ├── WeightedRoundRobinApp.csproj │ │ └── dnsApp.config │ ├── WhatIsMyDnsApp/ │ │ ├── App.cs │ │ ├── WhatIsMyDnsApp.csproj │ │ └── dnsApp.config │ ├── WildIpApp/ │ │ ├── App.cs │ │ ├── WildIpApp.csproj │ │ └── dnsApp.config │ ├── ZoneAliasApp/ │ │ ├── App.cs │ │ ├── ZoneAliasApp.csproj │ │ └── dnsApp.config │ └── apps2.json ├── CHANGELOG.md ├── DnsServer.sln ├── DnsServerApp/ │ ├── DnsServerApp.csproj │ ├── Program.cs │ ├── Properties/ │ │ └── PublishProfiles/ │ │ └── FolderProfile.pubxml │ ├── install.sh │ ├── start.bat │ ├── start.sh │ ├── systemd.service │ └── uninstall.sh ├── DnsServerCore/ │ ├── Auth/ │ │ ├── AuthManager.cs │ │ ├── Group.cs │ │ ├── Permission.cs │ │ ├── User.cs │ │ └── UserSession.cs │ ├── Cluster/ │ │ ├── ClusterManager.cs │ │ ├── ClusterNode.cs │ │ └── InternalDnsClient.cs │ ├── Dhcp/ │ │ ├── DhcpMessage.cs │ │ ├── DhcpOption.cs │ │ ├── DhcpServer.cs │ │ ├── DhcpServerException.cs │ │ ├── Exclusion.cs │ │ ├── Lease.cs │ │ ├── Options/ │ │ │ ├── BroadcastAddressOption.cs │ │ │ ├── CAPWAPAccessControllerOption.cs │ │ │ ├── ClasslessStaticRouteOption.cs │ │ │ ├── ClientFullyQualifiedDomainNameOption.cs │ │ │ ├── ClientIdentifierOption.cs │ │ │ ├── DhcpMessageTypeOption.cs │ │ │ ├── DomainNameOption.cs │ │ │ ├── DomainNameServerOption.cs │ │ │ ├── DomainSearchOption.cs │ │ │ ├── HostNameOption.cs │ │ │ ├── IpAddressLeaseTimeOption.cs │ │ │ ├── MaximumDhcpMessageSizeOption.cs │ │ │ ├── NetBiosNameServerOption.cs │ │ │ ├── NetworkTimeProtocolServersOption.cs │ │ │ ├── OptionOverloadOption.cs │ │ │ ├── ParameterRequestListOption.cs │ │ │ ├── RebindingTimeValueOption.cs │ │ │ ├── RenewalTimeValueOption.cs │ │ │ ├── RequestedIpAddressOption.cs │ │ │ ├── RouterOption.cs │ │ │ ├── ServerIdentifierOption.cs │ │ │ ├── SubnetMaskOption.cs │ │ │ ├── TftpServerAddressOption.cs │ │ │ ├── VendorClassIdentifierOption.cs │ │ │ └── VendorSpecificInformationOption.cs │ │ └── Scope.cs │ ├── Dns/ │ │ ├── Applications/ │ │ │ ├── DnsApplication.cs │ │ │ ├── DnsApplicationAssemblyLoadContext.cs │ │ │ ├── DnsApplicationManager.cs │ │ │ └── InternalDnsServer.cs │ │ ├── DirectDnsClient.cs │ │ ├── DnsServer.cs │ │ ├── DnsServerException.cs │ │ ├── Dnssec/ │ │ │ ├── DnssecEcdsaPrivateKey.cs │ │ │ ├── DnssecEddsaPrivateKey.cs │ │ │ ├── DnssecPrivateKey.cs │ │ │ └── DnssecRsaPrivateKey.cs │ │ ├── ResolverDnsCache.cs │ │ ├── ResolverPrefetchDnsCache.cs │ │ ├── ResourceRecords/ │ │ │ ├── AuthRecordInfo.cs │ │ │ ├── CacheRecordInfo.cs │ │ │ ├── DnsNSRecordDataExtended.cs │ │ │ ├── DnsResourceRecordExtensions.cs │ │ │ ├── DnsSOARecordDataExtended.cs │ │ │ ├── GenericRecordInfo.cs │ │ │ ├── HistoryRecordInfo.cs │ │ │ ├── NSRecordInfo.cs │ │ │ ├── SOARecordInfo.cs │ │ │ └── SVCBRecordInfo.cs │ │ ├── StatsManager.cs │ │ ├── Trees/ │ │ │ ├── AuthZoneNode.cs │ │ │ ├── AuthZoneTree.cs │ │ │ ├── CacheZoneTree.cs │ │ │ ├── DomainTree.cs │ │ │ ├── InvalidDomainNameException.cs │ │ │ └── ZoneTree.cs │ │ ├── ZoneManagers/ │ │ │ ├── AllowedZoneManager.cs │ │ │ ├── AuthZoneManager.cs │ │ │ ├── BlockListZoneManager.cs │ │ │ ├── BlockedZoneManager.cs │ │ │ └── CacheZoneManager.cs │ │ └── Zones/ │ │ ├── ApexZone.cs │ │ ├── AuthZone.cs │ │ ├── AuthZoneInfo.cs │ │ ├── CacheZone.cs │ │ ├── CatalogSubDomainZone.cs │ │ ├── CatalogZone.cs │ │ ├── ForwarderSubDomainZone.cs │ │ ├── ForwarderZone.cs │ │ ├── PrimarySubDomainZone.cs │ │ ├── PrimaryZone.cs │ │ ├── SecondaryCatalogSubDomainZone.cs │ │ ├── SecondaryCatalogZone.cs │ │ ├── SecondaryForwarderZone.cs │ │ ├── SecondarySubDomainZone.cs │ │ ├── SecondaryZone.cs │ │ ├── StubZone.cs │ │ ├── SubDomainZone.cs │ │ └── Zone.cs │ ├── DnsServerCore.csproj │ ├── DnsWebService.cs │ ├── DnsWebServiceException.cs │ ├── DnsWebServiceLegacy.cs │ ├── Extensions.cs │ ├── InvalidTokenWebServiceException.cs │ ├── LogManager.cs │ ├── TwoFactorAuthRequiredWebServiceException.cs │ ├── WebServiceApi.cs │ ├── WebServiceAppsApi.cs │ ├── WebServiceAuthApi.cs │ ├── WebServiceClusterApi.cs │ ├── WebServiceDashboardApi.cs │ ├── WebServiceDhcpApi.cs │ ├── WebServiceLogsApi.cs │ ├── WebServiceOtherZonesApi.cs │ ├── WebServiceSettingsApi.cs │ ├── WebServiceZonesApi.cs │ ├── dohwww/ │ │ ├── css/ │ │ │ └── main.css │ │ ├── index.html │ │ ├── js/ │ │ │ └── main.js │ │ └── robots.txt │ ├── named.root │ ├── root-anchors.xml │ └── www/ │ ├── css/ │ │ └── main.css │ ├── fonts/ │ │ └── FontAwesome.otf │ ├── index.html │ ├── js/ │ │ ├── apps.js │ │ ├── auth.js │ │ ├── cluster.js │ │ ├── common.js │ │ ├── dhcp.js │ │ ├── dnsclient.js │ │ ├── logs.js │ │ ├── main.js │ │ ├── other-zones.js │ │ └── zone.js │ ├── json/ │ │ ├── dnsclient-server-list-builtin.json │ │ ├── quick-block-lists-builtin.json │ │ ├── quick-forwarders-list-builtin.json │ │ └── readme.txt │ └── robots.txt ├── DnsServerCore.ApplicationCommon/ │ ├── DnsServerCore.ApplicationCommon.csproj │ ├── IDnsAppRecordRequestHandler.cs │ ├── IDnsApplication.cs │ ├── IDnsApplicationPreference.cs │ ├── IDnsAuthoritativeRequestHandler.cs │ ├── IDnsPostProcessor.cs │ ├── IDnsQueryLogger.cs │ ├── IDnsQueryLogs.cs │ ├── IDnsRequestBlockingHandler.cs │ ├── IDnsRequestController.cs │ └── IDnsServer.cs ├── DnsServerCore.HttpApi/ │ ├── DnsServerCore.HttpApi.csproj │ ├── HttpApiClient.cs │ ├── HttpApiClientException.cs │ ├── InvalidTokenHttpApiClientException.cs │ ├── Models/ │ │ ├── ClusterInfo.cs │ │ ├── DashboardStats.cs │ │ └── SessionInfo.cs │ └── TwoFactorAuthRequiredHttpApiClientException.cs ├── DnsServerSystemTrayApp/ │ ├── DnsProvider.cs │ ├── DnsServerSystemTrayApp.csproj │ ├── MainApplicationContext.cs │ ├── NotifyIconExtension.cs │ ├── Program.cs │ ├── Properties/ │ │ ├── PublishProfiles/ │ │ │ └── FolderProfile.pubxml │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── frmAbout.Designer.cs │ ├── frmAbout.cs │ ├── frmAbout.resx │ ├── frmManageDnsProviders.Designer.cs │ ├── frmManageDnsProviders.cs │ └── frmManageDnsProviders.resx ├── DnsServerWindowsService/ │ ├── DnsServerWindowsService.csproj │ ├── DnsServiceWorker.cs │ ├── Program.cs │ └── Properties/ │ └── PublishProfiles/ │ └── FolderProfile.pubxml ├── DnsServerWindowsSetup/ │ ├── DnsServerSetup.iss │ ├── appinstall.iss │ ├── dotnet.iss │ ├── helper.iss │ ├── legacy.iss │ └── service.iss ├── DockerEnvironmentVariables.md ├── Dockerfile ├── LICENSE ├── README.md ├── SECURITY.md ├── build.md └── docker-compose.yml
Showing preview only (249K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2525 symbols across 199 files)
FILE: Apps/AdvancedBlockingApp/App.cs
class App (line 42) | public sealed class App : IDnsApplication, IDnsRequestBlockingHandler
method Dispose (line 76) | public void Dispose()
method BlockListUrlUpdateTimerCallbackAsync (line 89) | private async void BlockListUrlUpdateTimerCallbackAsync(object? state)
method UpdateAllListsAsync (line 109) | private async Task<bool> UpdateAllListsAsync()
method GetParentZone (line 140) | private static string? GetParentZone(string domain)
method IsZoneFound (line 150) | private static bool IsZoneFound(HashSet<string> domains, string domain...
method IsZoneFound (line 168) | private static bool IsZoneFound(Dictionary<Uri, BlockList> listZones, ...
method IsZoneFound (line 184) | private static bool IsZoneFound(Dictionary<Uri, ListZoneEntry<BlockLis...
method IsZoneAllowed (line 200) | private static bool IsZoneAllowed(Dictionary<Uri, ListZoneEntry<AdBloc...
method IsZoneBlocked (line 216) | private static bool IsZoneBlocked(Dictionary<Uri, ListZoneEntry<AdBloc...
method IsMatchFound (line 232) | private static bool IsMatchFound(IReadOnlyList<Regex> regices, string ...
method IsMatchFound (line 248) | private static bool IsMatchFound(Dictionary<Uri, RegexList> regexListZ...
method IsMatchFound (line 264) | private static bool IsMatchFound(Dictionary<Uri, ListZoneEntry<RegexLi...
method GetGroupName (line 280) | private string? GetGroupName(DnsDatagram request, IPEndPoint remoteEP)
method InitializeAsync (line 344) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method IsAllowedAsync (line 558) | public Task<bool> IsAllowedAsync(DnsDatagram request, IPEndPoint remot...
method ProcessRequestAsync (line 572) | public Task<DnsDatagram?> ProcessRequestAsync(DnsDatagram request, IPE...
class UrlEntry (line 713) | class UrlEntry
method UrlEntry (line 727) | public UrlEntry(Uri? uri, Group group)
method UrlEntry (line 735) | public UrlEntry(JsonElement jsonUrl, Group group)
class ListZoneEntry (line 814) | class ListZoneEntry<T> where T : ListBase
method ListZoneEntry (line 825) | public ListZoneEntry(UrlEntry urlEntry, T list)
class Group (line 844) | class Group
method Group (line 882) | public Group(App app, JsonElement jsonGroup)
method GetUriEntry (line 941) | private static Uri GetUriEntry(string uriString)
method GetUrlEntry (line 946) | private UrlEntry GetUrlEntry(JsonElement jsonUrl)
method GetRegexEntry (line 951) | private static Regex GetRegexEntry(string pattern)
method LoadListZones (line 960) | public void LoadListZones()
method IsZoneAllowed (line 1023) | public bool IsZoneAllowed(string domain)
method IsZoneBlocked (line 1031) | public bool IsZoneBlocked(string domain, out string? blockedDomain, ...
class ListBase (line 1131) | abstract class ListBase
method ListBase (line 1151) | public ListBase(IDnsServer dnsServer, Uri listUrl, bool isAllowList,...
method DownloadListFileAsync (line 1166) | private async Task<bool> DownloadListFileAsync()
method LoadListZone (line 1251) | protected abstract void LoadListZone();
method LoadAsync (line 1257) | public async Task LoadAsync()
method UpdateAsync (line 1301) | public async Task<bool> UpdateAsync()
class BlockList (line 1322) | class BlockList : ListBase
method BlockList (line 1334) | public BlockList(IDnsServer dnsServer, Uri listUrl, bool isAllowList)
method PopWord (line 1342) | private static string PopWord(ref string line)
method ReadListFile (line 1366) | private Queue<string> ReadListFile()
method LoadListZone (line 1457) | protected override void LoadListZone()
method IsZoneFound (line 1472) | public bool IsZoneFound(string domain, out string? foundZone)
class RegexList (line 1480) | class RegexList : ListBase
method RegexList (line 1490) | public RegexList(IDnsServer dnsServer, Uri listUrl, bool isAllowList)
method ReadRegexListFile (line 1498) | private Queue<string> ReadRegexListFile()
method LoadListZone (line 1545) | protected override void LoadListZone()
method IsMatchFound (line 1569) | public bool IsMatchFound(string domain, out string? matchingPattern)
class AdBlockList (line 1577) | class AdBlockList : ListBase
method AdBlockList (line 1588) | public AdBlockList(IDnsServer dnsServer, Uri listUrl)
method ReadAdblockListFile (line 1596) | private void ReadAdblockListFile(out Queue<string> allowedDomains, o...
method LoadListZone (line 1679) | protected override void LoadListZone()
method IsZoneAllowed (line 1700) | public bool IsZoneAllowed(string domain, out string? foundZone)
method IsZoneBlocked (line 1705) | public bool IsZoneBlocked(string domain, out string? foundZone)
FILE: Apps/AdvancedForwardingApp/App.cs
class App (line 35) | public sealed class App : IDnsApplication, IDnsAuthoritativeRequestHandl...
method Dispose (line 53) | public void Dispose()
method GetUpdatedForwarderRecords (line 66) | private static List<DnsForwarderRecordData> GetUpdatedForwarderRecords...
method GetForwarderRecord (line 76) | private static DnsForwarderRecordData GetForwarderRecord(NameServerAdd...
method GetForwarderRecord (line 81) | private static DnsForwarderRecordData GetForwarderRecord(DnsTransportP...
method ReadGroup (line 93) | private Tuple<string, Group> ReadGroup(JsonElement jsonGroup)
method InitializeAsync (line 109) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 167) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
class Group (line 216) | class Group : IDisposable
method Group (line 233) | public Group(IDnsServer dnsServer, Dictionary<string, ConfigProxySer...
method Dispose (line 246) | public void Dispose()
method ReadAdGuardUpstream (line 261) | private Tuple<string, AdGuardUpstream> ReadAdGuardUpstream(JsonEleme...
method ReloadConfig (line 277) | public void ReloadConfig(Dictionary<string, ConfigProxyServer> confi...
method TryGetForwarderRecords (line 314) | public bool TryGetForwarderRecords(string domain, out IReadOnlyList<...
class Forwarding (line 347) | class Forwarding
method Forwarding (line 358) | public Forwarding(JsonElement jsonForwarding, Dictionary<string, Con...
method Forwarding (line 381) | public Forwarding(IReadOnlyList<string> domains, NameServerAddress f...
method Forwarding (line 385) | public Forwarding(IReadOnlyList<DnsForwarderRecordData> forwarderRec...
method TryGetForwarderRecords (line 404) | public static bool TryGetForwarderRecords(string domain, IReadOnlyLi...
method IsForwarderDomain (line 453) | public static bool IsForwarderDomain(string domain, IReadOnlyList<Fo...
method IsForwarderDomain (line 464) | public static bool IsForwarderDomain(string domain, IReadOnlyList<Dn...
method GetParentZone (line 479) | private static string GetParentZone(string domain)
method IsDomainMatching (line 489) | private bool IsDomainMatching(string domain, out string matchedDomain)
method TryGetForwarderRecords (line 529) | private bool TryGetForwarderRecords(string domain, out IReadOnlyList...
method UpdateForwarderRecords (line 545) | public void UpdateForwarderRecords(bool dnssecValidation, ConfigProx...
class AdGuardUpstream (line 553) | class AdGuardUpstream : IDisposable
method AdGuardUpstream (line 578) | public AdGuardUpstream(IDnsServer dnsServer, Dictionary<string, Conf...
method Dispose (line 619) | public void Dispose()
method ReloadUpstreamsFile (line 632) | private void ReloadUpstreamsFile()
method PopWord (line 722) | private static string PopWord(ref string line)
method ReloadConfig (line 750) | public void ReloadConfig(Dictionary<string, ConfigProxyServer> confi...
method TryGetForwarderRecords (line 778) | public bool TryGetForwarderRecords(string domain, out IReadOnlyList<...
class ConfigProxyServer (line 818) | class ConfigProxyServer
method ConfigProxyServer (line 833) | public ConfigProxyServer(JsonElement jsonProxy)
class ConfigForwarder (line 868) | class ConfigForwarder
method ConfigForwarder (line 879) | public ConfigForwarder(JsonElement jsonForwarder, Dictionary<string,...
FILE: Apps/AutoPtrApp/App.cs
class App (line 31) | public sealed class App : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 41) | public void Dispose()
method InitializeAsync (line 50) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 57) | public async Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request...
FILE: Apps/BlockPageApp/App.cs
class App (line 48) | public sealed class App : IDnsApplication
method Dispose (line 60) | public void Dispose()
method StopAllWebServersAsync (line 74) | private async Task StopAllWebServersAsync()
method InitializeAsync (line 89) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
class WebServer (line 146) | class WebServer : IAsyncDisposable
method WebServer (line 176) | public WebServer(IDnsServer dnsServer, string name)
method DisposeAsync (line 188) | public async ValueTask DisposeAsync()
method StartWebServerAsync (line 203) | private async Task StartWebServerAsync()
method StopWebServerAsync (line 303) | private async Task StopWebServerAsync()
method LoadWebServiceTlsCertificate (line 312) | private void LoadWebServiceTlsCertificate(string webServerTlsCertifi...
method StartTlsCertificateUpdateTimer (line 354) | private void StartTlsCertificateUpdateTimer()
method StopTlsCertificateUpdateTimerAsync (line 379) | private async Task StopTlsCertificateUpdateTimerAsync()
method RedirectToDefaultPageAsync (line 388) | private Task RedirectToDefaultPageAsync(HttpContext context, Request...
method ServeDefaultPageAsync (line 395) | private async Task ServeDefaultPageAsync(HttpContext context, Reques...
method InitializeAsync (line 468) | public async Task InitializeAsync(JsonElement jsonWebServerConfig)
FILE: Apps/DefaultRecordsApp/App.cs
class App (line 34) | public sealed class App : IDnsApplication, IDnsPostProcessor
method Dispose (line 49) | public void Dispose()
method GetParentZone (line 58) | private static string GetParentZone(string domain)
method TryGetMappedSets (line 68) | private bool TryGetMappedSets(string domain, out string zone, out stri...
method InitializeAsync (line 114) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method PostProcessAsync (line 141) | public async Task<DnsDatagram> PostProcessAsync(DnsDatagram request, I...
class Set (line 239) | class Set
method Set (line 251) | public Set(JsonElement jsonSet)
FILE: Apps/Dns64App/App.cs
class App (line 37) | public sealed class App : IDnsApplication, IDnsPostProcessor, IDnsAuthor...
method Dispose (line 53) | public void Dispose()
method InitializeAsync (line 62) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method PostProcessAsync (line 90) | public async Task<DnsDatagram> PostProcessAsync(DnsDatagram request, I...
method ProcessRequestAsync (line 208) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
class Group (line 272) | class Group
method Group (line 285) | public Group(JsonElement jsonGroup)
FILE: Apps/DnsBlockListApp/App.cs
class App (line 40) | public sealed class App : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 52) | public void Dispose()
method TryParseDnsblDomain (line 67) | private static bool TryParseDnsblDomain(string qName, string appRecord...
method ReadBlockList (line 120) | private Tuple<string, BlockList> ReadBlockList(JsonElement jsonBlockList)
method InitializeAsync (line 155) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 189) | public async Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request...
type BlockListType (line 286) | enum BlockListType
class BlockList (line 292) | abstract class BlockList : IDisposable
method BlockList (line 316) | protected BlockList(IDnsServer dnsServer, BlockListType type, JsonEl...
method Dispose (line 348) | public void Dispose()
method ReloadBlockListFile (line 361) | protected abstract void ReloadBlockListFile();
method PopWord (line 363) | protected static string PopWord(ref string line)
method ReloadConfig (line 391) | public void ReloadConfig(JsonElement jsonBlockList)
method IsBlocked (line 415) | public virtual bool IsBlocked(IPAddress address, out IPAddress respo...
method IsBlocked (line 420) | public virtual bool IsBlocked(string domain, out string foundDomain,...
class BlockEntry (line 450) | class BlockEntry<T>
method BlockEntry (line 462) | public BlockEntry(T key, string responseA, string responseTXT)
class IpBlockList (line 489) | class IpBlockList : BlockList
method IpBlockList (line 502) | public IpBlockList(IDnsServer dnsServer, JsonElement jsonBlockList)
method ReloadBlockListFile (line 510) | protected override void ReloadBlockListFile()
method IsBlocked (line 628) | public override bool IsBlocked(IPAddress address, out IPAddress resp...
class DomainBlockList (line 677) | class DomainBlockList : BlockList
method DomainBlockList (line 687) | public DomainBlockList(IDnsServer dnsServer, JsonElement jsonIpBlock...
method ReloadBlockListFile (line 695) | protected override void ReloadBlockListFile()
method GetParentZone (line 764) | private static string GetParentZone(string domain)
method IsDomainBlocked (line 774) | private bool IsDomainBlocked(string domain, out BlockEntry<string> d...
method IsBlocked (line 794) | public override bool IsBlocked(string domain, out string foundDomain...
FILE: Apps/DnsRebindingProtectionApp/App.cs
class App (line 33) | public sealed class App : IDnsApplication, IDnsPostProcessor
method Dispose (line 46) | public void Dispose()
method GetParentZone (line 55) | private static string GetParentZone(string domain)
method IsPrivateDomain (line 65) | private bool IsPrivateDomain(string domain)
method IsRebindingAttempt (line 81) | private bool IsRebindingAttempt(DnsResourceRecord record)
method TryDetectRebinding (line 114) | private bool TryDetectRebinding(IReadOnlyList<DnsResourceRecord> answe...
method InitializeAsync (line 149) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method PostProcessAsync (line 172) | public Task<DnsDatagram> PostProcessAsync(DnsDatagram request, IPEndPo...
FILE: Apps/DropRequestsApp/App.cs
class App (line 33) | public sealed class App : IDnsApplication, IDnsRequestController
method Dispose (line 47) | public void Dispose()
method InitializeAsync (line 56) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method GetRequestActionAsync (line 91) | public Task<DnsRequestControllerAction> GetRequestActionAsync(DnsDatag...
class BlockedQuestion (line 136) | class BlockedQuestion
method BlockedQuestion (line 148) | public BlockedQuestion(JsonElement jsonQuestion)
method Matches (line 173) | public bool Matches(DnsQuestionRecord question)
FILE: Apps/FailoverApp/Address.cs
type FailoverType (line 33) | enum FailoverType
class Address (line 40) | public sealed class Address : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 52) | public void Dispose()
method GetAnswers (line 67) | private void GetAnswers(JsonElement jsonAddresses, DnsQuestionRecord q...
method GetStatusAnswers (line 117) | private void GetStatusAnswers(JsonElement jsonAddresses, FailoverType ...
method InitializeAsync (line 137) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 147) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/FailoverApp/CNAME.cs
class CNAME (line 32) | public sealed class CNAME : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 44) | public void Dispose()
method GetAnswers (line 59) | private DnsResourceRecord[] GetAnswers(string domain, DnsQuestionRecor...
method GetStatusAnswers (line 87) | private void GetStatusAnswers(string domain, FailoverType type, DnsQue...
method InitializeAsync (line 116) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 126) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/FailoverApp/EmailAlert.cs
class EmailAlert (line 35) | class EmailAlert : IDisposable
method EmailAlert (line 58) | public EmailAlert(HealthService service, JsonElement jsonEmailAlert)
method Dispose (line 76) | protected virtual void Dispose(bool disposing)
method Dispose (line 90) | public void Dispose()
method SendMailAsync (line 100) | private async Task SendMailAsync(MailMessage message)
method Reload (line 133) | public void Reload(JsonElement jsonEmailAlert)
method SendAlertAsync (line 175) | public Task SendAlertAsync(IPAddress address, string healthCheck, Heal...
method SendAlertAsync (line 226) | public Task SendAlertAsync(IPAddress address, string healthCheck, Exce...
method SendAlertAsync (line 256) | public Task SendAlertAsync(string domain, DnsResourceRecordType type, ...
method SendAlertAsync (line 309) | public Task SendAlertAsync(string domain, DnsResourceRecordType type, ...
class DnsClientInternal (line 376) | class DnsClientInternal : IDnsClient
method DnsClientInternal (line 380) | public DnsClientInternal(IDnsServer dnsServer)
method ResolveAsync (line 385) | public Task<DnsDatagram> ResolveAsync(DnsQuestionRecord question, Ca...
FILE: Apps/FailoverApp/HealthCheck.cs
type HealthCheckType (line 38) | enum HealthCheckType
class HealthCheck (line 47) | class HealthCheck : IDisposable
method HealthCheck (line 72) | public HealthCheck(HealthService service, JsonElement jsonHealthCheck)
method Dispose (line 87) | protected virtual void Dispose(bool disposing)
method Dispose (line 110) | public void Dispose()
method ConditionalHttpReload (line 120) | private void ConditionalHttpReload()
method Reload (line 210) | public void Reload(JsonElement jsonHealthCheck)
method IsHealthyAsync (line 236) | public async Task<HealthCheckResponse> IsHealthyAsync(string domain, D...
method IsHealthyAsync (line 293) | public async Task<HealthCheckResponse> IsHealthyAsync(IPAddress addres...
FILE: Apps/FailoverApp/HealthCheckResponse.cs
type HealthStatus (line 24) | enum HealthStatus
class HealthCheckResponse (line 32) | class HealthCheckResponse
method HealthCheckResponse (line 45) | public HealthCheckResponse(HealthStatus status, string failureReason =...
FILE: Apps/FailoverApp/HealthMonitor.cs
class HealthMonitor (line 28) | class HealthMonitor : IDisposable
method HealthMonitor (line 50) | public HealthMonitor(IDnsServer dnsServer, IPAddress address, HealthCh...
method HealthMonitor (line 159) | public HealthMonitor(IDnsServer dnsServer, string domain, DnsResourceR...
method Dispose (line 279) | protected virtual void Dispose(bool disposing)
method Dispose (line 292) | public void Dispose()
method IsExpired (line 302) | public bool IsExpired()
method SetUnderMaintenance (line 307) | public void SetUnderMaintenance()
FILE: Apps/FailoverApp/HealthService.cs
class HealthService (line 33) | class HealthService : IDisposable
method HealthService (line 55) | private HealthService(IDnsServer dnsServer)
method Dispose (line 96) | protected virtual void Dispose(bool disposing)
method Dispose (line 129) | public void Dispose()
method Create (line 139) | public static HealthService Create(IDnsServer dnsServer)
method GetHealthMonitorKey (line 151) | private static string GetHealthMonitorKey(IPAddress address, string he...
method GetHealthMonitorKey (line 162) | private static string GetHealthMonitorKey(string domain, DnsResourceRe...
method RemoveHealthMonitor (line 173) | private void RemoveHealthMonitor(string healthCheck)
method Initialize (line 189) | public void Initialize(string config)
method QueryStatus (line 373) | public HealthCheckResponse QueryStatus(IPAddress address, string healt...
method QueryStatus (line 398) | public HealthCheckResponse QueryStatus(string domain, DnsResourceRecor...
FILE: Apps/FailoverApp/WebHook.cs
class WebHook (line 35) | class WebHook : IDisposable
method WebHook (line 52) | public WebHook(HealthService service, JsonElement jsonWebHook)
method Dispose (line 67) | protected virtual void Dispose(bool disposing)
method Dispose (line 90) | public void Dispose()
method ConditionalHttpReload (line 100) | private void ConditionalHttpReload()
method CallAsync (line 158) | private async Task CallAsync(HttpContent content)
method Reload (line 187) | public void Reload(JsonElement jsonWebHook)
method CallAsync (line 199) | public Task CallAsync(IPAddress address, string healthCheck, HealthChe...
method CallAsync (line 231) | public Task CallAsync(IPAddress address, string healthCheck, Exception...
method CallAsync (line 260) | public Task CallAsync(string domain, DnsResourceRecordType type, strin...
method CallAsync (line 293) | public Task CallAsync(string domain, DnsResourceRecordType type, strin...
FILE: Apps/FilterAaaaApp/App.cs
class App (line 34) | public sealed class App : IDnsApplication, IDnsPostProcessor
method Dispose (line 51) | public void Dispose()
method InitializeAsync (line 60) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method PostProcessAsync (line 110) | public async Task<DnsDatagram> PostProcessAsync(DnsDatagram request, I...
FILE: Apps/GeoContinentApp/Address.cs
class Address (line 35) | public sealed class Address : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 48) | private void Dispose(bool disposing)
method Dispose (line 62) | public void Dispose()
method InitializeAsync (line 71) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 79) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/GeoContinentApp/CNAME.cs
class CNAME (line 33) | public sealed class CNAME : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 46) | private void Dispose(bool disposing)
method Dispose (line 60) | public void Dispose()
method InitializeAsync (line 69) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 77) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/GeoContinentApp/MaxMind.cs
class MaxMind (line 27) | class MaxMind : IDisposable
method MaxMind (line 41) | private MaxMind(IDnsServer dnsServer)
method Dispose (line 71) | protected virtual void Dispose(bool disposing)
method Dispose (line 86) | public void Dispose()
method Create (line 96) | public static MaxMind Create(IDnsServer dnsServer)
FILE: Apps/GeoCountryApp/Address.cs
class Address (line 35) | public sealed class Address : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 48) | private void Dispose(bool disposing)
method Dispose (line 62) | public void Dispose()
method InitializeAsync (line 71) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 79) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/GeoCountryApp/CNAME.cs
class CNAME (line 33) | public sealed class CNAME : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 46) | private void Dispose(bool disposing)
method Dispose (line 60) | public void Dispose()
method InitializeAsync (line 69) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 77) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/GeoCountryApp/MaxMind.cs
class MaxMind (line 27) | class MaxMind : IDisposable
method MaxMind (line 41) | private MaxMind(IDnsServer dnsServer)
method Dispose (line 71) | protected virtual void Dispose(bool disposing)
method Dispose (line 86) | public void Dispose()
method Create (line 96) | public static MaxMind Create(IDnsServer dnsServer)
FILE: Apps/GeoDistanceApp/Address.cs
class Address (line 36) | public sealed class Address : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 49) | private void Dispose(bool disposing)
method Dispose (line 63) | public void Dispose()
method GetDistance (line 72) | private static double GetDistance(double lat1, double long1, double la...
method InitializeAsync (line 87) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 95) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/GeoDistanceApp/CNAME.cs
class CNAME (line 35) | public sealed class CNAME : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 48) | private void Dispose(bool disposing)
method Dispose (line 62) | public void Dispose()
method GetDistance (line 71) | private static double GetDistance(double lat1, double long1, double la...
method InitializeAsync (line 86) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 94) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/GeoDistanceApp/MaxMind.cs
class MaxMind (line 27) | class MaxMind : IDisposable
method MaxMind (line 41) | private MaxMind(IDnsServer dnsServer)
method Dispose (line 71) | protected virtual void Dispose(bool disposing)
method Dispose (line 86) | public void Dispose()
method Create (line 96) | public static MaxMind Create(IDnsServer dnsServer)
FILE: Apps/LogExporterApp/App.cs
class App (line 34) | public sealed class App : IDnsApplication, IDnsQueryLogger
method App (line 56) | public App()
method Dispose (line 65) | public void Dispose()
method Dispose (line 71) | private void Dispose(bool disposing)
method InitializeAsync (line 92) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method InsertLogAsync (line 140) | public Task InsertLogAsync(DateTime timestamp, DnsDatagram request, IP...
method ExportLogsAsync (line 155) | private async Task ExportLogsAsync()
method HandleExportLogCallback (line 182) | private async void HandleExportLogCallback(object? state)
FILE: Apps/LogExporterApp/AppConfig.cs
class AppConfig (line 27) | public class AppConfig
method Deserialize (line 45) | public static AppConfig? Deserialize(string json)
class TargetBase (line 51) | public class TargetBase
class SyslogTarget (line 57) | public class SyslogTarget : TargetBase
class FileTarget (line 69) | public class FileTarget : TargetBase
class HttpTarget (line 75) | public class HttpTarget : TargetBase
class DnsConfigSerializerOptions (line 85) | public static class DnsConfigSerializerOptions
FILE: Apps/LogExporterApp/LogEntry.cs
class LogEntry (line 34) | public class LogEntry
method LogEntry (line 36) | public LogEntry(DateTime timestamp, IPEndPoint remoteEP, DnsTransportP...
method ToString (line 106) | public override string ToString()
class DnsLogSerializerOptions (line 111) | public static class DnsLogSerializerOptions
class DnsQuestion (line 124) | public class DnsQuestion
class DnsResourceRecord (line 131) | public class DnsResourceRecord
class EDNSLog (line 141) | public class EDNSLog
class JsonDateTimeConverter (line 147) | public class JsonDateTimeConverter : JsonConverter<DateTime>
method Read (line 149) | public override DateTime Read(ref Utf8JsonReader reader, Type typeTo...
method Write (line 155) | public override void Write(Utf8JsonWriter writer, DateTime value, Js...
FILE: Apps/LogExporterApp/Strategy/ExportManager.cs
class ExportManager (line 29) | public sealed class ExportManager : IDisposable
method Dispose (line 39) | public void Dispose()
method AddStrategy (line 49) | public void AddStrategy(IExportStrategy strategy)
method RemoveStrategy (line 55) | public void RemoveStrategy(Type type)
method HasStrategy (line 61) | public bool HasStrategy()
method ImplementStrategyAsync (line 66) | public async Task ImplementStrategyAsync(IReadOnlyList<LogEntry> logs)
FILE: Apps/LogExporterApp/Strategy/FileExportStrategy.cs
class FileExportStrategy (line 27) | public sealed class FileExportStrategy : IExportStrategy
method FileExportStrategy (line 39) | public FileExportStrategy(string filePath)
method Dispose (line 48) | public void Dispose()
method ExportAsync (line 62) | public Task ExportAsync(IReadOnlyList<LogEntry> logs)
FILE: Apps/LogExporterApp/Strategy/HttpExportStrategy.cs
class HttpExportStrategy (line 33) | public sealed class HttpExportStrategy : IExportStrategy
method HttpExportStrategy (line 45) | public HttpExportStrategy(string endpoint, Dictionary<string, string?>...
method Dispose (line 62) | public void Dispose()
method ExportAsync (line 76) | public Task ExportAsync(IReadOnlyList<LogEntry> logs)
class CustomHttpClient (line 86) | public class CustomHttpClient : IHttpClient
method CustomHttpClient (line 90) | public CustomHttpClient()
method Configure (line 95) | public void Configure(IConfiguration configuration)
method Dispose (line 104) | public void Dispose()
method PostAsync (line 110) | public async Task<HttpResponseMessage> PostAsync(string requestUri, ...
FILE: Apps/LogExporterApp/Strategy/IExportStrategy.cs
type IExportStrategy (line 30) | public interface IExportStrategy: IDisposable
method ExportAsync (line 32) | Task ExportAsync(IReadOnlyList<LogEntry> logs);
FILE: Apps/LogExporterApp/Strategy/SyslogExportStrategy.cs
class SyslogExportStrategy (line 32) | public sealed class SyslogExportStrategy : IExportStrategy
method SyslogExportStrategy (line 52) | public SyslogExportStrategy(string address, int? port, string? protocol)
method Dispose (line 75) | public void Dispose()
method ExportAsync (line 89) | public Task ExportAsync(IReadOnlyList<LogEntry> logs)
method Convert (line 101) | private static LogEvent Convert(LogEntry log)
FILE: Apps/MispConnectorApp/App.cs
class App (line 45) | public sealed class App : IDnsApplication, IDnsRequestBlockingHandler
method Dispose (line 66) | public void Dispose()
method InitializeAsync (line 90) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method IsAllowedAsync (line 133) | public Task<bool> IsAllowedAsync(DnsDatagram request, IPEndPoint remot...
method ProcessRequestAsync (line 138) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
method StartUpdateLoopAsync (line 209) | private async Task StartUpdateLoopAsync(CancellationToken cancellation...
method ParseUpdateInterval (line 235) | private static TimeSpan ParseUpdateInterval(string interval)
method CheckTcpPortAsync (line 266) | private async Task<bool> CheckTcpPortAsync(Uri serverUri, Cancellation...
method CreateHttpClient (line 302) | private HttpClient CreateHttpClient(Uri serverUrl, bool disableTlsVali...
method FetchIocFromMispAsync (line 322) | private async Task<HashSet<string>> FetchIocFromMispAsync(Cancellation...
method IsDomainBlocked (line 426) | private bool IsDomainBlocked(string domain, out string foundZone)
method LoadBlocklistFromCacheAsync (line 455) | private async Task LoadBlocklistFromCacheAsync()
method UpdateIocsAsync (line 472) | private async Task UpdateIocsAsync(CancellationToken cancellationToken)
method WriteIocsToCacheAsync (line 497) | private async Task WriteIocsToCacheAsync(FrozenSet<string> iocs, Cance...
class Config (line 518) | private class Config
class MispAttribute (line 554) | private class MispAttribute
class MispRequestBody (line 560) | private class MispRequestBody
class MispResponse (line 581) | private class MispResponse
class MispResponseData (line 587) | private class MispResponseData
FILE: Apps/NoDataApp/App.cs
class App (line 30) | public sealed class App : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 34) | public void Dispose()
method InitializeAsync (line 43) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 49) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/NxDomainApp/App.cs
class App (line 33) | public sealed class App : IDnsApplication, IDnsAuthoritativeRequestHandl...
method Dispose (line 51) | public void Dispose()
method GetParentZone (line 60) | private static string GetParentZone(string domain)
method IsZoneBlocked (line 70) | private bool IsZoneBlocked(string domain, out string blockedDomain)
method InitializeAsync (line 95) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 112) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/NxDomainOverrideApp/App.cs
class App (line 33) | public sealed class App : IDnsApplication, IDnsPostProcessor
method Dispose (line 46) | public void Dispose()
method GetParentZone (line 55) | private static string GetParentZone(string domain)
method TryGetMappedSets (line 65) | private bool TryGetMappedSets(string domain, out string[] setNames)
method InitializeAsync (line 101) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method PostProcessAsync (line 126) | public Task<DnsDatagram> PostProcessAsync(DnsDatagram request, IPEndPo...
class Set (line 207) | class Set
method Set (line 218) | public Set(JsonElement jsonSet)
FILE: Apps/QueryLogsMySqlApp/App.cs
class App (line 37) | public sealed class App : IDnsApplication, IDnsQueryLogger, IDnsQueryLogs
method App (line 66) | public App()
method Dispose (line 134) | public void Dispose()
method StartNewChannel (line 153) | private void StartNewChannel(int maxQueueSize)
method StopChannel (line 203) | private void StopChannel()
method BulkInsertLogsAsync (line 208) | private async Task BulkInsertLogsAsync(List<LogEntry> logs, StringBuil...
method InitializeAsync (line 325) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method InsertLogAsync (line 668) | public Task InsertLogAsync(DateTime timestamp, DnsDatagram request, IP...
method QueryLogsAsync (line 676) | public async Task<DnsLogPage> QueryLogsAsync(long pageNumber, int entr...
type LogEntry (line 886) | readonly struct LogEntry
method LogEntry (line 900) | public LogEntry(DateTime timestamp, DnsDatagram request, IPEndPoint ...
FILE: Apps/QueryLogsSqlServerApp/App.cs
class App (line 37) | public sealed class App : IDnsApplication, IDnsQueryLogger, IDnsQueryLogs
method App (line 66) | public App()
method Dispose (line 134) | public void Dispose()
method StartNewChannel (line 153) | private void StartNewChannel(int maxQueueSize)
method StopChannel (line 203) | private void StopChannel()
method BulkInsertLogsAsync (line 208) | private async Task BulkInsertLogsAsync(List<LogEntry> logs, StringBuil...
method InitializeAsync (line 326) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method InsertLogAsync (line 564) | public Task InsertLogAsync(DateTime timestamp, DnsDatagram request, IP...
method QueryLogsAsync (line 572) | public async Task<DnsLogPage> QueryLogsAsync(long pageNumber, int entr...
type LogEntry (line 783) | readonly struct LogEntry
method LogEntry (line 797) | public LogEntry(DateTime timestamp, DnsDatagram request, IPEndPoint ...
FILE: Apps/QueryLogsSqliteApp/App.cs
class App (line 37) | public sealed class App : IDnsApplication, IDnsQueryLogger, IDnsQueryLogs
method App (line 67) | public App()
method Dispose (line 136) | public void Dispose()
method StartNewChannel (line 163) | private void StartNewChannel(int maxQueueSize)
method StopChannel (line 212) | private void StopChannel()
method BulkInsertLogsAsync (line 217) | private async Task BulkInsertLogsAsync(List<LogEntry> logs)
method InitializeAsync (line 322) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method InsertLogAsync (line 525) | public Task InsertLogAsync(DateTime timestamp, DnsDatagram request, IP...
method QueryLogsAsync (line 533) | public async Task<DnsLogPage> QueryLogsAsync(long pageNumber, int entr...
type LogEntry (line 744) | readonly struct LogEntry
method LogEntry (line 758) | public LogEntry(DateTime timestamp, DnsDatagram request, IPEndPoint ...
FILE: Apps/SplitHorizonApp/AddressTranslation.cs
class AddressTranslation (line 35) | public sealed class AddressTranslation : IDnsApplication, IDnsPostProces...
method Dispose (line 50) | public void Dispose()
method InitializeAsync (line 59) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method PostProcessAsync (line 213) | public Task<DnsDatagram> PostProcessAsync(DnsDatagram request, IPEndPo...
method ProcessRequestAsync (line 305) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
class Group (line 352) | class Group
method Group (line 367) | public Group(JsonElement jsonGroup)
method TryExternalToInternalTranslation (line 421) | public bool TryExternalToInternalTranslation(IPAddress externalIp, o...
method TryInternalToExternalTranslation (line 479) | public bool TryInternalToExternalTranslation(IPAddress internalIp, o...
FILE: Apps/SplitHorizonApp/SimpleAddress.cs
class SimpleAddress (line 35) | public sealed class SimpleAddress : IDnsApplication, IDnsAppRecordReques...
method Dispose (line 45) | public void Dispose()
method InitializeAsync (line 54) | public async Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 140) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/SplitHorizonApp/SimpleCNAME.cs
class SimpleCNAME (line 32) | public sealed class SimpleCNAME : IDnsApplication, IDnsAppRecordRequestH...
method Dispose (line 36) | public void Dispose()
method InitializeAsync (line 45) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 51) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/WeightedRoundRobinApp/Address.cs
class Address (line 32) | public sealed class Address : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 36) | public void Dispose()
method InitializeAsync (line 45) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 50) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
type WeightedAddress (line 190) | struct WeightedAddress
FILE: Apps/WeightedRoundRobinApp/CNAME.cs
class CNAME (line 32) | public sealed class CNAME : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 36) | public void Dispose()
method InitializeAsync (line 45) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 50) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
type WeightedDomain (line 153) | struct WeightedDomain
FILE: Apps/WhatIsMyDnsApp/App.cs
class App (line 30) | public sealed class App : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 34) | public void Dispose()
method InitializeAsync (line 43) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 49) | public Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEn...
FILE: Apps/WildIpApp/App.cs
class App (line 29) | public sealed class App : IDnsApplication, IDnsAppRecordRequestHandler
method Dispose (line 42) | public void Dispose()
method InitializeAsync (line 51) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 58) | public async Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request...
FILE: Apps/ZoneAliasApp/App.cs
class App (line 32) | public sealed class App : IDnsApplication, IDnsAuthoritativeRequestHandl...
method Dispose (line 47) | public void Dispose()
method GetParentZone (line 56) | private static string GetParentZone(string domain)
method IsZoneAlias (line 66) | private bool IsZoneAlias(string domain, out string zone, out string al...
method ConvertRecords (line 87) | private static IReadOnlyList<DnsResourceRecord> ConvertRecords(IReadOn...
method InitializeAsync (line 115) | public Task InitializeAsync(IDnsServer dnsServer, string config)
method ProcessRequestAsync (line 150) | public async Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request...
FILE: DnsServerApp/Program.cs
class Program (line 28) | class Program
method Main (line 30) | static async Task Main(string[] args)
FILE: DnsServerCore.ApplicationCommon/IDnsAppRecordRequestHandler.cs
type IDnsAppRecordRequestHandler (line 29) | public interface IDnsAppRecordRequestHandler
method ProcessRequestAsync (line 43) | Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEndPoint ...
FILE: DnsServerCore.ApplicationCommon/IDnsApplication.cs
type IDnsApplication (line 28) | public interface IDnsApplication : IDisposable
method InitializeAsync (line 35) | Task InitializeAsync(IDnsServer dnsServer, string config);
FILE: DnsServerCore.ApplicationCommon/IDnsApplicationPreference.cs
type IDnsApplicationPreference (line 25) | public interface IDnsApplicationPreference
FILE: DnsServerCore.ApplicationCommon/IDnsAuthoritativeRequestHandler.cs
type IDnsAuthoritativeRequestHandler (line 29) | public interface IDnsAuthoritativeRequestHandler
method ProcessRequestAsync (line 39) | Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEndPoint ...
FILE: DnsServerCore.ApplicationCommon/IDnsPostProcessor.cs
type IDnsPostProcessor (line 29) | public interface IDnsPostProcessor
method PostProcessAsync (line 39) | Task<DnsDatagram> PostProcessAsync(DnsDatagram request, IPEndPoint rem...
FILE: DnsServerCore.ApplicationCommon/IDnsQueryLogger.cs
type DnsServerResponseType (line 27) | public enum DnsServerResponseType : byte
type IDnsQueryLogger (line 41) | public interface IDnsQueryLogger
method InsertLogAsync (line 51) | Task InsertLogAsync(DateTime timestamp, DnsDatagram request, IPEndPoin...
FILE: DnsServerCore.ApplicationCommon/IDnsQueryLogs.cs
type IDnsQueryLogs (line 32) | public interface IDnsQueryLogs
method QueryLogsAsync (line 50) | Task<DnsLogPage> QueryLogsAsync(long pageNumber, int entriesPerPage, b...
class DnsLogPage (line 53) | public class DnsLogPage
method DnsLogPage (line 73) | public DnsLogPage(long pageNumber, long totalPages, long totalEntries,...
class DnsLogEntry (line 112) | public class DnsLogEntry
method DnsLogEntry (line 142) | public DnsLogEntry(long rowNumber, DateTime timestamp, IPAddress clien...
method DnsLogEntry (line 177) | public DnsLogEntry(long rowNumber, DateTime timestamp, IPAddress clien...
FILE: DnsServerCore.ApplicationCommon/IDnsRequestBlockingHandler.cs
type IDnsRequestBlockingHandler (line 29) | public interface IDnsRequestBlockingHandler
method IsAllowedAsync (line 37) | Task<bool> IsAllowedAsync(DnsDatagram request, IPEndPoint remoteEP);
method ProcessRequestAsync (line 45) | Task<DnsDatagram> ProcessRequestAsync(DnsDatagram request, IPEndPoint ...
FILE: DnsServerCore.ApplicationCommon/IDnsRequestController.cs
type DnsRequestControllerAction (line 26) | public enum DnsRequestControllerAction
type IDnsRequestController (line 47) | public interface IDnsRequestController
method GetRequestActionAsync (line 56) | Task<DnsRequestControllerAction> GetRequestActionAsync(DnsDatagram req...
FILE: DnsServerCore.ApplicationCommon/IDnsServer.cs
type IDnsServer (line 32) | public interface IDnsServer : IDnsClient
method DirectQueryAsync (line 42) | Task<DnsDatagram> DirectQueryAsync(DnsQuestionRecord question, int tim...
method DirectQueryAsync (line 52) | Task<DnsDatagram> DirectQueryAsync(DnsDatagram request, int timeout = ...
method WriteLog (line 58) | void WriteLog(string message);
method WriteLog (line 64) | void WriteLog(Exception ex);
FILE: DnsServerCore.HttpApi/HttpApiClient.cs
class HttpApiClient (line 44) | public sealed class HttpApiClient : IDisposable
method HttpApiClient (line 60) | static HttpApiClient()
method HttpApiClient (line 66) | public HttpApiClient(string serverUrl, NetProxy? proxy = null, bool pr...
method HttpApiClient (line 70) | public HttpApiClient(Uri serverUrl, NetProxy? proxy = null, bool prefe...
method Dispose (line 103) | public void Dispose()
method CheckResponseStatus (line 118) | private static void CheckResponseStatus(JsonElement rootElement)
method LoginAsync (line 172) | public async Task<SessionInfo> LoginAsync(string username, string pass...
method LogoutAsync (line 208) | public async Task LogoutAsync(CancellationToken cancellationToken = de...
method UseApiToken (line 224) | public void UseApiToken(string token)
method GetDashboardStatsAsync (line 233) | public async Task<DashboardStats> GetDashboardStatsAsync(string acting...
method GetDashboardTopStatsAsync (line 260) | public async Task<DashboardStats> GetDashboardTopStatsAsync(string act...
method SetClusterSettingsAsync (line 286) | public async Task SetClusterSettingsAsync(string actingUsername, IRead...
method ForceUpdateBlockListsAsync (line 316) | public async Task ForceUpdateBlockListsAsync(string actingUsername, Ca...
method TemporaryDisableBlockingAsync (line 329) | public async Task TemporaryDisableBlockingAsync(string actingUsername,...
method GetClusterStateAsync (line 342) | public async Task<ClusterInfo> GetClusterStateAsync(bool includeServer...
method DeleteClusterAsync (line 361) | public async Task<ClusterInfo> DeleteClusterAsync(bool forceDelete = f...
method JoinClusterAsync (line 380) | public async Task<ClusterInfo> JoinClusterAsync(int secondaryNodeId, U...
method DeleteSecondaryNodeAsync (line 399) | public async Task<ClusterInfo> DeleteSecondaryNodeAsync(int secondaryN...
method UpdateSecondaryNodeAsync (line 418) | public async Task<ClusterInfo> UpdateSecondaryNodeAsync(int secondaryN...
method TransferConfigFromPrimaryNodeAsync (line 437) | public async Task<(Stream, DateTime)> TransferConfigFromPrimaryNodeAsy...
method LeaveClusterAsync (line 450) | public async Task<ClusterInfo> LeaveClusterAsync(bool forceLeave = fal...
method NotifySecondaryNodeAsync (line 469) | public async Task NotifySecondaryNodeAsync(int primaryNodeId, Uri prim...
method ProxyRequest (line 482) | public async Task ProxyRequest(HttpContext context, string actingUsern...
FILE: DnsServerCore.HttpApi/HttpApiClientException.cs
class HttpApiClientException (line 24) | public class HttpApiClientException : Exception
method HttpApiClientException (line 28) | public HttpApiClientException()
method HttpApiClientException (line 32) | public HttpApiClientException(string message)
method HttpApiClientException (line 36) | public HttpApiClientException(string message, Exception innerException)
FILE: DnsServerCore.HttpApi/InvalidTokenHttpApiClientException.cs
class InvalidTokenHttpApiClientException (line 24) | public class InvalidTokenHttpApiClientException : HttpApiClientException
method InvalidTokenHttpApiClientException (line 28) | public InvalidTokenHttpApiClientException()
method InvalidTokenHttpApiClientException (line 32) | public InvalidTokenHttpApiClientException(string message)
method InvalidTokenHttpApiClientException (line 36) | public InvalidTokenHttpApiClientException(string message, Exception in...
FILE: DnsServerCore.HttpApi/Models/ClusterInfo.cs
class ClusterInfo (line 25) | public class ClusterInfo
class ClusterNodeInfo (line 36) | public class ClusterNodeInfo
FILE: DnsServerCore.HttpApi/Models/DashboardStats.cs
type DashboardStatsType (line 25) | public enum DashboardStatsType
type DashboardTopStatsType (line 36) | public enum DashboardTopStatsType
class DashboardStats (line 44) | public class DashboardStats
method Merge (line 55) | public void Merge(DashboardStats other, int limit)
class StatsData (line 82) | public class StatsData
method Merge (line 102) | public void Merge(StatsData statsData)
class ChartData (line 139) | public class ChartData
method Merge (line 144) | internal static ChartData Merge(ChartData x, ChartData y, bool sortB...
method Trim (line 254) | public void Trim(int limit)
class DataSet (line 273) | public class DataSet
method Trim (line 278) | public void Trim(int limit)
class TopStats (line 299) | public class TopStats
method GetTopList (line 304) | private static List<KeyValuePair<string, T>> GetTopList<T>(List<KeyV...
method Merge (line 317) | internal static T[] Merge<T>(T[] x, T[] y, int limit) where T : TopS...
class TopClientStats (line 353) | public class TopClientStats : TopStats
FILE: DnsServerCore.HttpApi/Models/SessionInfo.cs
class SessionInfo (line 24) | public class SessionInfo
class DetailedInfo (line 33) | public class DetailedInfo
class PermissionInfo (line 44) | public class PermissionInfo
FILE: DnsServerCore.HttpApi/TwoFactorAuthRequiredHttpApiClientException.cs
class TwoFactorAuthRequiredHttpApiClientException (line 24) | public class TwoFactorAuthRequiredHttpApiClientException : InvalidTokenH...
method TwoFactorAuthRequiredHttpApiClientException (line 28) | public TwoFactorAuthRequiredHttpApiClientException()
method TwoFactorAuthRequiredHttpApiClientException (line 32) | public TwoFactorAuthRequiredHttpApiClientException(string message)
method TwoFactorAuthRequiredHttpApiClientException (line 36) | public TwoFactorAuthRequiredHttpApiClientException(string message, Exc...
FILE: DnsServerCore/Auth/AuthManager.cs
class AuthManager (line 34) | sealed class AuthManager : IDisposable
method AuthManager (line 61) | public AuthManager(string configFolder, LogManager log)
method Dispose (line 97) | public void Dispose()
method LoadConfigFile (line 128) | private void LoadConfigFile()
method LoadOldConfig (line 197) | public void LoadOldConfig(string password, bool isPasswordHash)
method LoadConfig (line 216) | public void LoadConfig(Stream s, bool isConfigTransfer, UserSession im...
method SaveConfigFileInternal (line 259) | private void SaveConfigFileInternal()
method SaveConfigFile (line 280) | public void SaveConfigFile()
method ReadConfigFrom (line 292) | private void ReadConfigFrom(Stream s, bool isConfigTransfer)
method WriteConfigTo (line 405) | private void WriteConfigTo(Stream s)
method CreateDefaultConfig (line 447) | private void CreateDefaultConfig()
method AuthenticateUserAsync (line 520) | private async Task<User> AuthenticateUserAsync(string username, string...
method GetClientNetwork (line 572) | private static IPAddress GetClientNetwork(IPAddress address)
method MarkFailedLoginAttempt (line 587) | private void MarkFailedLoginAttempt(IPAddress network)
method HasLoginAttemptExceedLimit (line 595) | private bool HasLoginAttemptExceedLimit(IPAddress network, int limit)
method ResetFailedLoginAttempts (line 603) | private void ResetFailedLoginAttempts(IPAddress network)
method BlockNetwork (line 608) | private void BlockNetwork(IPAddress network, int interval)
method IsNetworkBlocked (line 613) | private bool IsNetworkBlocked(IPAddress network)
method UnblockNetwork (line 631) | private void UnblockNetwork(IPAddress network)
method GetUser (line 640) | public User GetUser(string username)
method CreateUser (line 648) | public User CreateUser(string displayName, string username, string pas...
method ChangeUsername (line 666) | public void ChangeUsername(User user, string newUsername)
method ChangePasswordAsync (line 683) | public async Task<User> ChangePasswordAsync(string username, string pa...
method DeleteUser (line 692) | public bool DeleteUser(string username)
method GetGroup (line 713) | public Group GetGroup(string name)
method GetGroupMembers (line 721) | public List<User> GetGroupMembers(Group group)
method SyncGroupMembers (line 734) | public void SyncGroupMembers(Group group, IReadOnlyDictionary<string, ...
method CreateGroup (line 748) | public Group CreateGroup(string name, string description)
method RenameGroup (line 761) | public void RenameGroup(Group group, string newGroupName)
method DeleteGroup (line 785) | public bool DeleteGroup(string name)
method GetSession (line 818) | public UserSession GetSession(string token)
method GetSessions (line 826) | public List<UserSession> GetSessions(User user)
method CreateSessionAsync (line 839) | public async Task<UserSession> CreateSessionAsync(UserSessionType type...
method CreateApiToken (line 853) | public UserSession CreateApiToken(string tokenName, string username, I...
method DeleteSession (line 872) | public UserSession DeleteSession(string token)
method GetPermission (line 880) | public Permission GetPermission(PermissionSection section)
method GetPermission (line 888) | public Permission GetPermission(PermissionSection section, string subI...
method SetPermission (line 896) | public void SetPermission(PermissionSection section, User user, Permis...
method SetPermission (line 906) | public void SetPermission(PermissionSection section, string subItemNam...
method SetPermission (line 916) | public void SetPermission(PermissionSection section, Group group, Perm...
method SetPermission (line 926) | public void SetPermission(PermissionSection section, string subItemNam...
method RemovePermission (line 936) | public bool RemovePermission(PermissionSection section, User user)
method RemovePermission (line 941) | public bool RemovePermission(PermissionSection section, string subItem...
method RemovePermission (line 946) | public bool RemovePermission(PermissionSection section, Group group)
method RemovePermission (line 951) | public bool RemovePermission(PermissionSection section, string subItem...
method RemoveAllPermissions (line 956) | public bool RemoveAllPermissions(PermissionSection section, string sub...
method IsPermitted (line 961) | public bool IsPermitted(PermissionSection section, User user, Permissi...
method IsPermitted (line 966) | public bool IsPermitted(PermissionSection section, string subItemName,...
FILE: DnsServerCore/Auth/Group.cs
class Group (line 26) | class Group : IComparable<Group>
method Group (line 42) | public Group(string name, string description)
method Group (line 48) | public Group(BinaryReader bR)
method WriteTo (line 66) | public void WriteTo(BinaryWriter bW)
method Equals (line 73) | public override bool Equals(object obj)
method GetHashCode (line 81) | public override int GetHashCode()
method ToString (line 86) | public override string ToString()
method CompareTo (line 91) | public int CompareTo(Group other)
FILE: DnsServerCore/Auth/Permission.cs
type PermissionSection (line 28) | enum PermissionSection : byte
type PermissionFlag (line 44) | [Flags]
class Permission (line 55) | class Permission : IComparable<Permission>
method Permission (line 71) | public Permission(PermissionSection section, string subItemName = null)
method Permission (line 82) | public Permission(BinaryReader bR, IReadOnlyDictionary<string, User> u...
method SetPermission (line 149) | public void SetPermission(User user, PermissionFlag flags)
method SyncPermissions (line 154) | public void SyncPermissions(IReadOnlyDictionary<User, PermissionFlag> ...
method SetSubItemPermission (line 168) | public void SetSubItemPermission(string subItemName, User user, Permis...
method SetPermission (line 178) | public void SetPermission(Group group, PermissionFlag flags)
method SyncPermissions (line 183) | public void SyncPermissions(IReadOnlyDictionary<Group, PermissionFlag>...
method SetSubItemPermission (line 197) | public void SetSubItemPermission(string subItemName, Group group, Perm...
method RemovePermission (line 207) | public bool RemovePermission(User user)
method RemoveSubItemPermission (line 212) | public bool RemoveSubItemPermission(string subItemName, User user)
method RemovePermission (line 217) | public bool RemovePermission(Group group)
method RemoveSubItemPermission (line 222) | public bool RemoveSubItemPermission(string subItemName, Group group)
method RemoveAllSubItemPermissions (line 227) | public bool RemoveAllSubItemPermissions(User user)
method RemoveAllSubItemPermissions (line 240) | public bool RemoveAllSubItemPermissions(Group group)
method RemoveAllSubItemPermissions (line 253) | public bool RemoveAllSubItemPermissions(string subItemName)
method GetSubItemPermission (line 258) | public Permission GetSubItemPermission(string subItemName)
method IsPermitted (line 266) | public bool IsPermitted(User user, PermissionFlag flag)
method IsSubItemPermitted (line 280) | public bool IsSubItemPermitted(string subItemName, User user, Permissi...
method WriteTo (line 285) | public void WriteTo(BinaryWriter bW)
method CompareTo (line 321) | public int CompareTo(Permission other)
FILE: DnsServerCore/Auth/User.cs
type UserPasswordHashType (line 33) | enum UserPasswordHashType : byte
class User (line 40) | class User : IComparable<User>
method User (line 68) | public User(string displayName, string username, string password, int ...
method User (line 81) | public User(BinaryReader bR, IReadOnlyDictionary<string, Group> groups)
method RenameGroup (line 133) | internal void RenameGroup(string oldName)
method GetPasswordHashFor (line 143) | public string GetPasswordHashFor(string password)
method ChangePassword (line 161) | public void ChangePassword(string newPassword, int iterations = DEFAUL...
method LoadOldSchemeCredentials (line 172) | public void LoadOldSchemeCredentials(string passwordHash)
method InitializedTOTP (line 178) | public AuthenticatorKeyUri InitializedTOTP(string issuer)
method EnableTOTP (line 188) | public void EnableTOTP(string totp)
method DisableTOTP (line 204) | public void DisableTOTP()
method LoggedInFrom (line 213) | public void LoggedInFrom(IPAddress remoteAddress)
method AddToGroup (line 225) | public void AddToGroup(Group group)
method RemoveFromGroup (line 233) | public bool RemoveFromGroup(Group group)
method SyncGroups (line 241) | public void SyncGroups(IReadOnlyDictionary<string, Group> groups)
method IsMemberOfGroup (line 255) | public bool IsMemberOfGroup(Group group)
method WriteTo (line 260) | public void WriteTo(BinaryWriter bW)
method Equals (line 290) | public override bool Equals(object obj)
method GetHashCode (line 298) | public override int GetHashCode()
method ToString (line 303) | public override string ToString()
method CompareTo (line 308) | public int CompareTo(User other)
FILE: DnsServerCore/Auth/UserSession.cs
type UserSessionType (line 30) | enum UserSessionType : byte
class UserSession (line 37) | class UserSession : IComparable<UserSession>
method UserSession (line 53) | public UserSession(UserSessionType type, string tokenName, User user, ...
method UserSession (line 76) | public UserSession(BinaryReader bR, IReadOnlyDictionary<string, User> ...
method UpdateUserObject (line 108) | public void UpdateUserObject(IReadOnlyDictionary<string, User> users)
method UpdateLastSeen (line 114) | public void UpdateLastSeen(IPAddress remoteAddress, string lastSeenUse...
method HasExpired (line 127) | public bool HasExpired()
method WriteTo (line 138) | public void WriteTo(BinaryWriter bW)
method CompareTo (line 159) | public int CompareTo(UserSession other)
FILE: DnsServerCore/Cluster/ClusterManager.cs
class ClusterManager (line 45) | sealed class ClusterManager : IDisposable
method ClusterManager (line 90) | public ClusterManager(DnsWebService dnsWebService)
method Dispose (line 127) | public void Dispose()
method LoadConfigFile (line 168) | public void LoadConfigFile()
method LoadConfig (line 196) | public void LoadConfig(Stream s)
method UpdateConfigRefreshTimer (line 218) | private void UpdateConfigRefreshTimer(int refreshInterval = CONFIG_REF...
method StopConfigRefreshTimer (line 235) | private void StopConfigRefreshTimer()
method SaveConfigFileInternal (line 249) | private void SaveConfigFileInternal()
method SaveConfigFile (line 273) | public void SaveConfigFile()
method UnloadAndDeleteConfigFile (line 288) | private void UnloadAndDeleteConfigFile()
method ReadConfigFrom (line 326) | private void ReadConfigFrom(Stream s)
method WriteConfigTo (line 366) | private void WriteConfigTo(Stream s)
method DisposeAllNodes (line 398) | private void DisposeAllNodes()
method InitializeHeartbeatTimerFor (line 408) | private static void InitializeHeartbeatTimerFor(IReadOnlyDictionary<in...
method UpdateHeartbeatTimerForAllClusterNodes (line 420) | private void UpdateHeartbeatTimerForAllClusterNodes()
method DeleteAllClusterConfig (line 435) | private void DeleteAllClusterConfig()
method InitializeCluster (line 483) | public void InitializeCluster(string clusterDomain, IReadOnlyList<IPAd...
method DeleteCluster (line 629) | public void DeleteCluster(bool forceDelete)
method JoinCluster (line 643) | public ClusterNode JoinCluster(int secondaryNodeId, Uri secondaryNodeU...
method AskSecondaryNodeToLeaveClusterAsync (line 703) | public async Task<ClusterNode> AskSecondaryNodeToLeaveClusterAsync(int...
method DeleteSecondaryNode (line 724) | public ClusterNode DeleteSecondaryNode(int secondaryNodeId)
method UpdateSecondaryNode (line 776) | public ClusterNode UpdateSecondaryNode(int secondaryNodeId, Uri second...
method TransferConfigAsync (line 832) | public Task TransferConfigAsync(Stream zipStream, DateTime ifModifiedS...
method UpdateClusterOptions (line 859) | public void UpdateClusterOptions(ushort heartbeatRefreshIntervalSecond...
method FindExistingRecordTtlValues (line 921) | private void FindExistingRecordTtlValues(out uint nsTtl, out uint aTtl)
method RemoveAllClusterPrimaryZoneNSRecords (line 956) | private void RemoveAllClusterPrimaryZoneNSRecords()
method RemoveClusterPrimaryZoneRecordsFor (line 962) | private void RemoveClusterPrimaryZoneRecordsFor(ClusterNode node)
method AddClusterPrimaryZoneRecordsFor (line 985) | private void AddClusterPrimaryZoneRecordsFor(ClusterNode node, uint ns...
method UpdateClusterRecordsFor (line 1080) | public void UpdateClusterRecordsFor(AuthZoneInfo zoneInfo)
method TriggerRecordUpdateForClusterCatalogMemberZones (line 1116) | private void TriggerRecordUpdateForClusterCatalogMemberZones()
method UpdateClusterCatalogZoneOptions (line 1159) | private void UpdateClusterCatalogZoneOptions()
method UpdateClusterCatalogZoneOptions (line 1170) | private void UpdateClusterCatalogZoneOptions(AuthZoneInfo clusterCatal...
method TriggerNotifyAllSecondaryNodesIfPrimarySelfNode (line 1213) | public void TriggerNotifyAllSecondaryNodesIfPrimarySelfNode()
method TriggerNotifyAllSecondaryNodes (line 1219) | public void TriggerNotifyAllSecondaryNodes(int notifyInterval = NOTIFY...
method NotifyAllSecondaryNodesTimerCallbackAsync (line 1228) | private async void NotifyAllSecondaryNodesTimerCallbackAsync(object st...
method InitializeAndJoinClusterAsync (line 1273) | public async Task InitializeAndJoinClusterAsync(IReadOnlyList<IPAddres...
method LeaveClusterAsync (line 1422) | public async Task LeaveClusterAsync(bool forceLeave)
method UpdatePrimaryNodeAsync (line 1447) | public async Task<ClusterNode> UpdatePrimaryNodeAsync(Uri primaryNodeU...
method TriggerRefreshForConfig (line 1541) | public void TriggerRefreshForConfig(IReadOnlyCollection<string> config...
method TriggerResyncForConfig (line 1555) | public void TriggerResyncForConfig()
method TriggerRefreshForConfig (line 1572) | private void TriggerRefreshForConfig(int refreshInterval, IReadOnlyCol...
method ConfigRefreshTimerCallbackAsync (line 1597) | private async void ConfigRefreshTimerCallbackAsync(object state)
method SyncConfigFromAsync (line 1645) | public async Task SyncConfigFromAsync(HttpApiClient primaryNodeApiClie...
method TriggerClusterUpdateForSecondaryNodeChanges (line 1701) | private void TriggerClusterUpdateForSecondaryNodeChanges()
method ClusterUpdateForSecondaryNodeChangesTimerCallbackAsync (line 1710) | private async void ClusterUpdateForSecondaryNodeChangesTimerCallbackAs...
method UpdateClusterFromPrimaryNode (line 1738) | public void UpdateClusterFromPrimaryNode(ClusterInfo primaryNodeCluste...
method PromoteToPrimaryNodeAsync (line 1873) | public async Task PromoteToPrimaryNodeAsync(bool forceDeletePrimary)
method GetPrimaryNode (line 1976) | public ClusterNode GetPrimaryNode()
method GetSelfNode (line 1991) | public ClusterNode GetSelfNode()
method TryGetClusterNode (line 2006) | public bool TryGetClusterNode(string nodeName, out ClusterNode cluster...
method IsClusterPrimaryZone (line 2021) | public bool IsClusterPrimaryZone(string zoneName)
method IsClusterCatalogZone (line 2026) | public bool IsClusterCatalogZone(string zoneName)
method UpdateSelfNodeIPAddresses (line 2031) | public ClusterNode UpdateSelfNodeIPAddresses(IReadOnlyList<IPAddress> ...
method UpdateSelfNodeUrlAndCertificate (line 2075) | public void UpdateSelfNodeUrlAndCertificate()
FILE: DnsServerCore/Cluster/ClusterNode.cs
type ClusterNodeType (line 37) | enum ClusterNodeType : byte
type ClusterNodeState (line 44) | enum ClusterNodeState : byte
class ClusterNode (line 52) | class ClusterNode : IComparable<ClusterNode>, IDisposable
method ClusterNode (line 75) | public ClusterNode(ClusterManager clusterManager, ClusterInfo.ClusterN...
method ClusterNode (line 95) | public ClusterNode(ClusterManager clusterManager, int id, Uri url, IRe...
method ClusterNode (line 115) | public ClusterNode(ClusterManager clusterManager, BinaryReader bR)
method Dispose (line 160) | public void Dispose()
method GetApiClient (line 189) | private HttpApiClient GetApiClient()
method HeartbeatTimerCallbackAsync (line 218) | private async void HeartbeatTimerCallbackAsync(object state)
method PromoteToPrimaryNode (line 263) | public void PromoteToPrimaryNode()
method UpdateSelfNodeIPAddresses (line 268) | public void UpdateSelfNodeIPAddresses(IReadOnlyList<IPAddress> ipAddre...
method UpdateSelfNodeUrl (line 279) | public void UpdateSelfNodeUrl()
method UpdateNode (line 295) | public void UpdateNode(Uri url, IReadOnlyList<IPAddress> ipAddresses)
method UpdateNode (line 327) | public void UpdateNode(ClusterInfo.ClusterNodeInfo nodeInfo)
method InitializeHeartbeatTimer (line 356) | public void InitializeHeartbeatTimer()
method UpdateHeartbeatTimer (line 370) | public void UpdateHeartbeatTimer()
method GetDashboardStatsAsync (line 378) | public async Task<DashboardStats> GetDashboardStatsAsync(User sessionU...
method GetDashboardTopStatsAsync (line 398) | public async Task<DashboardStats> GetDashboardTopStatsAsync(User sessi...
method SetClusterSettingsAsync (line 418) | public async Task SetClusterSettingsAsync(User sessionUser, IReadOnlyD...
method ForceUpdateBlockListsAsync (line 439) | public async Task ForceUpdateBlockListsAsync(User sessionUser, Cancell...
method TemporaryDisableBlockingAsync (line 457) | public async Task TemporaryDisableBlockingAsync(User sessionUser, int ...
method GetClusterStateAsync (line 475) | public async Task<ClusterInfo> GetClusterStateAsync(CancellationToken ...
method DeleteClusterAsync (line 495) | public async Task<ClusterInfo> DeleteClusterAsync(bool forceDelete = f...
method NotifySecondaryNodeAsync (line 518) | public async Task NotifySecondaryNodeAsync(ClusterNode primaryNode, Ca...
method SyncConfigAsync (line 542) | public async Task SyncConfigAsync(IReadOnlyCollection<string> includeZ...
method AskSecondaryNodeToLeaveClusterAsync (line 563) | public async Task AskSecondaryNodeToLeaveClusterAsync(CancellationToke...
method DeleteSecondaryNodeAsync (line 584) | public async Task DeleteSecondaryNodeAsync(ClusterNode secondaryNode, ...
method UpdateSecondaryNodeAsync (line 608) | public async Task<ClusterInfo> UpdateSecondaryNodeAsync(ClusterNode se...
method ProxyRequest (line 634) | public async Task ProxyRequest(HttpContext context, string actingUsern...
method WriteTo (line 652) | public void WriteTo(BinaryWriter bW)
method ToString (line 667) | public override string ToString()
method CompareTo (line 672) | public int CompareTo(ClusterNode other)
FILE: DnsServerCore/Cluster/InternalDnsClient.cs
class InternalDnsClient (line 31) | class InternalDnsClient : IDnsClient
method InternalDnsClient (line 43) | public InternalDnsClient(DnsServer dnsServer, ClusterNode clusterNode)
method InternalDnsClient (line 49) | public InternalDnsClient(DnsServer dnsServer, IReadOnlyList<IPAddress>...
method ResolveAsync (line 59) | public Task<DnsDatagram> ResolveAsync(DnsQuestionRecord question, Canc...
FILE: DnsServerCore/Dhcp/DhcpMessage.cs
type DhcpMessageOpCode (line 31) | enum DhcpMessageOpCode : byte
type DhcpMessageHardwareAddressType (line 37) | enum DhcpMessageHardwareAddressType : byte
type DhcpMessageFlags (line 42) | enum DhcpMessageFlags : ushort
class DhcpMessage (line 48) | class DhcpMessage
method DhcpMessage (line 96) | public DhcpMessage(DhcpMessageOpCode op, DhcpMessageHardwareAddressTyp...
method DhcpMessage (line 176) | public DhcpMessage(Stream s)
method CreateReply (line 281) | public static DhcpMessage CreateReply(DhcpMessage request, IPAddress y...
method ParseOptions (line 290) | private void ParseOptions(Stream s, List<DhcpOption> options)
method WriteTo (line 369) | public void WriteTo(Stream s)
method GetClientIdentifier (line 399) | public ClientIdentifierOption GetClientIdentifier(bool ignoreClientIde...
method GetClientFullIdentifier (line 412) | public string GetClientFullIdentifier()
FILE: DnsServerCore/Dhcp/DhcpOption.cs
type DhcpOptionCode (line 28) | public enum DhcpOptionCode : byte
class DhcpOption (line 113) | public class DhcpOption
method DhcpOption (line 124) | public DhcpOption(DhcpOptionCode code, string hexValue)
method DhcpOption (line 136) | public DhcpOption(DhcpOptionCode code, byte[] value)
method DhcpOption (line 144) | protected DhcpOption(DhcpOptionCode code, Stream s)
method DhcpOption (line 155) | protected DhcpOption(DhcpOptionCode code)
method CreateEndOption (line 164) | public static DhcpOption CreateEndOption()
method Parse (line 169) | public static DhcpOption Parse(Stream s)
method AppendOptionValue (line 265) | internal void AppendOptionValue(DhcpOption option)
method ParseOptionValue (line 275) | internal void ParseOptionValue()
method ParseOptionValue (line 290) | protected virtual void ParseOptionValue(Stream s)
method WriteOptionValue (line 293) | protected virtual void WriteOptionValue(Stream s)
method WriteTo (line 305) | public void WriteTo(Stream s)
FILE: DnsServerCore/Dhcp/DhcpServer.cs
class DhcpServer (line 51) | public sealed class DhcpServer : IDisposable
type ServiceState (line 55) | enum ServiceState
method DhcpServer (line 90) | public DhcpServer(string scopesFolder, LogManager log)
method Dispose (line 118) | public void Dispose()
method ReadUdpRequestAsync (line 143) | private async Task ReadUdpRequestAsync(Socket udpListener)
method ProcessDhcpRequestAsync (line 229) | private async Task ProcessDhcpRequestAsync(DhcpMessage request, IPEndP...
method ProcessDhcpMessageAsync (line 281) | private async Task<DhcpMessage> ProcessDhcpMessageAsync(DhcpMessage re...
method FindScope (line 623) | private Scope FindScope(DhcpMessage request, IPAddress remoteAddress, ...
method GetSanitizedHostName (line 695) | internal static string GetSanitizedHostName(string hostname)
method UpdateDnsAuthZone (line 720) | internal void UpdateDnsAuthZone(bool add, Scope scope, Lease lease)
method UpdateDnsAuthZone (line 725) | private void UpdateDnsAuthZone(bool add, Scope scope, string domain, I...
method BindUdpListener (line 920) | private void BindUdpListener(IPEndPoint dhcpEP)
method UnbindUdpListener (line 968) | private bool UnbindUdpListener(IPEndPoint dhcpEP)
method ActivateScopeAsync (line 987) | private async Task<bool> ActivateScopeAsync(Scope scope, bool waitForI...
method DeactivateScope (line 1087) | private bool DeactivateScope(Scope scope, bool throwException = false)
method LoadScopeAsync (line 1123) | private async Task LoadScopeAsync(Scope scope, bool waitForInterface)
method UnloadScope (line 1145) | private void UnloadScope(Scope scope)
method LoadAllScopeFiles (line 1158) | private void LoadAllScopeFiles()
method LoadScopeFileAsync (line 1168) | private async Task LoadScopeFileAsync(string scopeFile)
method SaveScopeFile (line 1184) | private void SaveScopeFile(Scope scope)
method DeleteScopeFile (line 1212) | private void DeleteScopeFile(string scopeName)
method SaveModifiedScopes (line 1228) | private void SaveModifiedScopes()
method StartMaintenanceTimer (line 1241) | private void StartMaintenanceTimer()
method StopMaintenanceTimer (line 1284) | private void StopMaintenanceTimer()
method Start (line 1293) | public void Start()
method Stop (line 1309) | public void Stop()
method AddScopeAsync (line 1328) | public async Task AddScopeAsync(Scope scope)
method GetScope (line 1334) | public Scope GetScope(string name)
method RenameScope (line 1342) | public void RenameScope(string oldName, string newName)
method DeleteScope (line 1359) | public void DeleteScope(string name)
method EnableScopeAsync (line 1368) | public async Task<bool> EnableScopeAsync(string name, bool throwExcept...
method DisableScope (line 1384) | public bool DisableScope(string name, bool throwException = false)
method SaveScope (line 1400) | public void SaveScope(string name)
method GetAddressHostNameMap (line 1406) | public IDictionary<string, string> GetAddressHostNameMap()
class UdpListener (line 1443) | class UdpListener
method UdpListener (line 1454) | public UdpListener(Socket socket)
method IncrementScopeCount (line 1463) | public void IncrementScopeCount()
method DecrementScopeCount (line 1468) | public void DecrementScopeCount()
FILE: DnsServerCore/Dhcp/DhcpServerException.cs
class DhcpServerException (line 24) | public class DhcpServerException : Exception
method DhcpServerException (line 28) | public DhcpServerException()
method DhcpServerException (line 32) | public DhcpServerException(string message)
method DhcpServerException (line 36) | public DhcpServerException(string message, Exception innerException)
FILE: DnsServerCore/Dhcp/Exclusion.cs
class Exclusion (line 26) | public class Exclusion
method Exclusion (line 37) | public Exclusion(IPAddress startingAddress, IPAddress endingAddress)
FILE: DnsServerCore/Dhcp/Lease.cs
type LeaseType (line 30) | public enum LeaseType : byte
class Lease (line 37) | public class Lease : IComparable<Lease>
method Lease (line 56) | internal Lease(LeaseType type, ClientIdentifierOption clientIdentifier...
method Lease (line 69) | internal Lease(LeaseType type, string hostName, DhcpMessageHardwareAdd...
method Lease (line 73) | internal Lease(LeaseType type, string hostName, DhcpMessageHardwareAdd...
method Lease (line 77) | internal Lease(BinaryReader bR)
method ParseHardwareAddress (line 115) | internal static byte[] ParseHardwareAddress(string hardwareAddress)
method ConvertToReserved (line 126) | internal void ConvertToReserved()
method ConvertToDynamic (line 131) | internal void ConvertToDynamic()
method SetHostName (line 136) | internal void SetHostName(string hostName)
method ExtendLease (line 145) | public void ExtendLease(uint leaseTime)
method WriteTo (line 150) | public void WriteTo(BinaryWriter bW)
method GetClientInfo (line 174) | public string GetClientInfo()
method CompareTo (line 184) | public int CompareTo(Lease other)
FILE: DnsServerCore/Dhcp/Options/BroadcastAddressOption.cs
class BroadcastAddressOption (line 26) | class BroadcastAddressOption : DhcpOption
method BroadcastAddressOption (line 36) | public BroadcastAddressOption(IPAddress broadcastAddress)
method BroadcastAddressOption (line 42) | public BroadcastAddressOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 59) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/CAPWAPAccessControllerOption.cs
class CAPWAPAccessControllerOption (line 27) | class CAPWAPAccessControllerOption : DhcpOption
method CAPWAPAccessControllerOption (line 37) | public CAPWAPAccessControllerOption(IReadOnlyCollection<IPAddress> apI...
method CAPWAPAccessControllerOption (line 43) | public CAPWAPAccessControllerOption(Stream s)
method ParseOptionValue (line 51) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 64) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/ClasslessStaticRouteOption.cs
class ClasslessStaticRouteOption (line 29) | public class ClasslessStaticRouteOption : DhcpOption
method ClasslessStaticRouteOption (line 39) | public ClasslessStaticRouteOption(IReadOnlyCollection<Route> routes)
method ClasslessStaticRouteOption (line 45) | public ClasslessStaticRouteOption(Stream s)
method ParseOptionValue (line 53) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 68) | protected override void WriteOptionValue(Stream s)
class Route (line 83) | public class Route
method Route (line 95) | public Route(IPAddress destination, IPAddress subnetMask, IPAddress ...
method Route (line 102) | public Route(Stream s)
method WriteTo (line 121) | public void WriteTo(Stream s)
FILE: DnsServerCore/Dhcp/Options/ClientFullyQualifiedDomainNameOption.cs
type ClientFullyQualifiedDomainNameFlags (line 28) | [Flags]
class ClientFullyQualifiedDomainNameOption (line 38) | class ClientFullyQualifiedDomainNameOption : DhcpOption
method ClientFullyQualifiedDomainNameOption (line 51) | public ClientFullyQualifiedDomainNameOption(ClientFullyQualifiedDomain...
method ClientFullyQualifiedDomainNameOption (line 60) | public ClientFullyQualifiedDomainNameOption(Stream s)
method ParseOptionValue (line 68) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 99) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/ClientIdentifierOption.cs
class ClientIdentifierOption (line 27) | public class ClientIdentifierOption : DhcpOption, IEquatable<ClientIdent...
method ClientIdentifierOption (line 38) | public ClientIdentifierOption(byte type, byte[] identifier)
method ClientIdentifierOption (line 45) | public ClientIdentifierOption(Stream s)
method Parse (line 53) | public static ClientIdentifierOption Parse(string clientIdentifier)
method ParseOptionValue (line 63) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 76) | protected override void WriteOptionValue(Stream s)
method Equals (line 86) | public override bool Equals(object obj)
method Equals (line 97) | public bool Equals(ClientIdentifierOption other)
method GetHashCode (line 117) | public override int GetHashCode()
method ToString (line 122) | public override string ToString()
FILE: DnsServerCore/Dhcp/Options/DhcpMessageTypeOption.cs
type DhcpMessageType (line 24) | enum DhcpMessageType : byte
class DhcpMessageTypeOption (line 37) | class DhcpMessageTypeOption : DhcpOption
method DhcpMessageTypeOption (line 47) | public DhcpMessageTypeOption(DhcpMessageType type)
method DhcpMessageTypeOption (line 53) | public DhcpMessageTypeOption(Stream s)
method ParseOptionValue (line 61) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 73) | protected override void WriteOptionValue(Stream s)
method ToString (line 82) | public override string ToString()
FILE: DnsServerCore/Dhcp/Options/DomainNameOption.cs
class DomainNameOption (line 26) | class DomainNameOption : DhcpOption
method DomainNameOption (line 36) | public DomainNameOption(string domainName)
method DomainNameOption (line 42) | public DomainNameOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 58) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/DomainNameServerOption.cs
class DomainNameServerOption (line 27) | class DomainNameServerOption : DhcpOption
method DomainNameServerOption (line 37) | public DomainNameServerOption(IReadOnlyCollection<IPAddress> addresses)
method DomainNameServerOption (line 43) | public DomainNameServerOption(Stream s)
method ParseOptionValue (line 51) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 64) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/DomainSearchOption.cs
class DomainSearchOption (line 26) | class DomainSearchOption : DhcpOption
method DomainSearchOption (line 36) | public DomainSearchOption(IReadOnlyCollection<string> searchStrings)
method DomainSearchOption (line 42) | public DomainSearchOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 63) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/HostNameOption.cs
class HostNameOption (line 26) | class HostNameOption : DhcpOption
method HostNameOption (line 36) | public HostNameOption(string hostName)
method HostNameOption (line 42) | public HostNameOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 58) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/IpAddressLeaseTimeOption.cs
class IpAddressLeaseTimeOption (line 26) | class IpAddressLeaseTimeOption : DhcpOption
method IpAddressLeaseTimeOption (line 36) | public IpAddressLeaseTimeOption(uint leaseTime)
method IpAddressLeaseTimeOption (line 42) | public IpAddressLeaseTimeOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 60) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/MaximumDhcpMessageSizeOption.cs
class MaximumDhcpMessageSizeOption (line 26) | class MaximumDhcpMessageSizeOption : DhcpOption
method MaximumDhcpMessageSizeOption (line 36) | public MaximumDhcpMessageSizeOption(ushort length)
method MaximumDhcpMessageSizeOption (line 45) | public MaximumDhcpMessageSizeOption(Stream s)
method ParseOptionValue (line 53) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 66) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/NetBiosNameServerOption.cs
class NetBiosNameServerOption (line 27) | class NetBiosNameServerOption : DhcpOption
method NetBiosNameServerOption (line 37) | public NetBiosNameServerOption(IReadOnlyCollection<IPAddress> addresses)
method NetBiosNameServerOption (line 43) | public NetBiosNameServerOption(Stream s)
method ParseOptionValue (line 51) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 64) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/NetworkTimeProtocolServersOption.cs
class NetworkTimeProtocolServersOption (line 27) | class NetworkTimeProtocolServersOption : DhcpOption
method NetworkTimeProtocolServersOption (line 37) | public NetworkTimeProtocolServersOption(IReadOnlyCollection<IPAddress>...
method NetworkTimeProtocolServersOption (line 43) | public NetworkTimeProtocolServersOption(Stream s)
method ParseOptionValue (line 51) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 64) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/OptionOverloadOption.cs
type OptionOverloadValue (line 25) | [Flags]
class OptionOverloadOption (line 33) | class OptionOverloadOption : DhcpOption
method OptionOverloadOption (line 43) | public OptionOverloadOption(OptionOverloadValue value)
method OptionOverloadOption (line 49) | public OptionOverloadOption(Stream s)
method ParseOptionValue (line 57) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 69) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/ParameterRequestListOption.cs
class ParameterRequestListOption (line 24) | class ParameterRequestListOption : DhcpOption
method ParameterRequestListOption (line 34) | public ParameterRequestListOption(DhcpOptionCode[] optionCodes)
method ParameterRequestListOption (line 40) | public ParameterRequestListOption(Stream s)
method ParseOptionValue (line 48) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 66) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/RebindingTimeValueOption.cs
class RebindingTimeValueOption (line 26) | class RebindingTimeValueOption : DhcpOption
method RebindingTimeValueOption (line 36) | public RebindingTimeValueOption(uint t2Interval)
method RebindingTimeValueOption (line 42) | public RebindingTimeValueOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 60) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/RenewalTimeValueOption.cs
class RenewalTimeValueOption (line 26) | class RenewalTimeValueOption : DhcpOption
method RenewalTimeValueOption (line 36) | public RenewalTimeValueOption(uint t1Interval)
method RenewalTimeValueOption (line 42) | public RenewalTimeValueOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 60) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/RequestedIpAddressOption.cs
class RequestedIpAddressOption (line 26) | class RequestedIpAddressOption : DhcpOption
method RequestedIpAddressOption (line 36) | public RequestedIpAddressOption(IPAddress address)
method RequestedIpAddressOption (line 42) | public RequestedIpAddressOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 58) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/RouterOption.cs
class RouterOption (line 26) | class RouterOption : DhcpOption
method RouterOption (line 36) | public RouterOption(IPAddress[] addresses)
method RouterOption (line 42) | public RouterOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 61) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/ServerIdentifierOption.cs
class ServerIdentifierOption (line 26) | class ServerIdentifierOption : DhcpOption
method ServerIdentifierOption (line 36) | public ServerIdentifierOption(IPAddress address)
method ServerIdentifierOption (line 42) | public ServerIdentifierOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 58) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/SubnetMaskOption.cs
class SubnetMaskOption (line 26) | class SubnetMaskOption : DhcpOption
method SubnetMaskOption (line 36) | public SubnetMaskOption(IPAddress subnetMask)
method SubnetMaskOption (line 42) | public SubnetMaskOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 58) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/TftpServerAddressOption.cs
class TftpServerAddressOption (line 27) | class TftpServerAddressOption : DhcpOption
method TftpServerAddressOption (line 37) | public TftpServerAddressOption(IReadOnlyCollection<IPAddress> addresses)
method TftpServerAddressOption (line 43) | public TftpServerAddressOption(Stream s)
method ParseOptionValue (line 51) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 64) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/VendorClassIdentifierOption.cs
class VendorClassIdentifierOption (line 26) | class VendorClassIdentifierOption : DhcpOption
method VendorClassIdentifierOption (line 36) | public VendorClassIdentifierOption(string identifier)
method VendorClassIdentifierOption (line 42) | public VendorClassIdentifierOption(Stream s)
method ParseOptionValue (line 50) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 55) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Options/VendorSpecificInformationOption.cs
class VendorSpecificInformationOption (line 27) | public class VendorSpecificInformationOption : DhcpOption
method VendorSpecificInformationOption (line 37) | public VendorSpecificInformationOption(string hexInfo)
method VendorSpecificInformationOption (line 46) | public VendorSpecificInformationOption(byte[] information)
method VendorSpecificInformationOption (line 52) | public VendorSpecificInformationOption(Stream s)
method ParseOptionValue (line 60) | protected override void ParseOptionValue(Stream s)
method WriteOptionValue (line 65) | protected override void WriteOptionValue(Stream s)
FILE: DnsServerCore/Dhcp/Scope.cs
class Scope (line 41) | public sealed class Scope : IComparable<Scope>, IDisposable
method Scope (line 111) | public Scope(string name, bool enabled, IPAddress startingAddress, IPA...
method Scope (line 124) | public Scope(Stream s, LogManager log, DhcpServer dhcpServer)
method Dispose (line 416) | public void Dispose()
method ValidateScopeName (line 431) | internal static void ValidateScopeName(string name)
method IsAddressInRange (line 440) | private static bool IsAddressInRange(IPAddress address, IPAddress star...
method ValidateIpv4 (line 449) | private static void ValidateIpv4(IReadOnlyCollection<IPAddress> value,...
method ValidateIpv4 (line 461) | private static void ValidateIpv4(IPAddress value, string paramName)
method IsAddressAvailableAsync (line 471) | private async Task<AddressStatus> IsAddressAvailableAsync(IPAddress ad...
method IsAddressAlreadyAllocated (line 535) | private bool IsAddressAlreadyAllocated(IPAddress address, ClientIdenti...
method GetClientFullyQualifiedDomainNameOption (line 552) | private ClientFullyQualifiedDomainNameOption GetClientFullyQualifiedDo...
method ConvertToReservedLease (line 611) | private void ConvertToReservedLease(Lease lease)
method ConvertToDynamicLease (line 621) | private void ConvertToDynamicLease(Lease lease)
method FindInterface (line 667) | internal bool FindInterface()
method FindThisDnsServerAddress (line 756) | internal void FindThisDnsServerAddress()
method GetLeaseTime (line 881) | internal uint GetLeaseTime()
method IsAddressInRange (line 886) | internal bool IsAddressInRange(IPAddress address)
method IsAddressInNetwork (line 891) | internal bool IsAddressInNetwork(IPAddress address)
method IsAddressExcluded (line 900) | internal bool IsAddressExcluded(IPAddress address)
method IsAddressReserved (line 914) | internal bool IsAddressReserved(IPAddress address)
method GetReservedLease (line 925) | internal Lease GetReservedLease(DhcpMessage request)
method GetReservedLease (line 930) | private Lease GetReservedLease(ClientIdentifierOption reservedLeasesCl...
method GetOfferAsync (line 949) | internal async Task<Lease> GetOfferAsync(DhcpMessage request)
method GetExistingLeaseOrOffer (line 1096) | internal Lease GetExistingLeaseOrOffer(DhcpMessage request)
method GetOptionsAsync (line 1110) | internal async Task<List<DhcpOption>> GetOptionsAsync(DhcpMessage requ...
method GetNetworkTimeProtocolServersOptionAsync (line 1325) | private async Task<NetworkTimeProtocolServersOption> GetNetworkTimePro...
method CommitLease (line 1358) | internal void CommitLease(Lease lease)
method ReleaseLease (line 1368) | internal void ReleaseLease(Lease lease)
method SetEnabled (line 1375) | internal void SetEnabled(bool enabled)
method RemoveExpiredOffers (line 1386) | internal void RemoveExpiredOffers()
method RemoveExpiredLeases (line 1400) | internal List<Lease> RemoveExpiredLeases()
method ChangeNetwork (line 1425) | public void ChangeNetwork(IPAddress startingAddress, IPAddress endingA...
method AddReservedLease (line 1471) | public bool AddReservedLease(Lease reservedLease)
method RemoveReservedLease (line 1476) | public bool RemoveReservedLease(string hardwareAddress)
method RemoveLease (line 1484) | public Lease RemoveLease(string hardwareAddress)
method RemoveLease (line 1497) | public Lease RemoveLease(ClientIdentifierOption clientIdentifier)
method ConvertToReservedLease (line 1520) | public void ConvertToReservedLease(string hardwareAddress)
method ConvertToReservedLease (line 1538) | public void ConvertToReservedLease(ClientIdentifierOption clientIdenti...
method ConvertToDynamicLease (line 1546) | public void ConvertToDynamicLease(string hardwareAddress)
method ConvertToDynamicLease (line 1564) | public void ConvertToDynamicLease(ClientIdentifierOption clientIdentif...
method WriteTo (line 1572) | public void WriteTo(Stream s)
method Equals (line 1785) | public override bool Equals(object obj)
method Equals (line 1796) | public bool Equals(Scope other)
method GetHashCode (line 1810) | public override int GetHashCode()
method ToString (line 1815) | public override string ToString()
method CompareTo (line 1820) | public int CompareTo(Scope other)
class AddressStatus (line 2195) | class AddressStatus
method AddressStatus (line 2203) | public AddressStatus(bool isAddressAvailable, IPAddress newAddress)
FILE: DnsServerCore/Dns/Applications/DnsApplication.cs
class DnsApplication (line 29) | public sealed class DnsApplication : IDisposable
method DnsApplication (line 61) | public DnsApplication(IDnsServer dnsServer, string name)
method Dispose (line 171) | private void Dispose(bool disposing)
method Dispose (line 191) | public void Dispose()
method InitializeAsync (line 200) | internal async Task InitializeAsync()
method GetConfigAsync (line 221) | public Task<string> GetConfigAsync()
method SetConfigAsync (line 231) | public async Task SetConfigAsync(string config)
FILE: DnsServerCore/Dns/Applications/DnsApplicationAssemblyLoadContext.cs
class DnsApplicationAssemblyLoadContext (line 30) | class DnsApplicationAssemblyLoadContext : AssemblyLoadContext
method DnsApplicationAssemblyLoadContext (line 46) | public DnsApplicationAssemblyLoadContext(IDnsServer dnsServer)
method Load (line 113) | protected override Assembly Load(AssemblyName assemblyName)
method LoadUnmanagedDll (line 136) | protected override IntPtr LoadUnmanagedDll(string unmanagedDllName)
method GetTempDllFile (line 220) | private string GetTempDllFile(string dllFile)
method FindUnmanagedDllPath (line 237) | private string FindUnmanagedDllPath(string unmanagedDllName, string ru...
FILE: DnsServerCore/Dns/Applications/DnsApplicationManager.cs
class DnsApplicationManager (line 36) | public sealed class DnsApplicationManager : IDisposable
method DnsApplicationManager (line 66) | public DnsApplicationManager(DnsServer dnsServer)
method Dispose (line 82) | private void Dispose(bool disposing)
method Dispose (line 98) | public void Dispose()
method LoadApplicationAsync (line 107) | private async Task<DnsApplication> LoadApplicationAsync(string applica...
method UnloadApplication (line 129) | private void UnloadApplication(string applicationName)
method Application_ConfigUpdated (line 140) | private void Application_ConfigUpdated(object sender, EventArgs e)
method RefreshAppObjectLists (line 146) | private void RefreshAppObjectLists()
method CompareApps (line 186) | private static int CompareApps<T>(T x, T y)
method StartAutomaticUpdate (line 204) | private void StartAutomaticUpdate()
method StopAutomaticUpdate (line 281) | private void StopAutomaticUpdate()
method GetStoreAppsJsonData (line 290) | internal async Task<string> GetStoreAppsJsonData()
method UnloadAllApplications (line 313) | public void UnloadAllApplications()
method LoadAllApplicationsAsync (line 335) | public async Task LoadAllApplicationsAsync()
method InstallApplicationAsync (line 365) | public async Task<DnsApplication> InstallApplicationAsync(string appli...
method UpdateApplicationAsync (line 409) | public async Task<DnsApplication> UpdateApplicationAsync(string applic...
method UninstallApplication (line 449) | public void UninstallApplication(string applicationName)
method DownloadAndInstallAppAsync (line 472) | public async Task<DnsApplication> DownloadAndInstallAppAsync(string ap...
method DownloadAndUpdateAppAsync (line 511) | public async Task<DnsApplication> DownloadAndUpdateAppAsync(string app...
FILE: DnsServerCore/Dns/Applications/InternalDnsServer.cs
class InternalDnsServer (line 30) | class InternalDnsServer : IDnsServer
method InternalDnsServer (line 44) | public InternalDnsServer(DnsServer dnsServer, string applicationName, ...
method DirectQueryAsync (line 55) | public Task<DnsDatagram> DirectQueryAsync(DnsQuestionRecord question, ...
method DirectQueryAsync (line 60) | public Task<DnsDatagram> DirectQueryAsync(DnsDatagram request, int tim...
method ResolveAsync (line 65) | public Task<DnsDatagram> ResolveAsync(DnsQuestionRecord question, Canc...
method WriteLog (line 70) | public void WriteLog(string message)
method WriteLog (line 75) | public void WriteLog(Exception ex)
FILE: DnsServerCore/Dns/DirectDnsClient.cs
class DirectDnsClient (line 27) | class DirectDnsClient : DnsClient, IDnsCache
method DirectDnsClient (line 37) | public DirectDnsClient(DnsServer dnsServer)
method InternalResolveAsync (line 50) | protected override async Task<DnsDatagram> InternalResolveAsync(DnsDat...
method QueryAsync (line 62) | public Task<DnsDatagram> QueryAsync(DnsDatagram request, bool serveSta...
method CacheResponse (line 67) | public void CacheResponse(DnsDatagram response, bool isDnssecBadCache ...
FILE: DnsServerCore/Dns/DnsServer.cs
type DnsServerRecursion (line 66) | public enum DnsServerRecursion : byte
type DnsServerBlockingType (line 74) | public enum DnsServerBlockingType : byte
class DnsServer (line 81) | public sealed class DnsServer : IAsyncDisposable, IDisposable, IDnsClient
type ServiceState (line 85) | enum ServiceState
method DnsServer (line 276) | static DnsServer()
method DnsServer (line 294) | public DnsServer(string configFolder, string dohwwwFolder, LogManager ...
method DnsServer (line 298) | public DnsServer(string configFolder, string dohwwwFolder, IPEndPoint ...
method DnsServer (line 302) | public DnsServer(string configFolder, string dohwwwFolder, IReadOnlyLi...
method DisposeAsync (line 376) | public async ValueTask DisposeAsync()
method Dispose (line 438) | public void Dispose()
method LoadConfigFile (line 447) | public void LoadConfigFile()
method LoadConfig (line 577) | public void LoadConfig(Stream s, bool isConfigTransfer)
method SaveConfigFileInternal (line 594) | internal void SaveConfigFileInternal()
method SaveConfigFile (line 615) | public void SaveConfigFile()
method ReadConfigFrom (line 627) | private void ReadConfigFrom(Stream s, bool isConfigTransfer)
method WriteConfigTo (line 1083) | private void WriteConfigTo(Stream s)
method StartTlsCertificateUpdateTimer (line 1368) | private void StartTlsCertificateUpdateTimer()
method StopTlsCertificateUpdateTimer (line 1395) | private void StopTlsCertificateUpdateTimer()
method LoadDnsTlsCertificate (line 1404) | private void LoadDnsTlsCertificate(string tlsCertificatePath, string t...
method RemoveDnsTlsCertificate (line 1470) | public void RemoveDnsTlsCertificate()
method SetDnsTlsCertificate (line 1482) | public void SetDnsTlsCertificate(string dnsTlsCertificatePath, string ...
method ConvertToRelativePath (line 1510) | private string ConvertToRelativePath(string path)
method ConvertToAbsolutePath (line 1518) | private string ConvertToAbsolutePath(string path)
method ReadUdpRequestAsync (line 1533) | private async Task ReadUdpRequestAsync(Socket udpListener, DnsTranspor...
method ProcessUdpRequestAsync (line 1680) | private async Task ProcessUdpRequestAsync(Socket udpListener, IPEndPoi...
method AcceptConnectionAsync (line 1792) | private async Task AcceptConnectionAsync(Socket tcpListener, DnsTransp...
method ProcessConnectionAsync (line 1829) | private async Task ProcessConnectionAsync(Socket socket, DnsTransportP...
method ReadStreamRequestAsync (line 1909) | private async Task ReadStreamRequestAsync(Stream stream, IPEndPoint re...
method ProcessStreamRequestAsync (line 1963) | private async Task ProcessStreamRequestAsync(Stream stream, MemoryStre...
method AcceptQuicConnectionAsync (line 2012) | private async Task AcceptQuicConnectionAsync(QuicListener quicListener)
method ProcessQuicConnectionAsync (line 2050) | private async Task ProcessQuicConnectionAsync(QuicConnection quicConne...
method ProcessQuicStreamRequestAsync (line 2098) | private async Task ProcessQuicStreamRequestAsync(QuicStream quicStream...
method ProcessDoHRequestAsync (line 2155) | private async Task ProcessDoHRequestAsync(HttpContext context)
method IsRecursionAllowed (line 2314) | private bool IsRecursionAllowed(IPAddress remoteIP)
method ProcessRequestAsync (line 2340) | private async Task<DnsDatagram> ProcessRequestAsync(DnsDatagram reques...
method PostProcessQueryAsync (line 2406) | private async Task<DnsDatagram> PostProcessQueryAsync(DnsDatagram requ...
method ProcessQueryAsync (line 2455) | private async Task<DnsDatagram> ProcessQueryAsync(DnsDatagram request,...
method ProcessNotifyQueryAsync (line 2540) | private async Task<DnsDatagram> ProcessNotifyQueryAsync(DnsDatagram re...
method ProcessUpdateQueryAsync (line 2599) | private async Task<DnsDatagram> ProcessUpdateQueryAsync(DnsDatagram re...
method ProcessZoneTransferQueryAsync (line 3197) | private async Task<DnsDatagram> ProcessZoneTransferQueryAsync(DnsDatag...
method ProcessAuthoritativeQueryAsync (line 3359) | private async Task<DnsDatagram> ProcessAuthoritativeQueryAsync(DnsData...
method AuthoritativeQueryAsync (line 3424) | internal async Task<DnsDatagram> AuthoritativeQueryAsync(DnsDatagram r...
method ProcessAPPAsync (line 3506) | private async Task<DnsDatagram> ProcessAPPAsync(DnsDatagram request, D...
method ProcessCNAMEAsync (line 3581) | private async Task<DnsDatagram> ProcessCNAMEAsync(DnsDatagram request,...
method ProcessANAMEAsync (line 3786) | private async Task<DnsDatagram> ProcessANAMEAsync(DnsDatagram request,...
method IsAllowedAsync (line 3966) | private async Task<bool> IsAllowedAsync(DnsDatagram request, IPEndPoin...
method ProcessBlockedQueryAsync (line 4012) | private async Task<DnsDatagram> ProcessBlockedQueryAsync(DnsDatagram r...
method ProcessRecursiveQueryAsync (line 4171) | private async Task<DnsDatagram> ProcessRecursiveQueryAsync(DnsDatagram...
method RecursiveResolveAsync (line 4263) | private async Task<DnsDatagram> RecursiveResolveAsync(DnsDatagram requ...
method RecursiveResolverBackgroundTaskAsync (line 4484) | private async Task RecursiveResolverBackgroundTaskAsync(DnsQuestionRec...
method DefaultRecursiveResolveAsync (line 4668) | private async Task<DnsDatagram> DefaultRecursiveResolveAsync(DnsQuesti...
method PriorityConditionalForwarderResolveAsync (line 4810) | internal async Task<DnsDatagram> PriorityConditionalForwarderResolveAs...
method ConcurrentConditionalForwarderResolveAsync (line 4972) | private async Task<DnsDatagram> ConcurrentConditionalForwarderResolveA...
method ConditionalForwarderResolveAsync (line 5052) | private Task<DnsDatagram> ConditionalForwarderResolveAsync(DnsQuestion...
method PrepareRecursiveResolveResponse (line 5081) | private DnsDatagram PrepareRecursiveResolveResponse(DnsDatagram reques...
method FilterDnssecRecords (line 5378) | private static IReadOnlyList<DnsResourceRecord> FilterDnssecRecords(IR...
method RemoveOPTFromAdditional (line 5411) | private static IReadOnlyList<DnsResourceRecord> RemoveOPTFromAdditiona...
method GetResolverQueryKey (line 5442) | private static string GetResolverQueryKey(DnsQuestionRecord question, ...
method QueryCacheAsync (line 5450) | private async Task<DnsDatagram> QueryCacheAsync(DnsDatagram request, b...
method PrefetchCacheAsync (line 5466) | private async Task PrefetchCacheAsync(DnsQuestionRecord question, IPEn...
method RefreshCacheAsync (line 5479) | private async Task RefreshCacheAsync(DnsQuestionRecord neededQuestion,...
method GetCacheRefreshNeededQueryAsync (line 5497) | private async Task<DnsQuestionRecord> GetCacheRefreshNeededQueryAsync(...
method CachePrefetchSamplingTimerCallback (line 5520) | private async void CachePrefetchSamplingTimerCallback(object state)
method CachePrefetchRefreshTimerCallback (line 5622) | private async void CachePrefetchRefreshTimerCallback(object state)
method ResetPrefetchTimers (line 5668) | private void ResetPrefetchTimers()
method IsQpmLimitBypassed (line 5696) | private bool IsQpmLimitBypassed(IPAddress remoteIP)
method HasQpmLimitExceeded (line 5713) | private bool HasQpmLimitExceeded(NetworkAddress clientSubnet, DnsTrans...
method HasQpmLimitExceeded (line 5733) | internal bool HasQpmLimitExceeded(IPAddress remoteIP, DnsTransportProt...
method QpmLimitSamplingTimerCallback (line 5771) | private void QpmLimitSamplingTimerCallback(object state)
method WriteClientSubnetRateLimitLog (line 5794) | private void WriteClientSubnetRateLimitLog(IReadOnlyDictionary<Network...
method SendQpmLimitExceededTruncationResponse (line 5894) | private bool SendQpmLimitExceededTruncationResponse()
method ResetQpsLimitTimer (line 5910) | private void ResetQpsLimitTimer()
method UpdateThisServer (line 5930) | private void UpdateThisServer()
method TryQueueResolverTask (line 5954) | internal bool TryQueueResolverTask(Func<object, Task> task, object sta...
method ReconfigureResolverTaskPool (line 5959) | private void ReconfigureResolverTaskPool(ushort maxConcurrentResolutio...
method StartDoHAsync (line 5974) | private async Task StartDoHAsync(bool throwIfBindFails)
method StopDoHAsync (line 6085) | private async Task StopDoHAsync()
method IsHttp2Supported (line 6102) | private bool IsHttp2Supported()
method StartAsync (line 6124) | public async Task StartAsync(bool throwIfBindFails = false)
method StopAsync (line 6455) | public async Task StopAsync()
method DirectQueryAsync (line 6573) | public Task<DnsDatagram> DirectQueryAsync(DnsQuestionRecord question, ...
method DirectQueryAsync (line 6578) | public Task<DnsDatagram> DirectQueryAsync(DnsDatagram request, int tim...
method ResolveAsync (line 6586) | Task<DnsDatagram> IDnsClient.ResolveAsync(DnsQuestionRecord question, ...
class CacheRefreshSample (line 7593) | class CacheRefreshSample
method CacheRefreshSample (line 7595) | public CacheRefreshSample(DnsQuestionRecord sampleQuestion, IReadOnl...
class RecursiveResolveResponse (line 7606) | class RecursiveResolveResponse
method RecursiveResolveResponse (line 7608) | public RecursiveResolveResponse(DnsDatagram response, DnsDatagram ch...
FILE: DnsServerCore/Dns/DnsServerException.cs
class DnsServerException (line 24) | public class DnsServerException : Exception
method DnsServerException (line 28) | public DnsServerException()
method DnsServerException (line 32) | public DnsServerException(string message)
method DnsServerException (line 36) | public DnsServerException(string message, Exception innerException)
FILE: DnsServerCore/Dns/Dnssec/DnssecEcdsaPrivateKey.cs
class DnssecEcdsaPrivateKey (line 28) | class DnssecEcdsaPrivateKey : DnssecPrivateKey
method DnssecEcdsaPrivateKey (line 38) | public DnssecEcdsaPrivateKey(DnssecAlgorithm algorithm, DnssecPrivateK...
method DnssecEcdsaPrivateKey (line 46) | public DnssecEcdsaPrivateKey(DnssecAlgorithm algorithm, BinaryReader b...
method InitDnsKey (line 56) | private void InitDnsKey()
method SignHash (line 71) | protected override byte[] SignHash(byte[] hash)
method ReadPrivateKeyFrom (line 79) | protected override void ReadPrivateKeyFrom(BinaryReader bR)
method WritePrivateKeyTo (line 100) | protected override void WritePrivateKeyTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/Dnssec/DnssecEddsaPrivateKey.cs
class DnssecEddsaPrivateKey (line 31) | class DnssecEddsaPrivateKey : DnssecPrivateKey
method DnssecEddsaPrivateKey (line 42) | public DnssecEddsaPrivateKey(DnssecPrivateKeyType keyType, Ed25519Priv...
method DnssecEddsaPrivateKey (line 50) | public DnssecEddsaPrivateKey(DnssecPrivateKeyType keyType, Ed448Privat...
method DnssecEddsaPrivateKey (line 58) | public DnssecEddsaPrivateKey(DnssecAlgorithm algorithm, BinaryReader b...
method InitDnsKey (line 68) | private void InitDnsKey()
method SignHash (line 86) | protected override byte[] SignHash(byte[] hash)
method ReadPrivateKeyFrom (line 111) | protected override void ReadPrivateKeyFrom(BinaryReader bR)
method WritePrivateKeyTo (line 128) | protected override void WritePrivateKeyTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/Dnssec/DnssecPrivateKey.cs
type DnssecPrivateKeyType (line 37) | public enum DnssecPrivateKeyType : byte
type DnssecPrivateKeyState (line 44) | public enum DnssecPrivateKeyState : byte
class DnssecPrivateKey (line 129) | public abstract class DnssecPrivateKey
method DnssecPrivateKey (line 148) | protected DnssecPrivateKey(DnssecAlgorithm algorithm, DnssecPrivateKey...
method DnssecPrivateKey (line 157) | protected DnssecPrivateKey(DnssecAlgorithm algorithm, BinaryReader bR,...
method Create (line 178) | public static DnssecPrivateKey Create(DnssecAlgorithm algorithm, Dnsse...
method Create (line 218) | public static DnssecPrivateKey Create(DnssecAlgorithm algorithm, Dnsse...
method ReadFrom (line 282) | public static DnssecPrivateKey ReadFrom(BinaryReader bR)
method InitDnsKey (line 323) | protected void InitDnsKey(DnssecPublicKey publicKey)
method SignHash (line 336) | protected abstract byte[] SignHash(byte[] hash);
method ReadPrivateKeyFrom (line 338) | protected abstract void ReadPrivateKeyFrom(BinaryReader bR);
method WritePrivateKeyTo (line 340) | protected abstract void WritePrivateKeyTo(BinaryWriter bW);
method SignRRSet (line 346) | internal DnsResourceRecord SignRRSet(string signersName, IReadOnlyList...
method SetState (line 360) | internal void SetState(DnssecPrivateKeyState state, uint stateTransiti...
method SetToRetire (line 377) | internal void SetToRetire()
method IsRolloverNeeded (line 382) | internal bool IsRolloverNeeded()
method WriteTo (line 387) | internal void WriteTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/Dnssec/DnssecRsaPrivateKey.cs
class DnssecRsaPrivateKey (line 28) | class DnssecRsaPrivateKey : DnssecPrivateKey
method DnssecRsaPrivateKey (line 40) | public DnssecRsaPrivateKey(DnssecAlgorithm algorithm, DnssecPrivateKey...
method DnssecRsaPrivateKey (line 50) | public DnssecRsaPrivateKey(DnssecAlgorithm algorithm, BinaryReader bR,...
method InitDnsKey (line 61) | private void InitDnsKey()
method SignHash (line 76) | protected override byte[] SignHash(byte[] hash)
method ReadPrivateKeyFrom (line 84) | protected override void ReadPrivateKeyFrom(BinaryReader bR)
method WritePrivateKeyTo (line 98) | protected override void WritePrivateKeyTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/ResolverDnsCache.cs
class ResolverDnsCache (line 32) | class ResolverDnsCache : IDnsCache
method ResolverDnsCache (line 44) | public ResolverDnsCache(DnsServer dnsServer, bool skipDnsAppAuthoritat...
method AuthoritativeQueryClosestDelegation (line 55) | private async Task<DnsDatagram> AuthoritativeQueryClosestDelegation(Dn...
method DnsApplicationQueryClosestDelegationAsync (line 80) | private async Task<DnsDatagram> DnsApplicationQueryClosestDelegationAs...
method DoConditionalForwardingResolutionAsync (line 127) | private Task<DnsDatagram> DoConditionalForwardingResolutionAsync(DnsDa...
method QueryClosestDelegationAsync (line 160) | protected async Task<DnsDatagram> QueryClosestDelegationAsync(DnsDatag...
method QueryAsync (line 189) | public virtual async Task<DnsDatagram> QueryAsync(DnsDatagram request,...
method CacheResponse (line 231) | public void CacheResponse(DnsDatagram response, bool isDnssecBadCache ...
FILE: DnsServerCore/Dns/ResolverPrefetchDnsCache.cs
class ResolverPrefetchDnsCache (line 25) | class ResolverPrefetchDnsCache : ResolverDnsCache
method ResolverPrefetchDnsCache (line 35) | public ResolverPrefetchDnsCache(DnsServer dnsServer, bool skipDnsAppAu...
method QueryAsync (line 45) | public override Task<DnsDatagram> QueryAsync(DnsDatagram request, bool...
FILE: DnsServerCore/Dns/ResourceRecords/AuthRecordInfo.cs
class AuthRecordInfo (line 29) | abstract class AuthRecordInfo
method AuthRecordInfo (line 33) | protected AuthRecordInfo()
method AuthRecordInfo (line 36) | protected AuthRecordInfo(BinaryReader bR)
method ReadGenericRecordInfoFrom (line 49) | public static GenericRecordInfo ReadGenericRecordInfoFrom(BinaryReader...
method ReadOldFormatFrom (line 72) | private void ReadOldFormatFrom(BinaryReader bR, byte version, bool isSoa)
method ReadRecordInfoFrom (line 231) | protected abstract void ReadRecordInfoFrom(BinaryReader bR);
method WriteRecordInfoTo (line 233) | protected abstract void WriteRecordInfoTo(BinaryWriter bW);
method WriteTo (line 239) | public void WriteTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/ResourceRecords/CacheRecordInfo.cs
class CacheRecordInfo (line 29) | class CacheRecordInfo
method CacheRecordInfo (line 47) | public CacheRecordInfo()
method CacheRecordInfo (line 50) | public CacheRecordInfo(BinaryReader bR)
method ReadRecordsFrom (line 81) | private static DnsResourceRecord[] ReadRecordsFrom(BinaryReader bR, bo...
method WriteRecordsTo (line 105) | private static void WriteRecordsTo(IReadOnlyList<DnsResourceRecord> re...
method WriteTo (line 135) | public void WriteTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/ResourceRecords/DnsNSRecordDataExtended.cs
class DnsNSRecordDataExtended (line 24) | class DnsNSRecordDataExtended : DnsNSRecordData
method DnsNSRecordDataExtended (line 28) | public DnsNSRecordDataExtended(string nameServer, bool validateName = ...
method UpdateNameServer (line 36) | public void UpdateNameServer(string nameServer)
FILE: DnsServerCore/Dns/ResourceRecords/DnsResourceRecordExtensions.cs
class DnsResourceRecordExtensions (line 30) | static class DnsResourceRecordExtensions
method SetGlueRecords (line 32) | public static void SetGlueRecords(this DnsResourceRecord record, strin...
method SyncGlueRecords (line 59) | public static void SyncGlueRecords(this DnsResourceRecord record, IRea...
method SyncGlueRecords (line 84) | public static void SyncGlueRecords(this DnsResourceRecord record, IRea...
method GetAuthGenericRecordInfo (line 125) | public static GenericRecordInfo GetAuthGenericRecordInfo(this DnsResou...
method GetAuthNSRecordInfo (line 165) | public static NSRecordInfo GetAuthNSRecordInfo(this DnsResourceRecord ...
method GetAuthSOARecordInfo (line 184) | public static SOARecordInfo GetAuthSOARecordInfo(this DnsResourceRecor...
method GetAuthSVCBRecordInfo (line 203) | public static SVCBRecordInfo GetAuthSVCBRecordInfo(this DnsResourceRec...
method GetAuthHistoryRecordInfo (line 222) | public static HistoryRecordInfo GetAuthHistoryRecordInfo(this DnsResou...
method GetCacheRecordInfo (line 241) | public static CacheRecordInfo GetCacheRecordInfo(this DnsResourceRecor...
method CopyRecordInfoFrom (line 252) | public static void CopyRecordInfoFrom(this DnsResourceRecord record, D...
FILE: DnsServerCore/Dns/ResourceRecords/DnsSOARecordDataExtended.cs
class DnsSOARecordDataExtended (line 24) | class DnsSOARecordDataExtended : DnsSOARecordData
method DnsSOARecordDataExtended (line 28) | public DnsSOARecordDataExtended(string primaryNameServer, string respo...
method UpdatePrimaryNameServerAndMinimum (line 36) | public void UpdatePrimaryNameServerAndMinimum(string primaryNameServer...
FILE: DnsServerCore/Dns/ResourceRecords/GenericRecordInfo.cs
class GenericRecordInfo (line 26) | class GenericRecordInfo : AuthRecordInfo
method GenericRecordInfo (line 41) | public GenericRecordInfo()
method GenericRecordInfo (line 44) | public GenericRecordInfo(BinaryReader bR)
method ReadRecordInfoFrom (line 52) | protected sealed override void ReadRecordInfoFrom(BinaryReader bR)
method WriteRecordInfoTo (line 79) | protected sealed override void WriteRecordInfoTo(BinaryWriter bW)
method ReadExtendedRecordInfoFrom (line 96) | protected virtual void ReadExtendedRecordInfoFrom(BinaryReader bR)
method WriteExtendedRecordInfoTo (line 101) | protected virtual void WriteExtendedRecordInfoTo(BinaryWriter bW)
method GetPendingExpiryTtl (line 110) | public uint GetPendingExpiryTtl()
FILE: DnsServerCore/Dns/ResourceRecords/HistoryRecordInfo.cs
class HistoryRecordInfo (line 26) | class HistoryRecordInfo : AuthRecordInfo
method HistoryRecordInfo (line 36) | public HistoryRecordInfo()
method HistoryRecordInfo (line 39) | public HistoryRecordInfo(BinaryReader bR)
method ReadFrom (line 47) | public static HistoryRecordInfo ReadFrom(BinaryReader bR)
method ReadRecordInfoFrom (line 56) | protected override void ReadRecordInfoFrom(BinaryReader bR)
method WriteRecordInfoTo (line 70) | protected override void WriteRecordInfoTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/ResourceRecords/NSRecordInfo.cs
class NSRecordInfo (line 27) | class NSRecordInfo : GenericRecordInfo
method NSRecordInfo (line 37) | public NSRecordInfo()
method NSRecordInfo (line 40) | public NSRecordInfo(BinaryReader bR)
method ReadExtendedRecordInfoFrom (line 48) | protected override void ReadExtendedRecordInfoFrom(BinaryReader bR)
method WriteExtendedRecordInfoTo (line 74) | protected override void WriteExtendedRecordInfoTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/ResourceRecords/SOARecordInfo.cs
class SOARecordInfo (line 27) | class SOARecordInfo : GenericRecordInfo
method SOARecordInfo (line 42) | public SOARecordInfo()
method SOARecordInfo (line 45) | public SOARecordInfo(BinaryReader bR)
method ReadExtendedRecordInfoFrom (line 53) | protected override void ReadExtendedRecordInfoFrom(BinaryReader bR)
method WriteExtendedRecordInfoTo (line 87) | protected override void WriteExtendedRecordInfoTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/ResourceRecords/SVCBRecordInfo.cs
class SVCBRecordInfo (line 24) | class SVCBRecordInfo : GenericRecordInfo
method SVCBRecordInfo (line 35) | public SVCBRecordInfo()
method SVCBRecordInfo (line 38) | public SVCBRecordInfo(BinaryReader bR)
method ReadExtendedRecordInfoFrom (line 46) | protected override void ReadExtendedRecordInfoFrom(BinaryReader bR)
method WriteExtendedRecordInfoTo (line 64) | protected override void WriteExtendedRecordInfoTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/StatsManager.cs
class StatsManager (line 39) | public sealed class StatsManager : IDisposable
method StatsManager (line 75) | static StatsManager()
method StatsManager (line 80) | public StatsManager(DnsServer dnsServer)
method Dispose (line 254) | public void Dispose()
method LoadLastHourStats (line 274) | private void LoadLastHourStats()
method DoMaintenance (line 304) | private void DoMaintenance()
method LoadHourlyStats (line 397) | private HourlyStats LoadHourlyStats(DateTime dateTime, bool forceReloa...
method LoadDailyStats (line 441) | private StatCounter LoadDailyStats(DateTime dateTime)
method SaveHourlyStats (line 503) | private void SaveHourlyStats(DateTime dateTime, HourlyStats hourlyStats)
method SaveDailyStats (line 520) | private void SaveDailyStats(DateTime dateTime, StatCounter dailyStats)
method Flush (line 537) | private void Flush()
method ReloadStats (line 551) | public void ReloadStats()
method DeleteAllStats (line 557) | public void DeleteAllStats()
method QueueUpdate (line 572) | public void QueueUpdate(DnsDatagram request, IPEndPoint remoteEP, DnsT...
method GetLastHourMinuteWiseStats (line 577) | public DashboardStats GetLastHourMinuteWiseStats(bool utcFormat)
method GetLastDayHourWiseStats (line 711) | public DashboardStats GetLastDayHourWiseStats(bool utcFormat)
method GetLastWeekDayWiseStats (line 716) | public DashboardStats GetLastWeekDayWiseStats(bool utcFormat)
method GetLastMonthDayWiseStats (line 721) | public DashboardStats GetLastMonthDayWiseStats(bool utcFormat)
method GetLastYearMonthWiseStats (line 726) | public DashboardStats GetLastYearMonthWiseStats(bool utcFormat)
method GetMinuteWiseStats (line 867) | public DashboardStats GetMinuteWiseStats(DateTime startDate, DateTime ...
method GetMinuteWiseStats (line 872) | public DashboardStats GetMinuteWiseStats(DateTime startDate, int minut...
method GetHourWiseStats (line 1008) | public DashboardStats GetHourWiseStats(DateTime startDate, DateTime en...
method GetHourWiseStats (line 1013) | public DashboardStats GetHourWiseStats(DateTime startDate, int hours, ...
method GetDayWiseStats (line 1145) | public DashboardStats GetDayWiseStats(DateTime startDate, DateTime end...
method GetDayWiseStats (line 1150) | public DashboardStats GetDayWiseStats(DateTime startDate, int days, bo...
method GetLastHourTopStats (line 1278) | public DashboardStats GetLastHourTopStats(DashboardTopStatsType type, ...
method GetLastDayTopStats (line 1320) | public DashboardStats GetLastDayTopStats(DashboardTopStatsType type, i...
method GetLastWeekTopStats (line 1325) | public DashboardStats GetLastWeekTopStats(DashboardTopStatsType type, ...
method GetLastMonthTopStats (line 1330) | public DashboardStats GetLastMonthTopStats(DashboardTopStatsType type,...
method GetLastYearTopStats (line 1335) | public DashboardStats GetLastYearTopStats(DashboardTopStatsType type, ...
method GetMinuteWiseTopStats (line 1386) | public DashboardStats GetMinuteWiseTopStats(DateTime startDate, DateTi...
method GetMinuteWiseTopStats (line 1391) | public DashboardStats GetMinuteWiseTopStats(DateTime startDate, int mi...
method GetHourWiseTopStats (line 1436) | public DashboardStats GetHourWiseTopStats(DateTime startDate, DateTime...
method GetHourWiseTopStats (line 1441) | public DashboardStats GetHourWiseTopStats(DateTime startDate, int hour...
method GetDayWiseTopStats (line 1483) | public DashboardStats GetDayWiseTopStats(DateTime startDate, DateTime ...
method GetDayWiseTopStats (line 1488) | public DashboardStats GetDayWiseTopStats(DateTime startDate, int days,...
method GetLastHourEligibleQueries (line 1526) | public List<KeyValuePair<DnsQuestionRecord, long>> GetLastHourEligible...
method GetLatestClientSubnetStats (line 1546) | public Dictionary<NetworkAddress, ValueTuple<long, long>> GetLatestCli...
class HourlyStats (line 1607) | class HourlyStats
method HourlyStats (line 1618) | public HourlyStats()
method HourlyStats (line 1630) | public HourlyStats(BinaryReader bR)
method UpdateStat (line 1659) | public void UpdateStat(DateTime dateTime, StatCounter minuteStat)
method UnloadMinuteStats (line 1668) | public void UnloadMinuteStats()
method WriteTo (line 1673) | public void WriteTo(BinaryWriter bW)
class StatCounter (line 1703) | class StatCounter
method StatCounter (line 1737) | public StatCounter()
method StatCounter (line 1747) | public StatCounter(BinaryReader bR)
method GetTopList (line 1949) | private static List<KeyValuePair<string, T>> GetTopList<T>(List<KeyV...
method GetNewCounter (line 1962) | private static Counter GetNewCounter<T>(T key)
method GetNewCounterTuple (line 1967) | private static (Counter, Counter) GetNewCounterTuple<T>(T key)
method Lock (line 1976) | public void Lock()
method Update (line 1981) | public void Update(DnsQuestionRecord query, DnsResponseCode response...
method Merge (line 2100) | public void Merge(StatCounter statCounter, bool isDailyStatCounter =...
method Truncate (line 2146) | public bool Truncate(int limit)
method WriteTo (line 2252) | public void WriteTo(BinaryWriter bW)
method GetStatsData (line 2330) | public DashboardStats.StatsData GetStatsData()
method GetQueryResponseChartData (line 2350) | public DashboardStats.ChartData GetQueryResponseChartData()
method GetTopDomainStats (line 2379) | public DashboardStats.TopStats[] GetTopDomainStats(int limit)
method GetTopBlockedDomainStats (line 2395) | public DashboardStats.TopStats[] GetTopBlockedDomainStats(int limit)
method GetTopClientStats (line 2411) | public DashboardStats.TopClientStats[] GetTopClientStats(int limit)
method GetTopQueryTypesChartData (line 2427) | public DashboardStats.ChartData GetTopQueryTypesChartData()
method GetTopProtocolTypesChartData (line 2463) | public DashboardStats.ChartData GetTopProtocolTypesChartData()
method GetEligibleQueries (line 2499) | public List<KeyValuePair<DnsQuestionRecord, long>> GetEligibleQuerie...
method GetClientSubnetStats (line 2512) | public Dictionary<NetworkAddress, (long, long)> GetClientSubnetStats...
class Counter (line 2607) | class Counter
method Counter (line 2617) | public Counter()
method Counter (line 2620) | public Counter(long count)
method Increment (line 2629) | public void Increment()
method Merge (line 2634) | public void Merge(Counter counter)
type StatsQueueItem (line 2650) | readonly struct StatsQueueItem
method StatsQueueItem (line 2666) | public StatsQueueItem(DnsDatagram request, IPEndPoint remoteEP, DnsT...
FILE: DnsServerCore/Dns/Trees/AuthZoneNode.cs
class AuthZoneNode (line 28) | class AuthZoneNode : IDisposable
method AuthZoneNode (line 39) | public AuthZoneNode(SubDomainZone parentSideZone, ApexZone zone)
method Dispose (line 51) | public void Dispose()
method TryAdd (line 66) | public bool TryAdd(ApexZone apexZone)
method TryAdd (line 71) | public bool TryAdd(SubDomainZone parentSideZone)
method TryRemove (line 76) | public bool TryRemove(out ApexZone apexZone)
method TryRemove (line 82) | public bool TryRemove(out SubDomainZone parentSideZone)
method GetOrAddParentSideZone (line 88) | public SubDomainZone GetOrAddParentSideZone(Func<SubDomainZone> valueF...
method QueryRecords (line 106) | public IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResourceRecord...
method GetAuthZone (line 119) | public AuthZone GetAuthZone(string zoneName)
FILE: DnsServerCore/Dns/Trees/AuthZoneTree.cs
class AuthZoneTree (line 29) | class AuthZoneTree : ZoneTree<AuthZoneNode, SubDomainZone, ApexZone>
method GetPreviousSubDomainZoneNode (line 39) | private static Node GetPreviousSubDomainZoneNode(byte[] key, Node curr...
method GetNextSubDomainZoneNode (line 191) | private static Node GetNextSubDomainZoneNode(byte[] key, Node currentN...
method SubDomainExists (line 320) | private static bool SubDomainExists(byte[] key, Node currentNode)
method GetAuthZoneFromNode (line 341) | private static AuthZone GetAuthZoneFromNode(Node node, string zoneName)
method RemoveAllSubDomains (line 354) | private void RemoveAllSubDomains(string domain, Node currentNode)
method GetClosestValuesForZone (line 395) | protected override void GetClosestValuesForZone(AuthZoneNode zoneValue...
method TryAdd (line 430) | public bool TryAdd(ApexZone zone)
method TryGet (line 443) | public bool TryGet(string zoneName, string domain, out AuthZone authZone)
method TryGet (line 455) | public bool TryGet(string zoneName, out ApexZone apexZone)
method TryRemove (line 467) | public bool TryRemove(string domain, out ApexZone apexZone)
method TryRemove (line 503) | public bool TryRemove(string domain, out SubDomainZone subDomainZone, ...
method TryRemove (line 539) | public override bool TryRemove(string key, out AuthZoneNode authZoneNode)
method GetApexZoneWithSubDomainZones (line 544) | public IReadOnlyList<AuthZone> GetApexZoneWithSubDomainZones(string zo...
method GetSubDomainZoneWithSubDomainZones (line 588) | public IReadOnlyList<AuthZone> GetSubDomainZoneWithSubDomainZones(stri...
method GetOrAddSubDomainZone (line 632) | public AuthZone GetOrAddSubDomainZone(string zoneName, string domain, ...
method GetAuthZone (line 657) | public AuthZone GetAuthZone(string zoneName, string domain)
method GetApexZone (line 665) | public ApexZone GetApexZone(string zoneName)
method FindZone (line 673) | public AuthZone FindZone(string domain, out SubDomainZone closest, out...
method FindPreviousSubDomainZone (line 760) | public AuthZone FindPreviousSubDomainZone(string zoneName, string domain)
method FindNextSubDomainZone (line 797) | public AuthZone FindNextSubDomainZone(string zoneName, string domain)
method SubDomainExistsFor (line 834) | public bool SubDomainExistsFor(string zoneName, string domain)
method FindNSecProofOfNonExistenceNxDomain (line 847) | public IReadOnlyList<DnsResourceRecord> FindNSecProofOfNonExistenceNxD...
method FindNSec3ProofOfNonExistenceNxDomain (line 872) | public IReadOnlyList<DnsResourceRecord> FindNSec3ProofOfNonExistenceNx...
method FindNSecProofOfNonExistenceNoData (line 972) | public IReadOnlyList<DnsResourceRecord> FindNSecProofOfNonExistenceNoD...
method FindNSec3ProofOfNonExistenceNoData (line 1000) | public IReadOnlyList<DnsResourceRecord> FindNSec3ProofOfNonExistenceNo...
method FindNSec3ProofOfNonExistenceNoData (line 1052) | private static IReadOnlyList<DnsResourceRecord> FindNSec3ProofOfNonExi...
method NSecAddProofOfCoverFor (line 1061) | private void NSecAddProofOfCoverFor(string domain, List<DnsResourceRec...
method NSec3AddProofOfCoverFor (line 1086) | private void NSec3AddProofOfCoverFor(string hashedOwnerName, string zo...
FILE: DnsServerCore/Dns/Trees/CacheZoneTree.cs
class CacheZoneTree (line 24) | class CacheZoneTree : ZoneTree<CacheZone, CacheZone, CacheZone>
method GetClosestValuesForZone (line 28) | protected override void GetClosestValuesForZone(CacheZone zoneValue, o...
method TryRemoveTree (line 49) | public bool TryRemoveTree(string domain, out CacheZone value, out int ...
method FindZone (line 87) | public CacheZone FindZone(string domain, out CacheZone closest, out Ca...
FILE: DnsServerCore/Dns/Trees/DomainTree.cs
class DomainTree (line 26) | class DomainTree<T> : ByteTree<string, T> where T : class
method DomainTree (line 37) | static DomainTree()
method DomainTree (line 100) | public DomainTree()
method ConvertToByteKey (line 108) | protected override byte[] ConvertToByteKey(string domain, bool throwEx...
method ConvertKeyToLabel (line 208) | protected static string ConvertKeyToLabel(byte[] key, int startIndex)
method TryRemove (line 234) | public override bool TryRemove(string key, out T value)
FILE: DnsServerCore/Dns/Trees/InvalidDomainNameException.cs
class InvalidDomainNameException (line 24) | public class InvalidDomainNameException : DnsServerException
method InvalidDomainNameException (line 28) | public InvalidDomainNameException()
method InvalidDomainNameException (line 32) | public InvalidDomainNameException(string message)
method InvalidDomainNameException (line 36) | public InvalidDomainNameException(string message, Exception innerExcep...
FILE: DnsServerCore/Dns/Trees/ZoneTree.cs
class ZoneTree (line 26) | abstract class ZoneTree<TNode, TSubDomainZone, TApexZone> : DomainTree<T...
method GetNextChildZoneNode (line 30) | private static Node GetNextChildZoneNode(Node current, int baseDepth)
method GetNodeKey (line 78) | private static byte[] GetNodeKey(Node node)
method KeysMatch (line 92) | private static bool KeysMatch(byte[] mainKey, byte[] testKey, bool mat...
method FindClosestValuesForZone (line 136) | private void FindClosestValuesForZone(TNode zoneNode, Node currentNode...
method IsKeySubDomain (line 163) | protected static bool IsKeySubDomain(byte[] mainKey, byte[] testKey, b...
method FindZoneNode (line 216) | protected TNode FindZoneNode(byte[] key, bool matchWildcard, out Node ...
method GetClosestValuesForZone (line 352) | protected abstract void GetClosestValuesForZone(TNode zoneValue, out T...
method ListSubDomains (line 358) | public void ListSubDomains(string domain, List<string> subDomains)
FILE: DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs
class AllowedZoneManager (line 33) | public sealed class AllowedZoneManager : IDisposable
method AllowedZoneManager (line 53) | public AllowedZoneManager(DnsServer dnsServer)
method Dispose (line 91) | public void Dispose()
method LoadAllowedZoneFile (line 124) | public void LoadAllowedZoneFile()
method LoadAllowedZone (line 147) | public void LoadAllowedZone(Stream s)
method SaveZoneFileInternal (line 163) | private void SaveZoneFileInternal()
method SaveZoneFile (line 175) | public void SaveZoneFile()
method ReadConfigFrom (line 187) | private void ReadConfigFrom(Stream s)
method WriteConfigTo (line 219) | private void WriteConfigTo(Stream s)
method UpdateServerDomain (line 237) | internal void UpdateServerDomain()
method ImportZones (line 247) | public void ImportZones(string[] domains)
method AllowZone (line 252) | public bool AllowZone(string domain)
method DeleteZone (line 260) | public bool DeleteZone(string domain)
method Flush (line 268) | public void Flush()
method GetAllZones (line 273) | public IReadOnlyList<AuthZoneInfo> GetAllZones()
method ListAllRecords (line 278) | public void ListAllRecords(string domain, List<DnsResourceRecord> reco...
method ListSubDomains (line 283) | public void ListSubDomains(string domain, List<string> subDomains)
method IsAllowed (line 288) | public bool IsAllowed(DnsDatagram request)
FILE: DnsServerCore/Dns/ZoneManagers/AuthZoneManager.cs
class AuthZoneManager (line 41) | public sealed class AuthZoneManager : IDisposable
method AuthZoneManager (line 79) | public AuthZoneManager(DnsServer dnsServer)
method Dispose (line 122) | private void Dispose(bool disposing)
method Dispose (line 162) | public void Dispose()
method LoadAllZoneFiles (line 172) | public void LoadAllZoneFiles()
method LoadAllInternalZones (line 248) | private void LoadAllInternalZones()
method SaveZoneFileInternal (line 283) | private void SaveZoneFileInternal(string zoneName)
method SaveZoneFile (line 307) | public void SaveZoneFile(string zoneName)
method GetMinExpiryTtlFor (line 321) | private static uint GetMinExpiryTtlFor(IReadOnlyList<DnsResourceRecord...
method LoadAndInitZone (line 349) | private void LoadAndInitZone(AuthZoneInfo zoneInfo, IReadOnlyList<DnsR...
method LoadZoneFrom (line 462) | public AuthZoneInfo LoadZoneFrom(Stream s, DateTime lastModified)
method WriteZoneTo (line 604) | public void WriteZoneTo(string zoneName, Stream s)
method TriggerUpdateServerDomain (line 639) | internal void TriggerUpdateServerDomain(bool useBlockingAnswerTtl = fa...
method GetParentZone (line 712) | internal static string GetParentZone(string domain)
method DomainBelongsToZone (line 722) | internal static bool DomainBelongsToZone(string zoneName, string domain)
method ValidateIfDomainBelongsToZone (line 727) | internal static void ValidateIfDomainBelongsToZone(string zoneName, st...
method CreateEmptyApexZone (line 737) | private ApexZone CreateEmptyApexZone(AuthZoneInfo zoneInfo)
method GetOrAddSubDomainZone (line 785) | internal AuthZone GetOrAddSubDomainZone(string zoneName, string domain)
method GetApexZoneWithSubDomainZones (line 807) | internal IReadOnlyList<AuthZone> GetApexZoneWithSubDomainZones(string ...
method GetAuthZoneInfo (line 812) | public AuthZoneInfo GetAuthZoneInfo(string zoneName, bool loadHistory ...
method FindAuthZoneInfo (line 820) | public AuthZoneInfo FindAuthZoneInfo(string domain, bool loadHistory =...
method GetAuthZone (line 829) | internal AuthZone GetAuthZone(string zoneName, string domain)
method GetApexZone (line 834) | internal ApexZone GetApexZone(string zoneName)
method NameExists (line 839) | public bool NameExists(string zoneName, string domain)
method FindPreviousSubDomainZone (line 846) | internal AuthZone FindPreviousSubDomainZone(string zoneName, string do...
method FindNextSubDomainZone (line 851) | internal AuthZone FindNextSubDomainZone(string zoneName, string domain)
method ListSubDomains (line 856) | public void ListSubDomains(string domain, List<string> subDomains)
method SubDomainExistsFor (line 861) | internal bool SubDomainExistsFor(string zoneName, string domain)
method RemoveSubDomainZone (line 866) | internal void RemoveSubDomainZone(string domain, bool removeAllSubDoma...
method Flush (line 871) | internal void Flush()
method CreateSpecialPrimaryZone (line 893) | internal AuthZoneInfo CreateSpecialPrimaryZone(string zoneName, DnsSOA...
method LoadSpecialPrimaryZones (line 917) | internal void LoadSpecialPrimaryZones(IReadOnlyList<string> zoneNames,...
method LoadSpecialPrimaryZones (line 941) | internal void LoadSpecialPrimaryZones(Func<string> getZoneName, DnsSOA...
method CreateInternalPrimaryZone (line 971) | internal AuthZoneInfo CreateInternalPrimaryZone(string zoneName)
method CreatePrimaryZone (line 976) | public AuthZoneInfo CreatePrimaryZone(string zoneName)
method CreatePrimaryZone (line 981) | public AuthZoneInfo CreatePrimaryZone(string zoneName, bool useSoaSeri...
method CreatePrimaryZone (line 986) | private AuthZoneInfo CreatePrimaryZone(string zoneName, bool @internal...
method CreateSecondaryZoneAsync (line 1013) | public Task<AuthZoneInfo> CreateSecondaryZoneAsync(string zoneName, st...
method CreateSecondaryZoneAsync (line 1025) | public async Task<AuthZoneInfo> CreateSecondaryZoneAsync(string zoneNa...
method CreateStubZoneAsync (line 1053) | public Task<AuthZoneInfo> CreateStubZoneAsync(string zoneName, string ...
method CreateStubZoneAsync (line 1065) | public async Task<AuthZoneInfo> CreateStubZoneAsync(string zoneName, I...
method CreateForwarderZone (line 1093) | public AuthZoneInfo CreateForwarderZone(string zoneName)
method CreateForwarderZone (line 1119) | public AuthZoneInfo CreateForwarderZone(string zoneName, DnsTransportP...
method CreateSecondaryForwarderZone (line 1145) | public AuthZoneInfo CreateSecondaryForwarderZone(string zoneName, stri...
method CreateSecondaryForwarderZone (line 1157) | public AuthZoneInfo CreateSecondaryForwarderZone(string zoneName, IRea...
method CreateCatalogZone (line 1185) | public AuthZoneInfo CreateCatalogZone(string zoneName)
method CreateSecondaryCatalogZone (line 1216) | public AuthZoneInfo CreateSecondaryCatalogZone(string zoneName, string...
method CreateSecondaryCatalogZone (line 1228) | public AuthZoneInfo CreateSecondaryCatalogZone(string zoneName, IReadO...
method DeleteZone (line 1258) | public bool DeleteZone(string zoneName, bool deleteZoneFile = false)
method DeleteZone (line 1267) | public bool DeleteZone(AuthZoneInfo zoneInfo, bool deleteZoneFile = fa...
method DeleteZone (line 1272) | private bool DeleteZone(AuthZoneInfo zoneInfo, bool deleteZoneFile, bo...
method CloneZone (line 1342) | public AuthZoneInfo CloneZone(string zoneName, string sourceZoneName)
method ConvertZoneTypeTo (line 1476) | public AuthZoneInfo ConvertZoneTypeTo(string zoneName, AuthZoneType ne...
method ConvertZoneTypeTo (line 1538) | private AuthZoneInfo ConvertZoneTypeTo(AuthZoneInfo currentZoneInfo, A...
method AddCatalogMemberZone (line 1817) | public void AddCatalogMemberZone(string catalogZoneName, AuthZoneInfo ...
method RemoveCatalogMemberZone (line 1888) | public void RemoveCatalogMemberZone(AuthZoneInfo memberZoneInfo, bool ...
method ChangeCatalogMemberZoneOwnership (line 1920) | public void ChangeCatalogMemberZoneOwnership(AuthZoneInfo memberZoneIn...
method SignPrimaryZone (line 1957) | public void SignPrimaryZone(string zoneName, DnssecPrivateKey kskPriva...
method UnsignPrimaryZone (line 1967) | public void UnsignPrimaryZone(string zoneName)
method ConvertPrimaryZoneToNSEC (line 1977) | public void ConvertPrimaryZoneToNSEC(string zoneName)
method ConvertPrimaryZoneToNSEC3 (line 1987) | public void ConvertPrimaryZoneToNSEC3(string zoneName, ushort iteratio...
method UpdatePrimaryZoneNSEC3Parameters (line 1997) | public void UpdatePrimaryZoneNSEC3Parameters(string zoneName, ushort i...
method UpdatePrimaryZoneDnsKeyTtl (line 2007) | public void UpdatePrimaryZoneDnsKeyTtl(string zoneName, uint dnsKeyTtl)
method GenerateAndAddPrimaryZoneDnssecPrivateKey (line 2017) | public DnssecPrivateKey GenerateAndAddPrimaryZoneDnssecPrivateKey(stri...
method AddPrimaryZoneDnssecPrivateKey (line 2029) | public void AddPrimaryZoneDnssecPrivateKey(string zoneName, DnssecPriv...
method UpdatePrimaryZoneDnssecPrivateKey (line 2039) | public DnssecPrivateKey UpdatePrimaryZoneDnssecPrivateKey(string zoneN...
method DeletePrimaryZoneDnssecPrivateKey (line 2051) | public void DeletePrimaryZoneDnssecPrivateKey(string zoneName, ushort ...
method PublishAllGeneratedPrimaryZoneDnssecPrivateKeys (line 2061) | public void PublishAllGeneratedPrimaryZoneDnssecPrivateKeys(string zon...
method RolloverPrimaryZoneDnsKey (line 2071) | public void RolloverPrimaryZoneDnsKey(string zoneName, ushort keyTag)
method RetirePrimaryZoneDnsKeyAsync (line 2081) | public async Task RetirePrimaryZoneDnsKeyAsync(string zoneName, ushort...
method LoadTrustAnchorsTo (line 2091) | public void LoadTrustAnchorsTo(DnsClient dnsClient, string domain, Dns...
method EnumerateAllZones (line 2123) | public IEnumerable<AuthZoneInfo> EnumerateAllZones()
method GetAllZones (line 2137) | public IReadOnlyList<AuthZoneInfo> GetAllZones()
method GetZones (line 2150) | public IReadOnlyList<AuthZoneInfo> GetZones(Func<AuthZoneInfo, bool> p...
method GetAllCatalogZones (line 2171) | public IReadOnlyList<AuthZoneInfo> GetAllCatalogZones()
method GetCatalogZones (line 2184) | public IReadOnlyList<AuthZoneInfo> GetCatalogZones(Func<AuthZoneInfo, ...
method ListAllZoneRecords (line 2209) | public void ListAllZoneRecords(string zoneName, List<DnsResourceRecord...
method ListAllZoneRecords (line 2215) | public void ListAllZoneRecords(string zoneName, DnsResourceRecordType[...
method ListAllRecords (line 2224) | public void ListAllRecords(string zoneName, string domain, List<DnsRes...
method EnumerateAllRecords (line 2232) | public IEnumerable<DnsResourceRecord> EnumerateAllRecords(string zoneN...
method GetRecords (line 2260) | public IReadOnlyList<DnsResourceRecord> GetRecords(string zoneName, st...
method GetEntriesFor (line 2270) | public IReadOnlyDictionary<DnsResourceRecordType, IReadOnlyList<DnsRes...
method SetRecords (line 2280) | public void SetRecords(string zoneName, IReadOnlyList<DnsResourceRecor...
method SetRecord (line 2302) | public void SetRecord(string zoneName, DnsResourceRecord record)
method AddRecord (line 2314) | public bool AddRecord(string zoneName, DnsResourceRecord record)
method UpdateRecord (line 2331) | public void UpdateRecord(string zoneName, DnsResourceRecord oldRecord,...
method DeleteRecord (line 2410) | public bool DeleteRecord(string zoneName, DnsResourceRecord record)
method DeleteRecord (line 2415) | public bool DeleteRecord(string zoneName, string domain, DnsResourceRe...
method DeleteRecords (line 2438) | public bool DeleteRecords(string zoneName, string domain, DnsResourceR...
method QueryZoneTransferRecords (line 2465) | public IReadOnlyList<DnsResourceRecord> QueryZoneTransferRecords(strin...
method QueryIncrementalZoneTransferRecords (line 2520) | public IReadOnlyList<DnsResourceRecord> QueryIncrementalZoneTransferRe...
method SyncZoneTransferRecords (line 2591) | public void SyncZoneTransferRecords(string zoneName, IReadOnlyList<Dns...
method SyncIncrementalZoneTransferRecords (line 2683) | public IReadOnlyList<DnsResourceRecord> SyncIncrementalZoneTransferRec...
method CondenseIncrementalZoneTransferRecords (line 2893) | private static List<DnsResourceRecord> CondenseIncrementalZoneTransfer...
method ImportRecords (line 3058) | internal void ImportRecords(string zoneName, IReadOnlyList<DnsResource...
method QueryClosestDelegation (line 3149) | public DnsDatagram QueryClosestDelegation(DnsDatagram request)
method QueryAsync (line 3166) | public async Task<DnsDatagram> QueryAsync(DnsDatagram request, IPAddre...
method Query (line 3179) | public DnsDatagram Query(DnsDatagram request, bool isRecursionAllowed)
method InternalQuery (line 3189) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method IsQueryAllowedAsync (line 3453) | private static async Task<bool> IsQueryAllowedAsync(ApexZone apexZone,...
method ResolveCNAME (line 3529) | private void ResolveCNAME(DnsQuestionRecord question, bool dnssecOk, D...
method DoDNAMESubstitution (line 3569) | private bool DoDNAMESubstitution(DnsQuestionRecord question, bool dnss...
method GetAdditionalRecords (line 3596) | private List<DnsResourceRecord> GetAdditionalRecords(IReadOnlyList<Dns...
method ResolveAdditionalRecords (line 3650) | private void ResolveAdditionalRecords(DnsResourceRecord refRecord, str...
method GetReferralResponse (line 3747) | private DnsDatagram GetReferralResponse(DnsDatagram request, bool dnss...
method GetForwarderResponse (line 3805) | private DnsDatagram GetForwarderResponse(DnsDatagram request, AuthZone...
FILE: DnsServerCore/Dns/ZoneManagers/BlockListZoneManager.cs
class BlockListZoneManager (line 39) | public sealed class BlockListZoneManager : IDisposable
method BlockListZoneManager (line 78) | public BlockListZoneManager(DnsServer dnsServer)
method Dispose (line 118) | public void Dispose()
method LoadConfigFile (line 154) | public void LoadConfigFile()
method LoadConfig (line 177) | public void LoadConfig(Stream s, bool isConfigTransfer)
method SaveConfigFileInternal (line 193) | private void SaveConfigFileInternal()
method SaveConfigFile (line 214) | public void SaveConfigFile()
method ReadConfigFrom (line 226) | private void ReadConfigFrom(Stream s, bool isConfigTransfer)
method WriteConfigTo (line 274) | private void WriteConfigTo(Stream s)
method UpdateServerDomain (line 294) | internal void UpdateServerDomain()
method GetBlockListFilePath (line 300) | private string GetBlockListFilePath(Uri blockListUrl)
method PopWord (line 305) | private static string PopWord(ref string line)
method ReadListFile (line 329) | private Queue<string> ReadListFile(Uri listUrl, bool isAllowList, out ...
method IsZoneBlocked (line 476) | private List<Uri> IsZoneBlocked(string domain, out string blockedDomain)
method IsZoneAllowed (line 497) | private bool IsZoneAllowed(string domain)
method ApplyBlockListUrls (line 513) | private void ApplyBlockListUrls(IReadOnlyList<string> blockListUrls)
method ApplyBlockListUpdateInterval (line 535) | private void ApplyBlockListUpdateInterval()
method Flush (line 548) | private void Flush()
method UpdateBlockListsAsync (line 554) | private async Task<bool> UpdateBlockListsAsync(bool forceReload)
method ForceUpdateBlockLists (line 666) | private void ForceUpdateBlockLists(bool forceReload)
method StartBlockListUpdateTimer (line 687) | private void StartBlockListUpdateTimer(bool forceUpdateAndReload)
method StopBlockListUpdateTimer (line 726) | private void StopBlockListUpdateTimer()
method LoadBlockLists (line 735) | private void LoadBlockLists()
method IsAllowed (line 834) | public bool IsAllowed(DnsDatagram request)
method Query (line 842) | public DnsDatagram Query(DnsDatagram request)
method ForceUpdateBlockLists (line 966) | public void ForceUpdateBlockLists()
method TemporaryDisableBlocking (line 971) | public void TemporaryDisableBlocking(int minutes, IPEndPoint userEP, s...
method StopTemporaryDisableBlockingTimer (line 1005) | public void StopTemporaryDisableBlockingTimer()
FILE: DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs
class BlockedZoneManager (line 33) | public sealed class BlockedZoneManager
method BlockedZoneManager (line 53) | public BlockedZoneManager(DnsServer dnsServer)
method Dispose (line 91) | public void Dispose()
method LoadBlockedZoneFile (line 124) | public void LoadBlockedZoneFile()
method LoadBlockedZone (line 163) | public void LoadBlockedZone(Stream s)
method SaveZoneFileInternal (line 179) | private void SaveZoneFileInternal()
method SaveZoneFile (line 191) | public void SaveZoneFile()
method ReadConfigFrom (line 203) | private void ReadConfigFrom(Stream s)
method WriteConfigTo (line 235) | private void WriteConfigTo(Stream s)
method UpdateServerDomain (line 253) | internal void UpdateServerDomain()
method ImportZones (line 263) | public void ImportZones(string[] domains)
method BlockZone (line 268) | public bool BlockZone(string domain)
method DeleteZone (line 276) | public bool DeleteZone(string domain)
method Flush (line 284) | public void Flush()
method GetAllZones (line 289) | public IReadOnlyList<AuthZoneInfo> GetAllZones()
method ListAllRecords (line 294) | public void ListAllRecords(string domain, List<DnsResourceRecord> reco...
method ListSubDomains (line 299) | public void ListSubDomains(string domain, List<string> subDomains)
method Query (line 304) | public DnsDatagram Query(DnsDatagram request)
FILE: DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs
class CacheZoneManager (line 36) | public sealed class CacheZoneManager : DnsCache, IDisposable
method CacheZoneManager (line 68) | public CacheZoneManager(DnsServer dnsServer)
method Dispose (line 82) | public void Dispose()
method LoadCacheZoneFile (line 103) | public void LoadCacheZoneFile()
method SaveCacheZoneFile (line 154) | public void SaveCacheZoneFile()
method DeleteCacheZoneFile (line 174) | public void DeleteCacheZoneFile()
method CacheRecords (line 186) | protected override void CacheRecords(IReadOnlyList<DnsResourceRecord> ...
method CacheMaintenanceTimerCallback (line 296) | private void CacheMaintenanceTimerCallback(object state)
method AddDSRecordsTo (line 318) | private static IReadOnlyList<DnsResourceRecord> AddDSRecordsTo(CacheZo...
method AddRRSIGRecords (line 347) | private static void AddRRSIGRecords(IReadOnlyList<DnsResourceRecord> a...
method ResolveCNAME (line 395) | private void ResolveCNAME(DnsQuestionRecord question, DnsResourceRecor...
method DoDNAMESubstitution (line 435) | private bool DoDNAMESubstitution(DnsQuestionRecord question, IReadOnly...
method GetAdditionalRecords (line 463) | private List<DnsResourceRecord> GetAdditionalRecords(IReadOnlyList<Dns...
method ResolveAdditionalRecords (line 518) | private void ResolveAdditionalRecords(DnsResourceRecord refRecord, str...
method RemoveExpiredRecordsInternal (line 636) | private int RemoveExpiredRecordsInternal(bool serveStale, long minimum...
method RemoveLeastUsedRecordsInternal (line 661) | private int RemoveLeastUsedRecordsInternal(DateTime cutoff, long minim...
method RemoveExpiredRecords (line 690) | public override void RemoveExpiredRecords()
method DeleteEDnsClientSubnetData (line 724) | public void DeleteEDnsClientSubnetData()
method Flush (line 744) | public override void Flush()
method DeleteZone (line 754) | public bool DeleteZone(string domain)
method ListSubDomains (line 771) | public void ListSubDomains(string domain, List<string> subDomains)
method ListAllRecords (line 776) | public void ListAllRecords(string domain, List<DnsResourceRecord> reco...
method QueryClosestDelegationAsync (line 782) | public Task<DnsDatagram> QueryClosestDelegationAsync(DnsDatagram request)
method QueryAsync (line 846) | public override Task<DnsDatagram> QueryAsync(DnsDatagram request, bool...
FILE: DnsServerCore/Dns/Zones/ApexZone.cs
type AuthZoneQueryAccess (line 32) | public enum AuthZoneQueryAccess : byte
type AuthZoneTransfer (line 42) | public enum AuthZoneTransfer : byte
type AuthZoneNotify (line 51) | public enum AuthZoneNotify : byte
type AuthZoneUpdate (line 60) | public enum AuthZoneUpdate : byte
class ApexZone (line 69) | abstract class ApexZone : AuthZone, IDisposable
method ApexZone (line 122) | protected ApexZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method ApexZone (line 155) | protected ApexZone(DnsServer dnsServer, string name)
method Dispose (line 172) | protected virtual void Dispose(bool disposing)
method Dispose (line 194) | public void Dispose()
method InitNotify (line 203) | protected void InitNotify()
method DisableNotifyTimer (line 210) | protected void DisableNotifyTimer()
method NotifyTimerCallback (line 216) | private void NotifyTimerCallback(object state)
method NotifyNameServerAsync (line 397) | private async Task NotifyNameServerAsync(string nameServerHost, IReadO...
method RemoveFromNotifyFailedList (line 467) | internal void RemoveFromNotifyFailedList(NameServerAddress allowedZone...
method TriggerNotify (line 484) | public void TriggerNotify()
method InitRecordExpiry (line 524) | protected void InitRecordExpiry()
method GetMinRecordExpiryTtl (line 529) | private uint GetMinRecordExpiryTtl(uint minExpiryTtl)
method StartRecordExpiryTimer (line 543) | public void StartRecordExpiryTimer(uint minExpiryTtl)
method RecordExpiryTimerCallback (line 559) | private void RecordExpiryTimerCallback(object state)
method UpdateDnssecStatus (line 614) | internal virtual void UpdateDnssecStatus()
method CommitAndIncrementSerial (line 628) | internal virtual void CommitAndIncrementSerial(IReadOnlyList<DnsResour...
method GetNewSerial (line 752) | protected static uint GetNewSerial(uint oldSerial, uint updateSerial, ...
method SetSoaSerial (line 808) | internal void SetSoaSerial(uint newSerial)
method GetZoneHistory (line 826) | public IReadOnlyList<DnsResourceRecord> GetZoneHistory()
method CleanupHistory (line 834) | protected void CleanupHistory()
method CommitZoneHistory (line 875) | protected void CommitZoneHistory(IReadOnlyList<DnsResourceRecord> hist...
method ClearZoneHistory (line 888) | protected void ClearZoneHistory()
method GetQueryAccessACL (line 900) | private IReadOnlyCollection<NetworkAccessControl> GetQueryAccessACL()
method GetZoneTranferACL (line 952) | private IReadOnlyCollection<NetworkAccessControl> GetZoneTranferACL()
method GetZoneSoaSerial (line 996) | public uint GetZoneSoaSerial()
method GetZoneSoaRetry (line 1001) | public uint GetZoneSoaRetry()
method GetZoneSoaExpire (line 1006) | public uint GetZoneSoaExpire()
method GetZoneSoaMinimum (line 1011) | public uint GetZoneSoaMinimum()
method GetZoneTypeName (line 1016) | public abstract string GetZoneTypeName();
method ToString (line 1018) | public override string ToString()
method GetResolvedPrimaryNameServerAddressesAsync (line 1027) | public async Task<IReadOnlyList<NameServerAddress>> GetResolvedPrimary...
method GetResolvedSecondaryNameServerAddressesAsync (line 1066) | public async Task<IReadOnlyList<NameServerAddress>> GetResolvedSeconda...
method GetAllResolvedNameServerAddressesAsync (line 1087) | public async Task<IReadOnlyList<NameServerAddress>> GetAllResolvedName...
method GetResolvedNameServerAddressesAsync (line 1104) | public async Task<IReadOnlyList<NameServerAddress>> GetResolvedNameSer...
method ResolveNameServerAddressesAsync (line 1122) | private async Task ResolveNameServerAddressesAsync(string nsDomain, in...
method ResolveNameServerAddressesAsync (line 1158) | private Task ResolveNameServerAddressesAsync(DnsResourceRecord nsRecor...
FILE: DnsServerCore/Dns/Zones/AuthZone.cs
class AuthZone (line 28) | abstract class AuthZone : Zone
method AuthZone (line 38) | protected AuthZone(AuthZoneInfo zoneInfo)
method AuthZone (line 44) | protected AuthZone(string name)
method FilterDisabledRecords (line 52) | private IReadOnlyList<DnsResourceRecord> FilterDisabledRecords(DnsReso...
method AppendRRSigTo (line 101) | private IReadOnlyList<DnsResourceRecord> AppendRRSigTo(IReadOnlyList<D...
method TrySetRecords (line 129) | internal bool TrySetRecords(DnsResourceRecordType type, IReadOnlyList<...
method TryDeleteRecord (line 162) | internal bool TryDeleteRecord(DnsResourceRecordType type, DnsResourceR...
method TryDeleteRecords (line 201) | internal bool TryDeleteRecords(DnsResourceRecordType type, IReadOnlyLi...
method AddOrUpdateRRSigRecords (line 261) | internal void AddOrUpdateRRSigRecords(IReadOnlyList<DnsResourceRecord>...
method AddRecord (line 305) | internal void AddRecord(DnsResourceRecord record, out IReadOnlyList<Dn...
method EnumerateCatalogMemberZones (line 369) | protected IEnumerable<KeyValuePair<string, string>> EnumerateCatalogMe...
method SignAllRRSets (line 386) | internal IReadOnlyList<DnsResourceRecord> SignAllRRSets()
method RemoveAllDnssecRecords (line 401) | internal IReadOnlyList<DnsResourceRecord> RemoveAllDnssecRecords()
method RemoveNSecRecordsWithRRSig (line 424) | internal IReadOnlyList<DnsResourceRecord> RemoveNSecRecordsWithRRSig()
method RemoveNSec3RecordsWithRRSig (line 461) | internal IReadOnlyList<DnsResourceRecord> RemoveNSec3RecordsWithRRSig()
method HasOnlyNSec3Records (line 504) | internal bool HasOnlyNSec3Records()
method RefreshSignatures (line 526) | internal IReadOnlyList<DnsResourceRecord> RefreshSignatures()
method SignRRSet (line 561) | internal virtual IReadOnlyList<DnsResourceRecord> SignRRSet(IReadOnlyL...
method GetUpdatedNSecRRSet (line 566) | internal IReadOnlyList<DnsResourceRecord> GetUpdatedNSecRRSet(string n...
method GetUpdatedNSec3RRSet (line 591) | internal IReadOnlyList<DnsResourceRecord> GetUpdatedNSec3RRSet(IReadOn...
method CreateNSec3RRSet (line 599) | internal IReadOnlyList<DnsResourceRecord> CreateNSec3RRSet(string hash...
method GetPartialNSec3Record (line 623) | internal DnsResourceRecord GetPartialNSec3Record(string zoneName, uint...
method SyncRecords (line 657) | public void SyncRecords(Dictionary<DnsResourceRecordType, List<DnsReso...
method SyncRecords (line 708) | public void SyncRecords(Dictionary<DnsResourceRecordType, List<DnsReso...
method SyncGlueRecords (line 782) | public void SyncGlueRecords(IReadOnlyCollection<DnsResourceRecord> del...
method LoadRecords (line 791) | public void LoadRecords(DnsResourceRecordType type, IReadOnlyList<DnsR...
method SetRecords (line 796) | public virtual void SetRecords(DnsResourceRecordType type, IReadOnlyLi...
method AddRecord (line 822) | public virtual bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 829) | public virtual bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 834) | public virtual bool DeleteRecord(DnsResourceRecordType type, DnsResour...
method UpdateRecord (line 839) | public virtual void UpdateRecord(DnsResourceRecord oldRecord, DnsResou...
method QueryRecords (line 853) | public virtual IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResour...
method QueryRecordsWildcard (line 958) | public IReadOnlyList<DnsResourceRecord> QueryRecordsWildcard(DnsResour...
method GetRecords (line 976) | public IReadOnlyList<DnsResourceRecord> GetRecords(DnsResourceRecordTy...
method ContainsNameServerRecords (line 984) | public override bool ContainsNameServerRecords()
FILE: DnsServerCore/Dns/Zones/AuthZoneInfo.cs
type AuthZoneType (line 34) | public enum AuthZoneType : byte
class AuthZoneInfo (line 46) | public sealed class AuthZoneInfo : IComparable<AuthZoneInfo>
method AuthZoneInfo (line 94) | public AuthZoneInfo(string name, AuthZoneType type, bool disabled)
method AuthZoneInfo (line 118) | public AuthZoneInfo(BinaryReader bR, DateTime lastModified)
method AuthZoneInfo (line 652) | internal AuthZoneInfo(ApexZone apexZone, bool loadHistory = false)
method GetZoneTypeName (line 826) | public static string GetZoneTypeName(AuthZoneType type)
method ReadNameServerAddressesFrom (line 841) | internal static NameServerAddress[] ReadNameServerAddressesFrom(Binary...
method WriteNameServerAddressesTo (line 855) | internal static void WriteNameServerAddressesTo(IReadOnlyCollection<Na...
method ReadNetworkACLFrom (line 870) | internal static NetworkAccessControl[] ReadNetworkACLFrom(BinaryReader...
method WriteNetworkACLTo (line 884) | internal static void WriteNetworkACLTo(IReadOnlyCollection<NetworkAcce...
method ReadNetworkAddressesFrom (line 899) | internal static NetworkAddress[] ReadNetworkAddressesFrom(BinaryReader...
method WriteNetworkAddressesTo (line 913) | internal static void WriteNetworkAddressesTo(IReadOnlyCollection<Netwo...
method ReadIPAddressesFrom (line 928) | internal static IPAddress[] ReadIPAddressesFrom(BinaryReader bR)
method WriteIPAddressesTo (line 942) | internal static void WriteIPAddressesTo(IReadOnlyCollection<IPAddress>...
method ConvertDenyAllowToACL (line 957) | internal static List<NetworkAccessControl> ConvertDenyAllowToACL(Netwo...
method ReadZoneTransferTsigKeyNamesFrom (line 979) | private static HashSet<string> ReadZoneTransferTsigKeyNamesFrom(Binary...
method WriteZoneTransferTsigKeyNamesTo (line 990) | private static void WriteZoneTransferTsigKeyNamesTo(IReadOnlySet<strin...
method ReadZoneHistoryFrom (line 1005) | private static DnsResourceRecord[] ReadZoneHistoryFrom(BinaryReader bR)
method WriteZoneHistoryTo (line 1021) | private static void WriteZoneHistoryTo(IReadOnlyList<DnsResourceRecord...
method ReadUpdateSecurityPoliciesFrom (line 1048) | private static Dictionary<string, IReadOnlyDictionary<string, IReadOnl...
method WriteUpdateSecurityPoliciesTo (line 1085) | private static void WriteUpdateSecurityPoliciesTo(IReadOnlyDictionary<...
method ReadDnssecPrivateKeysFrom (line 1112) | internal static DnssecPrivateKey[] ReadDnssecPrivateKeysFrom(BinaryRea...
method WriteDnssecPrivateKeysTo (line 1126) | internal static void WriteDnssecPrivateKeysTo(IReadOnlyCollection<Dnss...
method TriggerRefresh (line 1145) | public void TriggerRefresh()
method TriggerResync (line 1167) | public void TriggerResync()
method WriteTo (line 1189) | public void WriteTo(BinaryWriter bW)
method CompareTo (line 1340) | public int CompareTo(AuthZoneInfo other)
method Equals (line 1345) | public override bool Equals(object obj)
method GetHashCode (line 1356) | public override int GetHashCode()
method ToString (line 1361) | public override string ToString()
FILE: DnsServerCore/Dns/Zones/CacheZone.cs
class CacheZone (line 32) | class CacheZone : Zone
method CacheZone (line 42) | public CacheZone(string name, int capacity)
method CacheZone (line 46) | private CacheZone(string name, ConcurrentDictionary<DnsResourceRecordT...
method ReadFrom (line 54) | public static CacheZone ReadFrom(BinaryReader bR, bool serveStale)
method ValidateRRSet (line 97) | private static IReadOnlyList<DnsResourceRecord> ValidateRRSet(DnsResou...
method ReadEntriesFrom (line 129) | private static ConcurrentDictionary<DnsResourceRecordType, IReadOnlyLi...
method WriteEntriesTo (line 155) | private static void WriteEntriesTo(ConcurrentDictionary<DnsResourceRec...
method SetRecords (line 181) | public bool SetRecords(DnsResourceRecordType type, IReadOnlyList<DnsRe...
method RemoveExpiredRecords (line 296) | public int RemoveExpiredRecords(bool serveStale)
method RemoveLeastUsedRecords (line 330) | public int RemoveLeastUsedRecords(DateTime cutoff)
method DeleteEDnsClientSubnetData (line 364) | public int DeleteEDnsClientSubnetData()
method QueryRecords (line 379) | public IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResourceRecord...
method ListAllRecords (line 487) | public override void ListAllRecords(List<DnsResourceRecord> records)
method ContainsNameServerRecords (line 501) | public override bool ContainsNameServerRecords()
method WriteTo (line 521) | public void WriteTo(BinaryWriter bW)
FILE: DnsServerCore/Dns/Zones/CatalogSubDomainZone.cs
class CatalogSubDomainZone (line 25) | class CatalogSubDomainZone : ForwarderSubDomainZone
method CatalogSubDomainZone (line 29) | public CatalogSubDomainZone(CatalogZone catalogZone, string name)
method QueryRecords (line 37) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
FILE: DnsServerCore/Dns/Zones/CatalogZone.cs
class CatalogZone (line 33) | class CatalogZone : ForwarderZone
method CatalogZone (line 44) | public CatalogZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method CatalogZone (line 48) | public CatalogZone(DnsServer dnsServer, string name)
method Dispose (line 56) | protected override void Dispose(bool disposing)
method InitZone (line 72) | internal override void InitZone()
method InitZoneProperties (line 83) | internal void InitZoneProperties()
method BuildMembersIndex (line 93) | internal void BuildMembersIndex()
method AddMemberZone (line 103) | public void AddMemberZone(string memberZoneName, AuthZoneType zoneType)
method RemoveMemberZone (line 139) | public bool RemoveMemberZone(string memberZoneName)
method ChangeMemberZoneOwnership (line 162) | public void ChangeMemberZoneOwnership(string memberZoneName, string ne...
method GetAllMemberZoneNames (line 187) | public IReadOnlyCollection<string> GetAllMemberZoneNames()
method GetZoneTypeProperty (line 200) | public AuthZoneType GetZoneTypeProperty(string memberZoneName)
method SetAllowQueryProperty (line 211) | public void SetAllowQueryProperty(IReadOnlyCollection<NetworkAccessCon...
method SetAllowTransferProperty (line 228) | public void SetAllowTransferProperty(IReadOnlyCollection<NetworkAccess...
method SetZoneTransferTsigKeyNamesProperty (line 245) | public void SetZoneTransferTsigKeyNamesProperty(IReadOnlySet<string> t...
method SetPrimaryAddressesProperty (line 270) | public void SetPrimaryAddressesProperty(IReadOnlyList<NameServerAddres...
method SetPrimaryZoneTransferProtocolProperty (line 292) | public void SetPrimaryZoneTransferProtocolProperty(DnsTransportProtoco...
method SetPrimaryZoneTransferTsigKeyNameProperty (line 309) | public void SetPrimaryZoneTransferTsigKeyNameProperty(string tsigKeyNa...
method SetZoneMdValidationProperty (line 326) | public void SetZoneMdValidationProperty(bool? validateZone = null, str...
method GetMemberZoneDomain (line 343) | private string GetMemberZoneDomain(string memberZoneName = null)
method GetDomainWithLabel (line 368) | private string GetDomainWithLabel(string domain)
method GetZoneTypeName (line 393) | public override string GetZoneTypeName()
method SetRecords (line 398) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 422) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 427) | public override bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 432) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method UpdateRecord (line 437) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
method QueryRecords (line 442) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
FILE: DnsServerCore/Dns/Zones/ForwarderSubDomainZone.cs
class ForwarderSubDomainZone (line 26) | class ForwarderSubDomainZone : SubDomainZone
method ForwarderSubDomainZone (line 36) | public ForwarderSubDomainZone(ForwarderZone forwarderZone, string name)
method SetRecords (line 46) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 75) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 106) | public override bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 120) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method UpdateRecord (line 134) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
FILE: DnsServerCore/Dns/Zones/ForwarderZone.cs
class ForwarderZone (line 28) | class ForwarderZone : ApexZone
method ForwarderZone (line 32) | public ForwarderZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method ForwarderZone (line 39) | public ForwarderZone(DnsServer dnsServer, string name)
method ForwarderZone (line 47) | public ForwarderZone(DnsServer dnsServer, string name, DnsTransportPro...
method InitZone (line 68) | internal virtual void InitZone()
method GetZoneTypeName (line 82) | public override string GetZoneTypeName()
method SetRecords (line 87) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 165) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 196) | public override bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 217) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method UpdateRecord (line 238) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
method QueryRecords (line 268) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
FILE: DnsServerCore/Dns/Zones/PrimarySubDomainZone.cs
class PrimarySubDomainZone (line 27) | class PrimarySubDomainZone : SubDomainZone
method PrimarySubDomainZone (line 37) | public PrimarySubDomainZone(PrimaryZone primaryZone, string name)
method SignRRSet (line 47) | internal override IReadOnlyList<DnsResourceRecord> SignRRSet(IReadOnly...
method SetRecords (line 56) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 109) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 161) | public override bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 189) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method UpdateRecord (line 217) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
FILE: DnsServerCore/Dns/Zones/PrimaryZone.cs
type AuthZoneDnssecStatus (line 33) | public enum AuthZoneDnssecStatus : byte
class PrimaryZone (line 46) | class PrimaryZone : ApexZone
method PrimaryZone (line 66) | public PrimaryZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method PrimaryZone (line 82) | public PrimaryZone(DnsServer dnsServer, string name, bool @internal, b...
method PrimaryZone (line 116) | internal PrimaryZone(DnsServer dnsServer, string name, DnsSOARecordDat...
method Dispose (line 131) | protected override void Dispose(bool disposing)
method UpdateDnssecStatus (line 163) | internal override void UpdateDnssecStatus()
method DnssecTimerCallback (line 174) | private async void DnssecTimerCallback(object state)
method SignZone (line 454) | public void SignZone(DnssecPrivateKey kskPrivateKey, DnssecPrivateKey ...
method SignZone (line 483) | public void SignZone(IReadOnlyCollection<DnssecPrivateKey> dnssecPriva...
method UnsignZone (line 666) | public void UnsignZone()
method ConvertToNSec (line 704) | public void ConvertToNSec()
method ConvertToNSec3 (line 732) | public void ConvertToNSec3(ushort iterations, byte saltLength)
method UpdateNSec3Parameters (line 756) | public void UpdateNSec3Parameters(ushort iterations, byte saltLength)
method RefreshNSec (line 788) | private void RefreshNSec()
method RefreshNSec3 (line 798) | private void RefreshNSec3()
method EnableNSec (line 822) | private void EnableNSec(IReadOnlyList<AuthZone> zones)
method DisableNSec (line 862) | private void DisableNSec(IReadOnlyList<AuthZone> zones)
method EnableNSec3 (line 872) | private void EnableNSec3(IReadOnlyList<AuthZone> zones, ushort iterati...
method EnableNSec3 (line 889) | private void EnableNSec3(IReadOnlyList<AuthZone> zones, ushort iterati...
method DisableNSec3 (line 1031) | private void DisableNSec3(IReadOnlyList<AuthZone> zones)
method GenerateAndAddPrivateKey (line 1051) | public DnssecPrivateKey GenerateAndAddPrivateKey(DnssecPrivateKeyType ...
method AddPrivateKey (line 1072) | public void AddPrivateKey(DnssecPrivateKey privateKey)
method UpdatePrivateKey (line 1084) | public DnssecPrivateKey UpdatePrivateKey(ushort keyTag, ushort rollove...
method DeletePrivateKey (line 1097) | public void DeletePrivateKey(ushort keyTag)
method PublishAllGeneratedKeys (line 1114) | public void PublishAllGeneratedKeys()
method ActivateZskDnsKeys (line 1188) | private void ActivateZskDnsKeys(IReadOnlyList<DnssecPrivateKey> zskPri...
method RolloverDnsKey (line 1227) | public void RolloverDnsKey(ushort keyTag)
method RetireDnsKeyAsync (line 1278) | public async Task RetireDnsKeyAsync(ushort keyTag)
method RetireKskDnsKeysAsync (line 1327) | private async Task<bool> RetireKskDnsKeysAsync(IReadOnlyList<DnssecPri...
method RetireZskDnsKeys (line 1417) | private bool RetireZskDnsKeys(IReadOnlyList<DnssecPrivateKey> zskPriva...
method DeactivateZskDnsKeys (line 1507) | private void DeactivateZskDnsKeys(IReadOnlyList<DnssecPrivateKey> zskP...
method RevokeKskDnsKeys (line 1553) | private void RevokeKskDnsKeys(List<DnssecPrivateKey> kskPrivateKeys)
method UnpublishDnsKeys (line 1664) | private void UnpublishDnsKeys(IReadOnlyList<DnssecPrivateKey> deadPriv...
method GetDSPublishedPrivateKeysAsync (line 1757) | private async Task<IReadOnlyList<DnssecPrivateKey>> GetDSPublishedPriv...
method TryRefreshAllSignatures (line 1798) | private bool TryRefreshAllSignatures()
method SignRRSet (line 1828) | internal override IReadOnlyList<DnsResourceRecord> SignRRSet(IReadOnly...
method UpdateDnssecRecordsFor (line 1902) | internal void UpdateDnssecRecordsFor(AuthZone zone, DnsResourceRecordT...
method UpdateNSecRRSetFor (line 1977) | private void UpdateNSecRRSetFor(AuthZone zone)
method UpdateNSec3RRSetFor (line 2028) | private void UpdateNSec3RRSetFor(AuthZone zone)
method GetUpdatedNSecRRSetFor (line 2102) | private IReadOnlyList<DnsResourceRecord> GetUpdatedNSecRRSetFor(AuthZo...
method GetUpdatedNSec3RRSetFor (line 2111) | private IReadOnlyList<DnsResourceRecord> GetUpdatedNSec3RRSetFor(AuthZ...
method RelinkPreviousNSecRRSetFor (line 2178) | private void RelinkPreviousNSecRRSetFor(DnsResourceRecord currentNSecR...
method RelinkPreviousNSec3RRSet (line 2215) | private void RelinkPreviousNSec3RRSet(DnsResourceRecord currentNSec3Re...
method GetSignatureValidityPeriod (line 2308) | private uint GetSignatureValidityPeriod()
method GetPropagationDelay (line 2314) | private uint GetPropagationDelay()
method GetParentSidePropagationDelayAsync (line 2321) | private async Task<uint> GetParentSidePropagationDelayAsync(Cancellati...
method GetMaxRRSigTtl (line 2365) | private uint GetMaxRRSigTtl()
method GetDSTtlAsync (line 2384) | private async Task<uint> GetDSTtlAsync(CancellationToken cancellationT...
method GetDnsKeyTtl (line 2421) | public uint GetDnsKeyTtl()
method UpdateDnsKeyTtl (line 2429) | public void UpdateDnsKeyTtl(uint dnsKeyTtl)
method CommitAndIncrementSerial (line 2487) | internal override void CommitAndIncrementSerial(IReadOnlyList<DnsResou...
method GetZoneTypeName (line 2502) | public override string GetZoneTypeName()
method SetRecords (line 2507) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 2622) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 2680) | public override bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 2711) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method UpdateRecord (line 2742) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
FILE: DnsServerCore/Dns/Zones/SecondaryCatalogSubDomainZone.cs
class SecondaryCatalogSubDomainZone (line 25) | class SecondaryCatalogSubDomainZone : SecondarySubDomainZone
method SecondaryCatalogSubDomainZone (line 29) | public SecondaryCatalogSubDomainZone(SecondaryZone secondaryZone, stri...
method QueryRecords (line 37) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
FILE: DnsServerCore/Dns/Zones/SecondaryCatalogZone.cs
class SecondaryCatalogZone (line 33) | class SecondaryCatalogZone : SecondaryForwarderZone
method SecondaryCatalogZone (line 81) | public SecondaryCatalogZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method SecondaryCatalogZone (line 85) | public SecondaryCatalogZone(DnsServer dnsServer, string name, IReadOnl...
method InitZone (line 93) | protected override void InitZone()
method BuildMembersIndex (line 108) | internal void BuildMembersIndex()
method GetAllMemberZoneNames (line 122) | public IReadOnlyCollection<string> GetAllMemberZoneNames()
method FinalizeZoneTransferAsync (line 127) | protected override async Task FinalizeZoneTransferAsync()
method FinalizeIncrementalZoneTransferAsync (line 190) | protected override async Task FinalizeIncrementalZoneTransferAsync(IRe...
method AddAndRemoveMemberZonesAsync (line 317) | private async Task AddAndRemoveMemberZonesAsync(Dictionary<string, obj...
method UpdateGlobalAllowQueryProperty (line 522) | private void UpdateGlobalAllowQueryProperty()
method UpdateGlobalAllowTransferAndTsigKeyNamesProperties (line 551) | private void UpdateGlobalAllowTransferAndTsigKeyNamesProperties()
method UpdateMemberZoneCustomProperties (line 584) | private void UpdateMemberZoneCustomProperties(Dictionary<string, strin...
method DeleteMemberZone (line 737) | private void DeleteMemberZone(ApexZone apexZone)
method GetVersion (line 749) | private string GetVersion()
method GetChangeOfOwnershipProperty (line 761) | private string GetChangeOfOwnershipProperty(string memberZoneDomain)
method GetZoneTypeProperty (line 772) | private AuthZoneType GetZoneTypeProperty(string memberZoneDomain)
method GetPrimariesProperty (line 783) | private List<Tuple<IPAddress, string>> GetPrimariesProperty(string mem...
method GetPrimaryAddressesProperty (line 823) | private IReadOnlyList<NameServerAddress> GetPrimaryAddressesProperty(s...
method GetPrimaryZoneTransferProtocolProperty (line 834) | private DnsTransportProtocol GetPrimaryZoneTransferProtocolProperty(st...
method GetPrimaryZoneTransferTsigKeyNameProperty (line 845) | private string GetPrimaryZoneTransferTsigKeyNameProperty(string member...
method GetZoneMdValidationProperty (line 856) | private bool GetZoneMdValidationProperty(string memberZoneDomain)
method GetAllowQueryProperty (line 867) | private IReadOnlyCollection<NetworkAccessControl> GetAllowQueryPropert...
method GetAllowTransferProperty (line 878) | private IReadOnlyCollection<NetworkAccessControl> GetAllowTransferProp...
method GetZoneTransferTsigKeyNamesProperty (line 889) | private HashSet<string> GetZoneTransferTsigKeyNamesProperty(string mem...
method GetQueryAccessType (line 902) | private static AuthZoneQueryAccess GetQueryAccessType(IReadOnlyCollect...
method GetZoneTransferType (line 922) | private static AuthZoneTransfer GetZoneTransferType(IReadOnlyCollectio...
method GetFilteredACL (line 939) | private static List<NetworkAccessControl> GetFilteredACL(IReadOnlyColl...
method GetZoneTypeName (line 958) | public override string GetZoneTypeName()
method QueryRecords (line 963) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
class SecondaryCatalogEventArgs (line 1005) | public class SecondaryCatalogEventArgs : EventArgs
method SecondaryCatalogEventArgs (line 1015) | public SecondaryCatalogEventArgs(AuthZoneInfo zoneInfo)
FILE: DnsServerCore/Dns/Zones/SecondaryForwarderZone.cs
class SecondaryForwarderZone (line 29) | class SecondaryForwarderZone : SecondaryZone
method SecondaryForwarderZone (line 33) | public SecondaryForwarderZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method SecondaryForwarderZone (line 37) | public SecondaryForwarderZone(DnsServer dnsServer, string name, IReadO...
method InitZone (line 47) | protected virtual void InitZone()
method FinalizeZoneTransferAsync (line 57) | protected override Task FinalizeZoneTransferAsync()
method FinalizeIncrementalZoneTransferAsync (line 63) | protected override Task FinalizeIncrementalZoneTransferAsync(IReadOnly...
method GetZoneTypeName (line 73) | public override string GetZoneTypeName()
method QueryRecords (line 78) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
FILE: DnsServerCore/Dns/Zones/SecondarySubDomainZone.cs
class SecondarySubDomainZone (line 26) | class SecondarySubDomainZone : SubDomainZone
method SecondarySubDomainZone (line 36) | public SecondarySubDomainZone(SecondaryZone secondaryZone, string name)
method SetRecords (line 46) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 51) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecord (line 56) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method DeleteRecords (line 61) | public override bool DeleteRecords(DnsResourceRecordType type)
method UpdateRecord (line 66) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
FILE: DnsServerCore/Dns/Zones/SecondaryZone.cs
class SecondaryZone (line 37) | class SecondaryZone : ApexZone
method SecondaryZone (line 72) | public SecondaryZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method SecondaryZone (line 94) | protected SecondaryZone(DnsServer dnsServer, string name, IReadOnlyLis...
method CreateAsync (line 121) | public static async Task<SecondaryZone> CreateAsync(DnsServer dnsServe...
method Dispose (line 194) | protected override void Dispose(bool disposing)
method RefreshTimerCallback (line 225) | private void RefreshTimerCallback(object state)
method ResetRefreshTimer (line 328) | private void ResetRefreshTimer(long dueTime)
method RefreshZoneAsync (line 336) | private async Task<bool> RefreshZoneAsync(IReadOnlyList<NameServerAddr...
method ValidateZoneAsync (line 526) | private async Task ValidateZoneAsync(CancellationToken cancellationTok...
method SerializeZoneTo (line 652) | private void SerializeZoneTo(MemoryStream hashStream)
method FinalizeZoneTransferAsync (line 740) | protected virtual Task FinalizeZoneTransferAsync()
method FinalizeIncrementalZoneTransferAsync (line 747) | protected virtual Task FinalizeIncrementalZoneTransferAsync(IReadOnlyL...
method GetZoneTypeName (line 758) | public override string GetZoneTypeName()
method TriggerRefresh (line 763) | public void TriggerRefresh(int refreshInterval = REFRESH_TIMER_INTERVAL)
method TriggerResync (line 775) | public void TriggerResync()
method SetRecords (line 786) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 791) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecord (line 796) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method DeleteRecords (line 801) | public override bool DeleteRecords(DnsResourceRecordType type)
method UpdateRecord (line 806) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
FILE: DnsServerCore/Dns/Zones/StubZone.cs
class StubZone (line 31) | class StubZone : ApexZone
method StubZone (line 54) | public StubZone(DnsServer dnsServer, AuthZoneInfo zoneInfo)
method StubZone (line 65) | private StubZone(DnsServer dnsServer, string name, IReadOnlyList<NameS...
method CreateAsync (line 85) | public static async Task<StubZone> CreateAsync(DnsServer dnsServer, st...
method Dispose (line 153) | protected override void Dispose(bool disposing)
method RefreshTimerCallback (line 184) | private void RefreshTimerCallback(object state)
method ResetRefreshTimer (line 250) | private void ResetRefreshTimer(long dueTime)
method RefreshZoneAsync (line 258) | private async Task<bool> RefreshZoneAsync(IReadOnlyList<NameServerAddr...
method GetZoneTypeName (line 380) | public override string GetZoneTypeName()
method TriggerRefresh (line 385) | public void TriggerRefresh(int refreshInterval = REFRESH_TIMER_INTERVAL)
method TriggerResync (line 397) | public void TriggerResync()
method SetRecords (line 408) | public override void SetRecords(DnsResourceRecordType type, IReadOnlyL...
method AddRecord (line 413) | public override bool AddRecord(DnsResourceRecord record)
method DeleteRecords (line 418) | public override bool DeleteRecords(DnsResourceRecordType type)
method DeleteRecord (line 423) | public override bool DeleteRecord(DnsResourceRecordType type, DnsResou...
method UpdateRecord (line 428) | public override void UpdateRecord(DnsResourceRecord oldRecord, DnsReso...
method QueryRecords (line 433) | public override IReadOnlyList<DnsResourceRecord> QueryRecords(DnsResou...
FILE: DnsServerCore/Dns/Zones/SubDomainZone.cs
class SubDomainZone (line 26) | abstract class SubDomainZone : AuthZone
method SubDomainZone (line 36) | protected SubDomainZone(ApexZone authoritativeZone, string name)
method AutoUpdateState (line 46) | public void AutoUpdateState()
FILE: DnsServerCore/Dns/Zones/Zone.cs
class Zone (line 30) | abstract class Zone
method Zone (line 41) | protected Zone(string name)
method Zone (line 47) | protected Zone(string name, int capacity)
method Zone (line 53) | protected Zone(string name, ConcurrentDictionary<DnsResourceRecordType...
method GetReverseZone (line 63) | public static string GetReverseZone(IPAddress address, IPAddress subne...
method GetReverseZone (line 68) | public static string GetReverseZone(IPAddress address, int subnetMaskW...
method ListAllRecords (line 101) | public virtual void ListAllRecords(List<DnsResourceRecord> records)
method ContainsNameServerRecords (line 107) | public abstract bool ContainsNameServerRecords();
method ToString (line 109) | public override string ToString()
FILE: DnsServerCore/DnsWebService.cs
class DnsWebService (line 63) | public sealed partial class DnsWebService : IAsyncDisposable, IDisposable
method DnsWebService (line 126) | public DnsWebService(string configFolder = null, Uri updateCheckUri = ...
method DisposeAsync (line 185) | public async ValueTask DisposeAsync()
method Dispose (line 221) | public void Dispose()
method LoadConfigFile (line 230) | private void LoadConfigFile()
method LoadConfig (line 323) | public void LoadConfig(Stream s)
method CreateForwarderZoneToDisableDnssecForNTP (line 339) | private void CreateForwarderZoneToDisableDnssecForNTP()
method SaveConfigFileInternal (line 356) | private void SaveConfigFileInternal()
method SaveConfigFile (line 377) | public void SaveConfigFile()
method InspectAndFixZonePermissions (line 389) | private void InspectAndFixZonePermissions()
method ReadConfigFrom (line 433) | private void ReadConfigFrom(Stream s)
method WriteConfigTo (line 504) | private void WriteConfigTo(Stream s)
method BackupConfigAsync (line 543) | internal async Task BackupConfigAsync(Stream zipStream, bool authConfi...
method RestoreConfigAsync (line 812) | internal async Task RestoreConfigAsync(Stream zipStream, bool authConf...
method CreateBackupEntryFromSharedFileAsync (line 1399) | private static async Task CreateBackupEntryFromSharedFileAsync(ZipArch...
method ConvertToRelativePath (line 1425) | private string ConvertToRelativePath(string path)
method ConvertToAbsolutePath (line 1433) | private string ConvertToAbsolutePath(string path)
method GetServerVersion (line 1448) | private string GetServerVersion()
method GetCleanVersion (line 1453) | private static string GetCleanVersion(Version version)
method TryStartWebServiceAsync (line 1470) | private async Task TryStartWebServiceAsync(IReadOnlyList<IPAddress> ol...
method StartWebServiceAsync (line 1523) | private async Task StartWebServiceAsync(bool httpOnlyMode)
method StopWebServiceAsync (line 1631) | private async Task StopWebServiceAsync()
method IsHttp2Supported (line 1640) | private bool IsHttp2Supported()
method ConfigureWebServiceRoutes (line 1658) | private void ConfigureWebServiceRoutes()
method GetClusterNodeTypeForPath (line 1831) | private static ClusterNodeType GetClusterNodeTypeForPath(string path)
method WebServiceHttpsRedirectionMiddleware (line 1879) | private Task WebServiceHttpsRedirectionMiddleware(HttpContext context,...
method WebServiceApiMiddleware (line 1888) | private async Task WebServiceApiMiddleware(HttpContext context, Reques...
method WebServiceExceptionHandler (line 2055) | private void WebServiceExceptionHandler(IApplicationBuilder exceptionH...
method TryGetSession (line 2106) | private bool TryGetSession(HttpContext context, out UserSession session)
method GetSessionUser (line 2126) | private User GetSessionUser(HttpContext context, bool standardOnly = f...
method StartTlsCertificateUpdateTimer (line 2156) | private void StartTlsCertificateUpdateTimer()
method StopTlsCertificateUpdateTimer (line 2187) | private void StopTlsCertificateUpdateTimer()
method LoadWebServiceTlsCertificate (line 2196) | private void LoadWebServiceTlsCertificate(string tlsCertificatePath, s...
method RemoveWebServiceTlsCertificate (line 2249) | private void RemoveWebServiceTlsCertificate()
method SetWebServiceTlsCertificate (line 2259) | public void SetWebServiceTlsCertificate(string webServiceTlsCertificat...
method CheckAndLoadSelfSignedCertificate (line 2287) | private void CheckAndLoadSelfSignedCertificate(bool forceGenerateNew, ...
method ValidateQuicSupport (line 2360) | private static void ValidateQuicSupport(string protocolName = "DNS-ove...
method IsQuicSupported (line 2372) | private static bool IsQuicSupported()
method AuthZoneManager_SecondaryCatalogZoneAdded (line 2387) | private void AuthZoneManager_SecondaryCatalogZoneAdded(object sender, ...
method AuthZoneManager_SecondaryCatalogZoneRemoved (line 2414) | private void AuthZoneManager_SecondaryCatalogZoneRemoved(object sender...
method StartAsync (line 2427) | public async Task StartAsync(bool throwIfBindFails = false)
method StopAsync (line 2505) | public async Task StopAsync()
FILE: DnsServerCore/DnsWebServiceException.cs
class DnsWebServiceException (line 24) | public class DnsWebServiceException : Exception
method DnsWebServiceException (line 28) | public DnsWebServiceException()
method DnsWebServiceException (line 32) | public DnsWebServiceException(string message)
method DnsWebServiceException (line 36) | public DnsWebServiceException(string message, Exception innerException)
FILE: DnsServerCore/DnsWebServiceLegacy.cs
class DnsWebService (line 39) | public partial class DnsWebService
method TryLoadOldConfigFile (line 43) | private bool TryLoadOldConfigFile()
method TryLoadOldConfigFrom (line 70) | private bool TryLoadOldConfigFrom(Stream s)
method ReadOldConfigFrom (line 89) | private void ReadOldConfigFrom(BinaryReader bR, int version)
method ReadConfigFromV42 (line 154) | private void ReadConfigFromV42(BinaryReader bR, int version)
method ReadConfigFromV27 (line 787) | private void ReadConfigFromV27(BinaryReader bR, int version)
FILE: DnsServerCore/Extensions.cs
class Extensions (line 32) | static class Extensions
method GetRemoteEndPoint (line 37) | public static IPEndPoint GetRemoteEndPoint(this HttpContext context, s...
method GetLocalIpAddress (line 64) | public static IPAddress GetLocalIpAddress(this HttpContext context)
method GetCurrentSession (line 83) | public static UserSession GetCurrentSession(this HttpContext context)
method GetCurrentJsonWriter (line 91) | public static Utf8JsonWriter GetCurrentJsonWriter(this HttpContext con...
method MapGetAndPost (line 99) | public static IEndpointConventionBuilder MapGetAndPost(this IEndpointR...
method MapGetAndPost (line 104) | public static IEndpointConventionBuilder MapGetAndPost(this IEndpointR...
method QueryOrForm (line 109) | public static string QueryOrForm(this HttpRequest request, string para...
method GetQueryOrForm (line 143) | public static string GetQueryOrForm(this HttpRequest request, string p...
method GetQueryOrForm (line 152) | public static string GetQueryOrForm(this HttpRequest request, string p...
method GetQueryOrForm (line 161) | public static T GetQueryOrForm<T>(this HttpRequest request, string par...
method GetQueryOrFormEnum (line 170) | public static T GetQueryOrFormEnum<T>(this HttpRequest request, string...
method GetQueryOrForm (line 179) | public static T GetQueryOrForm<T>(this HttpRequest request, string par...
method GetQueryOrFormEnum (line 188) | public static T GetQueryOrFormEnum<T>(this HttpRequest request, string...
method TryGetQueryOrForm (line 197) | public static bool TryGetQueryOrForm(this HttpRequest request, string ...
method TryGetQueryOrForm (line 206) | public static bool TryGetQueryOrForm<T>(this HttpRequest request, stri...
method TryGetQueryOrFormEnum (line 219) | public static bool TryGetQueryOrFormEnum<T>(this HttpRequest request, ...
method GetQueryOrFormAlt (line 231) | public static string GetQueryOrFormAlt(this HttpRequest request, strin...
method GetQueryOrFormAlt (line 244) | public static string GetQueryOrFormAlt(this HttpRequest request, strin...
method GetQueryOrFormAlt (line 257) | public static T GetQueryOrFormAlt<T>(this HttpRequest request, string ...
method GetQueryOrFormAlt (line 270) | public static T GetQueryOrFormAlt<T>(this HttpRequest request, string ...
method TryGetQueryOrFormArray (line 283) | public static bool TryGetQueryOrFormArray(this HttpRequest request, st...
method TryGetQueryOrFormArray (line 318) | public static bool TryGetQueryOrFormArray<T>(this HttpRequest request,...
method TryGetQueryOrFormArray (line 353) | public static bool TryGetQueryOrFormArray<T>(this HttpRequest request,...
FILE: DnsServerCore/InvalidTokenWebServiceException.cs
class InvalidTokenWebServiceException (line 24) | public class InvalidTokenWebServiceException : DnsWebServiceException
method InvalidTokenWebServiceException (line 28) | public InvalidTokenWebServiceException()
method InvalidTokenWebServiceException (line 32) | public InvalidTokenWebServiceException(string message)
method InvalidTokenWebServiceException (line 36) | public InvalidTokenWebServiceException(string message, Exception inner...
FILE: DnsServerCore/LogManager.cs
type LoggingType (line 38) | [Flags]
class LogManager (line 47) | public sealed class LogManager : IDisposable
method LogManager (line 86) | public LogManager(string configFolder)
method Dispose (line 178) | public void Dispose()
method LoadConfigFile (line 216) | private void LoadConfigFile()
method LoadConfig (line 247) | public void LoadConfig(Stream s)
method SaveConfigFileInternal (line 277) | private void SaveConfigFileInternal()
method SaveConfigFile (line 298) | public void SaveConfigFile()
method ReadConfigFrom (line 310) | private void ReadConfigFrom(Stream s
Condensed preview — 314 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,734K chars).
[
{
"path": ".gitattributes",
"chars": 2658,
"preview": "###############################################################################\n# Set default behavior to automatically "
},
{
"path": ".github/FUNDING.yml",
"chars": 722,
"preview": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [u"
},
{
"path": ".gitignore",
"chars": 3842,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
},
{
"path": "APIDOCS.md",
"chars": 256531,
"preview": "# Technitium DNS Server API Documentation\n\nTechnitium DNS Server provides a HTTP API which is used by the web console to"
},
{
"path": "Apps/AdvancedBlockingApp/AdvancedBlockingApp.csproj",
"chars": 1884,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/AdvancedBlockingApp/App.cs",
"chars": 68965,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/AdvancedBlockingApp/dnsApp.config",
"chars": 2152,
"preview": "{\n \"enableBlocking\": true,\n \"blockingAnswerTtl\": 30,\n \"blockListUrlUpdateIntervalHours\": 24,\n \"blockListUrlUpdateInt"
},
{
"path": "Apps/AdvancedForwardingApp/AdvancedForwardingApp.csproj",
"chars": 1949,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/AdvancedForwardingApp/App.cs",
"chars": 34759,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/AdvancedForwardingApp/adguard-upstreams.txt",
"chars": 343,
"preview": "# AdGuard Upstreams\n# File Format Reference: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration#upstreams\n#\n#"
},
{
"path": "Apps/AdvancedForwardingApp/dnsApp.config",
"chars": 1568,
"preview": "{\n \"appPreference\": 200,\n \"enableForwarding\": true,\n \"proxyServers\": [\n {\n \"name\": \"local-proxy\",\n \"type"
},
{
"path": "Apps/AutoPtrApp/App.cs",
"chars": 5658,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/AutoPtrApp/AutoPtrApp.csproj",
"chars": 1530,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/AutoPtrApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/BlockPageApp/App.cs",
"chars": 24472,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/BlockPageApp/BlockPageApp.csproj",
"chars": 2376,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/BlockPageApp/dnsApp.config",
"chars": 558,
"preview": "[\n {\n \"name\": \"default\",\n \"enableWebServer\": true,\n \"webServerLocalAddresses\": [\n \"0.0.0.0\",\n \"::\"\n "
},
{
"path": "Apps/BlockPageApp/wwwroot/index.html",
"chars": 180,
"preview": "<html>\n<head>\n <title>Website Blocked</title>\n</head>\n<body>\n <h1>Website Blocked</h1>\n <p>This website has bee"
},
{
"path": "Apps/DefaultRecordsApp/App.cs",
"chars": 8495,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/DefaultRecordsApp/DefaultRecordsApp.csproj",
"chars": 1697,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/DefaultRecordsApp/dnsApp.config",
"chars": 493,
"preview": "{\n \"enableDefaultRecords\": false,\n \"defaultTtl\": 3600,\n \"zoneSetMap\": {\n \"*\": [\"set1\"],\n \"*.net\": [\"set2\"],\n "
},
{
"path": "Apps/Dns64App/App.cs",
"chars": 13694,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/Dns64App/Dns64App.csproj",
"chars": 1692,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/Dns64App/dnsApp.config",
"chars": 401,
"preview": "{\n \"appPreference\": 30,\n \"enableDns64\": true,\n \"networkGroupMap\": {\n \"::/0\": \"everyone\"\n },\n \"groups\": [\n {\n "
},
{
"path": "Apps/DnsBlockListApp/App.cs",
"chars": 30114,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/DnsBlockListApp/DnsBlockListApp.csproj",
"chars": 1892,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/DnsBlockListApp/dnsApp.config",
"chars": 483,
"preview": "{\n \"dnsBlockLists\": [\n {\n \"name\": \"ipblocklist1\",\n \"type\": \"ip\",\n \"enabled\": true,\n \"responseA\":"
},
{
"path": "Apps/DnsBlockListApp/domain-blocklist.txt",
"chars": 345,
"preview": "# DNSBL domain block list\n# Format: domain A-response TXT-response\n# Seperator: <space>, <tab>, or <pipe> char\n# \n# A-re"
},
{
"path": "Apps/DnsBlockListApp/ip-blocklist.txt",
"chars": 411,
"preview": "# DNSBL IP block list\n# Format: ip/network A-response TXT-response\n# Seperator: <space>, <tab>, or <pipe> char\n#\n# A-res"
},
{
"path": "Apps/DnsRebindingProtectionApp/App.cs",
"chars": 6372,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/DnsRebindingProtectionApp/DnsRebindingProtectionApp.csproj",
"chars": 1775,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/DnsRebindingProtectionApp/dnsApp.config",
"chars": 263,
"preview": "{\n \"enableProtection\": true,\n \"bypassNetworks\": [\n ],\n \"privateNetworks\": [\n \"10.0.0.0/8\",\n \"127.0.0.0/8\",\n "
},
{
"path": "Apps/DropRequestsApp/App.cs",
"chars": 7009,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/DropRequestsApp/DropRequestsApp.csproj",
"chars": 1572,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/DropRequestsApp/dnsApp.config",
"chars": 519,
"preview": "{\n \"enableBlocking\": true,\n \"dropMalformedRequests\": false,\n \"allowedNetworks\": [\n \"127.0.0.1\",\n \"::1\",\n \"10"
},
{
"path": "Apps/FailoverApp/Address.cs",
"chars": 14784,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/CNAME.cs",
"chars": 11592,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/EmailAlert.cs",
"chars": 12205,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/FailoverApp.csproj",
"chars": 2048,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/FailoverApp/HealthCheck.cs",
"chars": 19485,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/HealthCheckResponse.cs",
"chars": 1437,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2021 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/HealthMonitor.cs",
"chars": 12944,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/HealthService.cs",
"chars": 16246,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/WebHook.cs",
"chars": 10924,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FailoverApp/dnsApp.config",
"chars": 1952,
"preview": "{\n \"healthChecks\": [\n {\n \"name\": \"ping\",\n \"type\": \"ping\",\n \"interval\": 60,\n \"retries\": 3,\n "
},
{
"path": "Apps/FilterAaaaApp/App.cs",
"chars": 7975,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/FilterAaaaApp/FilterAaaaApp.csproj",
"chars": 1835,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/FilterAaaaApp/README.md",
"chars": 2524,
"preview": "# Filter AAAA\n\nThe `Filter AAAA` app allows filtering `AAAA` records by returning `NODATA` responses when `A` records fo"
},
{
"path": "Apps/FilterAaaaApp/dnsApp.config",
"chars": 176,
"preview": "{\n \"enableFilterAaaa\": true,\n \"defaultTtl\": 30,\n \"bypassLocalZones\": false,\n \"bypassNetworks\": [\n ],\n \"bypassDomai"
},
{
"path": "Apps/GeoContinentApp/Address.cs",
"chars": 7971,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoContinentApp/CNAME.cs",
"chars": 7020,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoContinentApp/GeoContinentApp.csproj",
"chars": 2330,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/GeoContinentApp/MaxMind.cs",
"chars": 3169,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoContinentApp/ReadMe.txt",
"chars": 535,
"preview": "Using MaxMind GeoIP2 Database\n=============================\n\nThis app requires MaxMind GeoIP2 database and includes the"
},
{
"path": "Apps/GeoContinentApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/GeoCountryApp/Address.cs",
"chars": 7924,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoCountryApp/CNAME.cs",
"chars": 6961,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoCountryApp/GeoCountryApp.csproj",
"chars": 2324,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/GeoCountryApp/MaxMind.cs",
"chars": 3167,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoCountryApp/ReadMe.txt",
"chars": 535,
"preview": "Using MaxMind GeoIP2 Database\n=============================\n\nThis app requires MaxMind GeoIP2 database and includes the"
},
{
"path": "Apps/GeoCountryApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/GeoDistanceApp/Address.cs",
"chars": 9336,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoDistanceApp/CNAME.cs",
"chars": 7599,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoDistanceApp/GeoDistanceApp.csproj",
"chars": 2334,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/GeoDistanceApp/MaxMind.cs",
"chars": 3129,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/GeoDistanceApp/ReadMe.txt",
"chars": 658,
"preview": "Using MaxMind GeoIP2 Database\n=============================\n\nWARNING: Latitude and longitude are not precise and should"
},
{
"path": "Apps/GeoDistanceApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/LogExporterApp/App.cs",
"chars": 6272,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/AppConfig.cs",
"chars": 3186,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/LogEntry.cs",
"chars": 6388,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/LogExporterApp.csproj",
"chars": 2216,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/LogExporterApp/Strategy/ExportManager.cs",
"chars": 2550,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/Strategy/FileExportStrategy.cs",
"chars": 1824,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/Strategy/HttpExportStrategy.cs",
"chars": 3566,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/Strategy/IExportStrategy.cs",
"chars": 1103,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/Strategy/SyslogExportStrategy.cs",
"chars": 7448,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/LogExporterApp/dnsApp.config",
"chars": 351,
"preview": "{\n\t\"maxQueueSize\": 1000000,\n\t\"ebableEdnsLogging\": false,\n\t\"file\": {\n\t\t\"path\": \"./dns_logs.json\",\n\t\t\"enabled\": false\n\t},\n"
},
{
"path": "Apps/MispConnectorApp/App.cs",
"chars": 24861,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\nCopyright (C) 2025 Zafer Balkan (za"
},
{
"path": "Apps/MispConnectorApp/MispConnectorApp.csproj",
"chars": 1704,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/MispConnectorApp/README.md",
"chars": 1935,
"preview": "# MISP Connector for Technitium DNS Server\n\nA plugin that pulls malicious domain names from MISP feeds and enforces bloc"
},
{
"path": "Apps/MispConnectorApp/dnsApp.config",
"chars": 278,
"preview": "{\n\t\"enableBlocking\": true,\n\t\"mispServerUrl\": \"https://misp.example.com\",\n\t\"mispApiKey\": \"YourMispApiKeyHere\",\n\t\"disableT"
},
{
"path": "Apps/NoDataApp/App.cs",
"chars": 3080,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/NoDataApp/NoDataApp.csproj",
"chars": 1552,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/NoDataApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/NxDomainApp/App.cs",
"chars": 5739,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/NxDomainApp/NxDomainApp.csproj",
"chars": 1604,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/NxDomainApp/dnsApp.config",
"chars": 185,
"preview": "{\n \"appPreference\": 20,\n \"enableBlocking\": true,\n \"allowTxtBlockingReport\": true,\n \"blocked\": [\n \"use-application"
},
{
"path": "Apps/NxDomainOverrideApp/App.cs",
"chars": 8449,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/NxDomainOverrideApp/NxDomainOverrideApp.csproj",
"chars": 1655,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/NxDomainOverrideApp/dnsApp.config",
"chars": 334,
"preview": "{\n \"enableOverride\": true,\n \"defaultTtl\": 300,\n \"domainSetMap\": {\n \"*\": [\"set1\"],\n \"example.com\": [\"set1\", \"set"
},
{
"path": "Apps/QueryLogsMySqlApp/App.cs",
"chars": 37185,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/QueryLogsMySqlApp/QueryLogsMySqlApp.csproj",
"chars": 2420,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/QueryLogsMySqlApp/dnsApp.config",
"chars": 219,
"preview": "{\n \"enableLogging\": false,\n \"maxQueueSize\": 1000000,\n \"maxLogDays\": 0,\n \"maxLogRecords\": 0,\n \"databaseName\": \"DnsQu"
},
{
"path": "Apps/QueryLogsSqlServerApp/App.cs",
"chars": 31944,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/QueryLogsSqlServerApp/QueryLogsSqlServerApp.csproj",
"chars": 2443,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/QueryLogsSqlServerApp/dnsApp.config",
"chars": 259,
"preview": "{\n \"enableLogging\": false,\n \"maxQueueSize\": 1000000,\n \"maxLogDays\": 0,\n \"maxLogRecords\": 0,\n \"databaseName\": \"DnsQu"
},
{
"path": "Apps/QueryLogsSqliteApp/App.cs",
"chars": 30417,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/QueryLogsSqliteApp/QueryLogsSqliteApp.csproj",
"chars": 2326,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/QueryLogsSqliteApp/dnsApp.config",
"chars": 253,
"preview": "{\n \"enableLogging\": true,\n \"maxQueueSize\": 200000,\n \"maxLogDays\": 7,\n \"maxLogRecords\": 10000,\n \"enableVacuum\": fals"
},
{
"path": "Apps/SplitHorizonApp/AddressTranslation.cs",
"chars": 22342,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/SplitHorizonApp/README.md",
"chars": 6187,
"preview": "# Split Horizon\n\nThe Split Horizon app provides two distinct features which can be used independently:\n\n1. Create `APP` "
},
{
"path": "Apps/SplitHorizonApp/SimpleAddress.cs",
"chars": 10302,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/SplitHorizonApp/SimpleCNAME.cs",
"chars": 5574,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/SplitHorizonApp/SplitHorizonApp.csproj",
"chars": 1881,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net9.0</TargetFramework>\n\t\t<AppendTargetFramewor"
},
{
"path": "Apps/SplitHorizonApp/dnsApp.config",
"chars": 1233,
"preview": "{\n \"appPreference\": 40,\n \"networks\": {\n \"custom-networks\": [\n \"172.16.1.0/24\",\n \"172."
},
{
"path": "Apps/WeightedRoundRobinApp/Address.cs",
"chars": 6581,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/WeightedRoundRobinApp/CNAME.cs",
"chars": 5641,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/WeightedRoundRobinApp/WeightedRoundRobinApp.csproj",
"chars": 1719,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/WeightedRoundRobinApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/WhatIsMyDnsApp/App.cs",
"chars": 3578,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/WhatIsMyDnsApp/WhatIsMyDnsApp.csproj",
"chars": 1593,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/WhatIsMyDnsApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/WildIpApp/App.cs",
"chars": 5588,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/WildIpApp/WildIpApp.csproj",
"chars": 1613,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/WildIpApp/dnsApp.config",
"chars": 29,
"preview": "#This app requires no config."
},
{
"path": "Apps/ZoneAliasApp/App.cs",
"chars": 6828,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "Apps/ZoneAliasApp/ZoneAliasApp.csproj",
"chars": 1662,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <AppendTargetFra"
},
{
"path": "Apps/ZoneAliasApp/dnsApp.config",
"chars": 126,
"preview": "{\n \"appPreference\": 10,\n \"enableAliasing\": true,\n \"zoneAliases\": {\n \"example.com\": [\"example.net\", \"example.org\"]\n"
},
{
"path": "Apps/apps2.json",
"chars": 46456,
"preview": "[\n\t{\n\t\t\"name\": \"Advanced Blocking\",\n\t\t\"description\": \"Blocks domain names using block lists and regex block lists. Suppo"
},
{
"path": "CHANGELOG.md",
"chars": 65318,
"preview": "# Technitium DNS Server Change Log\n\n## Version 14.3\nRelease Date: 20 December 2025\n\n- Added support for Dark Mode. Thank"
},
{
"path": "DnsServer.sln",
"chars": 19514,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.3201"
},
{
"path": "DnsServerApp/DnsServerApp.csproj",
"chars": 1429,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkTo"
},
{
"path": "DnsServerApp/Program.cs",
"chars": 3978,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerApp/Properties/PublishProfiles/FolderProfile.pubxml",
"chars": 451,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->\n<Project>\n <PropertyGr"
},
{
"path": "DnsServerApp/install.sh",
"chars": 7107,
"preview": "#!/bin/sh\n\ndotnetDir=\"/opt/dotnet\"\ndotnetVersion=\"9.0\"\ndotnetRuntime=\"Microsoft.AspNetCore.App 9.0.\"\ndotnetUrl=\"https://"
},
{
"path": "DnsServerApp/start.bat",
"chars": 23,
"preview": "dotnet DnsServerApp.dll"
},
{
"path": "DnsServerApp/start.sh",
"chars": 35,
"preview": "#!/bin/sh\n\ndotnet DnsServerApp.dll\n"
},
{
"path": "DnsServerApp/systemd.service",
"chars": 322,
"preview": "[Unit]\nDescription=Technitium DNS Server\n\n[Service]\nWorkingDirectory=/opt/technitium/dns\nExecStart=/usr/bin/dotnet /opt/"
},
{
"path": "DnsServerApp/uninstall.sh",
"chars": 945,
"preview": "#!/bin/sh\n\ndotnetDir=\"/opt/dotnet\"\n\nif [ -d \"/etc/dns/config\" ]\nthen\n\tdnsDir=\"/etc/dns\"\nelse\n dnsDir=\"/opt/technitium"
},
{
"path": "DnsServerCore/Auth/AuthManager.cs",
"chars": 36019,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Auth/Group.cs",
"chars": 3947,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Auth/Permission.cs",
"chars": 11743,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Auth/User.cs",
"chars": 14179,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Auth/UserSession.cs",
"chars": 5803,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Cluster/ClusterManager.cs",
"chars": 97203,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Cluster/ClusterNode.cs",
"chars": 23615,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Cluster/InternalDnsClient.cs",
"chars": 3867,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/DhcpMessage.cs",
"chars": 16533,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/DhcpOption.cs",
"chars": 10408,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/DhcpServer.cs",
"chars": 63510,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/DhcpServerException.cs",
"chars": 1157,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Exclusion.cs",
"chars": 1642,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2021 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Lease.cs",
"chars": 6677,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/BroadcastAddressOption.cs",
"chars": 1853,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/CAPWAPAccessControllerOption.cs",
"chars": 2187,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/ClasslessStaticRouteOption.cs",
"chars": 3959,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/ClientFullyQualifiedDomainNameOption.cs",
"chars": 3637,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/ClientIdentifierOption.cs",
"chars": 3551,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/DhcpMessageTypeOption.cs",
"chars": 2186,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2019 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/DomainNameOption.cs",
"chars": 1795,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/DomainNameServerOption.cs",
"chars": 2136,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/DomainSearchOption.cs",
"chars": 2200,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2022 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/HostNameOption.cs",
"chars": 1769,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/IpAddressLeaseTimeOption.cs",
"chars": 1945,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/MaximumDhcpMessageSizeOption.cs",
"chars": 2147,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/NetBiosNameServerOption.cs",
"chars": 2159,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/NetworkTimeProtocolServersOption.cs",
"chars": 2186,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/OptionOverloadOption.cs",
"chars": 1998,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2021 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/ParameterRequestListOption.cs",
"chars": 2172,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2019 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/RebindingTimeValueOption.cs",
"chars": 1953,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/RenewalTimeValueOption.cs",
"chars": 1943,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/RequestedIpAddressOption.cs",
"chars": 1790,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/RouterOption.cs",
"chars": 1949,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/ServerIdentifierOption.cs",
"chars": 1780,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/SubnetMaskOption.cs",
"chars": 1774,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/TftpServerAddressOption.cs",
"chars": 2141,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/VendorClassIdentifierOption.cs",
"chars": 1769,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Options/VendorSpecificInformationOption.cs",
"chars": 2099,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dhcp/Scope.cs",
"chars": 81134,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Applications/DnsApplication.cs",
"chars": 10841,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Applications/DnsApplicationAssemblyLoadContext.cs",
"chars": 9761,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Applications/DnsApplicationManager.cs",
"chars": 22684,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Applications/InternalDnsServer.cs",
"chars": 3514,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/DirectDnsClient.cs",
"chars": 2458,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/DnsServer.cs",
"chars": 345559,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/DnsServerException.cs",
"chars": 1152,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Dnssec/DnssecEcdsaPrivateKey.cs",
"chars": 3142,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Dnssec/DnssecEddsaPrivateKey.cs",
"chars": 4280,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Dnssec/DnssecPrivateKey.cs",
"chars": 19501,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Dnssec/DnssecRsaPrivateKey.cs",
"chars": 3626,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResolverDnsCache.cs",
"chars": 10727,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResolverPrefetchDnsCache.cs",
"chars": 2134,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/AuthRecordInfo.cs",
"chars": 8854,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/CacheRecordInfo.cs",
"chars": 6484,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/DnsNSRecordDataExtended.cs",
"chars": 1214,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/DnsResourceRecordExtensions.cs",
"chars": 8626,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/DnsSOARecordDataExtended.cs",
"chars": 1426,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/GenericRecordInfo.cs",
"chars": 4183,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/HistoryRecordInfo.cs",
"chars": 2116,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/NSRecordInfo.cs",
"chars": 2962,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/SOARecordInfo.cs",
"chars": 3997,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ResourceRecords/SVCBRecordInfo.cs",
"chars": 2242,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/StatsManager.cs",
"chars": 107328,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Trees/AuthZoneNode.cs",
"chars": 4525,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2022 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Trees/AuthZoneTree.cs",
"chars": 45424,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Trees/CacheZoneTree.cs",
"chars": 3722,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2022 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Trees/DomainTree.cs",
"chars": 7633,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Trees/InvalidDomainNameException.cs",
"chars": 1199,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/Trees/ZoneTree.cs",
"chars": 14463,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2024 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
},
{
"path": "DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs",
"chars": 8687,
"preview": "/*\nTechnitium DNS Server\nCopyright (C) 2025 Shreyas Zare (shreyas@technitium.com)\n\nThis program is free software: you "
}
]
// ... and 114 more files (download for full content)
About this extraction
This page contains the full source code of the TechnitiumSoftware/DnsServer GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 314 files (5.2 MB), approximately 1.4M tokens, and a symbol index with 2525 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.