public IEnumerable <string> GetFiles(string path, SearchOption searchOption, string[] extensions = null) { if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException(nameof(path)); } if (!Directory.Exists(path)) { throw new ArgumentException("Folder does not exist.", nameof(path)); } DirectoryRead?.Invoke(this, new DirectoryReadEventArgs(path)); if (extensions == null) { ExtensionsRead?.Invoke(this, new ExtensionsReadEventArgs("*.*")); foreach (var file in Directory.EnumerateFiles(path, "*.*", searchOption)) { yield return(file); } } else { foreach (var extension in extensions) { ExtensionsRead?.Invoke(this, new ExtensionsReadEventArgs(extension)); foreach (var file in Directory.EnumerateFiles(path, "*.*", searchOption) .Where(s => s.ToLower().EndsWith(extension.ToLower()))) { yield return(file); } } } }
private static TlsVersion GetVersion(ref ReadableBuffer buffer) { //Jump the version header and the randoms buffer = buffer.Slice(HandshakeProcessor.HandshakeHeaderSize); TlsVersion version; buffer = buffer.SliceBigEndian(out version); if (!_supportedVersion.Contains(version)) { Alerts.AlertException.ThrowAlert(Alerts.AlertLevel.Fatal, Alerts.AlertDescription.protocol_version, $"The version was not in the supported list {version}"); } //Slice out the random buffer = buffer.Slice(Hello.RandomLength); //No sessions slice and dump BufferExtensions.SliceVector <byte>(ref buffer); //Skip the cipher suites if we find a version we are happy with //then the cipher suite is dealt with by that version BufferExtensions.SliceVector <ushort>(ref buffer); //Skip compression, we don't care about that either, we just want to get to the end BufferExtensions.SliceVector <byte>(ref buffer); //And here we are at the end, if we have no extensions then we must be the header version that //we accepted earlier if (buffer.Length == 0) { return(version); } buffer = BufferExtensions.SliceVector <ushort>(ref buffer); while (buffer.Length >= 8) { ExtensionType type; buffer = buffer.SliceBigEndian(out type); var ext = BufferExtensions.SliceVector <ushort>(ref buffer); if (type == ExtensionType.supported_versions) { //Scan the version for supported ones return(ExtensionsRead.ReadSupportedVersion(ext, _supportedVersion)); } } return(version); }
private IEnumerable <string> GetContents( PortableDevice mtpDevice, PortableDeviceFolder mtpFolder, string path, SearchOption searchOption, string[] extensions = null) { if (extensions == null) { extensions = new[] { "*.*" } } ; foreach (var extension in extensions) { ExtensionsRead?.Invoke(this, new ExtensionsReadEventArgs(extension)); foreach (var file in EnumerateFiles(mtpDevice, mtpFolder, path, searchOption) .Where(s => s.ToLower().EndsWith(extension.ToLower()) || extension == "*.*")) { yield return(file); } } }