Sait-on jamais, ça pourrai servir... Deux petites fonctions pour lister un répertoire, ou lister un répertoire récursivement
PHP:
-
function ls($dir, $with_prefix = false) {
-
if (substr($dir, -
1) !==
"/") $dir .=
"/";
-
-
-
-
-
-
-
while (($file =
readdir($dh)) !==
false) {
-
-
if (is_dir($dir.
$file)) $dirs[] =
($with_prefix) ?
$dir.
$file :
$file;
-
else $files[] = ($with_prefix) ? $dir.$file : $file;
-
}
-
}
-
-
}
-
}
-
else return false;
-
-
-
-
-
return array($dirs,
$files);
-
}
-
-
function recursive_ls ($dir, $with_prefix = false) {
-
if (substr($dir, -
1) !==
"/") $dir .=
"/";
-
-
if (($map_elements = ls ($dir, false)) !== false) {
-
-
-
if (!
empty($map_elements[0])) {
-
foreach ($map_elements[0] as $dirname) {
-
$map[($with_prefix) ? $dir.$dirname : $dirname] = recursive_ls($dir.$dirname, $with_prefix);
-
}
-
}
-
-
if ($with_prefix and !
empty($map_elements[1])) {
-
foreach ($map_elements[1] as $id => $value) {
-
$map_elements[1][$id] = $dir . $value;
-
}
-
}
-
-
-
}
-
-
return false;
-
}
January 27th, 2007
Je me suis retrouvé dans la nécessité de configurer un serveur Apache 2.2 (sous debian) pour qu'il puisse puiser sa liste d'utilisateurs dans un serveur LDAP, que j'utilise aussi pour authentifier mes utilisateurs FTP, SSH, Jabber, etc, et donc j'utilise des objectClass faites pour PAM (ce qui est le cas de la plupart des serveurs LDAP je pense...).
Donc me voici dans une section <Directory>, je configure maintenant Apache pour authentifier les utilisateurs à l'aide de LDAP.
## On donne l'url du serveur LDAP. Syntaxe : ldap://serveur:port/base_dn?attribu_a_verrifier?profondeur_de_recherche?filtre_de_recherche
AuthLDAPURL ldap://localhost/dc=thegreatspirit,dc=net?uid?sub?(objectClass=*)
## On spécifie à Apache que l'attribu qui contient le nom d'utilisateur est "memberUid"
AuthLDAPGroupAttribute memberUid
## Et on spécifie aussi que c'est le uid qui est stocké, au lieu que ce soit le DN complet
AuthLDAPGroupAttributeIsDN off
## Maintenant on lance une fenêtre d'authentification
AuthType basic
## Nom de la fenêtre d'authentification
AuthName "Restrited LDAP-protected area"
## On indique à Apache de regarder dans LDAP pour la liste des utilisateurs
AuthBasicProvider ldap
#On veut un utilisateur qui provient du groupe dont le DN est cn=svnUser,ou=SVN,ou=ACL,ou=Groups,dc=thegreatspirit,dc=net
Require ldap-group cn=svnUser,ou=SVN,ou=ACL,ou=Groups,dc=thegreatspirit,dc=net
## On aurai aussi pu tenter :
## Une liste d'utilisateurs
# Require ldap-user user1 user2 etc
## Une liste de DNs
# Require ldap-dn DN1 DN2 etc
## N'importe quel DN avec certains attribus
# Require ldap-attribute attribut="valueur" attribut="valeur" etc
## Ou si le DN passe à travers ce filtre
# Require ldap-filter (filtre ldap)
Si on avait voulu que n'importe quel utilisateur qui a réussi à faire un bind correct puisse se connecter, il faut d'abord que mod_authz_user soit chargé, et que l'option AuthzLDAPAuthoritative soit à off. Ainsi on peut remplacer le require de la configuration précédente par
AuthzLDAPAuthoritative off
Require valid-user
Bien sûr, les noms d'utilisateurs, DN etc peuvent être entré comme n'importe quel chaine en argument dans un fichier de apache : c'est à dire qu'on peut les mettre comme sans rien, ou si on a besoin de délimiter la chaîne on peut la mettre entre guillemets.
Et ausis, Apache n'a pas besoin de pouvoir voir les mots de passes sur LDAP, puisque quand un nom d'utilisateur sera rentré il tentera un bind avec.
January 14th, 2007
Voici une classe PHP capable d'effectuer un ping sous Windows et sous Linux. Requiert Pear (n'importe quelle version devrait faire l'affaire). (attention: je n'ai pas testé cette classe très largement, il se peut qu'il faille l'adapter à votre système)
Télécharger la classe
January 10th, 2007
J'ai récupéré un afficheur de caisse Citizen C2202, que j'ai programmé pour pouvoir afficher une fortune, lire mes mails et pinger mes serveur. En gros ça sert à rien, mais en tout cas c'était marrant à programmer ^^. Voici donc le code écrit à l'occasion (vous pourrez constater une classe de contrôle du port série), qui ne fonctionne que sous linux (ou peut être certains unix, mais j'ai pas testé).
Télécharger les fichiers
Vous remarquerez que la classe de contrôle de l'afficheur hérite de la classe de contrôle du port série, donc ne comptez pas utiliser l'une sans l'autre. Toutes les fonctions de l'afficheur ne sont pas implémentées (pour la simple raison que j'ai rien compris à certaines), et je ne converti pas non plus le charset vers quelquechose que l'afficheur pourrait comprendre (trop la flemme pour ça).
Et voici la documentation que le constructeur m'a fourni : Citizen C2202-PDUME
January 9th, 2007
PHP:
-
<?php echo "hello world";
?>
Bonjour tout le monde, ceci est mon premier billet sur ce blog... Vous trouverez des informations sur le but de ce blog dans la page pas du tout égocentrique intitulée "moi" (voir le menu au dessus) ^^
Bonne lecture !
January 9th, 2007