2021-09-11 12:58:30 +05:30
/ *
Technitium DNS Server
2025-01-18 13:07:17 +05:30
Copyright ( C ) 2025 Shreyas Zare ( shreyas @technitium . com )
2021-09-11 12:58:30 +05:30
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
* /
using System ;
using System.Net ;
using System.Threading.Tasks ;
using TechnitiumLibrary.Net.Dns ;
2021-09-18 11:48:28 +05:30
namespace DnsServerCore.ApplicationCommon
2021-09-11 12:58:30 +05:30
{
public enum DnsServerResponseType : byte
{
Authoritative = 1 ,
Recursive = 2 ,
Cached = 3 ,
2023-02-12 13:20:24 +05:30
Blocked = 4 ,
UpstreamBlocked = 5 ,
2025-03-29 17:18:13 +05:30
UpstreamBlockedCached = 6 ,
2024-02-04 18:11:57 +05:30
Dropped = 7
2021-09-11 12:58:30 +05:30
}
/// <summary>
/// Allows a DNS App to log incoming DNS requests and their corresponding responses.
/// </summary>
2021-09-26 17:01:27 +05:30
public interface IDnsQueryLogger
2021-09-11 12:58:30 +05:30
{
/// <summary>
/// Allows a DNS App to log incoming DNS requests and responses. This method is called by the DNS Server after an incoming request is processed and a response is sent.
/// </summary>
2021-10-02 12:30:08 +05:30
/// <param name="timestamp">The time stamp of the log entry.</param>
2021-09-11 12:58:30 +05:30
/// <param name="request">The incoming DNS request that was received.</param>
/// <param name="remoteEP">The end point (IP address and port) of the client making the request.</param>
/// <param name="protocol">The protocol using which the request was received.</param>
/// <param name="response">The DNS response that was sent.</param>
2021-10-02 12:30:08 +05:30
Task InsertLogAsync ( DateTime timestamp , DnsDatagram request , IPEndPoint remoteEP , DnsTransportProtocol protocol , DnsDatagram response ) ;
2021-09-11 12:58:30 +05:30
}
}