Re: [FUG-BR] Fwd: "Clonar" conexão

2018-02-14 Por tôpico Renato Frederick
Otacílio, muitíssimo obrigado, acabei de fechar vários ajustes em produção,
dei um passeio para confirmar os recursos que ativei e tudo deu certo.
Agora a noite irei baixar seu software compilar e repetir o passeio com a
moto(melhor parte!) e tudo deve funcionar no espião como no master.
Acredito que o IP que registrará nele será da máquina de produção, mas isto
não tem problema, o registro fica todo com base no IMEI do chip + ID GPS.

Retorno para você aqui em breve. Parabéns pela facilidade em escrever
código, eu nem um hello word sei, ô vida!! :)


Renato Frederick
Consultor em TI
http://about.me/renatofrederick
Skype: renatofrederick
+55 31 99123 - 3006
+55 31 2523 - 0686

Em 19 de junho de 2017 15:24, Otacílio  escreveu:

> Em 19/06/2017 09:59, Renato Frederick escreveu:
>
> Em 19 de junho de 2017 09:27, Otacílio 
> escreveu:
>
>> Em 19/06/2017 07:45, Renato Frederick escreveu:
>>
>>
>>
>>
>> A comunicação é feita por TCP ou UDP?
>>
>> []'s
>>
>> -Otacílio
>>
>
> Olá Otacílio! É TCP.
>
> Explicando melhor: O que acontece é que eu tenho um GPS na moto e ele
> envia atualização para um servidor web que montei(ao invés de usar estes da
> china que não tem muito recurso, ou pagar 20 a 30 reais nos brasileiros).
> Lá mostra meu histórico, define cercas(entrou ou saiu do espaço definido
> manda SMS/email), etc.
>
> Porém no GPS eu envio um comando indicando IP e porta do servidor que ele
> vai usar. não posso usar DNS porque a maioria das telemetria não manda DNS
> direito ou o meu GPS não entende.
>
> E eu sempre estou desenvolvendo e melhorando o software, fazendo isto na
> máquina de casa, que tem IP ADSL dinâmico.
>
> Não quero tirar o GPS de usar o IP de producao e colocar em testes, pois
> às vezes o gps fica meio doido, tem que dar reset, quero mexer nele menos
> possível, até porque quanto menos eu mexer melhor, pois em uma emergência
> eu preciso ter na hora a localização, depois que eu bloquear a moto, já que
> muitos meliantes são tão tranquilos que mesmo bloqueado abrem o banco e
> começam a procurar, então tempo é importante.
>
> Então eu queria colocar no GPS o IP fixo que já tenho a produção, porém em
> outra porta(1234) e daí nesta porta usar o NETCAT que vai jogar a
> string(dados hexadecimais reportando longitude + hora/data) para a produção
> na porta certa(5023) e também lá em casa na mesma porta.
>
> Assim, eu tenho garantia que tudo que ele registrar em um tem que aparecer
> no outro. Se não acontecer é que algo no programa está errado, pode ser
> algo que eu fiz.
> Obrigado!
>
>
> Escrevi este pequeno programa que quebra o seu galho.
>
> Ele conecta no servidor de produção e espera a conexão do GPS e de um
> cliente espião. Tudo o que o GPS enviar ele vai enviar para o servidor de
> produção e para o cliente espião. Tudo o que o servidor ou o cliente enviar
> ele vai encaminhar para o GPS. É muito fácil de usar. Qualquer coisa entre
> em contato.
>
> []'s
> -Otacílio
>
> /**
>  * Copyright(C) Otacílio de Araújo Ramos Neto
>  * Você pode fazer o que quiser com este software, exceto mudar esta
> licença e/ou dizer que foi você
>  * quem escreveu.
>  *
>  * Este software é distribuído acreditando-se que está correto e é
> totalmente funcional, mas sem
>  * nenhuma garantia disso ou de que é adequado a um determinado fim. Use-o
> sob sua conta e risco.
>  *
>  * Para compilar use: cc -Wall -O2 -pipe -o gpsc gpsc.c  -lpthread
>  */
>
> #include 
> #include 
> #include 
> #include 
> #include 
> #include 
> #include  /* getopt_long() */
>
> #include 
> #include 
> #include 
>
> #define BUFFER_SIZE 4*1024
> #define BACKLOG 4
>
> const char short_options[] = "s:p:l:c:";
>
> const struct option
> long_options[] = {
> { "server",  required_argument, NULL, 's' },
> { "port",required_argument, NULL, 'p' },
> { "ouca",  required_argument, NULL,   'l' },
> { "client",  required_argument, NULL, 'c' },
> { 0,  0,  0,   0  }
> };
>
> void help(char *nome);
> int conectaServidorProducao(char *server, char *porta);
> void *servidorProducao(void *p);
> void *servidorCliente(void *p);
> void *servidorGPS(void *p);
> void sigpipe(int i);
>
> char server[1024]="\0";
> char porta[6]="\0";
> char ouca[6]="\0";
> char client[6]="\0";
> int producaoSocket=-1;
> int gpsSocket=-1;
> int clienteSocket=-1;
>
> int main(int argc, char **argv){
> pthread_t produServer, clienteServer, gpsServer;
> for (;;) {
> int idx;
> int c;
>
> c = getopt_long(argc, argv, short_options, long_options, );
>
> if (-1 == c)
> break;
>
> switch (c) {
> case 0: // getopt_long() flag
> break;
> case 's':
> strncpy(server, optarg, sizeof(server));
> server[sizeof(server)-1] = '\0';
> break;
> case 'p':
> strncpy(porta, optarg, sizeof(porta));
> porta[sizeof(porta)-1] = 

Re: [FUG-BR] Fwd: "Clonar" conexão

2018-02-14 Por tôpico Otacílio

Em 19/06/2017 09:59, Renato Frederick escreveu:
Em 19 de junho de 2017 09:27, Otacílio > escreveu:


Em 19/06/2017 07:45, Renato Frederick escreveu:





A comunicação é feita por TCP ou UDP?

[]'s

-Otacílio


Olá Otacílio! É TCP.

Explicando melhor: O que acontece é que eu tenho um GPS na moto e ele 
envia atualização para um servidor web que montei(ao invés de usar 
estes da china que não tem muito recurso, ou pagar 20 a 30 reais nos 
brasileiros). Lá mostra meu histórico, define cercas(entrou ou saiu do 
espaço definido manda SMS/email), etc.


Porém no GPS eu envio um comando indicando IP e porta do servidor que 
ele vai usar. não posso usar DNS porque a maioria das telemetria não 
manda DNS direito ou o meu GPS não entende.


E eu sempre estou desenvolvendo e melhorando o software, fazendo isto 
na máquina de casa, que tem IP ADSL dinâmico.


Não quero tirar o GPS de usar o IP de producao e colocar em testes, 
pois às vezes o gps fica meio doido, tem que dar reset, quero mexer 
nele menos possível, até porque quanto menos eu mexer melhor, pois em 
uma emergência eu preciso ter na hora a localização, depois que eu 
bloquear a moto, já que muitos meliantes são tão tranquilos que mesmo 
bloqueado abrem o banco e começam a procurar, então tempo é importante.


Então eu queria colocar no GPS o IP fixo que já tenho a produção, 
porém em outra porta(1234) e daí nesta porta usar o NETCAT que vai 
jogar a string(dados hexadecimais reportando longitude + hora/data) 
para a produção na porta certa(5023) e também lá em casa na mesma porta.


Assim, eu tenho garantia que tudo que ele registrar em um tem que 
aparecer no outro. Se não acontecer é que algo no programa está 
errado, pode ser algo que eu fiz.

Obrigado!



Escrevi este pequeno programa que quebra o seu galho.

Ele conecta no servidor de produção e espera a conexão do GPS e de um 
cliente espião. Tudo o que o GPS enviar ele vai enviar para o servidor 
de produção e para o cliente espião. Tudo o que o servidor ou o cliente 
enviar ele vai encaminhar para o GPS. É muito fácil de usar. Qualquer 
coisa entre em contato.


[]'s
-Otacílio

/**
 * Copyright(C) Otacílio de Araújo Ramos Neto
 * Você pode fazer o que quiser com este software, exceto mudar esta 
licença e/ou dizer que foi você

 * quem escreveu.
 *
 * Este software é distribuído acreditando-se que está correto e é 
totalmente funcional, mas sem
 * nenhuma garantia disso ou de que é adequado a um determinado fim. 
Use-o sob sua conta e risco.

 *
 * Para compilar use: cc -Wall -O2 -pipe -o gpsc gpsc.c  -lpthread
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include  /* getopt_long() */

#include 
#include 
#include 

#define BUFFER_SIZE 4*1024
#define BACKLOG 4

const char short_options[] = "s:p:l:c:";

const struct option
long_options[] = {
{ "server",  required_argument, NULL, 's' },
{ "port",required_argument, NULL, 'p' },
{ "ouca",  required_argument, NULL,   'l' },
{ "client",  required_argument, NULL, 'c' },
{ 0,  0,  0,   0  }
};

void help(char *nome);
int conectaServidorProducao(char *server, char *porta);
void *servidorProducao(void *p);
void *servidorCliente(void *p);
void *servidorGPS(void *p);
void sigpipe(int i);

char server[1024]="\0";
char porta[6]="\0";
char ouca[6]="\0";
char client[6]="\0";
int producaoSocket=-1;
int gpsSocket=-1;
int clienteSocket=-1;

int main(int argc, char **argv){
pthread_t produServer, clienteServer, gpsServer;
for (;;) {
int idx;
int c;

c = getopt_long(argc, argv, short_options, long_options, );

if (-1 == c)
break;

switch (c) {
case 0: // getopt_long() flag
break;
case 's':
strncpy(server, optarg, sizeof(server));
server[sizeof(server)-1] = '\0';
break;
case 'p':
strncpy(porta, optarg, sizeof(porta));
porta[sizeof(porta)-1] = '\0';
break;
case 'l':
strncpy(ouca, optarg, sizeof(ouca));
ouca[sizeof(ouca)-1] = '\0';
break;
case 'c':
strncpy(client, optarg, sizeof(client));
client[sizeof(client)-1] = '\0';
break;
default:
help(argv[0]);
exit(EXIT_FAILURE);
}
}

if(!strlen(server)){
fprintf(stderr, "Voce precisa informar o endereço do servidor 
de produção\n\n");

help(argv[0]);
exit(EXIT_FAILURE);
}

if(!strlen(porta)){
fprintf(stderr, "Voce precisa informar a porta do servidor de 
produção\n\n");

help(argv[0]);
exit(EXIT_FAILURE);
}

if(!strlen(ouca)){
fprintf(stderr, "Voce precisa informar a porta que deve ouvir o 
GPS\n\n");

help(argv[0]);
exit(EXIT_FAILURE);
}

if(!strlen(client)){

Re: [FUG-BR] Fwd: "Clonar" conexão

2018-02-14 Por tôpico Otacílio

Em 19/06/2017 07:45, Renato Frederick escreveu:


Renato Frederick
Consultor em TI
http://about.me/renatofrederick
Skype: renatofrederick
+55 31 99123 - 3006
+55 31 2523 - 0686

-- Mensagem encaminhada --
De: *Renato Frederick* >

Data: 18 de junho de 2017 23:36
Assunto: "Clonar" conexão
Para: "Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)" 
>



Pessoal, tudo bem?

Gostaria de ajuda de vocês.

Eu estou escrevendo uma aplicação e ela conecta ao servidor, suponha, 
porta 1234


Até aí tudo bem.

Porém, eu tenho o servidor 2, onde quero que ela faça uma sobra, na 
porta 1234 também.


Por exemplo, se no servidor A ela manda OI, quero que no servidor 2 
ela mande OI também.


Eu pesquisei no google e achei algo assim:

nc -l -p  -c "nc 10.10.10.10 1234".

Porém manda usar outro nc, netcat-traditional(o FAQ tratava de ubuntu 
e este pacote é pra ele).


O exemplo acima, o que for  na maquina A na porta  joga para a 
B(10.10.10.10) na 1234.


Porém, eu não tive a conexão na A na porta 1234. Eu precisava ali 
colocar algo, tipo um "tee", algo assim que fizesse a conexao ir para 
a 10.10.10.10 na 1234 mas tb para 127.0.0.1 na 1234.
Desta maneira, a minha apliação conecta na maquina A:, o nc joga 
pra A:1234 e também para B:1234.


Eu preciso disto pois a máquina A está em um local com IP fixo e a B 
em outro com IP dinâmico(minha casa)


Então, tudo que eu fizer em produção já tenho backup em casa com GVT. 
Eu tentei colocar registro DNS com 2 cname, mas não funcionou, pois 
cada hora conectava em um, o jeito mesmo é eu fazer com o NC.


alguem tem ideia? VI exemplos usando MKFIFO, PIPES, etc mas sou 
completamente ignorante.


Agradeço já a ajuda quem tiver sugestões.
Abraços e boa semana!



Renato Frederick
Consultor em TI
http://about.me/renatofrederick 
Skype: renatofrederick
+55 31 99123 - 3006 
+55 31 2523 - 0686 


A comunicação é feita por TCP ou UDP?

[]'s

-Otacílio

-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd