AS/400 Serveur HTTP ------------------- Il s'agit d'un job dans le sous système QHTTPSVR il est à l'écoute sur le port 80 EN V510, deux serveurs sont disponibles A/ IBM HTTP serveur (Original), disponible depuiis la V3R70 (sa configuration est stockée dans un membre de QUSRSYS/QATMHTTPC) B/ IBM HTTP Serveur (Powered by Apache), disponile depuis la V4R50 (sa configuration est stockée dans un répertoire IFS [/www].) Deux commandes : - CHGHTTPA permet la configuration du nombre de jobs démarrés et des paramètres liés à la langue (NLS) - WRKHTTPCFG permet le paramétrage du serveur HTTP (Original uniquement) par le biais de "directives". |
Rappel des directives reconnues par le serveur WEB en V3R70. ------------------------------------------------------------ pass -autorise une partie de l'arborescence IFS pass /QDLS/DOCUMENTS/* autorise le serveur HTTP à utiliser la branche /QDLS/DOCUMENTS. peut être utilisée sous la forme pass /img/* /images/* autorise alors /img tout en le remplacant par /images map remplace un nom par un autre et continue la lecture des directives. map /image/* /QDLS/DOCUMENTS/IMAGE/* indique que l'URL http://www.as400.com/image/photo.gif doit être traitée http://www.as400.com/QDLS/DOCUMENTS/IMAGE/photo.gif. |
redirect même syntaxe que pass, mais la substitution renvoie sur un autre serveur. fail interdit un ou plusieurs documents ou répertoires : fail /QDLS/DOCUMENTS/IMAGE/MOI.GIF il faut bien voir que le serveur lit vos directives dans l'ordre de saisie ainsi : pass QSYS.LIB/QGPL.LIB/QHTMLSRC.FILE/* pass QSYS.LIB/AF4SRC.LIB/* fail QSYS.LIB/* n'est pas contradictoire, cela interdit l'accès à QSYS.LIB sauf pour le fichier HTMLSRC dans QGPL et la bibliothèque AF4SRC. |
exec autorise le serveur à utiliser des programmes CGI : exec /QSYS.LIB/MACGIBIB.LIB/* welcome définition de la page d'acceuil welcome homepage.html la directive welcome est traitée à chaque fois que l'url indique un nom de répertoire: on cherche une page portant le nom indiqué par welcome. il peut donc y avoir plusieurs directives welcome, elles seront traitées en séquence et ce à chaque répertoire. Alwayswelcome (on!off) affichage forcé de la page d'acceuil (voir diraccess) |
DirAccess Définit la possibilité de lister le contenu d'un répertoire on = oui off = non selective = uniquement s'il y a un document nommé "wwwbrws" On peut compléter en indiquant ce qui doit apparaitre sur la liste DirShowDate On DirShowSize On DirShowBytes On DirShowDescription On DirShowOwner Off DirShowMaxDescrLength 25 DirShowMinLength 15 DirShowMaxLength 25 DirReadme top | Bot | off indique si l'on doit chercher un fichier appellé "README". Si oui, (et qu'il existe) son contenu précede chaque liste de répertoire. |
logformat common | DDS indique si les logs sont faites dans un fichier srteam ou dans un fichier PF. accesslog définition d'un fichier qui historise tous les accès errorlog définition d'un fichier qui historise les erreurs HostName nom définition du nom du serveur DNSlookup on | off indique si le serveur doit faire une recherche DNS inverse afin de recherche le nom du client à partir de son adresse IP. |
La version 4 ammène la notion de protection par mot de passe ==> nouvelles directives et un nouvel objet : *VLDL permettant de stocker une liste d'utilisateurs autorisés ainsi qu'une clé associée (mot de passe) il ne s'agit PAS d'utilisateurs au sens OS/400 mais plutôt d'utilisateurs Internet. dans les directives HTTP nous allons pouvoir décrire une directive "protection" que vous devez assimiler à une règle. ici mesdocuments-sec est le nom de la directive de protection (comme on écrirait un nom de sous programme) puis on associe cette directive à un ou plusieurs répertoires |
Protection mesdocuments-sec { ServerID s44r7480 PasswdFile qgpl/motdepas AuthType Basic Mask All@* Userid webdoc } .../... Protect /mesdocuments/* mesdocuments-sec pass /mesdocuments/* /html/doc/* on peut aussi saisir en ligne : Protect /mesdocuments/* { ServerID s44r7480 PasswFile qgpl/motdepas ... } |
ServerID : nom du serveur dans la fenêtre d'authentification passwdFile : %%SYSTEM%% indique qu'on doit saisir un profil OS/400 un-nom fait référence à un objet *VLDL, il existe deux cdes CRTVLDL et DLTVLDL, plus des APIs. une liste de validation contient une série de noms avec un mot de passe associé, encrypté. AuthType : pour l'instant Basic est la seule valeur admise Mask : à gauche du @, on indique All ou un groupe d'utilisateurs à droite, * ou une série d'adresses IP. |
UserID : indique sous quel profil OS/400 le job va s'exécuter. un nom = nom du profil OS/400 %%SYSTEM%% = le profil par défaut du serveur (QTMHHTTP) %%CLIENT%% = le profil saisie dans la fenêtre d'authentification. .................................................................. : : : V4R20 et suivantes : : : : : la création et la maintenance des listes de validation : : (et donc des "utilisateurs internet") se fait via : : l'administration graphique. [voir plus loin] : :................................................................: |
exemple réel : Protection acluser { PasswdFile %%SYSTEM%% ACLOverride Off Mask ALL@10.3.*.* AuthType BASIC ServerID ACLUSER UserID %%CLIENT%% } Protect /html/ACL/acl_user/* acluser ici il faut saisir un profil système QSECOFR, QPGMR ou un profil "maison" avec le mot de passe associé pour avoir accès au répertoire : /html/ACL/acl_user le profil de référence (au niveau du JOB 400) sera le profil saisi. |
Protection aclvldl { PasswdFile QSYS/ACL ACLOverride Off Mask ALL@10.3.*.* AuthType BASIC ServerID ACLVLDL UserID QUSER } Protect /html/ACL/acl_vldl/* aclvldl on a créé une liste de validation par CRTVLDL VLDL(QSYS/ACL) puis à l'aide de l'API QSYADVLE on a ajouté - clé: user1, donnée: pwd1 - clé: user2, donnée: pwd2 ici il faut saisir user1 ou user2 avec le mot de passe associé pour avoir accès au répertoire : /html/ACL/acl_vldl le profil de référence sera QUSER (attention il faut le droit *USE sur QUSER pour pouvoir démarrer le serveur HTTP) |
Exemple avec un groupe d'utilisateurs : il faut créer un fichier des groupes (ASCII dans IFS) .............................. : grp1 : user1,user2,user3 : : grp2 : user4,user5,user6 : :............................: puis on associe par : Protection mesdocuments-sec { ServerID s44r7480 PasswdFile qgpl/motdepas GroupFile /web/grp/ficgroupe.GRP AuthType Basic Userid qpgmr } .../... Protect /mesdocuments/* mesdocuments-sec pass /mesdocuments/* /html/doc/* |
ensuite, dans chaque répertoire à protéger plus finement, il faut créer un fichier nommé www_acl : il contient la liste des utilisateurs ou des groupes autorisés à ce répertoire : * : GET,POST : grp1 ^ !--indique l'adresse IP d'origine (* = pas de restriction) GET, POST précise la méthode autorisée (vous pouvez indiquer les deux) grp1 liste les utilisateurs OU les groupes autorisés à ce répertoire si l'authentification d'origine à été réalisée avec un des profils de grp1 la page est affichée, sinon l'utilisateur est invité à se ressigner. |
les versions suivantes ammènent la notion d'instances on peut "lancer" plusieurs versions du serveur WEB . une instance c'est un membre dans le fichier QATMHINSTC portant le nom du serveur WEB et indiquant les paramètres, particulièrement les coordonnées du fichier de config : -r /QSYS.LIB/QUSRSYS.LIB/QATMHTTPC.FILE/VOLUBIS.MBR une instance doit être unique sur le couple adresse-ip/port plusieurs instances peuvent avoir le même fichier de config. le fichier de config se gère par WRKHTTPCFG CFG(VOLUBIS) là aussi le plus simple est d'utiliser l'administration du serveur WEB |
pour lancer plusieurs serveurs, il faut le faire : 1/ sur plusieurs n° de port différents [différentes instances] port 81 2/ sur plusieurs adresses IP (multihoming) [différentes instances] - soit par hostname et bindspecific hostname 192.168.1.1, puis bindspecific on qui indique qu'on ne sert que cette adresse - ou avec welcome [même instance] welcome home.html 192.168.1.1 welcome index.htm 212.155.67.210 |
3/ sur plusieurs noms différents (virtual host, depuis V4R40) [même instance] - les directives supportant cette notion sont map map /* /dir1/* www.volubis.fr et welcome welcome index.htm www.volubis.fr 4/ vous pouvez depuis la V4R40, héberger facilement des pages, par : userdir directory si vous recevez comme URL http://www.societe.fr/~toto et que le profil toto existe, le serveur va rechercher le répertoire par défaut de cet utilisateur (paramètre homedir), ajouter le répertoire indiqué par userdir et retourner la page "welcome". soit le profil "client" ayant HOMEDIR('/home/client') et la directive userdir WWW ==> la page d'acceuil sera recherchée dans /home/client/WWW |
la version 4.30 apporte aussi la possibilité d'associer des icones aux types de fichier lors des listes de répertoire (diraccess) # >>> V4R30 : Icones associées aux fichiers # définition (et autorisation) du répertorie # pass /QIBM/HTTPSVR/Icons/* /QIBM/ProdData/HTTP/Protect/ > Iconpath /QIBM/HTTPSVR/Icons/ # 1/ associations # type de fichier <-> icone # AddIcon text.gif text text/* AddIcon html.gif html text/html AddIcon binary.gif bin application/* AddIcon compress.giz z application/x-compress AddIcon compress.giz gzip application/x-gzip AddIcon image.gif img image/* AddIcon movie.gif vid video/* AddIcon sound.gif au audio/* |
# 2/ définition des types de fichiers (MIME) # fonction de l'extension # AddType .java text/plain binary 1.0 AddType .html text/html 8bit 1.0 AddType .htm text/html 8bit 1.0 AddType .gif image/gif binary vous pouvez préciser les codes page (CCSID) DefaultNetCcsid 00850 : code page des données venant du réseau DefaultFsCcsid 00297 : code page par défaut des fichiers (html et texte) ET ENFIN, l'administration du serveur à l'aide d'un explorateur vous devez démarrer la fonction administration par : STRTCPSVR *HTTP HTTPSVR(*ADMIN) |
cela démarre en fait un instance sur le port 2001. vous pouvez donc accèder à ce serveur par http://adresse-ip:2001 le serveur vous demande alors de vous signer puis vous avez le choix entre : - IBM http server for AS/400 - gestionnaire de certificats numériques gestionnaire de certificats numérique représente le produit "cryptographic access provider" (5769ss1 option 35) il faut choisir la première option. |
la page html est affichée, il s'agit d' un système à base de frames (cadres) et vous devez choisir dans le cadre de gauche "configuration et administration" pour gagner du temps vous pouvez mémoriser l'url suivante : http://votre-adresse:2001/QIBM/HTTPSVR/Admin/qzhamain.ndm/mainpage nous voici enfin sur la page d'administration: - le cadre de gauche constitue le menu de navigation - le cadre de droite, la page de travail. |