Example #1
0
        internal static DnsProxySettings FromNativeObject(
            AGDnsApi.ag_dnsproxy_settings dnsProxySettingsC)
        {
            List <UpstreamOptions> upstreams = MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>(
                dnsProxySettingsC.upstreams,
                FromNativeObject);

            List <UpstreamOptions> fallbacks = MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>(
                dnsProxySettingsC.fallbacks,
                FromNativeObject);

            Dns64Settings           dns64        = FromNativeObject(dnsProxySettingsC.pDns64);
            EngineParams            engineParams = FromNativeObject(dnsProxySettingsC.FilterParams);
            List <ListenerSettings> listeners    =
                MarshalUtils.AgListToList <AGDnsApi.ag_listener_settings, ListenerSettings>(
                    dnsProxySettingsC.listeners,
                    FromNativeObject);
            DnsProxySettings dnsProxySettings = new DnsProxySettings
            {
                Upstreams    = upstreams,
                Fallbacks    = fallbacks,
                Dns64        = dns64,
                EngineParams = engineParams,
                Listeners    = listeners,
            };

            MarshalUtils.CopyFieldsToProperties(dnsProxySettingsC, dnsProxySettings);
            MarshalUtils.AllPtrsToStrings(dnsProxySettingsC, dnsProxySettings);
            return(dnsProxySettings);
        }
Example #2
0
        internal static DnsStamp FromNativeObject(AGDnsApi.ag_dns_stamp agDnsStampC)
        {
            DnsStamp dnsStamp = new DnsStamp();

            MarshalUtils.AllPtrsToStrings(agDnsStampC, dnsStamp);
            MarshalUtils.CopyFieldsToProperties(agDnsStampC, dnsStamp);
            return(dnsStamp);
        }
Example #3
0
        private static FilterParams FromNativeObject(AGDnsApi.ag_filter_params filterParamsC)
        {
            FilterParams filterParams = new FilterParams();

            MarshalUtils.AllPtrsToStrings(filterParamsC, filterParams);
            MarshalUtils.CopyFieldsToProperties(filterParamsC, filterParams);
            return(filterParams);
        }
Example #4
0
        private static OutboundProxyAuthInfo FromNativeObject(
            AGDnsApi.ag_outbound_proxy_auth_info outboundProxyAuthInfoC)
        {
            OutboundProxyAuthInfo outboundProxyAuthInfo = new OutboundProxyAuthInfo();

            MarshalUtils.CopyFieldsToProperties(outboundProxyAuthInfoC, outboundProxyAuthInfo);
            MarshalUtils.AllPtrsToStrings(outboundProxyAuthInfoC, outboundProxyAuthInfo);
            return(outboundProxyAuthInfo);
        }
Example #5
0
        private static ListenerSettings FromNativeObject(AGDnsApi.ag_listener_settings listenerSettingsC)
        {
            IPAddress        address          = CreateIpAddress(listenerSettingsC.address);
            int              port             = listenerSettingsC.port;
            IPEndPoint       endPoint         = CreateEndPoint(address, port);
            ListenerSettings listenerSettings = new ListenerSettings
            {
                EndPoint = endPoint
            };

            MarshalUtils.CopyFieldsToProperties(listenerSettingsC, listenerSettings);
            return(listenerSettings);
        }
Example #6
0
        private static Dns64Settings FromNativeObject(AGDnsApi.ag_dns64_settings dns64C)
        {
            List <UpstreamOptions> dns64Upstreams =
                MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>(
                    dns64C.upstreams,
                    FromNativeObject);

            Dns64Settings dns64 = new Dns64Settings
            {
                Upstreams = dns64Upstreams
            };

            MarshalUtils.CopyFieldsToProperties(dns64C, dns64);
            return(dns64);
        }
Example #7
0
        internal static DnsStamp FromNativeObject(AGDnsApi.ag_dns_stamp agDnsStampC)
        {
            byte[]        publicKey = MarshalUtils.AgBufferToBytes(agDnsStampC.server_public_key);
            List <byte[]> hashes    = MarshalUtils.AgListToList <MarshalUtils.ag_buffer, byte[]>(
                agDnsStampC.hashes,
                MarshalUtils.AgBufferToBytes);
            DnsStamp dnsStamp = new DnsStamp
            {
                PublicKey = publicKey,
                Hashes    = hashes
            };

            MarshalUtils.AllPtrsToStrings(agDnsStampC, dnsStamp);
            MarshalUtils.CopyFieldsToProperties(agDnsStampC, dnsStamp);
            return(dnsStamp);
        }
Example #8
0
        private static UpstreamOptions FromNativeObject(AGDnsApi.ag_upstream_options upstreamOptionsC)
        {
            List <string> bootstrap = MarshalUtils.AgListToList <IntPtr, string>(
                upstreamOptionsC.bootstrap,
                MarshalUtils.PtrToString);

            IPAddress       serverAddress   = CreateIpAddress(upstreamOptionsC.resolved_ip_address);
            UpstreamOptions upstreamOptions = new UpstreamOptions
            {
                Bootstrap         = bootstrap,
                ResolvedIpAddress = serverAddress
            };

            MarshalUtils.CopyFieldsToProperties(upstreamOptionsC, upstreamOptions);
            MarshalUtils.AllPtrsToStrings(upstreamOptionsC, upstreamOptions);
            return(upstreamOptions);
        }
Example #9
0
        private static OutboundProxySettings FromNativeObject(
            AGDnsApi.ag_outbound_proxy_settings outboundProxySettingsC)
        {
            AGDnsApi.ag_outbound_proxy_auth_info outboundProxyAuthInfoC =
                MarshalUtils.PtrToStructure <AGDnsApi.ag_outbound_proxy_auth_info>(
                    outboundProxySettingsC.auth_info);

            OutboundProxyAuthInfo authInfo = FromNativeObject(outboundProxyAuthInfoC);
            OutboundProxySettings outboundProxySettings = new OutboundProxySettings
            {
                AuthInfo = authInfo
            };

            MarshalUtils.CopyFieldsToProperties(outboundProxySettingsC, outboundProxySettings);
            MarshalUtils.AllPtrsToStrings(outboundProxySettingsC, outboundProxySettings);
            return(outboundProxySettings);
        }
Example #10
0
        internal static DnsProxySettings FromNativeObject(
            AGDnsApi.ag_dnsproxy_settings dnsProxySettingsC)
        {
            List <UpstreamOptions> upstreams = MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>(
                dnsProxySettingsC.upstreams,
                FromNativeObject);

            List <UpstreamOptions> fallbacks = MarshalUtils.AgListToList <AGDnsApi.ag_upstream_options, UpstreamOptions>(
                dnsProxySettingsC.fallbacks,
                FromNativeObject);

            List <string> fallbackDomains = MarshalUtils.AgListToList <IntPtr, string>(
                dnsProxySettingsC.fallbackDomains,
                MarshalUtils.PtrToString);

            AGDnsApi.ag_dns64_settings dns64C =
                MarshalUtils.PtrToStructure <AGDnsApi.ag_dns64_settings>(dnsProxySettingsC.pDns64);
            Dns64Settings           dns64        = FromNativeObject(dns64C);
            EngineParams            engineParams = FromNativeObject(dnsProxySettingsC.FilterParams);
            List <ListenerSettings> listeners    =
                MarshalUtils.AgListToList <AGDnsApi.ag_listener_settings, ListenerSettings>(
                    dnsProxySettingsC.listeners,
                    FromNativeObject);

            AGDnsApi.ag_outbound_proxy_settings outboundProxySettingsC =
                MarshalUtils.PtrToStructure <AGDnsApi.ag_outbound_proxy_settings>(dnsProxySettingsC.outbound_proxy);
            OutboundProxySettings outboundProxySettings =
                FromNativeObject(outboundProxySettingsC);
            DnsProxySettings dnsProxySettings = new DnsProxySettings
            {
                Upstreams             = upstreams,
                Fallbacks             = fallbacks,
                FallbackDomains       = fallbackDomains,
                Dns64                 = dns64,
                EngineParams          = engineParams,
                Listeners             = listeners,
                OutboundProxySettings = outboundProxySettings
            };

            MarshalUtils.CopyFieldsToProperties(dnsProxySettingsC, dnsProxySettings);
            MarshalUtils.AllPtrsToStrings(dnsProxySettingsC, dnsProxySettings);
            return(dnsProxySettings);
        }
Example #11
0
        internal static DnsRequestProcessedEventArgs FromNativeObject(
            AGDnsApi.ag_dns_request_processed_event coreArgsС)
        {
            List <string> rules = MarshalUtils.AgListToList <IntPtr, string>(
                coreArgsС.rules,
                MarshalUtils.PtrToString);

            List <int> filterListIds = MarshalUtils.AgListToList <IntPtr, int>(
                coreArgsС.filter_list_ids,
                filterId =>
                (int)filterId);

            int?upstreamId = MarshalUtils.PtrToNullableInt(coreArgsС.pUpstreamId);
            DnsRequestProcessedEventArgs eventArgs = new DnsRequestProcessedEventArgs
            {
                UpstreamId    = upstreamId,
                Rules         = rules,
                FilterListIds = filterListIds
            };

            MarshalUtils.AllPtrsToStrings(coreArgsС, eventArgs);
            MarshalUtils.CopyFieldsToProperties(coreArgsС, eventArgs);
            return(eventArgs);
        }