Serveur
Toutes les applications IMu nécessitent qu’un serveur IMu soit en cours d’exécution dans l’environnement back-end EMu approprié (il peut y avoir plusieurs serveurs IMu en cours d’exécution sur une machine, chacun pour un environnement web différent). Le serveur IMu (appelé imuserver) est exécuté dans un environnement back-end EMu en tant que chargement EMu standard.
Le rôle d’imuserver est d’écouter les connexions des programmes API IMu, d’accepter les requêtes et d’y répondre. Le serveur s’exécute soit sous la forme d’un processus unique, soit en démarrant plusieurs processus enfants.
Le serveur IMu nécessite la version 5.8.8 ou supérieure de perl pour fonctionner.
En plus des paquets de base standard, il nécessite également l’installation de paquets supplémentaires.
- PerlMagick
PerlMagick fait partie de la suite logicielle ImageMagick pour la manipulation d’images bitmap. Il est utilisé par le serveur IMu pour générer des vignettes et d’autres versions dérivées lorsqu’une image est téléchargée sur le serveur. Il est également utilisé pour redimensionner et reformater les images à la volée lorsqu’elles sont renvoyées à un client.
Note: Le serveur IMu peut fonctionner sans l’installation de PerlMagick mais il ne sera pas en mesure d’exécuter ces fonctions.
-
ExifTool est une bibliothèque Perl indépendante de la plate-forme permettant de lire, d’écrire et d’éditer des métadonnées dans une grande variété de fichiers. Il est utilisé par le serveur IMu pour extraire les métadonnées d’une ressource multimédia lorsqu’elle est téléchargée sur le serveur.
Note: Le serveur IMu peut fonctionner sans ExifTool installé mais il ne pourra pas extraire les métadonnées.
-
HTML::Parser reconnaît le balisage et le sépare du texte brut dans les documents HTML. Il est utilisé par le serveur IMu pour traiter le HTML du module Narrations lorsqu’il est renvoyé au client. En particulier, il est utilisé pour reformater le HTML à la demande du client. Le reformatage peut inclure :
- suppression de toutes les balises HTML
- suppression des balises de formatage superflues
- normalisation du HTML afin qu’il puisse être analysé par un analyseur XHTML
Note: HTML::Parser est souvent disponible sous forme de paquet du système d’exploitation. Sinon, il peut être installé à l’aide de CPAN.
Note: Le serveur IMu peut fonctionner sans HTML::Parser installé mais il ne pourra pas reformater le HTML.
- PDF::API2
PDF::API2 facilite la création et la modification de fichiers PDF. Il est utilisé par le serveur IMu pour générer des rapports.
Note: PDF::API2 est souvent disponible sous forme de paquet du système d’exploitation. Sinon, il peut être installé à l’aide de CPAN.
Note: Le serveur IMu peut fonctionner sans PDF::API2 installé mais il ne sera pas en mesure de générer des rapports PDF.
Avant de pouvoir démarrer le serveur IMu, il doit être configuré. Le serveur IMu est configuré en éditant le fichier etc/imuserver.conf dans l’environnement EMu. Chaque environnement contiendra un fichier etc/imuserver.conf.sample qui peut être copié et modifié.
Les paramètres de configuration suivants devront presque certainement être définis :
Il s’agit du numéro de port qu’imuserver utilisera pour écouter les connexions initiales à partir de l’API IMu.
Par convention, sur une machine de développement, ce nombre est fixé à 20000 de plus que le numéro de port EMu standard du client.
Par exemple, le client Art Demo utilise un numéro de port 20136. Cela signifie que la valeur de main-port pour l’imuserver Art Demo serait généralement de 40136.
Si cette valeur n’est pas définie, sa valeur par défaut sera 40000.
Les paramètres suivants sont moins susceptibles de nécessiter des modifications.
Il s’agit du numéro d’un port secondaire sur lequel imuserver écoutera également les connexions. La différence entre ce paramètre et main-port devient significative lorsque imuserver exécute plusieurs processus enfants pour traiter les requêtes. Une connexion sur main-port peut être gérée par n’importe lequel des processus (ce qui est généralement recherché), tandis qu’une connexion sur admin-port est garantie d’être acceptée uniquement par le processus maître qui contrôle tous les autres processus. Cela le rend utile pour administrer l’imuserver lui-même, d’où son nom.
Si cette valeur n’est pas définie, sa valeur par défaut est de 10000 de plus que la valeur de main-port.
Ce paramètre est utilisé pour contrôler si le serveur autorise les mises à jour des modules EMu via l’API IMu. Plus précisément, ce paramètre contrôle si les appels aux méthodes suivantes de la classe d’API Module :
insertupdateremove
sont autorisés.
Les valeurs acceptables sont :
-
noLe serveur empêchera toute mise à jour. Tout appel à l’une des trois méthodes échouera. Un
IMuExceptionavec unidde ModulUpdatesNotAllowed sera levé. -
yesLe serveur n’empêchera aucune de ces méthodes d’être appelées.
-
authenticatedLe serveur empêchera les mises à jour non authentifiées.
Par défaut, un imuserver s’exécute en mode non authentifié, acceptant les connexions API sans nécessiter d’authentification. Cependant, un client peut appeler la méthode
loginde la classe d’APISessionpour authentifier le client en tant qu’utilisateur particulier.Ce paramètre spécifie que le serveur rejettera les appels à cette méthode sans que la méthode
loginait été appelée.
Si cette valeur n’est pas définie, la valeur par défaut est authenticated.
Lorsque les applications clientes IMu créent une nouvelle connexion au serveur IMu, le processus serveur alloue un nouveau « contexte » de connexion. Le contexte maintient les informations sur la connexion, y compris le texserver qu’il utilise et une liste de tous ses handlers actifs. Le contexte est généralement détruit (y compris tous ses gestionnaires) et le texserver associé est arrêté lorsque l’application cliente met fin à la connexion.
Toutefois, avec les applications sans état (telles que les pages web), l’API client peut ne jamais avoir la possibilité de mettre fin à la connexion. Cela peut avoir pour conséquence que les contextes de connexion sont maintenus par le serveur alors qu’ils ne sont pas vraiment nécessaires. Pour cette raison, le serveur détruira automatiquement les contextes de connexion qui n’ont pas été utilisés depuis un certain temps.
Le paramètre context-timeout spécifie la durée pendant laquelle un contexte de connexion peut rester inutilisé avant d’être automatiquement supprimé par le serveur. La valeur est spécifiée sous la forme d’un nombre suivi d’une lettre :
- h (pour les heures)
- d (pour les jours)
- w (pour les semaines)
Si cette valeur n’est pas définie, la valeur par défaut est de 3h (trois heures).
Ce paramètre est utilisé par imuserver pour déterminer comment se connecter à un texserver fonctionnant dans l’environnement back-end EMu approprié. La valeur peut être :
- Un numéro de port ou un nom de service
- Un nom d’hôte et un numéro de port / nom de service (comme hôte :port)
- Une chaîne vide
Si cette valeur n’est pas définie, le numéro de port par défaut sera inférieur de 20000 à la valeur utilisée pour main-port.
Si la valeur contient un numéro de port ou un nom de service, imuserver l’utilise pour créer une connexion socket à un processus texserver, de la même manière que le client EMu crée sa connexion. Si aucun nom d’hôte n’est fourni avec le numéro de port ou le nom de service, la connexion sera établie avec la machine locale (127.0.0.1).
Si la valeur est vide (c’est-à-dire définie sur une chaîne vide), le serveur IMu utilisera un tube pour se connecter à texserver, plutôt qu’un socket.
Si une connexion socket est utilisée, imuserver essaiera de se connecter en tant qu’utilisateur spécifié dans l’entrée user-name. Si aucun nom d’utilisateur n’est spécifié, imuserver essaiera de se connecter en tant qu’utilisateur exécutant l’imuserver (presque certainement l’utilisateur emu).
Important
Sachez que pour des raisons de sécurité imuserver ne stocke pas le mot de passe de l’utilisateur. Cela signifie qu’il doit être possible d’authentifier l’utilisateur passé par imuserver à texserver sans utiliser de mot de passe. Ceci est réalisé en activant l’authentification rhosts sur la machine serveur.
Comment gérer les données UTF-8 « corrompues » qui ont été stockées dans EMu.
Un octet dont le bit supérieur est défini (c’est-à-dire dans la plage 128 - 255) peut ne pas faire partie d’un caractère UTF-8 multi-octets valide. Ce paramètre contrôle la manière de gérer un octet invalide avant qu’il ne soit renvoyé du serveur à un client IMu.
Les valeurs acceptables sont :
-
replaceTout octet invalide est remplacé par le caractère Unicode standard « Replacement » (un losange noir avec un point d’interrogation blanc à l’intérieur).
-
iso-8859-1
Tout octet invalide est interprété comme un caractère ISO-8859-1 valide et converti en son équivalent UTF-8.
Ce paramètre est complètement ignoré, sauf si le paramètre langcode d’EMu est « utf-8 ».
Si cette valeur n’est pas définie, la valeur par défaut est replace.
Note: Ce paramètre est en fait une solution de contournement pour un problème qui permet le chargement de caractères UTF-8 invalides dans EMu. Vous devez toujours utiliser l’option « replace », sauf si vous avez un cas spécifique où des données ISO-8859-1 ont été chargées de manière incorrecte dans une instance UTF-8 d’EMu.
Lorsque les applications clientes IMu utilisent des fonctionnalités du serveur IMu, le serveur alloue des objets côté serveur, appelés handlers. Ces handlers sont maintenus par le serveur jusqu’à ce que le client demande au serveur de les détruire.
Cependant, avec les applications sans état (telles que les pages web), l’API client peut ne jamais avoir l’occasion de demander au serveur de détruire les handlers. Cela peut avoir pour résultat que des handlers sont maintenus par le serveur alors qu’ils ne sont pas vraiment nécessaires. Cela peut imposer une surcharge de mémoire importante à la machine serveur. Pour cette raison, le serveur détruira automatiquement les handlers qui n’ont pas été utilisés depuis un certain temps.
Le paramètre handler-timeout spécifie la durée pendant laquelle un handler peut rester inutilisé avant d’être automatiquement supprimé par le serveur. La valeur est spécifiée sous la forme d’un nombre suivi d’une lettre :
- h (pour les heures)
- d (pour les jours)
- w (pour les semaines)
Les handlers sont décrits en détail dans Comprendre le serveur Axiell IMu.
Si cette valeur n’est pas définie, la valeur par défaut est de 1h (une heure).
language
Il s’agit du code à deux lettres de la langue à utiliser si aucune n’est fournie par l’API. Si cette valeur n’est pas définie, la valeur par défaut est en.
Cette valeur est utilisée pour contrôler quelles entrées de Liste de consultation imuserver peut récupérer lors de la recherche eluts. La valeur peut être :
- internet
Ne fait correspondre que les entrées de Liste de consultation avec la colonne
AdmPublishWebNoPasswordréglée sur Oui. - intranet
Ne fait correspondre que les entrées de Liste de consultation dont la colonne
AdmPublishWebPasswordest définie sur Oui. - default
Utilisez le même paramètre que le paramètre de configuration de la visibilité.
- all
Correspond à toutes les entrées de Liste de consultation.
Si cette valeur n’est pas définie, la valeur par défaut est all.
C’est le nombre de processus que imuserver va créer pour écouter les connexions. Dans les environnements où il peut y avoir un grand nombre de requêtes, il est utile d’avoir plusieurs processus à l’écoute des connexions et traitant les requêtes simultanément.
Chaque processus démarré se connecte à un texserver. Cela signifie que chaque processus utilisera un emplacement de licence EMu.
Il s’agit du numéro de port auquel chaque processus serveur démarre lorsqu’il tente d’allouer un port unique pour gérer les reconnexions des clients.
Par exemple, supposons que process-count soit défini sur 3 et que reconnect-port soit défini sur 50000. Au démarrage d’imuserver, trois processus sont créés. Chaque processus tentera indépendamment d’allouer un port unique pour écouter les reconnexions. Les trois processus tenteront d’abord d’allouer le port 50000. L’un réussira et les deux autres échoueront. Les deux processus infructueux passeront ensuite à la tentative d’allocation du port 50001. L’un réussira et l’autre échouera. Le processus qui échoue attribuera alors le port 50002.
La reconnexion à un serveur est expliquée en détail dans la section Maintien de l’état de la documentation de l’API :
Si cette valeur n’est pas définie, sa valeur par défaut est supérieure de 5000 à celle de main-port.
Il s’agit du nombre de processus texserver à exécuter pour l’accès par défaut. Les processus texserver sont exécutés à l’aide de canaux nommés.
Si cette valeur n’est pas définie, la valeur par défaut est process-count.
Il s’agit du chemin d’accès à un répertoire où imuserver crée des fichiers temporaires.
Si la valeur n’est pas définie, le répertoire utilisé par défaut est le même que celui utilisé par texserver pour ses fichiers temporaires.
Il s’agit du nom d’un fichier utilisé pour enregistrer les informations de suivi côté serveur. Une valeur de STDOUT fait que toutes les informations sont écrites dans la sortie standard de l’imuserver. C’est normalement ce qui est souhaité si imuserver est démarré comme un emuload.
Si la valeur n’est pas définie, la valeur par défaut est STDOUT.
Ce nombre indique la quantité d’informations de suivi côté serveur qui sont générées. Un nombre plus élevé générera plus d’informations. Une valeur de 1 générera un résultat minimal et une valeur de 0 entraînera l’absence totale d’informations.
Si la valeur n’est pas définie, la valeur par défaut est 1.
Note: Il n’y a pas beaucoup de niveaux différents. La plus grande valeur qui ait actuellement du sens est 4, et l’utilisation de cette valeur génère une grande quantité d’informations.
Spécifie le format du texte ajouté au début de chaque ligne d’informations de traçage. Certaines lettres préfixées par un signe % ont une signification particulière et seront remplacées dans les informations de trace par d’autres valeurs comme suit :
%y: L’année en cours (AAAA).%m: Le mois en cours (MM).%d: Le jour du mois en cours (JJ).%D: Un raccourci pour « %y- %m- %d ».%H: L’heure actuelle (hh).%M: La minute actuelle (mm).%S: La seconde actuelle (ss).%T: Un raccourci pour « %H :%M :%S ».%p: Le PID (Process Identifier) de l’imuserver. Par exemple,16447.%F: Le fichier où les informations de trace ont été générées. Par exemple,/home/ke/emu/artdemo/perl5/KE/Server/Pool.pm.%L: La ligne du fichier où les informations de trace ont été générées. Par exemple,29.%f: La fonction entièrement qualifiée dans laquelle les informations de trace ont été générées. Par exemple,KE::Server::Pool::new.%g: La fonction partiellement qualifiée dans laquelle les informations de trace ont été générées. Par exemple,Pool::new.
Ainsi, par exemple, une valeur trace-prefix de
%D %T - %F[%L] - %g:
produira des messages de trace similaires à :
2013-03-12 15:07:13 - /home/ke/emu/artdemo/perl5/KE/Server/Pool.pm[29] - Pool::new: creating server pool dir /tmp/texpress/imu/40136
Si aucune valeur n’est spécifiée, la valeur par défaut de trace-prefix est :
%D %T: %p:
Il s’agit du nom d’un utilisateur que imuserver passera à texserver pour authentification (voir data-source).
Cela ne s’applique que si imuserver utilise une connexion socket à texserver. Sachez que cet utilisateur doit pouvoir être authentifié par texserver sans avoir besoin d’un mot de passe.
Cette valeur est utilisée pour contrôler les enregistrements qu’imuserver peut récupérer lors d’une recherche dans les tables EMu. La valeur peut être :
- internet
Ne fait correspondre que les enregistrements dont la colonne AdmPublishWebNoPassword est définie sur
Yes. - intranet
Ne fait correspondre que les enregistrements dont la colonne AdmPublishWebPassword est définie sur
Yes. - all
Correspond à n’importe quel enregistrement.
Si cette valeur n’est pas définie, la valeur par défaut est internet.
Cette valeur est utilisée pour contrôler quels enregistrements imuserver peut récupérer lors de la recherche de tables EMu après que l’utilisateur a été authentifié (connecté).
La valeur peut être l’une de celles décrites dans la section
visibility.
Note: La sécurité au niveau de l’enregistrement affecte toujours les enregistrements qui peuvent être trouvés par l’utilisateur. Ces paramètres (internet et intranet) doivent être considérés comme des contraintes supplémentaires venant s’ajouter à celles de la sécurité au niveau de l’enregistrement.
Si cette valeur n’est pas définie, la valeur par défaut est all.
Assurez-vous que les images renvoyées par le serveur comportent un filigrane. Il peut y avoir plus d’une entrée de filigrane.
Le format d’une entrée de filigrane est :
<type>:<type-specific paramètres>
Les valeurs suivantes pour <type> sont prises en charge :
-
imageUne entrée image entraîne la superposition de l’image principale avec une autre image.
Note: C’est actuellement la seule forme de filigrane prise en charge.
Le format d’une entrée image est le suivant :
image:<file>:<size>:<position>:<opacity>:<selector>- <file>
Le chemin d’accès à un fichier image à superposer à l’original.
Un chemin relatif sera relatif au répertoire actuel de l’imuserver. Il peut s’agir d’un répertoire tel que
~/loads/imusi le serveur est démarré paremuload.$EMUHOME,$EMUPATHet$HOMEseront étendus aux valeurs correspondantes dans l’environnement du serveur.~sera développé de la même manière que$HOME.~emusera étendu au répertoire personnel de l’utilisateur emu. - <size>
La taille à laquelle le filigrane doit être défini avant d’être appliqué à l’image principale. Cela peut être :
- une largeur et une hauteur fixes (par exemple 100x100)
- une fraction de la taille de l’image principale (par exemple 0,025)
- un pourcentage de la taille de l’image principale (par exemple 2,5 %)
Si aucun <size> n’est donné, l’image du filigrane n’est pas redimensionnée avant d’être appliquée à l’image principale.
- <position>
Où le filigrane doit être positionné lorsqu’il est appliqué à l’image principale. Les valeurs autorisées sont les abréviations des points cardinaux :
cLe centre de l’image principalenLe haut de l’image (centré horizontalement)neEn haut à droite de l’imageeLa droite de l’image (centrée verticalement)seEn bas à droite de l’imagesLe bas de l’image (centré horizontalement)swEn bas à gauche de l’imagewLa gauche de l’image (centrée verticalement)nwEn haut à gauche de l’image
Si aucun <position> n’est donné, sa valeur par défaut est
c. - <opacity>
Le degré d’opacité de l’image du filigrane. La valeur peut être :
- une fraction comprise entre 0 (complètement transparent) et 1 (complètement opaque) (par exemple 0,2)
- un pourcentage (p. ex., 20 %)
Si aucun <opacity> n’est donné, sa valeur par défaut est de 20 %.
- <selector>
La taille de l’image servie à laquelle cette entrée doit être appliquée. Un <selector> est une plage de nombres et une unité :
<number>-<number><unit>
<number> est une valeur numérique et peut être suivie de l’un des éléments suivants :
kkimmiggi
<unit> doit être :
pxpour les pixelsbpour les octets
Par exemple, 40k-3mpx sélectionne les images qui ont entre 40 000 et 3 000 000 de pixels.
Si aucune plage inférieure n’est spécifiée, le sélecteur correspond à toutes les images jusqu’à la valeur de la plage supérieure (incluse).
Par exemple, -20kib sélectionne les images dont la taille du fichier est inférieure ou égale à 20 480 octets.
Si aucune plage supérieure n’est spécifiée, le sélecteur correspond à toutes les images égales ou supérieures à la valeur de la plage inférieure.
Par exemple, 40mi-px sélectionne les images qui ont 41 943 040 pixels ou plus.
Si aucun <unit> n’est donné, la valeur par défaut est
px.Si aucun <selector> n’est donné, la règle de filigrane correspond à toutes les images.
- <file>
S’il y a plus d’une entrée de filigrane, l’image à servir est comparée à chacun des sélecteurs à tour de rôle. Les règles du premier sélecteur correspondant sont appliquées à l’image.
S’il n’y a pas de correspondance, l’image est servie sans filigrane.
Exemples :
- image:~/etc/images/watermark.jpg:3.5%:ne:0.1:3m-px
Superposez l’image située dans
~/etc/images/watermark.jpg, en la redimensionnant de manière à ce qu’elle ne couvre pas plus de 3,5 % de l’image. Placez le filigrane en haut à droite de l’image principale et faites en sorte que son opacité soit de 10 %.Cette règle n’est appliquée que si l’image contient 3 millions de pixels ou plus.
image:/tmp/wm.png:100x100:sw:80%:40k-400kbSuperposez l’image située dans
/tmp/wm.png, en la redimensionnant à 100 × 100 pixels avant de la superposer. Placez le filigrane en bas à gauche de l’image principale et faites en sorte que son opacité soit de 80 %.Cette règle n’est appliquée que si la taille du fichier image principal est comprise entre 40 000 et 400 000 octets.
Si aucune valeur watermarking n’est donnée, aucun filigrane n’est appliqué.

