public static bool TryParse(string str, out Torrc value) { value = null; List <HiddenServiceDir> serviceDirectories = new List <HiddenServiceDir>(); var lines = str.Split(new char[] { '\n' }); HiddenServiceDir currentDirectory = null; foreach (var line in lines) { if (HiddenServiceDir.TryParse(line, out var dir)) { serviceDirectories.Add(dir); currentDirectory = dir; } else if (HiddenServicePortDefinition.TryParse(line, out var portDef) && currentDirectory != null) { currentDirectory.ServicePorts.Add(portDef); } } value = new Torrc() { ServiceDirectories = serviceDirectories }; return(true); }
private static DirectoryInfo GetDirectory(HiddenServiceDir hs, string relativeTo) { if (Path.IsPathRooted(hs.DirectoryPath)) { return(new DirectoryInfo(hs.DirectoryPath)); } return(new DirectoryInfo(Path.Combine(relativeTo, hs.DirectoryPath))); }
public static bool TryParse(string str, out HiddenServiceDir serviceDir) { serviceDir = null; if (!str.Trim().StartsWith("HiddenServiceDir ", StringComparison.OrdinalIgnoreCase)) { return(false); } var parts = str.Split(new char[] { ' ', '\t' }, StringSplitOptions.None); if (parts.Length != 2) { return(false); } serviceDir = new HiddenServiceDir() { DirectoryPath = parts[1].Trim() }; return(true); }