|
Home → WINDEV 25 → WX - EXEMPLO COMPLETO DE WEBSERVICE COM WEBDEV E WINDEV MOBILE |
WX - EXEMPLO COMPLETO DE WEBSERVICE COM WEBDEV E WINDEV MOBILE |
Started by BOLLER, Aug., 16 2017 7:58 PM - 10 replies |
| |
| | | |
|
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on August, 16 2017 - 7:58 PM |
GLOBAL DO PROJETO WEBDEV
1.o CRIA A ANÁLISE COM SUAS TABELAS E RELACIONAMENTOS
HCreationIfNotFound("*") HModifyStructure("*",hmsBackgroundTask) GloToken is string = "0xvmkedovnvodwq3913jc0333v10934567890kjhgfdfghjk842698672"
PROCEDURE INTERNAS
Procedure PRIVATE Global_SQLConectarBanco()
VarGlo is composed WITH ConfigServerUsuario is string ConfigServerSenha is string ConfigServerBancoDados is string ConfigServerIP is string END
VarGlo.ConfigServerUsuario = "admin" VarGlo.ConfigServerSenha = "@!nt2017" VarGlo.ConfigServerBancoDados = "baseadm" VarGlo.ConfigServerIP = "189.130.16.11"
IF HDescribeConnection(ConexaoBancoDeDados,VarGlo.ConfigServerUsuario,VarGlo.ConfigServerSenha,VarGlo.ConfigServerIP,VarGlo.ConfigServerBancoDados,hNativeAccessSQLServer,hOReadWrite) THEN IF HOpenConnection(ConexaoBancoDeDados) THEN IF HChangeConnection("*",ConexaoBancoDeDados) THEN HCheckStructure("*",hNoCheck) RESULT True ELSE Error("HDescribeConnection (HChangeConnection): " + VarGlo.ConfigServerBancoDados + CR + "Código do Erro: " + CR + HErrorInfo()) RESULT False END ELSE Error("HDescribeConnection (HOpenConnection): " + VarGlo.ConfigServerBancoDados + CR + "Código do Erro: " + CR + HErrorInfo()) RESULT False END ELSE Error("HDescribeConnection (HDescribeConnection): " + VarGlo.ConfigServerBancoDados + CR + "Código do Erro: " + CR + HErrorInfo()) RESULT False END
Procedure PRIVATE Global_Xml01_TagInicial(paramID)
Resultado is string
Resultado = "<NoXml id=" + Charact(34) + NoSpace(paramID) + Charact(34) + ">"
RESULT Resultado
Procedure PRIVATE Global_Xml02_TagDetalhe(paramTabelaCampo, paramDado)
Resultado is string
Resultado = "<"+ NoSpace(paramTabelaCampo) +">" + NoSpace(paramDado) + "</"+ NoSpace(paramTabelaCampo) +">"
RESULT Resultado
Procedure PRIVATE Global_Xml03_TagTotal(paramTotal)
Resultado is string
Resultado = "<Total>"+paramTotal+"</Total>"
RESULT Resultado
Procedure PRIVATE Global_Xml04_TagFinal()
Resultado is string
Resultado = "</NoXml>"
RESULT Resultado
PROCEDURES PUBLICAS
NO GLOBAL DA PROCEDURE
arr_Resultados is array of string gsValorMemorizado is string = 1 DeclareWebserviceContext(gsValorMemorizado) DeclareWebserviceContext(arr_Resultados)
Procedure WS_ConsultarUsuario(token, paramCPF, paramSenha)
bLoginValido is boolean = False sXMLRetorno is string arrayResultadoLocal is array of string sSQL is string dsSelect is Data Source
IF Global_SQLConectarBanco() = True AND GloToken = token THEN sSQL = "EXEC [DBO].[PR_LOGIN] '%1','%2'" sSQL = StringBuild(sSQL, paramCPF, paramSenha) IF HExecuteSQLQuery(dsSelect, ConexaoBancoDeDados, hQueryWithoutCorrection, sSQL) THEN sXMLRetorno = "" sXMLRetorno += "<Xml><Retorno>" HReadFirst(dsSelect,hNoRefresh) IF HNbRec(dsSelect) > 0 THEN sXMLRetorno += Global_Xml01_TagInicial(1) sXMLRetorno += Global_Xml02_TagDetalhe("usuario_id",dsSelect.COD_USUR) sXMLRetorno += Global_Xml02_TagDetalhe("usuario_cpf",dsSelect.CNPJ_CPF_USUR) sXMLRetorno += Global_Xml02_TagDetalhe("usuario_nome",dsSelect.NOM_USUR) sXMLRetorno += Global_Xml02_TagDetalhe("usuario_senha",dsSelect.PASSWORDHASH) sXMLRetorno += Global_Xml02_TagDetalhe("message","Sucesso") sXMLRetorno += Global_Xml04_TagFinal() sXMLRetorno += Global_Xml03_TagTotal(1) ELSE sXMLRetorno += "<Error>Zero registro<Error>" END sXMLRetorno += "</Retorno></Xml>" ELSE sXMLRetorno = "" sXMLRetorno += "<Error>Erro consulta<Error>" sXMLRetorno += Global_Xml03_TagTotal(0) END HCancelDeclaration(dsSelect) ELSE sXMLRetorno = "" sXMLRetorno += "<Error>Sem conexão<Error>" sXMLRetorno += Global_Xml03_TagTotal(0) END HCloseConnection(ConexaoBancoDeDados)
Add(arrayResultadoLocal, sXMLRetorno)
RESULT (arrayResultadoLocal)
Procedure WS_CriptaString(token, Texto01, Texto02)
bLoginValido is boolean = False sXMLRetorno is string arrayResultadoLocal is array of string sSQL is string dsSelect is Data Source
IF Global_SQLConectarBanco() = True AND GloToken = token THEN sSQL = "EXEC [DBO].[CriptarString] '%1', %2" sSQL = StringBuild(sSQL, Texto01, Texto02) IF HExecuteSQLQuery(dsSelect, ConexaoBancoDeDados, hQueryWithoutCorrection, sSQL) THEN sXMLRetorno = "" sXMLRetorno += "<Xml><Retorno>" HReadFirst(dsSelect,hNoRefresh) IF HNbRec(dsSelect) > 0 THEN sXMLRetorno += Global_Xml01_TagInicial(1) sXMLRetorno += Global_Xml02_TagDetalhe("retorno",dsSelect.retorno) sXMLRetorno += Global_Xml04_TagFinal() sXMLRetorno += Global_Xml03_TagTotal(1) ELSE sXMLRetorno += "<Error>Zero registro<Error>" END sXMLRetorno += "</Retorno></Xml>" ELSE sXMLRetorno = "" sXMLRetorno += "<Error>Erro consulta<Error>" sXMLRetorno += Global_Xml03_TagTotal(0) END HCancelDeclaration(dsSelect) ELSE sXMLRetorno = "" sXMLRetorno += "<Error>Sem conexão<Error>" sXMLRetorno += Global_Xml03_TagTotal(0) END HCloseConnection(ConexaoBancoDeDados)
Add(arrayResultadoLocal, sXMLRetorno) RESULT (arrayResultadoLocal)
Procedure WS_RotasGoogleMaps(enderecoOrigem is string, enderecoDestino is string)
Resultado is string
arrayResultadoLocal is array of string
IF enderecoOrigem = "" OR enderecoDestino = "" THEN RESULT(Null) END
enderecoOrigem = Replace(enderecoOrigem," ","+") enderecoDestino = Replace(enderecoDestino," ","+") enderecoOrigem = NoAccent(NoSpace(enderecoOrigem)) enderecoDestino = NoAccent(NoSpace(enderecoDestino))
HTTPCreateForm("GoogleMaps") HTTPAddParameter("GoogleMaps","origin", enderecoOrigem) HTTPAddParameter("GoogleMaps","destination", enderecoDestino) HTTPAddParameter("GoogleMaps","language", "pt-BR") HTTPAddParameter("GoogleMaps","region", "br") HTTPAddParameter("GoogleMaps","units", "metric")
HTTPAddParameter("GoogleMaps","key","AIzaSyDbSVKYPwB1a-_vPbDzAr6LgAfIj4iW2hc")
cMyRequest is a httpRequest cMyRequest..URL = "https://maps.googleapis.com/maps/api/directions/xml" cMyRequest..Method = httpGet
cMyResponse is a httpResponse = HTTPSendForm("GoogleMaps", cMyRequest)
IF cMyResponse..StatusCode <> 200 THEN RESULT(Null) END
xmlGoogle is a xmlDocument = XMLOpen(cMyResponse..Content, fromString) IF NOT xmlGoogle.DirectionsResponse.status..Text ~= "OK" THEN RESULT(Null) END
Resultado = "<Xml><Resultado><NoXml>" Resultado += "<enderecoOrigem>" + xmlGoogle.DirectionsResponse.route.leg.start_address + "</enderecoOrigem>" Resultado += "<enderecoDestino>" + xmlGoogle.DirectionsResponse.route.leg.end_address + "</enderecoDestino>" Resultado += "<durationvalue>" + xmlGoogle.DirectionsResponse.route.leg.duration.value + "</durationvalue>" Resultado += "<durationtext>" + xmlGoogle.DirectionsResponse.route.leg.duration.text + "</durationtext>" Resultado += "<distancevalue>" + xmlGoogle.DirectionsResponse.route.leg.distance.value + "</distancevalue>" Resultado += "<distancetext>" + xmlGoogle.DirectionsResponse.route.leg.distance.text + "</distancetext>" Resultado += "<polyline>" + xmlGoogle.DirectionsResponse.route.overview_polyline.points + "</polyline>" Resultado += "<latitudeOrigem>" + xmlGoogle.DirectionsResponse.route.leg.start_location.lat + "</latitudeOrigem>" Resultado += "<longitudeOrigem>" + xmlGoogle.DirectionsResponse.route.leg.start_location.lng + "</longitudeOrigem>" Resultado += "<latitudeDestino>" + xmlGoogle.DirectionsResponse.route.leg.end_location.lat + "</latitudeDestino>" Resultado += "<longitudeDestino>" + xmlGoogle.DirectionsResponse.route.leg.end_location.lng + "</longitudeDestino>"
Contador is int = 1 FOR EACH legNode OF xmlGoogle.DirectionsResponse.route.leg IF legNode..Name = "step" THEN HTML is string = legNode.html_instructions Distancia is int = legNode.distance.value Resultado += "<instrucao id="+ Contador + ">" + HTML + " [" + Distancia + "]" + "</instrucao>" Contador++ END END
Resultado += "</NoXml></Resultado></Xml>"
Add(arrayResultadoLocal, Resultado)
RESULT(arrayResultadoLocal)
Procedure Ws_BuscaEndereco(Token, Endereco)
arrResultado is array of string ok is boolean = False X is int = 0 nTokenOk is int = 0 sTabela is string = "Enderecos" Resultado is string = "" sErro is string = ""
IF Token <> "" AND Token = GloToken OkConn is boolean = False OkConn = HConnectionOpen(MyHfsql) IF OkConn = True THEN ok = HExecuteQuery(QRY_Select_Cliente,MyHfsql,hQueryWithoutHFCorrection,Token) IF ok = True THEN FOR EACH QRY_Select_Cliente IF HFound(QRY_Select_Cliente) = True THEN ok = HExecuteQuery(QRY_Select_CEP,MyHfsql,hQueryWithoutCorrection,Endereco) IF ok =True THEN Resultado = "<Xml><Retorno>" FOR EACH QRY_Select_CEP IF HFound(QRY_Select_CEP) = True AND X = 0 X += 1 Resultado += ws_xml_registro_comeco(X) Resultado += ws_xml_registro_corpo(QRY_Select_CEP.Sequencial,"Sequencial") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.LogradouroUpper,"LogradouroUpper") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.LogradouroAbrev,"LogradouroAbrev") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.Logradouro,"Logradouro") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.LogradouroCompl,"LogradouroCompl") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.Fonetica,"Fonetica") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.LogradouroTipo,"LogradouroTipo") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.CEP,"CEP") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.Bairro,"Bairro") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.BairroAbrev,"BairroAbrev") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.IDCidade,"IDCidade") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.Cidade,"Cidade") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.SubCidadeAbrev,"SubCidadeAbrev") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.SubCidade,"SubCidade") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.CodIBGECid,"CodIBGECid") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.CodIBGEUF,"CodIBGEUF") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.UF,"UF") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.Pais,"Pais") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.LogradouroIniciais,"LogradouroIniciais") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.NumeroInicial,"NumeroInicial") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.NumeroFinal,"NumeroFinal") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.DMSLatitude,"DMSLatitude") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.DMSLongitude,"DMSLongitude") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.GDLatitude,"GDLatitude") Resultado += ws_xml_registro_corpo(QRY_Select_CEP.GDLongitude,"GDLongitude") Resultado += ws_xml_registro_final() END END IF X = 0 THEN Resultado = ws_zero_registros(sTabela) END Resultado += "<TOTAL>"+X+"</TOTAL>" Resultado += "</Retorno></Xml>" ELSE Resultado += "<Error>Erro 002 tabela<Error>" END ELSE Resultado += "<Error>Erro 003 tabela<Error>" END END ELSE Resultado += "<Error>Erro 004 tabela<Error>" END ELSE Resultado += "<Error>Erro 005 Conexao<Error>" END HReset(QRY_Select_CEP)
HReset(QRY_Select_Cliente) HConnectionClose(ConnNativa) ELSE Resultado += "<Error>Token invalido<Error>" END
Tamanho is int = Length(Resultado)
Add(arrResultado,Resultado)
RESULT (arrResultado)
//---------------------------------------- WINDEV MOBILE ------------------------
2.o GLOBAL DO PROJETO
HCreationIfNotFound("*") HModifyStructure("*",hmsBackgroundTask) GloToken is string = "0xvmkedovnvodwq3913jc0333v10934567890kjhgfdfghjk842698672"
Procedure Ws_ConsultaUsuario(CPF,SENHA)
ok, Confere is boolean
x is int = 0
nCountError is int = 0
arrXml_TagResult is array of strings
ChangeCharset(charsetOccidental)
CPF = Replace(CPF,".","")
CPF = Replace(CPF,"-","")
IF CPF <> "" AND SENHA <> 0 AND PingVPN() = True THEN sXML_Retorno, sXML_RetornoMd5 is string = "" RetornoXml is a WS_ConsultarUsuarioResponse RetornoXml = WS_ConsultarUsuario(GloToken,CPF,SENHA) sXML_Retorno = RetornoXml.WS_ConsultarUsuarioResult sXML_Retorno = RemoveAcentos(sXML_Retorno) Debug("WS_ConsultarUsuario",sXML_Retorno) arrXml_TagResult = Android_iOs_ReadXml(sXML_Retorno,"NoXml") IF PositionOccurrence(sXML_Retorno,"NoXml",firstRank,FromBeginning) > 0 THEN HCreationIfNotFound("*") HCheckStructure("*",hNoCheck) XmlDoc is a xmlDocument XmlDoc = XMLOpen(sXML_Retorno,fromString) NoXml is a xmlNode
FOR EACH NoXml OF XmlDoc.Xml.Retorno on NoXml GloIDFun = XmlDoc.Xml.Retorno.NoXml.usuario_id GloFuncCPF = XmlDoc.Xml.Retorno.NoXml.usuario_cpf GloFuncSenha = "0x" +XmlDoc.Xml.Retorno.NoXml.usuario_senha GloFuncCPF = Replace(GloFuncCPF,".","") GloFuncCPF = Replace(GloFuncCPF,"-","") RetornoXml is a WS_CriptaStringResponse RetornoXml = WS_CriptaString(GloToken,SENHA,GloFuncSenha) sXML_Retorno = RetornoXmlWS_CriptaStringResult Retorno is int = PositionOccurrence(sXML_Retorno,"<retorno>1</retorno>",firstRank,FromBeginning) IF Retorno > 0 THEN Confere = 1 ELSE Confere = 0 END IF CPF = GloFuncCPF AND Confere = 1 AND CPF <> "" ok = HReadSeekFirst(t001_funcionario,t001_cpf,CPF,hKeepFilter) IF ok = True AND HFound(t001_funcionario) = True THEN IF HFound(t001_funcionario) = True THEN t001_funcionario.t001_usuariosID = XmlDoc.Xml.Retorno.NoXml.usuario_id t001_funcionario.t001_nome = XmlDoc.Xml.Retorno.NoXml.usuario_nome t001_funcionario.t001_cpf = XmlDoc.Xml.Retorno.NoXml.usuario_cpf t001_funcionario.t001_senha = SENHA t001_funcionario.t001_lembrarSenha = GloCheckbox ok = HModify(t001_funcionario) IF ok = False THEN GloIDFun = 0 GloFuncCPF = 0 ok = False ELSE ok = True END END ELSE t001_funcionario.t001_usuariosID = XmlDoc.Xml.Retorno.NoXml.usuario_id t001_funcionario.t001_nome = XmlDoc.Xml.Retorno.NoXml.usuario_nome t001_funcionario.t001_cpf = XmlDoc.Xml.Retorno.NoXml.usuario_cpf t001_funcionario.t001_senha = SENHA t001_funcionario.t001_lembrarSenha = GloCheckbox ok = HAdd(t001_funcionario) IF ok = False THEN GloIDFun = 0 GloFuncCPF = 0 ok = False ELSE ok = True END END ELSE ok = False END END ELSE ok = False END END
RESULT(ok)
Procedure Ws_RegistrarAtivaCancela(Instalacao, Situacao, MacAddress, NomeWifi, SenhaWifi, InicioInstalacao, FimInstalacao, CodigoMotivoCancelamento, Observacao)
GloDataHora = FormatarDataHora()
ok is boolean
IF Instalacao <> "" AND Instalacao <> 0 AND PingVPN() = True sXML_Retorno is string = "" RetornoXml is a WS_RegistrarAtivacaoResponse
RetornoXml = WS_RegistrarAtivacao(GloToken,Instalacao,Situacao,MacAddress,NomeWifi,SenhaWifi,InicioInstalacao,FimInstalacao,CodigoMotivoCancelamento,Observacao) sXML_Retorno = RetornoXml.WS_RegistrarAtivacaoResult sXML_Retorno = RemoveAcentos(sXML_Retorno) Debug("WS_RegistrarAtivacao",sXML_Retorno) IF PositionOccurrence(sXML_Retorno,"NoXml",firstRank,FromBeginning) > 0 THEN ok = True ELSE ok = False END END
RESULT(ok)
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modified, August, 16 2017 - 8:09 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on August, 16 2017 - 8:50 PM |
//Exemplo de XML
<Xml> <Retorno> <NoXml id="1"> <CodigoCliente>1</CodigoCliente><Nome>Adriano Boller</Nome> </NoXml> <NoXml id="2"> <CodigoCliente>10</CodigoCliente><Nome>Juliana Boller</Nome> </NoXml> <NoXml id="3"> <CodigoCliente>100</CodigoCliente><Nome>Rafael Boller</Nome> </NoXml> <NoXml id="4"> <CodigoCliente>1000</CodigoCliente><Nome>Larissa Boller</Nome> </NoXml> <NoXml id="5"> <CodigoCliente>10000</CodigoCliente><Nome>Gabriel Boller</Nome> </NoXml> <Total>5</Total> </Retorno></Xml>
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modified, August, 16 2017 - 8:51 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on August, 16 2017 - 9:01 PM |
Canal no Youtube
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on August, 16 2017 - 9:26 PM |
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on August, 16 2017 - 10:35 PM |
Vídeo referente a postagem acima
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on August, 17 2017 - 3:20 AM |
ATIVANDO REGRAS DE FIREWALL VIA SCRIPT
reset ao padrao netsh advfirewall reset
Bloquear IP c:\> netsh advfirewall firewall add rule name="IP Block" dir=in interface=any action=block remoteip=198.51.100.108/32
Status IP c:\> netsh advfirewall firewall show rule name="IP Block"
Desbloquear IP c:\> netsh advfirewall firewall delete rule name="IP Block" remoteip=198.51.100.108/32
Bloquear o Facebook netsh advfirewall firewall add rule name="Block facebook" dir=in action=block remoteip=31.13.24.0/21,31.13.64.0/19,31.13.64.0/24,31.13.69.0/24,31.13.70.0/24,31.13.71.0/24,31.13.72.0/24,31.13.73.0/24,31.13.75.0/24,31.13.76.0/24,31.13.77.0/24,31.13.78.0/24,31.13.79.0/24,31.13.80.0/24,66.220.144.0/20,66.220.144.0/21,66.220.149.11/16,66.220.152.0/21,66.220.158.11/16,66.220.159.0/24,69.63.176.0/21,69.63.176.0/24,69.63.184.0/21,69.171.224.0/19,69.171.224.0/20,69.171.224.37/16,69.171.229.11/16,69.171.239.0/24,69.171.240.0/20,69.171.242.11/16,69.171.255.0/24,74.119.76.0/22,173.252.64.0/19,173.252.70.0/24,173.252.96.0/19,204.15.20.0/22
desativar a firewall no perfil Domínio netsh advfirewall set domainprofile state off desativar a firewall no perfil Privado netsh advfirewall set privateprofile state off desativar a firewall no perfil Público netsh advfirewall set publicprofile state off desativar a firewall para todos os perfis netsh advfirewall set all state off / Netsh advfirewall set allprofiles state off Ativara firewall no perfil Domínio netsh advfirewall set domainprofile state on Ativara firewall no perfil Privado netsh advfirewall set privateprofile state on Ativara firewall no perfil Público netsh advfirewall set publicprofile state on Ativara firewall para todos os perfis netsh advfirewall set all state on Exportar todas as configurações da firewall netsh advfirewall export c:\advfirewall.wfw
Importar ficheiro com as configurações da firewall netsh advfirewall import c:\advfirewall.wfw Adicionar uma excepção para uma aplicação em específico netsh advfirewall firewall add rule name=regra_para_permitir_acesso_inbound_do_notepad dir=in program=c:\Windows\System32\notepad.exe action=allow Criar uma excepção para o porto 80 do protocolo TCP netsh advfirewall firewall add rule name= permitir_trafego_porto_80 dir=in action=allow protocol=TCP localport=80 Repor as configurações originais da firewall netsh advfirewall reset Registar todas as ligações ignoradas pela firewal referente a todos os perfis netsh advfirewall set allprofiles logging droppedconnections enable Registar todas as ligações efectuadas com sucesso referente a todos os perfis netsh advfirewall set allprofiles logging allowedconnections enable Verificar as configurações gerais da firewall referente a todos os perfis netsh advfirewall show allprofiles
:: Adicionando regra para bloquear porta 8000 netsh advfirewall firewall add rule name="disablePort8000" protocol=ALL dir=in localport=8000 action=block
:: Bloqueando o 'Programa' netsh advfirewall firewall add rule name="Programa" dir=in program="C:\Pasta\Programa.exe" action=block
Para abrir portas de saida no windows xp netsh firewall add portopening TCP 80 "abrir a porta 8888"
Para abrir portas de saida no Windows 7, 8 netsh advfirewall firewall adicionar nome da regra = "Abrir porta 8888" dir = ação = permitir protocolo = TCP localport = 8888
COMANDO PARA LIBERAR PORTA NO FIREWALL. netsh firewall set portopening TCP 3070 "Firebird Server - 3070"
onde: netsh: Executável da ferramenta. firewall: É um parâmetro da ferramenta NETSH e indica que vamos ‘trabalhar’ no FIREWALL do Windows. set: É um parâmetro da ferramenta NETSH Firewall e indica que vamos configurar o firewall. portopening: É um parâmetro do comando NETSH firewall SET e indica que vamos configurar portas do firewall. TCP: Define o protocolo usado para acessar o servidor, no geral vai ser TCP ou, menos frequente: UDP. 3050: A porta para a qual desejamos liberar o acesso. “Firebird Server – 3050”: Esse é uma informação textual que vai aparecer na configuração do firewall, de forma que você identifique o que faz aquela configuração.
*** A parte que está em negrito é fixa do comando, a parte que está em itálico variam de acordo com a necessidade.
COMANDO PARA LIBERAR PROGRAMA NO FIREWALL. netsh firewall set allowedprogram c:\progra~1\firebird\fbserver.exe "Firebird server (app)" ENABLE SUBNET ALL
Onde: netsh: Executável da ferramenta. firewall: É um parâmetro da ferramenta NETSH e indica que vamos ‘trabalhar’ no FIREWALL do Windows. set: É um parâmetro da ferramenta NETSH Firewall e indica que vamos configurar o firewall. allowedprogram: É um parâmetro do comando NETSH firewall SET e indica que vamos configurar liberação de programas no firewall. c:\progra~1\firebird\fbserver.exe: Caminho completo do executável do programa que será liberado. “Firebird server (app)”: Esse é uma informação textual que vai aparecer na configuração do firewall, de forma que você identifique o que faz aquela configuração. ENABLE: Parâmetro que indica permissão pelo firewall (caso queira NÃO permitir, usar DISABLE). SUBNET: Indica a abrangência da liberação, neste caso estamos liberando para a mesma sub-rede (uma rede local por exemplo). ALL: Indica em qual perfil de firewall será liberado o programa, neste caso estamos liberando para todos os perfis de firewall.
*** A parte que está em negrito é fixa do comando, a parte que está em itálico variam de acordo com a necessidade.
COMANDO PARA VISUALIZAR QUAIS PORTAS ESTÃO LIBERADAS NO FIREWALL netsh firewall show portopening
COMANDO PARA VISUALIZAR QUAIS PROGRAMAS ESTÃO LIBERADAS NO FIREWALL netsh firewall show allowedprogram
Para informações mais detalhadas, entre em contato pelo jcsuporte@gmail.com ou digite netsh firewall /? no prompt de comando
comandos devidamente mostrados e explicados, segue algumas explicações para quem não sabe bem o que é e como funciona as PORTAs que liberamos no firewall.
Quando um usuário abre a lista de cliente do software que está na sua maquina, esse software precisa fazer uma requisição no servidor de banco de dados para buscar e apresentar na tela os dados solicitados. Para que isso ocorra um servidor de banco de dados está instalado numa máquina, e para acessá-lo é necessário indicar o endereço desta máquina (endereço IP ou nome da máquina) e o número da porta na qual o serviço solicitado responde, conclui-se então, que a porta é um complemento do endereço para chegar ao servidor.
Cada serviço tem uma porta padrão (veja a lista de alguns serviços no final do post) e isso fica transparente para o usuário porque a aplicação que acessa o servidor já sabe qual a porta padrão e coloca automaticamente, isso também quer dizer que se o administrador do sistema mudar a porta padrão para uma outra qualquer, será necessário indicar a porta ao tentar acessar o serviço. Bem, com isso espero ter conseguido explicar a função da ‘porta’
… continuando o raciocínio: se o servidor será acessado pela dobradinha ‘IP:Porta’ a máquina onde está instalado precisa liberar o tráfego de dados por essa porta, certo?
O papel do FIREWALL é exatamente dar segurança aos dados e bloquear o acesso a esta máquina e aos serviços instalados nela, portanto, se precisamos acessar o servidor e o FIREWALL está travando, é necessário informar para ele que deve liberar o acesso a porta indicada.
A solução mais comum que vejo por aí, principalmente em pequenas empresas usando o Windows, é desabilitar o firewall, mas essa não é nem de perto a melhor solução, já que acaba com toda segurança contra acessos não autorizados que o FIREWALL implementa.
Uma forma de liberar esse acesso é especificando qual porta poderá ser acessada, e para isso existem 2 formas:
Pela ferramenta gráfica que o Windows oferece no Painel de controle, e através da linha de comando, que é a motivação desse post. Muitos devem pensar: mas pela linha de comando é mais complicado…. é sim, tem razão, mas se for preciso fazer o processo em várias máquinas, e colocar o comando dentro de um script .bat a execução fica mais prático, seguro e rápido, para construir o script .bat, basta pegar os comando do inicio do post, colocar num arquivo texto vazio e salvar como abre_portas_firewall.bat Portas padrões por serviço: FTP – 21 HTTP – Porta 80 DNS – 53 MS-SQL – 1433 e 1434 em alguns casos Firebird – 3050 Remote Desktop – 3389
Maiores detalhes https://support.microsoft.com/pt-br/help/947709/how-to-use-the-netsh-advfirewall-firewall-context-instead-of-the-netsh
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on November, 11 2017 - 2:19 PM |
Procedure glo_rot_distancia(origem,destino)
arquivo is string=gsdirtemp+DateSys()+TimeSys()+".xml"
HTTPAddParameter("GoogleMaps","key","AIzaSyDbSVKYPwB1a-_vPbDzAr6LgAfIj4iW2hc")
HTTPDestination(arquivo)
IF NOT httpRequest(StringBuild("http://maps.googleapis.com/maps/api/distancematrix/xml?origins=%1&destinations=%2&mode=driving&language=pt-BR&sensor=false",Replace(origem," ","%20"),Replace(destino," ","%20"))) THEN
RESULT(0)
END
sArqxml is string=fLoadText(arquivo)
IF NOT xmlDocument("XML",sArqxml) THEN
RESULT(0)
END
RESULT(XMLRead("XML","/DistanceMatrixResponse/row/element/distance/text"))
by Paulo Viana
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Posted on May, 25 2019 - 12:06 PM |
GLOBAL DA Procedure
arr_Resultados is array of string gsValorMemorizado is string = 1 DeclareWebserviceContext(gsValorMemorizado) DeclareWebserviceContext(arr_Resultados)
Procedure ws_ListaClientes(Token)
ArrResultado is array IF string
Resultado is string
IF Token = 123
For each clientes
Foto is buffer = clientes.FotoBinaria
Foto = Crypt(foto, encode64)
Resultado += clientes.codigo +”,”+ clientes.nome +”,”+ Foto +CR
END
ELSE
Resultado = “erro de Token”
END
Add(arrResultado,resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Posted on May, 25 2019 - 12:06 PM |
GLOBAL DA Procedure
arr_Resultados is array of string gsValorMemorizado is string = 1 DeclareWebserviceContext(gsValorMemorizado) DeclareWebserviceContext(arr_Resultados)
Procedure ws_ListaClientes(Token)
ArrResultado is array IF string
Resultado is string
IF Token = 123
For each clientes
Foto is buffer = clientes.FotoBinaria
Foto = Crypt(foto, encode64)
Resultado += clientes.codigo +”,”+ clientes.nome +”,”+ Foto +CR
END
ELSE
Resultado = “erro de Token”
END
Add(arrResultado,resultado)
RESULT (arrResultado) |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on December, 18 2019 - 12:50 PM |
arr_Resultados is array of string gsValorMemorizado is string=1 DeclareWebserviceContext(gsValorMemorizado) DeclareWebserviceContext(arr_Resultados)
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Registered member 3,659 messages Popularité : +175 (223 votes) |
|
Posted on January, 14 2021 - 12:06 AM |
//exemplo
//Aqui define o layout do XML a ser enviado pelo POST
sXDoc is string = [ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enderecodocliente:TMAtualizaOrdemFrete"> <soapenv:Header/> <soapenv:Body> <urn:MT_AtualizaOrdemFrete_Req_Conc> <ordem> <nr_ordem>?</nr_ordem> <dados_pesagem> <tara_veiculo>?</tara_veiculo> <peso_bruto>?</peso_bruto> <peso_liquido_real>?</peso_liquido_real> </dados_pesagem> <inf_item> <id_etapa>?</id_etapa> <nr_remessa>?</nr_remessa> <item_remessa>?</item_remessa> <id_material>?</id_material> <quantidade>?</quantidade> <unidade_med_qtde>?</unidade_med_qtde> <inf_lote> <lote>?</lote> <qtde>?</qtde> <unidade_lote>?</unidade_lote> </inf_lote> </inf_item> <dados_analise> <temperatura_tanque>?</temperatura_tanque> <ap_veiculo_seta>?</ap_veiculo_seta> <massa_especifica>?</massa_especifica> <fator_reducao_vol>?</fator_reducao_vol> <alcalinidade>?</alcalinidade> <volume_20>?</volume_20> <acidez_total>?</acidez_total> <grau_inpm>?</grau_inpm> <aspecto>?</aspecto> </dados_analise> <checklist> <id_checklist>?</id_checklist> </checklist> <lacres> @LACRE@ </lacres> </ordem> </urn:MT_AtualizaOrdemFrete_Req_Conc> </soapenv:Body> </soapenv:Envelope> ]
//Exemplo de como substituir parte do XML inicial por variáveis
sLacre is string = "<lacre>?</lacre>"
sXDoc = Replace(sXDoc,"@LACRE@",sLacre)
//webservice req is httpRequest
req.URL = "http://servidor.cliente.com.br:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_CONCEITTO_D&receiverParty=&receiverService=&interface=SI_AtualizaOrdemFrete_Out&interfaceNamespace=urn:enderecodocliente:TMAtualizaOrdemFrete" req.User = "TESTE" req.Password = "1234" req.Header["SOAPAction"] = "Conceitto/Login" req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)" req.Method = httpPost req.ContentType = "text/xml; charset=utf-8"
req.Content = sXDoc
cMyResponse is httpResponse = HTTPSend(req)
IF ErrorOccurred THEN Error(ErrorInfo(errFullDetails)) ELSE sXDoc = cMyResponse..Content Info(sXDoc) END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
|