Newsgroup: it.comp.java
Titolo: Connessione attraverso Socks-Firewall

Ciao a tutti ecco una questione interessante:
come faccio a fare passare una connessione socket sia  TCP che UDP
attraverso un firewall?
Per esempio voglio raggiungere dall'host A l'Host C passando da B
A -> B -> C
ho visto queste proprietą generali
ma testando non credo abbaino l'effetto desiderato:
    System.getProperties().put("socksProxySet", "true");
     System.getProperties().put("socksProxyHost", "123.123.123.123");
     System.getProperties().put("socksProxyPort", "1080");
sono da richiamare prima dell'apertura di una connessione Socket vero?
non capisco dov'č il baco
Vi ringrazio ciao

 ma testando non credo abbaino l'effetto desiderato:
Probabilmente il tuo proxy non č socks4 ma socks5. Dal sorgente di una
classe che ho sviluppato tempo addietro (e cheun giorno forse riuscirņ a
mettere a disposizione su un sito...):
package 
com.threeamigos.util.net
;
import java.net.URLConnection;
import java.util.Properties;
import com.threeamigos.io.Base64Codec;
public class Network {
  /**
   * Activates a socks4 proxy server for this virtual machine
   * @param host host name of your proxy server
   * @param port port number of your proxy server
   */
  public static void setSocks4(String host, int port) {
    Properties p = System.getProperties();
    p.put("socksProxySet", "true");
    p.put("socksProxyHost", host);
    p.put("socksProxyPort", String.valueOf(port));
    p = null;
  }
  /**
   * Activates a socks5 proxy server for this virtual machine
   * @param host host name of your proxy server
   * @param port port number of your proxy server
   */
  public static void setSocks5(String host, int port) {
    Properties p = System.getProperties();
    p.put("proxySet", "true");
    p.put("proxyHost", host);
    p.put("proxyPort", String.valueOf(port));
    p = null;
  }
  private static String proxyAuthorization; // used on
url.openConnection()
  /**
   * Specifies username and password to be used to connect to your proxy
server
   * @param username a valid username
   * @param password the user's password
   */
  public static void setProxyAuthorization(String username, String
password) {
    proxyAuthorization = new Base64Codec().encode(username + ":" +
password);
  }
  /**
   * Modifies connection headers in order to pass through your proxy
server
   */
  public static void authenticateConnection(URLConnection c) {
    if (proxyAuthorization != null)
      c.setRequestProperty("Proxy-Authorization", proxyAuthorization);
  }
}
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 ha scritto nel messaggio
news:3C5A7B82...@sdb.it...
grazie molto Stefano
la tua classe mi sarà utile
si avevi ragione sono sotto socks5
ecco perchè
grazie molto ancora!


Se ho capito, B e' la macchina dove c'e' il proxy socks (nel tuo esempio 123.123.123.123)
Ciao,
    Bruno.
---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola

 Se ho capito, B e' la macchina dove c'e' il proxy socks (nel tuo esempio
123.123.123.123)
Si esatto B è la macchina Proxy Socks
Quindi i pacchetti UDP non sono routati verso il Proxy Socks
ma vanno direttamente all'host...
Non c'è modo di farli passare (gli udp) attraverso un Proxy intermedio
quindi?
Funziona quindi solo per connessioni TCP?
-Un'altra domanda se l'utente decidesse di fare a meno dei socks
basta che nel programma annullo le proprietà impostando
System.getProperties().put("socksProxySet", "false");
così facendo sovrascrive la proprietà precedentemente settata?
cioè disabilita la connessione attraverso il proxy?
Ti ringrazio molto
:D


Uhm... francamente non ricordo, direi che fai prima a fare ua prova :-D
