Novo portal de perguntas e respostas sobre Protheus e ADVPL.

nosso novo canal de tira dúvidas.

http://sigaoadvpl.com.br/

Anúncios

Transferindo arquivos e pastas com smbclient via terminal

1. conectando ao compartilhamento smbclient //dest ip/folder -Uuser
2. Entre com a senha
3. depois de conectado execute os próximos passos
4. digite tarmode
5.digite recurse
6.digite prompt
7. e então mget foldertocopy\
8.  será feito um cópia de todos os arquivos da pasta pra sua /home/usuário

ps: caso obtenha o erro -> NT_STATUS_OBJECT_NAME_NOT_FOUND utilize  “nome do diretório” para navegar(Geralmente diretório com espaço em branco).

 

 

Corrigindo problemas de modo passivo de FTP em instâncias do Amazon EC2

Recentemente precisei configurar um servidor ftp em uma instancia EC2 na Amazon, então resolvi segui esse excelente tutorial  da digital ocean e usar como base e introdução no assunto, porém no final do processo tive problema para listar os arquivos no cliente filefilla.  A origem do problema era o modo passivo do ftp, acontece que o ftp(em modo passivo) utiliza portas randômicas para navegar internamente entre pastas e para isso funcionar no ec2 é preciso algumas configurações.

Como o modo passivo se conecta a qualquer porta aleatória> 1023, isso é um problema. Então, o que você precisará fazer é definir um intervalo de portas fixas para VSFTP para usar para conexões PASV e, em seguida, permitir estas em suas regras de firewall “Grupos de segurança”.

 

Nota: Este método provavelmente funcionará em qualquer servidor, basta adicionar as configurações e depois abrir as portas corretas em seu firewall ou roteador de software

1. Especifique um intervalo de portas no qual o VSFTP executará conexões PASV
Adicione as seguintes linhas ao seu arquivo vsftpd.conf:

pasv_enable=YES
pasv_max_port=12100
pasv_min_port=12000
port_enable=YES

Você também precisa adicionar uma linha extra para especificar qual endereço IP VSFTP anunciará em resposta a uma conexão passiva, portanto, abaixo das linhas que você já colou no vsftpd.conf, coloque:

pasv_address={your public IP address}

OU se você não tiver um endereço IP elástico fixo:

pasv_addr_resolve={your public domain or DNS}

Agora, reinicie vsftpd digitando /etc/init.d/vsftpd restart no terminal do seu servidor.

Se tudo correr bem e é o seu dia de sorte, as conexões passivas devem agora funcionar corretamente.

fonte: https://stackoverflow.com/questions/4723023/vsftpd-error-listing-directories

 

 

 

 

Desenvolvendo em ADVPL no Visual Studio CODE

 

Para desenvolver em ADVPL no visual studio CODE é necessário instalar a extensão advpl-vscode e configurar o ambiente. Para configurar o ambiente é necessário a configuração de algumas chaves. Essas chaves podem estar tanto na WorkSpace Settings (Configuração especifica para cada projeto) ou na User Settings( Configuração especifica para cada perfil )

Abaixa está a documentação oficial do repositório do projeto no github mostrando como configurar o ambiente corretamente, farei apenas algumas observações e alguns adendos.

Para instalar a extensão:

Executar o VS Code Quick Open (atalho Ctrl + P), cole o seguinte comando e pressione enter.

ext install advpl-vscode

Maiores informações sobre instalações de extensões podem ser encontradas em:

VsCode webSite

Requisitos para utilização

Para utilizar os recursos de compilação e debug é necessário que o AppServer esteja na build 131227A ou superior, tendo essa versão de binário tanto o Protheus 11 e 12 são suportados. Essa extensão ainda não está disponível no Linux. Em OSX o suporte do editor e do debug já esta funcional.

Configurações da extensão

Essa extensão contribui com as seguintes configurações.

  • advpl.smartClientPath: Caminho completo para o diretório do smartclient. Esse diretório precisa possuir o apppre.exe e o smartclient.exe.

Exemplo: C:\\Protheus\\smartclient\\ No caso de OSX: Exemplo: /Applications/

Atenção! A partir da versão 0.4.0, as configurações de ambientes devem ser feitas com o array advpl.environments

  • advpl.serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • advpl.server: Server IP, Padrão: localhost
  • advpl.port : Porta do servidor
  • advpl.environment: Nome do ambiente que será feito o debug e a compilação
  • advpl.user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • advpl.passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • advpl.includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • advpl.language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • advpl.rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF

Atenção! Nova configuração de ambiente advpl.environments : Array com os ambientes configurados

Cada ambiente deve especificar:

  • environment: Nome do ambiente que será feito o debug e a compilação
  • serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • server: Server IP, Padrão: localhost
  • port : Porta do servidor
  • user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF
  • selectedEnvironmentAmbiente atualmente selecionado
  • startProgram: Módulo ou função que será sugerido no launch do Debug
  • compileFolderRegex: Regex que ira validar se na compilação de folders, o arquivo irá ser compilado ou não.

As variáveis abaixo devem ser preenchidas caso você tenha uma senha de compilação. Caso você deseje pegar o ID utilizado pelo VSCODE para gerar uma nova chave, veja o comando getAuthorizationId

  • advpl.authorization_generation: Data de geração da chave no formato yyyyMMdd
  • advpl.authorization_validation: Data de validade da chave no formato yyyyMMdd
  • advpl.authorization_permission: 1 – Para permitir substituir fontes TOTVS, 0 – para não pemitir
  • advpl.authorization_code: Chave de Autorização

Configuração de Patchs

  • advpl.pathPatchBuild : Patch do cliente que deve existir para geracao de patchs. Caso o arquivo ja exista, será sobrescrito.

Debug

  • advpl.debug_multiThread : Caso seja colocado com true, habilita o debug multi Thread.
  • advpl.debug_ignoreSourceNotFound : Ignorar os fontes não encotrados no debug.
  • advpl.debug_showTables : Mostra as tabelas abertas.
  • advpl.debug_showPrivates : Mostra as variaveis Privates.
  • advpl.debug_showPublic : Mostra as variaveis Publicas.
  • advpl.debug_showStatics : Mostra as variaveis Estaticas .

 

Atenção! A partir da versão 0.4.0, as configurações de ambientes devem ser feitas com o array advpl.environments

  • advpl.serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • advpl.server: Server IP, Padrão: localhost
  • advpl.port : Porta do servidor
  • advpl.environment: Nome do ambiente que será feito o debug e a compilação
  • advpl.user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • advpl.passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • advpl.includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • advpl.language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • advpl.rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF

Atenção! Nova configuração de ambiente advpl.environments : Array com os ambientes configurados

Cada ambiente deve especificar:

  • environment: Nome do ambiente que será feito o debug e a compilação
  • serverVersion.”: Versão do server – Atualmente suporta apenas o 131227A
  • server: Server IP, Padrão: localhost
  • port : Porta do servidor
  • user: Nome do usuário para se conectar no Protheus, se não informado utiliza “Admin”
  • passwordCipher : Senha criptografada do usuário de login no Protheus, para gerá-la utilize o comando CipherPassword
  • includeList: Lista de diretórios separado por ponto-e-vírugla. Exemplo: C:\\Protheus\\include\\;C:\\Protheus\\include_2\\
  • language: Língua do repositório, se não informado será português, valores permitidos: PORTUGUESE, ENGLISH, SPANISH
  • rpoType: Tipo do RPO, se não informado será “TOP”, valores permitidos: TOP, CTREE, DBF
  • advpl.selectedEnvironment Ambiente atualmente selecionado
  • advpl.startProgram: Módulo ou função que será sugerido no launch do Debug
  • compileFolderRegex: Regex que ira validar se na compilação de folders, o arquivo irá ser compilado ou não.

As variáveis abaixo devem ser preenchidas caso você tenha uma senha de compilação. Caso você deseje pegar o ID utilizado pelo VSCODE para gerar uma nova chave, veja o comando getAuthorizationId

  • advpl.authorization_generation: Data de geração da chave no formato yyyyMMdd
  • advpl.authorization_validation: Data de validade da chave no formato yyyyMMdd
  • advpl.authorization_permission: 1 – Para permitir substituir fontes TOTVS, 0 – para não pemitir
  • advpl.authorization_code: Chave de Autorização

Configuração de Encode dos arquivos.

O Visual Code padrão utiliza utf8 como encode dos arquivos abertos. O TDS utiliza como padrão o windows1252, caso você utilize fontes nos dois ambientes é recomendando mudar o encode do utf8 para windows1252.

Para proceder isso va em Files -> Preferences -> WorkSpace Será aberto na direta os valores default, e na esquerda os seus valores.

{ “files.encoding”: “windows1252” }

Comandos adicionados ao visual code

Gerar senha de acesso ao um ambiente.

Para gerar uma chave devemos usar o VS Code Quick Open (atalho Ctrl + P) e digitar:

>cipher Será apresentado um inputbox para digitar a senha. Ao confirmar o VsCode ira apresentar a senha criptografada. que deve ser colocada no advpl.passwordCipher.

Pegando o código de liberação autorização TOTVS

Caso você utilize liberação de compilação e necessite de uma para o VS code, abra o VS Code Quick Open (atalho Ctrl + P),e digitar:

>Código Autorização para ser solicitada pela Totvs

Ao começar a digitar o comando o VS code ira já sugerir as correspondências, não sendo necessário digitar o comando inteiro.

Exemplo de arquivo de configuração:

{

“advpl.environments”:[{

“smartClientPath”: “C:\\binarios\\P12\\last_tfs\\smartclient\\”,

“environment”: “fluig”,

“includeList”: “D:\\LIB120\\INCLUDE\\;D:\\LIB120\\INCLUDE-LIB\\”,

“server”: “localhost”,

“port”: “1201”,

“user”: “Admin”,

“passwordCipher”: ” TDBXQzYWZoTm92NTlmTFFKbi9DTzROVjY5Q0FUVmFlb1JNN28=”

},{

“smartClientPath”: “C:\\binarios\\P12\\last_tfs\\smartclient\\”,

“environment”: “amb1”,

“includeList”: “D:\\TOTVS\\LIB110\\INCLUDE\\;D:\\TOTVS\\LIB110\\INCLUDE-LIB\\”,

“server”: “localhost”,

“port”: “1101”,

“user”: “Admin”,

“passwordCipher”: “elhlY3FxQTJKNTZDR0xiK2VWa1ZrbVRGaDhVWXFrTjYvM2JiUnc=”

}],

//Chave

“advpl.authorization_generation”: “20160831”,

 

// Data de validade da chave no formato yyyymmdd

“advpl.authorization_validation”: “20161129”,

 

// 1 – Para permitir substiuir fontes TOTVS, 0 para Não

“advpl.authorization_permission”: “1”,

 

// Chave de compilação

“advpl.authorization_code”: “013SPL032RFRR74F1E7671310”,

 

}

Selecionando o Ambiente em execução

Após configurar os ambientes, no canto inferior direito, do lado do esquilo é possível visualizar o ambiente corrente. Caso queira muda-lo basta clicar sobre a barra , será apresentando uma lista de ambientes configurados.

 

Configurando appserver e dbaccess no CMD VSCODE

Pra quem estiver fazendo teste em ambiente local uma saída interessante é configurar o appserver e o dbaccess no prompt no vs code que nada mais é que o mesmo prompt do Windows. Pra isso pra configurar as variáveis de ambientes.

01

Uitlize Ctrl + ’ para abrir o prompt no vs code.

02

Prompt aberto no VS code

03

Utilize o comando appserver -console  depois abra mais um terminal no sinal de  “ + ” no prompt do vscode e rode dbaccess -console e pronto, a partir deste ponto vc já teve estar apto a desenvolver em ADVPL utilizando o VS code.

Teclas de Atalho padrões

  • F5 – Inicia o Debug
  • CTRL + F5 – Inicia o SmartClient sem debugar
  • CTRL + F9 – Compila o fonte atual
  • CTRL + F11 – Executa o smartClient sem configuração e mostrando o parametro,

No Debug

Utilizada as teclas padrões do VsCode

  • F5 – Run/Contiue
  • F10 – Step Into
  • F11 – Step Over

    06

 05

 

Esse projeto é muito recente e pode surgir diversos problemas ao utiliza-lo, mas essa versão já está bem funcional e aconselho sua utilização para ajudar no amadurecimento do projeto, pois é uma ótima iniciativa e precisa de mais apoiadores.  

 

Link GitHub do projeto.

 

Transferindo arquivos entre servidores linux usando ssh-keygen

Para começar vamos gerar nosso par de chaves rsa,  use o comando abaixo.


:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

será solicitado uma senha para o par de chaves


:~# Enter passphrase (empty for no passphrase):
:~# Enter same passphrase again:

bom, no meu caso eu deixei em branco pois o objetivo era automatizar uma rotina que exigia transferência de arquivos na rede.

abaixo vc tem a localização dos arquivos que foram gerados e a randomart image da chave rsa.


Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f9:84:2d:64:77:01:0a:af:39:8f:ac:16:3d:5b:9c:7e root@local-server
The key's randomart image is:
+--[ RSA 2048]----+
| . ... |
| o . . |
| = . . |
| = = . |
| .+.S.o |
| ..o+++ |
| .o=. . |
| ... . E |
| .. . |
+-----------------+

agora vc precisa se autentica no servidor remoto.

 


:~# ssh-copy-id  root@ipservidoremoto

entre com a senha


:~# root@ipservidoremoto's password:
Now try logging into the machine, with "ssh 'root@ipservidoremoto'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

e pronto agora você pode fazer transferências de arquivo entre servidores linux na rede sem precisar se autenticar, pois a autenticação ssh foi configurada entre os dois servidores.

use


ssh root@ipservidoremoto

para confirmar

e o comando abaixo para transferir arquivos


:~# scp /tmp/teste.txt root@ipservidoremoto:/tmp/

sobre scp http://www.computerhope.com/unix/scp.htm

https://www.vivaolinux.com.br/artigo/Utilizando-SSH-com-metodo-de-autenticacao-publickey-+-sshagend-+-sshadd

Usando postgreSQL no terminal linux

Assim que vocês instala o postgres ele criar um usuáro chamado postgres, esse usuário possui acesso irrestrito ao banco de dados da máquina.

Use o comando

 su postgres

como root.

e verifica

 postgres@linux-server-db:/root$ 

 

com isso você terá todos os comando abaixo disponíveis.

– pg_dumpall
– psql
– createuser
– dropdb
– dropuser
– clusterdb
– vacuumdb
– createdb
– pg_dump
– pg_restore
– readpgenv
– psql-wm

para acessar o banco de dados use


psql meuBanco
could not change directory to "/root"
meuBanco=#

a por ai vai. 🙂

Para mais informações.

https://www.postgresql.org/docs/9.3/static/app-psql.html

http://postgresguide.com/utilities/psql.html

https://www.vivaolinux.com.br/artigo/psql-Conheca-o-basico