Exemple #1
0
        public void CloseSession(NetworkFilter.IpFilter instance, Sublayer sublayer)
        {
            if (instance.Session.Type == SessionType.Permanent)
            {
                sublayer.DestroyAllFilters();
            }

            instance.Session.Close();
        }
Exemple #2
0
        private void CreatePermanentFilters()
        {
            var session = Session.Permanent();

            if (NetworkFilter.IpFilter.IsRegistered(session, _providerGuid))
            {
                session.Close();
                return;
            }

            try
            {
                ExecuteTransaction(session, () =>
                {
                    NetworkFilter.IpFilter instance = NetworkFilter.IpFilter.Create(session,
                                                                                    new DisplayData {
                        Name = "ProtonVPN Permanent Provider"
                    },
                                                                                    true,
                                                                                    _providerGuid);

                    instance.CreateSublayer(new DisplayData {
                        Name = "ProtonVPN Permanent Sublayer"
                    },
                                            PermanentSublayerWeight,
                                            true,
                                            _sublayerGuid);

                    instance.CreateCallout(
                        new DisplayData
                    {
                        Name        = "ProtonVPN block dns callout",
                        Description = "Sends server failure packet response for non TAP/TUN DNS queries.",
                    },
                        DnsCalloutGuid,
                        Layer.OutboundIPPacketV4,
                        true);
                });
            }
            catch (NetworkFilterException e)
            {
                _logger.Error(e);
                throw;
            }
            finally
            {
                session.Close();
            }
        }
Exemple #3
0
 private void CreatePermanentSession()
 {
     PermanentInstance = new NetworkFilter.IpFilter(Session.Permanent(), _providerGuid);
     PermanentSublayer = new Sublayer(PermanentInstance, _sublayerGuid);
 }