#Region Project Attributes
#ApplicationLabel: Teste Extremo SQL
#VersionCode: 1
#VersionName: 1.0
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
'#AdditionalJar: mssql-jdbc-9.4.1.jre11.jar
#AdditionalJar: mssql-jdbc-12.8.1.jre8.jar
#End Region
Sub Process_Globals
Public sql As JdbcSQL
Private driver As String = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
Private testeEmAndamento As Boolean = False
Private tentativa As Int = 1
End Sub
Sub Globals
Private txtIP, txtPorta As EditText
Private btnTestar, btnDiagnostico As Button
Private lblStatus, lblDetalhes As Label
Private ProgressBar1 As ProgressBar
Private pnlConfig As Panel
End Sub
Sub Activity_Create(FirstTime As Boolean)
Log("Iniciando aplicação...")
Log("JAR SQL Server: mssql-jdbc-12.8.1.jre8.jar")
Try
' Tenta carregar uma classe do driver para verificar
Dim jo As JavaObject
jo.InitializeStatic("com.microsoft.sqlserver.jdbc.SQLServerDriver")
Log("Driver SQL Server OK!")
Catch
Log("ERRO: Não foi possível carregar o driver SQL Server")
Log("Verifique se o JAR está em #AdditionalJar")
End Try
Activity.Color = Colors.White
CriarLayoutExtremo
txtIP.Text = "10.80.167.56" ' "192.168.68.101"
txtPorta.Text = "1434"
End Sub
Sub CriarLayoutExtremo
Dim largura As Int = 100%x
Dim margem As Int = 15dip
Dim alturaItem As Int = 45dip
Dim topo As Int = 20dip
' Painel
pnlConfig.Initialize("")
Activity.AddView(pnlConfig, 0, 0, largura, 100%y)
pnlConfig.Color = Colors.White
' Título
Dim lblTitulo As Label
lblTitulo.Initialize("")
pnlConfig.AddView(lblTitulo, 0, topo, largura, 40dip)
lblTitulo.Text = "CONEXÃO EXTREMA SQL 2022"
lblTitulo.TextSize = 16
lblTitulo.Gravity = Gravity.CENTER
lblTitulo.TextColor = Colors.Red
topo = topo + 50dip
' IP
Dim lblIP As Label
lblIP.Initialize("")
pnlConfig.AddView(lblIP, margem, topo, largura - 2*margem, 20dip)
lblIP.Text = "IP do SQL Server 2022:"
lblIP.TextSize = 12
topo = topo + 25dip
txtIP.Initialize("")
pnlConfig.AddView(txtIP, margem, topo, largura - 2*margem, alturaItem)
txtIP.Text = "192.168.68.101"
topo = topo + alturaItem + 10dip
' Porta
Dim lblPorta As Label
lblPorta.Initialize("")
pnlConfig.AddView(lblPorta, margem, topo, largura - 2*margem, 20dip)
lblPorta.Text = "Porta TCP (1434):"
lblPorta.TextSize = 12
topo = topo + 25dip
txtPorta.Initialize("")
pnlConfig.AddView(txtPorta, margem, topo, 100dip, alturaItem)
txtPorta.Text = "1434"
topo = topo + alturaItem + 20dip
' Botões
btnDiagnostico.Initialize("btnDiagnostico")
pnlConfig.AddView(btnDiagnostico, margem, topo, (largura - 3*margem)/2, alturaItem)
btnDiagnostico.Text = "TESTAR PORTA"
btnDiagnostico.Color = Colors.Yellow
btnTestar.Initialize("btnTestar")
pnlConfig.AddView(btnTestar, 2*margem + (largura - 3*margem)/2, topo, (largura - 3*margem)/2, alturaItem)
btnTestar.Text = "TESTE EXTREMO"
btnTestar.Color = Colors.Red
topo = topo + alturaItem + 20dip
' ProgressBar
ProgressBar1.Initialize("")
pnlConfig.AddView(ProgressBar1, margem, topo, largura - 2*margem, 15dip)
ProgressBar1.Visible = False
topo = topo + 25dip
' Status
lblStatus.Initialize("")
pnlConfig.AddView(lblStatus, margem, topo, largura - 2*margem, 50dip)
lblStatus.Gravity = Gravity.CENTER
lblStatus.TextSize = 16
lblStatus.Text = "MODO EXTREMO ATIVADO"
lblStatus.TextColor = Colors.Red
topo = topo + 60dip
' Detalhes
lblDetalhes.Initialize("")
pnlConfig.AddView(lblDetalhes, margem, topo, largura - 2*margem, 300dip)
lblDetalhes.TextSize = 11
lblDetalhes.TextColor = Colors.DarkGray
lblDetalhes.Text = "CONFIGURAÇÃO RADICAL SQL 2022:" & CRLF & _
"1. ForceEncryption: DISABLED" & CRLF & _
"2. TLS/SSL: DISABLED" & CRLF & _
"3. Protocolo: TCP apenas" & CRLF & _
"4. Compatibilidade: 2019" & CRLF & _
"5. Login: sa / surfbyte" & CRLF & _
"6. Banco: master" & CRLF & CRLF & _
"Executando 5 métodos extremos..."
End Sub
Sub btnDiagnostico_Click
Dim ip As String = txtIP.Text.Trim
If ip = "" Then ip = "10.80.167.56"
Dim porta As String = txtPorta.Text.Trim
If porta = "" Then porta = "1434"
ProgressBar1.Visible = True
lblStatus.Text = "Testando porta..."
lblStatus.Color = Colors.Blue
Dim resultado As String = TestarPorta(ip, porta)
ProgressBar1.Visible = False
If resultado = "OK" Then
lblStatus.Text = "PORTA ABERTA"
lblStatus.Color = Colors.Green
lblDetalhes.Text = "Port " & porta & " OK!" & CRLF & _
"Server: " & ip & CRLF & _
"Ready for test."
Else
lblStatus.Text = "PORTA FECHADA"
lblStatus.Color = Colors.Red
lblDetalhes.Text = "Porta " & porta & " not ready." & CRLF & _
"ERRO: " & resultado & CRLF & CRLF & _
""
End If
Log(DateTime.Time(DateTime.Now) & ": " & lblDetalhes.Text)
Log(DateTime.Time(DateTime.Now) & ": " & lblStatus.Text)
End Sub
Sub TestarPorta(host As String, port As String) As String
Try
Dim portaInt As Int = port
Dim socket As JavaObject
socket.InitializeNewInstance("java.net.Socket", Null)
Dim inetAddress As JavaObject
inetAddress.InitializeStatic("java.net.InetAddress")
Dim addr As JavaObject = inetAddress.RunMethod("getByName", Array(host))
Dim socketAddress As JavaObject
socketAddress.InitializeNewInstance("java.net.InetSocketAddress", Array(addr, portaInt))
socket.RunMethod("connect", Array(socketAddress, 5000))
Dim conectado As Boolean = socket.RunMethod("isConnected", Null)
If conectado Then
socket.RunMethod("close", Null)
Return "OK"
Else
Return "Não conectado"
End If
Catch
Return LastException.Message
End Try
End Sub
Sub btnTestar_Click
If testeEmAndamento Then Return
Dim ipServidor As String = txtIP.Text.Trim
Dim porta As String = txtPorta.Text.Trim
If ipServidor = "" Then ipServidor = "192.168.68.101"
If porta = "" Then porta = "1434"
tentativa = 1
testeEmAndamento = True
btnTestar.Enabled = False
btnDiagnostico.Enabled = False
ProgressBar1.Visible = True
ExecutarTesteExtremo(ipServidor, porta, 1)
End Sub
Sub ExecutarTesteExtremo(ipServidor As String, porta As String, metodo As Int)
Dim url As String
Dim usuario As String = "sa"
Dim senha As String = "surfbyte"
Dim banco As String = "SurfByte"
' MÉTODO 1: Forçar TLS 1.0 desabilitado COMPLETAMENTE
url = "jdbc:sqlserver://" & ipServidor & ":" & porta & ";" & _
"databaseName=" & banco & ";" & _
"instance=SQLEXPRESS;" & _
"user=" & usuario & ";" & _
"password=" & senha & ";" & _
"encrypt=false;" & _
"trustServerCertificate=false;" & _
"loginTimeout=30;" & _
"sendStringParametersAsUnicode=true;" & _
"integratedSecurity=false;" & _
"authenticationScheme=NTLM;" & _
"jaasConfigurationName=SQLJDBCDriver;" & _
"trustStore=;" & _
"trustStorePassword=;" & _
"hostNameInCertificate=*;" & _
"serverNameAsACE=false;" & _
"xopenStates=false;" & _
"sendTimeAsDatetime=true;" & _
"packetSize=4096;" & _
"multiSubnetFailover=false"
lblStatus.Text = "MÉTODO 1: TLS DESABILITADO"
lblDetalhes.Text = "Método " & metodo & " de 5" & CRLF & _
"URL: " & url & CRLF & _
"Timeout: 30 segundos"
Log(DateTime.Time(DateTime.Now) & ": " & "=== Starting... ===")
Log(DateTime.Time(DateTime.Now) & ": " & "URL: " & url)
If sql.IsInitialized Then sql.Close
Try
If url.Contains("user=") Then
sql.InitializeAsync("SQL", driver, url, "", "")
Else
sql.InitializeAsync("SQL", driver, url, usuario, senha)
End If
Log(DateTime.Time(DateTime.Now) & ": " & "url Start")
' Timeout longo
Dim inicio As Long = DateTime.Now
Do While DateTime.Now < inicio + 30000 And testeEmAndamento
Sleep(100)
Loop
Catch
Log(DateTime.Time(DateTime.Now) & ": " & "Error: " & LastException.Message)
' ExecutarTesteExtremo(ipServidor, porta, metodo + 1)
End Try
End Sub
Sub SQL_Ready (Success As Boolean)
Log(DateTime.Time(DateTime.Now) & ": " & "SQL_Ready: " & Success)
If Success Then
' CONSEGUIMOS!
Try
Dim cur As JdbcResultSet = sql.ExecQuery("SELECT @@VERSION as versao")
If cur.NextRow Then
Dim versao As String = cur.GetString("versao")
cur.Close
Dim versaoCurta As String = versao
If versao.Length > 40 Then
versaoCurta = versao.SubString2(0, 40) & "..."
End If
FinalizarTeste(True, "SUCESSO NO MÉTODO " & tentativa & "!" & CRLF & CRLF & _
"SQL SERVER 2022 CONECTADO!" & CRLF & _
"Versão: " & versaoCurta & CRLF & CRLF & _
"Configuração que funcionou:" & CRLF & _
lblStatus.Text)
Else
cur.Close
FinalizarTeste(True, "CONECTADO! Método " & tentativa)
End If
Catch
FinalizarTeste(True, "CONECTADO! Erro consulta:" & CRLF & _
LastException.Message)
End Try
Else
' Falha - próximo método
Dim erro As String = LastException.Message
Log(DateTime.Time(DateTime.Now) & ": " & "Fail " & tentativa & ": " & erro)
Dim ipServidor As String = txtIP.Text.Trim
Dim porta As String = txtPorta.Text.Trim
'ExecutarTesteExtremo(ipServidor, porta, tentativa + 1)
End If
End Sub
Sub FinalizarTeste(sucesso As Boolean, mensagem As String)
testeEmAndamento = False
btnTestar.Enabled = True
btnDiagnostico.Enabled = True
ProgressBar1.Visible = False
If sucesso Then
lblStatus.Text = "CONEXÃO EXTREMA OK!"
lblStatus.Color = Colors.Green
Else
lblStatus.Text = "FALHA TOTAL"
lblStatus.Color = Colors.Red
End If
lblDetalhes.Text = mensagem
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
If sql.IsInitialized Then
sql.Close
End If
End Sub