Ir al contenido


Foto

Control de Proxy en programa Cliente/servidor


  • Por favor identifícate para responder
8 respuestas en este tema

#1 Diego827

Diego827

    Member

  • Miembros
  • PipPip
  • 30 mensajes

Escrito 14 marzo 2012 - 02:16

Hola amigos de Delphiaccess, es mi primera pregunta pero aquí están los compañeros de siempre.

Mi problema a detalle es el siguiente:

Tengo un servidor con Interbase SMP 2009 Versión ilimitada; he programado un programa cliente sencillo que accede a una base de datos en el servidor por medio del protocolo TCP/IP. Utilizo componenes InterBase (IBDataBase, IBTransaction... etc).

Hasta aqui todo ok, pues esta funcionando en una red de area local (LAN) y no tengo problemas. La empresa donde laboro utiliza un proxy para salir al internet y ahora me han puesto la tarea de que el cliente se conecte a travéz de internet. El servidor tendrá una IP publica fija pero mi duda es:

Cuando el cliente, dentro de la red de la empresa trate de conectarce al servidor por medio de la IP publica asignada, este tendria que pedir usuario y password del proxy y no se como hacer eso. No se si es correcto o posible conectar mi servidor desde el internet con una simple ip publica pero por favor, si la estoy arruinando en alguna parte diganlo que no sera ofensa de ninguna manera, ademas por supuesto de contestar mi duda acerca del proxy.

Gracias.
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 14 marzo 2012 - 03:06

Bienvenido, Diego827.

Mira a ver si esto te ayuda.


Saludos.
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 marzo 2012 - 10:29

Como complemento a lo dicho en el mensaje anterior, he publicado un truco que pide la autentificación en el proxy. Esto obliga a que el usuario conozca de anemano la contraseña. En el truco Autentificarnos en un proxy era la aplicación la que previamente conocía las credenciales. En el nuevo truco es el S.O. el que se ve oblidado a pedirlo.

Tu decides cual es la mejor opción.  ;)

Saludos.


  • 0

#4 Diego827

Diego827

    Member

  • Miembros
  • PipPip
  • 30 mensajes

Escrito 15 marzo 2012 - 03:37

Como complemento a lo dicho en el mensaje anterior, he publicado un truco que pide la autentificación en el proxy.


Disculpas escafandra, donde has publicado el truco? realmente me estas ayudando, gracias.
  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 marzo 2012 - 05:58


Disculpas escafandra, donde has publicado el truco? realmente me estas ayudando, gracias.

Disculpa, no puse el enlace :(.  Está aquí:)


Saludos.
  • 0

#6 Diego827

Diego827

    Member

  • Miembros
  • PipPip
  • 30 mensajes

Escrito 15 marzo 2012 - 06:10


Disculpas escafandra, donde has publicado el truco? realmente me estas ayudando, gracias.


Disculpa, no puse el enlace :(.  Está aquí:)


Saludos.


Gracias amigo, me parece que estos códigos son validos cuando lo que deseas mostrar es una página web. No posees algún código para una aplicación que se desee conectar a una ip, o sea un servidor como en mi caso??? Esta segunda forma que me muestras es la mas parecida a lo que quiero obtener para poder conectarme desde internet con mi servidor, que aparezca una venta ita tal cual la del explorador cuando te pide usuario y password.

Saludos,
  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 16 marzo 2012 - 02:55

Mira a ver si esto te ayuda.


Saludos.


  • 0

#8 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 16 marzo 2012 - 05:39

Ahora que he tenido un momento libre, te muestro una versión del truco que funciona con IP y URL:


cpp
  1. #pragma link "$(BCB)\\lib\\PSDK\\Wininet.lib"
  2.  
  3. void Authenticate(HWND hWnd, char *_URL)
  4. {
  5.   HINTERNET hInet,  hConnect, hRequest;
  6.   DWORD dwErrorCode;
  7.  
  8.   char *URL = strnewdup(_URL);
  9.   if(!strnicmp(URL, "http://", 7)) URL += 7;
  10.   char *C = strchr(URL, '//');
  11.   if(C) *C = 0;
  12.   hInet = InternetOpen("Agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
  13.   hConnect = InternetConnect(hInet, URL,
  14.                               INTERNET_INVALID_PORT_NUMBER, NULL, NULL,
  15.                               INTERNET_SERVICE_HTTP, 0,0);
  16.  
  17.   hRequest = HttpOpenRequest(hConnect, "GET", "", NULL, NULL, NULL,
  18.                               INTERNET_FLAG_KEEP_CONNECTION, 0);
  19.   HttpSendRequest(hRequest, NULL, 0, NULL, 0);
  20.   dwErrorCode = hRequest ? ERROR_SUCCESS : GetLastError();
  21.   InternetErrorDlg(hWnd, hRequest, dwErrorCode,
  22.                     FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
  23.                     FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS |
  24.                     FLAGS_ERROR_UI_FLAGS_GENERATE_DATA,
  25.                     NULL);
  26.   delete URL;
  27.   InternetCloseHandle(hInet);
  28.   InternetCloseHandle(hConnect);
  29.   InternetCloseHandle(hRequest);
  30. }



PD: He realizado una pequeña mejora en el código.

Saludos.
  • 0

#9 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 22 marzo 2012 - 12:52

A juzgar por le evolución del hilo y del  agradecimiento final sin añadir mas dudas, considero este hilo como resuelto.  :)


Saludos.
  • 0




IP.Board spam blocked by CleanTalk.