# CUPS - Manuel de l'administrateur CUPS

CUPS-SAM-1.1.14
Easy Software Products
Copyright 1997-2003, All Rights Reserved

# Table des matières

Préface

- Aperçu du système
- Aperçu du document
- Conventions d'écriture
- Abréviations
- Autres références

1 - Aperçu du système d'impression

- Le problème d'impression
- La technologie
- Travaux d'impression
- Classes d'imprimantes
- Filtres
- Programmes d'arrière-plan (Backends)
- Pilotes d'imprimantes
- Réseau

2 - Construire et installer CUPS

- Installer à partir d'une distribution du code source
  - Conditions nécessaires
  - Compiler CUPS
  - Installer le logiciel
  - Exécuter le logiciel
- Installer une distribution binaire du logiciel
  - Installer une distribution portable
  - Installer une distribution de type RPM
  - Installer une distribution de type DEBIAN

3 - Administration les imprimantes

- Les bases
- Ajouter votre première imprimante
  - Ajouter votre première imprimante depuis la ligne de commande
  - Ajouter votre première imprimante depuis l'interface "web"
- Administrer les imprimantes depuis la ligne de commande
  - Ajouter et modifier des imprimantes
  - Supprimer des imprimantes
  - Choisir l'imprimante implicite
  - Démarrer et arrêter des imprimantes
  - Accepter et rejeter les travaux d'impression
- Administrer les imprimantes depuis l'interface "web"

4 - Classes d'imprimantes

- Les bases
- Administrer les classes d'imprimantes depuis la ligne de commande
- Administrer les classes d'imprimante depuis l'interface "web"
- Classes implicites

5 - Configuration côté client

- Les bases
  - Configuration manuelle des files d'impression
  - Choix d'un serveur unique pour l'impression
  - Configuration automatique des files d'impression
  - Choix de plusieurs serveurs pour l'impression

6 - Administration du système d'impression

- Les bases
- Redémarrer le serveur CUPS
- Changer la configuration du serveur
- Directives de configuration du serveur
  - AccessLog
  - Allow
  - AuthClass
  - AuthGroupName
  - AuthType
  - AutoPurgeJobs
  - BrowseAddress
  - BrowseAllow
  - BrowseDeny
  - BrowseOrder
  - BrowseInterval
  - BrowsePoll
  - BrowsePort
  - BrowseProtocols
  - BrowseRelay
  - BrowseShortNames
  - BrowseTimeout
  - Browsing
  - Classification
  - ClassifyOverride
  - DataDir
  - DefaultCharset
  - DefaultLanguage
  - Deny
  - DocumentRoot
  - Encryption
  - ErrorLog
  - FilterLimit
  - FontPath
  - Group
  - HideImplicitMembers
  - HostNameLookups
  - ImplicitClasses
  - ImplicitAnyClasses
  - Include
  - KeepAlive
  - KeepAliveTimeout
  - Limit
  - LimitExcept
  - LimitRequestBody
  - Listen
  - Location
  - LogLevel
  - MaxClients
  - MaxJobs
  - MaxJobsPerPrinter
  - MaxJobsPerUser
  - MaxLogSize
  - MaxRequestSize
  - Order
  - PageLog
  - Port
  - PreserveJobHistory
  - PreserveJobFiles
  - Printcap
  - PrintcapFormat
  - PrintcapGUI
  - RemoteRoot
  - RequestRoot
  - Require
  - RIPCache
  - RunAsUser
  - Satisfy
  - ServerAdmin
  - ServerBin
  - ServerCertificate
  - ServerKey
  - ServerName
  - ServerRoot
  - SSLListen
  - SSLPort
  - SystemGroup
  - TempDir
  - Timeout
  - User
- Sécurité du système d'impression
  - Authentification basée sur les certificats
  - Utilisation de l'authentification "Basic"
  - Utilisation de l'authentification "Digest"
  - Authentifications "System" et "Group"
- Suivi/facturation de travaux et d'imprimantes
  - Le fichier access_log
  - Le fichier error_log
  - Le fichier page_log
- Filtrage et détermination des types de fichiers
  - Le fichier mime.types
  - Le fichier mime.convs
  - Ajouter des filtres et des types de fichiers
  - Pilotes d'imprimantes et fichiers PPD
  - Ecrire vos propres filtres ou pilotes d'imprimantes

7 - Imprimer depuis et vers d'autres systèmes

- Les bases
- Imprimer depuis des clients LPD
- Imprimer vers des serveurs LPD
- Imprimer depuis des client Mac OS
  - Columbia Appletalk Package (CAP)
  - XINET KA/Spool
  - NetATalk
- Imprimer vers des serveurs d'impression Mac OS
- Imprimer depuis des clients Windows
  - Exporter les pilotes d'imprimantes
- Imprimer vers des serveurs d'impression Windows

A - Licence d'utilisation du logiciel

- Common UNIX Printing System License Agreement
  - Introduction
  - Trademarks
  - Binary Distribution Rights
  - Support
- GNU GENERAL PUBLIC LICENSE
  - Preamble
- GNU LIBRARY GENERAL PUBLIC LICENSE
  - Preamble

B - Réglages réseau courants

- Configurer une interface réseau
  - Configuration de l'adresse IP utilisant ARP
  - Configuration de l'adresse IP utilisant RARP
  - Configuration de l'adresse IP utilisant BOOTP
- Vérifier la connexion de l'imprimante
- Réglages d'interfaces réseau et serveur d'impression courants
- Configuration de serveurs d'impression Axis
- Configuration de serveurs d'impression Linksys

C - Pilotes d'imprimantes

- Pilotes d'imprimantes
- EPSON 9-pin Dot Matrix
- EPSON 24-pin Dot Matrix
- EPSON Stylus Color
- EPSON Stylus Photo
- HP DeskJet
- HP LaserJet

D - Liste des fichiers
E - Résoudre les problèmes courants

- Mes applications ne voient pas les imprimantes disponibles
- CUPS ne reconnaît pas mon nom d'utilisateur et mon mot de passe!
- Je ne peux pas effectuer de tâches d'administration depuis un poste distant!
- Je ne peux pas effectuer de tâches d'administration depuis mon navigateur "web"!
- Messages "Connection Refused"
- Message "Write Error"

# Préface

Ce manuel de l'administrateur fournit les informations d'administration pour le système d'impression CUPSTM (Common UNIX Printing SystemTM) version 1.1.14.

Note du traducteur : Amies lectrices, amis lecteurs, j'ai fait le choix de ne pas traduire l'expression anglaise "default" par la version française habituellent utilisée "par défaut" que l'on doit, entre autres, à la documentation d'un célèbre système d'exploitation "ouvert à tous vents".
En effet, l'expression "par défaut" est normalement utilisée en mathématiques (arrondi "par défaut" ou "par excès", personnellement je cherche encore mon "imprimante par excès" !) mais elle est abusivement employée en informatique pour signifier "donnée/comportement qui s'applique si l'on n'en précise pas explicitement la valeur/nature/teneur".
Or la langue française possède justement un mot pout exprimer ce concept : "implicite" (Larousse 1998 : "Qui est contenu dans une proposition sans être exprimé en termes précis formels; qui est la conséquence nécessaire."). Dans la mesure du possible, j'utiliserai cet adjectif sauf dans les cas où son emploi n'est pas suffisamment explicite (sic !). Je lui préfèrerai alors l'expression "... de base ..." ou l'adjectif "standard".
Ce choix est totalement personnel et le fait que j'ai fait l'effort (non négligeable) de traduire ces lignes pour vos yeux délicats suffit à le justifier! Si, par malheur, ma prose vous est insupportable, je ne vous empêche aucunement de vous reporter à la version originale où vous retrouverez "default" entouré de tout le reste... en anglais, bien sûr. Enfin, si vous avez une meilleure traduction, je suis preneur !
Malgré les très nombreuses relectures et corrections, certaines fautes de frappe, d'orthographe ou de grammaire ont pu échapper à ma vigilance (ou à celles de mes relecteurs/correcteurs). Merci de me les signaler afin de contribuer à l'amélioration constante de la qualité du présent manuel.
Bonne lecture !

## Aperçu du système

CUPS fournit une couche d'impression portable pour les systèmes d'exploitation de type UNIX®. Il a été développé par Easy Software Products pour promouvoir une solution d'impression standard pour tous les vendeurs et utilisateurs d'UNIX. CUPS fournit des interfaces en ligne de commande de type System V et Berkeley.

CUPS utilise le protocol IPP (Internet Printing Protocol) comme base de l'administration des travaux et files d'impression. Les protocoles LPD ("Line Printer Daemon"), SMB ("Server Message Block"), et AppSocket (JetDirect) sont également pris en charge avec des fontionnalités réduites. CUPS ajoute l'exploration réseau des imprimantes ("network printer browsing") et des options d'impression basées sur PPD ("PostScript Printer Definition") pour prendre en charge l'impression "dans le monde réel" sous UNIX.

CUPS inclut également une version adaptée de GNU/Ghostscript (actuellement basée sur la version 5.50) et un module de rendu (RIP - Raster Image Processor) pour fichier image qui sont utilisés pour prendre en charge les imprimantes non-PostScript. Des pilotes d'exemple (incluant ces filtres) pour imprimantes HP et EPSON sont également inclus.

## Aperçu du document

Ce manuel de l'administrateur est organisé de la manière suivante:

- 1 - Aperçu du système d'impression
- 2 - Construire et installer CUPS
- 3 - Administration des imprimantes
- 4 - Classes d'imprimantes
- 5 - Configuration côté client
- 6 - Administration du système d'impression
- 7 - Imprimer depuis et vers d'autres système
- A - Licence d'utilisation du logiciel (NdT : en anglais)
- B - Réglages réseau courants
- C - Pilotes d'imprimantes
- D - Liste des fichiers
- E - Résoudre les problèmes courants

## Conventions d'écriture

## Abréviations

Les abréviations suivantes sont utilisées au cours de ce manuel:

ko
  Kilo-octets, ou 1024 octets
Mo
  Méga-octets, ou 1048576 octets
Go
  Giga-octets, ou 1073741824 octets

## Autres références

CUPS - Manuel du programmeur (en anglais)
  Un guide du programmeur pour interagir avec CUPS ou y ajouter des extensions.
CUPS - Manuel de l'utilisateur
  Un guide d'utilisation pour l'utilisateur final du logiciel CUPS.

# 1 - Aperçu du système d'impression

Ce chapitre fournit un aperçu de la manière dont CUPS fonctionne.

## Le problème d'impression

Depuis des années le problème d'impression a empoisonné le monde UNIX. Contrairement à Microsoft® Windows® ou Mac OS, UNIX n'a pas d'interface standard ou de système en place pour prendre en charge les imprimantes. Parmi les solutions actuellement disponibles, les systèmes Berkeley et System V sont prédominants.

Ces systèmes d'impressions prennent en charge les imprimantes de type matriciel texte ou les imprimantes PostScript (texte et graphique), et avec quelques ajustements il peuvent prendre en charge un grand nombre d'imprimantes et de formats de fichiers. Cependant, puisque chaque version de système d'exploitation UNIX utilise un système d'impression différent de celui de son voisin, il est extrêmement difficile de développer des pilotes d'imprimantes pour une vaste gamme d'imprimantes et de systèmes d'exploitation. Ceci, combiné au faible nombre de clients pour chaque variante d'UNIX, a poussé les fabricants d'imprimantes à abandonner la prise en charge globale de tous les UNIX.

CUPS est conçu pour éliminer le problème d'impression. Un système d'impression commun peut être utilisé par toutes les variantes d'UNIX pour prendre en charge les capacités d'impression dont les utilisateurs ont besoin. Les fabricants d'imprimantes peuvent utiliser l'interface modulaire des filtres pour développer un unique pilote qui prend en charge une large gamme de formats de fichiers et ce, sans presque aucun effort. Etant donné que CUPS fournit une interface compatible avec les commandes Berkeley et System V, les utilisateurs (et les applications) peuvent tirer bénéfice de cette nouvelle technologie sans avoir à faire de changements.

## La technologie

CUPS est basé sur un standard émergeant d'Internet appelé IPP (Internet Printing Protocol). IPP a été adopté par des douzaines de fabricants d'imprimantes et de serveurs d'impression et est pris en charge par Microsoft Windows 2000.

IPP définit un protocole standard pour imprimer ainsi qu'administrer les travaux d'impression et les options des imprimantes telles que la taille du support d'impression, la résolution, etc. Comme tout protocole de la pile TCP/IP, IPP peut être utilisé localement ou à travers Internet pour atteindre des imprimantes éloignées de centaines ou de milliers de kilomètres. Contrairement à d'autres protocoles de la pile TCP/IP, IPP prend en charge le contrôle d'accès, l'authentification et l'encryptage, ce qui fait de lui une solution d'impression bien plus efficace et sécurisée que ses ancêtres.

IPP est une surcouche ajoutée au-dessus du protocole HTTP (HyperText Transport Protocol) qui est à la base des serveurs "web" sur l'Internet. Ceci permet aux utilisateurs de lire la documentation, vérifier les informations sur l'état des imprimantes ou du serveur, administrer les imprimantes, les classes d'imprimantes et les travaux d'impression en utilisant leur navigateur "web".

CUPS fournit un système d'impression complet basé sur IPP/1.1 prenant en charge l'authentification "Basic", "Digest" et par certificats locaux ainsi qu'un contrôle d'accès basé sur l'utilisateur, le domaine ou l'adresse IP. L'encryptage TLS sera disponible dans une future version de CUPS.

## Travaux d'impression

Tout fichier ou groupe de fichiers soumis à l'impression est appelé un travail d'impression. Les travaux d'impression sont identifiés par un nombre unique en commençant à 1 et sont affectés à une destination particulière, généralement une imprimante. Les travaux d'impression peuvent également inclure des options associées telles que la taille du support d'impression, le nombre de copies et la priorité dans la file d'impression.

## Classes d'imprimantes

CUPS prend en charge des collections d'imprimantes connues sous le nom de classes. Les travaux d'impression transmis à une classe d'imprimantes sont envoyés à la première imprimante disponible dans la classe.

## Filtres

Les filtres permettent à un utilisateur ou une application d'imprimer de nombreux types de documents sans effort supplémentaire. Les travaux d'impressions envoyés au serveur CUPS sont filtrés avant d'être envoyés à l'imprimante. Certains filtres convertissent les fichiers de travaux d'impression dans différents formats que l'imprimante peut comprendre. D'autres ne font que des sélections de page et des tris.

CUPS fournit des filtres pour imprimer de nombreux types de fichiers image, des fichier HP-GL/2, fichiers PDF et texte. CUPS fournit également des filtres PostScript et RIP (Raster Image Processor) qui convertissent les fichiers PostScript ou image en format "bitmap" qui peut être envoyé à une imprimante de type "matriciel" (NdT : il s'agit ici, des imprimantes dont l'impression est générée au moyen d'une grille de points comme l'étaient les vénérables imprimantes à aiguilles de notre enfance, mais pas seulement elles puisque les imprimantes à jet d'encre actuelles sont également de type matriciel... par opposition aux imprimantes laser dont la méthode de génération d'impression est différente.)

## Programmes d'arrière-plan (Backends)

Les programmes d'arrière-plan effectuent le travail le plus important : ils envoient les données d'impression à l'imprimante.

CUPS fournit des programmes d'arrière-plan pour imprimer via des ports de type parallèle, série, USB et à travers un réseau au moyen des protocoles IPP, JetDirect (AppSocket) et LPD (Line Printer Daemon). Des programmes d'arrière-plan additionnels sont disponibles sous forme de paquetage de service réseau comme le programme d'arrière_plan SMB inclus dans le célèbre logiciel SAMBA.

Les programmes d'arrière-plan sont également utilisés pour déterminer les périphériques disponibles. Au démarrage, chaque programme d'arrière-plan est interrogé afin de déterminer la liste des périphériques qu'il prend en charge, ainsi que toute information disponible. Cela permet au programme d'arrière-plan de gestion du port parallère d'indiquer à CUPS qu'une imprimante EPSON Stylus Color 600 est branchée sur le port parallèle 1, par exemple.

## Pilotes d'imprimantes

Les pilotes d'imprimantes de CUPS consistent en un ou plusieurs filtres spécifiques à une imprimante. CUPS inclut des pilotes d'imprimantes d'exemple pour les imprimantes Deskjet et LaserJet Hewlett-Packard et les imprimantes EPSON jet d'encre couleur Stylus Color, Stylus Photo et les modèles 9 et 24 aiguilles matricielles. Bien que ces pilotes ne produisent pas des impressions de qualité optimale pour les différents modèles d'imprimantes, ils fournissent une impression de base et démontrent comment vous pouvez écrire vos propres pilotes d'imprimantes et les incorporer dans CUPS.

## Réseau

Les imprimantes et classes d'imprimantes sur le système local sont automatiquement partagées avec les autres systèmes sur le réseau. Cela vous permet de configurer un système hôte pour tous les autres. Les utilisateurs pourront sélectionner une imprimante locale par son nom ou une imprimante à distance en utilisant la syntaxe "nom_imprimante@serveur".

CUPS fournit également des classes d'imprimantes implicites (NdT : le terme "implicite" est ici la traduction litérale du même mot anglais "implicit" et non celle de l'expression "default". cf. ma remarque dans la préface du présent manuel. De toute façon, CUPS ne prévoit pas de "default class" c'est-à-dire de "classe de base", donc aucune ambiguïté possible ici.), qui sont des collections d'imprimantes ou de classes d'imprimantes qui portent le même nom. Cela vous permet de configurer de multiples serveurs pointant vers la même imprimante réseau physique, par exemple, de sorte que vous ne dépendez pas d'un seul serveur pour pouvoir imprimer. Etant donné que cette méthode vous permet de travailler avec des classes d'imprimantes, vous pouvez configurer de multiples serveurs et imprimantes sans jamais vous soucier d'un simple point en panne tant que tous les autres serveurs ne tombent pas en panne en même temps.

# 2 - Construire et installer CUPS

Ce chapitre décrit comment construire et installer CUPS. Si vous installez une distribution binaire (précompilée) du produit, veuillez vous reporter à la section, Installer une distribution binaire.

## Installer à partir d'une distribution du code source

Cette section décrit comment compiler et installer CUPS sur votre système à partir du code source du produit.

### Conditions nécessaires

Vous aurez besoin d'un compilateur C et C++ conforme à la norme ANSI pour construire CUPS sur votre système. Comme son nom l'indique, CUPS est conçu pour fonctionner sur le système d'exploitation UNIX, cependant la plupart des librairies, des filtres et des programmes d'arrière-plan devraient également se compiler et fonctionner sous Microsoft Windows.

Pour les filtres de fichiers image et PostScript, vous aurez besoin des librairies JPEG, PNG, TIFF et ZLIB. CUPS se construira sans elles mais avec des fonctionnalités singulièrement réduites. Easy Software Products maintient un miroir des versions actuelles de ces librairies à l'adresse:

    ftp://ftp.easysw.com/pub/libraries

Si vous faîtes des changements dans les pages de manuel vous aurez besoin de GNU groff ou d'un autre paquetage compatible nroff. GNU groff est disponible à l'adresse:

    ftp://ftp.gnu.org/pub/groff

La documentation est formatée en utilisant le programme HTMLDOC. Si vous voulez faire des changements, vous pouvez obtenir le programme HTMLDOC à l'adresse:

    http://www.easysw.com/htmldoc

Enfin, vous aurez besoin d'un programme `make` qui comprend les directives `include` - les développeurs FreeBSD, NetBSD et OpenBSD devraient utiliser le programme `gmake` .

### Compiler CUPS

CUPS utilise GNU autoconf pour configurer les "makefiles" et le code source pour votre système. Tapez simplement la commande suivante pour configurer CUPS pour votre système:

    ./configure ENTREE

L'installation standard installera CUPS dans les répertoires /etc, /usr, et /var de votre système, ce qui écrasera toute commande d'impression existant déjà dans votre système. Utilisez l'option `--prefix` pour installer CUPS à un autre emplacement:

    ./configure --prefix=/autre/répertoire ENTREE

Si les librairies PNG, JPEG, TIFF, et ZLIB ne sont pas installées à un emplacement habituel du système (généralement il s'agit de /usr/include et /usr/lib) vous devrez définir les variables d'environnement `CFLAGS`, `CXXFLAGS`, et `LDFLAGS` avant d'exécuter la commande configure:

    setenv CFLAGS "-I/some/directory" ENTREE
    setenv CXXFLAGS "-I/some/directory" ENTREE
    setenv LDFLAGS "-L/some/directory" ENTREE
    setenv DSOFLAGS "-L/some/directory" ENTREE
    ./configure ... ENTREE

ou:

    CFLAGS="-I/some/directory"; export CFLAGS ENTREE
    CXXFLAGS="-I/some/directory"; export CXXFLAGS ENTREE
    LDFLAGS="-L/some/directory"; export LDFLAGS ENTREE
    DSOFLAGS="-L/some/directory"; export DSOFLAGS ENTREE
    ./configure ... ENTREE

Pour activer le support de l'encryptage, vous devrez également activer l'option "--enable-ssl":

    ./configure --enable-ssl

La prise en charge SSL et TLS nécessite la librairie OpenSSL, disponible à l'adresse:

    http://www.openssl.org

Si les en-têtes et les librairies OpenSSL ne sont pas installées dans les répertoires standards, utilisez les options `--with-openssl-includes` et `--with-openssl-libs`:

    ./configure --enable-ssl \
        --with-openssl-includes=/foo/bar/include \
        --with-openssl-libs=/foo/bar/lib

Une fois que vous avez configuré toutes ces choses, tapez simplement:

    make ENTER

pour compiler le logiciel.

### Installer le logiciel

Utilisez la cible "install" pour installer le logiciel:

    make install ENTREE

AVERTISSEMENT: Installer CUPS écrasera votre système d'impression précédent. Si vous rencontrez des difficultés avec le logiciel CUPS et devez revenir à votre ancien système d'impression, vous devrez réinstaller celui-ci à partir de CD originaux de votre système d'exploitation.

### Exécuter le logiciel

Une fois que vous avez installé le logiciel vous pouvez démarrer le serveur CUPS en tapant:

    /usr/sbin/cupsd ENTREE

## Installer une distribution binaire du logiciel

CUPS est fourni dans une variété de formats binaires. Easy Software Products fournit des binaires sous forme d'archives au format TAR avec des scripts d'installation et de désinstallation (distributiond dites "portables"), sous forme de format RPM et DPKG pour les distributions RedHat et Debian. Les distributions portables sont disponibles pour toutes les plateformes tandis que les distributions RPM et DPKG ne le sont que pour GNU/Linux

AVERTISSEMENT: Installer CUPS écrasera votre système d'impression précédent. Si vous rencontrez des difficultés avec le logiciel CUPS et devez revenir à votre ancien système d'impression, vous devrez réinstaller celui-ci à partir de CD originaux de votre système d'exploitation.

### Installer une distribution portable

Pour installer le logiciel CUPS à partir d'une distribution portable vous devrez ouvrir une session en tant qu'utilisateur root; utiliser la commande `su` est suffisant. Une fois que vous êtes utilisateur root, lancer le script d'installation avec la commande:

    ./cups.install ENTREE

Après vous avoir posé quelques questions de type oui/non, le logiciel CUPS va s'installer et l'ordonnanceur sera démarré automatiquement.

### Installer une distribution de type RPM

Pour installer le logiciel CUPS à partir d'une distribution RPM vous devez ouvrir une session en tant qu'utilisateur root; utiliser la commande `su` est suffisant. Une fois connecté en tant qu'utilisateur root, lancez simplement RPM au moyen de la commande:

    rpm -e lpr
    rpm -i cups-1.1-linux-M.m.n-intel.rpm ENTREE

Après un petit délai, le logiciel CUPS sera installé et l'ordonnanceur sera démarré automatiquement.

### Installer une distribution de type DEBIAN

Pour installer le logiciel CUPS à partir d'une distribution DEBIAN vous devez ouvrir une session en tant qu'utilisateur root; utiliser la commande `su` est suffisant. Une fois connecté en tant qu'utilisateur root, lancez simplement dpkg au moyen de la commande:

    dpkg -i cups-1.1-linux-M.m.n-intel.deb ENTREE

Après un court délai, le logiciel CUPS sera installé et l'ordonnanceur sera automatiquement démarré.

# 3 - Administration les imprimantes

Ce chapitre décrit comment ajouter votre première imprimante et comment administrer vos imprimantes.

## Les bases

Chaque file d'impression a un nom associé; le nom de l'imprimante doit commencer avec une lettre et peut comporter jusqu'à 127 lettres, des chiffres ou un caractère de soulignement "_" ("underscore"). La casse des caractères n'est pas significative, par exemple les chaînes de caractères "IMPRIMANTE", "Imprimante" et "imprimante" sont considérées comme le même nom.

Les files d'impression ont également un périphérique associé. Ce périphérique peut être un port parallèle, une interface réseau, etc. Les périphériques dans CUPS utilisent des URI (Uniform Resource Identifiers) qui sont une forme plus générale des URL (Uniform Resource Locator) qui sont utilisés par votre noavigateur "web". Par exemple, le premier port parallèle dans GNU/Linux est habituellement désigné par l'URI de périphérique `parallel:/dev/lp1`.

Vous pouvez voir une liste complète des périphériques pris en charge en lançant la commande `lpinfo(8)`:

    lpinfo -v ENTREE
    file file
    network socket
    network http
    network ipp
    network lpd
    direct parallel:/dev/lp1
    serial serial:/dev/ttyS1?baud=115200
    serial serial:/dev/ttyS2?baud=115200
    direct usb:/dev/usb/lp0
    network smb

L'option `-v` indique que vous voulez la liste de tous les périphériques disponibles. Le premier mot de chaque ligne est le type de périphérique (direct, fichier, réseau, série) et est suivi par l'URI du périphérique ou le nom de la méthode d'accès à ce périphérique. Les périphériques de type fichier ont des URI de périphérique de la forme `file:/répertoire/nom_fichier` tandis que les périphériques réseau utilisent la forme plus familière `methode://serveur` ou `méthode://serveur/chemin`.

Enfin, les files d'impression ont généralement un fichier PPD (PostScript Printer Definition) associé. Les fichiers PPD décrivent les capacités de chaque imprimante, les tailles de support prises en charge, etc., et sont utilisés pour les imprimantes PostScript et non-PostScript. CUPS inclut des fichiers PPD pour les imprimantes HP LaserJet et Deskjet, EPSON Stylus, et EPSON 9 et 24 aiguilles.

## Ajouter votre première imprimante

CUPS fournit deux méthodes pour ajouter des imprimantes : un programme en ligne de commande nommé `lpadmin(8)` et une inteface "web". La commande `lpadmin` vous permet d'effectuer la plupart des tâches d'administration d'imprimantes à partir de la ligne de commande, elle est située dans le répertoire /usr/sbin. L'interface "web" est disponible à l'adresse:

    http://localhost:631/admin

et vous quide pas à pas au travers des étapes de configuration d'imprimante. Si vous n'aimez pas les interfaces en ligne de commande, essayez plutôt l'interface web.

### Ajouter votre première imprimante depuis la ligne de commande

Exécutez la commande `lpadmin` avec l'option `-p` pour ajouter une imprimante à CUPS:

    /usr/sbin/lpadmin -p imprimante -E -v périphérique -m ppd ENTREE

Pour une imprimante HP DeskJet connectée au port parallèle, la commande serait:

    /usr/sbin/lpadmin -p DeskJet -E -v parallel:/dev/lp1 -m deskjet.ppd ENTREE

De la même manière, une imprimante HP LaserJet utilisant une interface réseau de type JetDirect à l'adresse IP 11.22.33.44 serait ajoutée avec la commande:

    /usr/sbin/lpadmin -p LaserJet -E -v socket://11.22.33.44 -m laserjet.ppd ENTREE

Comme vous pouvez le voir, `deskjet.ppd` et `laserjet.ppd` sont les fichiers PPD pour les pilotes HP DeskJet et HP LaserJet inclus dans CUPS. Vous trouverez une liste complète des fichiers PPD ainsi que celle des imprimantes avec lesquelles ils fonctionnent dans l'Annexe C, "Pilotes d'imprimantes".

Pour une imprimante matricielle à aiguilles connectée au port série, la commande serait:

    /usr/sbin/lpadmin -p DotMatrix -E -v serial:/dev/ttyS0?baud=9600+size=8+parity=none+flow=soft deskjet.ppd ENTREE

Ici, vous indiquez le port série (par exemple S0, S1, d0, s1), le taux de transfert en bauds (par exemple 9600, 19200, 38400, 115200, etc.), le nombre de bits de partié, et le contrôle de flux. Si vous n'avez pas besoin de contrôle de flux, supprimez la partie "+flow=soft".

### Ajouter votre première imprimante depuis l'interface "web"

Le serveur CUPS fournit une interface ergonomique sous forme d'un assistant ("wizard") pour ajouter les imprimantes. Plutôt que devoir déterminer quel URI de périphérique et quel fichier PPD utiliser, vous cliquez simplement sur l'option adéquate de la liste et vous remplissez quelques champs de formulaires avec des informations simples. Entrez l'adresse suivante dans votre navigateur "web" pour commencer:

    http://localhost:631/admin

Cliquez sur le bouton Ajouter imprimante pour en ajouter une.

## Administrer les imprimantes depuis la ligne de commande

La commande `lpadmin` vous permet d'effectuer la plupart des tâches d'administration d'imprimantes depuis la ligne de commande. Vous trouverez `lpadmin` dans le répertoire /usr/bin .

### Ajouter et modifier des imprimantes

Exécutez la commande `lpadmin` avec l'option `-p` pour ajouter ou modifier une imprimante.

    /usr/sbin/lpadmin -p imprimante options ENTREE

Les arguments options peuvent être n'importe lesquels parmi:

-c classe
  Ajoute l'imprimante nommée à la classe d'imprimantes classe . Si la classe d'imprimantes n'existe pas alors elle est créée.
-i interface
  Copie le script pour l'interface vers l'imprimante. Les scripts d'interface sont utilisés par les pilotes d'imprimantes System V. Etant donné que tous les filtres sont désactivés lorsque les scripts d'interface sont employés, les scripts ne devraient normalement jamais être utilisés à moins qu'il n'y ait aucun autre pilote pour l'imprimante.
-m modèle
  Indique une pilote d'imprimante standard qui est généralement un fichier PPD. Une liste de tous les modèles disponibles peut être affichée au moyen de l'option `-m`. Une liste de tous les pilotes d'imprimantes inclus dans CUPS peut être consultée dans l' Annexe C, "Pilotes d'imprimantes".
-r classe
  Retire l'imprimante spécifiée de la classe d'imprimantes classe . Si la classe qui en résulte est vide, elle est supprimée.
-v uri-périphérique
  Indique le périphérique à employer pour dialoguer avec l'imprimante. Si un travail d'impression est actuellement en cours d'édition sur l'imprimante spécifiée, il est relancé et envoyé au nouveau périphérique.
-D info
  Fournit une description textuelle de l'imprimante, par exemple "Imprimante personnelle de Marcel".
-E
  Active l'imprimante et accepte les travaux d'impression. Cette option équivaut à exécuter les commandes `enable(1)` et `accept(8)`.
-L emplacement
  Fournit une description textuelle de l'emplacement de l'imprimante, par exemple "Salle informatique n°5".
-P fichier-ppd
  Indique un fichier PPD local pour le pilote d'imprimante.

### Supprimer des imprimantes

Exécutez la commande `lpadmin` avec l'option `-x` pour supprimer une imprimante:

    /usr/sbin/lpadmin -x printer ENTREE

### Choisir l'imprimante implicite

Exécutez la commande `lpadmin` avec l'option `-d` pour définir l'imprimante standard:

    /usr/sbin/lpadmin -d printer ENTREE

L'imprimante standard peut-être outrepassée par l'utilisateur au moyen de la commande `lpoptions(1)`.

### Démarrer et arrêter des imprimantes

Les commandes `enable` et `disable` démarrent et arrêtent les files d'impression, avec les syntaxes respectives suivantes :

    /usr/bin/enable imrimante ENTREE
    /usr/bin/disable imprimante ENTREE

Note du traducteur : utilisateurs du shell BASH attention ! `enable` est une commande interne de celui-ci. Si vous tapez simplement `enable` vous obtiendrez un message d'erreur car c'est la version interne de BASH qui sera utilisée en standard. Pour effectivement utiliser la commande `enable` de CUPS vous devez faire précéder son nom du chemin d'accès complet : `/usr/bin/enable`.

Les imprimantes qui sont désactivées peuvent toujours accepter les travaux d'impression mais n'en imprimeront effectivement aucun tant qu'elle ne seront pas réactivées. Cela est utile si une imprimante fonctionne mal et que vous avez besoin de corriger le problème (bourrage). Tout travail d'impression mis en file d'attente est imprimé dès que la l'imprimante est réactivée.

### Accepter et rejeter les travaux d'impression

Les commandes `accept` et `reject` permettent respectivement d'indiquer à une imprimante qu'elle doit accepter ou rejeter les nouveaux travaux d'impression:

    /usr/sbin/accept imprimante ENTREE
    /usr/sbin/reject imprimante ENTREE

Comme indiqué ci-dessus, une imprimante peut être configurée pour ne plus accepter de nouveaux travaux d'impression. Une imprimante peut aussi rejeter les nouveaux travaux d'impression bien qu'elle soit en train de terminer le traitement de ceux qui ont été mis en file d'attente avant que celle-ci soit désactivée. Ceci est utile si vous avez besoin d'effectuer des opérations de maintenance sur l'imprimante et que vous ne voulez pas qu'elle soit disponible pour les utilisateurs pendante une longue période.

## Administrer les imprimantes depuis l'interface "web"

L'interface "web" est disponible à l'adresse:

    http://localhost:631/admin

Depuis celle-ci vous pouvez effectuer toutes les tâches d'administrations sur les imprimantes au moyen de quelques clics de souris.

# 4 - Classes d'imprimantes

Ce chapitre décrit ce que sont les classes d'imprimantes et comment les administrer.

## Les bases

CUPS fournit des collections d'imprimantes appelées classes d'imprimantes. Les travaux soumis à une classe sont transmis à la première imprimante disponible de la classe. Les classes peuvent elles auusi être membres d'autres classes, ainsi il est possible que vous définissiez de grandes classes réparties afin de fournir un système d'impression à haute disponibilité.

CUPS prend également en charge les classe implicites. Les classes implicites fonctionnent comme les classes d'imprimantes, mais elles sont créées automatiquement à partir des classes et imprimantes disponibles sur le réseau. Cela vous permet de configurer de multiples serveurs d'impression avec des configurations d'imprimantes identiques de sorte que les systèmes clients envoient des travaux d'impression au premier serveur disponible. Si un ou plusieurs serveurs deviennent indisponibles, les travaux d'impressions sont automatiquement redirigés vers les serveurs encore en fonctionnement, fournissant ainsi un système d'impression résistant aux pannes.

## Administrer les classes d'imprimantes depuis la ligne de commande

Exécutez la commande `lpadmin` avec les options `-p` et `-c` pour ajouter une classe d'imprimantes:

    /usr/sbin/lpadmin -p imprimante -c classe ENTREE

La classe est créée automatiquement si elle n'existe pas. Pour retirer une imprimante d'une classe, utilisez l'option `-r`:

    /usr/sbin/lpadmin -p imprimante -r classe ENTREE

Pour enlever toute la classe, utilisez l'option `-x`:

    /usr/sbin/lpadmin -x classe ENTREE

## Administrer les classes d'imprimante depuis l'interface "web"

L'interface "web" est disponible à l'adresse:

    http://localhost:631/admin

Les pages Ajouter classe et Modifier classe fournissent une liste des imprimantes disponibles. Cliquez sur la ou les imprimantes de votre choix pour les ajouter à la classe.

## Classes implicites

Comme indiqué auparavant, les classes implicites sont automatiquement créées à partir des imprimantes et des classes disponibles sur le réseau. Pour désactiver cette fonctionnalité, réglez la valeur de la directive `ImplicitClasses` sur `Off` dans le fichier `cupsd.conf`. Vous trouverez plus d'information sur la manière de faire cela dans le Chapitre 6, "Administration du système d'impression".

# 5 - Configuration côté client

Ce chapitre expose diverses manières de configurer les clients CUPS pour pouvoir imprimer.

## Les bases

Un client est toute machine qui envoie des travaux d'impression à une autre machine pour édition finale. Les clients peuvent également être des serveurs s'il communiquent directement avec des imprimantes qui leur appartiennent.

CUPS prend en charge plusieurs méthodes pour configurer les machines clientes:

- Configuration manuelle des files d'impression.
- Choix d'un serveur unique pour l'impression.
- Configuration automatique des files d'impression.
- Choix de plusieurs serveurs pour l'impression.

### Configuration manuelle des files d'impression

La méthode la plus fastidieuse pour configurer les machines clientes est de configurer chaque file d'impression à distance à la main au moyen de la commande `lpadmin`:

    lpadmin -p imprimante -E -v ipp://serveur/printers/imprimante ENTREE

Le nom imprimante est le nom de l'imprimante sur la machine serveur. Le nom `serveur` est le nom d'hôte ou l'adresse IP de la machine serveur. Répètez la commande `lpadmin` pour chaque imprimante distante que vous désirez utilser.

### Choix d'un serveur unique pour l'impression

CUPS peut être configuré pour fonctionnner sans file d'attente locale et envoyer tous les travaux d'impression à un serveur unique. Cependant, si ce serveur vient à tomber en panne, toute possibilité d'imprimer sera supprimée. Utilisez cette configuration uniquement lorsque c'est absolument nécessaire.

Le serveur implicite est normalement "localhost". Pour outrepasser ce réglage de base, créez un fichier nommé /etc/cups/client.conf et ajoutez une ligne:

    ServerName serveur

au fichier. Le nom serveur peut être le nom d'hôte ou l'adresse IP du serveur implicite.

Le serveur implicite peut également être adapté en fonction de l'utilisateur. Pour créer un réglage spécifique à l'utilisateur, créez un fichier nommé ~/.cupsrc et ajoutez une ligne:

    ServerName serveur

au fichier. Le nom serveur peut être le nom d'hôte ou l'adresse IP du serveur implicite.

### Configuration automatique des files d'impression

CUPS prend en charge la configuration automatique des clients pour les imprimantes sur le même sous-réseau. Pour configurer des imprimantes présentes sur le même sous-réseau, ne faîtes rien. Chaque client devrait voir automatiquement les imprimantes disponibles dans un délai de 30 secondes. Les listes des classes et des imprimantes sont automatiquement mises à jour chaque fois que des imprimantes et des serveurs sont ajoutés ou retirés.

Si vous désirez également voir les imprimantes sur d'autres sous-réseau, utilisez la directive `BrowsePoll` comme indiqué ci-après.

### Choix de plusieurs serveurs pour l'impression

Si vous disposez de plusieurs serveurs CUPS sur plusieurs sous-réseaux, vous devriez configurer CUPS pour surveiller ces serveurs. La surveillance fournit l'avantage d'automatiser singulièrement la configuration sur les clients, et plusieurs clients sur le même sous-réseau peuvent partager les mêmes informations de configuration.

La surveillance est activée en indiquant une ou plusieurs directives `BrowsePoll` dans le fichier /etc/cups/cupsd.conf. Pour savoir comment faire ces changements, veuillez vous reporter au Chapitre 6, "Administration du système d'impression".

# 6 - Administration du système d'impression

Ce chapitre montre comment configurer le serveur CUPS.

## Les bases

Plusieurs fichiers texte sont utilisés pour configurer CUPS. Tous les fichiers de configuration du serveur sont placés dans le répertoire /etc/cups:

classes.conf
  Ce fichier contient les informations sur chaque classe d'imprimante. Normalement vous manipulez ce fichier en utilisant la commande `lpadmin` ou l'interface "web".
client.conf
  Ce fichier fournit le nom du serveur implicite pour les machines clientes. Veuillez vous reporter au Chapitre 5, "Configuration côté client" pour de plus amples informations.
cupsd.conf
  Ce fichier contrôle la manière de fonctionner sur serveur CUPS ( /usr/sbin/cupsd) et est normalement édité à la main.
mime.convs
  Ce fichier contient une liste des filtres de base pour la conversion de fichier et leurs coûts respectifs. Normalement, vous n'éditerez pas ce fichier.
mime.types
  Ce fichier contient la liste des formats de fichiers standards et comment les reconnaître. Normalement, vous n'éditerez pas ce fichier.
printers.conf
  Ce fichier contient des informations sur chaque imprimante. Normalement, vous manipulez ce fichier en utilisant la commande `lpadmin` ou l'interface "web".

## Redémarrer le serveur CUPS

Une fois que vous avez fait des changements au fichier de configuration, vous devez redémarrer le serveur CUPS en lui envoyant un signal `HUP` ou en utilisant le script d'initialisation adéquat. Les distributions de CUPS installent le script dans le répertoire init.d sous le nom cups. L'emplacement varie selon le système d'exploitation:

    /etc/rc.d/init.d/cups restart ENTREE
    /etc/init.d/cups restart ENTREE
    /sbin/init.d/cups restart ENTREE

## Changer la configuration du serveur

Le fichier /etc/cups/cupsd.conf contient des directives de configuration qui contrôlent le fonctionnement du serveur. Chaque directive suivie de sa valeur est disposée seule sur une ligne. Les commentaires sont ouverts par le signe dièse ("#") au début de la ligne. Etant donné que le fichier de configuration du serveur est un fichier texte, vous pouvez le modifier au moyen de votre éditeur de texte préféré.

## Directives de configuration du serveur

Le fichier cupsd.conf contient de nombreuses directives qui déterminent le comportement du serveur:

- `AccessLog`
- `Allow`
- `AuthClass`
- `AuthGroupName`
- `AuthType`
- `AutoPurgeJobs`
- `BrowseAddress`
- `BrowseAllow`
- `BrowseDeny`
- `BrowseInterval`
- `BrowseOrder`
- `BrowsePoll`
- `BrowsePort`
- `BrowseProtocols`
- `BrowseRelay`
- `BrowseShortNames`
- `BrowseTimeout`
- `Browsing`
- `Classification`
- `ClassifyOverride`
- `DataDir`
- `DefaultCharset`
- `DefaultLanguage`
- `Deny`
- `DocumentRoot`

- `Encryption`
- `ErrorLog`
- `FilterLimit`
- `FontPath`
- `Group`
- `HideImplicitMembers`
- `HostNameLookups`
- `ImplicitClasses`
- `ImplicitAnyClasses`
- `Include`
- `KeepAliveTimeout`
- `KeepAlive`
- `Limit`
- `LimitExcept`
- `LimitRequestBody`
- `Listen`
- `Location`
- `LogLevel`
- `MaxClients`
- `MaxJobs`
- `MaxJobsPerPrinter`
- `MaxJobsPerUser`
- `MaxLogSize`
- `MaxRequestSize`
- `Order`

- `PageLog`
- `Port`
- `PreserveJobFiles`
- `PreserveJobHistory`
- `Printcap`
- `PrintcapFormat`
- `PrintcapGUI`
- `RemoteRoot`
- `RequestRoot`
- `Require`
- `RIPCache`
- `RunAsUser`
- `Satisfy`
- `ServerAdmin`
- `ServerBin`
- `ServerCertificate`
- `ServerKey`
- `ServerName`
- `ServerRoot`
- `SSLListen`
- `SSLPort`
- `SystemGroup`
- `TempDir`
- `Timeout`
- `User`

### AccessLog

#### Exemples

    AccessLog /var/log/cups/access_log
    AccessLog /var/log/cups/access_log-%s
    AccessLog syslog

#### Description

La directive `AccessLog` donne le nom du fichier de suivi d'accès ("access log"). Si le chemin d'accès au fichier n'est pas absolu, il est considéré comme relatif au répertoire `ServerRoot`. Le fichier "access log" est stocké dans le format "log" habituel et peut aisément être utilisé par tout outil d'analyse d'accès "web" pour générer un rapport sur l'activité du serveur CUPS.

Le nom du serveur peut être inclus dans le nom du fichier en utilisant `%s` dans le nom.

Le nom spécial "syslog" peut être utilisé pour envoyer les informations d'accès au fichier de suivi système au lieu d'un simple fichier texte.

Le fichier de suivi d'accès implicite est /var/log/cups/access_log.

### Allow

#### Exemples

    Allow from All
    Allow from None
    Allow from *.domain.com
    Allow from .domain.com
    Allow from host.domain.com
    Allow from nnn.*
    Allow from nnn.nnn.*
    Allow from nnn.nnn.nnn.*
    Allow from nnn.nnn.nnn.nnn
    Allow from nnn.nnn.nnn.nnn/mm
    Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm

#### Description

La directive `Allow` indique un nom d'hôte, une adresse IP ou un réseau qui est autorisé à accéder au serveur. Les directives `Allow` se cumulent, ainsi plusieurs directives `Allow` peuvent être utilisées pour autoriser l'accès à de multiples hôtes et/ou réseaux. La notation `/mm` indique une notation de sous-réseau CIDR:

mm | netmask | mm | netmask
--- | --- | --- | ---
0 | 0.0.0.0 | 8 | 255.0.0.0
1 | 128.0.0.0 | 16 | 255.255.0.0
2 | 192.0.0.0 | 24 | 255.255.255.0
... | ... | 32 | 255.255.255.255

La directive `Allow` doit apparaître à l'intérieur d'une directive `Location`.

### AuthClass

#### Exemples

    AuthClass Anonymous
    AuthClass User
    AuthClass System
    AuthClass Group

#### Description

La directive `AuthClass` définit le niveau d'authentification requis:

- `Anonymous` - Pas d'authentification nécessaire. C'est la valeur implicite
- `User` - Un nom d'utilisateur et un mot de passe valides sont requis.
- `System` - Un nom d'utilisateur et un mot de passe valides sont requis, et cet utilisateur doit être membre du groupe "sys"; cela peut être changé au moyen de la directive `SystemGroup`.
- `Group` - Un nom d'utilisateur et un mot de passe valides sont requis, et cet utilisateur doit être membre du groupe indiqué dans la directive `AuthGroupName`.

La directive `AuthClass` doit apparaître à l'intérieur d'une directive `Location`.

### AuthGroupName

#### Exemples

    AuthGroupName mygroup
    AuthGroupName lp

#### Description

La directive `AuthGroupName` définit le groupe à utiliser pour l'authentification de type `Group`.

La directive `AuthGroupName` doit apparaître à l'intérieur d'une directive `Location`.

### AuthType

#### Exemples

    AuthType None
    AuthType Basic
    AuthType Digest
    AuthType BasicDigest

#### Description

La directive `AuthType` définit le type d'authentification qui doit être effectuée:

- `None` - Pas d'authentification. C'est la valeur implicite
- `Basic` - Une authentification "Basic" doit être effectuée en utilisant le fichier de mots de passe et de groupe d'UNIX.
- `Digest` - Une authentification "Digest" doit être effectuée en utilisant le fichier /etc/cups/passwd.md5.
- `BasicDigest` - Une authentification "Basic" doit être effectuée en utilisant le fichier /etc/cups/passwd.md5.

Lorsque vous utilisez `Basic`, `Digest`, ou `BasicDigest`, les clients se connectant en utilisant l'adresse `localhost` peuvent également le faire en utilisant les certificats.

La directive `AuthType` doit apparaître à l'intérieur d'une directive `Location`.

### AutoPurgeJobs

#### Exemples

    AutoPurgeJobs Yes
    AutoPurgeJobs No

#### Description

La directive `AutoPurgeJobs` indique si oui ou non il faut purger les travaux d'impression lorsqu'ils ne sont plus nécessaires au vu des quotas. Cet option n'a aucun effet si les quotas ne sont pas activés. La valeur implicite est `No`.

### BrowseAddress

#### Exemples

    BrowseAddress 255.255.255.255:631
    BrowseAddress 192.0.2.255:631
    BrowseAddress host.domain.com:631

#### Description

La directive `BrowseAddress` indique une adresse à laquelle il faut envoyer les informations d'exploration. Plusieurs directives `BrowseAddress` peuvent être indiquées pour envoyer les informations d'exploration à différents systèmes ou réseaux.

La valeur implicite de l'adresse est `255.255.255.255:631` ce qui diffusera les informations à tous les réseaux auxquels le serveur est connecté.

NOTA: Si vous utilisez HP-UX 10.20 sur un sous-réseau dont le masque n'est pas sur 24, 16 ou 8 bits, l'exploration des imprimantes (et en fait toute réception d'information diffusée) ne fonctionnera pas. Ce problème semble résolu dans HP-UX 11.0.

### BrowseAllow

#### Exemples

    BrowseAllow from all
    BrowseAllow from none
    BrowseAllow from 192.0.2
    BrowseAllow from 192.0.2.0/24
    BrowseAllow from 192.0.2.0/255.255.255.0
    BrowseAllow from *.domain.com

#### Description

La directive `BrowseAllow` indique un système dont on accepte de recevoir des paquets d'exploration. Le comportement implicite est d'accepter des paquets d'exploration de n'importe quel hôte.

Le contrôle sur la base du nom d'hôte et de domaine impose que vous activiez la directive `HostNameLookups` .

Le contrôle sur la base de l'adresse IP prend en charge les correspondances exactes, les adresses partielles qui correspondent à des réseaux dont le masque est 255.0.0.0, 255.255.0.0, et 255.255.255.0, ou des adresses réseau utilisant le masque indiqué.

### BrowseDeny

#### Exemples

    BrowseDeny from all
    BrowseDeny from none
    BrowseDeny from 192.0.2
    BrowseDeny from 192.0.2.0/24
    BrowseDeny from 192.0.2.0/255.255.255.0
    BrowseDeny from *.domain.com

#### Description

La directive `BrowseDeny` indique un système dont on refuse de recevoir des paquets d'exploration. Le comportement implicite est de ne refuser aucun paquet d'exploration d'aucun hôte.

Le contrôle sur la base du nom d'hôte et de domaine impose que vous activiez la directive `HostNameLookups` .

Le contrôle sur la base de l'adresse IP prend en charge les correspondances exactes, les adresses partielles qui correspondent à des réseaux dont le masque est 255.0.0.0, 255.255.0.0, et 255.255.255.0, ou des adresses réseau utilisant le masque indiqué.

### BrowseOrder

#### Exemples

    BrowseOrder allow,deny
    BrowseOrder deny,allow

#### Description

La directive `BrowseOrder` indique l'ordre de traitement accord/refus. L'ordre implicite est `deny,allow`:

- `allow,deny` - Les paquets d'exploration sont acceptés à moins qu'ils ne soient explicitement refusés.
- `deny,allow` - Les paquets d'exploration sont rejetés à moins qu'ils ne soient explicitement acceptés.

### BrowseInterval

#### Exemples

    BrowseInterval 0
    BrowseInterval 30

#### Description

La directive `BrowseInterval` indique le délai maximum entre deux mises à jour de l'exploration. Le fait d'indiquer une valeur de 0 interdit de diffuser des mises à jour mais autorise néanmoins un serveur à recevoir des mises à jour en provenance d'autres hôtes.

La valeur `BrowseInterval` devrait toujours être inférieure à la valeur `BrowseTimeout` . Sinon des imprimantes et des classes pourraient disparaître des système clients entre les mises à jour.

### BrowsePoll

#### Exemples

    BrowsePoll 192.0.2.2:631
    BrowsePoll host.domain.com:631

#### Description

La directive `BrowsePoll` collecte la liste des imprimantes disponibles sur un serveur une fois toutes les `BrowseInterval` secondes. Plusieurs directives `BrowsePoll` peuvent être indiquées pour surveiller plusieurs serveurs.

Si `BrowseInterval` est mis à 0 alors le serveur est surveillé une fois toutes les 30 secondes.

### BrowsePort

#### Exemples

    BrowsePort 631
    BrowsePort 9999

#### Description

La directive `BrowsePort` indique un numéro de port UDP à employer pour les échanges de paquets d'exploration. La valeur implicite est 631.

NOTE: Vous devez choisir une valeur identique pour la directive `BrowsePort` sur tous les systèmes que vous voulez voir.

### BrowseProtocols

#### Exemples

    BrowseProtocols CUPS
    BrowseProtocols SLP
    BrowseProtocols CUPS SLP
    BrowseProtocols all

#### Description

La directive `BrowseProtocols` indique les protocoles à employer pour collecter et distribuer les informations sur les imprimantes partagées sur le réseau local. Le protocole implicite est `CUPS`, c'est un protocole basé sur la diffusion réseau ("broadcast").

NOTE: Lorsque vous utilisez le protocole `SLP`, vous devez avoir au moins un serveur "Directory Agent" (DA) sur votre réseau. A défaut, l'ordonnanceur CUPS (`cupsd`) ne répondra pas aux requêtes des clients pendant plusieurs secondes pendant qu'il sera en train d'explorer le réseau.

### BrowseRelay

#### Exemples

    BrowseRelay 193.0.2.1 192.0.2.255
    BrowseRelay 193.0.2.0/255.255.255.0 192.0.2.255
    BrowseRelay 193.0.2.0/24 192.0.2.255
    BrowseRelay *.domain.com 192.0.2.255
    BrowseRelay host.domain.com 192.0.2.255

#### Description

la directive indique des adresses source et destination pour relayer les informations d'exploration en provenance d'un hôte ou d'un réseau vers un autre. Plusieurs directives `BrowseRelay` peuvent être indiquées si nécessaire.

`BrowseRelay` est généralement utilisé sur des systèmes qui assurent la passerelle entre des réseaux multiples au moyen d'une ou plusieurs interfaces réseau. Elle peut également être utilisée pour relayer des informations sur les imprimantes provenant de serveurs surveillés, au moyen de la ligne:

    BrowseRelay 127.0.0.1 255.255.255.255

Cela fournit un accès effectif aux imprimantes d'un WAN pour tous les clients d'un LAN.

### BrowseShortNames

#### Exemples

    BrowseShortNames Yes
    BrowseShortNames No

#### Description

La directive `BrowseShortNames` indique s'il faut ou non utiliser les noms courts pour les imprimantes à distance. Les noms courts sont simplement composés du nom de l'imprimante, sans celui du serveur ("imprimante"). Si le système détecte plus d'une imprimante à distance portant le même nom, les imprimantes seront affichées avec les noms longs ("imprimante@erveur1", "imprimante@erveur2")

La valeur implicite de cette option est `Yes`.

### BrowseTimeout

#### Exemples

    BrowseTimeout 300
    BrowseTimeout 60

#### Description

La directive `BrowseTimeout` fixe la durée de vie des informations reçues sous forme de paquets d'exploration et concernant les imprimantese et les classes. Une fois que les informations concernant une imprimante ou une classe dépassent ce délai, elles sont retirées de la liste des destinations disponibles.

La valeur `BrowseTimeout` devrait toujours être supérieure à la valeur `BrowseInterval`. Sinon des imprimantes et des classes pourraient disparaîtres des systèmes clients entre les mises à jour.

### Browsing

#### Exemples

    Browsing On
    Browsing Off

#### Description

La directive `Browsing` contrôle l'activation ou non de l'exploration réseau des imprimantes. La valeur implicite est `On` .

NOTE: Si vous utilisez HP-UX 10.20 sur un sous-réseau dont le masque n'est pas sur 24, 16 ou 8 bits, l'exploration des imprimantes (et en fait toute réception d'information diffusée) ne fonctionnera pas. Ce problème semble résolu dans HP-UX 11.0.

### Classification

#### Exemples

    Classification
    Classification classified
    Classification confidential
    Classification secret
    Classification topsecret
    Classification unclassified

#### Description

La directive `Classification` fixe le niveau de classification sur le serveur. Lorsque cette option est activée au moins une des pages de garde est forcée à ce niveau et l'information de classification est placée sur chaque page imprimée. La valeur implicite est de n'avoir aucun niveau de classification.

### ClassifyOverride

#### Exemples

    ClassifyOverride Yes
    ClassifyOverride No

#### Description

La directive `ClassifyOverride` indique si les utilisateurs peuvent outrepasser le niveau de classification du serveur ou non. Lorsque la classification du serveur est activée, les utilisateurs peuvent changer la classification en employant l'option `job-sheets` et peuvent choisir de n'imprimer qu'une seule page de garde de sécurité avant ou après le travail d'impression. Si l'option `job-sheets` est positionnée à la valeur `none` alors le niveau de classification implicite du serveur est utilisé.

La valeur implicite est de ne pas autoriser les utilisateurs à outrepasser la classification.

### DataDir

#### Exemples

    DataDir /usr/share/cups

#### Description

La directive `DataDir` fixe le répertoire à employer pour les fichiers de données.

### DefaultCharset

#### Exemples

    DefaultCharset utf-8
    DefaultCharset iso-8859-1
    DefaultCharset windows-1251

#### Description

La directive `DefaultCharset` définit le jeu de caractères à utiliser pour les connexions avec les clients. Le jeu de caractère implicite est le jeu `utf-8` mais il est outrepassé par le jeu de caractères associé à la langue indiquée par le client ou par la directive `DefaultLanguage`.

### DefaultLanguage

#### Exemples

    DefaultLanguage de
    DefaultLanguage en
    DefaultLanguage es
    DefaultLanguage fr
    DefaultLanguage it

#### Description

La directive `DefaultLanguage` définit le langage à utiliser pour les connexions avec les clients. Régler la langue règle également le jeu de caractères si un fichier de localisation existe pour celle-ci. La valeur implicite est "en" c'est-à-dire "anglais".

### Deny

#### Exemples

    Deny from All
    Deny from None
    Deny from *.domain.com
    Deny from .domain.com
    Deny from host.domain.com
    Deny from nnn.*
    Deny from nnn.nnn.*
    Deny from nnn.nnn.nnn.*
    Deny from nnn.nnn.nnn.nnn
    Deny from nnn.nnn.nnn.nnn/mm
    Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm

#### Description

La directive `Deny` indique un nom d'hôte, une adresse IP ou un réseau qui n'est pas autorisé à accéder au serveur. Les directives `Deny` se cumulent, ainsi plusieurs directives `Deny` peuvent être utilisées pour interdire l'accès à de multiples hôtes et/ou réseaux. La notation `/mm` indique une notation de sous-réseau CIDR:

mm | netmask | mm | netmask
--- | --- | --- | ---
0 | 0.0.0.0 | 8 | 255.0.0.0
1 | 128.0.0.0 | 16 | 255.255.0.0
2 | 192.0.0.0 | 24 | 255.255.255.0
... | ... | 32 | 255.255.255.255

La directive `Deny` doit apparaître à l'intérieur d'une directive `Location`.

### DocumentRoot

#### Exemples

    DocumentRoot /usr/share/doc/cups
    DocumentRoot /foo/bar/doc/cups

#### Description

La directive `DocumentRoot` indique l'emplacement du contenu que le serveur HTTP de CUPS doit publier. Si un chemin absolu n'est pas indiqué, celui-ci est considéré comme relatif au répertoire `ServerRoot`. La valeur implicite est /usr/share/doc/cups.

Les documents sont d'abord recherchés dans un sous-répertoire correspondant à la langue demandée par le client (par exemple /usr/share/doc/cups/fr/...) et ensuite directement dans le répertoire `DocumentRoot` (par exemple /usr/share/doc/cups/...), ainsi il est possible de localiser le contenu "web" en fournissant des sous-répertoires pour chaque langue nécessaire.

### Encryption

#### Exemples

    Encryption Never
    Encryption IfRequested
    Encryption Required
    Encryption Always

#### Description

La directive `Encryption` doit apparaître à l'intérieur d'une section `Location` et définit les réglages d'encryptage pour cet emplacement. Le réglage implicite est `IfRequested` pour tous les emplacements.

### ErrorLog

#### Exemples

    ErrorLog /var/log/cups/error_log
    ErrorLog /var/log/cups/error_log-%s
    ErrorLog syslog

#### Description

La directive `ErrorLog` définit le nom du fichier de suivi d'erreurs ("error log"). Si le nom de fichier n'est pas un chemin absolu, il est considéré comme un chemin relatif au répertoire `ServerRoot`. Le fichier standard est /var/log/cups/error_log.

Le nom du serveur peut être inclus dans le nom du fichier en utilisant le nom `%s`.

Le nom spécial "syslog" peut être utilisé pour envoyer les informations de suivi d'erreurs vers le fichier de suivi d'erreur système au lieu d'un fichier texte simple.

### FilterLimit

#### Exemples

    FilterLimit 0
    FilterLimit 200
    FilterLimit 1000

#### Description

La directive `FilterLimit` définit le coût maximal de tous les filtres appliqués au travaux en cours de traitement. Elle peut être utilisée pour limiter le nombre de programmes de filtres qui son exécutés dans un serveur pour minimiser les problèmes de ressources disque, mémoire ou CPU. Une limite de 0 désactive la limitation des filtres.

Le coût moyen d'une impression vers une imprimante non-PostScript nécessite une limitation de filtre aux alentours de 200. Une imprimante PostScript nécessite une limite d'environ la moitié (100). Positionner la limite en dessous de ces seuils va effectivement limiter l'ordonnanceur à l'impression d'un travail à la fois.

La valeur implicite est 0.

### FontPath

#### Exemples

    FontPath /foo/bar/fonts
    FontPath /usr/share/cups/fonts:/foo/bar/fonts

#### Description

La directive `FontPath` définit le chemin de recherche des polices de caractères à utiliser. La valeur implicite est `/usr/share/cups/fonts`.

### Group

#### Exemples

    Group sys
    Group system
    Group root

#### Description

La directive `Group` définit le groupe UNIX sous l'identité duquel les programmes CGI et de filtrage fonctionnent. Le groupe implicite est `sys`, `system`, ou `root` selon le système d'exploitation.

### HideImplicitMembers

#### Exemples

    HideImplicitMembers Yes
    HideImplicitMembers No

#### Description

La directive `HideImplicitMembers` contrôle l'appartenance ou non d'imprimantes individuelles aux classes implicites qui sont montrées à l'utilisateur. La valeur standard est `No`.

`ImplicitClasses` doit être activée pour que cette directive ait un quelconque effet.

### HostNameLookups

#### Exemples

    HostNameLookups On
    HostNameLookups Off
    HostNameLookups Double

#### Description

La directive `HostNameLookups` indique si CUPS doit ou non rechercher le nom d'hôte des clients qui se connectent. La clause `Double` force CUPS à vérifier que le nom d'hôte trouvé à partir de l'adresse correspond bien à l'une des adresses retournées pour ce nom d'hôte. Les recherches `Double` empêchent également que des clients ayant des adresses non enregistrées ne se connectent au serveur. La valeur implicite est `Off` pour éviter tout problème potentiel de performance du serveur du fait des résolutions de nom. Positionnez cette directive à la valeur `On` ou `Double` uniquement si nécessaire.

### ImplicitClasses

#### Exemples

    ImplicitClasses On
    ImplicitClasses Off

#### Description

La directive `ImplicitClasses` contrôle si les classes implicites sont créées sur la base des imprimantes et classes disponibles sur le réseau. La valeur implicite est `On` mais est automatiquement positionnée sur `Off` si `Browsing` est à la valeur `Off`.

### ImplicitAnyClasses

#### Exemples

    ImplicitAnyClasses On
    ImplicitAnyClasses Off

#### Description

La directive `ImplicitAnyClasses` contrôle si oui ou non les classes implicites pour les imprimantes locales et à distance sont crées avec le nom `AnyPrinter`. La valeur implicite est `Off`.

`ImplicitClasses` doit être activée pour que cette directive ait un quelconque effet.

### Include

#### Exemples

    Include filename
    Include /foo/bar/filename

#### Description

La directive `Include` inclut le fichier indiqué dans le corps du fichier `cupsd.conf`. Si aucun chemin n'est indiqué, le fichier est considéré comme étant relatif au répertoire `ServerRoot`.

### KeepAlive

#### Exemples

    KeepAlive On
    KeepAlive Off

#### Description

La directive `KeepAlive` contrôle la prise en charge ou non des connexions HTTP persitantes. La valeur implicite est `On` .

Les clients HTTP/1.1 prennent automatiquement en charge les connexions persistantes, tandis que clients HTTP/1.0 doivent spécifiquement les demander en utiliser l'attribut `Keep-Alive` attribute dans le champ `Connection:` de chaque requête.

### KeepAliveTimeout

#### Exemples

    KeepAliveTimeout 60
    KeepAliveTimeout 30

#### Description

La directive `KeepAliveTimeout` contrôle combien de temps une connexion HTTP persistante restera ouverte après la dernière requête. La valeur implicite est de 60 secondes.

### Limit

#### Exemples

    <Limit GET POST>
    ...
    </Limit>

    <Limit ALL>
    ...
    </Limit>

#### Description

La directive `Limit` groupe les directives de contrôle d'accès pour certains types spécifiques de requêtes HTTP et doit apparaître à l'intérieur d'une section `Location`. L'accès peut être limité à des types individuels de requêtes (`DELETE`, `GET`, `HEAD` , `OPTIONS`, `POST`, `PUT`, et `TRACE` ) ou pour tous les types de requêtes (`ALL`). Les noms de types de requêtes sont dépendants de la casse pour des raisons de compatibilité avec Apache.

### LimitExcept

#### Exemples

    <LimitExcept GET POST>
    ...
    </LimitExcept>

#### Description

La directive `LimitExcept` groupe les directives de contrôle d'accès pour certains types spécifiques de requêtes HTTP et doit apparaître à l'intérieur d'une section `Location`. Contrairement à la directive `Limit`, `LimitExcept` restreint l'accès pour toutes les requêtes à l'exception de celles listées dans la ligne `LimitExcept`.

### LimitRequestBody

#### Exemples

    LimitRequestBody 10485760
    LimitRequestBody 10m
    LimitRequestBody 0

#### Description

La directive `LimitRequestBody` contrôle la taille maximale des fichiers d'impression, des requêtes IPP, et des données des formulaires HTML dans les requêtes HTTP POST. La limite implicite est de 0 ce qui désactive la vérification de la limite.

Reportez-vous également à la directive similaire `MaxRequestSize`.

### Listen

#### Exemples

    Listen 127.0.0.1:631
    Listen 192.0.2.1:631

#### Description

La directive `Listen` indique une adresse réseau et un port sur lequel écouter en attente de connexions. Plusieurs directives `Listen` peuvent être indiquées pour écouter sur de multiples adresses.

La directive `Listen` est similaire à la directive `Port` mais vous permet de restreindre l'accès à des interfaces ou des réseaux spécifiques.

### Location

#### Exemples

    <Location />
    ...
    </Location>

    <Location /admin>
    ...
    </Location>

    <Location /printers/name>
    ...
    </Location>

#### Description

La directive `Location` indique des options de contrôle d'accès et d'authentification pour le chemin ou la ressource HTTP indiquée. Des informations supplémentaires sont disponibles plus loin dans le chapitre dans la section "Sécurité du système d'impression".

### LogLevel

#### Exemples

    LogLevel none
    LogLevel emerg
    LogLevel alert
    LogLevel crit
    LogLevel error
    LogLevel warn
    LogLevel notice
    LogLevel info
    LogLevel debug
    LogLevel debug2

#### Description

La directive `LogLevel` indique la quantité d'informations à consigner dans le fichier `ErrorLog` . Les valeurs suivantes sont reconnues (chaque niveau inclut tout ce qui l'est dans les niveaux inférieurs):

- `none` - Ne consigne rien.
- `emerg` - Consigne les conditions d'urgence qui empêchent le serveur de fonctionner.
- `alert` - Consigne les alertes qui doivent être traitées immédiatement.
- `crit` - Consigne les erreurs critiques qui n'empêchent pas le serveur de fonctionner.
- `error` - Consigne les erreurs générales.
- `warn` - Consigne les erreurs et les avertissements.
- `notice` - Consigne les conditions d'erreurs temporaires.
- `info` - Consigne toutes les requêtes de modifications et de changement d'état (valeur implicite).
- `debug` - Consigne des informations basiques de débogage.
- `debug2` - Consigne toutes les informations de débogage.

### MaxClients

#### Exemples

    MaxClients 100
    MaxClients 1024

#### Description

La directive `MaxClients` contrôle le nombre maximum de clients simultanés qui seront autorisés par le serveur. La valeur implicite ("par défaut") est de 100 clients.

NOTE: Etant donné que chaque travail d'impression demande un descripteur de fichier pour le tube de contrôle, le serveur CUPS limite de manière interne la valeur `MaxClients` au tiers des descripteurs de fichiers disponibles pour éviter les possibles problèmes lors de l'impression de nombreux travaux d'impression.

### MaxJobs

#### Exemples

    MaxJobs 100
    MaxJobs 9999
    MaxJobs 0

#### Description

La directive `MaxJobs` contrôle le nombre maximum de travaux d'impression qui sont conservés en mémoire. Dès que le nombre de travaux atteint la limite, le plus ancien travail complété est automatiquement purgé du système pour libérer de l'espace pour le nouveau travail. Si tous les travaux connus sont toujours en attente de traitement ou actifs, alors le nouveau travail sera rejeté.

Régler cette valeur sur 0 (valeur implicite) désactive cette fonctionnalité.

### MaxJobsPerPrinter

#### Exemples

    MaxJobsPerPrinter 100
    MaxJobsPerPrinter 9999
    MaxJobsPerPrinter 0

#### Description

La directive `MaxJobsPerPrinter` contrôle le nombre maximum de travaux actifs qui sont autorisés pour chaque imprimante ou classe d'imprimantes. Dès que le nombre est atteint pour une imprimante ou une classe, les nouveaux travaux sont rejetés tant que l'un des travaux actifs n'est pas complété, arrêté, annulé ou abandonné.

Régler le maximum sur la valeur 0 (valeur implicite) désactive cette fonctionnalité.

### MaxJobsPerUser

#### Exemples

    MaxJobsPerUser 100
    MaxJobsPerUser 9999
    MaxJobsPerUser 0

#### Description

La directive `MaxJobsPerUser` contrôle le nombre maximum de travaux d'impression qui sont autorisés pour chaque utilisateur. Dès qu'un utilsateur atteint le maximum autorisé, tout nouveau travail sera rejeté avant qu'un des travaux actifs soit complété, arrêté, annulé ou abandonné.

Régler le maximum sur 0 (valeur implicite) désactive cette fonctionnalité.

### MaxLogSize

#### Exemples

    MaxLogSize 1048576
    MaxLogSize 1m
    MaxLogSize 0

#### Description

La directive `MaxLogSize` contrôle la taille maximum de chaque fichier de suivi ("log"). Dès qu'un fichier atteint ou dépasse la limite il est fermé ou renommé en filename.O. Cela vous permet de mettre en place automatiquement une rotation des fichiers de suivi. La taille implicite est de 1048576 octets (1Mo).

Régler le maximum sur 0 désactive la rotation de fichier de suivi.

### MaxRequestSize

#### Exemples

    MaxRequestSize 10485760
    MaxRequestSize 10m
    MaxRequestSize 0

#### Description

La directive `MaxRequestSize` contrôle la taille maximum des fichiers d'impression, des requêtes IPP, et des données des formulaires HTML contenus dans les requêtes HTTP POST. La valeur implicite est 0, ce qui désactive cette vérification de limite.

Reportez-vous également à la directive similaire `LimitRequestBody`.

### Order

#### Exemples

    Order Allow,Deny
    Order Deny,Allow

#### Description

La directive `Order` définit le type implicite de contrôle d'accès. Les valeurs suivantes sont prises en charge:

- `Allow,Deny` - Autorise les requêtes depuis tous les systèmes à l'exception de ceux listés dans une directive `Deny`.
- `Deny,Allow` - Autorise les requêtes uniquement depuis les hôtes listés dans une directive `Allow`.

La directive `Order` doit apparaître à l'intérieur d'une directive `Location`.

### PageLog

#### Exemples

    PageLog /var/log/cups/page_log
    PageLog /var/log/cups/page_log-%s
    PageLog syslog

#### Description

La directive `PageLog` définit le nom du fichier "page log". Si le nom du fichier n'est pas absolu, il est considéré comme étant relatif au répertoire `ServerRoot` . Le fichier standard "page log" est /var/log/cups/page_log .

Le nom du serveur peut être inclus dans le nom de fichier en utilisant le nom `%s`.

Le nom spécial "syslog" peut être utilisé pour envoyer les informations de page vers le fichier de suivi système au lieu d'un simple fichier texte.

### Port

#### Exemples

    Port 631
    Port 80

#### Description

La directive `Port` indique un port sur lequel écouter en attente de connexions. Plusieurs lignes `Port` peuvent être indiquées pour écouter sur plusieurs ports. La valeur implicite est 631.

### PreserveJobHistory

#### Exemples

    PreserveJobHistory On
    PreserveJobHistory Off

#### Description

La directive `PreserveJobHistory` contrôle si l'historique des travaux complétés, annulés ou abandonnés est conservé sur disque ou non.

Une valeur `On` (valeur implicite) conserve les informations concernant les travaux jusqu'à ce que l'administrateur les purge avec la commande `cancel`.

Une valeur `Off` retire les informations concernant les travaux dès que ceux-ci sont complétés, annulés ou abandonnés.

### PreserveJobFiles

#### Exemples

    PreserveJobFiles On
    PreserveJobFiles Off

#### Description

La directive `PreserveJobFiles` contrôle si les fichiers des documents complétés, annulés ou abandonnés sont stockés sur disque.

La valeur `On` conserve les fichiers des travaux jusqu'à ce que l'administrateur les purge au moyen de la commande `cancel` . Les travaux peuvent être resoumis (réimprimés) jusqu'à ce qu'ils soient purgés.

La valeur `Off` (valeur implicite) retire les fichiers des travaux dès ceux-ci sont complétés, annulés ou abandonnés.

### Printcap

#### Exemples

    Printcap
    Printcap /etc/printcap
    Printcap /etc/printers.conf

#### Description

La directive `Printcap` contrôle si le fichier printcap est automatiquement généré et mis à jour ou non avec une liste des imprimantes disponibles. Si la directive est utilisée sans valeur, alors aucun fichier printcap ne sera généré. La valeur implicite est de générer un fichier nommé /etc/printcap.

Quand un nom de fichier est indiqué (par exemple /etc/printcap ), le fichier printcap est écrit dès qu'une imprimante est ajoutée ou supprimée. Le fichier printcap peut alors être utilisé par les applications dont l'utilisation du fichier printcap comme référence des imprimantes disponibles est codée en dur.

### PrintcapFormat

#### Exemples

    PrintcapFormat BSD
    PrintcapFormat Solaris

#### Description

La directive `PrintcapFormat` contrôle le format de sortie du fichier printcap. Le comportement implicite est de générer un fichier printcap de type BSD.

### PrintcapGUI

#### Example

    PrintcapGUI /usr/bin/glpoptions

#### Description

La directive `PrintcapGUI` indique le programme à utiliser pour afficher le panneau d'options à partir d'une application IRIX qui utiliser l'API d'impression Impressario. Le programme implicite est le programme graphique "glpoptions" d'ESP Print Pro.

Le programme doit accepter l'option `-d` pour indiquer l'imprimante et l'option `-o` pour indiquer une ou plusieurs options. Après avoir autorisé l'utilisateur à sélectionner/changer les options, le programme doit écrire la liste des options d'impression sans le `-o` sur la sortie standard.

### RemoteRoot

#### Exemples

    RemoteRoot remroot
    RemoteRoot root

#### Description

La directive `RemoteRoot` fixe le nom d'utilisateur à utiliser pour les requêtes root non authentifiées depuis des hôtes distants. Le nom d'utilisateur standard est remroot. Régler `RemoteRoot` sur root désactive effectivement ce mécanisme de sécurité.

### RequestRoot

#### Exemples

    RequestRoot /var/spool/cups
    RequestRoot /foo/bar/spool/cups

#### Description

La directive `RequestRoot` définit le répertoire pour les requêtes entrantes IPP et les formulaires HTML. Si un chemin absolu n'est pas fourni alors il est considéré comme relatif au répertoire `ServerRoot`. Le répertoire implicite est /var/spool/cups.

### Require

#### Exemples

    Require group foo bar
    Require user john mary
    Require valid-user

#### Description

La directive `Require` indique que l'authentification est nécessaire pour l'accès à la ressource considérée. Le mot clef `group` indique que l'utilisateur authentifié doit être membre d'un ou plusieurs des groupes qui suivent.

Le mot clef `user` indique que l'utilisateur authentifié doit être l'un des utilisateurs dont les noms suivent.

Le mot clef `valid-user` indique que tout utilisateur authentifié peut accéder à la ressource.

Le comportement implicite ("par défaut") est de ne faire aucune authentification. Cette directive doit apparaître à l'intérieur d'une directive `Location`.

### RIPCache

#### Exemples

    RIPCache 8m
    RIPCache 1g
    RIPCache 2048k

#### Description

La directive `RIPCache` définit la quantité de mémoire utilisée par les filtres RIP ("Raster Images Processor") tels que `imagetoraster` et `pstoraster`. La taille peut être suffixée par "k" pour kilo-octets, "m" pour méga-octets, ou "g" pour giga-octets. La taille implicite est de "8m", ou 8 méga-octets.

### RunAsUser

#### Exemples

    RunAsUser Yes
    RunAsUser No

#### Description

La directive `RunAsUser` contrôle si l'ordonnanceur fonctionne sous l'identité d'un compte utilisateur non privilégié (habituellement `lp`). La valeur implicite est `No` qui laisse l'utilisateur fonctionner en tant qu'utilisateur `root` .

Note: Faire fonctionner CUPS en tant qu'utilisateur non privilégié peut empêcher LPD et les imprimantes connectées localement de fonctionner correctement en raison de problèmes de permissions. Le programme d'arrière-plan `lpd` utilisera automatiquement le mode non privilégié ce qui est 100% conforme à la RFC 1179. Les programmes d'arrière-plan `parallel`, `serial`, et `usb` auront besoin d'accès en écriture aux fichiers de périphériques correspondants.

### Satisfy

#### Exemples

    Satisfy all
    Satisfy any

#### Description

La directive `Satisfy` indique si toutes les conditions doivent être satisfaites pour ouvrir l'accès à la ressource. Si la valeur est `all` alors toutes les conditions d'authentification et de contrôle d'accès doivent être satisfaites pour que l'accès soit autorisé.

Régler `Satisfy` à la valeur `any` autorise un utilisateur à obtenir l'accès si l'authentification ou le contrôle d'accès est satisfait. Par exemple, vous pourriez exiger l'authentifiation pour l'accès à distance mais autoriser l'accès local sans elle.

La valeur implicite est `all`. Cette directive doit apparaître à l'intérieur d'une directive `Location`.

### ServerAdmin

#### Exemples

    ServerAdmin user@host
    ServerAdmin root@foo.bar.com

#### Description

La directive `ServerAdmin` identifie l'adresse de courriel de l'administrateur du système. La valeur implicite est `root@serveur`, où `server` est le nom du serveur.

### ServerBin

#### Exemples

    ServerBin /usr/lib/cups
    ServerBin /foo/bar/lib/cups

#### Description

La directive `ServerBin` définit le répertoire contenant les fichiers exécutables du serveur. Si un chemin absolu n'est pas indiqué, il est considéré comme relatif au répertoire `ServerRoot` . Le répertoire implicite est /usr/lib/cups.

### ServerCertificate

#### Exemples

    ServerCertificate /etc/cups/ssl/server.crt

#### Description

La directive `ServerCertificate` définit l'emplacement du fichier de certificat SSL utilisé par le serveur lors de la négociation des connexions encryptées. Le certificat ne doit pas être encrypté (protégé par un mot de passe) car l'ordonnanceur fonctionne normalement en arrière-plan et et ne sera pas en mesure de demander un mot de passe. Le fichier standard de certificat est /etc/cups/ssl/server.crt.

### ServerKey

#### Exemples

    ServerKey /etc/cups/ssl/server.key

#### Description

La directive `ServerKey` indique l'emplacement du fichier de clé privée SSL utilisé par le serveur pour négocier les connexions encryptées. Le fichier standard de clé est /etc/cups/ssl/server.crt .

### ServerName

#### Exemples

    ServerName foo.domain.com
    ServerName myserver.domain.com

#### Description

La directive `ServerName` indique le nom d'hôte qui doit être envoyé aux clients. En standard, le nom du serveur est le nom d'hôte.

### ServerRoot

#### Exemples

    ServerRoot /etc/cups
    ServerRoot /foo/bar/cups

#### Description

La directive `ServerRoot` indique un chemin absolu pour les fichiers de configuration et d'état du serveur. Il est également utilisé pour interpréter les chemins relatifs présents dans le fichier cupsd.conf file. Le répertoire standard est /etc/cups.

### SSLListen

#### Exemples

    SSLListen 127.0.0.1:443
    SSLListen 192.0.2.1:443

#### Description

La directive `SSLListen` indique une adresse réseau et un port sur lequel écouter les tentatives de connexion sécurisées. Plusieurs directives `SSLListen` peuvent être fournies pour indiquer plusieurs adresses sur lesquelles écouter.

La directive `SSLListen` est similaire à la directive `SSLPort` mais vous permet de restreindre l'accès à certaines interfaces ou réseaux.

### SSLPort

#### Exemples

    SSLPort 443

#### Description

La directive `SSLPort` indique le port sur lequel écouter les tentatives de connexions sécurisées. Plusieurs lignes `SSLPort` peuvent être indiquées pour écouter les connexions sur plusieurs ports.

### SystemGroup

#### Exemples

    SystemGroup sys
    SystemGroup system
    SystemGroup root

#### Description

La directive `SystemGroup` indique le groupe système d'aministration pour l'authentification de type `System`. Plus d'information peut être trouvée plus loin dans ce chapitre dans la section "Sécurité du système d'impression" .

### TempDir

#### Exemples

    TempDir /var/tmp
    TempDir /foo/bar/tmp

#### Description

La directive `TempDir` indique un chemin absolu pour le répertoire à employer pour les fichiers temporaires. Le répertoire standard est /var/tmp.

Les répertoires temporaires doivent être inscriptibles pour tous et devraient avoir le "sticky" bit activé de sorte que les utilisateurs ne puissent pas supprimer les fichiers temporaires de filtres. Les commandes suivantes créerons un répertoire temporaire approprié appelé /foo/bar/tmp:

    mkdir /foo/bar/tmp ENTREE
    chmod a+rwxt /foo/bar/tmp ENTREE

### Timeout

#### Exemples

    Timeout 300
    Timeout 90

#### Description

La directive `Timeout` définit le délai à attendre avant qu'une requête HTTP ou IPP active ne soit hors délai. La valeur implicite est de 300 secondes.

### User

#### Exemples

    User lp
    User guest

#### Description

La directive `User` indique l'utilisateur UNIX sous l'identité duquel les programmes CGI et les filtres doivent fonctionner. La valeur implicite est `lp`.

## Sécurité du système d'impression

CUPS prend en charge le contrôle d'accès et l'authentification basée sur l'adresse, un certificat ou un mot de passe (mode "Basic" et "Digest"). Les authentifications par mot de passe et certificat fournissent des moyens de limiter l'accès à certaines personnes ou certains groupes.

Le contrôle d'accès basé sur l'adresse vous permet de limiter l'accès à certains systèmes, réseaux ou domaines particuliers. Bien que cela ne soit pas de l'authentification, cela vous permet de restreindre efficacement le nombre potentiel d'utilisateurs de votre système.

CUPS maintient à jour une liste des emplacements dont l'authentification et/ou le contrôle d'accès est/sont activé(e)(s). Ces emplacements sont indiqués en utilisant la directive `Location`:

    <Location /ressource>
    AuthClass ...
    AuthGroupName ...
    AuthType ...

    Order ...
    Allow from ...
    Deny from ...
    </Location>

Les emplacements suivent généralement la structure arborescente du contenu du répertoire `DocumentRoot` , cependant CUPS possède de nombreux emplacements virtuels pour l'administration, les classes, les travaux d'impression et les imprimantes:

Emplacement | Description
--- | ---
/admin | Le chemin pour toutes les opérations d'administration.
/classes | Le chemin pour toutes les classes d'imprimantes.
/classes/nom_classe | Les ressources pour la classe nommée `nom_classe`.
/jobs | Le chemin pour tous les travaux d'impression.
/jobs/id | Les ressources pour le travail d'impression n°`id`.
/printers | Le chemin pour toutes les imprimantes.
/printers/nom_imprimante | Le chemin pour l'imprimante nommée `nom_imprimante`.
/printers/nom_imprimante.ppd | Le chemin du fichier PPD pour l'imprimante `nom_imprimante`.

### Authentification basée sur les certificats

CUPS prend en charge une authentification locale basée sur les certificats qui peut être utilisée à la place des authentifications "Basic" et "Digest" pour les clients se connectant à l'interface `localhost`. L'authentification par certificats n'est ni prise en charge, ni permise pour les clients se connectant par le biais de toute autre interface.

Les certificats sont des nombres aléatoires codés sur 128 bits qui font référence à un enregistrement interne d'authentification sur le serveur. Un client se connectant via l'interface `localhost` envoie une requête avec un en-tête d'autorisation:

    Authorization: Local 0123456789ABCDEF0123456789ABCDEF

Le serveur vérifie alors le certificat local correspondant et authentifie le nom d'utilisateur qui y est associé.

Les certificats sont automatiquement générés par le serveur et stockés dans le répertoire /etc/cups/certs en utilisant le n° de processus du programme CGI ("process ID") exécuté par le serveur. Les fichiers de certificats sont en lecture seule pour les utilisateurs `User` et groupes `Group` définis dans le fichier cupsd.conf. Quand le programme CGI se termine, le certificat est retiré et rendu automatiquement invalide.

Le fichier spécial /etc/cups/certs/0 définit le certificat de root qui peut être utilisé par tout client fonctionnant sous l'identité du super-utilisateur et qui appartient au group défini par la directive `SystemGroup` . Le certificat de root est automatiquement régénéré toutes les 5 minutes.

### Utilisation de l'authentification "Basic"

L'authentification "Basic" utilise les utilisateurs et mots de passe UNIX pour authentifier l'accès à des ressources telles que les imprimantes ou les classes et pour limiter l'accès aux fonctions d'administration.

NOTE:

L'authentification "Basic" transmet le nom d'utilisateur et le mot de passe en clair (encodage Base64) du client vers le serveur, donc elle n'offre aucune protection contre l'espionnage. Cela signifie qu'une utilisateur mal intentionné peut écouter les paquets réseau et découvrir ces informations. Il peut en résulter une sérieuse compromission de la sécurité de votre réseau. Utilisez l'authentification avec la plus grande prudence.

L'implémentation de l'authentification "Basic" dans CUPS ne permet pas l'accès en utilisant des comptes sans mot de passe. Si vous tentez d'authentifier un tel compte, l'accès sera immédiatement bloqué.

Une fois le nom d'utilisateur et le mot de passe authentifiés par CUPS, les contraintes supplémentaires d'appartenance à des groupes sont vérifiées

NOTE: Pour CUPS, l'utilisateur root est considéré comme membre de tous les groupes.

Utilisez la directive `AuthType` pour activer l'authentification "Basic":

    AuthType Basic

### Utilisation de l'authentification "Digest"

L'authentification "Digest" utilise des utilisateurs et mots de passe définis dans le fichier /etc/cups/passwd.md5 pour authentifier l'accès aux ressources telles que les imprimantes et les classes et pour limiter l'accès aux fonctions d'administration.

NOTE:

Contrairement à l'authentification "Basic", "Digest" transmet une version codée du nom d'utilisateur et du mot de passe en utilisant le codage MD5 (en résumé, une somme de contrôle compliquée) au lieu de leur version en clair. De plus, l'authentification "Digest" n'utilise pas les utilisateurs et mots de passe UNIX, ainsi si un attaquant découvre le mot de passe original il est moins probable qu'il en résulte un problème de sécurité, pour peu que vous utilisiez un mot de passe "Digest" différent de celui stocké par UNIX.

L'implémentation actuelle de l'authenfication "Digest" dans CUPS utilise le nom d'hôte du client ou son adresse IP comme valeur "nonce". La valeur "nonce" est une chaîne de caractères additionnelle ajoutée au nom d'utilisateur et au mot de passe pour rendre la découverte de ce dernier plus difficile. Le serveur vérifie que la valeur "nonce" correspond au nom d'hôte ou l'adresse IP du client et, si tel n'est pas le cas, rejette la somme MD5 proposée par celui-ci. Les prochaines versions de CUPS prendront en charge l'authentification "Digest" par "session" qui ajoutera les données de la requête à la somme MD5, fournissant ainsi une sécurité et une authentification encore meilleures.

L'authentification "Digest" ne garantit pas qu'un attaquant ne peut pas obtenir un accès non autorisé mais elle est plus sûre que l'authentification "Basic" et devrait être utilisée à la place de celle-ci chaque fois que c'est possible. La prise en charge de l'authentification "Digest" dans les navigateurs "web" n'est pas encore universellement disponible.

La commande `lppasswd(1)` est utilisée pour ajouter, changer et retirer des comptes du fichier passwd.md5. Pour ajouter un utilisateur au groupe système standard, tapez:

    lppasswd -a utilisateur ENTREE
    Password: (mot de passe) ENTREE  [le mot de passe n'est pas affiché]
    Password again: (mot de passe) ENTREE [le mot de passe n'est pas affiché]

Une fois ajouté, un utilisateur peut changer son mot de passe en tapant:

    lppasswd ENTREE
    Old Password: (mot de passe) ENTREE  [le mot de passe n'est pas affiché]
    Password : (mot de passe) ENTREE [le mot de passe n'est pas affiché]
    Password again: (mot de passe) ENTREE [le mot de passe n'est pas affiché]

Pour retirer un utilisateur du fichier des mots de passe, tapez:

    lppasswd -x utilisateur ENTREE

Une fois qu'un utilisateur et un mot de passe valides ont été authentifiés pas CUPS, celui-ci vérifie les contraintes supplémentaires d'appartenance à des groupes.

NOTE: Pour CUPS, l'utilisateur root est membre de tous les groupes.

Utilisez la directive `AuthType` pour activer l'authentification "Digest":

    AuthType Digest

### Authentifications "System" et "Group"

La directive `AuthClass` contrôle le niveau d'authentification à effectuer. Les authentifications `System` et `Group` ajoutent à l'authentification normale basée sur l'utilisateur une contrainte d'appartenance à un groupe UNIX. Pour l'authentification `System`, chaque utilisateur doit être membre du groupe `sys`, `system` , ou `root`; le groupe réel dépend du système d'exploitation.

Pour l'authentification `Group` l'utilisateur doit être membre du group indiqué par la directive `AuthGroupName`:

    <Location /path>
    AuthType Digest
    AuthClass Group
    AuthGroupName mygroup
    </Location>

Le groupe indiqué doit être un groupe UNIX valide, habituellement défini dans les fichiers /etc/group ou /etc/netgroup . De plus, lors de l'utilisation de l'authentification "Digest", vous devez créer les comptes utilisateur avec le groupe indiqué:

    lppasswd -g mon_groupe -a utilisateur ENTER
    Password : (mot de passe) ENTREE [le mot de passe n'est pas affiché]
    Password again: (mot de passe) ENTREE [le mot de passe n'est pas affiché]

## Suivi/facturation de travaux et d'imprimantes

ESP Print Pro maintient à jour un suivi ("log") de tous les accès, erreurs et pages qui sont imprimées. Les fichiers de suivi sont normalement stockés dans le répertoire /var/log/cups. Vous pouvez changer cela en éditant le fichier de configuration /etc/cups/cupsd.conf.

### Le fichier access_log

Le fichier access_log liste chaque ressource HTTP qui est utilisée par le serveur "web" ou un client CUPS/IPP. Chaque ligne est structurée dans le format habituel utilisé par de nombreux serveurs "web" et outils d'analyse.:

    Hôte Groupe Utilisateur Date/heure \"Méthode Ressource Version\" Etat Octets

    127.0.0.1 - - [20/May/1999:19:20:29 +0000] "POST /admin/ HTTP/1.1" 401 0
    127.0.0.1 - mike [20/May/1999:19:20:31 +0000] "POST /admin/ HTTP/1.1" 200 0

Le champ hôte ne devrait normalement être qu'une adresse IP à moins que vous n'activiez la directive `HostNameLookups` dans le fichier cupsd.conf.

Le champ groupe contient toujours "-" dans CUPS.

Le champ utilisateur est le nom de l'utilisateur authentifié qui a émis la requête. Si aucun nom d'utilisateur et mot de passe n'est fourni pour la requête, alors ce champ contient "-".

Le champ date/heure contient la date et l'heure de la requête exprimées dans le fuseau horaire local, et est structuré de la manière suivante:

    [JJ/MMM/AAAA:HH:MM:SS +ZZZZ]

où ZZZZ est le décalage horaire entre le fuseau horaire local et l'heure Greenwich Mean Time (a.k.a. GMT a.k.a. ZULU.) (NdT : en réalité GMT est un abus de langage, il s'agit du temps UTC...)

Le champ méthode est la méthode HTTP utilisée ("GET", "PUT", "POST", etc.)

Le champ ressource est le nom du fichier de la ressource demandée.

Le champ version est la version du protocole HTTP employé par le client. Pour les clients CUPS, c'est toujours "HTTP/1.1".

Le champ Etat contient l'état du résultat HTTP de la requête. Habituellement, il s'agit de la valeur "200", mais d'autres codes d'état HTTP sont possibles. Par exemple, 401 est le code d'état pour "accès non autorisé" dans l'exemple ci-dessus.

Le champs octets contient le nombre d'octets contenus dans la requête. Pour les requêtes POST, le champ octets contient le nombre d'octets reçus du client.

### Le fichier error_log

Le fichier error_log liste les messages provenant de l'ordonnanceur (erreurs, avertissements, etc.):

    Niveau Date/Heure Message

    I [20/May/1999:19:18:28 +0000] Job 1 queued on 'DeskJet' by 'mike'.
    I [20/May/1999:19:21:02 +0000] Job 2 queued on 'DeskJet' by 'mike'.
    I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.

Le champ Niveau contient le type du message:

- `E` - Une erreur est survenue.
- `W` - Le serveur a été incapable d'effectuer une action.
- `I` - Message d'information.
- `D` - Message de débogage.

Le champ Date/heure contient la date et l'heure de début d'impression de la page. Le format est identique à celui du champ Date/heure dans le fichier access_log.

Le champ Message contient un message textuel dont la forme est libre.

### Le fichier page_log

Le fichier page_log liste chaque page qui est envoyée à une imprimante. Chaque ligne contient les informations suivantes:

    Imprimante Utilisateur N°travail Date/heure N°Page Nombre_copies Facturation_travail

    DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 0 acme-123

Le champ imprimante contient le nom de l'imprimante qui a imprimé la page. Si vous envoyez un travail d'impression à une classe, le champ contient le nom de l'imprimante à laquelle ce travail a été affecté..

Le champ utilisateur contient le nom de l'utilisateur (l'attribut `requesting-user-name` de IPP) qui a envoyé le fichier à l'impression.

Le champ N°Travail contient le n° du travail correspondant à la page en cours d'impression. Les n° de travaux sont remis à 1 si le serveur CUPS est redémarré, donc ne le considérez pas comme un identifiant unique !

Le champ Date/heure contient la date et l'heure de démarrage de l'impression dans un format identique au champ Date/heure du fichier access_log.

Les champs N°Page et Nombre_copies contiennent le n° de page imprimée et le nombre de copies de cette page. Pour les imprimantes qui ne peuvent pas produire de copies multiples de manière autonome, le champ Nombre_copies est toujours à 1.

Le champ facturation_travail contient une copie de l'attribut `job-billing` fourni dans les requête IPP `create-job` ou `print-job`. Si aucune valeur n'est fournie dans la requête, ce champ contient "-".

## Filtrage et détermination des types de fichiers

CUPS fournit un mécanisme de filtrage et de détermination du type de fichier basé sur MIME, afin de convertir les fichiers dans un format utilisable par chaque imprimante. Au démarrage, le serveur CUPS lit les fichiers de la base de données MIME contenus dans le répertoire /etc/cups (ou un répertoire indiqué au moyen de la directive `ServerRoot`) afin de construire en mémoire une base de données de conversion et de types de fichiers. Ces fichiers de base de données sont de simples fichiers texte ASCII et peuvent être modifiés au moyen de votre éditeur de texte préféré.

Les fichiers mime.types et mime.convs définissent les types de fichiers standards et les filtres qui sont disponibles sur le système.

### Le fichier mime.types

Le fichier mime.types définit les types de fichiers connus. Chaque ligne débute par le type MIME et devrait être suivi par une ou plusieurs règles de reconnaissance de fichier. Par exemple, le type de fichier `text/html` est défini de la manière suivante:

    text/html       html htm \
                    printable(0,1024) + \
                    (string(0,"<HTML>") string(0,"<!DOCTYPE"))

Les deux premièress règles indiquent que tout fichier portant l'extension .html ou .htm est un fichier HTML. La troisième règle précise que tout fichier dont les 1024 premiers caractères sont des caractères imprimables et commencent par les chaînes `<HTML>` ou `<!DOCTYPE` est également un fichier HTML.

Les deux premières règle traitent simplement du nom du fichier. Cela est utile lorsque le nom du fichier original est connu, cependant pour les fichiers d'impression le serveur ne dispose pas de nom de fichier. La troisième règle prend garde à cette éventualité et détermine automatiquement le type du fichier en se basant plutôt sur son contenu.

Les test applicables sont les suivants:

- `( expr )` - Parenthèses pour grouper les expressions
- `+` - ET logique
- `,` ou espace vide - OU logique
- `!` - NON logique
- `match("pattern")` - Recherche de motif sur le nom de fichier
- `extension` - Recherche de motif sur "*.extension"
- `ascii(offset,length)` - Vrai si les octets sont des caractères ASCII imprimables (CR, NL, TAB, BS, 32-126)
- `printable(offset,length)` - Vrai si les octets sont des caractères 8 bits imprimables (CR, NL, TAB, BS, 32-126, 160-254)
- `string(offset,"chaîne")` - Vrai si les octets sont identiques à la chaîne
- `contains(offset,range,"chaîne")` - Vrai si la plage d'octets contient la chaîne
- `char(offset,value)` - Vrai si l'octet correspond
- `short(offset,value)` - Vrai si l'entier sur 16 bits correspond (ordre des octets : "network" ou "big-endian")
- `int(offset,value)` - Vrai si l'entier sur 32 bits correspond (ordre des octets : "network" ou "big-endian")
- `locale("string")` - Vrai si la locale courante correspond à la chaîne

Toutes les valeurs numériques peuvent être exprimées en décimal (123), octal (0123), ou hexadécimal (0x123) selon le cas.

Les chaînes de caractères peuvent être délimitées par des quotes, sans quotes, sous forme d'une chaîne de valeurs hexadécimales ou toute combinaison de ces écritures:

    "chaîne"
    'chaîne'
    chaîne
    <737472696e67>
    <7374>ring

Comme le montre l'exemple `text/html`, les règles peuvent être réparties sur plusieurs lignes en utilisant le caractère "backslash" ("\"). Un exemple plus complexe est fourni par les règles de détermination du type `image/jpeg`:

    image/jpeg      jpeg jpg jpe string(0,<FFD8FF>) &&\
                    (char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\
                     char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
                     char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
                     char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))

Cette règle indique que tout fichier avec l'extension .jpeg , .jpg, ou .jpe est un fichier JPEG. De plus, tout fichier commençant par la chaîne hexadécimale `<FFD8FF>` (JPEG Start-Of-Image) suivie d'un caractère compris entre `0xe0` et `0xef` (JPEG APPn markers) bornes comprises, est également un fichier JPEG.

### Le fichier mime.convs

Le fichier mime.convs définit tous les programmes de filtrage qui sont connus du système. Chaque ligne est de la forme:

    Source Destination Coût Programme

    text/plain application/postscript 50 texttops
    application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
    image/* application/vnd.cups-postscript 50 imagetops
    image/* application/vnd.cups-raster 50 imagetoraster

Le champ Source est un type MIME. Il peut éventuellement utiliser des méta caractères ("joker", "wildcard") pour le sur-type ou le sous-type (par exemple "text/plain", "image/*", "*/postscript").

Le champ Destination est un type MIME défini dans le fichier mime.types.

Le champ Coût définit un coût relatif pour l'opération de filtrage, exprimé sous forme d'une valeur entre 1 et 100. Le coût est utilisé pour choisir entre deux jeux de filtres lors de la conversion d'un fichier. Par exemple, pour convertir `image/jpeg` en `application/vnd.cups-raster`, vous pourriez utiliser les filtres `imagetops` et `pstoraster` pour un coût total de 100, ou le filtre `imagetoraster` pour un coût total de 50.

Le champ Programme définit le programme de filtrage à exécuter; le programme doit accepter les arguments standards de filtrage et les variables d'environnement décrits dans le "Manuel de conception d'interface" ainsi que le "Manuel du programmeur":

    Programme Travail Utilisateur Titre Options [nom_fichier]

S'il est indiqué, l'argument nom_fichier définit un fichier à lire lors du filtrage, sinon le filtre doit lire l'entrée standard. Toutes les sorties du programme de filtrage doivent être envoyées à la sortie standard.

### Ajouter des filtres et des types de fichiers

Ajouter un nouveau filtre ou type de fichier est relativement simple. Plutôt qu'ajouter le nouveau filtre ou type aux fichiers mime.types et mime.convs qui sont écrasés lorsque vous mettez CUPS à jour avec une nouvelle version, vous devez simplement créer de nouveaux fichiers avec les extensions .types et .convs dans le répertoire /etc/cups. Nous recommandons d'utiliser le nom du format ou du produit, par exemple:

    myproduct.types
    myproduct.convs

Si vous installez un filtre pour un fichier ou une imprimante courants, ajoutez le nom du fabricant ou de l'éditeur:

    acme-msword.types
    acme.msword.convs

Cela aidera à éviter les conflits de noms si vous installez plusieurs types de fichiers ou plusieurs filtres.

Une fois choisis les noms pour ces fichiers, créez-les au moyen de votre éditeur de texte préféré comme décrit précédemment dans ce chapitre. Une fois ces fichiers créés, redémarrez le processus `cupsd` comme indiqué précédemment dans "Redémarrage du serveur CUPS" .

### Pilotes d'imprimantes et fichiers PPD

Plusieurs pilotes d'imprimante CUPS utilisent un ou plusieurs filtres spécifiques et un fichier PPD pour chaque modèle d'imprimante. Les filtres pilotes d'imprimante sont enregistrés au moyen des attributs du fichier `cupsFilter`:

    *cupsFilter: "application/vnd.cups-raster 0 rastertohp"

Le filtre est indiqué en utilisant seulement le type du fichier source; le type du fichier destination est considéré comme étant du type `imprimante/nom` - convenable pour envoi à l'imprimante.

### Ecrire vos propres filtres ou pilotes d'imprimantes

CUPS prend en charge un nombre illimité de filtres et de formats de fichiers, et peut traiter avec toute imprimante. Si vous désirez écrire un pilote ou un filtre pour votre imprimante préférée, consultez le "Manuel du programmeur" et suivez pas à pas les instructions qu'il contient.

# 7 - Imprimer depuis et vers d'autres systèmes

Ce chapitre décrit comment imprimer depuis des système clients qui utilisent les protocoles d'impression LPD, Mac OS ou Windows.

## Les bases

CUPS est basé sur le protocole IPP, ainsi tout autre système prenant en charge IPP peut automatiquement envoyer ou recevoir des travaux d'impression vers ou depuis un système utilisant CUPS. Cependant, tous les systèmes ne prennent pas encore en charge IPP. Ce chapitre vous montrera comment connecter ces systèmes à votre serveur CUPS, que ce soit pour qu'ils puissent accepter des travaux provenant de celui-ci ou pour lui en envoyer.

## Imprimer depuis des clients LPD

CUPS prend en charge un nombre limité des fonctionnalités des clients basés sur LPD. Avec LPD vous pouvez imprimer des fichiers vers des imprimantes déterminées, voir l'état des files d'impression, etc. Cependant, la configuration automatique des clients et des imprimantes n'est pas prise en charge par le protocole LPD, donc vous devez configurer manuellement chaque client pour les imprimantes auxquelles il a besoin d'accéder.

Le programme `cups-lpd(8)` fournit la prise en charge pour les clients LPD. Pour activer la prise en charge LPD sur votre serveur, éditez le contenu du fichier /etc/inetd.conf et ajoutez une ligne:

    printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd

Le chemin vers le programme `cups-lpd` peut varier en fonction de l'installation de votre serveur.

Une fois cette ligne ajoutée, envoyez un signal `HUP` au processus `inetd(8)` ou redémarrez le système (NdT : le redémarrage du système n'est pas des plus élégants...):

    killall -HUP inetd ENTREE [sur IRIX et quelques distributions GNU/Linux]
    kill -HUP pid ENTREE [Autres systèmes]
    reboot ENTREE [Pour tous les systèmes si le signal HUP ne fonctionne pas (NdT : ...en DERNIER recours, uniquement...)]

## Imprimer vers des serveurs LPD

CUPS fournit le programme d'arrière-plan `lpd` pour imprimer vers des serveurs et imprimantes utilisant LPD. Utilisez un URI de périphérique de la forme `lpd://serveur/nom` pour imprimer ver une imprimante sur un serveur LPD, où `serveur` est le nom d'hôte ou l'adresse IP du serveur et `nom` est le nom de la file d'impression.

Microsoft Windows NT fournit un service LPD sous le nom "Serveur d'impression TCP/IP". Pour activer l'impression sur un système Windows NT, ouvrez le panneau de configuration puis "Services", sélectionnez le service "Serveur d'impression TCP/IP" et cliquez sur le bouton "Démarrer". Toute imprimante partagée devient alors accessible via le protocole LPD.

## Imprimer depuis des client Mac OS

NdT : je ne suis pas spécialiste Mac et je ne dispose pas de ce type de matériel. Il se peut qu'il y ait quelques imprécisions ou erreurs dans ce qui suit, faîtes-moi l'amitié de me les pardonner ET de me les signaler. Merci par avance...

CUPS ne fournit pas de prise en charge directe de Mac OS. Cependant, il existe plusieurs logiciels libres ou commerciaux qui le font.

### Columbia Appletalk Package (CAP)

Etant donné que le serveur CAP LaserWriter (`lwsrv(8)`) ne prend pas en charge les spécifications des fichiers PPD, nous ne recommandons pas l'utilisation de CAP avec CUPS. Cependant, vous pouvez exécuter le programme `lpsrv` pour une prise en charge limitée de l'impression au moyen de la syntaxe suivante:

    lwsrv -n "Nom" -p Imprimante -a /usr/lib/adicts -f /usr/lib/LW+Fonts

où `Nom` est le nom que vous voulez utiliser pour partager l'imprimante et `imprimante` est le nom de la file d'impression.

### XINET KA/Spool

Afin d'utiliser votre système comme serveur d'impression pour des clients Mac OS, configurez chaque imprimante en utilisant `papserver(8)` dans le fichier /usr/adm/appletalk/services , et en indiquant le fichier PPD correspondant dans le répertoire /etc/cups/ppd. Pour une imprimante appelée `Mon_Imprimante` la syntaxe serait de la forme suivante:

    /usr/etc/appletalk/papserver -I -L -P /etc/cups/ppd/Mon_Imprimante.ppd \
    "Printer Description" Mon_Imprimante

NOTE: Entrez le texte ci-dessus sur une seule ligne sans le caractère "\".

### NetATalk

Pour utiliser votre système comme serveur d'impression pour des clients Mac OS, configurez chaque imprimante dans le fichier papd.conf, en indiquant le fichier PPD correspondant dans le répertoire /etc/cups/ppd pour chaque imprimante. Pour une imprimante nommée `Mon_Imprimante` le texte serait de la forme suivante:

    Printer Description:Mon_Imprimante@Mon_Serveur:\
            :pr=|/usr/bin/lp -d Mon_Imprimante:\
            :op=daemon:\
            :pd=/etc/cups/ppd/Mon_Imprimante.ppd:

## Imprimer vers des serveurs d'impression Mac OS

Actuellement, CUPS ne fournit pas de programme d'arrière-plan pour communiquer avec un serveur Mac OS. Cependant, vous pouvez écrire et installer un court script dans le répertoire /usr/lib/cups/backend qui envoie un fichier d'impression en utilisant la commande appropriée. Le court script suivant exécutera la commande `papif` fournie avec CAP.

Après avoir copié le script dans /usr/lib/cups/backend/cap , indiquez un URI de périphérique de la forme `cap://serveur/imprimante` pour utiliser ce script avec une file d'impression.

    "/usr/lib/cups/backend/cap"
    #!/bin/sh
    #
    # Usage: cap job user title copies options [filename]
    #

    # No arguments means show available devices...

    if test ${#argv} = 0; then
    	echo "network cap \"Unknown\" \"Mac OS Printer via CAP\""
    	exit 0
    fi

    # Collect arguments...

    user=$2
    copies=$4

    if test ${#argv} = 5; then
    	# Get print file from stdin; copies have already been handled...
    	file=/var/tmp/$$.prn
    	copies=1
    	cat > $file
    else
    	# Print file is on command-line...
    	file=$6
    fi

    # Create a dummy cap.printers file for this printer based
    # upon a device URI of "cap://server/printer"...

    echo $PRINTER/$DEVICE_URI | \
    	awk -F/ '{print $1 "=" $5 ":LaserWriter@" $4}' > /var/tmp/$$.cap

    CAPPRINTERS=/var/tmp/$$.cap; export CAPPRINTERS

    # Send the file to the printer, once for each copy. This assumes that you
    # have properly initialized the cap.printers file...

    while [ $copies -gt 0 ]; do
    	papif -n $user < $file

            copies=`expr $copies - 1`
    done

    # Remove any temporary files...
    if test ${#argv} = 5; then
    	/bin/rm -f $file
    fi

    /bin/rm -f /var/tmp/$$.cap

    exit 0

## Imprimer depuis des clients Windows

Bien que CUPS ne fournisse directement pas de prise en charge de Windows, le logiciel libre SAMBA le fait. La version 2.0.6 de SAMBA est la première qui prenne en charge CUPS. Vous pouvez télécharger SAMBA à l'adresse :

    http://www.samba.org

Pour configurer SAMBA pour CUPS, éditez le contenu du fichier smb.conf et remplacez les commandes d'impression existantes par les lignes:

    printing = cups
    printcap name = cups

C'est tout ce qu'il y a à faire! Les utilisateurs distants pourront désormais explorer les imprimantes de votre système et leur envoyer des travaux d'impression.

### Exporter les pilotes d'imprimantes

Vous pouvez éventuellement exporter des pilotes d'imprimantes de votre serveur CUPS en utilisant la commande `cupsaddsmb` et le logiciel SAMBA 2.2.0 ou supérieur.

Avant de pouvoir exporter les pilotes d'imprimantes, vous devez télécharger les pilotes d'imprimantes actuels Adobe PostScript à partir du site "web" Adobe ( http://www.adobe.com/). Utilisez le logiciel libre `unzip` pour extraire les fichiers des archives ZIP auto-extractibles contenant les pilotes; vous aurez besoin des fichiers suivants:

    ADFONTS.MFM
    ADOBEPS4.DRV
    ADOBEPS4.HLP
    ADOBEPS5.DLL
    ADOBEPSU.DLL
    ADOBEPSU.HLP
    DEFPRTR2.PPD
    ICONLIB.DLL
    PSMON.DLL

Copiez ces fichiers dans le répertoire /usr/share/cups/drivers - vous pourriez avoir à renommer certains fichiers de sorte que tous les noms soient complètement en majuscules.

Ensuite, ajouter un partage d'imprimante `print$` pour les pilotes d'imprimantes à votre fichier smb.conf:

    [print$]
        comment = Pilotes d'imprimantes
        path = /etc/samba/drivers
        browseable = yes
        guest ok = no
        read only = yes
        write list = root

Le répertoire de vos pilotes d'imprimantes peut être n'importe où dans le système; assurez-vous simplement qu'il est accessible en écriture aux utilisateurs indiqués par la directive `write list` . Assurez-vous également que chaque utilisateur de la liste `write list` possède un mot de passe SAMBA en utilisant la commande `smbpasswd(1)` sinon vous ne pourrez pas vous authentifier.

Enfin, exécutez la commande `cupsaddsmb` pour exporter les pilotes d'imprimantes pour une ou plusieurs files d'impression:

    cupsaddsmb -U root printer1 ... printerN ENTREE

Exécuter la commande `cupsaddsmb` avec l'option `-a` exportera les imprimantes:

    cupsaddsmb -U root -a ENTREE

## Imprimer vers des serveurs d'impression Windows

CUPS peut imprimer vers des serveurs Windows de deux façons. La première utilise le protocole LPD sur le système CUPS et le service "Serveur d'impression TCP/IP" sur le système Windows NT. Vous pouvez trouver plus d'information au sujet de la première configuration dans la section précédente LPD de ce chapitre.

La seconde méthode utilise le protocole SMB de Microsoft ("Server Message Block"). La prise en charge de ce protocole est fournie par le logiciel libre SAMBA. Vous pouvez télécharger SAMBA à l'adresse suivante:

    http://www.samba.org

Pour configurer CUPS pour SAMBA, exécutez la commande suivante:

    ln -s `which smbspool` /usr/lib/cups/backend/smb ENTREE

Le programme `smbspool(1)` est fourni avec SAMBA depuis la version 2.0.6. Une fois que vous avez créé le lien vous pouvez configurer vos imprimantes en utilisant l'un des URI de périphérique suivants:

    smb://groupe_de_travail_ou_domaine/serveur/nom_partage
    smb://serveur/nom_partage
    smb://utilisateur:mot_de_passe@groupe_de_travail_ou_domaine/serveur/nom_partage
    smb://utilisateur:mot_de_passe@serveur/nom_partage

Le nom `groupe_de_travai_ou_domaine` doit être indiqué si votre système utilise un autre nom que la valeur standard de votre réseau. Les chaînes `utilisateur:mot_de_passe` sont nécessaires si vous imprimez vers des serveurs Windows NT ou des partages Windows 95/98 dont les mots de passe sont activés.

# A - Licence d'utilisation du logiciel

## Common UNIX Printing System License Agreement

(NdT : pour des raisons évidentes de droit, j'ai volontairement gardé la licence d'utilisation du logiciel et la licence GPL en anglais car une traduction de celles-ci pourrait donner lieu à des interprétations erronées... et en plus je ne suis pas juriste !)

Copyright 1997-2003 by Easy Software Products
44141 AIRPORT VIEW DR STE 204
HOLLYWOOD, MARYLAND 20636-3111 USA
Voice: +1.301.373.9600
Email: cups-info@cups.org
WWW: http://www.cups.org

### Introduction

The Common UNIX Printing SystemTM, ("CUPSTM"), is provided under the GNU General Public License ("GPL") and GNU Library General Public License ("LGPL"), Version 2. A copy of these licenses follow this introduction.

The GNU LGPL applies to the CUPS API library, located in the "cups" subdirectory of the CUPS source distribution and in the "/usr/include/cups" directory and "libcups.a", "libcups_s.a", "libcups.sl", or "libcups.so" files in the binary distributions.

The GNU GPL applies to the remainder of the CUPS distribution, including the "pstoraster" filter which is based upon GNU Ghostscript 5.50 and the "pdftops" filter which is based upon Xpdf 0.93a.

For those not familiar with the GNU GPL, the license basically allows you to:

- Use the CUPS software at no charge.
- Distribute verbatim copies of the software in source or binary form.
- Sell verbatim copies of the software for a media fee, or sell support for the software.
- Distribute or sell printer drivers and filters that use CUPS so long as source code is made available under the GPL.

What this license does not allow you to do is make changes or add features to CUPS and then sell a binary distribution without source code. You must provide source for any new drivers, changes, or additions to the software, and all code must be provided under the GPL or LGPL as appropriate.

The GNU LGPL relaxes the "link-to" restriction, allowing you to develop applications that use the CUPS API library under other licenses and/or conditions as appropriate for your application.

### Trademarks

Easy Software Products has trademarked the Common UNIX Printing System, CUPS, and CUPS logo. These names and logos may be used freely in any direct port or binary distribution of CUPS. To use them in derivative products, please contract Easy Software Products for written permission. Our intention is to protect the value of these trademarks and ensure that any derivative product meets the same high-quality standards as the original.

### Binary Distribution Rights

Easy Software Products also sells rights to the CUPS source code under a binary distribution license for vendors that are unable to release source code for their drivers, additions, and modifications to CUPS under the GNU GPL and LGPL. For information please contact us at the address shown above.

The Common UNIX Printing System provides a "pstoraster" filter that utilizes the GNU GhostScript 5.50 core to convert PostScript files into a stream of raster images. For binary distribution licensing of this software, please contact:

> Miles Jones
> Director of Marketing
> Artifex Software Inc.
> 454 Las Gallinas Ave., Suite 108
> San Rafael, CA 94903 USA
> Voice: +1.415.492.9861
> Fax: +1.415.492.9862
> EMail: info@arsoft.com

The "pdftops" filter is based on the Xpdf 0.93a software. For binary distribution licensing of this software, please contact:

> Derek B. Noonburg
> Email: derekn@foolabs.com
> WWW: http://www.foolabs.com/xpdf/

### Support

Easy Software Products sells software support for CUPS as well as a commercial printing product based on CUPS called ESP Print Pro. You can find out more at our web site:

    http://www.easysw.com

## GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

    Copyright 1989, 1991 Free Software Foundation, Inc.
    59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    Everyone is permitted to copy and distribute verbatim
    copies of this license document, but changing it is not allowed.

### Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

#### GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
   1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
   2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
   3. if the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
   1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
   2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
   3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

#### NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

#### END OF TERMS AND CONDITIONS

## GNU LIBRARY GENERAL PUBLIC LICENSE

Version 2, June 1991

    Copyright (C) 1991 Free Software Foundation, Inc.
    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
    Everyone is permitted to copy and distribute verbatim copies
    of this license document, but changing it is not allowed.

    [This is the first released version of the library GPL.  It is
     numbered 2 because it goes with version 2 of the ordinary GPL.]

### Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.

This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it.

For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights.

Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library.

Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license.

The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such.

Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better.

However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries.

The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library.

Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one.

#### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you".

A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.

The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)

"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.

1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

1. The modified work must itself be a software library.

2. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.

3. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.

4. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.

(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.

In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.

This option is useful when you wish to copy part of the code of the Library into a program that is not a library.

4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.

If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.

5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.

However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.

When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.

If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

1. Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

2. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

3. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.

4. Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:

1. Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.

2. Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.

10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.

14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

NO WARRANTY

15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

#### END OF TERMS AND CONDITIONS

# B - Réglages réseau courants

Cette annexe englobe de nombreux serveurs d'impression et interfaces réseau TCP/IP disponibles actuellement sur le marché.

## Configurer une interface réseau

Lorsque vous installez votre imprimante réseau ou votre serveur d'impression pour la première fois sur votre réseau local (LAN), vous devez configurer son adresse IP ("Internet Protocol"). Sur la plupart des imprimantes réseau pour groupe de travail, vous pouvez le faire directement au moyen du panneau de contrôle. Cependant, dans la plupart des cas, vous préfèrerez assigner l'adresse IP à distance depuis votre station de travail. Cela rend l'administration un peu plus simple et évite d'assigner accidentellement des adresses réseau eu doublons.

Pour configurer votre imprimante ou votre serveur d'impression pour une assignation à distance de l'adresse réseau, vous aurez besoin de son adresse MAC (ethernet Media Access Control), également appelée adresse de noeud ("node address") dans certains cas. Vous aurez également besoin de connaître l'adresse IP que vous voulez utiliser pour ce matériel. L'adresse MAC peut souvent être trouvée sur la page de test de l'imprimante ou sur son panneau arrière.

### Configuration de l'adresse IP utilisant ARP

La méthode la plus simple pour installer l'adresse IP d'un matériel réseau est d'utiliser la commande `arp(8)`. La commande `arp` envoie un paquet ARP ("Address Resolution Protocol") à l'adresse MAC indiquée tout en lui indiquant son adresse IP:

    arp -s adresse-ip adresse-mac ENTREE
    arp -s hote.domaine.com 08:00:69:00:12:34 ENTREE
    arp -s 192.0.2.2 08:00:69:00:12:34 ENTREE

### Configuration de l'adresse IP utilisant RARP

La manière la plus souple d'assigner une adresse IP sous UNIX est d'utiliser le protocole RARP ("Reverse Address Resolution Protocol"). RARP permet à un matériel réseau d'émettre une requête d'adresse IP en utilisant sont adresse MAC, un ou plusieurs serveurs RARP sur le réseau répondront à cette requête par un paquet ARP proposant une adresse IP que le matériel réseau peut utiliser.

RARP devrait être utilisé lorsque vous administrez de nombreuses imprimantes ou serveurs d'impression, ou quand un matériel réseau ne peut se "souvenir" de son adresse IP après chaque redémarrage. Si vous n'avez qu'une seule imprimante ou serveur d'impression, la commande `arp` est la plus adaptée.

Certains systèmes d'exploitation UNIX utilisent un programme nommé `rarpd(8)` pour administrer RARP. Les autres, tels que GNU/Linux, prennent en charge ce protocole à l'intérieur du noyau. Pour les systèmes qui utilisent le programme `rarpd` vous aurez besoin de le démarrer avant que les requêtes RARP commencent:

    rarpd ENTREE

Sous IRIX vous pouvez activer cette fonctionnalité en standard en utilisant la commande suivante:

    chkconfig rarpd on ENTREE

Le programme `rarpd` et la version noyau de la prise en charge RARP lisent toutes les deux une liste des adresses MAC et IP à partir d'un fichier /etc/ethers. Chaque ligne comporte l'adresse Ethernet suivie de l'adresse IP ou du nom d'hôte:

    08:00:69:00:12:34 mon_imprimante.mon_domaine.com
    08:00:69:00:12:34 192.0.2.2

Ajoutez une ligne à ce fichier et redémarrez l'imprimante ou le serveur d'impression pour qu'elle/il récupère son adresse IP.

### Configuration de l'adresse IP utilisant BOOTP

Le protocole BOOTP est utilisé quand vous avez besoin de fournir des informations supplémentaires à l'interface réseau telles que l'emplacement du fichier de configuration. En utilisant le programme standard `bootpd(8)` fourni sous UNIX, vous avez simplement besoin d'ajouter la ligne suivante au fichier /etc/bootptab pour IRIX:

    mon_imprimante 08:00:69:00:12:34 192.0.2.2 mon_imprimante.boot

Les versions plus récentes de `bootpd` utilisent un format différent:

    mon_imprimante:ha=080069001234:ip=192.0.2.2:t144=mon_imprimante.boot

Le fichier mon_imprimante.boot est situé en standard dans le répertoire /usr/local/boot Si vous n'avez pas besoin de fournir un fichier de démarrage, vous pouvez laisser vide la fin de la ligne.

NOTE: Certaines versions d'UNIX n'activent pas le service BOOTP en standard. Le fichier /etc/inetd.conf contient généralement une ligne pour le service BOOTP. ELle peut être décommentée si nécessaire.

## Vérifier la connexion de l'imprimante

Pour vérifier que l'adresse IP a bien été assignée et que l'imprimante est correctement connectée au réseau local (LAN), tapez:

    ping adresse-ip ENTREE

Si la connexion fonctionne correctement vous devriez voir apparaître quelque chose de la forme suivante :

    ping mon_imprimante ENTREE
    PING mon_imprimante (192.0.2.2): 56 data bytes
    64 bytes from 192.0.2.2: icmp_seq=0 ttl=15 time=5 ms
    64 bytes from 192.0.2.2: icmp_seq=1 ttl=15 time=3 ms
    64 bytes from 192.0.2.2: icmp_seq=2 ttl=15 time=3 ms
    64 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms

Sinon, vérifiez que que l'imprimante ou le serveur d'impression est bien connecté au réseau (NdT : vérifiez ces @#*¤%§ câbles !), qu'elle est sous tension et que l'adresse IP est bonne. Vous pouvez également voir la configuration réseau en imprimant une page de test à partir du panneau de contrôle du matériel.

## Réglages d'interfaces réseau et serveur d'impression courants

Une fois que vous avez configuré l'adresse IP, vous pouvez accéder à l'imprimante ou au serveur d'impression en utilisant les programmes d'arrière-plan `ipp`, `lpd`, ou `socket` . La liste qui suit donne les interfaces réseau et serveurs d'impression courants ainsi que les réglages que vous devriez utiliser dans CUPS:

Modèle / Fabricant | URI de périphérique
--- | ---
Apple LaserWriter | lpd:// address/PASSTHRU
Axis w/o IPP (voir instructions) | socket:// address :9100 socket://address:9101 socket://address:9102
Axis w/IPP | ipp://address /LPT1 ipp://address/LPT2 ipp://address/COM1
Castelle LANpressTM | lpd://address/pr1 lpd://address/pr2 lpd://address/pr3
DPI NETPrint | lpd://address /pr1 lpd://address/pr2 lpd://address/pr3
EFI® Fiery® RIP | lpd:// address/print
EPSON® Multiprotocol Ethernet Interface Board | socket://address
Extended System ExtendNET | lpd://address/pr1 lpd://address/pr2 lpd://address/pr3
Hewlett Packard JetDirect w/o IPP | socket://address:9100 socket://address:9101 socket://address:9102
Hewlett Packard JetDirect w/IPP | ipp://address/ipp ipp://address/ipp/port1 ipp://address/ipp/port2 ipp://address/ipp/port3
Intel® NetportExpress XL, PRO/100 | lpd://address/LPT1_PASSTHRU lpd://address/LPT2_PASSTHRU lpd://address/COM1_PASSTHRU
LexmarkTM MarkNet | lpd://address/ps
Linksys EtherFast® (voir instructions) | socket:// address :4010 socket://address:4020 socket://address:4030
Kodak® | lpd://address/ps
QMS® CrownNetTM | lpd://address/ps
Tektronix® PhaserShareTM | socket://address:9100
XEROX® 4512 NIC | lpd:// address/PORT1
XEROX® XNIC | lpd://address /PASSTHRU
XEROX® (most others) | socket:// address:5503

## Configuration de serveurs d'impression Axis

Les serveurs d'impression Axis peuvent être configurés en utilisant ARP, RARP ou BOOTP. Cependant, sur certains modèles ne prenant pas en charge IPP, une configuration supplémentaire est nécessaire pour permettre au serveur de dialoguer avec CUPS.

Chaque serveur d'impression possède une fichier de configuration nommé config qui contient la liste des paramètres réseau à utiliser par le serveur. Pour modifier ce fichier, vous devez d'abord le télécharger à partir du serveur d'impression en utilisant le programme `ftp(1)`:

    ftp adresse-ip ENTREE
    Connected to ip-address.
    220 Axis NPS ### FTP Printer Server V#.## MON DD YEAR ready.
    ftp> user root ENTREE
    331 User name ok, need password
    Password: pass ENTREE (le mot de passe n'apparaît pas)
    230 User logged in
    ftp> get config ENTREE
    local: config remote: config
    200 PORT command successful.
    150 Opening data connection for config (192,0,2,2),
    (mode ascii).
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> quit ENTREE
    221 Goodbye.

Ensuite, éditez son contenu avec votre éditeur de texte préféré et repérez les lignes commençant par:

    RTN_OPT.     : YES
    RTEL_PR1.    : 0
    RTEL_PR2.    : 0
    RTEL_PR3.    : 0
    RTEL_PR4.    : 0
    RTEL_PR5.    : 0
    RTEL_PR6.    : 0
    RTEL_PR7.    : 0
    RTEL_PR8.    : 0

Changez la ligne `RTN_OPT` en:

    RTN_OPT.     : NO

Cela désactive le protocole "Reverse TELNET" et active le protocole standard TELNET sur le serveur d'impression. Ensuite, assignez un numéro de port pour chaque port parallèle ou série sur le serveur, comme suit:

    RTEL_PR1.    : 9100
    RTEL_PR2.    : 9101
    RTEL_PR3.    : 9102
    RTEL_PR4.    : 9103
    RTEL_PR5.    : 9104
    RTEL_PR6.    : 9105
    RTEL_PR7.    : 9106
    RTEL_PR8.    : 9107

Cela a principalement pour effet de forcer le serveur Axis à ressembler à un serveur d'impression Hewlett Packard JetDirect EX. Sauvegardez le fichier et installez le sur le serveur d'impression dans le fichier config au moyen de la commande `ftp`:

    ftp adresse-ip ENTREE
    Connected to adresse-ip.
    220 Axis NPS ### FTP Printer Server V#.## MON DD YEAR ready.
    ftp> user root ENTREE
    331 User name ok, need password
    Password: pass ENTREE (le mot de passe n'est pas affiché)
    230 User logged in
    ftp> put config CONFIG ENTREE
    local: config remote: CONFIG
    200 PORT command successful.
    150 Opening data connection for config (192,0,2,2), (mode ascii).
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> get hardreset ENTREE
    local: hardreset remote: hardreset
    200 PORT command successful.
    421 Axis NPS ### hard reset, closing connection.
    ftp> quit ENTREE
    221 Goodbye.

Votre serveur d'impression Axis est à présent opérationnel!

## Configuration de serveurs d'impression Linksys

Les serveurs d'impression LinkSys peuvent être configurés au moyen de ARP, RARP ou BOOTP. Comme certains serveurs d'impression Axis anciens, une configuration supplémentaire TCP/IP est nécessaire pour les faire fonctionner avec CUPS

Chaque serveur d'impression possède une fichier de configuration nommé config qui contient la liste des paramètres réseau à utiliser par le serveur. Pour modifier ce fichier, vous devez d'abord le télécharger à partir du serveur d'impression en utilisant le programme `ftp(1)`:

    ftp -n adresse-ip ENTREE
    Connected to adress-ip.
    220 Print Server Ready.
    Remote system type is Print.
    ftp> get CONFIG ENTREE
    local: CONFIG remote: CONFIG
    200 Command OK.
    150 Open ASCII Mode Connection.
    WARNING! 68 bare linefeeds received in ASCII mode
    File may not have transferred correctly.
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> quit ENTREE
    221 Goodbye.

Ensuite, éditez son contenu avec votre éditeur de texte préféré et repérez les lignes commençant par:

    0100 L1_PROUT:P1
    0120 L2_PROUT:P1
    0140 L3_PROUT:P1

Changez le numéro de port pour chaque port parallèle et série sur le serveur, comme suit:

    0100 L1_PROUT:P1
    0120 L2_PROUT:P2
    0140 L3_PROUT:P3

Cela relie chaque imprimante virtuelle à un port physique. Sauvegardez le fichier et installez le sur le serveur d'impression dans le fichier config au moyen de la commande `ftp`:

    ftp -n adresse-ip ENTREE
    Connected to adresse-ip.
    220 Print Server Ready.
    Remote system type is Print.
    ftp> put CONFIG ENTREE
    local: CONFIG remote: CONFIG
    200 Command OK.
    150 Open ASCII Mode Connection.
    226 Transfer complete.
    ##### bytes received in #.## seconds (##### Kbytes/s)
    ftp> quit ENTREE
    221 Goodbye.

Votre serveur d'impression SysLink est désomais opérationnel !

# C - Pilotes d'imprimantes

Cette annexe dresse la liste des pilotes d'imprimantes qui sont fournis avec CUSP.

## Pilotes d'imprimantes

CUPS inclut les pilotes d'imprimantes suivants:

- EPSON 9-pin Dot Matrix, epson9.ppd
- EPSON 24-pin Dot Matrix, epson24.ppd
- EPSON Stylus Color, stcolor.ppd
- EPSON Stylus Photo, stphoto.ppd
- HP DeskJet, deskjet.ppd
- HP LaserJet, laserjet.ppd

## EPSON 9-pin Dot Matrix

Le pilote EPSON 9-pin Dot Matrix (epson9.ppd) prend en charge les imprimantes 9 aiguilles qui utilisent le jeu de commandes ESC/P. Il fournit l'impression en noir et blanc dans les résolutions 60x72, 120x72, et 240x72 PPP (DPI).

## EPSON 24-pin Dot Matrix

Le pilote EPSON 24-pin Dot Matrix (epson9.ppd) prend en charge les imprimantes 24 aiguilles qui utilisent le jeu de commandes ESC/P. Il fournit l'impression en noir et blanc dans les résolutions 120x180, 180x180, 360x180, et 360x360 PPP (DPI).

## EPSON Stylus Color

Le pilote EPSON Stylus Color (stcolor.ppd) prend en charge les imprimantes EPSON Stylus Color qui utilisent le jeu de commandes ESC/P2. Il fournit l'impression en couleur (CMYK) ainsi qu'en noir et blanc dans les résolutions 180, 360, et 720 PPP (DPI).

## EPSON Stylus Photo

Le pilote EPSON Stylus Photo (stphoto.ppd) prend en charge les imprimantes EPSON Stylus Photo qui utilisent le jeu de commandes ESC/P2. Il fournit l'impression en couleur (CMYK) ainsi qu'en noir et blanc dans les résolutions 180, 360, et 720 PPP (DPI).

## HP DeskJet

Le pilote HP DeskJet (deskjet.ppd) prend en charge les imprimantes HP DeskJet qui utilisent le jeu de commandes PCL. Il fournit l'imrpession en couleur (CMYK) ainsi qu'en noir et blanc dans les résolutions 150, 300, et 600 PPP (DPI).

Les imprimantes DeskJet qui utilisent le jeu de commandes HP-PPA (720C, 722C, 820C, and 1100C) ne sont pas prises en charge du fait de l'absence totale de documentation de la part de Hewlett Packard.

Le "duplexer" fourni avec les imprimantes de la série d'imprimantes HP DeskJet 900 n'est également pas pris en charge pour les mêmes raisons.

## HP LaserJet

Le pilote HP LaserJet (laserjet.ppd) prend en charge les impriamntes HP LaserJet qui utilisent le jeu de commandes PCL. Il fournit l'impression seulement en noir et blanc et prend en charge le "duplexer" s'il est installé. Il prend en charge les résolutions 150, 300, et 600 PPP (DPI).

Les imprimantes LaserJet qui n'utilisent pas le jeu de commandes PCL (3100, 3150) ne sont pas prises en charge du fait d'une absence totale de documentation de la part de Hewlett Packard.

# D - Liste des fichiers

Cette annexe dresse la liste des fichiers et répertoire qui sont installés par CUPS

Chemin | Description
--- | ---
/etc/cups/certs/ | Emplacement des fichiers des certificats d'authentification pour les clients HTTP locaux.
/etc/cups/classes.conf | Fichiers de configuration des classes d'imprimantes pour l'ordonnanceur.
/etc/cups/cupsd.conf | Fichier de configuration de l'ordonnanceur.
/etc/cups/interfaces/ | Emplacement des scripts d'interface System V pour les imprimantes.
/etc/cups/mime.convs | Liste des filtres de fichiers standards inclus dans ESP Print Pro.
/etc/cups/mime.types | Liste des types de fichiers reconnus par ESP Print Pro.
/etc/cups/ppd/ | Emplacement des fichiers PPD ("PostScript Printer Description") pour les imprimantes.
/etc/cups/printers.conf | Fichier de configuration des imprimantes pour l'ordonnanceur.
/usr/bin/cancel | La commande d'annulation de travaux System V.
/usr/bin/disable | La commande de désactivation d'imprimante System V.
/usr/bin/enable | La commande d'activation d'imprimante System V.
/usr/bin/lp | La commande d'impression System V.
/usr/bin/lpoptions | Jeu d'options d'impression et de valeurs implicites personnalisées par l'utiliseur.
/usr/bin/lppasswd | Ajoute, modifie et retire des mots de passe pour des comptes "Digest".
/usr/bin/lpq | La commande d'état Berkeley.
/usr/bin/lpr | La commande d'impression Berkeley.
/usr/bin/lprm | La commande d'annulation de travaux Berkeley.
/usr/bin/lpstat | La commande d'état System V.
/usr/include/cups/ | Fichiers d'en-tête de l'API CUPS.
/usr/lib32/libcups.a /usr/lib32/libcupsimage.a | Librairies statiques (IRIX 6.5)
/usr/lib/libcups.a /usr/lib/libcupsimage.a | Librairies statiques (tous les autres systèmes)
/usr/lib/libcups.sl.2 /usr/lib/libcupsimage.sl.2 | Librairies partagées (HP-UX)
/usr/lib32/libcups.so.2 /usr/lib32/libcupsimage.so.2 | Librairies partagées (IRIX 6.5)
/usr/lib/libcups.so.2 /usr/lib/libcupsimage.so.2 | Librairies partagées (tous les autres systèmes)
/usr/lib/cups/backend/ | Programme d'arrière-plan pour connexion à diverses imprimantes.
/usr/lib/cups/cgi-bin/ | Programmes CGI pour l'ordonnanceur.
/usr/lib/cups/daemon/ | Démons pour la surveillance et pour la prise en charge LPD.
/usr/lib/cups/filter/ | Filtres pour divers types de fichiers.
/usr/lib/locale/ | Emplacement des fichiers de messages spécifiques à chaque langue. (System V)
/usr/lib/nls/msg/ | Emplacement des fichiers de messages spécifiques à chaque langue. (Compaq Tru64 UNIX)
/usr/share/locale/ | Emplacement des fichiers de messages spécifiques à chaque langue. (GNU/Linux, *BSD)
/usr/sbin/accept | La commande d'acceptation de travaux.
/usr/sbin/cupsd | L'ordonnanceur CUPS.
/usr/sbin/lpadmin | L'outil d'administration d'imprimante System V.
/usr/sbin/lpc | L'outil d'administration d'imprimante Berkeley.
/usr/sbin/lpinfo | Les commandes "get-devices" et "get-ppds".
/usr/sbin/lpmove | La commande "move-jobs".
/usr/sbin/reject | La commande "reject-jobs".
/usr/share/catman/a_man/ /usr/share/catman/u_man/ | Pages de manuel (IRIX)
/usr/share/man/ | Pages de manuel (Compaq Tru64 UNIX, HP-UX, Solaris)
/usr/man/ | Pages de manuel (tous les autres systèmes)
/usr/share/cups/data/ | Emplacement des fichiers de données des filtres.
/usr/share/cups/data/testprint.ps | Fichier de page de test PostScript.
/usr/share/cups/fonts/ | Emplacement des polices de caractères PostScript pour le RIP PostScript.
/usr/share/cups/model/ | Emplacement des fichiers PPD ("PostScript Printer Description") et des scripts d'interface pouvant être employés pour configurer une file d'impression.
/usr/share/cups/pstoraster/ | D'autres fichiers d'initialisation du RIP PostScript.
/usr/share/cups/pstoraster/Fontmap | Le fichier de conversion de polices (convertit des noms de fichiers en noms de polices)
/usr/share/cups/templates/ | Emplacement des fichiers "templates" HTML pour l'interface "web".
/usr/share/doc/cups/ | Documentation et données des pages "web" pour l'ordonnanceur.
/var/log/cups/ | Emplacement des fichiers de suivi de l'ordonnanceur.
/var/spool/cups/ | Emplacement des fichiers d'impression en attente de traitement.

# E - Résoudre les problèmes courants

Cette annexe couvre certains des problèmes courants rencontrés par les utilisateurs lors de la première installation / configuration / utilisation de CUPS.

Le support commercial de CUPS est disponible auprès d'Easy Software Products. Pour plus d'informations, veuillez nous contacter:

- WWW: `http://www.easysw.com`
- EMail: info@easysw.com
- Telephone (M-F, 9-5 EST): +1.301.373.9600

## Mes applications ne voient pas les imprimantes disponibles

Beaucoup d'applications lisent le contenu du fichier /etc/printcap pour obtenir la liste des imprimantes disponibles.

La configuration standard de CUPS ne crée pas ce fichier /etc/printcap automatiquement. Pour activer la création et la mise à jour automatiques de ce fichier, utilisez la directive `Printcap`décrite au Chapitre 6, "Administration du système d'impression".

## CUPS ne reconnaît pas mon nom d'utilisateur et mon mot de passe!

CUPS vous demandera un nom d'utilisateur UNIX et un mot de passe lorsque vous effectuerez des tâches d'administration à distance ou au moyen d'un navigateur "web". La configuration standard de CUPS nécessite que vous utilisiez le nom d'utilisateur `root` et son mot de passe correspondant pour authentifier la requête.

Pour des raisons de sécurité, CUPS ne vous autorise pas à authentifier une requête d'administration au moyen d'un compte dépourvu de mot de passe. Si vous n'avez pas de mot de passe pour le compte `root`, vous ne pourrez pas faire d'administration à distance ou via un navigateur "web" !

Pour désactiver l'authentification par mot de passe vous devez éditer le contenu du fichier /etc/cups/cupsd.conf et commenter les lignes:

    AuthType Basic
    AuthClass System

pour l'emplacement /admin. Redémarrez alors le serveur CUPS comme indiqué dans le Chapitre 6, "Administration du serveur d'impression".

NOTE: Désactiver les vérifications de mot de passe autorisera tout utilisateur local à modifier les imprimantes et les classes, mais l'administration distante depuis un autre poste ne sera toujours pas autorisée.

## Je ne peux pas effectuer de tâches d'administration depuis un poste distant!

La configuration standard de CUPS limite l'administration au poste local. Pour ouvrir l'accès, éditez le contenu du fichier /etc/cups/cupsd.conf et commentez les lignes:

    Order deny,allow
    Deny from all
    Allow from 127.0.0.1

pour l'emplacement /admin. Redémarrez alors le serveur CUPS comme indiqué dans le Chapitre 6, "Administration du serveur d'impression".

NOTE: Autoriser l'accès à l'administration pour tous les hôtes présente un risque potentiel de sécurité. Veuillez vous reporter au Chapitre 6, "Administration du serveur d'impression" pour une description de ces risques ainsi que des méthodes pour les minimiser.

## Je ne peux pas effectuer de tâches d'administration depuis mon navigateur "web"!

Ce problème est généralement dû:

1. au fait de donner le mauvais mot de passe pour le compte root.
2. au fait d'accéder au serveur CUPS en utilisant le nom d'hôte ou l'adresse IP sans activer l'accès à distance pour les fonctions d'administration. Cela peut être corrigé en suivant les instructions présentes dans la section "Je ne peux pas effectuer de tâches d'administration depuis un poste distant!" étudiée précédemment dans cette annexe.
3. au fait de ne pas avoir de mot de passe pour le compte root. Pour des raisons de sécurité, CUPS n'authentifiera pas les comptes utilisateur dépourvus de mot de passe.
4. au fait de s'authentifier au moyen d'un compte distinct de root mais qui n'est pas membre du groupe system.
5. au fait de configurer CUPS pour utiliser l'authentification "Digest" et tenter d'y accéder au moyen d'un navigateur "web" ne prenant pas en charge ce type d'authentification.

## Messages "Connection Refused"

Dans des circonstances normales, des messages "connection refused" pour une imprimante réseau peuvent être rencontrés de temps en temps. La plupart des interfaces réseau autorisent une unique connexion à un instant donné (un travail à la fois) et refuseront l'accès à tous les autres systèmes tant que la première connexion sera active. CUPS retente automatiquement de se connecter toutes les 30 secondes.

Si le problème persiste et que vous ne pouvez imprimer aucun travail sur l'imprimantes, vérifiez qu'une autre machine ne maintient pas une connexion avec l'imprimante, et que vous avez sélectionné le bon port ou le bon nom d'imprimante.

De même, la plupart des serveurs d'impression externes refuseront les connexions si une imprimante est hors tension ou hors ligne. Vérifiez que l'imprimante affectée est sous tension et en ligne.

## Message "Write Error"

Si vous obtenez des messages "write error" sur une file d'impression, l'interface de l'imprimante (généralement une interface Hewlett Packard JetDirect) a dépassé le délai d'attente maximum et résilié la connexion réseau avec votre poste de travail.

L'erreur est causée par le délai d'amorçage qui existe entre l'établissement initial de la connexion à l'imprimante et l'envoi effectif des données de la première page imprimée.

Pour corriger le problème, chagez la valeur du délai d'attente de l'interface et amenez sa valeur à un minimum de 180 secondes soit 3 minutes. Pour changer le délai sur une interface Hewlett Packard JetDirect, tapez:

    telnet adresse-ip ENTER

    Trying adresse-ip...
    Connected to adresse-ip.
    Escape character is `^]'.

    Please type [Return] two times, to initialize telnet configuration
    For HELP type "?"
    > idle-timeout: 180 ENTREE
    > quit ENTREE