public void ReceivePreLoginResponse() { LoggingUtilities.WriteLog($" ReceivePreLoginResponse initiated."); if (TdsCommunicator.ReceiveTDSMessage() is TDSPreLoginPacketData response) { if (response.Options.Exists(opt => opt.Type == TDSPreLoginOptionTokenType.Encryption) && response.Encryption == TDSEncryptionOption.EncryptReq) { LoggingUtilities.WriteLog($" Server requires encryption, enabling encryption."); TdsCommunicator.EnableEncryption(Server, EncryptionProtocol); LoggingUtilities.WriteLog($" Encryption enabled."); } if (response.Options.Exists(opt => opt.Type == TDSPreLoginOptionTokenType.FedAuthRequired) && response.FedAuthRequired == true) { throw new NotSupportedException("FedAuth is being requested but the client doesn't support FedAuth."); } } else { throw new InvalidOperationException(); } LoggingUtilities.WriteLog($" ReceivePreLoginResponse done."); }
public void SendPreLogin() { LoggingUtilities.WriteLog($" SendPreLogin initiated."); var tdsMessageBody = new TDSPreLoginPacketData(Version); tdsMessageBody.AddOption(TDSPreLoginOptionTokenType.Encryption, TDSEncryptionOption.EncryptOff); tdsMessageBody.Terminate(); TdsCommunicator.SendTDSMessage(tdsMessageBody); LoggingUtilities.WriteLog($" SendPreLogin done."); }
public void ReceiveLogin7Response() { LoggingUtilities.WriteLog($" ReceiveLogin7Response initiated."); if (TdsCommunicator.ReceiveTDSMessage() is TDSTokenStreamPacketData response) { foreach (var token in response.Tokens) { if (token is TDSEnvChangeToken) { var envChangeToken = token as TDSEnvChangeToken; if (envChangeToken.Type == Tokens.EnvChange.TDSEnvChangeType.Routing) { LoggingUtilities.WriteLog($" Client recieved EnvChange routing token, client is being routed."); Server = envChangeToken.Values["AlternateServer"]; ServerName = Server; Port = int.Parse(envChangeToken.Values["ProtocolProperty"]); Reconnect = true; } } else if (token is TDSErrorToken) { var errorToken = token as TDSErrorToken; LoggingUtilities.WriteLog($" Client recieved Error token:"); LoggingUtilities.WriteLog($" Number: {errorToken.Number}"); LoggingUtilities.WriteLog($" State: {errorToken.State}"); LoggingUtilities.WriteLog($" Class: {errorToken.Class}"); LoggingUtilities.WriteLog($" MsgText: {errorToken.MsgText}"); LoggingUtilities.WriteLog($" ServerName: {errorToken.ServerName}"); LoggingUtilities.WriteLog($" ProcName: {errorToken.ProcName}"); LoggingUtilities.WriteLog($" LineNumber: {errorToken.LineNumber}"); if (errorToken.Number == 18456) { throw new Exception("Login failure."); } } } } else { throw new InvalidOperationException(); } LoggingUtilities.WriteLog($" ReceiveLogin7Response done."); }
public void SendLogin7() { LoggingUtilities.WriteLog($" SendLogin7 initiated."); var tdsMessageBody = new TDSLogin7PacketData(); tdsMessageBody.AddOption("HostName", (ushort)Environment.MachineName.Length, Environment.MachineName); tdsMessageBody.AddOption("UserName", (ushort)UserID.Length, UserID); tdsMessageBody.AddOption("ServerName", (ushort)ServerName.Length, ServerName); tdsMessageBody.AddOption("Password", (ushort)Password.Length, Password); tdsMessageBody.AddOption("Database", (ushort)Database.Length, Database); tdsMessageBody.AddOption("IntName", (ushort)"TDSSQLTestClient".Length, "TDSSQLTestClient"); tdsMessageBody.OptionFlags1.Char = TDSLogin7OptionFlags1Char.CharsetASCII; tdsMessageBody.OptionFlags1.Database = TDSLogin7OptionFlags1Database.InitDBFatal; tdsMessageBody.OptionFlags1.DumpLoad = TDSLogin7OptionFlags1DumpLoad.DumploadOn; tdsMessageBody.OptionFlags1.Float = TDSLogin7OptionFlags1Float.FloatIEEE754; tdsMessageBody.OptionFlags1.SetLang = TDSLogin7OptionFlags1SetLang.SetLangOn; tdsMessageBody.OptionFlags1.ByteOrder = TDSLogin7OptionFlags1ByteOrder.OrderX86; tdsMessageBody.OptionFlags1.UseDB = TDSLogin7OptionFlags1UseDB.UseDBOff; tdsMessageBody.OptionFlags2.Language = TDSLogin7OptionFlags2Language.InitLangFatal; tdsMessageBody.OptionFlags2.ODBC = TDSLogin7OptionFlags2ODBC.OdbcOn; tdsMessageBody.OptionFlags2.UserType = TDSLogin7OptionFlags2UserType.UserNormal; tdsMessageBody.OptionFlags3.ChangePassword = TDSLogin7OptionFlags3ChangePassword.NoChangeRequest; tdsMessageBody.OptionFlags3.UserInstanceProcess = TDSLogin7OptionFlags3UserInstanceProcess.DontRequestSeparateProcess; tdsMessageBody.OptionFlags3.UnknownCollationHandling = TDSLogin7OptionFlags3UnknownCollationHandling.On; tdsMessageBody.OptionFlags3.Extension = TDSLogin7OptionFlags3Extension.DoesntExist; tdsMessageBody.TypeFlags.OLEDB = TDSLogin7TypeFlagsOLEDB.On; tdsMessageBody.TypeFlags.SQLType = TDSLogin7TypeFlagsSQLType.DFLT; tdsMessageBody.TypeFlags.ReadOnlyIntent = TDSLogin7TypeFlagsReadOnlyIntent.On; TdsCommunicator.SendTDSMessage(tdsMessageBody); LoggingUtilities.WriteLog($" SendLogin7 done."); }