public void SetNICsState(NICHandler.IP_CHOICES Where, bool bNICSet) { m_bNICsSet = bNICSet; m_NICsWhere = Where; }
public bool GetNICsSet(ref NICHandler.IP_CHOICES Where) { Where = m_NICsWhere; return(m_bNICsSet); }
private void SetState() { NICHandler.IP_CHOICES Where = NICHandler.IP_CHOICES.DEFAULT; bool bNICsSet = m_CurState.GetNICsSet(ref Where); bool bGotNetwork = false; bool bODNSAvailable = false; bool bIsProxyRunning = false; bool bIsAltPort = false; bool bCanUseEncrypted = false; m_CurState.GetNetworkState(ref bGotNetwork, ref bODNSAvailable, ref bIsAltPort, ref bIsProxyRunning, ref bCanUseEncrypted); bool bUseDNSCrypt = false; bool bUseDNSCryptTCP = false; bool bUseOpenDNS = false; bool bUseInsecure = false; m_CurState.GetCanDoDesiredNetworkState(ref bUseDNSCrypt, ref bUseDNSCryptTCP, ref bUseOpenDNS, ref bUseInsecure); // If we're not using TCP, and we want to use DNSCrypt, we must make sure we're encrypted if (!bUseDNSCryptTCP && bUseDNSCrypt) { // No secure connection means FAIL OVER if (!bGotNetwork || !bCanUseEncrypted) { if (bUseInsecure) { m_CurState.SetRunState(RUN_STATE.FAIL_OPEN); } else { m_CurState.SetRunState(RUN_STATE.FAIL_CLOSED); } if (!bUseDNSCryptTCP) { return; } } } switch (m_CurState.GetRunState()) { case RUN_STATE.FAIL_OPEN: if (bUseDNSCrypt && !bUseDNSCryptTCP && bCanUseEncrypted) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_FULL); } else if (bUseDNSCrypt && bUseDNSCryptTCP && bCanUseEncrypted) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_TCP); } else if (!bUseDNSCryptTCP && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.FAIL_CLOSED: if (bUseDNSCrypt && !bUseDNSCryptTCP && bCanUseEncrypted) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_FULL); } else if (bUseDNSCrypt && bUseDNSCryptTCP && bCanUseEncrypted) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_TCP); } else if (!bUseDNSCrypt && !bUseDNSCryptTCP && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.SERVICE_RUNNING: if (bUseDNSCrypt && bUseDNSCryptTCP && bIsProxyRunning && bNICsSet && Where == NICHandler.IP_CHOICES.LOCALHOST) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_TCP); } else if (bUseDNSCrypt && bIsProxyRunning && bNICsSet && Where == NICHandler.IP_CHOICES.LOCALHOST) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_FULL); } else if (!bUseDNSCrypt && !bUseDNSCryptTCP && bUseOpenDNS && bNICsSet && Where == NICHandler.IP_CHOICES.OPENDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.SERVICE_RESTART: if (bUseDNSCrypt && bUseDNSCryptTCP && bIsProxyRunning && bNICsSet && Where == NICHandler.IP_CHOICES.LOCALHOST) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_TCP); } else if (bUseDNSCrypt && !bUseDNSCryptTCP && bIsProxyRunning && bNICsSet && Where == NICHandler.IP_CHOICES.LOCALHOST) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_FULL); } else if (!bUseDNSCrypt && !bUseDNSCryptTCP && bUseOpenDNS && bNICsSet && Where == NICHandler.IP_CHOICES.OPENDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.DNSCRYPT_FULL: if (bUseDNSCrypt && !bUseDNSCryptTCP && !bCanUseEncrypted && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.FAIL_OPEN); } else if (bUseDNSCrypt && !bUseDNSCryptTCP && !bCanUseEncrypted && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.FAIL_CLOSED); } else if (bUseDNSCrypt && bUseDNSCryptTCP && bIsProxyRunning) { m_CurState.SetRunState(RUN_STATE.SERVICE_RESTART); } else if (!bUseDNSCrypt && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.DNSCRYPT_TCP: if (bUseDNSCrypt && bUseDNSCryptTCP && !bCanUseEncrypted && bUseInsecure) { m_CurState.SetRunState(RUN_STATE.FAIL_OPEN); } else if (bUseDNSCrypt && bUseDNSCryptTCP && !bCanUseEncrypted && !bUseInsecure) { m_CurState.SetRunState(RUN_STATE.FAIL_CLOSED); } else if (bUseDNSCrypt && !bUseDNSCryptTCP && bIsProxyRunning) { m_CurState.SetRunState(RUN_STATE.SERVICE_RESTART); } else if (!bUseDNSCrypt && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.OPENDNS_ONLY: if (bUseDNSCrypt && !bUseDNSCryptTCP && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_FULL); } if (bUseDNSCrypt && bUseDNSCryptTCP && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_TCP); } else if (bUseDNSCrypt && bUseOpenDNS && bUseInsecure) { m_CurState.SetRunState(RUN_STATE.FAIL_OPEN); } else if (bUseDNSCrypt && !bUseOpenDNS && !bUseInsecure) { m_CurState.SetRunState(RUN_STATE.FAIL_CLOSED); } else if (!bUseDNSCrypt && !bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DEFAULT); } break; case RUN_STATE.DEFAULT: if (bUseDNSCrypt && !bUseDNSCryptTCP && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_FULL); } else if (bUseDNSCrypt && bUseDNSCryptTCP && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.DNSCRYPT_TCP); } else if (!bUseDNSCrypt && bUseOpenDNS) { m_CurState.SetRunState(RUN_STATE.OPENDNS_ONLY); } break; } }