public static void Startup(int iListenPort, bool bRegisterAsSystemProxy, bool bDecryptSSL, bool bAllowRemote) { KProxyStartupFlags oFlags = KProxyStartupFlags.Default; if (bRegisterAsSystemProxy) { oFlags |= KProxyStartupFlags.RegisterAsSystemProxy; } else { oFlags &= ~KProxyStartupFlags.RegisterAsSystemProxy; } if (bDecryptSSL) { oFlags |= KProxyStartupFlags.DecryptSSL; } else { oFlags &= ~KProxyStartupFlags.DecryptSSL; } if (bAllowRemote) { oFlags |= KProxyStartupFlags.AllowRemoteClients; } else { oFlags &= ~KProxyStartupFlags.AllowRemoteClients; } Startup(iListenPort, oFlags); }
public static void Startup(int iListenPort, KProxyStartupFlags oFlags) { if (oProxy != null) { throw new InvalidOperationException("Calling startup twice without calling shutdown is not permitted."); } if ((iListenPort < 0) || (iListenPort > 0xffff)) { throw new ArgumentOutOfRangeException("bListenPort", "Port must be between 0 and 65535."); } KPCONFIG.ListenPort = iListenPort; KPCONFIG.bAllowRemoteConnections = KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.AllowRemoteClients); KPCONFIG.bMITM_HTTPS = KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.DecryptSSL); KPCONFIG.bCaptureCONNECT = true; KPCONFIG.bForwardToGateway = KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.ChainToUpstreamGateway); KPCONFIG.bHookAllConnections = KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.MonitorAllConnections); if (KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.CaptureLocalhostTraffic)) { KPCONFIG.sHostsThatBypassKProxy = KPCONFIG.sHostsThatBypassKProxy; } oProxy = new Proxy(true); if (oProxy.Start(KPCONFIG.ListenPort, KPCONFIG.bAllowRemoteConnections)) { if (iListenPort == 0) { KPCONFIG.ListenPort = oProxy.ListenPort; } if (KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.RegisterAsSystemProxy)) { oProxy.Attach(true); } else if (KProxyStartupFlags.None < (oFlags & KProxyStartupFlags.ChainToUpstreamGateway)) { oProxy.CollectConnectoidAndGatewayInfo(); } } }