1 | |||
Auteur | Messages | ||
---|---|---|---|
Gamuti | #1 Posté le 11/8/2010 à 20:23:00 | ||
Salut à tous les gambassiens ! Depuis quelques semaines, je développe une application en GB2 permettant de télécharger dans les newsgroups. Or, je bute sur un problème : Je ne parviens pas à réaliser une connexion à un serveur NNTP (donc, un serveur de newsgroups) avec identifiant ET mot de passe. Je comptais sur l'utilisation d'un TELNET ou de SSH pour tester si la connexion est active, refusée ou inexistante. J'arrive à mes fins avec un serveur sans identifiant mais le problème se pose avec un identifiant ET mot de passe. Comment faire ? Exemple de ce que je veux réaliser :
Est-ce possible de réaliser une connexion à un NNTP en pur gambas ? Merci de vos réponses. | |||
gambix | #2 Posté le 11/8/2010 à 20:58:00 | ||
Faire simple ! | oui je l'ai fait avec une connection smtp ... tu peut utiliser openssh pour les connection cryptée..; sinon un simple socket gambas remplace bien telnet Moins de texte dans une signature c'est agrandir son espace. | ||
gambix | #3 Posté le 11/8/2010 à 21:03:00 | ||
Faire simple ! | FMAIN========================= PUBLIC SUB _new() END PUBLIC SUB Button1_Click() DIM hsmtp AS NEW smtp hsmtp.Host = "mail.toile-libre.org" hsmtp.Port = 587 hsmtp.AuthUser = "master@gambasforge.org" hsmtp.AuthPassword = "gfor..." hsmtp.From = "<m@gambasforge.org>" hsmtp.To.Add("<gambas.fr@gmail.com>") hsmtp.To.Add("<lordheavym@gmail.com>") hsmtp.Subject = "Un petit test de message" hsmtp.Message = "Un petit coucou encore :)" PRINT hsmtp.Send() END =============================== smtp.class=========================== ' Gambas class file PRIVATE $aTo AS NEW String[] PRIVATE $aBcc AS NEW String[] PRIVATE $sFrom AS String PRIVATE $iStep AS Integer PRIVATE $sBase AS String PRIVATE $sHost AS String PRIVATE $iPort AS Integer PRIVATE $sAuthUser AS String PRIVATE $sAuthPassword AS String PRIVATE $sMessage AS String PRIVATE $sSubject AS String PRIVATE $hProcess AS Process PRIVATE $ToIndex AS Integer PROPERTY {To} AS String[] PROPERTY {From} AS String PROPERTY Bcc AS String[] PROPERTY AuthUser AS String PROPERTY AuthPassword AS String PROPERTY Message AS String PROPERTY Host AS String PROPERTY Port AS Integer PROPERTY Subject AS String PRIVATE FUNCTION To_Read() AS String[] RETURN $aTo END PRIVATE SUB To_Write(Value AS String[]) $aTo = Value END PRIVATE FUNCTION From_Read() AS String RETURN $sFrom END PRIVATE SUB From_Write(Value AS String) $sFrom = Value END PUBLIC FUNCTION Send() AS Boolean IF $aTo.Count = 0 THEN RETURN FALSE IF NOT $sFrom THEN RETURN FALSE IF NOT $sMessage THEN RETURN FALSE IF NOT $sAuthUser THEN RETURN FALSE $iStep = 0 SHELL ("perl -MMIME::Base64 -e 'print encode_base64("\\000" & Replace($sAuthUser, "@", "\\@") & "\\000" & $sAuthPassword & "")'") TO $sBase $hprocess = EXEC ["openssl", "s_client", "-starttls", "smtp", "-crlf", "-connect", $sHost & ":" & $iPort] FOR READ WRITE AS "MyProcess" END PUBLIC SUB MyProcess_Read() DIM sStr AS String READ #LAST, sStr, Lof(LAST) PRINT sStr IF Right(sStr, 2) = "\r\n" THEN SELECT CASE Left(sStr, 3) CASE "250", "235" 'Acquisition des commandes SELECT CASE $iStep CASE 0 PRINT #LAST, "AUTH PLAIN " & $sBase INC $iStep CASE 1 PRINT #LAST, "mail from: " & $sFrom INC $iStep CASE 2 PRINT #LAST, "rcpt to: " & $aTo[$ToIndex] INC $ToIndex IF $ToIndex > $aTo.Max THEN INC $iStep CASE 3 PRINT #LAST, "data" INC $iStep CASE 4 PRINT #LAST, "quit" END SELECT CASE "354" 'acqisition des données PRINT #LAST, "From: " & $sFrom PRINT #LAST, "To: " & $aTo.Join() PRINT #LAST, "Subject: " & $sSubject PRINT #LAST, "X-Sender: " & $sFrom PRINT #LAST, "User-Agent: Gambas simple smtp class" PRINT #LAST, "Content-Transfer-Encoding: 8 bit" PRINT #LAST, "Content-Type: text/plain; charset=UTF-8" PRINT #LAST, "" PRINT #LAST, $sMessage PRINT #LAST, "." CASE "221" 'fin END SELECT 'INC $iStep ENDIF END PUBLIC SUB MyProcess_Error(sStr AS String) 'PRINT "error" PRINT sStr SELECT CASE Left(sStr, 3) CASE "250" PRINT #LAST, "ehlo testing" CASE "161" END SELECT END PRIVATE FUNCTION AuthUser_Read() AS String RETURN $sAuthUser END PRIVATE SUB AuthUser_Write(Value AS String) $sAuthUser = Value END PRIVATE FUNCTION AuthPassword_Read() AS String RETURN $sAuthPassword END PRIVATE SUB AuthPassword_Write(Value AS String) $sAuthPassword = Value END PRIVATE FUNCTION Message_Read() AS String RETURN $sMessage END PRIVATE SUB Message_Write(Value AS String) $sMessage = Value END PRIVATE FUNCTION Bcc_Read() AS String[] RETURN $aBcc END PRIVATE SUB Bcc_Write(Value AS String[]) $aBcc = Value END PRIVATE FUNCTION Host_Read() AS String RETURN $sHost END PRIVATE SUB Host_Write(Value AS String) $sHost = Value END PRIVATE FUNCTION Port_Read() AS Integer RETURN $iPort END PRIVATE SUB Port_Write(Value AS Integer) $iPort = Value END PRIVATE FUNCTION Subject_Read() AS String RETURN $sSubject END PRIVATE SUB Subject_Write(Value AS String) $sSubject = Value END =================================== j'espère que ça t'aidera Moins de texte dans une signature c'est agrandir son espace. | ||
gambix | #4 Posté le 11/8/2010 à 21:04:00 | ||
Faire simple ! | c'est ce qui a permis de mettre en place le système d'envois de mail crypté avec authentification de gb.smtp Moins de texte dans une signature c'est agrandir son espace. | ||
manu | #5 Posté le 12/8/2010 à 17:10:00 | ||
Avec Gambas ca roule ! | Rhooo Gambix, ce serais tellement bien ce code dans gambas-forge ! Une petite appli qui marche nous aiderais a mieux comprendre mais bon, mois j'dis ça comme ca.. je sais que le temps te manques Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) | ||
Gamuti | #6 Posté le 12/8/2010 à 17:58:00 | ||
Ouh làla, quelle réactivité !! Super le code, je n'ai pas encore testé mais dès que j'aurai un moment, je m'y attellerai. Le temps me manque tellement ... Ceci-dit, c'est un code pour réaliser une connexion en SMTP or moi j'aimerai une connexion NNTP. Ce n'est pas le même protocole !! En tout cas, merci de la réponse rapide. | |||
gambix | #7 Posté le 12/8/2010 à 20:23:00 | ||
Faire simple ! | ben tu cherche la rfc !!!... ou nmtp dans comment ça marche ! Moins de texte dans une signature c'est agrandir son espace. | ||
Pablodetaix | #8 Posté le 3/10/2010 à 12:53:00 | ||
Bonjour, de mon coté en effet j'ai aussi le classique SSh etc etc mais si tu ouvres en EXEC un socket pour ton proto telnet mais en Read/Write => qd la question Password arrive (read du socket !) => ben tu lui envoies ! par un write .... et le tour est joué ! le probleme majeur c'est que ton appli doit connaitre le PW ! Bons tests, Pablo | |||
1 |