Ejemplo n.º 1
0
    public DDNSServer(string configFileName) : base()
    {
        try
        {
            this.configFileName = configFileName;

            //IO.MakeDir(logDir);

            //lastFlashDateTime = DateTime.Now;

            //log = new FileLogger(logDir);

            string dbConnectStr = Ini["DbConnectString"].StrValue;
            int    portNumber   = (int)Ini["Port"].IntValue;
            if (portNumber == 0)
            {
                portNumber = Consts.Ports.Dns;
            }

            this.hc = new HostsCache(dbConnectStr);

            this.server = new EasyDnsServer(new EasyDnsServerSetting(ProcessQueryList, portNumber));

            var opt = this.server.GetCurrentDynOptions();
            opt.ParseUdpProxyProtocolV2 = true;
            this.server.SetCurrentDynOptions(opt);
        }
        catch
        {
            this._DisposeSafe();
            throw;
        }
    }
Ejemplo n.º 2
0
    List <DnsUdpPacket> ProcessQueryList(EasyDnsServer dnsServer, List <DnsUdpPacket> requestList)
    {
        List <DnsUdpPacket> replyList = new List <DnsUdpPacket>(requestList.Count);

        foreach (var request in requestList)
        {
            try
            {
                var reply = this.processDnsQuery(request.Message, request.RemoteEndPoint.Address);

                if (reply == null)
                {
                    // エラー発生
                    DnsMessage?q = request.Message as DnsMessage;
                    if (q != null)
                    {
                        q.IsQuery            = false;
                        q.ReturnCode         = ReturnCode.ServerFailure;
                        q.IsRecursionAllowed = false;
                        reply = q;
                    }
                }

                if (reply != null)
                {
                    replyList.Add(new DnsUdpPacket(request.RemoteEndPoint, request.LocalEndPoint, reply));
                }
            }
            catch (Exception ex)
            {
                ex._Debug();
            }
        }

        return(replyList);
    }