Commit 27ea9b9d2cf7f5a518e4e0e721effd6e980bad97
1 parent
3b0f426b
Exists in
master
Agente Windows/srCACICsrv/srCACICcli: Reposicionamento de metodo publico, coment…
…arios, obtencao de parametro de TimeOut para conexoes e pequenas correcoes. git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/agente-windows@829 fecfc0c7-e812-0410-ae72-849f08638ee7
Showing
24 changed files
with
642 additions
and
320 deletions
Show diff stats
col_hard/col_hard.dpr
... | ... | @@ -736,7 +736,7 @@ begin |
736 | 736 | |
737 | 737 | v_te_mem_ram_desc := v_te_mem_ram_desc + 'Slot '+ inttostr(i) + ': ' |
738 | 738 | + v_SMBIOS.MemoryDevice[i].Manufacturer + ' ' |
739 | - + inttostr(v_SMBIOS.MemoryDevice[i].Size) + 'Mb ' | |
739 | + + inttostr(v_SMBIOS.MemoryDevice[i].Size) + 'MB ' | |
740 | 740 | + '(' + v_te_mem_ram_tipo +')'; |
741 | 741 | end; |
742 | 742 | end |
... | ... | @@ -749,7 +749,7 @@ begin |
749 | 749 | v_te_mem_ram_desc := v_te_mem_ram_desc + ' - '; |
750 | 750 | v_te_mem_ram_desc := v_te_mem_ram_desc + 'Slot '+ inttostr(i) + ': ' |
751 | 751 | + v_SMBIOS.MemoryDevice[i].Manufacturer + ' ' |
752 | - + inttostr(v_SMBIOS.MemoryModule[i].Size) + 'Mb ' | |
752 | + + inttostr(v_SMBIOS.MemoryModule[i].Size) + 'MB ' | |
753 | 753 | + '(' + v_te_mem_ram_tipo +')'; |
754 | 754 | end; |
755 | 755 | end; |
... | ... | @@ -787,7 +787,7 @@ begin |
787 | 787 | |
788 | 788 | if (trim(v_te_placa_video_desc)='') then v_te_placa_video_desc := v_DISPLAY.Adapter; |
789 | 789 | v_qt_placa_video_cores := IntToStr(v_DISPLAY.ColorDepth); |
790 | - v_qt_placa_video_mem := IntToStr(v_DISPLAY.Memory div 1048576 ) + 'Mb'; | |
790 | + v_qt_placa_video_mem := IntToStr(v_DISPLAY.Memory div 1048576 ) + 'MB'; | |
791 | 791 | v_te_placa_video_resolucao := IntToStr(v_DISPLAY.HorzRes) + 'x' + IntToStr(v_DISPLAY.VertRes); |
792 | 792 | |
793 | 793 | v_DISPLAY.Free; | ... | ... |
srcacic/VNCViewer/AuthDialog.h
... | ... | @@ -36,10 +36,10 @@ public: |
36 | 36 | virtual ~AuthDialog(); |
37 | 37 | int DoDialog(); |
38 | 38 | |
39 | - TCHAR m_user[32]; | |
40 | - TCHAR m_passwd[32]; | |
41 | - TCHAR m_doc_ref[128]; | |
42 | - TCHAR m_motivo[5120]; | |
39 | + TCHAR m_user[32]; // Usuário técnico a ser autenticado no gerente web | |
40 | + TCHAR m_passwd[32]; // Senha | |
41 | + TCHAR m_doc_ref[128]; // Documento de Referência apresentado pelo técnico. | |
42 | + TCHAR m_motivo[5120]; // Motivo da conexão. | |
43 | 43 | |
44 | 44 | TCHAR m_domain[128]; |
45 | 45 | ... | ... |
srcacic/VNCViewer/CACIC_Crypt.cpp
srcacic/VNCViewer/CACIC_Crypt.h
1 | -/* | |
2 | - * Classe para criptografia de dados | |
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe para criptografia de dados. | |
3 | 5 | */ |
4 | 6 | |
5 | 7 | #ifndef _CACIC_CRYPT_ |
... | ... | @@ -16,17 +18,37 @@ class CACIC_Crypt { |
16 | 18 | |
17 | 19 | public: |
18 | 20 | |
21 | + /** | |
22 | + * Remove da String de entrada os caracteres colocados pela URLEncode, | |
23 | + * tira do Base64 e depois decodifica usando o Rijndael. | |
24 | + * @param entrada String a ser decodificada. | |
25 | + * @return string String decodificada. | |
26 | + */ | |
19 | 27 | static string decodifica(const char* entrada); |
28 | + | |
29 | + /** | |
30 | + * Codifica a String passada com o algoritmo Rijndael e coloca no Base64. | |
31 | + * @param entrada String a ser codificada. | |
32 | + * @return string String codificada. | |
33 | + */ | |
20 | 34 | static string codifica(const char* entrada); |
21 | 35 | |
22 | 36 | private: |
23 | 37 | |
24 | - static const unsigned int SRCACIC_BLOCK_SIZE; // tamanho padrao do bloco | |
25 | - static const unsigned int SRCACIC_KEY_SIZE; // tamanho padrao da chave | |
26 | - static const char SRCACIC_KEY[17]; // chave de en/dec | |
27 | - static const char SRCACIC_IV[17]; // vetor de inicializacao | |
28 | - | |
29 | - virtual void ccrypt() = 0; // Truque para tornar a classe abstrata. | |
38 | + /** Tamanho padrão do bloco. */ | |
39 | + static const unsigned int SRCACIC_BLOCK_SIZE; | |
40 | + /** Tamanho padrão da chave. */ | |
41 | + static const unsigned int SRCACIC_KEY_SIZE; | |
42 | + /** Chave de codificação. */ | |
43 | + static const char SRCACIC_KEY[17]; | |
44 | + /** Vetor de inicialização. */ | |
45 | + static const char SRCACIC_IV[17]; | |
46 | + | |
47 | + /** | |
48 | + * Este método virtual puro é um truque para que a classe | |
49 | + * se torne abstrata e não possa ser instanciada. | |
50 | + */ | |
51 | + virtual void ccrypt() = 0; | |
30 | 52 | }; |
31 | 53 | |
32 | 54 | #endif | ... | ... |
srcacic/VNCViewer/CACIC_Utils.cpp
1 | 1 | #include "CACIC_Utils.h" |
2 | 2 | |
3 | -// troca os caracteres da string | |
4 | -// origem ori_str new_str | |
5 | 3 | void CACIC_Utils::replaceAll(string &str, string key, string newkey) |
6 | 4 | { |
7 | 5 | int found = str.find(key, 0); |
... | ... | @@ -13,7 +11,6 @@ void CACIC_Utils::replaceAll(string &str, string key, string newkey) |
13 | 11 | } |
14 | 12 | } |
15 | 13 | |
16 | -// substitui alguns caracteres especiais antes da encriptacao | |
17 | 14 | void CACIC_Utils::simpleUrlEncode(string &decoded) |
18 | 15 | { |
19 | 16 | replaceAll(decoded, "+", "<MAIS>"); |
... | ... | @@ -32,7 +29,6 @@ void CACIC_Utils::simpleUrlDecode(string &encoded) |
32 | 29 | replaceAll(encoded, "<BarrInv>", "\\"); |
33 | 30 | } |
34 | 31 | |
35 | -// Fetches the MAC address and prints it | |
36 | 32 | string CACIC_Utils::getMACAddress() { |
37 | 33 | |
38 | 34 | IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information for up to 16 NICs |
... | ... | @@ -44,7 +40,6 @@ string CACIC_Utils::getMACAddress() { |
44 | 40 | assert(dwStatus == ERROR_SUCCESS); // Verify return value is valid, no buffer overflow |
45 | 41 | |
46 | 42 | PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;// Contains pointer to current adapter info |
47 | - // TODO: e se houve mais de uma placa de rede, qual mac deve ir? | |
48 | 43 | //do { |
49 | 44 | // PrintMACaddress(pAdapterInfo->Address); // Print MAC address |
50 | 45 | // pAdapterInfo = pAdapterInfo->Next; // Progress through linked list |
... | ... | @@ -62,8 +57,6 @@ string CACIC_Utils::getMACAddress() { |
62 | 57 | |
63 | 58 | } |
64 | 59 | |
65 | -// TODO: Lembrete, quero melhorar o código: | |
66 | -// http://www.codeguru.com/cpp/w-p/system/systeminformation/article.php/c8973__2/ | |
67 | 60 | string CACIC_Utils::getSOID() { |
68 | 61 | OSVERSIONINFO osver; |
69 | 62 | ZeroMemory(&osver, sizeof(OSVERSIONINFO)); | ... | ... |
srcacic/VNCViewer/CACIC_Utils.h
1 | 1 | #ifndef _CACIC_UTILS_ |
2 | 2 | #define _CACIC_UTILS_ |
3 | 3 | |
4 | +/** | |
5 | + * Copyright (C) 2009 DATAPREV-ES | |
6 | + * @author Vinicius Avellar Moreira | |
7 | + * Classe com alguns métodos utilitários. | |
8 | + */ | |
9 | + | |
4 | 10 | #include "stdhdrs.h" |
5 | 11 | |
6 | 12 | #include <Iphlpapi.h> |
... | ... | @@ -17,17 +23,49 @@ class CACIC_Utils { |
17 | 23 | |
18 | 24 | public: |
19 | 25 | |
26 | + /** | |
27 | + * Troca caracteres específicos de uma string. | |
28 | + * @param str String a ser modificada. | |
29 | + * @param key String com o caractere ou conjunto de caracteres que serão substituídos. | |
30 | + * @param newKey String com o caractere ou conjunto de caracteres que irão substituir. | |
31 | + */ | |
20 | 32 | static void replaceAll(string &str, string key, string newkey); |
21 | 33 | |
34 | + /** | |
35 | + * Mesma função do urlEncode, porém os caracteres serão substituídos | |
36 | + * por tags específicas, e não pelo código. | |
37 | + * @param entrada String que será codificada. | |
38 | + */ | |
22 | 39 | static void simpleUrlEncode(string &entrada); |
40 | + | |
41 | + /** | |
42 | + * Faz o inverso do simpleUrlEncode, trocando as tags específicas pelos | |
43 | + * respectivos caracteres. | |
44 | + * @param entrada String que será codificada. | |
45 | + */ | |
23 | 46 | static void simpleUrlDecode(string &entrada); |
24 | 47 | |
48 | + /** | |
49 | + * Obtém o MAC Address da placa de rede.<br /> | |
50 | + * TODO: Quando houver mais de uma placa de rede no pc, verificar qual | |
51 | + * está se comunicando com o servidor para enviar o MAC certo. | |
52 | + */ | |
25 | 53 | static string getMACAddress(); |
54 | + | |
55 | + /** | |
56 | + * Obtém a identificação do sistema operacional.<br /> | |
57 | + * Artigo sobre SOID:<br /> | |
58 | + * http://www.codeguru.com/cpp/w-p/system/systeminformation/article.php/c8973__2/ | |
59 | + */ | |
26 | 60 | static string getSOID(); |
27 | 61 | |
28 | 62 | private: |
29 | 63 | |
30 | - virtual void cutils() = 0; // Truque para tornar a classe abstrata. | |
64 | + /** | |
65 | + * Este método virtual puro é um truque para que a classe | |
66 | + * se torne abstrata e não possa ser instanciada. | |
67 | + */ | |
68 | + virtual void cutils() = 0; | |
31 | 69 | |
32 | 70 | }; |
33 | 71 | ... | ... |
srcacic/VNCViewer/Res/vncviewer.rc
... | ... | @@ -312,7 +312,7 @@ BEGIN |
312 | 312 | RTEXT "Usuário:",IDC_STATIC,76,24,39,10 |
313 | 313 | RTEXT "Senha:",IDC_STATIC,80,41,35,8 |
314 | 314 | LTEXT "Doc. Referência:",IDC_DOC_REF,61,58,55,8 |
315 | - LTEXT "Motivo do suporte: (tamanho máximo 5120 caracteres)",IDC_MOTIVO_SUPORTE,7,70,179,8 | |
315 | + LTEXT "Motivo do Suporte: (tamanho máximo 5120 caracteres)",IDC_MOTIVO_SUPORTE,7,70,179,8 | |
316 | 316 | CONTROL 156,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_SUNKEN,7,21,50,45 |
317 | 317 | LTEXT "Por favor, digite seu nome de usuário e senha no gerente web.",IDC_STATIC,7,7,203,11 |
318 | 318 | LTEXT "",IDC_CHAR_COUNT,7,136,43,8,0,WS_EX_TRANSPARENT |
... | ... | @@ -535,8 +535,8 @@ IDB_VNC32 BITMAP "vnc32.BMP" |
535 | 535 | // |
536 | 536 | |
537 | 537 | VS_VERSION_INFO VERSIONINFO |
538 | - FILEVERSION 2,5,0,800 | |
539 | - PRODUCTVERSION 2,5,0,800 | |
538 | + FILEVERSION 2,5,0,804 | |
539 | + PRODUCTVERSION 2,5,0,804 | |
540 | 540 | FILEFLAGSMASK 0x37L |
541 | 541 | #ifdef _DEBUG |
542 | 542 | FILEFLAGS 0x25L |
... | ... | @@ -553,11 +553,11 @@ BEGIN |
553 | 553 | BEGIN |
554 | 554 | VALUE "CompanyName", "Dataprev - Unidade Regional Espírito Santo" |
555 | 555 | VALUE "FileDescription", "Visualizador do Suporte Remoto Seguro do Sistema CACIC" |
556 | - VALUE "FileVersion", "2, 5, 0, 800" | |
556 | + VALUE "FileVersion", "2, 5, 0, 804" | |
557 | 557 | VALUE "InternalName", "srCACICcli" |
558 | 558 | VALUE "LegalCopyright", "Copyright © 2008 DATAPREV" |
559 | 559 | VALUE "LegalTrademarks", "srCACIC" |
560 | - VALUE "ProductVersion", "2, 5, 0, 800" | |
560 | + VALUE "ProductVersion", "2, 5, 0, 804" | |
561 | 561 | END |
562 | 562 | END |
563 | 563 | BLOCK "VarFileInfo" | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Auth.cpp
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe singleton responsável pela autenticação no gerente web. | |
5 | + */ | |
6 | + | |
1 | 7 | #include "CACIC_Auth.h" |
2 | 8 | |
3 | 9 | const string CACIC_Auth::GET_CONFIG_SCRIPT = "srcacic_get_config.php"; |
4 | 10 | const string CACIC_Auth::SET_SESSION_SCRIPT = "srcacic_set_session.php"; |
5 | 11 | const string CACIC_Auth::AUTH_CLIENT_SCRIPT = "srcacic_auth_client.php"; |
6 | 12 | const unsigned int CACIC_Auth::TAMANHO_RESPOSTA = 1025; |
13 | +const string CACIC_Auth::AGUARDE_FILENAME = "aguarde_srCACIC.txt"; | |
14 | +const string CACIC_Auth::COOKIE_FILENAME = "cacic_ck.txt"; | |
15 | +const UINT CACIC_Auth::TEMPO_IDLE = 5; | |
7 | 16 | |
8 | -CACIC_Auth::CACIC_Auth() {} | |
9 | - | |
10 | -CACIC_Auth::~CACIC_Auth() {} | |
11 | - | |
12 | -// autentica a sessão no servidor web de acordo com os parametros passados | |
13 | 17 | bool CACIC_Auth::autentica() |
14 | 18 | { |
15 | - string post = getPostComum(); | |
16 | - | |
17 | 19 | vnclog.Print(LL_SRLOG, VNCLOG("Autenticando o usuário no gerente web.\n")); |
18 | 20 | |
21 | + string post = getPostComum(); | |
22 | + | |
19 | 23 | string config_script = m_scriptsPath; |
20 | 24 | config_script += GET_CONFIG_SCRIPT; |
21 | 25 | |
... | ... | @@ -25,65 +29,71 @@ bool CACIC_Auth::autentica() |
25 | 29 | vector<Dominio> listaDominios; |
26 | 30 | if (!verificaAuthChave(resposta, listaDominios)) return false; |
27 | 31 | |
28 | - vncPassDlg::EAuthCode authStat; | |
29 | - if (listaDominios.at(0).id == "0") { | |
30 | - authStat = vncPassDlg::SEM_AUTENTICACAO; | |
32 | + if (!autenticaUsuario(listaDominios)) return false; | |
33 | + | |
34 | + vnclog.Print(LL_SRLOG, VNCLOG("Autenticação OK!\n")); | |
35 | + | |
36 | + return true; | |
37 | +} | |
38 | + | |
39 | +bool CACIC_Auth::autenticaUsuario(vector<Dominio> &listaDominios) | |
40 | +{ | |
41 | + string post; | |
42 | + char resposta[TAMANHO_RESPOSTA]; | |
43 | + | |
44 | + vncPassDlg passDlg(listaDominios); | |
45 | + | |
46 | + if (listaDominios.at(0).id.compare("0") == 0) { | |
47 | + passDlg.m_authStat = vncPassDlg::SEM_AUTENTICACAO; | |
31 | 48 | } else { |
32 | - authStat = vncPassDlg::ESPERANDO_AUTENTICACAO; | |
49 | + passDlg.m_authStat = vncPassDlg::ESPERANDO_AUTENTICACAO; | |
33 | 50 | } |
34 | 51 | |
35 | 52 | // apresenta o dialogo de autenticação |
36 | - vncPassDlg passDlg(listaDominios); | |
37 | 53 | do |
38 | 54 | { |
39 | - if (!passDlg.DoDialog(authStat, "")) return 0; | |
40 | - | |
41 | - string nm_nome_acesso_autenticacao; | |
42 | - nm_nome_acesso_autenticacao = CACIC_Crypt::codifica(passDlg.m_usuario); | |
43 | - | |
44 | - string te_senha_acesso_autenticacao; | |
45 | - te_senha_acesso_autenticacao = CACIC_Crypt::codifica(passDlg.m_senha); | |
46 | - | |
47 | - string id_servidor_autenticacao; | |
48 | - id_servidor_autenticacao = CACIC_Crypt::codifica(passDlg.m_dominio); | |
49 | - | |
55 | + if (!passDlg.DoDialog()) return false; | |
56 | + | |
57 | + post.clear(); | |
58 | + post = getPostComum(); | |
59 | + | |
50 | 60 | post += "&nm_nome_acesso_autenticacao="; |
51 | - post += nm_nome_acesso_autenticacao; | |
61 | + post += CACIC_Crypt::codifica(passDlg.m_usuario); | |
52 | 62 | post += "&te_senha_acesso_autenticacao="; |
53 | - post += te_senha_acesso_autenticacao; | |
63 | + post += CACIC_Crypt::codifica(passDlg.m_senha); | |
54 | 64 | post += "&id_servidor_autenticacao="; |
55 | - post += id_servidor_autenticacao; | |
65 | + post += CACIC_Crypt::codifica(passDlg.m_dominio); | |
56 | 66 | |
57 | 67 | vnclog.Print(LL_SRLOG, post.data()); |
58 | 68 | |
59 | - string session_script = m_scriptsPath.c_str(); | |
69 | + string session_script = m_scriptsPath; | |
60 | 70 | session_script.append(SET_SESSION_SCRIPT); |
61 | 71 | |
62 | 72 | CACIC_Con::sendHtppPost(m_servidorWeb, session_script, post, resposta, TAMANHO_RESPOSTA); |
63 | 73 | |
64 | 74 | if(verificaAuthDominio(resposta)) { |
65 | - authStat = vncPassDlg::AUTENTICADO; | |
75 | + passDlg.m_authStat = vncPassDlg::AUTENTICADO; | |
66 | 76 | } else { |
67 | - authStat = vncPassDlg::FALHA_AUTENTICACAO; | |
77 | + passDlg.m_authStat = vncPassDlg::FALHA_AUTENTICACAO; | |
68 | 78 | } |
69 | 79 | } |
70 | - while (authStat != vncPassDlg::AUTENTICADO); | |
80 | + while (passDlg.m_authStat != vncPassDlg::AUTENTICADO); | |
71 | 81 | |
72 | 82 | if (passDlg.m_authStat != vncPassDlg::SEM_AUTENTICACAO) |
73 | 83 | { |
74 | 84 | string msginfo = "Usuário Autenticado: "; |
75 | 85 | msginfo += m_usuario; |
76 | - if (!passDlg.DoDialog(vncPassDlg::AUTENTICADO, msginfo)) return 0; | |
86 | + passDlg.m_authStat = vncPassDlg::AUTENTICADO; | |
87 | + passDlg.m_msgInfo = msginfo; | |
88 | + if (!passDlg.DoDialog()) return false; | |
77 | 89 | } |
78 | 90 | |
79 | - vnclog.Print(LL_SRLOG, VNCLOG("Autenticação OK!\n")); | |
80 | - | |
81 | 91 | return true; |
82 | 92 | } |
83 | 93 | |
84 | -// autentica o técnico que irá realizar o suporte remoto | |
85 | 94 | bool CACIC_Auth::validaTecnico(char nm_usuario_cli[], char te_senha_cli[], char te_node_address_cli[], |
86 | - char te_documento_referencial[], char te_motivo_conexao[], char te_so_cli[], vncClientId vncCID) | |
95 | + char te_documento_referencial[], char te_motivo_conexao[], char te_so_cli[], | |
96 | + const vncClientId vncCID, const char peerName[]) | |
87 | 97 | { |
88 | 98 | string post = getPostComum(); |
89 | 99 | |
... | ... | @@ -110,7 +120,7 @@ bool CACIC_Auth::validaTecnico(char nm_usuario_cli[], char te_senha_cli[], char |
110 | 120 | CACIC_Con::sendHtppPost(m_servidorWeb, auth_client_script, post, resposta, TAMANHO_RESPOSTA); |
111 | 121 | |
112 | 122 | if (!verificaAuthTecnico(resposta, te_node_address_cli, te_documento_referencial, |
113 | - te_motivo_conexao, te_so_cli, vncCID)) | |
123 | + te_motivo_conexao, te_so_cli, vncCID, peerName)) | |
114 | 124 | { |
115 | 125 | return false; |
116 | 126 | } |
... | ... | @@ -118,35 +128,33 @@ bool CACIC_Auth::validaTecnico(char nm_usuario_cli[], char te_senha_cli[], char |
118 | 128 | return true; |
119 | 129 | } |
120 | 130 | |
121 | -// Verifica o status da chave passada ao agente. | |
122 | 131 | bool CACIC_Auth::verificaAuthChave(char resposta[], vector<Dominio> &listaDominios) |
123 | 132 | { |
124 | 133 | try |
125 | 134 | { |
126 | 135 | if (!verificaStatus(resposta)) throw SRCException("Falha na verificação da chave!"); |
127 | 136 | |
128 | - // pega o conteudo da tag de resposta <DOMINIOS>..</DOMINIOS> | |
129 | 137 | string dominios; |
130 | 138 | dominios = CACIC_Utils::leTag(resposta, "SERVIDORES_AUTENTICACAO"); |
131 | 139 | |
132 | 140 | string dominios_dec; |
133 | 141 | dominios_dec = CACIC_Crypt::decodifica(dominios.c_str()); |
134 | 142 | |
135 | - char* id_dominio = strtok((char*)dominios_dec.data(), ";"); | |
143 | + char* dominios_dec_str = (char*)malloc(sizeof(char)*(dominios_dec.length() + 1)); | |
144 | + string::traits_type::copy(dominios_dec_str, dominios_dec.c_str(), dominios_dec.length() + 1); | |
145 | + char* id_dominio = strtok(dominios_dec_str, ";"); | |
136 | 146 | char* nm_dominio = strtok(NULL, ";"); |
137 | 147 | |
138 | - // pega a lista de dominios e decodifica, adicionando-a no vetor | |
139 | - while (id_dominio != NULL && nm_dominio != NULL) | |
148 | + while (id_dominio != NULL) | |
140 | 149 | { |
141 | - Dominio novoDominio; | |
142 | - novoDominio.id = id_dominio; | |
143 | - novoDominio.nome = nm_dominio; | |
150 | + listaDominios.push_back(Dominio(id_dominio, nm_dominio)); | |
144 | 151 | |
145 | - listaDominios.push_back(novoDominio); | |
146 | - | |
147 | - id_dominio = strtok (NULL, ";"); | |
148 | - nm_dominio = strtok (NULL, ";"); | |
152 | + id_dominio = strtok(NULL, ";"); | |
153 | + nm_dominio = strtok(NULL, ";"); | |
149 | 154 | } |
155 | + delete dominios_dec_str; | |
156 | + delete id_dominio; | |
157 | + delete nm_dominio; | |
150 | 158 | |
151 | 159 | if (listaDominios.empty()) throw SRCException("A lista de domínios está vazia."); |
152 | 160 | |
... | ... | @@ -160,38 +168,24 @@ bool CACIC_Auth::verificaAuthChave(char resposta[], vector<Dominio> &listaDomini |
160 | 168 | } |
161 | 169 | } |
162 | 170 | |
163 | -// verifica a resposta referente a antenticacao do host | |
164 | 171 | bool CACIC_Auth::verificaAuthDominio(char resposta[]) |
165 | 172 | { |
166 | 173 | try |
167 | 174 | { |
168 | - if (!verificaStatus(resposta)) throw SRCException("Falha na autenticação do usuário."); | |
175 | + if (!verificaStatus(resposta)) return false;//throw SRCException("Falha na autenticação do usuário."); | |
169 | 176 | |
170 | - // pega o conteudo da tag de resposta <NM_COMPLETO>..</NM_COMPLETO> | |
171 | 177 | string nm_completo; |
172 | 178 | nm_completo = CACIC_Utils::leTag(resposta, "NM_COMPLETO"); |
173 | 179 | |
174 | - // decodifica e compara a resposta | |
175 | 180 | string nome_dec; |
176 | 181 | nome_dec.append(CACIC_Crypt::decodifica(nm_completo.c_str())); |
177 | 182 | |
178 | - // pega o conteudo da tag de resposta <ID_SESSAO>..</ID_SESSAO> | |
179 | 183 | string id_sessao; |
180 | 184 | id_sessao = CACIC_Utils::leTag(resposta, "ID_SESSAO"); |
181 | 185 | |
182 | - string nu_timeout_srcacic; | |
183 | - nu_timeout_srcacic = CACIC_Utils::leTag(resposta, "NU_TIMEOUT_SRCACIC"); | |
184 | - | |
185 | - string nu_timeout_srcacic_dec; | |
186 | - nu_timeout_srcacic_dec = CACIC_Crypt::decodifica(nu_timeout_srcacic.c_str()); | |
187 | - | |
188 | 186 | m_usuario = nome_dec; |
189 | 187 | m_idSessao = id_sessao; |
190 | 188 | |
191 | - /*stringstream timeoutBuffer(nu_timeout_srcacic_dec); | |
192 | - timeoutBuffer >> this->nuTimeout; | |
193 | - m_server->SetAutoIdleDisconnectTimeout(this->nuTimeout);*/ | |
194 | - | |
195 | 189 | return true; |
196 | 190 | } |
197 | 191 | catch(SRCException ex) |
... | ... | @@ -202,16 +196,14 @@ bool CACIC_Auth::verificaAuthDominio(char resposta[]) |
202 | 196 | } |
203 | 197 | } |
204 | 198 | |
205 | -// verifica a resposta referente a antenticacao do técnico | |
206 | 199 | bool CACIC_Auth::verificaAuthTecnico(char resposta[], char te_node_address_cli[], char te_documento_referencial[], |
207 | - char te_motivo_conexao[], char te_so_cli[], vncClientId vncCID) | |
200 | + char te_motivo_conexao[], char te_so_cli[], const vncClientId vncCID, const char peerName[]) | |
208 | 201 | { |
209 | 202 | try |
210 | 203 | { |
211 | - // pega o conteudo da tag de resposta <STATUS>..</STATUS> | |
212 | 204 | string status; |
213 | 205 | status = CACIC_Utils::leTag(resposta, "STATUS"); |
214 | - // decodifica e compara a resposta | |
206 | + | |
215 | 207 | string status_dec; |
216 | 208 | status_dec = CACIC_Crypt::decodifica(status.c_str()); |
217 | 209 | |
... | ... | @@ -219,19 +211,18 @@ bool CACIC_Auth::verificaAuthTecnico(char resposta[], char te_node_address_cli[] |
219 | 211 | // para poder pegar a resposta de erro que vem na tag STATUS |
220 | 212 | if (status_dec.compare("OK") != 0) throw SRCException(status_dec.c_str()); |
221 | 213 | |
222 | - // pega o conteudo da tag de resposta <ID_USUARIO_CLI>..</ID_USUARIO_CLI> | |
223 | 214 | string id_usuario_cli; |
224 | 215 | id_usuario_cli = CACIC_Utils::leTag(resposta, "ID_USUARIO_CLI"); |
225 | 216 | |
226 | - // pega o conteudo da tag de resposta <ID_CONEXAO>..</ID_CONEXAO> | |
227 | 217 | string id_conexao; |
228 | 218 | id_conexao = CACIC_Utils::leTag(resposta, "ID_CONEXAO"); |
229 | 219 | |
230 | - // pega o conteudo da tag de resposta <NM_COMPLETO>..</NM_COMPLETO> | |
231 | 220 | string nm_usuario_completo; |
232 | 221 | nm_usuario_completo = CACIC_Utils::leTag(resposta, "NM_USUARIO_COMPLETO"); |
233 | 222 | |
234 | - // decodifica e compara a resposta | |
223 | + string dt_hr_inicio_sessao; | |
224 | + dt_hr_inicio_sessao = CACIC_Utils::leTag(resposta, "DT_HR_INICIO_SESSAO"); | |
225 | + | |
235 | 226 | string nm_usuario_completo_dec; |
236 | 227 | nm_usuario_completo_dec.append(CACIC_Crypt::decodifica(nm_usuario_completo.c_str())); |
237 | 228 | |
... | ... | @@ -241,11 +232,6 @@ bool CACIC_Auth::verificaAuthTecnico(char resposta[], char te_node_address_cli[] |
241 | 232 | string te_motivo_conexao_dec; |
242 | 233 | te_motivo_conexao_dec.append(CACIC_Crypt::decodifica(te_motivo_conexao)); |
243 | 234 | |
244 | - // pega o conteudo da tag de resposta <DT_HR_INICIO_SESSAO>..</DT_HR_INICIO_SESSAO> | |
245 | - string dt_hr_inicio_sessao; | |
246 | - dt_hr_inicio_sessao = CACIC_Utils::leTag(resposta, "DT_HR_INICIO_SESSAO"); | |
247 | - | |
248 | - // decodifica e compara a resposta | |
249 | 235 | string dt_hr_inicio_sessao_dec; |
250 | 236 | dt_hr_inicio_sessao_dec.append(CACIC_Crypt::decodifica(dt_hr_inicio_sessao.c_str())); |
251 | 237 | |
... | ... | @@ -260,6 +246,7 @@ bool CACIC_Auth::verificaAuthTecnico(char resposta[], char te_node_address_cli[] |
260 | 246 | novoCliente.te_motivo_conexao = te_motivo_conexao_dec; |
261 | 247 | novoCliente.te_so_visitante = te_so_cli; |
262 | 248 | novoCliente.dt_hr_inicio_sessao = dt_hr_inicio_sessao_dec; |
249 | + novoCliente.peerName = peerName; | |
263 | 250 | |
264 | 251 | // adiciona o novo usuario a lista de usuarios visitantes |
265 | 252 | m_listaClientes.push_back(novoCliente); |
... | ... | @@ -268,6 +255,8 @@ bool CACIC_Auth::verificaAuthTecnico(char resposta[], char te_node_address_cli[] |
268 | 255 | |
269 | 256 | m_infoDlg.m_nomeVisitante = m_novoCliente.nm_usuario_completo; |
270 | 257 | m_infoDlg.m_dataInicio = m_novoCliente.dt_hr_inicio_sessao; |
258 | + m_infoDlg.m_ip = m_novoCliente.peerName; | |
259 | + m_infoDlg.m_documentoReferencia = m_novoCliente.te_documento_referencial; | |
271 | 260 | |
272 | 261 | return true; |
273 | 262 | } |
... | ... | @@ -282,19 +271,19 @@ bool CACIC_Auth::verificaAuthTecnico(char resposta[], char te_node_address_cli[] |
282 | 271 | |
283 | 272 | void CACIC_Auth::atualizaSessao() |
284 | 273 | { |
285 | - // Verifica se a palavra chave foi trocada enquanto em execução. | |
274 | + // Verifica, antes de atualizar a sessão, se a palavra | |
275 | + // chave foi trocada enquanto o servidor estava aberto. | |
286 | 276 | FILE *pFile; |
287 | - string filePath = m_tempPath + COOKIE_FILENAME; | |
277 | + string filePath = m_tempPath + CACIC_Auth::COOKIE_FILENAME; | |
288 | 278 | pFile = fopen(filePath.data(), "r"); |
289 | 279 | char newKey[256]; |
290 | 280 | |
291 | - // testa se o arquivo foi aberto com sucesso | |
292 | 281 | if(pFile != NULL) |
293 | 282 | { |
294 | 283 | if (fgets(newKey, 256, pFile)) |
295 | 284 | m_palavraChave = newKey; |
296 | 285 | |
297 | - fclose(pFile); // libera o ponteiro para o arquivo | |
286 | + fclose(pFile); | |
298 | 287 | remove(filePath.data()); |
299 | 288 | } |
300 | 289 | |
... | ... | @@ -316,25 +305,25 @@ void CACIC_Auth::atualizaSessao() |
316 | 305 | } |
317 | 306 | else |
318 | 307 | { |
319 | - string listaidusu = "&id_usuario_visitante="; | |
320 | - string listaidcon = "&id_conexao="; | |
321 | - string listanode = "&te_node_address_visitante="; | |
322 | - string listaidso = "&te_so_visitante="; | |
308 | + string listaIDUsuario = "&id_usuario_visitante="; | |
309 | + string listaIDConexao = "&id_conexao="; | |
310 | + string listaNodeAddress = "&te_node_address_visitante="; | |
311 | + string listaID_SO = "&te_so_visitante="; | |
323 | 312 | for (int i = 0; i < m_listaClientes.size(); i++) |
324 | 313 | { |
325 | - listaidusu += m_listaClientes[i].id_usuario_visitante; | |
326 | - if (i < m_listaClientes.size() - 1) listaidusu += "<REG>"; | |
327 | - listaidcon += m_listaClientes[i].id_conexao; | |
328 | - if (i < m_listaClientes.size() - 1) listaidcon += "<REG>"; | |
329 | - listanode += m_listaClientes[i].te_node_address_visitante; | |
330 | - if (i < m_listaClientes.size() - 1) listanode += "<REG>"; | |
331 | - listaidso += m_listaClientes[i].te_so_visitante; | |
332 | - if (i < m_listaClientes.size() - 1) listaidso += "<REG>"; | |
314 | + listaIDUsuario += m_listaClientes[i].id_usuario_visitante; | |
315 | + if (i < m_listaClientes.size() - 1) listaIDUsuario += "<REG>"; | |
316 | + listaIDConexao += m_listaClientes[i].id_conexao; | |
317 | + if (i < m_listaClientes.size() - 1) listaIDConexao += "<REG>"; | |
318 | + listaNodeAddress += m_listaClientes[i].te_node_address_visitante; | |
319 | + if (i < m_listaClientes.size() - 1) listaNodeAddress += "<REG>"; | |
320 | + listaID_SO += m_listaClientes[i].te_so_visitante; | |
321 | + if (i < m_listaClientes.size() - 1) listaID_SO += "<REG>"; | |
333 | 322 | } |
334 | - post += listaidusu; | |
335 | - post += listaidcon; | |
336 | - post += listanode; | |
337 | - post += listaidso; | |
323 | + post += listaIDUsuario; | |
324 | + post += listaIDConexao; | |
325 | + post += listaNodeAddress; | |
326 | + post += listaID_SO; | |
338 | 327 | } |
339 | 328 | |
340 | 329 | string session_script = m_scriptsPath.c_str(); |
... | ... | @@ -346,8 +335,23 @@ void CACIC_Auth::atualizaSessao() |
346 | 335 | if (!verificaStatus(resposta)) |
347 | 336 | { |
348 | 337 | MessageBox(NULL, "Ocorreu um erro ao atualizar a sessão! O programa será fechado.", "Erro!", MB_OK | MB_ICONERROR); |
349 | - ExitProcess(0); | |
350 | - return; | |
338 | + finalizaServidor(); | |
339 | + } | |
340 | + | |
341 | + // verifica se o servidor está sem receber conexão por | |
342 | + // mais tempo que o limite, caso esteja, o processo é finalizado. | |
343 | + if (m_listaClientes.empty()) | |
344 | + { | |
345 | + m_idleTime--; | |
346 | + if (m_idleTime <= 0) | |
347 | + { | |
348 | + vnclog.Print(LL_SRLOG, "Fechando o servidor por atingir o tempo máximo de idle."); | |
349 | + finalizaServidor(); | |
350 | + } | |
351 | + } | |
352 | + else | |
353 | + { | |
354 | + m_idleTime = TEMPO_IDLE; | |
351 | 355 | } |
352 | 356 | } |
353 | 357 | |
... | ... | @@ -373,7 +377,6 @@ void CACIC_Auth::sendChatText(char te_mensagem[], char cs_origem[]) |
373 | 377 | CACIC_Con::sendHtppPost(m_servidorWeb, session_script, post, resposta, TAMANHO_RESPOSTA); |
374 | 378 | } |
375 | 379 | |
376 | -// remove o cliente com id vncid da lista de usuarios visitantes | |
377 | 380 | void CACIC_Auth::removeCliente(vncClientId vncCID) |
378 | 381 | { |
379 | 382 | // Atualiza a sessão antes de remover o cliente. |
... | ... | @@ -394,16 +397,6 @@ void CACIC_Auth::removeCliente(vncClientId vncCID) |
394 | 397 | m_novoCliente = novoCliente; |
395 | 398 | } |
396 | 399 | |
397 | -CACIC_Auth* CACIC_Auth::getInstance() | |
398 | -{ | |
399 | - if (!m_instance) | |
400 | - { | |
401 | - m_instance = new CACIC_Auth(); | |
402 | - } | |
403 | - return m_instance; | |
404 | -} | |
405 | - | |
406 | -// pega os parametros comuns a todos os posts enviados | |
407 | 400 | string CACIC_Auth::getPostComum() |
408 | 401 | { |
409 | 402 | string post = ""; |
... | ... | @@ -417,24 +410,31 @@ string CACIC_Auth::getPostComum() |
417 | 410 | return post; |
418 | 411 | } |
419 | 412 | |
420 | -// verifica se a resposta enviada na tag status esta ok | |
421 | 413 | bool CACIC_Auth::verificaStatus(char resposta[]) |
422 | 414 | { |
423 | - // pega o conteudo da tag de resposta <STATUS>..</STATUS> | |
424 | 415 | string status; |
425 | 416 | status = CACIC_Utils::leTag(resposta, "STATUS"); |
426 | 417 | |
427 | - // decodifica e compara a resposta | |
428 | 418 | string status_dec; |
429 | 419 | status_dec = CACIC_Crypt::decodifica(status.c_str()); |
430 | 420 | |
431 | - if (status_dec.compare("OK") != 0) | |
432 | - { | |
433 | - string errorMsg = "Falha na autenticação do usuário no domínio.\n"; | |
434 | - errorMsg += status_dec; | |
435 | - vnclog.Print(LL_SRLOG, VNCLOG(errorMsg.c_str())); | |
436 | - return false; | |
437 | - } | |
421 | + if (status_dec.compare("OK") != 0) return false; | |
438 | 422 | |
439 | 423 | return true; |
440 | 424 | } |
425 | + | |
426 | +void CACIC_Auth::finalizaServidor() | |
427 | +{ | |
428 | + static HANDLE hShutdownEvent; | |
429 | + hShutdownEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "Global\\SessionEventUltra"); | |
430 | + SetEvent(hShutdownEvent); | |
431 | + CloseHandle(hShutdownEvent); | |
432 | + HWND hservwnd; | |
433 | + // UVNC Default: WinVNC Tray Icon | |
434 | + hservwnd = FindWindow("srCACICsrv Tray Icon", NULL); | |
435 | + if (hservwnd != NULL) | |
436 | + { | |
437 | + PostMessage(hservwnd, WM_COMMAND, 40002, 0); | |
438 | + PostMessage(hservwnd, WM_CLOSE, 0, 0); | |
439 | + } | |
440 | +} | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Auth.h
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe singleton responsável pela autenticação no gerente web. | |
5 | + */ | |
6 | + | |
1 | 7 | #ifndef _CACIC_AUTH_ |
2 | 8 | #define _CACIC_AUTH_ |
3 | 9 | |
... | ... | @@ -21,12 +27,12 @@ using namespace std; |
21 | 27 | |
22 | 28 | #include "vncClient.h" |
23 | 29 | |
24 | -#define AGUARDE_FILENAME "aguarde_srCACIC.txt"; | |
25 | -#define COOKIE_FILENAME "cacic_ck.txt"; | |
26 | - | |
27 | -// struct referente a um usuario remoto | |
30 | +/** | |
31 | + * Struct referente a um usuário cliente. | |
32 | + */ | |
28 | 33 | struct ClienteSRC { |
29 | 34 | vncClientId vncCID; |
35 | + string peerName; | |
30 | 36 | string id_usuario_visitante; |
31 | 37 | string id_usuario_cli; |
32 | 38 | string id_conexao; |
... | ... | @@ -44,15 +50,37 @@ class CACIC_Auth { |
44 | 50 | |
45 | 51 | public: |
46 | 52 | |
47 | - // lista de usuarios remotos | |
53 | + /** | |
54 | + * Nome do arquivo temporário de trava. | |
55 | + * Utilizado para que o cacic impeça a execução de coletas com o suporte ativo. | |
56 | + */ | |
57 | + static const string AGUARDE_FILENAME; | |
58 | + | |
59 | + /** | |
60 | + * Tempo máximo que o servidor pode ficar aberto sem conexões. (mins) | |
61 | + */ | |
62 | + static const UINT TEMPO_IDLE; | |
63 | + | |
64 | + /** Lista de usuários cliente. */ | |
48 | 65 | vector<ClienteSRC> m_listaClientes; |
49 | 66 | |
67 | + /** Último usuário cliente conectado. */ | |
50 | 68 | ClienteSRC m_novoCliente; |
51 | 69 | |
70 | + /** | |
71 | + * Janela com informações sobre o cliente conectado. | |
72 | + * Exibida enquanto há suporte em andamento. | |
73 | + */ | |
52 | 74 | supInfoDlg m_infoDlg; |
53 | 75 | |
54 | - static CACIC_Auth* getInstance(); | |
76 | + /** Singleton. */ | |
77 | + static CACIC_Auth* getInstance() | |
78 | + { | |
79 | + if (!m_instance) m_instance = new CACIC_Auth(); | |
80 | + return m_instance; | |
81 | + } | |
55 | 82 | |
83 | + /* MÉTODOS DE ENCAPSULAMENTO --> */ | |
56 | 84 | void setServidorWeb(string newServidorWeb) {m_servidorWeb = newServidorWeb;} |
57 | 85 | string getServidorWeb() {return m_servidorWeb;} |
58 | 86 | void setScriptsPath(string newScriptsPath) {m_scriptsPath = newScriptsPath;} |
... | ... | @@ -62,48 +90,154 @@ public: |
62 | 90 | void setPalavraChave(char* newPalavraChave) {m_palavraChave = newPalavraChave;} |
63 | 91 | void setPorta(UINT newPorta) {m_porta = newPorta;} |
64 | 92 | UINT getPorta() {return m_porta;} |
65 | - | |
93 | + void setTimeout(UINT newNuTimeout) {m_nuTimeout = newNuTimeout;} | |
94 | + UINT getTimeout() {return m_nuTimeout;} | |
95 | + /* <-- MÉTODOS DE ENCAPSULAMENTO */ | |
96 | + | |
97 | + /** | |
98 | + * Retorna os valores padrão de post, usados na | |
99 | + * comunicação com o gerente web. | |
100 | + * te_so, te_node_address, te_palavra_chave | |
101 | + * @return String com o post padrão formatado. | |
102 | + */ | |
66 | 103 | string getPostComum(); |
67 | 104 | |
105 | + /** | |
106 | + * Remove o usuário cliente da lista. | |
107 | + * @param vncCID ID do cliente VNC, utilizado para | |
108 | + * diferenciar os clientes, caso haja mais de um. | |
109 | + */ | |
68 | 110 | void removeCliente(vncClientId vncCID); |
69 | 111 | |
112 | + /** | |
113 | + * Faz a comunicação com o gerente web para validar a palavra chave | |
114 | + * e criar uma nova sessão para o suporte remoto. | |
115 | + * @return bool Status da autenticação. | |
116 | + */ | |
70 | 117 | bool autentica(); |
118 | + | |
119 | + /** | |
120 | + * Se comunica com o gerente web para validar o usuário cliente. | |
121 | + * Se o usuário for válido, ele cria uma nova sessão de conexão. | |
122 | + * @param nm_usuario_cli String codificada contendo o nome de usuário. | |
123 | + * @param te_senha_cli String codificada contendo a senha do usuário. | |
124 | + * @param te_node_address_cli String codificada contendo o MAC address do cliente. | |
125 | + * @param te_documento_referencial String codificada contendo o Documento de Referência do suporte remoto. | |
126 | + * @param te_motivo_conexao String codificada contendo o motivo do suporte remoto. | |
127 | + * @param te_so_cli String codificada contendo a identificação do SO do cliente. | |
128 | + * @param vncCID ID do cliente VNC. | |
129 | + * @param peerName String contendo o endereço ip do cliente. | |
130 | + */ | |
71 | 131 | bool validaTecnico(char nm_usuario_cli[], char te_senha_cli[], char te_node_address_cli[], |
72 | - char te_documento_referencial[], char te_motivo_conexao[], char te_so_cli[], vncClientId vncCID); | |
132 | + char te_documento_referencial[], char te_motivo_conexao[], char te_so_cli[], | |
133 | + const vncClientId vncCID, const char peerName[]); | |
134 | + | |
135 | + /** | |
136 | + * Se comunica com o gerente web para atualizar a sessão de suporte. | |
137 | + */ | |
73 | 138 | void atualizaSessao(); |
139 | + | |
140 | + /** | |
141 | + * Envia o log do chat para o gerente web durante o suporte remoto. | |
142 | + * @param te_mensagem Mensagem recebida/enviada. | |
143 | + * @param cs_origem Origem da mensagem, cliente/servidor. | |
144 | + */ | |
74 | 145 | void sendChatText(char te_mensagem[], char cs_origem[]); |
75 | 146 | |
147 | + /** Fecha o servidor. */ | |
148 | + void finalizaServidor(); | |
149 | + | |
76 | 150 | private: |
77 | 151 | |
152 | + /** Singleton. */ | |
78 | 153 | static CACIC_Auth* m_instance; |
79 | 154 | |
80 | - CACIC_Auth(); | |
81 | - virtual ~CACIC_Auth(); | |
82 | - | |
83 | - string m_servidorWeb; // endereco do servidor web | |
84 | - string m_scriptsPath; // caminho dos scripts | |
85 | - string m_tempPath; // caminho completo para a pasta temp do cacic | |
155 | + CACIC_Auth() { | |
156 | + m_idleTime = TEMPO_IDLE; | |
157 | + } | |
86 | 158 | |
87 | - string m_usuario; // usuario host do suporte | |
88 | - string m_idSessao; // id da sessao iniciada pelo usuario host | |
89 | - UINT m_nuTimeout; // valor do idle timeout | |
159 | + virtual ~CACIC_Auth() {} | |
90 | 160 | |
91 | - string m_soVersion; // versao do sistema operacional do host | |
92 | - string m_nodeAdress; // mac address do host | |
93 | - string m_palavraChave; // palavra chave do cacic no momento da ativação do suporte remoto | |
161 | + /** Endereço do servidor web. */ | |
162 | + string m_servidorWeb; | |
163 | + /** Caminho dos scripts no servidor web. */ | |
164 | + string m_scriptsPath; | |
165 | + /** Caminho estático para a pasta temp do cacic. */ | |
166 | + string m_tempPath; | |
94 | 167 | |
95 | - UINT m_porta; | |
168 | + /** Usuário host do suporte. */ | |
169 | + string m_usuario; | |
170 | + /** ID da sessão iniciada pelo usuário host. */ | |
171 | + string m_idSessao; | |
96 | 172 | |
97 | - static const string GET_CONFIG_SCRIPT; // caminho para o script de configurações | |
98 | - static const string SET_SESSION_SCRIPT; // caminho para o script de sessões | |
99 | - static const string AUTH_CLIENT_SCRIPT; // caminho para o script de autenticação | |
100 | - static const unsigned int TAMANHO_RESPOSTA; // tamanho maximo aceito pela resposta xml | |
173 | + /** Versão do sistema operacional do host. */ | |
174 | + string m_soVersion; | |
175 | + /** MAC Address do host. */ | |
176 | + string m_nodeAdress; | |
177 | + /** Palavra chave. Utilizada na comunicação com o gerente web. */ | |
178 | + string m_palavraChave; | |
101 | 179 | |
180 | + /** Porta de escuta. */ | |
181 | + UINT m_porta; | |
182 | + /** Tempo limite que o srcacic pode ficar ocioso antes de fechar-se. */ | |
183 | + UINT m_nuTimeout; | |
184 | + /** Tempo que o servidor está ocioso */ | |
185 | + UINT m_idleTime; | |
186 | + | |
187 | + /** Nome do script de configurações do gerente web. */ | |
188 | + static const string GET_CONFIG_SCRIPT; | |
189 | + /** Nome do script de sessões do gerente web. */ | |
190 | + static const string SET_SESSION_SCRIPT; | |
191 | + /** Nome do script de autenticação do gerente web. */ | |
192 | + static const string AUTH_CLIENT_SCRIPT; | |
193 | + /** Tamanho padrão da resposta recebida pela requisição http. */ | |
194 | + static const unsigned int TAMANHO_RESPOSTA; | |
195 | + /** Nome do arquivo temporário de atualização da palavra chave. */ | |
196 | + static const string COOKIE_FILENAME; | |
197 | + | |
198 | + /** | |
199 | + * Apresenta o diálogo de login do usuário host e | |
200 | + * valida os dados no gerente web. | |
201 | + * @param listaDominios Lista de domínios obtida na autenticação. | |
202 | + */ | |
203 | + bool autenticaUsuario(vector<Dominio> &listaDominios); | |
204 | + | |
205 | + /** | |
206 | + * Verifica a autenticação da chave no gerente web. | |
207 | + * @param resposta Resposta XML gerada na comunicação com o gerente web. | |
208 | + * @param listaDominios Lista de domínios obtida na autenticação. | |
209 | + */ | |
102 | 210 | bool verificaAuthChave(char resposta[], vector<Dominio> &listaDominios); |
211 | + | |
212 | + /** | |
213 | + * Verifica se a resposta da autenticação do usuário host foi positiva. | |
214 | + * @param resposta Resposta XML gerada na comunicação com o gerente web. | |
215 | + */ | |
103 | 216 | bool verificaAuthDominio(char resposta[]); |
104 | - bool verificaAuthTecnico(char resposta[], char te_node_address_cli[], char te_documento_referencial[], | |
105 | - char te_motivo_conexao[], char te_so_cli[], vncClientId vncCID); | |
106 | 217 | |
218 | + /** | |
219 | + * Verifica se a resposta da autenticação do técnico foi positiva, | |
220 | + * armazena o novo cliente na lista e exibe a tela de informações do suporte. | |
221 | + * @param nm_usuario_cli String codificada contendo o nome de usuário. | |
222 | + * @param te_senha_cli String codificada contendo a senha do usuário. | |
223 | + * @param te_node_address_cli String codificada contendo o MAC address do cliente. | |
224 | + * @param te_documento_referencial String codificada contendo o Documento de Referência do suporte remoto. | |
225 | + * @param te_motivo_conexao String codificada contendo o motivo do suporte remoto. | |
226 | + * @param te_so_cli String codificada contendo a identificação do SO do cliente. | |
227 | + * @param vncCID ID do cliente VNC. | |
228 | + * @param peerName String contendo o endereço ip do cliente. | |
229 | + */ | |
230 | + bool verificaAuthTecnico(char resposta[], char te_node_address_cli[], char te_documento_referencial[], | |
231 | + char te_motivo_conexao[], char te_so_cli[], | |
232 | + const vncClientId vncCID, const char peerName[]); | |
233 | + | |
234 | + /** | |
235 | + * Verifica o valor de retorno STATUS que é enviado pelo gerente web | |
236 | + * após cada comunicação para confirmar a operação. | |
237 | + * <b>Valores retornados:</b><br /> | |
238 | + * OK: A operação teve êxito.<br />ERRO: A operação falhou. | |
239 | + * @param resposta Resposta XML gerada na comunicação com o gerente web. | |
240 | + */ | |
107 | 241 | bool verificaStatus(char resposta[]); |
108 | 242 | }; |
109 | 243 | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Con.cpp
1 | -// Declaração da classe CACIC_Con | |
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe para envio de requisições html ao gerente web. | |
5 | + * API das funções wininet: | |
6 | + * http://msdn.microsoft.com/en-us/library/aa385473(VS.85).aspx | |
7 | + */ | |
2 | 8 | |
3 | 9 | #include "CACIC_Con.h" |
4 | 10 | |
5 | -CACIC_Con::CACIC_Con() {} | |
11 | +const TCHAR CACIC_Con::DEFAULT_HEADER[] = "Content-Type: application/x-www-form-urlencoded"; | |
6 | 12 | |
7 | -CACIC_Con::~CACIC_Con() | |
8 | -{ | |
9 | - if(m_hSession != NULL) InternetCloseHandle(m_hSession); | |
10 | - if(m_hConnect != NULL) InternetCloseHandle(m_hConnect); | |
11 | - if(m_hRequest != NULL) InternetCloseHandle(m_hRequest); | |
12 | -} | |
13 | - | |
14 | -// conecta ao gerente web | |
15 | 13 | void CACIC_Con::conecta() |
16 | 14 | { |
17 | 15 | m_hSession = InternetOpen("CACIC_Con", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); |
... | ... | @@ -32,7 +30,6 @@ void CACIC_Con::conecta() |
32 | 30 | } |
33 | 31 | } |
34 | 32 | |
35 | -// envia os parametros ao script | |
36 | 33 | void CACIC_Con::sendRequest(LPCTSTR metodo, LPCTSTR script, TCHAR frmdata[]) |
37 | 34 | { |
38 | 35 | m_hRequest = HttpOpenRequest(m_hConnect, metodo, script, NULL, NULL, NULL, 0, 1); |
... | ... | @@ -43,10 +40,11 @@ void CACIC_Con::sendRequest(LPCTSTR metodo, LPCTSTR script, TCHAR frmdata[]) |
43 | 40 | return; |
44 | 41 | } |
45 | 42 | |
46 | - HttpSendRequest(m_hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata)); | |
43 | + HttpSendRequest(m_hRequest, CACIC_Con::DEFAULT_HEADER, | |
44 | + strlen(CACIC_Con::DEFAULT_HEADER), | |
45 | + frmdata, strlen(frmdata)); | |
47 | 46 | } |
48 | 47 | |
49 | -// pega a resposta da ultima solicitacao e armazena no buffer | |
50 | 48 | bool CACIC_Con::getResponse(char buff[], unsigned long sz) |
51 | 49 | { |
52 | 50 | if(!m_hRequest) | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Con.h
1 | -// Classe para conexao do vnc com o gerente web do Cacic. | |
2 | -// API das funcoes da classe wininet.h: | |
3 | -// http://msdn.microsoft.com/en-us/library/aa385473(VS.85).aspx | |
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe para envio de requisições html ao gerente web. | |
5 | + * API das funções wininet: | |
6 | + * http://msdn.microsoft.com/en-us/library/aa385473(VS.85).aspx | |
7 | + */ | |
4 | 8 | |
5 | 9 | #ifndef _CACIC_CON_ |
6 | 10 | #define _CACIC_CON_ |
... | ... | @@ -17,32 +21,82 @@ using namespace std; |
17 | 21 | #define HTTP_POST "POST" |
18 | 22 | #define HTTP_GET "GET" |
19 | 23 | |
20 | -static const TCHAR hdrs[] = "Content-Type: application/x-www-form-urlencoded"; | |
21 | - | |
22 | 24 | class CACIC_Con { |
23 | 25 | |
24 | 26 | private: |
25 | 27 | |
26 | - HINTERNET m_hSession; // handle da sessao | |
27 | - HINTERNET m_hConnect; // handle da conexao | |
28 | - HINTERNET m_hRequest; // handle da resposta da requisicao | |
28 | + /** Header padrão das requisições. */ | |
29 | + static const TCHAR DEFAULT_HEADER[]; | |
30 | + | |
31 | + /** Handler da sessão. */ | |
32 | + HINTERNET m_hSession; | |
33 | + /** Handler da conexao. */ | |
34 | + HINTERNET m_hConnect; | |
35 | + /** Handler da resposta da requisição. */ | |
36 | + HINTERNET m_hRequest; | |
29 | 37 | |
38 | + /** Número de bytes lidos na última requisição. */ | |
30 | 39 | unsigned long m_lBytesRead; |
40 | + /** Nome do servidor que sofrerá a ação. */ | |
31 | 41 | LPCSTR m_server; |
32 | 42 | |
33 | 43 | public: |
34 | 44 | |
35 | - CACIC_Con(); | |
36 | - virtual ~CACIC_Con(); | |
37 | - | |
45 | + CACIC_Con() {} | |
46 | + | |
47 | + /** | |
48 | + * Destrutor da classe. | |
49 | + * Libera os handlers que estiverem abertos. | |
50 | + */ | |
51 | + virtual ~CACIC_Con() | |
52 | + { | |
53 | + if(m_hSession != NULL) InternetCloseHandle(m_hSession); | |
54 | + if(m_hConnect != NULL) InternetCloseHandle(m_hConnect); | |
55 | + if(m_hRequest != NULL) InternetCloseHandle(m_hRequest); | |
56 | + } | |
57 | + | |
58 | + /** | |
59 | + * Altera o servidor. | |
60 | + * @param server String com o nome do servidor. | |
61 | + */ | |
38 | 62 | void setServer(LPCSTR server){m_server = server;} |
63 | + | |
64 | + /** | |
65 | + * Retorna o nome do servidor. | |
66 | + * @return String com o nome do servidor. | |
67 | + */ | |
39 | 68 | LPCSTR getServer(){return m_server;} |
40 | 69 | |
41 | - void conecta(); // conecta ao servidor | |
42 | - // envia uma requisicao ao script atraves de POST/GET | |
70 | + /** | |
71 | + * Efetua a conexão com o servidor. | |
72 | + */ | |
73 | + void conecta(); | |
74 | + | |
75 | + /** | |
76 | + * Envia uma requisição ao servidor. | |
77 | + * @param metodo String com o tipo da requisição. (GET/POST) | |
78 | + * @param script String com o nome do script que será acessado. | |
79 | + * @param frmdata String com os dados que irão ser passados como parâmetro ao script. | |
80 | + */ | |
43 | 81 | void sendRequest(LPCTSTR metodo, LPCTSTR script, TCHAR frmdata[]); |
44 | - bool getResponse(char buff[], unsigned long sz); // recebe a resposta da execucao do script | |
45 | 82 | |
83 | + /** | |
84 | + * Retorna a resposta gerada pelo servidor que recebeu a requisição. | |
85 | + * @param buff Buffer para armazenar o resultado da requisição. | |
86 | + * @param sz Tamanho do buffer. | |
87 | + * @return bool Boleano com o estado da requisição. | |
88 | + */ | |
89 | + bool getResponse(char buff[], unsigned long sz); | |
90 | + | |
91 | + /** | |
92 | + * Método estático que faz uma requisição ao servidor passado e | |
93 | + * já retorna a resposta através do buffer "resposta". | |
94 | + * @param servidor String com o nome do servidor. | |
95 | + * @param script String com o nome do script. | |
96 | + * @param post String com os parãmetros a serem passados ao script. | |
97 | + * @param resposta Buffer de resposta da requisição. | |
98 | + * @param sz Tamanho da resposta. | |
99 | + */ | |
46 | 100 | static void sendHtppPost(const string &servidor, const string &script, string &post, |
47 | 101 | char resposta[], unsigned long sz); |
48 | 102 | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Crypt.cpp
1 | -/* | |
2 | - * Classe para criptografia de dados | |
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe para criptografia de dados. | |
3 | 5 | */ |
4 | 6 | |
5 | 7 | #include "CACIC_Crypt.h" |
... | ... | @@ -9,7 +11,6 @@ const unsigned int CACIC_Crypt::SRCACIC_KEY_SIZE = 16; |
9 | 11 | const char CACIC_Crypt::SRCACIC_KEY[17] = "CacicBrasil"; |
10 | 12 | const char CACIC_Crypt::SRCACIC_IV[17] = "abcdefghijklmnop"; |
11 | 13 | |
12 | -// Tira do base64 e desencripta. | |
13 | 14 | string CACIC_Crypt::decodifica(const char* entrada) |
14 | 15 | { |
15 | 16 | string decode_base64; |
... | ... | @@ -34,7 +35,6 @@ string CACIC_Crypt::decodifica(const char* entrada) |
34 | 35 | return out; |
35 | 36 | } |
36 | 37 | |
37 | -// Encripta e coloca no base64. | |
38 | 38 | string CACIC_Crypt::codifica(const char* entrada) |
39 | 39 | { |
40 | 40 | unsigned int entrada_len = strlen(entrada); | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Crypt.h
1 | -/* | |
2 | - * Classe para criptografia de dados | |
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe para criptografia de dados. | |
3 | 5 | */ |
4 | 6 | |
5 | 7 | #ifndef _CACIC_CRYPT_ |
... | ... | @@ -16,17 +18,37 @@ class CACIC_Crypt { |
16 | 18 | |
17 | 19 | public: |
18 | 20 | |
21 | + /** | |
22 | + * Remove da String de entrada os caracteres colocados pela URLEncode, | |
23 | + * tira do Base64 e depois decodifica usando o Rijndael. | |
24 | + * @param entrada String a ser decodificada. | |
25 | + * @return string String decodificada. | |
26 | + */ | |
19 | 27 | static string decodifica(const char* entrada); |
28 | + | |
29 | + /** | |
30 | + * Codifica a String passada com o algoritmo Rijndael e coloca no Base64. | |
31 | + * @param entrada String a ser codificada. | |
32 | + * @return string String codificada. | |
33 | + */ | |
20 | 34 | static string codifica(const char* entrada); |
21 | 35 | |
22 | 36 | private: |
23 | 37 | |
24 | - static const unsigned int SRCACIC_BLOCK_SIZE; // tamanho padrao do bloco | |
25 | - static const unsigned int SRCACIC_KEY_SIZE; // tamanho padrao da chave | |
26 | - static const char SRCACIC_KEY[17]; // chave de en/dec | |
27 | - static const char SRCACIC_IV[17]; // vetor de inicializacao | |
28 | - | |
29 | - virtual void ccrypt() = 0; // Truque para tornar a classe abstrata. | |
38 | + /** Tamanho padrão do bloco. */ | |
39 | + static const unsigned int SRCACIC_BLOCK_SIZE; | |
40 | + /** Tamanho padrão da chave. */ | |
41 | + static const unsigned int SRCACIC_KEY_SIZE; | |
42 | + /** Chave de codificação. */ | |
43 | + static const char SRCACIC_KEY[17]; | |
44 | + /** Vetor de inicialização. */ | |
45 | + static const char SRCACIC_IV[17]; | |
46 | + | |
47 | + /** | |
48 | + * Este método virtual puro é um truque para que a classe | |
49 | + * se torne abstrata e não possa ser instanciada. | |
50 | + */ | |
51 | + virtual void ccrypt() = 0; | |
30 | 52 | }; |
31 | 53 | |
32 | 54 | #endif | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Exception.h
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe para lidar com as mensagens de erro. | |
5 | + */ | |
6 | + | |
1 | 7 | #ifndef _CACIC_EXCEPTION_ |
2 | 8 | #define _CACIC_EXCEPTION_ |
3 | 9 | |
4 | 10 | #include <windows.h> |
5 | 11 | |
6 | -// exceção padrao do srCACIC | |
7 | 12 | class SRCException { |
13 | + | |
8 | 14 | private: |
15 | + | |
16 | + /** Mensagem de erro. */ | |
9 | 17 | string m_err; |
18 | + | |
10 | 19 | public: |
20 | + | |
21 | + /** | |
22 | + * Construtor da classe. | |
23 | + * @param err String com a mensagem de erro. | |
24 | + */ | |
11 | 25 | SRCException(string err) { |
12 | 26 | m_err = err; |
13 | 27 | } |
28 | + | |
29 | + /** | |
30 | + * Retorna a mensagem de erro armazenada. | |
31 | + * @return string String com a mensagem de erro. | |
32 | + */ | |
14 | 33 | string getMessage() { |
15 | 34 | return m_err; |
16 | 35 | } |
36 | + | |
17 | 37 | }; |
18 | 38 | |
19 | -#endif | |
20 | 39 | \ No newline at end of file |
40 | +#endif | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Utils.cpp
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe com alguns métodos utilitários. | |
5 | + */ | |
6 | + | |
1 | 7 | #include "CACIC_Utils.h" |
2 | 8 | |
3 | -// método bruto para ler | |
4 | -// uma tag do arquivo xml de resposta | |
9 | +const string CACIC_Utils::F_SANS_SERIF = "Microsoft Sans Serif"; | |
10 | + | |
5 | 11 | string CACIC_Utils::leTag(char xml[], char tagname[]) |
6 | 12 | { |
7 | 13 | char* tag; |
... | ... | @@ -28,8 +34,6 @@ string CACIC_Utils::leTag(char xml[], char tagname[]) |
28 | 34 | return content; |
29 | 35 | } |
30 | 36 | |
31 | -// troca os caracteres da string | |
32 | -// origem ori_str new_str | |
33 | 37 | void CACIC_Utils::replaceAll(string &str, string key, string newkey) |
34 | 38 | { |
35 | 39 | int found = str.find(key, 0); |
... | ... | @@ -95,7 +99,6 @@ void CACIC_Utils::urlDecode(string &encoded) |
95 | 99 | encoded.swap(buff.str()); |
96 | 100 | } |
97 | 101 | |
98 | -// substitui alguns caracteres especiais antes da encriptacao | |
99 | 102 | void CACIC_Utils::simpleUrlEncode(string &decoded) |
100 | 103 | { |
101 | 104 | replaceAll(decoded, "+", "<MAIS>"); |
... | ... | @@ -145,7 +148,7 @@ void CACIC_Utils::changeFont(HWND dlgHandle, int dlgItem, int fontSize, string f |
145 | 148 | LOGFONT lfFont; |
146 | 149 | |
147 | 150 | memset(&lfFont, 0x00, sizeof(lfFont)); |
148 | - memcpy(lfFont.lfFaceName, fontName.data(), 16); | |
151 | + memcpy(lfFont.lfFaceName, fontName.c_str(), fontName.size()); | |
149 | 152 | |
150 | 153 | lfFont.lfHeight = fontSize; |
151 | 154 | lfFont.lfWeight = (fontIsBold == true) ? FW_BOLD : FW_NORMAL; | ... | ... |
srcacic/WinVNC/WinVNC/CACIC_Utils.h
1 | +/** | |
2 | + * Copyright (C) 2009 DATAPREV-ES | |
3 | + * @author Vinicius Avellar Moreira | |
4 | + * Classe com alguns métodos utilitários. | |
5 | + */ | |
6 | + | |
1 | 7 | #ifndef _CACIC_UTILS_ |
2 | 8 | #define _CACIC_UTILS_ |
3 | 9 | |
... | ... | @@ -12,26 +18,85 @@ class CACIC_Utils { |
12 | 18 | |
13 | 19 | public: |
14 | 20 | |
21 | + /** Fonte padrão usado nos diálogos. */ | |
22 | + static const string F_SANS_SERIF; | |
23 | + | |
24 | + /** | |
25 | + * Método bruto para ler uma tag específica de um arquivo xml. | |
26 | + * @param xml String no formato de arquivo xml. | |
27 | + * @param tagname String com o nome da tag a ser pesquisada. | |
28 | + * @return String com o conteúdo da tag pesquisada. | |
29 | + * @trows CACIC_Exception caso a tag não seja encontrada. | |
30 | + */ | |
15 | 31 | static string leTag(char xml[], char tagname[]); |
16 | 32 | |
33 | + /** | |
34 | + * Troca caracteres específicos de uma string. | |
35 | + * @param str String a ser modificada. | |
36 | + * @param key String com o caractere ou conjunto de caracteres que serão substituídos. | |
37 | + * @param newKey String com o caractere ou conjunto de caracteres que irão substituir. | |
38 | + */ | |
17 | 39 | static void replaceAll(string &str, string key, string newkey); |
18 | 40 | |
41 | + /** | |
42 | + * Codifica a string, removendo os caracteres especiais por %código dos mesmos. | |
43 | + * @param decoded String que será codificada. | |
44 | + */ | |
19 | 45 | static void urlEncode(string &decoded); |
46 | + | |
47 | + /** | |
48 | + * Decodifica a string, retornando os códigos dos caracteres pelos próprios caracteres. | |
49 | + * @param encoded String que será decodificada. | |
50 | + */ | |
20 | 51 | static void urlDecode(string &encoded); |
21 | 52 | |
53 | + /** | |
54 | + * Mesma função do urlEncode, porém os caracteres serão substituídos | |
55 | + * por tags específicas, e não pelo código. | |
56 | + * @param entrada String que será codificada. | |
57 | + */ | |
22 | 58 | static void simpleUrlEncode(string &entrada); |
59 | + | |
60 | + /** | |
61 | + * Faz o inverso do simpleUrlEncode, trocando as tags específicas pelos | |
62 | + * respectivos caracteres. | |
63 | + * @param entrada String que será codificada. | |
64 | + */ | |
23 | 65 | static void simpleUrlDecode(string &entrada); |
24 | 66 | |
67 | + /** | |
68 | + * Transforma o byte em codigo ascii, retornando o char correspondente. | |
69 | + * @param first Primeiro hexa do caractere. | |
70 | + * @param second Segundo hexa do caractere. | |
71 | + * @return Char correspondente ao código ascci encontrado. | |
72 | + */ | |
25 | 73 | static char hexToAscii(char first, char second); |
74 | + | |
75 | + /** | |
76 | + * Retira os espaços em branco do começo e fim da string. | |
77 | + * @param str String a ser modificada. | |
78 | + */ | |
26 | 79 | static void trim(string &str); |
27 | 80 | |
81 | + /** | |
82 | + * Método para alterar a fonte de um determinado elemento de um diálogo. | |
83 | + * @param dlgHandle Handler do diálogo. | |
84 | + * @param dlgItem Item do diálogo que terá a fonte trocada. | |
85 | + * @param fontSize Tamanho da fonte. | |
86 | + * @param fontName Nome da fonte. | |
87 | + * @param fontIsBold Define o peso da fonte: true = bold, false = normal. | |
88 | + */ | |
28 | 89 | static void changeFont(HWND dlgHandle, int dlgItem, |
29 | 90 | int fontSize, string fontName, |
30 | 91 | bool fontIsBold = false); |
31 | 92 | |
32 | 93 | private: |
33 | 94 | |
34 | - virtual void cutils() = 0; // Truque para tornar a classe abstrata. | |
95 | + /** | |
96 | + * Este método virtual puro é um truque para que a classe | |
97 | + * se torne abstrata e não possa ser instanciada. | |
98 | + */ | |
99 | + virtual void cutils() = 0; | |
35 | 100 | |
36 | 101 | }; |
37 | 102 | ... | ... |
srcacic/WinVNC/WinVNC/resource.h
... | ... | @@ -144,10 +144,11 @@ |
144 | 144 | #define IDC_ATENCAO_STATIC 1147 |
145 | 145 | #define IDC_ATENCAO 1147 |
146 | 146 | #define IDC_SRCACIC_IMG 1148 |
147 | -#define IDC_EDIT3 1150 | |
148 | 147 | #define IDC_INFO_NOME 1152 |
149 | 148 | #define IDC_INFO_IP 1153 |
150 | 149 | #define IDC_INFO_INICIO 1154 |
150 | +#define IDC_STATIC_INFO_REF 1155 | |
151 | +#define IDC_INFO_REFERENCIA 1156 | |
151 | 152 | #define IDC_FINGER 9000 |
152 | 153 | #define IDC_GAMMAGRAY 9001 |
153 | 154 | #define IDC_STATIC_SPLIT 9002 |
... | ... | @@ -229,7 +230,7 @@ |
229 | 230 | #ifndef APSTUDIO_READONLY_SYMBOLS |
230 | 231 | #define _APS_NEXT_RESOURCE_VALUE 164 |
231 | 232 | #define _APS_NEXT_COMMAND_VALUE 40019 |
232 | -#define _APS_NEXT_CONTROL_VALUE 1155 | |
233 | +#define _APS_NEXT_CONTROL_VALUE 1157 | |
233 | 234 | #define _APS_NEXT_SYMED_VALUE 101 |
234 | 235 | #endif |
235 | 236 | #endif | ... | ... |
srcacic/WinVNC/WinVNC/supInfoDlg.cpp
... | ... | @@ -89,8 +89,9 @@ BOOL CALLBACK supInfoDlg::supInfoDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP |
89 | 89 | SetDlgItemText(hwnd, IDC_INFO_NOME, (LPSTR) _this->m_nomeVisitante.data()); |
90 | 90 | SetDlgItemText(hwnd, IDC_INFO_IP, (LPSTR) _this->m_ip.data()); |
91 | 91 | SetDlgItemText(hwnd, IDC_INFO_INICIO, (LPSTR) _this->m_dataInicio.data()); |
92 | + SetDlgItemText(hwnd, IDC_INFO_REFERENCIA, (LPSTR) _this->m_documentoReferencia.data()); | |
92 | 93 | |
93 | - changeFont(hwnd, IDC_ATENCAO_STATIC); | |
94 | + CACIC_Utils::changeFont(hwnd, IDC_ATENCAO_STATIC, 16, CACIC_Utils::F_SANS_SERIF, true); | |
94 | 95 | |
95 | 96 | /*WINDOWPLACEMENT wndpl; |
96 | 97 | GetWindowPlacement(hwnd, &wndpl); |
... | ... | @@ -149,24 +150,3 @@ BOOL CALLBACK supInfoDlg::supInfoDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP |
149 | 150 | |
150 | 151 | return FALSE; |
151 | 152 | } |
152 | - | |
153 | -void supInfoDlg::changeFont(HWND hwndDlg, int dlgItem) | |
154 | -{ | |
155 | - HFONT hFont ; | |
156 | - LOGFONT lfFont; | |
157 | - | |
158 | - memset(&lfFont, 0x00, sizeof(lfFont)); | |
159 | - memcpy(lfFont.lfFaceName, TEXT("Microsoft Sans Serif"), 16); | |
160 | - | |
161 | - lfFont.lfHeight = 16; | |
162 | - lfFont.lfWeight = FW_BOLD; | |
163 | - lfFont.lfCharSet = ANSI_CHARSET; | |
164 | - lfFont.lfOutPrecision = OUT_DEFAULT_PRECIS; | |
165 | - lfFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; | |
166 | - lfFont.lfQuality = DEFAULT_QUALITY; | |
167 | - | |
168 | - // Create the font from the LOGFONT structure passed. | |
169 | - hFont = CreateFontIndirect (&lfFont); | |
170 | - | |
171 | - SendMessage( GetDlgItem(hwndDlg, dlgItem), WM_SETFONT, (int)hFont, MAKELONG( TRUE, 0 ) ); | |
172 | -} | ... | ... |
srcacic/WinVNC/WinVNC/supInfoDlg.h
... | ... | @@ -10,6 +10,8 @@ |
10 | 10 | #include <string> |
11 | 11 | using namespace std; |
12 | 12 | |
13 | +#include "CACIC_Utils.h" | |
14 | + | |
13 | 15 | #pragma once |
14 | 16 | |
15 | 17 | class supInfoDlg { |
... | ... | @@ -24,13 +26,13 @@ public: |
24 | 26 | string m_nomeVisitante; |
25 | 27 | string m_ip; |
26 | 28 | string m_dataInicio; |
29 | + string m_documentoReferencia; | |
27 | 30 | |
28 | 31 | private: |
29 | 32 | HANDLE m_hInfoDlgThread; |
30 | 33 | |
31 | 34 | static LRESULT CALLBACK supInfoDlg::showDialog(LPVOID lpParameter); |
32 | 35 | static BOOL CALLBACK supInfoDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); |
33 | - static void changeFont(HWND hwndDlg, int dlgItem); | |
34 | 36 | }; |
35 | 37 | |
36 | 38 | #endif | ... | ... |
srcacic/WinVNC/WinVNC/vncPassDlg.cpp
... | ... | @@ -8,22 +8,19 @@ vncPassDlg::vncPassDlg(vector<Dominio> &listaDominios) { |
8 | 8 | m_listaDominios = listaDominios; |
9 | 9 | m_authStat = vncPassDlg::ESPERANDO_AUTENTICACAO; |
10 | 10 | |
11 | - memset(m_usuario, 0, 32); | |
12 | - memset(m_senha, 0, 32); | |
13 | - memset(m_dominio, 0, 16); | |
11 | + memset(m_usuario, 0, 33); | |
12 | + memset(m_senha, 0, 33); | |
13 | + memset(m_dominio, 0, 17); | |
14 | 14 | } |
15 | 15 | |
16 | 16 | vncPassDlg::~vncPassDlg() { |
17 | - memset(m_usuario, 0, 32); | |
18 | - memset(m_senha, 0, 32); | |
19 | - memset(m_dominio, 0, 16); | |
17 | + memset(m_usuario, 0, 33); | |
18 | + memset(m_senha, 0, 33); | |
19 | + memset(m_dominio, 0, 17); | |
20 | 20 | } |
21 | 21 | |
22 | -BOOL vncPassDlg::DoDialog(EAuthCode authStat, string msgInfo) | |
22 | +BOOL vncPassDlg::DoDialog() | |
23 | 23 | { |
24 | - m_authStat = authStat; | |
25 | - m_msgInfo = msgInfo; | |
26 | - | |
27 | 24 | BOOL retVal; |
28 | 25 | if (m_authStat == vncPassDlg::SEM_AUTENTICACAO) |
29 | 26 | { |
... | ... | @@ -71,9 +68,9 @@ BOOL CALLBACK vncPassDlg::vncAuthDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP |
71 | 68 | |
72 | 69 | vrsBkColor = CreateSolidBrush(RGB(238, 215, 184)); |
73 | 70 | |
74 | - changeFont(hwnd, IDC_ATT_MSG); | |
71 | + CACIC_Utils::changeFont(hwnd, IDC_ATT_MSG, 13, CACIC_Utils::F_SANS_SERIF, true); | |
75 | 72 | |
76 | - SendMessage (hwnd, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG (8, 8)); | |
73 | + //SendMessage (hwnd, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG (8, 8)); | |
77 | 74 | |
78 | 75 | // Limitando o tamanho dos campos para 32 caracteres. |
79 | 76 | SendMessage(GetDlgItem(hwnd, IDC_USER_EDIT), EM_LIMITTEXT, WPARAM(32), 0); |
... | ... | @@ -101,7 +98,7 @@ BOOL CALLBACK vncPassDlg::vncAuthDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP |
101 | 98 | SetDlgItemText(hwnd, IDC_USER_EDIT, _this->m_usuario); |
102 | 99 | SetDlgItemText(hwnd, IDC_PASS_EDIT, _this->m_senha); |
103 | 100 | |
104 | - SetDlgItemText(hwnd, IDC_MSG, (LPSTR) "Falha na autenticação!"); | |
101 | + SetDlgItemText(hwnd, IDC_MSG, (LPSTR) "Falha na Autenticação!"); | |
105 | 102 | } |
106 | 103 | else if (_this->m_authStat == vncPassDlg::AUTENTICADO) |
107 | 104 | { |
... | ... | @@ -142,15 +139,15 @@ BOOL CALLBACK vncPassDlg::vncAuthDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LP |
142 | 139 | HWND hDominios = GetDlgItem(hwnd, IDC_DOMAIN_CB); |
143 | 140 | _this->m_indiceDominio = SendMessage(hDominios, CB_GETCURSEL, 0, 0); |
144 | 141 | |
145 | - memset(_this->m_usuario, 0, 32); | |
146 | - memset(_this->m_senha, 0, 32); | |
147 | - memset(_this->m_dominio, 0, 16); | |
142 | + memset(_this->m_usuario, 0, 33); | |
143 | + memset(_this->m_senha, 0, 33); | |
144 | + memset(_this->m_dominio, 0, 17); | |
148 | 145 | |
149 | 146 | GetDlgItemText(hwnd, IDC_USER_EDIT, _this->m_usuario, 32); |
150 | 147 | GetDlgItemText(hwnd, IDC_PASS_EDIT, _this->m_senha, 32); |
151 | 148 | strcpy(_this->m_dominio, _this->m_listaDominios.at(_this->m_indiceDominio).id.c_str()); |
152 | 149 | |
153 | - if (_this->m_usuario[0] == '\0' || _this->m_senha[0] == '\0' || _this->m_dominio[0] == '\0') | |
150 | + if (_this->m_usuario[0] == 0 || _this->m_senha[0] == 0 || _this->m_dominio[0] == 0) | |
154 | 151 | { |
155 | 152 | MessageBox(hwnd, "Os campos devem ser preenchidos!", "Erro!", MB_ICONERROR | MB_OK); |
156 | 153 | return FALSE; |
... | ... | @@ -228,7 +225,7 @@ BOOL CALLBACK vncPassDlg::vncNoAuthDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, |
228 | 225 | |
229 | 226 | vrsBkColor = CreateSolidBrush(RGB(238, 215, 184)); |
230 | 227 | |
231 | - changeFont(hwnd, IDC_ATT_MSG); | |
228 | + CACIC_Utils::changeFont(hwnd, IDC_ATT_MSG, 13, CACIC_Utils::F_SANS_SERIF, true); | |
232 | 229 | |
233 | 230 | SendMessage (hwnd, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG (8, 8)); |
234 | 231 | |
... | ... | @@ -246,11 +243,11 @@ BOOL CALLBACK vncPassDlg::vncNoAuthDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, |
246 | 243 | { |
247 | 244 | int ulen = GetWindowTextLength(GetDlgItem(hwnd, IDC_USER_EDIT)); |
248 | 245 | |
249 | - memset(_this->m_usuario, '\0', 32); | |
246 | + memset(_this->m_usuario, 0, 33); | |
250 | 247 | |
251 | 248 | GetDlgItemText(hwnd, IDC_USER_EDIT, _this->m_usuario, 32); |
252 | 249 | |
253 | - if (_this->m_usuario[0] == '\0') | |
250 | + if (_this->m_usuario[0] == 0) | |
254 | 251 | { |
255 | 252 | MessageBox(hwnd, "O campo deve ser preenchido.", "Erro!", MB_ICONERROR | MB_OK); |
256 | 253 | return FALSE; |
... | ... | @@ -297,24 +294,3 @@ BOOL CALLBACK vncPassDlg::vncNoAuthDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, |
297 | 294 | |
298 | 295 | return FALSE; |
299 | 296 | } |
300 | - | |
301 | -void vncPassDlg::changeFont(HWND hwndDlg, int dlgItem) | |
302 | -{ | |
303 | - HFONT hFont ; | |
304 | - LOGFONT lfFont; | |
305 | - | |
306 | - memset(&lfFont, 0x00, sizeof(lfFont)); | |
307 | - memcpy(lfFont.lfFaceName, TEXT("Microsoft Sans Serif"), 24); | |
308 | - | |
309 | - lfFont.lfHeight = 13; | |
310 | - lfFont.lfWeight = FW_BOLD; | |
311 | - lfFont.lfCharSet = ANSI_CHARSET; | |
312 | - lfFont.lfOutPrecision = OUT_DEFAULT_PRECIS; | |
313 | - lfFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; | |
314 | - lfFont.lfQuality = DEFAULT_QUALITY; | |
315 | - | |
316 | - // Create the font from the LOGFONT structure passed. | |
317 | - hFont = CreateFontIndirect (&lfFont); | |
318 | - | |
319 | - SendMessage( GetDlgItem(hwndDlg, dlgItem), WM_SETFONT, (int)hFont, MAKELONG( TRUE, 0 ) ); | |
320 | -} | ... | ... |
srcacic/WinVNC/WinVNC/vncPassDlg.h
... | ... | @@ -7,20 +7,29 @@ |
7 | 7 | |
8 | 8 | #include "stdhdrs.h" |
9 | 9 | #include "resource.h" |
10 | + | |
10 | 11 | #include "vncPasswd.h" |
12 | + | |
11 | 13 | #include <vector> |
12 | 14 | using namespace std; |
13 | 15 | #include <string> |
14 | 16 | using namespace std; |
15 | 17 | |
18 | +#include "CACIC_Utils.h" | |
19 | + | |
16 | 20 | //extern int MAX_VNC_CLIENTS; |
17 | 21 | |
18 | 22 | #define ATT_MSG "ATENÇÃO: Esta autenticação, que precede a abertura de sessão para suporte remoto, atribui ao usuário a total responsabilidade por todo e qualquer tipo de dano lógico à estação que porventura seja causado por acesso externo indevido." |
19 | 23 | |
20 | 24 | #pragma once |
21 | 25 | |
22 | -// struct referente a um domínio | |
26 | +/** | |
27 | + * Struct referente a um domínio de autenticação. | |
28 | + */ | |
23 | 29 | struct Dominio { |
30 | + Dominio(string p_id, string p_nome) : id(p_id), nome(p_nome) {} | |
31 | + Dominio() : id(""), nome("") {} | |
32 | + | |
24 | 33 | string id; |
25 | 34 | string nome; |
26 | 35 | }; |
... | ... | @@ -36,22 +45,20 @@ public: |
36 | 45 | vncPassDlg(vector<Dominio> &listaDominios); |
37 | 46 | virtual ~vncPassDlg(); |
38 | 47 | |
39 | - char m_usuario[32]; // nome de usuário | |
40 | - char m_senha[32]; // senha de usuário | |
41 | - char m_dominio[16]; // id do domínio selecionado | |
48 | + char m_usuario[33]; // nome de usuário | |
49 | + char m_senha[33]; // senha de usuário | |
50 | + char m_dominio[17]; // id do domínio selecionado | |
42 | 51 | |
43 | 52 | vector<Dominio> m_listaDominios; |
44 | 53 | |
45 | 54 | EAuthCode m_authStat; |
55 | + string m_msgInfo; | |
46 | 56 | |
47 | - BOOL DoDialog(EAuthCode authStat, string msgInfo); | |
57 | + BOOL DoDialog(); | |
48 | 58 | |
49 | 59 | private: |
50 | 60 | static BOOL CALLBACK vncAuthDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); |
51 | 61 | static BOOL CALLBACK vncNoAuthDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); |
52 | - static void changeFont(HWND hwndDlg, int dlgItem); | |
53 | - | |
54 | - string m_msgInfo; | |
55 | 62 | |
56 | 63 | UINT m_indiceDominio; // índice selecionado no combobox de domínios |
57 | 64 | }; | ... | ... |
srcacic/WinVNC/WinVNC/vncclient.cpp
... | ... | @@ -643,7 +643,8 @@ vncClientThread::InitAuthenticate() |
643 | 643 | // verifica o técnico que está querendo logar e o adiciona na lista. |
644 | 644 | if (!CACIC_Auth::getInstance()->validaTecnico(nm_usuario_cli, te_senha_cli, |
645 | 645 | te_node_address_cli, te_documento_referencial, |
646 | - te_motivo_conexao, te_so_cli, m_client->GetClientId())) | |
646 | + te_motivo_conexao, te_so_cli, | |
647 | + m_client->GetClientId(), m_socket->GetPeerName())) | |
647 | 648 | { |
648 | 649 | auth_ok = FALSE; |
649 | 650 | } | ... | ... |
srcacic/WinVNC/WinVNC/winvnc.cpp
... | ... | @@ -269,8 +269,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, |
269 | 269 | CACIC_Auth::getInstance()->setTempPath(cmdln[5]); |
270 | 270 | |
271 | 271 | // Cria o arquivo temporário de travamento do CACIC |
272 | - string filePath = cmdln[5]; | |
273 | - filePath += AGUARDE_FILENAME; | |
272 | + string filePath = string(cmdln[5]); | |
273 | + filePath += CACIC_Auth::AGUARDE_FILENAME; | |
274 | 274 | pFile = fopen(filePath.data(), "w+"); |
275 | 275 | vnclog.Print(LL_SRLOG, VNCLOG("Criando arquivo temporário: aguarde_SRCACIC.txt!\n")); |
276 | 276 | |
... | ... | @@ -290,6 +290,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, |
290 | 290 | stringstream portBuffer(cmdln[6]); |
291 | 291 | portBuffer >> porta; |
292 | 292 | CACIC_Auth::getInstance()->setPorta(porta); |
293 | + UINT timeout; | |
294 | + stringstream timeoutBuffer(cmdln[7]); | |
295 | + timeoutBuffer >> timeout; | |
296 | + CACIC_Auth::getInstance()->setTimeout(timeout); | |
293 | 297 | |
294 | 298 | if (CACIC_Auth::getInstance()->autentica()) { |
295 | 299 | iniciaTimer(); |
... | ... | @@ -524,6 +528,7 @@ int WinVNCAppMain() |
524 | 528 | // Set the name and port number |
525 | 529 | server.SetName(szAppName); |
526 | 530 | server.SetPort(CACIC_Auth::getInstance()->getPorta()); |
531 | + server.SetAutoIdleDisconnectTimeout(CACIC_Auth::getInstance()->getTimeout()); | |
527 | 532 | server.SockConnect(TRUE); |
528 | 533 | vnclog.Print(LL_STATE, VNCLOG("Servidor inicializado com sucesso!\n")); |
529 | 534 | //uninstall driver before cont |
... | ... | @@ -531,10 +536,6 @@ int WinVNCAppMain() |
531 | 536 | // sf@2007 - Set Application0 special mode |
532 | 537 | server.RunningFromExternalService(fRunningFromExternalService); |
533 | 538 | |
534 | - // colocando uma referência do servidor na classe CACIC_Auth | |
535 | - // para facilitar o acesso e a mudança de propriedades posteriormente. | |
536 | - //CACIC_Auth::getInstance()->m_server = &server; | |
537 | - | |
538 | 539 | // sf@2007 - New impersonation thread stuff for tray icon & menu |
539 | 540 | // Subscribe to shutdown event |
540 | 541 | hShutdownEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "Global\\SessionEventUltra"); | ... | ... |
srcacic/WinVNC/WinVNC/winvnc.rc
... | ... | @@ -95,35 +95,37 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIB |
95 | 95 | CAPTION "Aceitar conexão?" |
96 | 96 | FONT 8, "MS Shell Dlg", 0, 0, 0x0 |
97 | 97 | BEGIN |
98 | - DEFPUSHBUTTON "&Aceitar",IDACCEPT,7,142,53,21 | |
98 | + DEFPUSHBUTTON "&Aceitar",IDACCEPT,7,142,57,21 | |
99 | 99 | PUSHBUTTON "&Rejeitar",IDREJECT,178,142,53,21 |
100 | 100 | CTEXT "srCACICsrv recebeu uma tentativa de conexão de:",IDC_STATIC_TEXT1,7,3,224,16,SS_CENTERIMAGE |
101 | 101 | LTEXT "<desconhecido>",IDC_ACCEPT_IP,69,28,162,10,SS_CENTERIMAGE |
102 | 102 | CTEXT "Você deseja aceitar a conexão?",IDC_STATIC_TEXT,7,126,224,16,SS_CENTERIMAGE |
103 | - CTEXT "Rejeitar:",IDC_ACCEPT_TIMEOUT,60,142,118,21,SS_CENTERIMAGE | |
103 | + CTEXT "Rejeitar:",IDC_ACCEPT_TIMEOUT,64,142,114,21,SS_CENTERIMAGE | |
104 | 104 | LTEXT "<desconhecido>",IDC_UVIS_NAME,69,17,162,8 |
105 | 105 | EDITTEXT IDC_MOTIVO_SUPORTE,7,64,224,62,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN |
106 | 106 | LTEXT "Motivo do Suporte:",IDC_STATIC,7,54,62,8 |
107 | 107 | LTEXT "Endereço IP:",IDC_STATIC,7,29,42,8 |
108 | - LTEXT "Nome do Técnico:",IDC_STATIC,7,17,53,8 | |
109 | - LTEXT "Doc. Referência:",IDC_STATIC,7,41,55,8 | |
108 | + LTEXT "Nome do Técnico:",IDC_STATIC,7,17,57,8 | |
109 | + LTEXT "Doc. Referência:",IDC_STATIC,7,41,57,8 | |
110 | 110 | EDITTEXT IDC_DOC_REF,68,41,163,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER |
111 | 111 | END |
112 | 112 | |
113 | -IDD_INFO_DLG DIALOGEX 0, 0, 261, 51 | |
113 | +IDD_INFO_DLG DIALOGEX 0, 0, 261, 62 | |
114 | 114 | STYLE DS_SYSMODAL | DS_SETFONT | DS_FIXEDSYS | WS_POPUP |
115 | 115 | EXSTYLE WS_EX_PALETTEWINDOW | WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | WS_EX_TRANSPARENT | WS_EX_MDICHILD |
116 | 116 | FONT 8, "MS Shell Dlg", 400, 0, 0x0 |
117 | 117 | BEGIN |
118 | 118 | CTEXT "ESTAÇÃO DE TRABALHO EM SUPORTE REMOTO",IDC_AVISO_SUPORTE,54,12,205,11 |
119 | 119 | CTEXT "ATENÇÃO",IDC_ATENCAO_STATIC,54,2,205,10 |
120 | - CONTROL 163,IDC_SRCACIC_IMG,"Static",SS_BITMAP,0,2,51,47 | |
121 | 120 | LTEXT "Nome:",IDC_STATIC,54,22,24,8 |
122 | 121 | LTEXT "IP:",IDC_STATIC,54,32,10,8 |
123 | - LTEXT "Início:",IDC_STATIC,54,41,20,8 | |
122 | + LTEXT "Início:",IDC_STATIC,54,42,20,8 | |
124 | 123 | LTEXT "",IDC_INFO_NOME,78,23,181,8,0,WS_EX_TRANSPARENT |
125 | 124 | LTEXT "",IDC_INFO_IP,78,32,181,8,0,WS_EX_TRANSPARENT |
126 | 125 | LTEXT "",IDC_INFO_INICIO,78,41,181,8,0,WS_EX_TRANSPARENT |
126 | + LTEXT "Doc. Referência:",IDC_STATIC_INFO_REF,54,51,57,8 | |
127 | + LTEXT "",IDC_INFO_REFERENCIA,111,51,148,8 | |
128 | + CONTROL 163,IDC_SRCACIC_IMG,"Static",SS_BITMAP,0,0,54,62 | |
127 | 129 | END |
128 | 130 | |
129 | 131 | |
... | ... | @@ -189,7 +191,7 @@ BEGIN |
189 | 191 | BEGIN |
190 | 192 | LEFTMARGIN, 7 |
191 | 193 | RIGHTMARGIN, 231 |
192 | - VERTGUIDE, 60 | |
194 | + VERTGUIDE, 64 | |
193 | 195 | VERTGUIDE, 69 |
194 | 196 | VERTGUIDE, 178 |
195 | 197 | TOPMARGIN, 7 |
... | ... | @@ -203,8 +205,9 @@ BEGIN |
203 | 205 | BEGIN |
204 | 206 | VERTGUIDE, 54 |
205 | 207 | VERTGUIDE, 78 |
208 | + VERTGUIDE, 111 | |
206 | 209 | VERTGUIDE, 259 |
207 | - BOTTOMMARGIN, 49 | |
210 | + BOTTOMMARGIN, 60 | |
208 | 211 | HORZGUIDE, 2 |
209 | 212 | HORZGUIDE, 10 |
210 | 213 | HORZGUIDE, 49 |
... | ... | @@ -219,8 +222,8 @@ END |
219 | 222 | // |
220 | 223 | |
221 | 224 | VS_VERSION_INFO VERSIONINFO |
222 | - FILEVERSION 2,5,0,800 | |
223 | - PRODUCTVERSION 2,5,0,800 | |
225 | + FILEVERSION 2,5,0,804 | |
226 | + PRODUCTVERSION 2,5,0,804 | |
224 | 227 | FILEFLAGSMASK 0x37L |
225 | 228 | #ifdef _DEBUG |
226 | 229 | FILEFLAGS 0x25L |
... | ... | @@ -237,11 +240,11 @@ BEGIN |
237 | 240 | BEGIN |
238 | 241 | VALUE "CompanyName", "Dataprev - Unidade Regional Espírito Santo" |
239 | 242 | VALUE "FileDescription", "Módulo Suporte Remoto Seguro do Sistema CACIC" |
240 | - VALUE "FileVersion", "2, 5, 0, 800" | |
243 | + VALUE "FileVersion", "2, 5, 0, 804" | |
241 | 244 | VALUE "InternalName", "srCACICsrv" |
242 | 245 | VALUE "LegalCopyright", "Copyright © 2008 DATAPREV" |
243 | 246 | VALUE "LegalTrademarks", "srCACIC" |
244 | - VALUE "ProductVersion", "2, 5, 0, 800" | |
247 | + VALUE "ProductVersion", "2, 5, 0, 804" | |
245 | 248 | END |
246 | 249 | END |
247 | 250 | BLOCK "VarFileInfo" |
... | ... | @@ -390,7 +393,7 @@ BEGIN |
390 | 393 | DEFPUSHBUTTON "OK",ID_POK,55,130,50,13 |
391 | 394 | PUSHBUTTON "Cancelar",ID_PCANCELAR,117,130,50,13 |
392 | 395 | COMBOBOX IDC_DOMAIN_CB,84,59,83,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
393 | - CTEXT "v2.5.0.800",IDC_AUTHDLG_VERSION,187,145,36,8,SS_CENTERIMAGE,WS_EX_STATICEDGE | |
396 | + CTEXT "v2.5.0.804",IDC_AUTHDLG_VERSION,187,145,36,8,SS_CENTERIMAGE,WS_EX_STATICEDGE | |
394 | 397 | CTEXT "Por favor, preencha as informações solicitadas abaixo, para a autenticação de seu usuário.",IDC_AUTH_INFO,3,38,216,18 |
395 | 398 | EDITTEXT IDC_MSG,3,111,216,17,ES_CENTER | ES_MULTILINE | ES_READONLY | NOT WS_BORDER |
396 | 399 | CTEXT "ATENÇÃO: Esta autenticação, que precede a abertura de sessão para suporte remoto, atribui ao usuário a total responsabilidade por todo e qualquer tipo de dano lógico à estação que porventura seja causado por acesso externo indevido.",IDC_ATT_MSG,3,3,216,33 |
... | ... | @@ -406,7 +409,7 @@ BEGIN |
406 | 409 | EDITTEXT IDC_USER_EDIT,69,58,83,12,ES_AUTOHSCROLL |
407 | 410 | DEFPUSHBUTTON "OK",ID_POK,45,76,45,13 |
408 | 411 | PUSHBUTTON "Cancelar",ID_PCANCELAR,102,76,45,13 |
409 | - CTEXT "v2.5.0.800",IDC_AUTHDLG_VERSION,159,90,36,8,SS_CENTERIMAGE,WS_EX_STATICEDGE | |
412 | + CTEXT "v2.5.0.804",IDC_AUTHDLG_VERSION,159,90,36,8,SS_CENTERIMAGE,WS_EX_STATICEDGE | |
410 | 413 | CTEXT "Por favor, digite seu nome no campo abaixo.",IDC_AUTH_INFO,3,46,188,10 |
411 | 414 | CTEXT "ATENÇÃO: Esta autenticação, que precede a abertura de sessão para suporte remoto, atribui ao usuário a total responsabilidade por todo e qualquer tipo de dano lógico à estação que porventura seja causado por acesso externo indevido.",IDC_ATT_MSG,3,3,188,40 |
412 | 415 | END | ... | ... |