public void FromReader(DataReader reader, DataFrames.DataKey root, Utils.Logger logger) { IStreamTypeParser parser = new T(); StateDictionary state = new StateDictionary(); try { // Reset byte count reader.ByteCount = 0; parser.FromStream(reader, state, logger); ObjectConverter.ToNode(root, parser, _derivedTypes); } catch (ThreadAbortException) { throw; } catch (Exception ex) { if (!(ex is EndOfStreamException) || (reader.ByteCount != 0)) { logger.LogError(CANAPE.Parser.Properties.Resources.GenericStreamParser_ReadException, ex.Message, typeof(T).Name); } throw; } }
/// <summary> /// Set the node state /// </summary> /// <param name="state"></param> /// <param name="logger"></param> public void SetState(object state, Utils.Logger logger) { T config = state as T; if (state == null) { logger.LogError(Properties.Resources.PersistNodeImpl_InvalidConfig, GetType().Name); } else { ValidateConfig(config); _config = config; } }
/// <summary> /// Create client /// </summary> /// <param name="logger">The logger to use</param> /// <returns>The new proxy client</returns> public override ProxyClient Create(Utils.Logger logger) { IWebProxyScript proxyScript = GetProxyInstance(); if (proxyScript == null) { logger.LogError(Properties.Resources.ScriptProxyFactory_CannotCreateScript); return(new IpProxyClient()); } else { return(new ScriptProxyClient(proxyScript)); } }
/// <summary> /// Create client /// </summary> /// <param name="logger">The logger to use</param> /// <returns>The new proxy client</returns> public override ProxyClient Create(Utils.Logger logger) { logger.LogError(Properties.Resources.ScriptProxyFactory_CannotCreateScript); return(new IpProxyClient()); // TODO: Implement a better way of using this // IWebProxyScript proxyScript = GetProxyInstance(); //if (proxyScript == null) //{ // logger.LogError(Properties.Resources.ScriptProxyFactory_CannotCreateScript); // return new IpProxyClient(); //} //else //{ // return new ScriptProxyClient(proxyScript); //} }
public void ToWriter(DataFrames.DataWriter writer, DataFrames.DataKey root, Utils.Logger logger) { StateDictionary state = new StateDictionary(); try { IStreamTypeParser parser = ObjectConverter.FromNode <T>(root, _derivedTypes); parser.ToStream(writer, state, logger); } catch (ThreadAbortException) { throw; } catch (Exception ex) { logger.LogError(CANAPE.Parser.Properties.Resources.GenericStreamParser_WriteException, ex.Message, typeof(T).Name); throw; } }
/// <summary> /// Method to create a proxy client /// </summary> /// <param name="logger">The logger to use</param> /// <returns>The new proxy client</returns> public override ProxyClient Create(Utils.Logger logger) { ProxyClient ret = new IpProxyClient(); try { RegistryKey settings = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"); int enabled = (int)settings.GetValue("ProxyEnable", 0); if (enabled != 0) { string autoConfigUrl = settings.GetValue("AutoConfigURL") as string; if (autoConfigUrl != null) { Uri autoConfigUri = new Uri(autoConfigUrl, UriKind.Absolute); if ((_scriptFactory == null) || (!_scriptFactory.ScriptUri.Equals(autoConfigUri))) { using (WebClient client = new WebClient()) { client.Proxy = null; string scriptData = client.DownloadString(autoConfigUrl); logger.LogVerbose("Received auto config script from {0}", autoConfigUrl); logger.LogVerbose(scriptData); _scriptFactory = new ScriptProxyClientFactory(); _scriptFactory.ScriptUri = autoConfigUri; _scriptFactory.Script = scriptData; } } ret = _scriptFactory.Create(logger); } else { string proxyServer = settings.GetValue("ProxyServer") as string; if (proxyServer != null) { string[] servers = proxyServer.ToLower().Split(new[] { ' ', ';' }, StringSplitOptions.RemoveEmptyEntries); string currServer = null; bool socks = false; // Take socks in preference, otherwise accept HTTP or default foreach (string server in servers) { if (server.Contains('=')) { if (server.StartsWith("socks=")) { currServer = server.Substring(6).Trim(); logger.LogVerbose("Found system SOCKS server {0}", currServer); socks = true; break; } else if (server.StartsWith("http=")) { currServer = server.Substring(5).Trim(); logger.LogVerbose("Found system HTTP proxy {0}", currServer); } } else { currServer = server.Trim(); logger.LogVerbose("Found default HTTP proxy {0}", currServer); } } if (currServer != null) { string host = null; int port = 0; if (currServer.Contains("/")) { if (Uri.IsWellFormedUriString(currServer, UriKind.Absolute)) { Uri uri = new Uri(currServer); host = uri.Host; port = uri.Port; } } else { string[] values = currServer.Split(':'); if (values.Length == 2) { host = values[0].Trim(); int.TryParse(values[1].Trim(), out port); } } if (String.IsNullOrWhiteSpace(host) || (port <= 0) || (port > 65535)) { logger.LogError("Invalid system proxy string {0}", currServer); } else { if (socks) { ret = new SocksProxyClient(host, port, false, SocksProxyClient.SupportedVersion.Version4, false); } else { ret = new HttpProxyClient(host, port, false); } } } } } } } catch (SecurityException) { } catch (UnauthorizedAccessException) { } catch (WebException ex) { logger.LogException(ex); } return(ret); }