Пример #1
0
        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;
                        }
                    }
                }
            }
        }
Пример #2
0
        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;
                        }
                    }
                }
            }
        }
Пример #3
0
		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;
						}
					}
				}
			}
		}
Пример #4
0
		void ResetExtensions()
		{
			authMechs = AuthMechs.None;
		}
Пример #5
0
        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));
        }
Пример #6
0
 void ResetExtensions()
 {
     authMechs = AuthMechs.None;
 }
Пример #7
0
		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;
						}
					}
				}
			}
		}