2010-02-23 3 views
2

Je voudrais utiliser la bibliothèque net/imap dans ruby ​​derrière un proxy authentifié, je commençais à creuser et je me demande s'il y a un moyen de le faire déjà ou si je besoin de faire ma propre version de la bibliothèque net/imap qui prend en charge un proxy?net/imap de derrière un proxy

Répondre

1

Il est possible de tunnel une connexion socket via un serveur proxy HTTPS.

Pour ce faire:

  • ouvrir une socket à votre serveur proxy
  • d'envoi "nom d'hôte CONNECT: portnumber HTTP/1.0 \ n \ r \ n \ r \ n"
  • lire la prise jusqu'à ce que la fin des en-têtes HTTP (2 lignes vides)
  • votre prise est maintenant connecté

Voici un ruby example d'un tel tunn el.

Les raisons cela ne fonctionne pas:

  • la plupart des administrateurs réseau permettra uniquement se connecter au port 443
  • serveur proxy a l'authentification proxy
+0

Ce serveur dispose d'une authentification par proxy. Mais votre exemple a des méthodes de socket pour ce cas. Je pense que je devrais être capable d'utiliser cette socket pour réécrire le net/imap dans quelque chose que je peux utiliser. Merci –

0

La meilleure façon de pirater des bibliothèques qui ne prennent pas en charge les informations de proxy est de remplacer Net::HTTP par une instance de Net::HTTP::Proxy:

# somewhere before you load net/imap 
proxy = Net::HTTP::Proxy(address, host) 
Net.class_eval do 
    remove_const :HTTP 
    HTTP = proxy 
end 
+0

Ne pas dire qu'il aurait besoin de courir à travers HTTP ? Je vais essayer demain au cas où. –

+0

Rats. J'ai supposé que la bibliothèque Net/IMAP utilisait la bibliothèque Net :: HTTP pour construire le socket, mais ce n'est pas le cas. (Je n'ai * aucune idée * pourquoi je pensais que, d'ailleurs, cela n'aurait pas beaucoup de sens.) –

+0

Merci à toute direction de faire un support proxy au niveau de la socket, je regarde et il semble que ce peut être désordonné . Je pourrais avoir à suivre le modèle qu'ils ont utilisé pour le Net :: HTTP :: Proxy –

Questions connexes