HTML ler um arquivo do comp...

Programação C em geral

Moderadores: 51, guest2003

HTML ler um arquivo do comp...

Mensagempor joao » 28 Jul 2009 14:08

Ola,

Sei que é HTML, mas não existe sub-forum para HTML ou derivados e como uma parte do projeto é em C++, acabei postando aqui. Caso não seja o lugar mais correto, posso mudar sem problemas...

O problema é o seguinte:
Tenho uma aplicação que le dados em tempo real na máquina. E preciso mostrar isso na web, pois caso algo esteja errado, o servidor iria saber.
Até ai td bem, pois eu envio isso via https no meu programa e o servidor apenas mostra o resultado.
O problema é que eu gostaria que fosse totalmente seguro a ponto de não receber os dados na minha máquina, somente caso o usuário queira. Ou seja, toda a parte de mostrar o resultado, seria local, mas com um servidor externo abrindo a pagina. Assim: entro no www.meusite.com.br, e ele mostra os dados que precisa mostrar, mas o servidor não sabe de nada. Quando eu clicar, enviar para servidor, o servidor receberia esses dados.

Acho que para exemplificar, nada melhor do que este exemplo:
O windows Update.
No windows update, ele checa dados da sua máquina, e te avisa os pacotes necessários. Mas em momento nenhum ele envia algum dado para o servidor. Como ele faz isso? Alguém sabe como fazer?

Muito obrigado pela ajuda,
Joao
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Djalma Toledo Rodrigues » 28 Jul 2009 17:15

Veja se isto tem a ver ?

Postado por Edison

http://asm51.eng.br/phpbb/viewtopic.php ... =funcionou
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor joao » 29 Jul 2009 07:21

Ola Djalma!

Valeu pela resposta, mas acho que seria quase que o contrário! :)
Está difícil até para mim, em visualizar isso... :(

É que a idéia seria o usuário ver tudo na web, mas como são dados diferentes de máquina para máquina, ele iria ver os dados referentes ao computador dele. Caso ele quissese mandar isso para o chefe, por exemplo, ele apertava o botão e enviaria.

Seria como uma página local, que o meu programa iria criar(seria um pequeno programa rodando no computador, feito em C++), com os dados da máquina e dai quando o usuário acessa-se a página da empresa, a página da empresa mostraria a página local. E dai sim, se o usuário quissese, ele poderia enviar os dados para o servidor. Acho que é isso que o WIndows Update faz, mas não posso afirmar com 100% de certeza, já que não acho muita explicação.

Mas valeu pela ajuda.

[]'s Joao
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor chipselect » 29 Jul 2009 07:52

Não poderia ser usando java, tipo um applet rodando local na sua máquina?

Quando acessar o servidor, o servidor iria enviar o applet java que roda local no seu pc dentro do browser, lê os dados locais e monta a visualização completa.

Um "botão" no applet iria transmitir estes dados ao servidor. O incoveniente é que o primeiro acesso deve-se permitir que o applet rode e acesse o sistema, pois é um programinha java normal.

O incoveniente do applet em java é o tempo de load da página, muita gente não gosta dele hoje em dia. Tem algumas alternativas como flash.

Nunca usei C++ para programar WEB, já vi algo usando o defunto cgi mas isso é no servidor, não no cliente. Acho que, com c++, seu código deve estar instalado no pc cliente e ele deva acessar o servidor diretamente, seria mais um tipo de aplicação cliente/servidor onde você quase que criaria um browser para acessar o servidor, é isso? Só daria pra rodar esse código "cliente em c++" dentro do browser se ele fosse uma espécie de plugin pro browser, tipo os que tem de quilo para o firefox.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor joao » 29 Jul 2009 08:28

Ola ChipSelect,

Acho que vc entendeu a idéia! Então poderia usar JAVA. Legal a idéia, não sabia que Java applet(é o mesmo que Java Script?) conseguer ler um arquivo da máquina do usuário, por exemplo.

E não vou programar em C++ para web não. O meu programa vai rodar no comp apenas para pegar os dados da máquina. Mas não vai interagir com a Web. Tava pensando em fazer um XML dos dados e o Java(Agora que eu sei que dá) iria abrir esse XML.

Valeu pela ajuda!

[]'s João
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Jorge_Francisco » 29 Jul 2009 08:32

Entendi mais ou menos. Ficou confuso, quem vai receber o que? O servidor tem acesso a que? enviar o que? pra quem? Você recebe o que do servidor? Dê mais detalhes joão.

Abraço.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor Jorge_Francisco » 29 Jul 2009 08:36

Se tem um programa local(em C++,etc) e ele lê algo em tempo real, porque não guarda por um tempo estas informações e depois envia via socket? ou muito melhor, usa WebService para um banco de dados no Servidor?
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor chipselect » 29 Jul 2009 12:36

applet java não é javascript, é um ".class" (ou ".jar") gerado, cujo fonte foi escrito para rodar dentro do navegador. A página web contém instruções para carregar esse applet, que é executado no navegador.

O javascript é um código interpretado contido na própria página web, e o navegador executa o código.

Tanto javascript como applets java podem abrir arquivos locais (arquivos localizados na máquina cliente), mas dependendo da complexidade do aplicativo, melhor usar applet java.

Segue algumas observações bem superficiais pra vc diferenciar tantos nomes parecidos:

javascript: código fonte contido na página web, executado no navegador (cliente)

applet: bytecode java (java compilado) referenciado pela página web, carregado e executado dentro do navegador.

java server pages: script de código executado no servidor, gerando código html (possivelmente outros) que são enviados ao navegador (cliente). O navegador não tem acesso ao código jsp.

Obs: javascript é um pouco diferente do "java tradicional".
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor joao » 29 Jul 2009 13:27

Olha, melhor mostrar com um exemplo:

O windows update novamente! :)
Ele lê dados do seu comp, vc le quando abre a página da empresa(microsoft), e vc pode baixar os updates que não tem.
Quero fazer exatamente isto. Mas no final, eu enviaria os dados para o servidor.

Pelo o que o chipselect falou, dá para ler arquivos via javascript, então eu acho que no meu caso, seria o que preciso.
Porque, dai o programa C++ le os dados do computador e cria um arquivo xml na máquina.
O javascript que estará na página da web da empresa, vai ler esse XML local da máquina e mostrar na página da empresa(igual ao windows update)
Caso o usuário queira enviar o arquivo(XML), ele estará aberto no javascript, então o javascript enviaria o arquivo para o servidor. No caso, apenas salvaria no servidor este arquivo.
Neste caso, o programa C++ não terá nenhuma conexão com o servidor.

Isso é possível de fazer então?

[]'s
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor msamsoniuk » 29 Jul 2009 17:00

nao sei se foi um bom exemplo... o windows update eh uma aplicacao active-x, entao o explorer nem toma conhecimento do que acontece e possivelmente ele nao funciona em outro browser, como o firefox.

joao escreveu:Olha, melhor mostrar com um exemplo:

O windows update novamente! :)
Ele lê dados do seu comp, vc le quando abre a página da empresa(microsoft), e vc pode baixar os updates que não tem.
Quero fazer exatamente isto. Mas no final, eu enviaria os dados para o servidor.

Pelo o que o chipselect falou, dá para ler arquivos via javascript, então eu acho que no meu caso, seria o que preciso.
Porque, dai o programa C++ le os dados do computador e cria um arquivo xml na máquina.
O javascript que estará na página da web da empresa, vai ler esse XML local da máquina e mostrar na página da empresa(igual ao windows update)
Caso o usuário queira enviar o arquivo(XML), ele estará aberto no javascript, então o javascript enviaria o arquivo para o servidor. No caso, apenas salvaria no servidor este arquivo.
Neste caso, o programa C++ não terá nenhuma conexão com o servidor.

Isso é possível de fazer então?

[]'s
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor joao » 30 Jul 2009 05:30

Ola Marcelo,

Isso é verdade, o Firefox não roda o windows update.

Bom, conversando com o responsável do projeto, eu entendi errado uma parte do projeto. Então infelizmente eu me perdi novamente. Desculpem ai.

Vou tentar explicar diferente, imagine que eu quero pegar o SERIAL do meu HD, por exemplo. Esses são os passos, que o sistema iria rodar:
1 - Usuário entra na página: www.meusite.com/checkHD

2 - O site, de alguma forma, pegaria esse dado e mostraria na tela do usuário. O servidor, até aqui não sabe nada sobre esse SERIAL. Explicando em mais detalhes:
2.1 - O site teria um javascript/appletjava/activeX, ou qq coisa que chamaria um programa local C++ da minha máquina.
2.2 - O programa local gera um XML com o serial e salva em algum lugar do computador.
2.3 - O javascript/appletjava/activeX le esse XML e mostra na tela.

3 - O usuário clica em registrar, por exemplo. Isso faz com que seja salvo no servidor. E só aqui o servidor vai ter conhecimento do SERIAL do HD.
4 - FIM.

até onde eu entendi é tranquilo de se fazer tudo, menos o 2.1 que vai ser um problema.
Alguém pode me explicar como seria essa parte?

Muito Obrigado,
Joao
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor albertorcneto » 30 Jul 2009 06:39

Oi joao,

Nao sei se eh possivel, mas atraves de um java applet o usuario roda e recupera os dados do serial, por exemplo. O proprio applet salva isso em um arquivo txt ou xml, como voce falou.

Na hora de registrar, o usuario manda o arquivo txt ou xml salvo junto com os dados do registro.

Acho que isso eh simples o suficiente para qualquer um registrar.

Bom, so falta saber se o java applet consegue fazer o que voce quer fazer. Acredito que seja recuperar o numero de registro serial do HD.
"Nothing travels faster than the speed of light, with the possible exception of bad news, which obeys its own set of laws" ~ Douglas Adams
albertorcneto
Byte
 
Mensagens: 269
Registrado em: 28 Mar 2007 14:08

Mensagempor chipselect » 30 Jul 2009 07:34

Aqui tem uma maneira de minimizar os efeitos de segurança que bloqueiam o acesso a arquivos locais, com javascript e active-x.

http://www.c-point.com/JavaScript/artic ... Script.htm
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor msamsoniuk » 30 Jul 2009 12:59

eu nao sou especialista no assunto pq eu nao manjo nada de windows... mas na verdade o que vc quer fazer eh um trojan! :)

explico: o que vc quer, em teoria, nao deveria ser possivel em hipotese nenhuma, pq ninguem em perfeita consciencia deixaria applets active-x ou java rodarem na sua maquina e acessarem arquivos enquanto vc navega pela internet... mas isso acontece, eh a forma com que varios trojans entram nas maquinas! no caso do active-x, foi malandragem da microsoft: comecou como um recurso bacana, depois os especialistas em seguranca chamaram a atencao que isso era a coisa mais idiota do mundo e desde entao eles fazem vista grossa para o assunto (tem um monte de firula do windows que usa o recurso, motivo pelo qual o windows nunca sera seguro). no caso do java, teoricamente nasceu em um ambiente seguro e isso nao deveria ocorrer em hipotese alguma... mas ocorre.

coisas similares aconteceram na industria muitas vezes. um exemplo classico eh o postscript, q originalmente permitia escrever arquivos no print server... mas quem imaginaria que daria para invadir o print server enviando uma impressao com codigo postscript maldoso?

entao eu nao diria que eh uma tecnica recomendavel, mas se vc quer arriscar, eh soh procurar algum exemplo de trojan active-x. com eles vc com certeza consegue fazer *tudo* na maquina do usuario, vide o exemplo do proprio windows update :)

certamente vc encontra sites com exemplos de como fazer.

joao escreveu:Ola Marcelo,

Isso é verdade, o Firefox não roda o windows update.

Bom, conversando com o responsável do projeto, eu entendi errado uma parte do projeto. Então infelizmente eu me perdi novamente. Desculpem ai.

Vou tentar explicar diferente, imagine que eu quero pegar o SERIAL do meu HD, por exemplo. Esses são os passos, que o sistema iria rodar:
1 - Usuário entra na página: www.meusite.com/checkHD

2 - O site, de alguma forma, pegaria esse dado e mostraria na tela do usuário. O servidor, até aqui não sabe nada sobre esse SERIAL. Explicando em mais detalhes:
2.1 - O site teria um javascript/appletjava/activeX, ou qq coisa que chamaria um programa local C++ da minha máquina.
2.2 - O programa local gera um XML com o serial e salva em algum lugar do computador.
2.3 - O javascript/appletjava/activeX le esse XML e mostra na tela.

3 - O usuário clica em registrar, por exemplo. Isso faz com que seja salvo no servidor. E só aqui o servidor vai ter conhecimento do SERIAL do HD.
4 - FIM.

até onde eu entendi é tranquilo de se fazer tudo, menos o 2.1 que vai ser um problema.
Alguém pode me explicar como seria essa parte?

Muito Obrigado,
Joao
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor joao » 30 Jul 2009 13:57

Ola Marcelo,

Acabei descobrindo como é isso, não é trojan não. Pelo menos não é a minha intenção inicial!!!! :twisted: (brincadeira, é para o meu trampo...)
Dá para fazer em Applet. Acabei de fazer um exemplo, mas é claro que não é simples.
O applet, para poder fazer isso, tem que ser assinado.
Dai que vem todo o problema.
:)

Para comprar o certificado, custa uns 600 doletas por 2 anos de validade. Depois disso, vc pode ir renovando sendo transparente ao usuário.
1 - vc cria o applet que chama o teu prog. Sem assinar ele, o java retorna com um erro de segurança.
2 - Vc gera o .class dele.
3 - vc cria um .jar dele
4 - vc cria um certificado
5 - vc assina digitalmente este certificado na web, em empresas que fazem isso.
6 - vc aplica o seu certificado para o .jar
7 - vc chama o .jar na sua HTML
8 - ele executa o programa.

Pelo o que eu li, o bom do applet em relação ao ActiveX(que também consegue fazer isso) é que ele roda em linux e windows e é o mesmo certificado para ambos.

No teste que eu fiz, a página da web perguntou se eu queria rodar o meu .jar, mesmo com certificado, pois ele não estava assinado digitalmente. Dai vc pode escolher sim e desta maneira, ele pode ser de graça, pelo menos para testes.

Se alguém quiser mais explicação é só perguntar, mas já vou avisando que sem comprar a assinatura, não vale a pena usar este dito cujo.

[]'s
Como já diria um grande amigo: Só sei que nada sei!!!
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Próximo

Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x