summaryrefslogtreecommitdiff
path: root/final/app/include/ludo/auth.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'final/app/include/ludo/auth.inc.php')
-rw-r--r--final/app/include/ludo/auth.inc.php78
1 files changed, 78 insertions, 0 deletions
diff --git a/final/app/include/ludo/auth.inc.php b/final/app/include/ludo/auth.inc.php
new file mode 100644
index 0000000..2491203
--- /dev/null
+++ b/final/app/include/ludo/auth.inc.php
@@ -0,0 +1,78 @@
+<?php
+/*
+ * Collection de fonctions pour une authentification externe POP3
+ */
+
+// Constantes d'erreur
+define("ERR_POP3_AUTH_BADSOCK", -1);
+define("ERR_POP3_AUTH_SERVERNACK", -2);
+define("ERR_POP3_AUTH_BADUSER", -3);
+define("ERR_POP3_AUTH_BADPASS", -4);
+define("ERR_BAD_PARAMS", -100);
+
+// Fonction d'authentification pop3
+function pop3_auth_simple($mail, $upw)
+{
+ if ( ($ret = ereg ( "(^.*)@([[:alnum:]]+\.[[:alnum:]]+)", $mail, $re_tokens ) ) )
+ {
+ /* $re_tokens []
+ * [0] : email complet
+ * [1] : nom_mail
+ * [2] : serveur_mail
+ */
+ require_once('config.inc.php');
+ $srv_conf = $CONFIG['AUTH']['POP']['SERVERS'][strtolower($re_tokens[2])];
+ if ( is_array($srv_conf) )
+ {
+ $server=$srv_conf['subdomain'];
+ $port=$srv_conf['port'];
+ if ( $srv_conf['username_is_full_mail'] )
+ { $user = $mail; } else { $user = $re_tokens[1]; }
+ return pop3_auth ($server, $port, $user, $upw);
+ }
+ }
+ /* DEBUG
+ echo $mail . "\n" . $ret . "\n";;
+ print_r($re_tokens);
+ */
+ return ERR_BAD_PARAMS;
+}
+
+function pop3_auth ($server, $port, $user, $upw)
+{
+ //echo "DEBUG : fsockopen($server, $port, $errno, $errstr, 10);";
+ $sock = @fsockopen($server, $port, $errno, $errstr, 10);
+ if ( $sock === false)
+ {
+ return ERR_POP3_AUTH_BADSOCK;
+ }
+
+ //stream_set_timeout ( $sock, 1, 0 );
+
+ fputs($sock, "user $user\r\n");
+
+ if ( pop3_GetAndTestReply($sock) === false )
+ {
+ return ERR_POP3_AUTH_BADUSER;
+ }
+
+ fputs($sock, "pass $upw\r\n");
+
+ if ( pop3_GetAndTestReply($sock) === false )
+ {
+ return ERR_POP3_AUTH_BADPASS;
+ }
+
+ fputs($sock, "quit\r\n");
+
+ return 0;
+}
+
+// Fonction interne testant les r&eacute;ponses du serveur POP3
+function pop3_GetAndTestReply($sock)
+{
+ $reply = fgets($sock, 128);
+ echo $reply . "\n";
+ return ( substr($reply, 0, 4) == "+OK " );
+}
+?> \ No newline at end of file