Archive for January, 2007

Listing de fichiers

Sait-on jamais, ça pourrai servir... Deux petites fonctions pour lister un répertoire, ou lister un répertoire récursivement

PHP:
  1. function ls($dir, $with_prefix = false) {
  2.     if (substr($dir, -1) !== "/") $dir .= "/";
  3.  
  4.     unset($dirs);   $dirs  = array();
  5.     unset($files)$files = array();
  6.  
  7.     if (@is_readable($dir) and @is_dir($dir)) {
  8.         if ($dh = opendir($dir)) {
  9.             while (($file = readdir($dh)) !== false) {
  10.                 if (@is_readable($dir.$file)) {
  11.                     if (is_dir($dir.$file)) $dirs[] = ($with_prefix) ? $dir.$file : $file;
  12.                     else $files[] = ($with_prefix) ? $dir.$file : $file;
  13.                 }
  14.             }
  15.             closedir($dh);
  16.         }
  17.     }
  18.     else return false;
  19.    
  20.     unset($dirs[0]);
  21.     unset($dirs[1]);
  22.    
  23.     return array($dirs, $files);
  24. }
  25.  
  26. function recursive_ls ($dir, $with_prefix = false) {
  27.     if (substr($dir, -1) !== "/") $dir .= "/";
  28.    
  29.     if (($map_elements = ls ($dir, false)) !== false) {
  30.         unset ($map); $map = array();
  31.        
  32.         if (!empty($map_elements[0])) {
  33.             foreach ($map_elements[0] as $dirname) {
  34.                 $map[($with_prefix) ? $dir.$dirname : $dirname] = recursive_ls($dir.$dirname, $with_prefix);
  35.             }
  36.         }
  37.        
  38.         if ($with_prefix and !empty($map_elements[1])) {
  39.             foreach ($map_elements[1] as $id => $value) {
  40.                 $map_elements[1][$id] = $dir . $value;
  41.             }
  42.         }
  43.        
  44.         return array_merge ($map, array_flip ($map_elements[1]));
  45.     }
  46.    
  47.     return false;
  48. }

Add comment January 27th, 2007

Scrubs - Épisode 6×04 - Mon Dr House

--> Télécharger les sous-titres

1 comment January 25th, 2007

Authentification LDAP avec Apache

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.

2 comments January 14th, 2007

Scrubs - Épisode 6×03 - Mon café

--> Télécharger les sous-titres

Add comment January 14th, 2007

Classe Ping

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

Add comment January 10th, 2007

Afficheur de caisse Citizen C2202

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

2 comments January 9th, 2007

Hello world!

PHP:
  1. <?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 !

Add comment January 9th, 2007


Calendar

January 2007
M T W T F S S
« Dec   Feb »
1234567
891011121314
15161718192021
22232425262728
293031  

Posts by Month

Posts by Category