public void CloseSession(NetworkFilter.IpFilter instance, Sublayer sublayer) { if (instance.Session.Type == SessionType.Permanent) { sublayer.DestroyAllFilters(); } instance.Session.Close(); }
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(); } }
private void CreatePermanentSession() { PermanentInstance = new NetworkFilter.IpFilter(Session.Permanent(), _providerGuid); PermanentSublayer = new Sublayer(PermanentInstance, _sublayerGuid); }