\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mer. sept. 14 14:09:25 CEST 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={ipptoolfile},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Format de fichier ipptool},
CreationDate={D:20160914140925},
ModDate={D:20160914140925},
Keywords={cups;printer}
}}
\begin{document}
 
\begin{center}
{\Huge ipptoolfile }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Format de fichier ipptool}
 
\vspace{10mm}
 
\hspace{1mm} Le programme ipptool accepte les fichiers texte libre qui décrivent une ou plusieurs requêtes IPP. Par exemple:
 
{\ttfamily
\# This is a comment\\ \{\\ \hspace{2mm}\# The name of the test\\ \hspace{2mm}NAME "Print PostScript File"\\ \hspace{2mm}\\ \hspace{2mm}\# The request to send\\ \hspace{2mm}OPERATION Print-Job\\ \hspace{2mm}GROUP operation-attributes-tag\\ \hspace{2mm}ATTR charset attributes-charset utf-8\\ \hspace{2mm}ATTR language attributes-natural-language en\\ \hspace{2mm}ATTR uri printer-uri \$uri\\ \hspace{2mm}ATTR name requesting-user-name \$user\\ \hspace{2mm}FILE testfile.ps\\ \hspace{2mm}\\ \hspace{2mm}\# The response to expect\\ \hspace{2mm}STATUS successful-ok\\ \hspace{2mm}EXPECT job-id OF-TYPE integer WITH-VALUE >0\\ \hspace{2mm}EXPECT job-uri OF-TYPE uri\\ \}\\ \{\\ \hspace{2mm}\# The name of the test\\ \hspace{2mm}NAME "Get Attributes of PostScript Job"\\ \hspace{2mm}\\ \hspace{2mm}\# The request to send\\ \hspace{2mm}OPERATION Get-Job-Attributes\\ \hspace{2mm}GROUP operation-attributes-tag\\ \hspace{2mm}ATTR charset attributes-charset utf-8\\ \hspace{2mm}ATTR language attributes-natural-language en\\ \hspace{2mm}ATTR uri printer-uri \$uri\\ \hspace{2mm}ATTR integer job-id \$job-id\\ \hspace{2mm}ATTR name requesting-user-name \$user\\ \hspace{2mm}\\ \hspace{2mm}\# The response to expect\\ \hspace{2mm}STATUS successful-ok\\ \hspace{2mm}EXPECT job-id OF-TYPE integer WITH-VALUE \$job-id\\ \hspace{2mm}EXPECT job-uri OF-TYPE uri\\ \hspace{2mm}EXPECT job-state OF-TYPE enum WITH-VALUE 3,4,5,6,7,8,9\\ \hspace{2mm}EXPECT job-originating-user-name OF-TYPE name WITH-VALUE "\$user"\\ \}\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Directives top-level }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} \{ test \}]{Définis un test}
\item[\hspace{1mm} DEFINE variable-name value]{Définise une variable. Équivalent à -d variable-name=value.}
\item[\hspace{1mm} DEFINE-DEFAULT variable-name value]{Définis la variable si elle n'a pas de valeur}
\item[\hspace{1mm} FILE-ID "identifier"]{Spécifie un identifiant pour le fichier courant}
\item[\hspace{1mm} IGNORE-ERRORS yes|no]{Spécifie si ipptool ignore les erreurs et continue par défaut.}
\item[\hspace{1mm} INCLUDE "filename"|<filename>]{Inclure un autre fichier de test. La première forme est relative au fichier courant.}
\item[\hspace{1mm} INCLUDE-IF-DEFINED name "filename"|<filename>]{Inclure un autre fichier de test si la variable nommée est définie}
\item[\hspace{1mm} INCLUDE-IF-NOT-DEFINED name "filename"|<filename>]{Inclus un autre fichier de test si la variable nommée n'est pas définie}
\item[\hspace{1mm} SKIP-IF-DEFINED variable-name]{}
\item[\hspace{1mm} SKIP-IF-NOT-DEFINED variable-name]{Spécifie si le reste du fichier test devrait être sauté quand la variable est ou n'est pas définie}
\item[\hspace{1mm} STOP-AFTER-INCLUDE-ERROR yes|no]{Spécifie si les tests sont stoppés après une erreur dans un fichier inclus}
\item[\hspace{1mm} TRANSFER auto|chunked|length]{Spécifie que les tests, par défaut, utilisent "Transfer-Encoding: chunked", ou "Content-Length:". auto utilise le premier avec les fichiers attachés et le second pour les requêtes sans fichier attaché.}
\item[\hspace{1mm} VERSION 1.0|1.1|2.0|2.1|2.2]{Spécifie le numéro de version IPP par défaut pour les tests.}
\end{description}
 
\vspace{1cm}{\huge Directives de test }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} ATTR tag attribute-name value(s)]{Ajoute un attribut à la demande de test. les valeurs sont séparées par ','}
\item[\hspace{1mm} ATTR collection attribute-name \{ MEMBER tag member-name value(s) ... \} \texttt{[} ... ,\{ ... \} \texttt{]}]{Ajoute une collection d'attribut à la demande de test. Les attributs membres suivent la même syntaxe que les attributs réguliers et peuvent eux-même être des collections imbriquées. Plusieurs collections peuvent être fournis, séparées par ','}
\item[\hspace{1mm} COMPRESSION deflate|gzip|none]{Compression à utiliser dans le données suivant les attributs dans une requêtes Print-Job ou Send-Document}
\item[\hspace{1mm} DELAY seconds]{délais avant de lancer ce test}
\item[\hspace{1mm} DISPLAY attribute-name]{Spécifique la valeur d'un attribut à sortir dans le rapport de test}
\item[\hspace{1mm} EXPECT attribute-name \texttt{[} predicate(s) \texttt{]}]{}
\item[\hspace{1mm} EXPECT ?attribute-name predicate(s)]{}
\item[\hspace{1mm} EXPECT !attribute-name]{Spécifie que la réponse doit|peut|ne doit pas incluse l'attribut nommé. Des prédicats peuvent être ajoutés. Les noms d'attribut peuvent spécifier des attributs membre en les séparant avec un '/' (ex: "media-col/media-size/x-dimension")}
\item[\hspace{1mm} EXPECT-ALL attribute-name \texttt{[} predicate(s) \texttt{]}]{}
\item[\hspace{1mm} EXPECT-ALL ?attribute-name predicate(s)]{Spécifie que la réponse doit/peut inclure l'attribut nommé et que toutes les occurrences de cet attriut doivent correspondre au prédicat donné}
\item[\hspace{1mm} FILE filename]{Spécifie un fichier à inclure à la fin de la requête. Généralement utilisé en envoyant un fichier de test d'impression}
\item[\hspace{1mm} GROUP tag]{Spécifie le tag de groupe pour les attributs sous-jacents dans la requête}
\item[\hspace{1mm} IGNORE-ERRORS yes|no]{Spécifie si les erreurs sont ignorées ou non}
\item[\hspace{1mm} NAME "literal string"]{Nom "human-readable" du test}
\item[\hspace{1mm} OPERATION operation-code]{Spécifie l'opération à effectuer}
\item[\hspace{1mm} PAUSE "message"]{Affiche le message fournis et attends que l'utilisateur appuie sur une touche pour continuer}
\item[\hspace{1mm} REQUEST-ID <number>|random]{Spécifie le request-id à utiliser dans la requête.}
\item[\hspace{1mm} RESOURCE path]{Chemin de ressource alternatif pour la requête HTTP POST. Par défaut, est pris dans l'URI fournie à ipptool}
\item[\hspace{1mm} SKIP-IF-DEFINED variable-name]{}
\item[\hspace{1mm} SKIP-IF-NOT-DEFINED variable-name]{Spécifie que le test courant devrait sauter quand la variable et ou non définie}
\item[\hspace{1mm} SKIP-PREVIOUS-ERROR yes|no]{Indique si ipptool saute le test courant si le test précédent a généré une erreur}
\item[\hspace{1mm} STATUS status-code \texttt{[} predicate \texttt{]}]{Spécifie un valeur de code de status attendus. Un prédicat peut être ajouté}
\item[\hspace{1mm} TEST-ID "identifier"]{Spécifie une chaîne identifiant pour le test courant}
\item[\hspace{1mm} TRANSFER auto|chunked|length]{Spécifie que les tests, par défaut, utilisent "Transfer-Encoding: chunked", ou "Content-Length:". auto utilise le premier avec les fichiers attachés et le second pour les requêtes sans fichier attaché.}
\item[\hspace{1mm} VERSION 1.0|1.1|2.0|2.1|2.2]{Spécifie le numéro de version IPP par défaut pour ce test}
\end{description}
 
\vspace{1cm}{\huge Prédicats attendus }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} COUNT number]{Nécessite que l'attribut EXPECT ait le nombre spécifié de valeurs}
\item[\hspace{1mm} DEFINE-MATCH variable-name]{Définis la valiable à 1 quand la condition EXPECT correspond}
\item[\hspace{1mm} DEFINE-NO-MATCH variable-name]{Définis la valiable à 1 quand la condition EXPECT ne correspond pas}
\item[\hspace{1mm} DEFINE-VALUE variable-name]{Définis la variable quand la condition EXPECT correspond}
\item[\hspace{1mm} IF-DEFINED variable-name]{Les conditions EXPECT ne s'appliquent que si la variable spécifiée est définie}
\item[\hspace{1mm} IF-NOT-DEFINED variable-name]{Les conditions EXPECT ne s'appliquent que si la variable spécifiée n'est pas définie}
\item[\hspace{1mm} IN-GROUP tag]{Nécessite que l'attribut EXPECT soit dans le group tag spécifié}
\item[\hspace{1mm} OF-TYPE tag\texttt{[},tag,...\texttt{]}]{Nécessite l'attribut EXPECT pour utiliser un des tag spécifiés}
\item[\hspace{1mm} REPEAT-LIMIT number]{Spécifie le nombre max de répétitions si le prédicat REPEAT-MATCH ou REPEAT-NO-MATCH est spécifié. Défaut: 1000}
\item[\hspace{1mm} REPEAT-MATCH]{}
\item[\hspace{1mm} REPEAT-NO-MATCH]{Spécifie que le test courant devrait être répété quand la condition EXPECT correspond ou non}
\item[\hspace{1mm} SAME-COUNT-AS attribute-name]{Nécessite que l'attribut EXPECT ait le même nombre de valeurs que l'attribut parallèle spécifié}
\item[\hspace{1mm} WITH-ALL-HOSTNAMES "literal string"|"/regular expression/"]{Nécessite que toutes les valeurs URI contiennent un hostname correspondant}
\item[\hspace{1mm} WITH-ALL-RESOURCES "literal string"|"/regular expression/"]{Nécessite que toutes les valeurs URI contiennent une ressource correspondante (incluant le /)}
\item[\hspace{1mm} WITH-ALL-SCHEMES "literal string"|"/regular expression/"]{Nécessite que toutes les valeurs URI contiennent le schéma correspondant}
\item[\hspace{1mm} WITH-ALL-VALUES <number|=number|>number|number\texttt{[}.....number\texttt{]}|false|true|"/regular expression/"]{Nécessite que toutes les valeurs de l'attribut EXPECT corresponde à la chaîne littérale ou la valeur booléenne}
\item[\hspace{1mm} WITH-HOSTNAME "literal string"|"/regular expression/"]{Nécessite qu'au moins une valeur URI contienne un nom d'hôte correspondant}
\item[\hspace{1mm} WITH-RESOURCE "literal string"|"/regular expression/"]{Nécessite qu'au moins une valeur URI contienne une ressource correspondante (incluant le /)}
\item[\hspace{1mm} WITH-SCHEME "literal string"|"/regular expression/"]{Nécessite qu'au moins une valeur URI contienne une schéma correspondant}
\item[\hspace{1mm} WITH-VALUE "literal string"|<number|=number|>number|number\texttt{[}.....number\texttt{]}|false|true|"/regular expression/"]{Nécessite qu'au moins une valeur de l'attribut EXPECT corresponde aux nombres spécifiés.}
\item[\hspace{1mm} WITH-VALUE-FROM attribute-name]{Nécessite que les valeurs de l'attribut EXPECT correspondent aux valeurs dans l'attribut spécifié (ex: "EXPECT job-sheets WITH-VALUE-FROM job-sheets-supported" nécessite que la valeur job-sheets soit listé dans job-sheets-supported)}
\end{description}
 
\vspace{1cm}{\huge Prédicats de status }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} DEFINE-MATCH variable-name]{Définis la variable à 1 quand STATUS correspond}
\item[\hspace{1mm} DEFINE-NO-MATCH variable-name]{Définis la variable à 1 quand STATUS ne correspond pas}
\item[\hspace{1mm} IF-DEFINED variable-name]{STATUS s'applique seulement si la variable spécifiée est définie}
\item[\hspace{1mm} IF-NOT-DEFINED variable-name]{STATUS s'applique seulement si la variable spécifiée n'est pas définie}
\item[\hspace{1mm} REPEAT-LIMIT number]{Spécifie le nombre maximum de répetition du test courant. Défaut: 1000}
\item[\hspace{1mm} REPEAT-MATCH]{}
\item[\hspace{1mm} REPEAT-NO-MATCH]{Spécifie que le test courant devrait être répété quand le code de status de réponse correspond ou non à la valeur spécifiée par la directive STATUS}
\end{description}
 
\vspace{1cm}{\huge Codes d'opération }
 
\
 
\hspace{1mm} Les codes d'opération correspondent aux nombres hexadécimal (0xHHHH) et noms de la rfc2911 et d'autres spécifications d'extension IPP. Voici une liste complète de noms supportés par ipptool:
 
{\ttfamily
Activate-Printer\\ CUPS-Accept-Jobs\\ CUPS-Add-Modify-Class\\ CUPS-Add-Modify-Printer\\ CUPS-Authenticate-Job\\ CUPS-Delete-Class\\ CUPS-Delete-Printer\\ CUPS-Get-Classes\\ CUPS-Get-Default\\ CUPS-Get-Devices\\ CUPS-Get-Document\\ CUPS-Get-PPD\\ CUPS-Get-PPDs\\ CUPS-Get-Printers\\ CUPS-Move-Job\\ CUPS-Reject-Jobs\\ CUPS-Set-Default\\ Cancel-Current-Job\\ Cancel-Job\\ Cancel-Jobs\\ Cancel-My-Jobs\\ Cancel-Subscription\\ Close-Job\\ Create-Job\\ Create-Job-Subscriptions\\ Create-Printer-Subscriptions\\ Deactivate-Printer\\ Disable-Printer\\ Enable-Printer\\ Get-Job-Attributes\\ Get-Jobs\\ Get-Notifications\\ Get-Printer-Attributes\\ Get-Printer-Support-Files\\ Get-Printer-Supported-Values\\ Get-Subscription-Attributes\\ Get-Subscriptions\\ Hold-Job\\ Hold-New-Jobs\\ Identify-Printer\\ Pause-Printer\\ Pause-Printer-After-Current-Job\\ Print-Job\\ Print-URI\\ Promote-Job\\ Purge-Jobs\\ Release-Held-New-Jobs\\ Release-Job\\ Renew-Subscription\\ Reprocess-Job\\ Restart-Job\\ Restart-Printer\\ Resubmit-Job\\ Resume-Job\\ Resume-Printer\\ Schedule-Job-After\\ Send-Document\\ Send-Hardcopy-Document\\ Send-Notifications\\ Send-URI\\ Set-Job-Attributes\\ Set-Printer-Attributes\\ Shutdown-Printer\\ Startup-Printer\\ Suspend-Current-Job\\ Validate-Document\\ Validate-Job\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Codes de status }
 
\
 
\hspace{1mm} Les codes de status correspondent aux nombres hexadécimal (0xHHHH) et noms de la rfc2911 et d'autres spécifications d'extension IPP. Voici une liste complète de noms supportés par ipptool:
 
{\ttfamily
client-error-account-authorization-failed\\ client-error-account-closed\\ client-error-account-info-needed\\ client-error-account-limit-reached\\ client-error-attributes-not-settable\\ client-error-attributes-or-values-not-supported\\ client-error-bad-request\\ client-error-charset-not-supported\\ client-error-compression-error\\ client-error-compression-not-supported\\ client-error-conflicting-attributes\\ client-error-document-access-error\\ client-error-document-format-error\\ client-error-document-format-not-supported\\ client-error-document-password-error\\ client-error-document-permission-error\\ client-error-document-security-error\\ client-error-document-unprintable-error\\ client-error-forbidden\\ client-error-gone\\ client-error-ignored-all-notifications\\ client-error-ignored-all-subscriptions\\ client-error-not-authenticated\\ client-error-not-authorized\\ client-error-not-found\\ client-error-not-possible\\ client-error-print-support-file-not-found\\ client-error-request-entity-too-large\\ client-error-request-value-too-long\\ client-error-timeout\\ client-error-too-many-subscriptions\\ client-error-uri-scheme-not-supported\\ cups-error-account-authorization-failed\\ cups-error-account-closed\\ cups-error-account-info-needed\\ cups-error-account-limit-reached\\ cups-see-other\\ redirection-other-site\\ server-error-busy\\ server-error-device-error\\ server-error-internal-error\\ server-error-job-canceled\\ server-error-multiple-document-jobs-not-supported\\ server-error-not-accepting-jobs\\ server-error-operation-not-supported\\ server-error-printer-is-deactivated\\ server-error-service-unavailable\\ server-error-temporary-error\\ server-error-version-not-supported\\ successful-ok\\ successful-ok-but-cancel-subscription\\ successful-ok-conflicting-attributes\\ successful-ok-events-complete\\ successful-ok-ignored-notifications\\ successful-ok-ignored-or-substituted-attributes\\ successful-ok-ignored-subscriptions\\ successful-ok-too-many-events\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Tags }
 
\
 
\hspace{1mm} Les tags correspondent aux noms de la rfc2911 et autres spécifications d'extension IPP . Tags de groupe:
 
{\ttfamily
document-attributes-tag\\ event-notification-attributes-tag\\ job-attributes-tag\\ operation-attributes-tag\\ printer-attributes-tag\\ subscription-attributes-tag\\ unsupported-attributes-tag\\
}
\vspace{8mm}
 
\hspace{1mm} Tags de valeurs:
 
{\ttfamily
admin-define\\ boolean\\ charset\\ collection\\ dateTime\\ default\\ delete-attribute\\ enum\\ integer\\ keyword\\ mimeMediaType\\ nameWithLanguage\\ nameWithoutLanguage\\ naturalLanguage\\ no-value\\ not-settable\\ octetString\\ rangeOfInteger\\ resolution\\ textWithLanguage\\ textWithoutLanguage\\ unknown\\ unsupported\\ uri\\ uriScheme\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Variables }
 
\
 
\hspace{1mm}  ipptool maintient une liste de variables qui peuvent être utilisées dans les chaînes litérales ou les valeurs d'attribut.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} \$\$]{Le caractère \$}
\item[\hspace{1mm} \$ENV\texttt{[}name\texttt{]}]{Insert la valeur de la variable d'environnement spécifiée}
\item[\hspace{1mm} \$filename]{Insert le fichier fournis à ipptool avec l'option -f}
\item[\hspace{1mm} \$filetype]{Insert le type mime pour le fichier fournis à ipptool}
\item[\hspace{1mm} \$hostname]{Insert le nom d'hôte depuis l'URI fournis à ipptool}
\item[\hspace{1mm} \$job-id]{Insert le dernier job-id retourné dans un test}
\item[\hspace{1mm} \$job-uri]{Insert le dernier job-uri retourné dans un test}
\item[\hspace{1mm} \$notify-subscription-id]{Insert le dernier notify-subscription-ip retourné dans un test}
\item[\hspace{1mm} \$port]{Insert le port depuis l'URI fournie à ipptool}
\item[\hspace{1mm} \$resource]{Insert le chemin de la ressource depuis l'URI fournie à ipptool}
\item[\hspace{1mm} \$scheme]{Insert le schéma depuis l'URI fournie à ipptool}
\item[\hspace{1mm} \$uri]{Insert l'URI fournie à ipptool}
\item[\hspace{1mm} \$uriuser]{Insert le username depuis l'URI fournie à ipptool}
\item[\hspace{1mm} \$user]{Insert l'utilisateur courant}
\end{description}
\end{flushleft}
\end{document}
