void ParseExtensions(string extens) { char[] delims = new char [1] { ' ' }; string[] parts = extens.Split('\n'); foreach (string part in parts) { if (part.Length < 4) { continue; } string start = part.Substring(4); if (start.StartsWith("AUTH ", StringComparison.Ordinal)) { string[] options = start.Split(delims); for (int k = 1; k < options.Length; k++) { string option = options[k].Trim(); switch (option) { case "CRAM-MD5": authMechs |= AuthMechs.CramMD5; break; case "DIGEST-MD5": authMechs |= AuthMechs.DigestMD5; break; case "GSSAPI": authMechs |= AuthMechs.GssAPI; break; case "KERBEROS_V4": authMechs |= AuthMechs.Kerberos4; break; case "LOGIN": authMechs |= AuthMechs.Login; break; case "PLAIN": authMechs |= AuthMechs.Plain; break; } } } } }
void ParseExtensions(string extens) { string[] parts = extens.Split('\n'); foreach (string part in parts) { if (part.Length < 4) { continue; } string start = part.Substring(4); if (start.StartsWith("AUTH ", StringComparison.Ordinal)) { string[] options = start.Split(' '); for (int k = 1; k < options.Length; k++) { string option = options[k].Trim(); // GSSAPI, KERBEROS_V4, NTLM not supported switch (option) { /* * case "CRAM-MD5": * authMechs |= AuthMechs.CramMD5; * break; * case "DIGEST-MD5": * authMechs |= AuthMechs.DigestMD5; * break; */ case "LOGIN": authMechs |= AuthMechs.Login; break; case "PLAIN": authMechs |= AuthMechs.Plain; break; } } } } }
void ParseExtensions (string extens) { string[] parts = extens.Split ('\n'); foreach (string part in parts) { if (part.Length < 4) continue; string start = part.Substring (4); if (start.StartsWith ("AUTH ", StringComparison.Ordinal)) { string[] options = start.Split (' '); for (int k = 1; k < options.Length; k++) { string option = options[k].Trim(); // GSSAPI, KERBEROS_V4, NTLM not supported switch (option) { /* case "CRAM-MD5": authMechs |= AuthMechs.CramMD5; break; case "DIGEST-MD5": authMechs |= AuthMechs.DigestMD5; break; */ case "LOGIN": authMechs |= AuthMechs.Login; break; case "PLAIN": authMechs |= AuthMechs.Plain; break; } } } } }
void ResetExtensions() { authMechs = AuthMechs.None; }
void ParseExtensions(string extens) { char [] delims = new char [1] { ' ' }; int ln = 0; do { if (ln != 0) { ln++; } if (ln + 4 >= extens.Length) { break; } if (extens.Substring(ln, 4) == "AUTH" && (extens[ln + 4] == ' ' || extens[ln + 4] == '=')) { int eoln = extens.IndexOf('\n', ln + 4); string mechlist = extens.Substring(ln, eoln); string [] mechs = mechlist.Split(delims); ln = eoln; for (int i = 0; i < mechs.Length; i++) { switch (mechs[i]) { case "CRAM-MD5": authMechs |= AuthMechs.CramMD5; break; case "DIGEST-MD5": authMechs |= AuthMechs.DigestMD5; break; case "GSSAPI": authMechs |= AuthMechs.GssAPI; break; case "KERBEROS_V4": authMechs |= AuthMechs.Kerberos4; break; case "LOGIN": authMechs |= AuthMechs.Login; break; case "PLAIN": authMechs |= AuthMechs.Plain; break; } } } else if (ln + 8 < extens.Length && extens.Substring(ln, 8) == "STARTTLS") { canStartTLS = true; } } while (ln < extens.Length && ((ln = extens.IndexOf('\n', ln)) != -1)); }
void ParseExtensions (string extens) { char[] delims = new char [1] { ' ' }; string[] parts = extens.Split ('\n'); foreach (string part in parts) { if (part.Length < 4) continue; string start = part.Substring (4); if (start.StartsWith ("AUTH ", StringComparison.Ordinal)) { string[] options = start.Split (delims); for (int k = 1; k < options.Length; k++) { string option = options[k].Trim(); switch (option) { case "CRAM-MD5": authMechs |= AuthMechs.CramMD5; break; case "DIGEST-MD5": authMechs |= AuthMechs.DigestMD5; break; case "GSSAPI": authMechs |= AuthMechs.GssAPI; break; case "KERBEROS_V4": authMechs |= AuthMechs.Kerberos4; break; case "LOGIN": authMechs |= AuthMechs.Login; break; case "PLAIN": authMechs |= AuthMechs.Plain; break; } } } } }