commit 7c454c1ed44a88fdf1a31e8da23bb60022fda620 Author: Tim Dittler Date: Mon Jan 13 14:51:16 2020 +0100 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..1df9b00 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +Ansible playbook VDK +==================== + +Rechner von USB-Stick provisionieren +------------------------------------ + +1. USB-Stick mit NTFS formatieren +2. Alle Daten kopieren +3. ansible.cfg löschen +4. In `playbook.yml` `hosts: all` durch `hosts: localhost` ersetzen +5. Auf zu installierendem Client `/media/lokaladmin/$STICK_NAME/bootstrap.sh` ausführen + +Andere Rechner aus der Ferne aktualisieren +------------------------------------------ + +1. Als `lokaladmin` anmelden +2. Diese Dateien in ein Verzeichnis kopieren (Der aktuelle Stand ist momentan auf pc109 im Ordner `/home/lokaladmin/ansible`) +3. `ansible-playbook playbook.yml -kK -D` + +TODO +---- + +* Ich arbeite gerade noch daran, die Problematik mit lightdm zu lösen. diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..8d36fb2 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +inventory = hosts +host_key_checking = False diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..5cb5b43 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +DIR=$(dirname $0) +cd $DIR + +sudo apt update +sudo apt -y upgrade +sudo apt -y install openssh-server ansible +sudo ansible-playbook playbook.yml -D +sudo apt -y autoremove + +# clean up +sudo rm -r ~/.ansible diff --git a/files/00-favorite-apps b/files/00-favorite-apps new file mode 100755 index 0000000..71ca5c1 --- /dev/null +++ b/files/00-favorite-apps @@ -0,0 +1,2 @@ +[org/gnome/shell] +favorite-apps = ['firefox.desktop', 'thunderbird.desktop', 'org.gnome.Nautilus.desktop', 'libreoffice-writer.desktop', 'libreoffice-calc.desktop', 'libreoffice-impress.desktop'] diff --git a/files/01-recursive-search b/files/01-recursive-search new file mode 100755 index 0000000..91b064d --- /dev/null +++ b/files/01-recursive-search @@ -0,0 +1,2 @@ +[org/gnome/nautilus/preferences] +recursive-search='always' diff --git a/files/02-energy b/files/02-energy new file mode 100755 index 0000000..1ec4756 --- /dev/null +++ b/files/02-energy @@ -0,0 +1,2 @@ +[org/gnome/desktop/session] +idle-delay=uint32 900 diff --git a/files/CLP3550.PPD b/files/CLP3550.PPD new file mode 100755 index 0000000..a1ac112 --- /dev/null +++ b/files/CLP3550.PPD @@ -0,0 +1,3489 @@ +*PPD-Adobe: "4.3" +*%============================================================================= +*% +*% PPD file for CLP 3550_CLP 4550 (English) +*% Linux Version +*% +*% (C) 2013 KYOCERA Document Solutions Inc. +*% +*% Permission is granted for redistribution of this file as long as this +*% copyright notice is intact and the contents of the file are not altered +*% in any way from their original form. +*% +*% Permission is hereby granted, free of charge, to any person obtaining +*% a copy of this software and associated documentation files (the +*% "Software"), to deal in the Software without restriction, including +*% without limitation the rights to use, copy, modify, merge, publish, +*% distribute, sublicense, and/or sell copies of the Software, and to +*% permit persons to whom the Software is furnished to do so, subject to +*% the following conditions: +*% +*% The above copyright notice and this permission notice shall be +*% included in all copies or substantial portions of the Software. +*% +*% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +*% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +*% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +*% NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +*% LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +*% OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +*% WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*% +*% [this is the MIT open source license -- see www.opensource.org] +*% +*%============================================================================= + +*FileVersion: "8.1310" +*FormatVersion: "4.3" +*LanguageEncoding: ISOLatin1 +*LanguageVersion: English +*Product: "(CLP 3550_CLP 4550)" +*PSVersion: "(3011.103) 1" +*Manufacturer: "Kyocera" +*ModelName: "CLP 3550_CLP 4550 KPDL" +*ShortNickName: "CLP 3550_CLP 4550 (KPDL)" +*NickName: "CLP 3550_CLP 4550 (KPDL)" +*PCFileName: "LP3550EE.PPD" + +*cupsFilter: "application/vnd.cups-postscript 0 /usr/lib/cups/filter/kyofilter_B" + +*% Basic Device Capabilities +*WatermarkRendering: True +*JobFinishNotice: False +*LanguageLevel: "3" +*ColorDevice: True +*DefaultColorSpace: CMYK +*ContoneOnly: False +*AccurateScreensSupport: True +*TTRasterizer: Type42 +*?TTRasterizer: " + save + 42 /FontType resourcestatus + { pop pop (Type42) }{ (None) } ifelse + = flush restore" +*End + +*Throughput: "50" + +*% Extensions +*FileSystem: True +*?FileSystem: " + save + false + (%disk?%) + {currentdevparams dup /Writeable known + {/Writeable get {pop true} if}{pop} ifelse + } 100 string /IODevice resourceforall + {(True)}{(False)} ifelse + = flush restore " +*End + +*% System Management +*SuggestedJobTimeout: "0" +*SuggestedManualFeedTimeout: "0" +*SuggestedWaitTimeout: "120" +*PrintPSErrors: True + +*Password: "0" + +*ExitServer: " + count 0 eq {true} + {dup statusdict /checkpassword get exec not} ifelse + {(WARNING : Cannot perform the exitserver command.) = + (Password supplied is not valid.) = + (Please contact the author of this software.) = flush quit} if + serverdict /exitserver get exec" +*End + +*Reset: " + count 0 eq { true } + {dup statusdict /checkpassword get exec not} ifelse + {(WARNING : Cannot perform the exitserver command.) = + (Password supplied is not valid.) = + (Please contact the author of this software.) = flush quit} if + serverdict /exitserver get exec + systemdict /quit get exec + (WARNING : Printer Reset Failed.) = flush" +*End + +*% Protocols +*Protocols: PJL TBCP + +*1284Modes Parallel: Compat Nibble ECP +*1284DeviceID: "MFG:UTAX_TA;MODEL:CLP 3550_CLP 4550;COMMAND SET: POSTSCRIPT,PJL,PCL" + +*% JCL Information +*JCLBegin: "<1B>%-12345X@PJL JOB<0A>" +*JCLToPSInterpreter: "@PJL ENTER LANGUAGE=POSTSCRIPT<0A>" +*JCLEnd: "<1B>%-12345X@PJL EOJ<0A><1B>%-12345X" + +*JCLOpenUI *JCLTrapping/berfllen: PickOne +*DefaultJCLTrapping: Medium +*OrderDependency: 5 JCLSetup *JCLTrapping +*JCLTrapping Off/Aus: "@PJL SET KTRAPPING=0<0A>" +*JCLTrapping Light/Hell: "@PJL SET KTRAPPING=1<0A>" +*JCLTrapping Medium/Mittel: "@PJL SET KTRAPPING=2<0A>" +*JCLTrapping Heavy/Dunkel: "@PJL SET KTRAPPING=3<0A>" +*JCLTrapping VeryHeavy/Sehr dunkel: "@PJL SET KTRAPPING=4<0A>" +*JCLCloseUI: *JCLTrapping + +*JCLOpenUI *JCLHalftone/Autotypieraster: PickOne +*DefaultJCLHalftone: Gradation +*OrderDependency: 5 JCLSetup *JCLHalftone +*JCLHalftone Gradation/Fr Farbgltte optimieren: "!R!CRES;SCRN0;EXIT;<0A><1B>%-12345X" +*JCLHalftone Detail/Fr Detail optimieren: "!R!CRES;SCRN1;EXIT;<0A><1B>%-12345X" +*JCLHalftone LineArt/Fr Strichzeichnungen optimieren: "!R!CRES;SCRN2;EXIT;<0A><1B>%-12345X" +*JCLCloseUI: *JCLHalftone + +*% Installable Options +*OpenGroup: InstallableOptions/Installierte Optionen + +*% Paper Feeders +*OpenUI *Option19/Papierzufhrungen: PickOne +*DefaultOption19: False +*Option19 False/Nicht installiert: "" +*Option19 One/Kassetten (3,4): "" +*Option19 Two/Groraumkassette: "" +*?Option19: " + save + (False) currentpagedevice dup /InputAttributes known { + /InputAttributes get + dup 4 known {dup 4 get null ne {exch pop (Two) exch} if} if + dup 5 known {dup 5 get null ne {exch pop (One) exch} if} if + } if pop + = flush restore" +*End +*CloseUI: *Option19 + +*% Mailbox +*OpenUI *Option25/Mailbox: Boolean +*DefaultOption25: False +*Option25 False/Nicht installiert: "" +*Option25 True/Installiert: "" +*?Option25: " + save + currentpagedevice dup /OutputAttributes known { + /OutputAttributes get + dup 7 known { + 7 get dup null ne { + /OutputType get + dup (MULTI_TRAY5) eq { (True) } { + (False) + } ifelse + }{(False)} ifelse + }{(False)} ifelse + exch pop + }{ + pop (False) + } ifelse + = flush restore" +*End +*CloseUI: *Option25 + +*% Punch Unit +*OpenUI *Option21/Stanzeinheit: Boolean +*DefaultOption21: False +*Option21 False/Nicht installiert: "" +*Option21 True/Installiert: "" +*?Option21: " + save + currentpagedevice /Punch known {(True)}{(False)} ifelse + = flush restore" +*End +*CloseUI: *Option21 + +*% Folding Unit +*OpenUI *Option22/Falteinheit: Boolean +*DefaultOption22: False +*Option22 False/Nicht installiert: "" +*Option22 True/Installiert: "" +*?Option22: " + save + currentpagedevice /Fold known {(True)}{(False)} ifelse + = flush restore" +*End +*CloseUI: *Option22 + +*% Finisher +*OpenUI *Option17/Finisher: PickOne +*DefaultOption17: None +*Option17 None/Nicht installiert: "" +*Option17 DF710/3000-Blatt finisher: "" +*Option17 DF730/1000-Blatt finisher: "" +*?Option17: " + save + currentpagedevice /OutputAttributes get + 1 get + dup null ne { + /OutputType get + << /STAPLER (DF710) /SIMPLE_FINISHER (DF730) + >> exch 2 copy known { get }{ pop pop (NO) } ifelse + } {pop (None) + } ifelse + = flush restore" +*End +*CloseUI: *Option17 + +*% Disk Drive +*OpenUI *Option18/Optionaler Datentrger: PickOne +*DefaultOption18: HardDisk +*Option18 None/Nicht installiert: "" +*Option18 HardDisk/Festplatte: "" +*?Option18: " + save + false + (%disk?%) + {currentdevparams dup /Writeable known + {dup /Writeable get + {exch pop /LogicalSize get dup 0 gt exch 950000 lt eq true}{pop pop false} ifelse + }{pop pop} ifelse + } 100 string /IODevice resourceforall + {{(RAMDisk)}{(HardDisk)} ifelse}{(None)} ifelse + = flush restore" +*End +*CloseUI: *Option18 + +*% Installed Memory +*% Not supported + +*CloseGroup: InstallableOptions + +*% Virtual Memory +*FreeVM: "32000000" + +*% Constraints +*UIConstraints: *WmType Hollow *WmTransparent watermark +*UIConstraints: *WmTransparent watermark *WmType Hollow +*UIConstraints: *WatermarkRendering False *WmText +*UIConstraints: *WmText *WatermarkRendering False + +*UIConstraints: *CaAdjustment True *ColorModel Gray +*UIConstraints: *ColorModel Gray *CaAdjustment True + +*UIConstraints: *ColorModel Gray *CaColorSpace 0 +*UIConstraints: *CaColorSpace 0 *ColorModel Gray +*UIConstraints: *ColorModel Gray *CaColorSpace 1 +*UIConstraints: *CaColorSpace 1 *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueMaster +*%UIConstraints: *CaHueMaster *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueRed +*%UIConstraints: *CaHueRed *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueYellow +*%UIConstraints: *CaHueYellow *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueGreen +*%UIConstraints: *CaHueGreen *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueCyan +*%UIConstraints: *CaHueCyan *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueBlue +*%UIConstraints: *CaHueBlue *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaHueMagenta +*%UIConstraints: *CaHueMagenta *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaSaturation +*%UIConstraints: *CaSaturation *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaCR +*%UIConstraints: *CaCR *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaMG +*%UIConstraints: *CaMG *ColorModel Gray +*%UIConstraints: *ColorModel Gray *CaYB +*%UIConstraints: *CaYB *ColorModel Gray + +*UIConstraints: *CaAdjustment False *CaColorSpace 0 +*UIConstraints: *CaColorSpace 0 *CaAdjustment False +*UIConstraints: *CaAdjustment False *CaColorSpace 1 +*UIConstraints: *CaColorSpace 1 *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueMaster +*%UIConstraints: *CaHueMaster *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueRed +*%UIConstraints: *CaHueRed *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueYellow +*%UIConstraints: *CaHueYellow *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueGreen +*%UIConstraints: *CaHueGreen *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueCyan +*%UIConstraints: *CaHueCyan *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueBlue +*%UIConstraints: *CaHueBlue *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaHueMagenta +*%UIConstraints: *CaHueMagenta *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaBrightness +*%UIConstraints: *CaBrightness *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaContrast +*%UIConstraints: *CaContrast *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaSaturation +*%UIConstraints: *CaSaturation *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaCR +*%UIConstraints: *CaCR *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaMG +*%UIConstraints: *CaMG *CaAdjustment False +*%UIConstraints: *CaAdjustment False *CaYB +*%UIConstraints: *CaYB *CaAdjustment False + +*%UIConstraints: *CaColorSpace 0 *CaCR +*%UIConstraints: *CaCR *CaColorSpace 0 +*%UIConstraints: *CaColorSpace 0 *CaMG +*%UIConstraints: *CaMG *CaColorSpace 0 +*%UIConstraints: *CaColorSpace 0 *CaYB +*%UIConstraints: *CaYB *CaColorSpace 0 + +*%UIConstraints: *CaColorSpace 1 *CaHueMaster +*%UIConstraints: *CaHueMaster *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaHueRed +*%UIConstraints: *CaHueRed *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaHueYellow +*%UIConstraints: *CaHueYellow *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaHueGreen +*%UIConstraints: *CaHueGreen *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaHueCyan +*%UIConstraints: *CaHueCyan *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaHueBlue +*%UIConstraints: *CaHueBlue *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaHueMagenta +*%UIConstraints: *CaHueMagenta *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaBrightness +*%UIConstraints: *CaBrightness *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaContrast +*%UIConstraints: *CaContrast *CaColorSpace 1 +*%UIConstraints: *CaColorSpace 1 *CaSaturation +*%UIConstraints: *CaSaturation *CaColorSpace 1 +*UIConstraints: *Option19 False *InputSlot PF700C +*UIConstraints: *Option19 False *InputSlot PF700D +*UIConstraints: *InputSlot PF700C *Option19 False +*UIConstraints: *InputSlot PF700D *Option19 False +*UIConstraints: *Option19 One *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *Option19 One +*UIConstraints: *Option19 False *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *Option19 False +*UIConstraints: *Option19 Two *InputSlot PF700C +*UIConstraints: *Option19 Two *InputSlot PF700D +*UIConstraints: *InputSlot PF700C *Option19 Two +*UIConstraints: *InputSlot PF700D *Option19 Two +*UIConstraints: *Option17 None *Jog True +*UIConstraints: *Jog True *Option17 None +*UIConstraints: *InputSlot PF700A *CustomPageSize +*UIConstraints: *CustomPageSize *InputSlot PF700A +*UIConstraints: *InputSlot PF700B *CustomPageSize +*UIConstraints: *CustomPageSize *InputSlot PF700B +*UIConstraints: *InputSlot PF700C *CustomPageSize +*UIConstraints: *CustomPageSize *InputSlot PF700C +*UIConstraints: *InputSlot PF700D *CustomPageSize +*UIConstraints: *CustomPageSize *InputSlot PF700D +*UIConstraints: *InputSlot PF750 *CustomPageSize +*UIConstraints: *CustomPageSize *InputSlot PF750 +*UIConstraints: *OutputBin FDStackerC *PageSize OficioI +*UIConstraints: *PageSize OficioI *OutputBin FDStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize OficioI +*UIConstraints: *PageSize OficioI *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize Executive +*UIConstraints: *PageSize Executive *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize Legal +*UIConstraints: *PageSize Legal *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize A3 +*UIConstraints: *PageSize A3 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize B4 +*UIConstraints: *PageSize B4 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize OficioII +*UIConstraints: *PageSize OficioII *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize P8K +*UIConstraints: *PageSize P8K *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize Folio +*UIConstraints: *PageSize Folio *OutputBin FUStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize Executive +*UIConstraints: *PageSize Executive *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize Legal +*UIConstraints: *PageSize Legal *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize A3 +*UIConstraints: *PageSize A3 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize B4 +*UIConstraints: *PageSize B4 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize OficioII +*UIConstraints: *PageSize OficioII *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize P8K +*UIConstraints: *PageSize P8K *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize Folio +*UIConstraints: *PageSize Folio *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerA *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize Executive +*UIConstraints: *PageSize Executive *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin FDStackerA +*UIConstraints: *OutputBin FUStackerB *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin FUStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin FDStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin FUStackerB +*UIConstraints: *OutputBin FDStackerC *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin FDStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin FUStackerC +*UIConstraints: *OutputBin FDStackerA *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin FDStackerA +*UIConstraints: *Jog True *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *Jog True +*UIConstraints: *Jog True *PageSize Env10 +*UIConstraints: *PageSize Env10 *Jog True +*UIConstraints: *Jog True *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *Jog True +*UIConstraints: *Jog True *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *Jog True +*UIConstraints: *Jog True *PageSize Executive +*UIConstraints: *PageSize Executive *Jog True +*UIConstraints: *Jog True *PageSize B6 +*UIConstraints: *PageSize B6 *Jog True +*UIConstraints: *Jog True *PageSize Env9 +*UIConstraints: *PageSize Env9 *Jog True +*UIConstraints: *Jog True *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *Jog True +*UIConstraints: *Jog True *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *Jog True +*UIConstraints: *Jog True *CustomPageSize +*UIConstraints: *CustomPageSize *Jog True +*UIConstraints: *Jog True *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *Jog True +*UIConstraints: *Jog True *PageSize A6 +*UIConstraints: *PageSize A6 *Jog True +*UIConstraints: *KCStaple Center *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize Executive +*UIConstraints: *PageSize Executive *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize B6 +*UIConstraints: *PageSize B6 *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCStaple Center +*UIConstraints: *KCStaple Center *CustomPageSize +*UIConstraints: *CustomPageSize *KCStaple Center +*UIConstraints: *KCStaple Center *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCStaple Center +*UIConstraints: *KCStaple UpperRight *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize Executive +*UIConstraints: *PageSize Executive *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize B6 +*UIConstraints: *PageSize B6 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *CustomPageSize +*UIConstraints: *CustomPageSize *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCStaple UpperRight +*UIConstraints: *KCStaple Upperleft *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize Executive +*UIConstraints: *PageSize Executive *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize B6 +*UIConstraints: *PageSize B6 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *CustomPageSize +*UIConstraints: *CustomPageSize *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *KCCollate1 None +*UIConstraints: *KCCollate1 None *KCStaple Upperleft +*UIConstraints: *KCStaple Center *KCCollate1 None +*UIConstraints: *KCCollate1 None *KCStaple Center +*UIConstraints: *KCStaple UpperRight *KCCollate1 None +*UIConstraints: *KCCollate1 None *KCStaple UpperRight +*UIConstraints: *KCStaple Center *PageSize A6 +*UIConstraints: *PageSize A6 *KCStaple Center +*UIConstraints: *KCStaple UpperRight *PageSize A6 +*UIConstraints: *PageSize A6 *KCStaple UpperRight +*UIConstraints: *KCStaple Upperleft *PageSize A6 +*UIConstraints: *PageSize A6 *KCStaple Upperleft +*UIConstraints: *KCBooklet Left *PageSize A6 +*UIConstraints: *PageSize A6 *KCBooklet Left +*UIConstraints: *KCBooklet Right *PageSize A6 +*UIConstraints: *PageSize A6 *KCBooklet Right +*UIConstraints: *KCPunch 2Hole *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *KCPunch 2Hole +*UIConstraints: *KCPunch 2HoleEUR *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 3Hole *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *KCPunch 4Hole +*UIConstraints: *KCPunch 2Hole *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCPunch 2Hole +*UIConstraints: *KCPunch 2HoleEUR *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 3Hole *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCPunch 4Hole +*UIConstraints: *KCPunch 2Hole *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCPunch 2Hole +*UIConstraints: *KCPunch 2HoleEUR *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 3Hole *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCPunch 4Hole +*UIConstraints: *KCPunch 2HoleEUR *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2Hole *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCPunch 2Hole +*UIConstraints: *KCPunch 3Hole *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCPunch 4Hole +*UIConstraints: *KCPunch 2Hole *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize Executive +*UIConstraints: *PageSize Executive *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize A6 +*UIConstraints: *PageSize A6 *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize B6 +*UIConstraints: *PageSize B6 *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *CustomPageSize +*UIConstraints: *CustomPageSize *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCPunch 2Hole +*UIConstraints: *KCPunch 3Hole *PageSize Legal +*UIConstraints: *PageSize Legal *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize Executive +*UIConstraints: *PageSize Executive *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize A6 +*UIConstraints: *PageSize A6 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize B6 +*UIConstraints: *PageSize B6 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *CustomPageSize +*UIConstraints: *CustomPageSize *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize OficioII +*UIConstraints: *PageSize OficioII *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize Folio +*UIConstraints: *PageSize Folio *KCPunch 3Hole +*UIConstraints: *KCPunch 2HoleEUR *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize Executive +*UIConstraints: *PageSize Executive *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize A6 +*UIConstraints: *PageSize A6 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize B6 +*UIConstraints: *PageSize B6 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *CustomPageSize +*UIConstraints: *CustomPageSize *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize P8K +*UIConstraints: *PageSize P8K *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize P16K +*UIConstraints: *PageSize P16K *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 4Hole *PageSize Legal +*UIConstraints: *PageSize Legal *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize Executive +*UIConstraints: *PageSize Executive *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize A6 +*UIConstraints: *PageSize A6 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize B6 +*UIConstraints: *PageSize B6 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *CustomPageSize +*UIConstraints: *CustomPageSize *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize OficioII +*UIConstraints: *PageSize OficioII *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize P8K +*UIConstraints: *PageSize P8K *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize P16K +*UIConstraints: *PageSize P16K *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize Folio +*UIConstraints: *PageSize Folio *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize B4 +*UIConstraints: *PageSize B4 *KCPunch 4Hole +*UIConstraints: *PageSize OficioII *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize OficioII +*UIConstraints: *PageSize P8K *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize P8K +*UIConstraints: *PageSize P16K *KCPunch 2Hole +*UIConstraints: *KCPunch 2Hole *PageSize P16K +*UIConstraints: *PageSize OficioII *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize OficioII +*UIConstraints: *PageSize P8K *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize P8K +*UIConstraints: *PageSize P16K *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 2HoleEUR *PageSize P16K +*UIConstraints: *PageSize P8K *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize P8K +*UIConstraints: *PageSize P16K *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize P16K +*UIConstraints: *PageSize B4 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize B4 +*UIConstraints: *PageSize B5 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize B5 +*UIConstraints: *PageSize B5 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize B5 +*UIConstraints: *OutputBin Main *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin Main +*UIConstraints: *OutputBin Main *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin Main +*UIConstraints: *OutputBin Main *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin Main +*UIConstraints: *OutputBin Sub *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin Sub +*UIConstraints: *OutputBin Sub *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin Sub +*UIConstraints: *OutputBin Sub *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin Sub +*UIConstraints: *OutputBin Main *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin Main +*UIConstraints: *OutputBin Sub *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin Sub +*UIConstraints: *OutputBin MBDWN01 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN02 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN03 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN04 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN05 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN06 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN07 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBUP01 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP02 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP03 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP04 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP05 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP06 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP07 *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize Env10 +*UIConstraints: *PageSize Env10 *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize B6 +*UIConstraints: *PageSize B6 *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize Env9 +*UIConstraints: *PageSize Env9 *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *CustomPageSize +*UIConstraints: *CustomPageSize *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *OutputBin MBUP07 +*UIConstraints: *OutputBin MBDWN01 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN02 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN03 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN04 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN05 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN06 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN07 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBUP01 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP02 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP03 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP04 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP05 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP06 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP07 *PageSize A6 +*UIConstraints: *PageSize A6 *OutputBin MBUP07 +*UIConstraints: *KCFold *StapleCount +*UIConstraints: *StapleCount *KCFold +*UIConstraints: *KCRotate True *Jog True +*UIConstraints: *Jog True *KCRotate True +*UIConstraints: *KCRotate True *KCStaple +*UIConstraints: *KCStaple *KCRotate True +*UIConstraints: *KCCollate1 None *KCRotate True +*UIConstraints: *KCRotate True *KCCollate1 None +*UIConstraints: *KCBooklet Left *KCRotate True +*UIConstraints: *KCRotate True *KCBooklet Left +*UIConstraints: *KCBooklet Right *KCRotate True +*UIConstraints: *KCRotate True *KCBooklet Right +*UIConstraints: *KCPunch 2Hole *KCRotate True +*UIConstraints: *KCRotate True *KCPunch 2Hole +*UIConstraints: *KCPunch 2HoleEUR *KCRotate True +*UIConstraints: *KCRotate True *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 3Hole *KCRotate True +*UIConstraints: *KCRotate True *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *KCRotate True +*UIConstraints: *KCRotate True *KCPunch 4Hole +*UIConstraints: *KCRotate True *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *KCRotate True +*UIConstraints: *KCRotate True *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *KCRotate True +*UIConstraints: *Jog True *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *Jog True +*UIConstraints: *Jog True *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *Jog True +*UIConstraints: *Jog True *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *Jog True +*UIConstraints: *Jog True *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *Jog True +*UIConstraints: *Jog True *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *Jog True +*UIConstraints: *Jog True *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *Jog True +*UIConstraints: *Jog True *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *Jog True +*UIConstraints: *Jog True *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *Jog True +*UIConstraints: *KCStaple Center *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *KCStaple Center +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *KCStaple UpperRight +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *KCStaple Upperleft +*UIConstraints: *KCStaple Center *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *KCStaple Center +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *KCStaple UpperRight +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *KCStaple Upperleft +*UIConstraints: *KCRotate True *OutputBin Main +*UIConstraints: *OutputBin Main *KCRotate True +*UIConstraints: *KCRotate True *OutputBin Sub +*UIConstraints: *OutputBin Sub *KCRotate True +*UIConstraints: *KCRotate True *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *KCRotate True +*UIConstraints: *KCRotate True *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *KCRotate True +*UIConstraints: *KCRotate True *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *KCRotate True +*UIConstraints: *KCRotate True *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCRotate True +*UIConstraints: *KCRotate True *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCRotate True +*UIConstraints: *Jog True *OutputBin Sub +*UIConstraints: *OutputBin Sub *Jog True +*UIConstraints: *Jog True *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *Jog True +*UIConstraints: *Jog True *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *Jog True +*UIConstraints: *Jog True *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *Jog True +*UIConstraints: *Jog True *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *Jog True +*UIConstraints: *KCStaple Center *OutputBin Sub +*UIConstraints: *OutputBin Sub *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCStaple Center +*UIConstraints: *KCStaple UpperRight *OutputBin Sub +*UIConstraints: *OutputBin Sub *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCStaple UpperRight +*UIConstraints: *KCStaple Upperleft *OutputBin Sub +*UIConstraints: *OutputBin Sub *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *KCStaple Upperleft +*UIConstraints: *Option18 None *KCCollate1 QuickCopy +*UIConstraints: *KCCollate1 QuickCopy *Option18 None +*UIConstraints: *Option18 None *KCCollate1 JobStorage +*UIConstraints: *KCCollate1 JobStorage *Option18 None +*UIConstraints: *Option18 None *KCCollate1 ProofHold +*UIConstraints: *KCCollate1 ProofHold *Option18 None +*UIConstraints: *Option18 None *KCCollate1 On +*UIConstraints: *KCCollate1 On *Option18 None +*UIConstraints: *Option17 DF730 *Option21 True +*UIConstraints: *Option21 True *Option17 DF730 +*UIConstraints: *Option17 None *Option21 True +*UIConstraints: *Option21 True *Option17 None +*UIConstraints: *KCPunch 2Hole *Option21 False +*UIConstraints: *Option21 False *KCPunch 2Hole +*UIConstraints: *KCPunch 2HoleEUR *Option21 False +*UIConstraints: *Option21 False *KCPunch 2HoleEUR +*UIConstraints: *KCPunch 3Hole *Option21 False +*UIConstraints: *Option21 False *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *Option21 False +*UIConstraints: *Option21 False *KCPunch 4Hole +*UIConstraints: *KCPunch *KCFold True +*UIConstraints: *KCFold True *KCPunch +*UIConstraints: *Option17 DF730 *Option22 True +*UIConstraints: *Option22 True *Option17 DF730 +*UIConstraints: *Option17 None *Option22 True +*UIConstraints: *Option22 True *Option17 None +*UIConstraints: *KCFold True *Option22 False +*UIConstraints: *Option22 False *KCFold True +*UIConstraints: *Option17 None *OutputBin Main +*UIConstraints: *OutputBin Main *Option17 None +*UIConstraints: *Option17 None *OutputBin Sub +*UIConstraints: *OutputBin Sub *Option17 None +*UIConstraints: *Option17 DF730 *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *Option17 DF730 +*UIConstraints: *Option17 DF730 *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *Option17 DF730 +*UIConstraints: *Option17 DF730 *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *Option17 DF730 +*UIConstraints: *Option17 DF730 *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *Option17 DF730 +*UIConstraints: *Option17 DF730 *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *Option17 DF730 +*UIConstraints: *Option17 None *KCStaple Center +*UIConstraints: *KCStaple Center *Option17 None +*UIConstraints: *Option17 None *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *Option17 None +*UIConstraints: *Option17 None *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *Option17 None +*UIConstraints: *OutputBin FDTop *KCStaple Center +*UIConstraints: *KCStaple Center *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *OutputBin FDTop +*UIConstraints: *Option17 DF710 *OutputBin Main +*UIConstraints: *OutputBin Main *Option17 DF710 +*UIConstraints: *Option17 DF710 *OutputBin Sub +*UIConstraints: *OutputBin Sub *Option17 DF710 +*UIConstraints: *Option17 None *OutputBin FDStackerA +*UIConstraints: *OutputBin FDStackerA *Option17 None +*UIConstraints: *Option17 None *OutputBin FUStackerB +*UIConstraints: *OutputBin FUStackerB *Option17 None +*UIConstraints: *Option17 None *OutputBin FDStackerB +*UIConstraints: *OutputBin FDStackerB *Option17 None +*UIConstraints: *Option17 None *OutputBin FUStackerC +*UIConstraints: *OutputBin FUStackerC *Option17 None +*UIConstraints: *Option17 None *OutputBin FDStackerC +*UIConstraints: *OutputBin FDStackerC *Option17 None +*UIConstraints: *OutputBin Main *PageSize Executive +*UIConstraints: *PageSize Executive *OutputBin Main +*UIConstraints: *OutputBin Sub *PageSize Executive +*UIConstraints: *PageSize Executive *OutputBin Sub +*UIConstraints: *Option17 DF730 *Option25 True +*UIConstraints: *Option25 True *Option17 DF730 +*UIConstraints: *Option17 None *Option25 True +*UIConstraints: *Option25 True *Option17 None +*UIConstraints: *Option25 False *OutputBin MBDWN01 +*UIConstraints: *OutputBin MBDWN01 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBDWN02 +*UIConstraints: *OutputBin MBDWN02 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBDWN03 +*UIConstraints: *OutputBin MBDWN03 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBDWN04 +*UIConstraints: *OutputBin MBDWN04 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBDWN05 +*UIConstraints: *OutputBin MBDWN05 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBDWN06 +*UIConstraints: *OutputBin MBDWN06 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBDWN07 +*UIConstraints: *OutputBin MBDWN07 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP01 +*UIConstraints: *OutputBin MBUP01 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP02 +*UIConstraints: *OutputBin MBUP02 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP03 +*UIConstraints: *OutputBin MBUP03 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP04 +*UIConstraints: *OutputBin MBUP04 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP05 +*UIConstraints: *OutputBin MBUP05 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP06 +*UIConstraints: *OutputBin MBUP06 *Option25 False +*UIConstraints: *Option25 False *OutputBin MBUP07 +*UIConstraints: *OutputBin MBUP07 *Option25 False +*UIConstraints: *KCPunch 3Hole *PageSize A5 +*UIConstraints: *PageSize A5 *KCPunch 3Hole +*UIConstraints: *KCPunch 3Hole *PageSize Statement +*UIConstraints: *PageSize Statement *KCPunch 3Hole +*UIConstraints: *KCPunch 4Hole *PageSize A5 +*UIConstraints: *PageSize A5 *KCPunch 4Hole +*UIConstraints: *KCPunch 4Hole *PageSize Statement +*UIConstraints: *PageSize Statement *KCPunch 4Hole +*UIConstraints: *KCBooklet Right *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCBooklet Right +*UIConstraints: *KCBooklet Left *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize A3 +*UIConstraints: *PageSize A3 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize B4 +*UIConstraints: *PageSize B4 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize Legal +*UIConstraints: *PageSize Legal *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize Executive +*UIConstraints: *PageSize Executive *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize B6 +*UIConstraints: *PageSize B6 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCBooklet Left +*UIConstraints: *KCBooklet Left *CustomPageSize +*UIConstraints: *CustomPageSize *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize OficioII +*UIConstraints: *PageSize OficioII *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize P8K +*UIConstraints: *PageSize P8K *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize P16K +*UIConstraints: *PageSize P16K *KCBooklet Left +*UIConstraints: *KCBooklet Left *PageSize Folio +*UIConstraints: *PageSize Folio *KCBooklet Left +*UIConstraints: *KCBooklet Right *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize Executive +*UIConstraints: *PageSize Executive *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize B6 +*UIConstraints: *PageSize B6 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCBooklet Right +*UIConstraints: *KCBooklet Right *CustomPageSize +*UIConstraints: *CustomPageSize *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize OficioII +*UIConstraints: *PageSize OficioII *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize P8K +*UIConstraints: *PageSize P8K *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize P16K +*UIConstraints: *PageSize P16K *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize Folio +*UIConstraints: *PageSize Folio *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize A3 +*UIConstraints: *PageSize A3 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize B4 +*UIConstraints: *PageSize B4 *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize Legal +*UIConstraints: *PageSize Legal *KCBooklet Right +*UIConstraints: *KCBooklet Right *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCBooklet Right +*UIConstraints: *KCBooklet Left *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCBooklet Left +*UIConstraints: *Option18 None *KCBooklet Left +*UIConstraints: *KCBooklet Left *Option18 None +*UIConstraints: *Option18 None *KCBooklet Right +*UIConstraints: *KCBooklet Right *Option18 None +*UIConstraints: *KCRotate True *PageSize A3 +*UIConstraints: *PageSize A3 *KCRotate True +*UIConstraints: *KCRotate True *PageSize A5 +*UIConstraints: *PageSize A5 *KCRotate True +*UIConstraints: *KCRotate True *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *KCRotate True +*UIConstraints: *KCRotate True *PageSize B6 +*UIConstraints: *PageSize B6 *KCRotate True +*UIConstraints: *KCRotate True *PageSize Folio +*UIConstraints: *PageSize Folio *KCRotate True +*UIConstraints: *KCRotate True *PageSize OficioII +*UIConstraints: *PageSize OficioII *KCRotate True +*UIConstraints: *KCRotate True *PageSize Tabloid +*UIConstraints: *PageSize Tabloid *KCRotate True +*UIConstraints: *KCRotate True *PageSize Legal +*UIConstraints: *PageSize Legal *KCRotate True +*UIConstraints: *KCRotate True *PageSize Executive +*UIConstraints: *PageSize Executive *KCRotate True +*UIConstraints: *KCRotate True *PageSize Statement +*UIConstraints: *PageSize Statement *KCRotate True +*UIConstraints: *KCRotate True *PageSize P8K +*UIConstraints: *PageSize P8K *KCRotate True +*UIConstraints: *KCRotate True *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *KCRotate True +*UIConstraints: *KCRotate True *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *KCRotate True +*UIConstraints: *KCRotate True *PageSize Env10 +*UIConstraints: *PageSize Env10 *KCRotate True +*UIConstraints: *KCRotate True *PageSize Env9 +*UIConstraints: *PageSize Env9 *KCRotate True +*UIConstraints: *KCRotate True *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *KCRotate True +*UIConstraints: *KCRotate True *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *KCRotate True +*UIConstraints: *KCRotate True *PageSize B4 +*UIConstraints: *PageSize B4 *KCRotate True +*UIConstraints: *KCRotate True *CustomPageSize +*UIConstraints: *CustomPageSize *KCRotate True +*UIConstraints: *KCRotate True *PageSize OficioI +*UIConstraints: *PageSize OficioI *KCRotate True +*UIConstraints: *KCRotate True *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *KCRotate True +*UIConstraints: *KCRotate True *PageSize A6 +*UIConstraints: *PageSize A6 *KCRotate True +*UIConstraints: *Duplex *CustomPageSize +*UIConstraints: *CustomPageSize *Duplex +*UIConstraints: *Jog True *OutputBin FDTop +*UIConstraints: *OutputBin FDTop *Jog True +*UIConstraints: *Jog True *KCStaple Upperleft +*UIConstraints: *KCStaple Upperleft *Jog True +*UIConstraints: *Jog True *KCStaple Center +*UIConstraints: *KCStaple Center *Jog True +*UIConstraints: *Jog True *KCStaple UpperRight +*UIConstraints: *KCStaple UpperRight *Jog True +*UIConstraints: *Jog True *KCCollate1 None +*UIConstraints: *KCCollate1 None *Jog True +*UIConstraints: *PageSize Executive *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize Executive +*UIConstraints: *PageRegion Executive *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion Executive +*UIConstraints: *PageSize A6 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize A6 +*UIConstraints: *PageRegion A6 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion A6 +*UIConstraints: *PageSize ISOB5 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize ISOB5 +*UIConstraints: *PageRegion ISOB5 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion ISOB5 +*UIConstraints: *PageSize B6 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize B6 +*UIConstraints: *PageRegion B6 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion B6 +*UIConstraints: *PageSize EnvPersonal *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize EnvPersonal +*UIConstraints: *PageRegion EnvPersonal *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion EnvPersonal +*UIConstraints: *PageSize Env9 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize Env9 +*UIConstraints: *PageRegion Env9 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion Env9 +*UIConstraints: *PageSize Env10 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize Env10 +*UIConstraints: *PageRegion Env10 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion Env10 +*UIConstraints: *PageSize EnvMonarch *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize EnvMonarch +*UIConstraints: *PageRegion EnvMonarch *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion EnvMonarch +*UIConstraints: *PageSize EnvDL *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize EnvDL +*UIConstraints: *PageRegion EnvDL *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion EnvDL +*UIConstraints: *PageSize EnvC5 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize EnvC5 +*UIConstraints: *PageRegion EnvC5 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion EnvC5 +*UIConstraints: *PageSize EnvC4 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageSize EnvC4 +*UIConstraints: *PageRegion EnvC4 *InputSlot PF700A +*UIConstraints: *InputSlot PF700A *PageRegion EnvC4 +*UIConstraints: *PageSize Executive *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize Executive +*UIConstraints: *PageRegion Executive *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion Executive +*UIConstraints: *PageSize A6 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize A6 +*UIConstraints: *PageRegion A6 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion A6 +*UIConstraints: *PageSize ISOB5 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize ISOB5 +*UIConstraints: *PageRegion ISOB5 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion ISOB5 +*UIConstraints: *PageSize B6 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize B6 +*UIConstraints: *PageRegion B6 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion B6 +*UIConstraints: *PageSize EnvPersonal *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize EnvPersonal +*UIConstraints: *PageRegion EnvPersonal *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion EnvPersonal +*UIConstraints: *PageSize Env9 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize Env9 +*UIConstraints: *PageRegion Env9 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion Env9 +*UIConstraints: *PageSize Env10 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize Env10 +*UIConstraints: *PageRegion Env10 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion Env10 +*UIConstraints: *PageSize EnvMonarch *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize EnvMonarch +*UIConstraints: *PageRegion EnvMonarch *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion EnvMonarch +*UIConstraints: *PageSize EnvDL *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize EnvDL +*UIConstraints: *PageRegion EnvDL *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion EnvDL +*UIConstraints: *PageSize EnvC5 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize EnvC5 +*UIConstraints: *PageRegion EnvC5 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion EnvC5 +*UIConstraints: *PageSize EnvC4 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageSize EnvC4 +*UIConstraints: *PageRegion EnvC4 *InputSlot PF700B +*UIConstraints: *InputSlot PF700B *PageRegion EnvC4 +*UIConstraints: *PageSize Executive *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize Executive +*UIConstraints: *PageRegion Executive *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion Executive +*UIConstraints: *PageSize A6 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize A6 +*UIConstraints: *PageRegion A6 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion A6 +*UIConstraints: *PageSize ISOB5 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize ISOB5 +*UIConstraints: *PageRegion ISOB5 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion ISOB5 +*UIConstraints: *PageSize B6 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize B6 +*UIConstraints: *PageRegion B6 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion B6 +*UIConstraints: *PageSize EnvPersonal *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize EnvPersonal +*UIConstraints: *PageRegion EnvPersonal *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion EnvPersonal +*UIConstraints: *PageSize Env9 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize Env9 +*UIConstraints: *PageRegion Env9 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion Env9 +*UIConstraints: *PageSize Env10 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize Env10 +*UIConstraints: *PageRegion Env10 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion Env10 +*UIConstraints: *PageSize EnvMonarch *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize EnvMonarch +*UIConstraints: *PageRegion EnvMonarch *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion EnvMonarch +*UIConstraints: *PageSize EnvDL *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize EnvDL +*UIConstraints: *PageRegion EnvDL *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion EnvDL +*UIConstraints: *PageSize EnvC5 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize EnvC5 +*UIConstraints: *PageRegion EnvC5 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion EnvC5 +*UIConstraints: *PageSize EnvC4 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageSize EnvC4 +*UIConstraints: *PageRegion EnvC4 *InputSlot PF700C +*UIConstraints: *InputSlot PF700C *PageRegion EnvC4 +*UIConstraints: *PageSize Executive *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize Executive +*UIConstraints: *PageRegion Executive *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion Executive +*UIConstraints: *PageSize A6 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize A6 +*UIConstraints: *PageRegion A6 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion A6 +*UIConstraints: *PageSize ISOB5 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize ISOB5 +*UIConstraints: *PageRegion ISOB5 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion ISOB5 +*UIConstraints: *PageSize B6 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize B6 +*UIConstraints: *PageRegion B6 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion B6 +*UIConstraints: *PageSize EnvPersonal *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize EnvPersonal +*UIConstraints: *PageRegion EnvPersonal *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion EnvPersonal +*UIConstraints: *PageSize Env9 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize Env9 +*UIConstraints: *PageRegion Env9 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion Env9 +*UIConstraints: *PageSize Env10 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize Env10 +*UIConstraints: *PageRegion Env10 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion Env10 +*UIConstraints: *PageSize EnvMonarch *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize EnvMonarch +*UIConstraints: *PageRegion EnvMonarch *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion EnvMonarch +*UIConstraints: *PageSize EnvDL *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize EnvDL +*UIConstraints: *PageRegion EnvDL *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion EnvDL +*UIConstraints: *PageSize EnvC5 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize EnvC5 +*UIConstraints: *PageRegion EnvC5 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion EnvC5 +*UIConstraints: *PageSize EnvC4 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageSize EnvC4 +*UIConstraints: *PageRegion EnvC4 *InputSlot PF700D +*UIConstraints: *InputSlot PF700D *PageRegion EnvC4 +*UIConstraints: *PageSize Legal *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Legal +*UIConstraints: *PageRegion Legal *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Legal +*UIConstraints: *PageSize Executive *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Executive +*UIConstraints: *PageRegion Executive *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Executive +*UIConstraints: *PageSize Tabloid *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Tabloid +*UIConstraints: *PageRegion Tabloid *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Tabloid +*UIConstraints: *PageSize A3 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize A3 +*UIConstraints: *PageRegion A3 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion A3 +*UIConstraints: *PageSize A5 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize A5 +*UIConstraints: *PageRegion A5 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion A5 +*UIConstraints: *PageSize A6 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize A6 +*UIConstraints: *PageRegion A6 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion A6 +*UIConstraints: *PageSize B4 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize B4 +*UIConstraints: *PageRegion B4 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion B4 +*UIConstraints: *PageSize ISOB5 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize ISOB5 +*UIConstraints: *PageRegion ISOB5 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion ISOB5 +*UIConstraints: *PageSize B6 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize B6 +*UIConstraints: *PageRegion B6 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion B6 +*UIConstraints: *PageSize EnvPersonal *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize EnvPersonal +*UIConstraints: *PageRegion EnvPersonal *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion EnvPersonal +*UIConstraints: *PageSize Env9 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Env9 +*UIConstraints: *PageRegion Env9 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Env9 +*UIConstraints: *PageSize Env10 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Env10 +*UIConstraints: *PageRegion Env10 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Env10 +*UIConstraints: *PageSize EnvMonarch *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize EnvMonarch +*UIConstraints: *PageRegion EnvMonarch *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion EnvMonarch +*UIConstraints: *PageSize EnvDL *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize EnvDL +*UIConstraints: *PageRegion EnvDL *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion EnvDL +*UIConstraints: *PageSize EnvC5 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize EnvC5 +*UIConstraints: *PageRegion EnvC5 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion EnvC5 +*UIConstraints: *PageSize OficioII *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize OficioII +*UIConstraints: *PageRegion OficioII *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion OficioII +*UIConstraints: *PageSize Folio *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Folio +*UIConstraints: *PageRegion Folio *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Folio +*UIConstraints: *PageSize EnvC4 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize EnvC4 +*UIConstraints: *PageRegion EnvC4 *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion EnvC4 +*UIConstraints: *PageSize Statement *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize Statement +*UIConstraints: *PageRegion Statement *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion Statement +*UIConstraints: *PageSize P8K *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize P8K +*UIConstraints: *PageRegion P8K *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion P8K +*UIConstraints: *PageSize P16K *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize P16K +*UIConstraints: *PageRegion P16K *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion P16K +*UIConstraints: *PageSize OficioI *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageSize OficioI +*UIConstraints: *PageRegion OficioI *InputSlot PF750 +*UIConstraints: *InputSlot PF750 *PageRegion OficioI +*UIConstraints: *Duplex *PageSize A6 +*UIConstraints: *PageSize A6 *Duplex DuplexTumble +*UIConstraints: *PageSize A6 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion A6 +*UIConstraints: *PageRegion A6 *Duplex DuplexTumble +*UIConstraints: *PageRegion A6 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize ISOB5 +*UIConstraints: *PageSize ISOB5 *Duplex DuplexTumble +*UIConstraints: *PageSize ISOB5 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion ISOB5 +*UIConstraints: *PageRegion ISOB5 *Duplex DuplexTumble +*UIConstraints: *PageRegion ISOB5 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize B6 +*UIConstraints: *PageSize B6 *Duplex DuplexTumble +*UIConstraints: *PageSize B6 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion B6 +*UIConstraints: *PageRegion B6 *Duplex DuplexTumble +*UIConstraints: *PageRegion B6 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize EnvPersonal +*UIConstraints: *PageSize EnvPersonal *Duplex DuplexTumble +*UIConstraints: *PageSize EnvPersonal *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion EnvPersonal +*UIConstraints: *PageRegion EnvPersonal *Duplex DuplexTumble +*UIConstraints: *PageRegion EnvPersonal *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize Env9 +*UIConstraints: *PageSize Env9 *Duplex DuplexTumble +*UIConstraints: *PageSize Env9 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion Env9 +*UIConstraints: *PageRegion Env9 *Duplex DuplexTumble +*UIConstraints: *PageRegion Env9 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize Env10 +*UIConstraints: *PageSize Env10 *Duplex DuplexTumble +*UIConstraints: *PageSize Env10 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion Env10 +*UIConstraints: *PageRegion Env10 *Duplex DuplexTumble +*UIConstraints: *PageRegion Env10 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize EnvMonarch +*UIConstraints: *PageSize EnvMonarch *Duplex DuplexTumble +*UIConstraints: *PageSize EnvMonarch *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion EnvMonarch +*UIConstraints: *PageRegion EnvMonarch *Duplex DuplexTumble +*UIConstraints: *PageRegion EnvMonarch *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize EnvDL +*UIConstraints: *PageSize EnvDL *Duplex DuplexTumble +*UIConstraints: *PageSize EnvDL *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion EnvDL +*UIConstraints: *PageRegion EnvDL *Duplex DuplexTumble +*UIConstraints: *PageRegion EnvDL *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize EnvC5 +*UIConstraints: *PageSize EnvC5 *Duplex DuplexTumble +*UIConstraints: *PageSize EnvC5 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion EnvC5 +*UIConstraints: *PageRegion EnvC5 *Duplex DuplexTumble +*UIConstraints: *PageRegion EnvC5 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize EnvC4 +*UIConstraints: *PageSize EnvC4 *Duplex DuplexTumble +*UIConstraints: *PageSize EnvC4 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion EnvC4 +*UIConstraints: *PageRegion EnvC4 *Duplex DuplexTumble +*UIConstraints: *PageRegion EnvC4 *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize P8K +*UIConstraints: *PageSize P8K *Duplex DuplexTumble +*UIConstraints: *PageSize P8K *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion P8K +*UIConstraints: *PageRegion P8K *Duplex DuplexTumble +*UIConstraints: *PageRegion P8K *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageSize P16K +*UIConstraints: *PageSize P16K *Duplex DuplexTumble +*UIConstraints: *PageSize P16K *Duplex DuplexNoTumble +*UIConstraints: *Duplex *PageRegion P16K +*UIConstraints: *PageRegion P16K *Duplex DuplexTumble +*UIConstraints: *PageRegion P16K *Duplex DuplexNoTumble +*UIConstraints: *ColorModel Gray *KMColorreprod1 Textgraph +*UIConstraints: *KMColorreprod1 Textgraph *ColorModel Gray +*UIConstraints: *ColorModel Gray *KMColorreprod1 Textphoto +*UIConstraints: *KMColorreprod1 Textphoto *ColorModel Gray +*UIConstraints: *ColorModel Gray *KMColorreprod1 Vivid +*UIConstraints: *KMColorreprod1 Vivid *ColorModel Gray +*UIConstraints: *ColorModel Gray *KMColorreprod1 Publications +*UIConstraints: *KMColorreprod1 Publications *ColorModel Gray +*UIConstraints: *ColorModel Gray *KMColorreprod1 Lineart +*UIConstraints: *KMColorreprod1 Lineart *ColorModel Gray +*%UIConstraints: *ColorModel Gray *KMColorreprod1 Pantone +*%UIConstraints: *KMColorreprod1 Pantone *ColorModel Gray +*UIConstraints: *ColorModel Gray *KMColorreprod1 Colortable +*UIConstraints: *KMColorreprod1 Colortable *ColorModel Gray +*UIConstraints: *KCFold True *KCBooklet None +*UIConstraints: *KCBooklet None *KCFold True + +*OpenGroup: Imaging/Bildbearbeitung + +*% Resolution +*DefaultResolution: 600dpi +*% KCEcoprint +*OpenUI *KCEcoprint/EcoPrint: PickOne +*OrderDependency: 10 AnySetup *KCEcoprint +*DefaultKCEcoprint: Off +*KCEcoprint Off/Aus: "<< /EconoMode false >> setpagedevice" +*KCEcoprint On/Ein: "<< /EconoMode true >> setpagedevice" +*CloseUI: *KCEcoprint + +*% Color Model +*OpenUI *ColorModel/Farbmodus: PickOne +*OrderDependency: 10 AnySetup *ColorModel +*DefaultColorModel: CMYK +*ColorModel CMYK/Mehrfarbig: "<< /ProcessColorModel /DeviceCMYK >> setpagedevice" +*ColorModel Gray/Schwarz/Wei: "<< /ProcessColorModel /DeviceGray >> setpagedevice" +*?ColorModel: " + save + currentpagedevice /ProcessColorModel get + 1 { + dup /DeviceGray eq {pop (Gray) exit} if + dup /DeviceCMYK eq {pop (CMYK) exit} if + pop (Unknown) + } repeat + = flush restore" +*End +*CloseUI: *ColorModel + +*% Color Reproduction +*OpenUI *KMColorreprod1/Color Reproduction: PickOne +*OrderDependency: 10 AnySetup *KMColorreprod1 +*DefaultKMColorreprod1: Printersettings +*KMColorreprod1 Printersettings/Printer settings: "<< /ColorReproductionMode 30 >> setpagedevice" +*KMColorreprod1 Textgraph/Text and Graphics: "<< /ColorReproductionMode 31 >> setpagedevice" +*KMColorreprod1 Textphoto/Text and Photos: "<< /ColorReproductionMode 32 >> setpagedevice" +*KMColorreprod1 Vivid/Vivid colors: "<< /ColorReproductionMode 33 >> setpagedevice" +*KMColorreprod1 Publications/Publications: "<< /ColorReproductionMode 34 >> setpagedevice" +*KMColorreprod1 Lineart/Line art: "<< /ColorReproductionMode 35 >> setpagedevice" +*%KMColorreprod1 Pantone/PANTONE(R): "<< /ColorReproductionMode 36 >> setpagedevice" +*KMColorreprod1 Colortable/Custom table: "<< /ColorReproductionMode 128 >> setpagedevice" +*CloseUI: *KMColorreprod1 + +*% RenderingColorMode +*OpenUI *RCM/Farbkonvertierung: PickOne +*OrderDependency: 10 AnySetup *RCM +*DefaultRCM: PrnDef +*RCM PrnDef/Druckereinstellungen: "" +*RCM Color3/Geschwindigkeitsprioritt: "<< /InternalColorMode 0 >> setpagedevice" +*RCM Color4/Qualittsprioritt: "<< /InternalColorMode 2 >> setpagedevice" +*CloseUI: *RCM + +*% CIE +*OpenUI *CIE/CIE Optimierung: PickOne +*OrderDependency: 11 AnySetup *CIE +*DefaultCIE: PrnDef +*CIE PrnDef/Druckereinstellungen: "" +*CIE False/Deaktiviert: "<< /RejectionCIEcolor false >> setuserparams" +*CIE True/Aktiviert: "<< /RejectionCIEcolor true >> setuserparams" +*End +*CloseUI: *CIE + +*CloseGroup: Imaging/Bildbearbeitung + +*% Halftone Information +*DefaultHalftoneType: 1 +*ScreenFreq: "37.5" +*ScreenAngle: "45.0" +*ResScreenFreq 600dpi: "37.5" +*ResScreenAngle 600dpi: "45.0" + +*DefaultScreenProc: Ellipse +*ScreenProc Dot: " + {abs exch abs 2 copy add 1 gt + {1 sub dup mul exch 1 sub dup mul add 1 sub} + {dup mul exch dup mul add 1 exch sub} ifelse}" +*End +*ScreenProc Line: "{pop}" +*ScreenProc Ellipse: "{dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub}" +*DefaultTransfer: Null +*Transfer Null: "{}" +*Transfer Null.Inverse: "{1 exch sub}" + +*% Page Policy Definitions +*OpenUI *PagePolicy/Page Policy: PickOne +*OrderDependency: 15 AnySetup *PagePolicy +*DefaultPagePolicy: On +*PagePolicy On/AutoSizeSelect: "<< /DeferredMediaSelection true >> setpagedevice" +*CloseUI: *PagePolicy + +*% Paper Handling +*% Page Size Definitions +*OpenUI *PageSize: PickOne +*OrderDependency: 40 AnySetup *PageSize +*DefaultPageSize: A4 +*PageSize A3/A3: "<< /Policies << /PageSize 7 >> /PageSize [842 1191] /ImagingBBox null >> setpagedevice" +*PageSize A4/A4: "<< /Policies << /PageSize 7 >> /PageSize [595 842] /ImagingBBox null >> setpagedevice" +*PageSize A5/A5: "<< /Policies << /PageSize 7 >> /PageSize [421 595] /ImagingBBox null >> setpagedevice" +*PageSize A6/A6: "<< /Policies << /PageSize 7 >> /PageSize [297 421] /ImagingBBox null >> setpagedevice" +*PageSize B4/B4: "<< /Policies << /PageSize 7 >> /PageSize [728 1032] /ImagingBBox null >> setpagedevice" +*PageSize B5/B5 (JIS): "<< /Policies << /PageSize 7 >> /PageSize [516 729] /ImagingBBox null >> setpagedevice" +*PageSize ISOB5/B5 (ISO): "<< /Policies << /PageSize 7 >> /PageSize [499 708] /ImagingBBox null >> setpagedevice" +*PageSize B6/B6: "<< /Policies << /PageSize 7 >> /PageSize [364 516] /ImagingBBox null >> setpagedevice" +*PageSize OficioII/Oficio II: "<< /Policies << /PageSize 7 >> /PageSize [612 936] /ImagingBBox null >> setpagedevice" +*PageSize Folio/Folio (210 x 330mm): "<< /Policies << /PageSize 7 >> /PageSize [595 935] /ImagingBBox null >> setpagedevice" +*PageSize Statement/Statement: "<< /Policies << /PageSize 7 >> /PageSize [396 612] /ImagingBBox null >> setpagedevice" +*PageSize P8K/8K: "<< /Policies << /PageSize 7 >> /PageSize [774 1116] /ImagingBBox null >> setpagedevice" +*PageSize P16K/16K: "<< /Policies << /PageSize 7 >> /PageSize [558 774] /ImagingBBox null >> setpagedevice" +*PageSize OficioI/8.5x13.5: "<< /Policies << /PageSize 7 >> /PageSize [612 972] /ImagingBBox null >> setpagedevice" +*PageSize Letter/US-Letter: "<< /Policies << /PageSize 7 >> /PageSize [612 792] /ImagingBBox null >> setpagedevice" +*PageSize Legal/US-Legal: "<< /Policies << /PageSize 7 >> /PageSize [612 1008] /ImagingBBox null >> setpagedevice" +*PageSize Executive/US-Executive: "<< /Policies << /PageSize 7 >> /PageSize [522 756] /ImagingBBox null >> setpagedevice" +*PageSize Tabloid/Ledger 11x17: "<< /Policies << /PageSize 7 >> /PageSize [792 1224] /ImagingBBox null >> setpagedevice" +*PageSize EnvPersonal/Umschlag #6: "<< /Policies << /PageSize 7 >> /PageSize [261 468] /ImagingBBox null >> setpagedevice" +*PageSize Env9/Umschlag #9: "<< /Policies << /PageSize 7 >> /PageSize [279 639] /ImagingBBox null >> setpagedevice" +*PageSize Env10/Umschlag #10: "<< /Policies << /PageSize 7 >> /PageSize [297 684] /ImagingBBox null >> setpagedevice" +*PageSize EnvMonarch/Umschlag US-Monarch: "<< /Policies << /PageSize 7 >> /PageSize [279 540] /ImagingBBox null >> setpagedevice" +*PageSize EnvDL/Umschlag DL: "<< /Policies << /PageSize 7 >> /PageSize [312 624] /ImagingBBox null >> setpagedevice" +*PageSize EnvC5/Umschlag C5: "<< /Policies << /PageSize 7 >> /PageSize [459 649] /ImagingBBox null >> setpagedevice" +*PageSize EnvC4/Umschlag C4: "<< /Policies << /PageSize 7 >> /PageSize [649 919] /ImagingBBox null >> setpagedevice" +*?PageSize: " + save + currentpagedevice /PageSize get aload pop + 2 copy gt {exch} if + (Unknown) + 25 dict + dup [842 1191] (A3) put + dup [595 842] (A4) put + dup [421 595] (A5) put + dup [297 421] (A6) put + dup [728 1032] (B4) put + dup [516 729] (B5) put + dup [499 708] (ISOB5) put + dup [364 516] (B6) put + dup [612 936] (OficioII) put + dup [595 935] (Folio) put + dup [396 612] (Statement) put + dup [774 1116] (P8K) put + dup [558 774] (P16K) put + dup [612 972] (OficioI) put + dup [612 792] (Letter) put + dup [612 1008] (Legal) put + dup [522 756] (Executive) put + dup [792 1224] (Tabloid) put + dup [261 468] (EnvPersonal) put + dup [279 639] (Env9) put + dup [297 684] (Env10) put + dup [279 540] (EnvMonarch) put + dup [312 624] (EnvDL) put + dup [459 649] (EnvC5) put + dup [649 919] (EnvC4) put + {exch aload pop 4 index sub abs 5 le exch + 5 index sub abs 5 le and + {exch pop exit}{pop} ifelse + } bind forall + = flush pop pop restore " +*End +*CloseUI: *PageSize + +*% Page Region Definitions for Frame Buffer +*OpenUI *PageRegion: PickOne +*OrderDependency: 40 AnySetup *PageRegion +*DefaultPageRegion: A4 +*PageRegion A3/A3: "<< /Policies << /PageSize 7 >> /PageSize [842 1191] /ImagingBBox null >> setpagedevice" +*PageRegion A4/A4: "<< /Policies << /PageSize 7 >> /PageSize [595 842] /ImagingBBox null >> setpagedevice" +*PageRegion A5/A5: "<< /Policies << /PageSize 7 >> /PageSize [421 595] /ImagingBBox null >> setpagedevice" +*PageRegion A6/A6: "<< /Policies << /PageSize 7 >> /PageSize [297 421] /ImagingBBox null >> setpagedevice" +*PageRegion B4/B4: "<< /Policies << /PageSize 7 >> /PageSize [728 1032] /ImagingBBox null >> setpagedevice" +*PageRegion B5/B5 (JIS): "<< /Policies << /PageSize 7 >> /PageSize [516 729] /ImagingBBox null >> setpagedevice" +*PageRegion ISOB5/B5 (ISO): "<< /Policies << /PageSize 7 >> /PageSize [499 708] /ImagingBBox null >> setpagedevice" +*PageRegion B6/B6: "<< /Policies << /PageSize 7 >> /PageSize [364 516] /ImagingBBox null >> setpagedevice" +*PageRegion Letter/US-Letter: "<< /Policies << /PageSize 7 >> /PageSize [612 792] /ImagingBBox null >> setpagedevice" +*PageRegion Legal/US-Legal: "<< /Policies << /PageSize 7 >> /PageSize [612 1008] /ImagingBBox null >> setpagedevice" +*PageRegion Executive/US-Executive: "<< /Policies << /PageSize 7 >> /PageSize [522 756] /ImagingBBox null >> setpagedevice" +*PageRegion Tabloid/Ledger 11x17: "<< /Policies << /PageSize 7 >> /PageSize [792 1224] /ImagingBBox null >> setpagedevice" +*PageRegion EnvPersonal/Umschlag #6: "<< /Policies << /PageSize 7 >> /PageSize [261 468] /ImagingBBox null >> setpagedevice" +*PageRegion Env9/Umschlag #9: "<< /Policies << /PageSize 7 >> /PageSize [279 639] /ImagingBBox null >> setpagedevice" +*PageRegion Env10/Umschlag #10: "<< /Policies << /PageSize 7 >> /PageSize [297 684] /ImagingBBox null >> setpagedevice" +*PageRegion EnvMonarch/Umschlag US-Monarch: "<< /Policies << /PageSize 7 >> /PageSize [279 540] /ImagingBBox null >> setpagedevice" +*PageRegion EnvDL/Umschlag DL: "<< /Policies << /PageSize 7 >> /PageSize [312 624] /ImagingBBox null >> setpagedevice" +*PageRegion EnvC5/Umschlag C5: "<< /Policies << /PageSize 7 >> /PageSize [459 649] /ImagingBBox null >> setpagedevice" +*PageRegion OficioII/Oficio II: "<< /Policies << /PageSize 7 >> /PageSize [612 936] /ImagingBBox null >> setpagedevice" +*PageRegion Folio/Folio (210 x 330mm): "<< /Policies << /PageSize 7 >> /PageSize [595 935] /ImagingBBox null >> setpagedevice" +*PageRegion EnvC4/Umschlag C4: "<< /Policies << /PageSize 7 >> /PageSize [649 919] /ImagingBBox null >> setpagedevice" +*PageRegion Statement/Statement: "<< /Policies << /PageSize 7 >> /PageSize [396 612] /ImagingBBox null >> setpagedevice" +*PageRegion P8K/8K: "<< /Policies << /PageSize 7 >> /PageSize [774 1116] /ImagingBBox null >> setpagedevice" +*PageRegion P16K/16K: "<< /Policies << /PageSize 7 >> /PageSize [558 774] /ImagingBBox null >> setpagedevice" +*PageRegion OficioI/8.5x13.5: "<< /Policies << /PageSize 7 >> /PageSize [612 972] /ImagingBBox null >> setpagedevice" +*CloseUI: *PageRegion + +*% Imageable Area Definitions +*DefaultImageableArea: A4 +*ImageableArea A3/A3: "12 10 830 1181" +*ImageableArea A4/A4: "12 10 583 832" +*ImageableArea A5/A5: "12 10 409 585" +*ImageableArea A6/A6: "12 10 285 411" +*ImageableArea B4/B4: "12 10 716 1022" +*ImageableArea B5/B5 (JIS): "21 10 495 719" +*ImageableArea ISOB5/B5 (ISO): "12 12 487 696" +*ImageableArea B6/B6: "12 10 352 506" +*ImageableArea OficioII/Oficio II: "12 12 600 924" +*ImageableArea Folio/Folio (210 x 330mm): "12 12 583 923" +*ImageableArea Statement/Statement: "12 12 384 600" +*ImageableArea P8K/8K: "12 12 763 1105" +*ImageableArea P16K/16K: "12 12 547 763" +*ImageableArea OficioI/8.5x13.5: "12 12 600 960" +*ImageableArea Letter/US-Letter: "12 08 600 784" +*ImageableArea Legal/US-Legal: "12 08 600 1000" +*ImageableArea Executive/US-Executive: "12 08 510 748" +*ImageableArea Tabloid/Ledger 11x17: "12 08 780 1216" +*ImageableArea EnvPersonal/Umschlag #6: "12 08 249 460" +*ImageableArea Env9/Umschlag #9: "12 08 267 631" +*ImageableArea Env10/Umschlag #10: "12 08 285 676" +*ImageableArea EnvMonarch/Umschlag US-Monarch: "12 08 267 532" +*ImageableArea EnvDL/Umschlag DL: "12 10 300 614" +*ImageableArea EnvC5/Umschlag C5: "12 10 447 639" +*ImageableArea EnvC4/Umschlag C4: "12 10 637 909" +*?ImageableArea: " + save + /cvp {cvi ( ) cvs + print ( ) print} bind def + newpath clippath pathbbox + 4 -2 roll exch 2 {ceiling cvp} repeat + exch 2 {floor cvp} repeat ( ) + = flush restore" +*End + +*% Physical Dimensions of Media +*DefaultPaperDimension: A4 +*PaperDimension A3/A3: "842 1191" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "421 595" +*PaperDimension A6/A6: "297 421" +*PaperDimension B4/B4: "728 1032" +*PaperDimension B5/B5 (JIS): "516 729" +*PaperDimension ISOB5/B5 (ISO): "499 708" +*PaperDimension B6/B6: "364 516" +*PaperDimension OficioII/Oficio II: "612 936" +*PaperDimension Folio/Folio (210 x 330mm): "595 935" +*PaperDimension Statement/Statement: "396 612" +*PaperDimension P8K/8K: "774 1116" +*PaperDimension P16K/16K: "558 774" +*PaperDimension OficioI/8.5x13.5: "612 972" +*PaperDimension Letter/US-Letter: "612 792" +*PaperDimension Legal/US-Legal: "612 1008" +*PaperDimension Executive/US-Executive: "522 756" +*PaperDimension Tabloid/Ledger 11x17: "792 1224" +*PaperDimension EnvPersonal/Umschlag #6: "261 468" +*PaperDimension Env9/Umschlag #9: "279 639" +*PaperDimension Env10/Umschlag #10: "297 684" +*PaperDimension EnvMonarch/Umschlag US-Monarch: "279 540" +*PaperDimension EnvDL/Umschlag DL: "312 624" +*PaperDimension EnvC5/Umschlag C5: "459 649" +*PaperDimension EnvC4/Umschlag C4: "649 919" + +*% Custom Page Size Definitions +*% Smallest = A6, Largest = Ledger + +*VariablePaperSize: True +*LeadingEdge Short: "" +*DefaultLeadingEdge: Short +*HWMargins: 12 12 12 12 +*MaxMediaWidth: "842" +*MaxMediaHeight: "1224" +*NonUIOrderDependency: 40 AnySetup *CustomPageSize +*CustomPageSize True: " + pop pop pop + << /PageSize [ 5 -2 roll ] /ImagingBBox null + /DeferredMediaSelection true + >> setpagedevice" +*End +*ParamCustomPageSize Width: 1 points 278 842 +*ParamCustomPageSize Height: 2 points 420 1224 +*ParamCustomPageSize WidthOffset: 3 points 0 0 +*ParamCustomPageSize HeightOffset: 4 points 0 0 +*ParamCustomPageSize Orientation: 5 int 0 3 + +*% Input Slot Definitions +*OpenUI *InputSlot: PickOne +*OrderDependency: 30 AnySetup *InputSlot +*DefaultInputSlot: PF700A +*InputSlot PF700A/Kassette 1: "<< /ManualFeed false >> setpagedevice statusdict begin 0 setpapertray end" +*InputSlot PF700B/Kassette 2: "<< /ManualFeed false >> setpagedevice statusdict begin 1 setpapertray end" +*InputSlot PF700C/Kassette 3: "<< /ManualFeed false >> setpagedevice statusdict begin 4 setpapertray end" +*InputSlot PF700D/Kassette 4: "<< /ManualFeed false >> setpagedevice statusdict begin 5 setpapertray end" +*InputSlot MF1/Universalzufuhr: "<< /ManualFeed false >> setpagedevice statusdict begin 3 setpapertray end" +*InputSlot PF750/Groraumkassette: "<< /ManualFeed false >> setpagedevice statusdict begin 4 setpapertray end" +*?InputSlot: "" +*CloseUI: *InputSlot + +*% MediaType Definitions +*OpenUI *MediaType/Medientyp: PickOne +*OrderDependency: 95 AnySetup *MediaType +*DefaultMediaType: PrnDef +*MediaType PrnDef/Nicht angegeben: "<> setpagedevice" +*MediaType Auto/Automatische Medienauswahl: "" +*MediaType Plain/Normalpapier: "<> setpagedevice" +*MediaType Transparency/Folie: "<> setpagedevice" +*MediaType Labels/Etiketten: "<> setpagedevice" +*MediaType Letterhead/Briefkopf: "<> setpagedevice" +*MediaType Bond/Feinpapier: "<> setpagedevice" +*MediaType Color/Mehrfarbig: "<> setpagedevice" +*MediaType Preprinted/Vorgedruckt: "<> setpagedevice" +*MediaType Prepunched/Vorgelocht: "<> setpagedevice" +*MediaType Recycled/Recycling-Papier: "<> setpagedevice" +*MediaType Cardstock/Karteikarte: "<> setpagedevice" +*MediaType Vellum/Pergament: "<> setpagedevice" +*MediaType Envelope/Umschlag: "<> setpagedevice" +*MediaType Rough/Grobpapier: "<> setpagedevice" +*MediaType Thick/Dick: "<> setpagedevice" +*MediaType CoatedPaper/Beschichtet: "<> setpagedevice" +*MediaType Highqlty/Hohe Qualitt: "<> setpagedevice" +*MediaType User1/Benutzerdefinierter Typ 1: "<> setpagedevice" +*MediaType User2/Benutzerdefinierter Typ 2: "<> setpagedevice" +*MediaType User3/Benutzerdefinierter Typ 3: "<> setpagedevice" +*MediaType User4/Benutzerdefinierter Typ 4: "<> setpagedevice" +*MediaType User5/Benutzerdefinierter Typ 5: "<> setpagedevice" +*MediaType User6/Benutzerdefinierter Typ 6: "<> setpagedevice" +*MediaType User7/Benutzerdefinierter Typ 7: "<> setpagedevice" +*MediaType User8/Benutzerdefinierter Typ 8: "<> setpagedevice" +*?MediaType: " + save + currentpagedevice /MediaType {get} stopped + {pop pop (Unknown)} {dup null eq {pop (Unknown)} if} ifelse = flush + restore" +*End +*CloseUI: *MediaType + + +*RequiresPageRegion All: True + +*OpenGroup: Output/Ausgabe + +*% Output Bin Definitions +*OpenUI *OutputBin/Ausgabefach: PickOne +*OrderDependency: 51 AnySetup *OutputBin +*DefaultOutputBin: None +*OutputBin None/Druckereinstellungen: "" +*OutputBin FDTop/Obere Ablage (Nach unten): "0 statusdict /setoutputtray get exec" +*End +*OutputBin Main/Finisher (Nach unten): "2 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin Sub/Finisher (Nach oben): "1 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin FDStackerA/Ablage A (Nach unten): "2 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin FUStackerB/Ablage B (Nach oben): "1 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin FDStackerB/Ablage B (Nach unten): "1 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin FUStackerC/Ablage C (Nach oben): "12 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin FDStackerC/Ablage C (Nach unten): "12 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN01/Mailbox 1(Nach unten): "4 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN02/Mailbox 2(Nach unten): "5 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN03/Mailbox 3(Nach unten): "6 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN04/Mailbox 4(Nach unten): "7 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN05/Mailbox 5(Nach unten): "8 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN06/Mailbox 6(Nach unten): "9 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBDWN07/Mailbox 7(Nach unten): "10 statusdict /setoutputtray get exec << /OutputFaceUp false >> setpagedevice" +*End +*OutputBin MBUP01/Mailbox 1 (Nach oben): "4 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin MBUP02/Mailbox 2 (Nach oben): "5 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin MBUP03/Mailbox 3 (Nach oben): "6 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin MBUP04/Mailbox 4 (Nach oben): "7 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin MBUP05/Mailbox 5 (Nach oben): "8 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin MBUP06/Mailbox 6 (Nach oben): "9 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*OutputBin MBUP07/Mailbox 7 (Nach oben): "10 statusdict /setoutputtray get exec << /OutputFaceUp true >> setpagedevice" +*End +*?OutputBin: "" +*End +*CloseUI: *OutputBin + +*% Rotate Method Definitions +*OpenUI *KCRotate/Drehen Sortieren: Boolean +*OrderDependency: 15 AnySetup *KCRotate +*DefaultKCRotate: False +*KCRotate False/Aus: "false statusdict /setkcrotatedcollation get exec" +*KCRotate True/Ein: "true statusdict /setkcrotatedcollation get exec" +*?KCRotate: "(None) = flush" +*End +*CloseUI: *KCRotate + +*CloseGroup: Output/Ausgabe + +*% Page Stack Order +*PageStackOrder FDTop: Normal + +*OpenGroup: Finishing/Endbearbeitung + +*% Staple Mode Definitions +*OpenUI *KCStaple/Heftfunktion: PickOne +*OrderDependency: 20 AnySetup *KCStaple +*DefaultKCStaple: None +*KCStaple None/Aus: "<< /Staple 0 >> setpagedevice" +*KCStaple Center/Mittig: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /StaplePosition 3 put + << /Staple 3 /StapleDetails UIStapleDetails >> setpagedevice" +*End +*KCStaple UpperRight/Oben Rechts: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /StaplePosition 1 put + << /Staple 3 /StapleDetails UIStapleDetails >> setpagedevice" +*End +*KCStaple Upperleft/Oben Links: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /StaplePosition 2 put + << /Staple 3 /StapleDetails UIStapleDetails >> setpagedevice" +*End +*?KCStaple: " + save + currentpagedevice /Staple known + dup {currentpagedevice /Staple get 0 ne and} if + {currentpagedevice /StapleDetails get /StaplePosition get + 1 { + dup 1 eq {pop (UpperRight) exit} if + dup 2 eq {pop (UpperLeft) exit} if + dup 3 eq {pop (Booklet) exit} if + } repeat + }{(None)} ifelse + = flush restore" +*End +*CloseUI: *KCStaple + +*% Staple Method Definitions +*OpenUI *StapleCount/Heftmethode: PickOne +*OrderDependency: 20 AnySetup *StapleCount +*DefaultStapleCount: None +*StapleCount None/Aus: "" +*StapleCount Each2/Je 2 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 2 put <> setpagedevice" +*End +*StapleCount Each3/Je 3 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 3 put <> setpagedevice" +*End +*StapleCount Each4/Je 4 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 4 put <> setpagedevice" +*End +*StapleCount Each5/Je 5 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 5 put <> setpagedevice" +*End +*StapleCount Each6/Je 6 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 6 put <> setpagedevice" +*End +*StapleCount Each7/Je 7 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 7 put <> setpagedevice" +*End +*StapleCount Each8/Je 8 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 8 put <> setpagedevice" +*End +*StapleCount Each9/Je 9 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 9 put <> setpagedevice" +*End +*StapleCount Each10/Je 10 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 10 put <> setpagedevice" +*End +*StapleCount Each11/Je 11 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 11 put <> setpagedevice" +*End +*StapleCount Each12/Je 12 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 12 put <> setpagedevice" +*End +*StapleCount Each13/Je 13 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 13 put <> setpagedevice" +*End +*StapleCount Each14/Je 14 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 14 put <> setpagedevice" +*End +*StapleCount Each15/Je 15 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 15 put <> setpagedevice" +*End +*StapleCount Each16/Je 16 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 16 put <> setpagedevice" +*End +*StapleCount Each17/Je 17 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 17 put <> setpagedevice" +*End +*StapleCount Each18/Je 18 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 18 put <> setpagedevice" +*End +*StapleCount Each19/Je 19 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 19 put <> setpagedevice" +*End +*StapleCount Each20/Je 20 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 20 put <> setpagedevice" +*End +*StapleCount Each21/Je 21 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 21 put <> setpagedevice" +*End +*StapleCount Each22/Je 22 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 22 put <> setpagedevice" +*End +*StapleCount Each23/Je 23 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 23 put <> setpagedevice" +*End +*StapleCount Each24/Je 24 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 24 put <> setpagedevice" +*End +*StapleCount Each25/Je 25 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 25 put <> setpagedevice" +*End +*StapleCount Each26/Je 26 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 26 put <> setpagedevice" +*End +*StapleCount Each27/Je 27 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 27 put <> setpagedevice" +*End +*StapleCount Each28/Je 28 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 28 put <> setpagedevice" +*End +*StapleCount Each29/Je 29 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 29 put <> setpagedevice" +*End +*StapleCount Each30/Je 30 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 30 put <> setpagedevice" +*End +*StapleCount Each31/Je 31 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 31 put <> setpagedevice" +*End +*StapleCount Each32/Je 32 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 32 put <> setpagedevice" +*End +*StapleCount Each33/Je 33 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 33 put <> setpagedevice" +*End +*StapleCount Each34/Je 34 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 34 put <> setpagedevice" +*End +*StapleCount Each35/Je 35 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 35 put <> setpagedevice" +*End +*StapleCount Each36/Je 36 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 36 put <> setpagedevice" +*End +*StapleCount Each37/Je 37 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 37 put <> setpagedevice" +*End +*StapleCount Each38/Je 38 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 38 put <> setpagedevice" +*End +*StapleCount Each39/Je 39 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 39 put <> setpagedevice" +*End +*StapleCount Each40/Je 40 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 40 put <> setpagedevice" +*End +*StapleCount Each41/Je 41 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 41 put <> setpagedevice" +*End +*StapleCount Each42/Je 42 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 42 put <> setpagedevice" +*End +*StapleCount Each43/Je 43 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 43 put <> setpagedevice" +*End +*StapleCount Each44/Je 44 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 44 put <> setpagedevice" +*End +*StapleCount Each45/Je 45 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 45 put <> setpagedevice" +*End +*StapleCount Each46/Je 46 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 46 put <> setpagedevice" +*End +*StapleCount Each47/Je 47 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 47 put <> setpagedevice" +*End +*StapleCount Each48/Je 48 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 48 put <> setpagedevice" +*End +*StapleCount Each49/Je 49 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 49 put <> setpagedevice" +*End +*StapleCount Each50/Je 50 Blatt Heften: " + userdict /UIStapleDetails known not {userdict /UIStapleDetails 10 dict put} if + userdict /UIStapleDetails get /Count 50 put <> setpagedevice" +*End +*?StapleCount: "save (Auto) = flush restore" +*CloseUI: *StapleCount + +*% Punch Method Definitions +*OpenUI *KCPunch/Locher-Modus: PickOne +*OrderDependency: 100 AnySetup *KCPunch +*DefaultKCPunch: None +*KCPunch None/Aus: "<< /Punch 0 >> setpagedevice" +*KCPunch 2Hole/2 Lcher (US): "<< /Punch 3 /PunchDetails << /PunchMode 2 >> >> setpagedevice" +*KCPunch 2HoleEUR/2 Lcher (EUR): "<< /Punch 3 /PunchDetails << /PunchMode 1 >> >> setpagedevice" +*KCPunch 3Hole/3 Lcher: "<< /Punch 3 /PunchDetails << /PunchMode 1 >> >> setpagedevice" +*KCPunch 4Hole/4 Lcher: "<< /Punch 3 /PunchDetails << /PunchMode 2 >> >> setpagedevice" +*?KCPunch: " + save + currentpagedevice /Punch known + dup { currentpagedevice /Punch get 0 ne and } if + { currentpagedevice /Mode get + /Mode get [(2or3holes)(4or2holes)] exch get } + { (None) } ifelse = flush restore" +*End +*CloseUI: *KCPunch + +*% 180 Rotate Definitions +*OpenUI *Rotate/180 Rotiert: Boolean +*OrderDependency: 45 AnySetup *Rotate +*DefaultRotate: False +*Rotate False/Aus: "" +*Rotate True/Ein: "userdict /180rotdetail known not +{ +userdict /180rotdetail true put +1 dict begin currentpagedevice /Install get aload + /aaa exch def { currentpagedevice /PageSize get aload pop translate 180 rotate } bind aload + length /aaa load length add array astore cvx /Install exch def currentdict end setpagedevice +} if" +*?Rotate:" + (False) =" +*End +*CloseUI: *Rotate + +*% Job Offset Definitions +*OpenUI *Jog/Versetzter Druck: Boolean +*OrderDependency: 50 AnySetup *Jog +*DefaultJog: False +*Jog False/Aus: "<< /Jog 0 >> setpagedevice" +*Jog True/Ein: "<< /Jog 3 >> setpagedevice" +*?Jog: " + save + currentpagedevice dup /Jog known { + /Jog get dup 0 gt + {(False)}{(True)} ifelse + }{(Unknown)} ifelse + exch pop + = flush restore" +*End +*CloseUI: *Jog + +*CloseGroup: Finishing/Endbearbeitung + +*OpenGroup: Booklet <2F> Folding/Booklet <2F> Folding + +*% Booklet Definitions +*OpenUI *KCBooklet/Broschre: PickOne +*OrderDependency: 100 AnySetup *KCBooklet +*DefaultKCBooklet: None +*KCBooklet None/Aus: "0 statusdict /setkcbooklet get exec" +*KCBooklet Left/Booklet links geheftet: " 1 statusdict /setkcbooklet get exec statusdict begin true setduplexmode true settumble end" +*KCBooklet Right/Booklet rechts geheftet: " 2 statusdict /setkcbooklet get exec statusdict begin true setduplexmode true settumble end" +*?KCBooklet: "(None) = flush" +*End +*CloseUI: *KCBooklet + +*% Fold Booklet Definitions +*OpenUI *KCFold/Booklet-Faltung: Boolean +*OrderDependency: 100 AnySetup *KCFold +*DefaultKCFold: False +*KCFold False/Aus: "<< /Fold 0 >> setpagedevice" +*KCFold True/Ein: "<< /Fold 3 /FoldDetails << /FoldMode 1 >> >> setpagedevice" +*?KCFold: "(None) = flush" +*End +*CloseUI: *KCFold + +*CloseGroup: Booklet <2F> Folding/Booklet <2F> Folding + +*% Duplex Definitions +*OpenUI *Duplex/Duplex: PickOne +*OrderDependency: 50 AnySetup *Duplex +*DefaultDuplex: DuplexNoTumble +*Duplex None/Keine: "statusdict begin false setduplexmode false settumble end" +*Duplex DuplexTumble/Schmalseite: "statusdict begin true setduplexmode true settumble end" +*Duplex DuplexNoTumble/Lngsseite: "statusdict begin true setduplexmode false settumble end" +*?Duplex: " + save + statusdict begin + duplexmode + {tumble {(DuplexTumble)}{(DuplexNoTumble)} ifelse} + {(None)} ifelse + = flush end restore" +*End +*CloseUI: *Duplex + +*OpenGroup: Job Settings/Job Zwischenspeicherung + +*% Job Spooling Definitions +*OpenUI *KCCollate1/Job Zwischenspeicherung: PickOne +*OrderDependency: 20 AnySetup *KCCollate1 +*DefaultKCCollate1: PrnDef +*KCCollate1 PrnDef/Druckereinstellungen: "" +*KCCollate1 On/Sortieren: "<< /Collate true >> setpagedevice" +*KCCollate1 None/Keine: "<< /Collate false >> setpagedevice" +*KCCollate1 QuickCopy/Schnellkopie: " + userdict /UICollateDetails known not {userdict /UICollateDetails 10 dict put} if + userdict /UICollateDetails get dup /Mode 0 put dup /Type 8 put /Hold 1 put <> setpagedevice" +*End +*KCCollate1 ProofHold/Prfen und aufbewahren: " + userdict /UICollateDetails known not {userdict /UICollateDetails 10 dict put} if + userdict /UICollateDetails get dup /Mode 0 put dup /Type 8 put /Hold 3 put <> setpagedevice" +*End +*KCCollate1 JobStorage/Auftragsspeicher: " + userdict /UICollateDetails known not {userdict /UICollateDetails 10 dict put} if + userdict /UICollateDetails get dup /Mode 0 put dup /Type 8 put dup /Hold 2 put dup /HoldType 0 put /HoldKey (0000) pop pop pop <> setpagedevice" +*End +*CloseUI: *KCCollate1 + +*CloseGroup: Job Settings/Job Zwischenspeicherung + +*OpenGroup: Job Accounting/Auftragszhlung + +*% Management Code Definitions +*OpenUI *KmManagment/Auftragszhlung: PickOne +*OrderDependency: 60 AnySetup *KmManagment +*DefaultKmManagment: Default +*KmManagment Default/Aus: "" +*KmManagment MG00000000/00000000: "(00000000) statusdict /setmanagementnumber get exec" +*KmManagment MG00000001/00000001: "(00000001) statusdict /setmanagementnumber get exec" +*KmManagment MG00000002/00000002: "(00000002) statusdict /setmanagementnumber get exec" +*KmManagment MG00000003/00000003: "(00000003) statusdict /setmanagementnumber get exec" +*KmManagment MG00000004/00000004: "(00000004) statusdict /setmanagementnumber get exec" +*KmManagment MG00000005/00000005: "(00000005) statusdict /setmanagementnumber get exec" +*KmManagment MG00000006/00000006: "(00000006) statusdict /setmanagementnumber get exec" +*KmManagment MG00000007/00000007: "(00000007) statusdict /setmanagementnumber get exec" +*KmManagment MG00000008/00000008: "(00000008) statusdict /setmanagementnumber get exec" +*KmManagment MG00000009/00000009: "(00000009) statusdict /setmanagementnumber get exec" +*KmManagment MG00000010/00000010: "(00000010) statusdict /setmanagementnumber get exec" +*KmManagment MG00000011/00000011: "(00000011) statusdict /setmanagementnumber get exec" +*KmManagment MG00000012/00000012: "(00000012) statusdict /setmanagementnumber get exec" +*KmManagment MG00000013/00000013: "(00000013) statusdict /setmanagementnumber get exec" +*KmManagment MG00000014/00000014: "(00000014) statusdict /setmanagementnumber get exec" +*KmManagment MG00000015/00000015: "(00000015) statusdict /setmanagementnumber get exec" +*KmManagment MG00000016/00000016: "(00000016) statusdict /setmanagementnumber get exec" +*KmManagment MG00000017/00000017: "(00000017) statusdict /setmanagementnumber get exec" +*KmManagment MG00000018/00000018: "(00000018) statusdict /setmanagementnumber get exec" +*KmManagment MG00000019/00000019: "(00000019) statusdict /setmanagementnumber get exec" +*KmManagment MG00000020/00000020: "(00000020) statusdict /setmanagementnumber get exec" +*KmManagment MG00000021/00000021: "(00000021) statusdict /setmanagementnumber get exec" +*KmManagment MG00000022/00000022: "(00000022) statusdict /setmanagementnumber get exec" +*KmManagment MG00000023/00000023: "(00000023) statusdict /setmanagementnumber get exec" +*KmManagment MG00000024/00000024: "(00000024) statusdict /setmanagementnumber get exec" +*KmManagment MG00000025/00000025: "(00000025) statusdict /setmanagementnumber get exec" +*KmManagment MG00000026/00000026: "(00000026) statusdict /setmanagementnumber get exec" +*KmManagment MG00000027/00000027: "(00000027) statusdict /setmanagementnumber get exec" +*KmManagment MG00000028/00000028: "(00000028) statusdict /setmanagementnumber get exec" +*KmManagment MG00000029/00000029: "(00000029) statusdict /setmanagementnumber get exec" +*KmManagment MG00000030/00000030: "(00000030) statusdict /setmanagementnumber get exec" +*?KmManagment: "" +*End +*CloseUI: *KmManagment + +*CloseGroup: Job Accounting/Auftragszhlung + +*OpenGroup: Adjustment/Anpassung +*% Adjustment Definitions + +*OpenUI *CaAdjustment/Anpassung: Boolean +*OrderDependency: 19 AnySetup *CaAdjustment +*DefaultCaAdjustment: False +*CaAdjustment False/Aus: "/CaAdjustment False def" +*CaAdjustment True/Ein: "/CaAdjustment True def" +*CloseUI: *CaAdjustment + +*OpenUI *CaColorSpace/FSH/Farbbalance: PickOne +*OrderDependency: 11 AnySetup *CaColorSpace +*DefaultCaColorSpace: -1 +*CaColorSpace -1/Keine: "/CaColorSpace -1 def" +*CaColorSpace 0/FSH (Farbton, Sttigung und Helligkeit): "/CaColorSpace 0 def" +*CaColorSpace 1/Farbbalance: "/CaColorSpace 1 def" +*CloseUI: *CaSpace + +*OpenUI *CaHueMaster/Original: PickOne +*OrderDependency: 11 AnySetup *CaHueMaster +*DefaultCaHueMaster: 0 +*CaHueMaster -180/-180: "/CaHueMaster -180 def" +*CaHueMaster -170/-170: "/CaHueMaster -170 def" +*CaHueMaster -160/-160: "/CaHueMaster -160 def" +*CaHueMaster -150/-150: "/CaHueMaster -150 def" +*CaHueMaster -140/-140: "/CaHueMaster -140 def" +*CaHueMaster -130/-130: "/CaHueMaster -130 def" +*CaHueMaster -120/-120: "/CaHueMaster -120 def" +*CaHueMaster -110/-110: "/CaHueMaster -110 def" +*CaHueMaster -100/-100: "/CaHueMaster -100 def" +*CaHueMaster -90/-90: "/CaHueMaster -90 def" +*CaHueMaster -80/-80: "/CaHueMaster -80 def" +*CaHueMaster -70/-70: "/CaHueMaster -70 def" +*CaHueMaster -60/-60: "/CaHueMaster -60 def" +*CaHueMaster -50/-50: "/CaHueMaster -50 def" +*CaHueMaster -40/-40: "/CaHueMaster -40 def" +*CaHueMaster -30/-30: "/CaHueMaster -30 def" +*CaHueMaster -20/-20: "/CaHueMaster -20 def" +*CaHueMaster -10/-10: "/CaHueMaster -10 def" +*CaHueMaster 0/0: "/CaHueMaster -0 def" +*CaHueMaster 10/10: "/CaHueMaster 10 def" +*CaHueMaster 20/20: "/CaHueMaster 20 def" +*CaHueMaster 30/30: "/CaHueMaster 30 def" +*CaHueMaster 40/40: "/CaHueMaster 40 def" +*CaHueMaster 50/50: "/CaHueMaster 50 def" +*CaHueMaster 60/60: "/CaHueMaster 60 def" +*CaHueMaster 70/70: "/CaHueMaster 70 def" +*CaHueMaster 80/80: "/CaHueMaster 80 def" +*CaHueMaster 90/90: "/CaHueMaster 90 def" +*CaHueMaster 100/100: "/CaHueMaster 100 def" +*CaHueMaster 110/110: "/CaHueMaster 110 def" +*CaHueMaster 120/120: "/CaHueMaster 120 def" +*CaHueMaster 130/130: "/CaHueMaster 130 def" +*CaHueMaster 140/140: "/CaHueMaster 140 def" +*CaHueMaster 150/150: "/CaHueMaster 150 def" +*CaHueMaster 160/160: "/CaHueMaster 160 def" +*CaHueMaster 170/170: "/CaHueMaster 170 def" +*CaHueMaster 180/180: "/CaHueMaster 180 def" +*CloseUI: *CaHueMaster + +*OpenUI *CaHueRed/Rot: PickOne +*OrderDependency: 11 AnySetup *CaHueRed +*DefaultCaHueRed: 0 +*CaHueRed -10.0/-10.0: "/CaHueRed -10.0 def" +*CaHueRed -9.0/-9.0: "/CaHueRed -9.0 def" +*CaHueRed -8.0/-8.0: "/CaHueRed -8.0 def" +*CaHueRed -7.0/-7.0: "/CaHueRed -7.0 def" +*CaHueRed -6.0/-6.0: "/CaHueRed -6.0 def" +*CaHueRed -5.0/-5.0: "/CaHueRed -5.0 def" +*CaHueRed -4.0/-4.0: "/CaHueRed -4.0 def" +*CaHueRed -3.0/-3.0: "/CaHueRed -3.0 def" +*CaHueRed -2.0/-2.0: "/CaHueRed -2.0 def" +*CaHueRed -1.0/-1.0: "/CaHueRed -1.0 def" +*CaHueRed 0/0: "/CaHueRed 0.0 def" +*CaHueRed 1.0/1.0: "/CaHueRed 1.0 def" +*CaHueRed 2.0/2.0: "/CaHueRed 2.0 def" +*CaHueRed 3.0/3.0: "/CaHueRed 3.0 def" +*CaHueRed 4.0/4.0: "/CaHueRed 4.0 def" +*CaHueRed 5.0/5.0: "/CaHueRed 5.0 def" +*CaHueRed 6.0/6.0: "/CaHueRed 6.0 def" +*CaHueRed 7.0/7.0: "/CaHueRed 7.0 def" +*CaHueRed 8.0/8.0: "/CaHueRed 8.0 def" +*CaHueRed 9.0/9.0: "/CaHueRed 9.0 def" +*CaHueRed 10.0/10.0: "/CaHueRed 10.0 def" +*CloseUI: *CaHueRed + +*OpenUI *CaHueYellow/Gelb: PickOne +*OrderDependency: 11 AnySetup *CaHueYellow +*DefaultCaHueYellow: 0 +*CaHueYellow -10.0/-10.0: "/CaHueYellow -10.0 def" +*CaHueYellow -9.0/-9.0: "/CaHueYellow -9.0 def" +*CaHueYellow -8.0/-8.0: "/CaHueYellow -8.0 def" +*CaHueYellow -7.0/-7.0: "/CaHueYellow -7.0 def" +*CaHueYellow -6.0/-6.0: "/CaHueYellow -6.0 def" +*CaHueYellow -5.0/-5.0: "/CaHueYellow -5.0 def" +*CaHueYellow -4.0/-4.0: "/CaHueYellow -4.0 def" +*CaHueYellow -3.0/-3.0: "/CaHueYellow -3.0 def" +*CaHueYellow -2.0/-2.0: "/CaHueYellow -2.0 def" +*CaHueYellow -1.0/-1.0: "/CaHueYellow -1.0 def" +*CaHueYellow 0/0: "/CaHueYellow 0.0 def" +*CaHueYellow 1.0/1.0: "/CaHueYellow 1.0 def" +*CaHueYellow 2.0/2.0: "/CaHueYellow 2.0 def" +*CaHueYellow 3.0/3.0: "/CaHueYellow 3.0 def" +*CaHueYellow 4.0/4.0: "/CaHueYellow 4.0 def" +*CaHueYellow 5.0/5.0: "/CaHueYellow 5.0 def" +*CaHueYellow 6.0/6.0: "/CaHueYellow 6.0 def" +*CaHueYellow 7.0/7.0: "/CaHueYellow 7.0 def" +*CaHueYellow 8.0/8.0: "/CaHueYellow 8.0 def" +*CaHueYellow 9.0/9.0: "/CaHueYellow 9.0 def" +*CaHueYellow 10.0/10.0: "/CaHueYellow 10.0 def" +*CloseUI: *CaHueYellow + +*OpenUI *CaHueGreen/Grn: PickOne +*OrderDependency: 11 AnySetup *CaHueGreen +*DefaultCaHueGreen: 0 +*CaHueGreen -10.0/-10.0: "/CaHueGreen -10.0 def" +*CaHueGreen -9.0/-9.0: "/CaHueGreen -9.0 def" +*CaHueGreen -8.0/-8.0: "/CaHueGreen -8.0 def" +*CaHueGreen -7.0/-7.0: "/CaHueGreen -7.0 def" +*CaHueGreen -6.0/-6.0: "/CaHueGreen -6.0 def" +*CaHueGreen -5.0/-5.0: "/CaHueGreen -5.0 def" +*CaHueGreen -4.0/-4.0: "/CaHueGreen -4.0 def" +*CaHueGreen -3.0/-3.0: "/CaHueGreen -3.0 def" +*CaHueGreen -2.0/-2.0: "/CaHueGreen -2.0 def" +*CaHueGreen -1.0/-1.0: "/CaHueGreen -1.0 def" +*CaHueGreen 0/0: "/CaHueGreen 0.0 def" +*CaHueGreen 1.0/1.0: "/CaHueGreen 1.0 def" +*CaHueGreen 2.0/2.0: "/CaHueGreen 2.0 def" +*CaHueGreen 3.0/3.0: "/CaHueGreen 3.0 def" +*CaHueGreen 4.0/4.0: "/CaHueGreen 4.0 def" +*CaHueGreen 5.0/5.0: "/CaHueGreen 5.0 def" +*CaHueGreen 6.0/6.0: "/CaHueGreen 6.0 def" +*CaHueGreen 7.0/7.0: "/CaHueGreen 7.0 def" +*CaHueGreen 8.0/8.0: "/CaHueGreen 8.0 def" +*CaHueGreen 9.0/9.0: "/CaHueGreen 9.0 def" +*CaHueGreen 10.0/10.0: "/CaHueGreen 10.0 def" +*CloseUI: *CaHueGreen + +*OpenUI *CaHueCyan/Cyan: PickOne +*OrderDependency: 11 AnySetup *CaHueCyan +*DefaultCaHueCyan: 0 +*CaHueCyan -10.0/-10.0: "/CaHueCyan -10.0 def" +*CaHueCyan -9.0/-9.0: "/CaHueCyan -9.0 def" +*CaHueCyan -8.0/-8.0: "/CaHueCyan -8.0 def" +*CaHueCyan -7.0/-7.0: "/CaHueCyan -7.0 def" +*CaHueCyan -6.0/-6.0: "/CaHueCyan -6.0 def" +*CaHueCyan -5.0/-5.0: "/CaHueCyan -5.0 def" +*CaHueCyan -4.0/-4.0: "/CaHueCyan -4.0 def" +*CaHueCyan -3.0/-3.0: "/CaHueCyan -3.0 def" +*CaHueCyan -2.0/-2.0: "/CaHueCyan -2.0 def" +*CaHueCyan -1.0/-1.0: "/CaHueCyan -1.0 def" +*CaHueCyan 0/0: "/CaHueCyan 0.0 def" +*CaHueCyan 1.0/1.0: "/CaHueCyan 1.0 def" +*CaHueCyan 2.0/2.0: "/CaHueCyan 2.0 def" +*CaHueCyan 3.0/3.0: "/CaHueCyan 3.0 def" +*CaHueCyan 4.0/4.0: "/CaHueCyan 4.0 def" +*CaHueCyan 5.0/5.0: "/CaHueCyan 5.0 def" +*CaHueCyan 6.0/6.0: "/CaHueCyan 6.0 def" +*CaHueCyan 7.0/7.0: "/CaHueCyan 7.0 def" +*CaHueCyan 8.0/8.0: "/CaHueCyan 8.0 def" +*CaHueCyan 9.0/9.0: "/CaHueCyan 9.0 def" +*CaHueCyan 10.0/10.0: "/CaHueCyan 10.0 def" +*CloseUI: *CaHueCyan + +*OpenUI *CaHueBlue/Blau: PickOne +*OrderDependency: 11 AnySetup *CaHueBlue +*DefaultCaHueBlue: 0 +*CaHueBlue -10.0/-10.0: "/CaHueBlue -10.0 def" +*CaHueBlue -9.0/-9.0: "/CaHueBlue -9.0 def" +*CaHueBlue -8.0/-8.0: "/CaHueBlue -8.0 def" +*CaHueBlue -7.0/-7.0: "/CaHueBlue -7.0 def" +*CaHueBlue -6.0/-6.0: "/CaHueBlue -6.0 def" +*CaHueBlue -5.0/-5.0: "/CaHueBlue -5.0 def" +*CaHueBlue -4.0/-4.0: "/CaHueBlue -4.0 def" +*CaHueBlue -3.0/-3.0: "/CaHueBlue -3.0 def" +*CaHueBlue -2.0/-2.0: "/CaHueBlue -2.0 def" +*CaHueBlue -1.0/-1.0: "/CaHueBlue -1.0 def" +*CaHueBlue 0/0: "/CaHueBlue 0.0 def" +*CaHueBlue 1.0/1.0: "/CaHueBlue 1.0 def" +*CaHueBlue 2.0/2.0: "/CaHueBlue 2.0 def" +*CaHueBlue 3.0/3.0: "/CaHueBlue 3.0 def" +*CaHueBlue 4.0/4.0: "/CaHueBlue 4.0 def" +*CaHueBlue 5.0/5.0: "/CaHueBlue 5.0 def" +*CaHueBlue 6.0/6.0: "/CaHueBlue 6.0 def" +*CaHueBlue 7.0/7.0: "/CaHueBlue 7.0 def" +*CaHueBlue 8.0/8.0: "/CaHueBlue 8.0 def" +*CaHueBlue 9.0/9.0: "/CaHueBlue 9.0 def" +*CaHueBlue 10.0/10.0: "/CaHueBlue 10.0 def" +*CloseUI: *CaHueBlue + +*OpenUI *CaHueMagenta/Magenta: PickOne +*OrderDependency: 11 AnySetup *CaHueMagenta +*DefaultCaHueMagenta: 0 +*CaHueMagenta -10.0/-10.0: "/CaHueMagenta -10.0 def" +*CaHueMagenta -9.0/-9.0: "/CaHueMagenta -9.0 def" +*CaHueMagenta -8.0/-8.0: "/CaHueMagenta -8.0 def" +*CaHueMagenta -7.0/-7.0: "/CaHueMagenta -7.0 def" +*CaHueMagenta -6.0/-6.0: "/CaHueMagenta -6.0 def" +*CaHueMagenta -5.0/-5.0: "/CaHueMagenta -5.0 def" +*CaHueMagenta -4.0/-4.0: "/CaHueMagenta -4.0 def" +*CaHueMagenta -3.0/-3.0: "/CaHueMagenta -3.0 def" +*CaHueMagenta -2.0/-2.0: "/CaHueMagenta -2.0 def" +*CaHueMagenta -1.0/-1.0: "/CaHueMagenta -1.0 def" +*CaHueMagenta 0/0: "/CaHueMagenta 0.0 def" +*CaHueMagenta 1.0/1.0: "/CaHueMagenta 1.0 def" +*CaHueMagenta 2.0/2.0: "/CaHueMagenta 2.0 def" +*CaHueMagenta 3.0/3.0: "/CaHueMagenta 3.0 def" +*CaHueMagenta 4.0/4.0: "/CaHueMagenta 4.0 def" +*CaHueMagenta 5.0/5.0: "/CaHueMagenta 5.0 def" +*CaHueMagenta 6.0/6.0: "/CaHueMagenta 6.0 def" +*CaHueMagenta 7.0/7.0: "/CaHueMagenta 7.0 def" +*CaHueMagenta 8.0/8.0: "/CaHueMagenta 8.0 def" +*CaHueMagenta 9.0/9.0: "/CaHueMagenta 9.0 def" +*CaHueMagenta 10.0/10.0: "/CaHueMagenta 10.0 def" +*CloseUI: *CaHueMagenta + +*OpenUI *CaSaturation/Sttigung: PickOne +*OrderDependency: 11 AnySetup *CaSaturation +*DefaultCaSaturation: 0 +*CaSaturation -10.0/-10.0: "/CaSaturation -10.0 def" +*CaSaturation -9.0/-9.0: "/CaSaturation -9.0 def" +*CaSaturation -8.0/-8.0: "/CaSaturation -8.0 def" +*CaSaturation -7.0/-7.0: "/CaSaturation -7.0 def" +*CaSaturation -6.0/-6.0: "/CaSaturation -6.0 def" +*CaSaturation -5.0/-5.0: "/CaSaturation -5.0 def" +*CaSaturation -4.0/-4.0: "/CaSaturation -4.0 def" +*CaSaturation -3.0/-3.0: "/CaSaturation -3.0 def" +*CaSaturation -2.0/-2.0: "/CaSaturation -2.0 def" +*CaSaturation -1.0/-1.0: "/CaSaturation -1.0 def" +*CaSaturation 0/0: "/CaSaturation 0.0 def" +*CaSaturation 1.0/1.0: "/CaSaturation 1.0 def" +*CaSaturation 2.0/2.0: "/CaSaturation 2.0 def" +*CaSaturation 3.0/3.0: "/CaSaturation 3.0 def" +*CaSaturation 4.0/4.0: "/CaSaturation 4.0 def" +*CaSaturation 5.0/5.0: "/CaSaturation 5.0 def" +*CaSaturation 6.0/6.0: "/CaSaturation 6.0 def" +*CaSaturation 7.0/7.0: "/CaSaturation 7.0 def" +*CaSaturation 8.0/8.0: "/CaSaturation 8.0 def" +*CaSaturation 9.0/9.0: "/CaSaturation 9.0 def" +*CaSaturation 10.0/10.0: "/CaSaturation 10.0 def" +*CloseUI: *CaSaturation + +*OpenUI *CaBrightness/Helligkeit: PickOne +*OrderDependency: 11 AnySetup *CaBrightness +*DefaultCaBrightness: 0 +*CaBrightness -10.0/-10.0: "/CaBrightness -10.0 def" +*CaBrightness -9.0/-9.0: "/CaBrightness -9.0 def" +*CaBrightness -8.0/-8.0: "/CaBrightness -8.0 def" +*CaBrightness -7.0/-7.0: "/CaBrightness -7.0 def" +*CaBrightness -6.0/-6.0: "/CaBrightness -6.0 def" +*CaBrightness -5.0/-5.0: "/CaBrightness -5.0 def" +*CaBrightness -4.0/-4.0: "/CaBrightness -4.0 def" +*CaBrightness -3.0/-3.0: "/CaBrightness -3.0 def" +*CaBrightness -2.0/-2.0: "/CaBrightness -2.0 def" +*CaBrightness -1.0/-1.0: "/CaBrightness -1.0 def" +*CaBrightness 0/0: "/CaBrightness 0 def" +*CaBrightness 1.0/1.0: "/CaBrightness 1.0 def" +*CaBrightness 2.0/2.0: "/CaBrightness 2.0 def" +*CaBrightness 3.0/3.0: "/CaBrightness 3.0 def" +*CaBrightness 4.0/4.0: "/CaBrightness 4.0 def" +*CaBrightness 5.0/5.0: "/CaBrightness 5.0 def" +*CaBrightness 6.0/6.0: "/CaBrightness 6.0 def" +*CaBrightness 7.0/7.0: "/CaBrightness 7.0 def" +*CaBrightness 8.0/8.0: "/CaBrightness 8.0 def" +*CaBrightness 9.0/9.0: "/CaBrightness 9.0 def" +*CaBrightness 10.0/10.0: "/CaBrightness 10.0 def" +*CloseUI: *CaBrightness + +*OpenUI *CaContrast/Kontrast: PickOne +*OrderDependency: 11 AnySetup *CaContrast +*DefaultCaContrast: 0 +*CaContrast -10.0/-10.0: "/CaContrast -10.0 def" +*CaContrast -9.0/-9.0: "/CaContrast -9.0 def" +*CaContrast -8.0/-8.0: "/CaContrast -8.0 def" +*CaContrast -7.0/-7.0: "/CaContrast -7.0 def" +*CaContrast -6.0/-6.0: "/CaContrast -6.0 def" +*CaContrast -5.0/-5.0: "/CaContrast -5.0 def" +*CaContrast -4.0/-4.0: "/CaContrast -4.0 def" +*CaContrast -3.0/-3.0: "/CaContrast -3.0 def" +*CaContrast -2.0/-2.0: "/CaContrast -2.0 def" +*CaContrast -1.0/-1.0: "/CaContrast -1.0 def" +*CaContrast 0/0: "/CaContrast 0.0 def" +*CaContrast 1.0/1.0: "/CaContrast 1.0 def" +*CaContrast 2.0/2.0: "/CaContrast 2.0 def" +*CaContrast 3.0/3.0: "/CaContrast 3.0 def" +*CaContrast 4.0/4.0: "/CaContrast 4.0 def" +*CaContrast 5.0/5.0: "/CaContrast 5.0 def" +*CaContrast 6.0/6.0: "/CaContrast 6.0 def" +*CaContrast 7.0/7.0: "/CaContrast 7.0 def" +*CaContrast 8.0/8.0: "/CaContrast 8.0 def" +*CaContrast 9.0/9.0: "/CaContrast 9.0 def" +*CaContrast 10.0/10.0: "/CaContrast 10.0 def" +*CloseUI: *CaContrast + +*OpenUI *CaCR/Cyan-Rot: PickOne +*OrderDependency: 11 AnySetup *CaCR +*DefaultCaCR: 0 +*CaCR -10.0/-10.0: "/CaCR -10.0 def" +*CaCR -9.0/-9.0: "/CaCR -9.0 def" +*CaCR -8.0/-8.0: "/CaCR -8.0 def" +*CaCR -7.0/-7.0: "/CaCR -7.0 def" +*CaCR -6.0/-6.0: "/CaCR -6.0 def" +*CaCR -5.0/-5.0: "/CaCR -5.0 def" +*CaCR -4.0/-4.0: "/CaCR -4.0 def" +*CaCR -3.0/-3.0: "/CaCR -3.0 def" +*CaCR -2.0/-2.0: "/CaCR -2.0 def" +*CaCR -1.0/-1.0: "/CaCR -1.0 def" +*CaCR 0/0: "/CaCR 0.0 def" +*CaCR 1.0/1.0: "/CaCR 1.0 def" +*CaCR 2.0/2.0: "/CaCR 2.0 def" +*CaCR 3.0/3.0: "/CaCR 3.0 def" +*CaCR 4.0/4.0: "/CaCR 4.0 def" +*CaCR 5.0/5.0: "/CaCR 5.0 def" +*CaCR 6.0/6.0: "/CaCR 6.0 def" +*CaCR 7.0/7.0: "/CaCR 7.0 def" +*CaCR 8.0/8.0: "/CaCR 8.0 def" +*CaCR 9.0/9.0: "/CaCR 9.0 def" +*CaCR 10.0/10.0: "/CaCR 10.0 def" +*CloseUI: *CaCR + +*OpenUI *CaMG/Magenta-Grn: PickOne +*OrderDependency: 11 AnySetup *CaMG +*DefaultCaMG: 0 +*CaMG -10.0/-10.0: "/CaMG -10.0 def" +*CaMG -9.0/-9.0: "/CaMG -9.0 def" +*CaMG -8.0/-8.0: "/CaMG -8.0 def" +*CaMG -7.0/-7.0: "/CaMG -7.0 def" +*CaMG -6.0/-6.0: "/CaMG -6.0 def" +*CaMG -5.0/-5.0: "/CaMG -5.0 def" +*CaMG -4.0/-4.0: "/CaMG -4.0 def" +*CaMG -3.0/-3.0: "/CaMG -3.0 def" +*CaMG -2.0/-2.0: "/CaMG -2.0 def" +*CaMG -1.0/-1.0: "/CaMG -1.0 def" +*CaMG 0/0: "/CaMG 0.0 def" +*CaMG 1.0/1.0: "/CaMG 1.0 def" +*CaMG 2.0/2.0: "/CaMG 2.0 def" +*CaMG 3.0/3.0: "/CaMG 3.0 def" +*CaMG 4.0/4.0: "/CaMG 4.0 def" +*CaMG 5.0/5.0: "/CaMG 5.0 def" +*CaMG 6.0/6.0: "/CaMG 6.0 def" +*CaMG 7.0/7.0: "/CaMG 7.0 def" +*CaMG 8.0/8.0: "/CaMG 8.0 def" +*CaMG 9.0/9.0: "/CaMG 9.0 def" +*CaMG 10.0/10.0: "/CaMG 10.0 def" +*CloseUI: *CaMG + +*OpenUI *CaYB/Gelb-Blau: PickOne +*OrderDependency: 11 AnySetup *CaYB +*DefaultCaYB: 0 +*CaYB -10.0/-10.0: "/CaYB -10.0 def" +*CaYB -9.0/-9.0: "/CaYB -9.0 def" +*CaYB -8.0/-8.0: "/CaYB -8.0 def" +*CaYB -7.0/-7.0: "/CaYB -7.0 def" +*CaYB -6.0/-6.0: "/CaYB -6.0 def" +*CaYB -5.0/-5.0: "/CaYB -5.0 def" +*CaYB -4.0/-4.0: "/CaYB -4.0 def" +*CaYB -3.0/-3.0: "/CaYB -3.0 def" +*CaYB -2.0/-2.0: "/CaYB -2.0 def" +*CaYB -1.0/-1.0: "/CaYB -1.0 def" +*CaYB 0/0: "/CaYB 0.0 def" +*CaYB 1.0/1.0: "/CaYB 1.0 def" +*CaYB 2.0/2.0: "/CaYB 2.0 def" +*CaYB 3.0/3.0: "/CaYB 3.0 def" +*CaYB 4.0/4.0: "/CaYB 4.0 def" +*CaYB 5.0/5.0: "/CaYB 5.0 def" +*CaYB 6.0/6.0: "/CaYB 6.0 def" +*CaYB 7.0/7.0: "/CaYB 7.0 def" +*CaYB 8.0/8.0: "/CaYB 8.0 def" +*CaYB 9.0/9.0: "/CaYB 9.0 def" +*CaYB 10.0/10.0: "/CaYB 10.0 def" +*CloseUI: *CaYB + +*CloseGroup: Adjustment/Anpassung + +*OpenGroup: KMWatermark/Wasserzeichen + +*OpenUI *WatermarkRendering/Wasserzeichen/Stempel: Boolean +*OrderDependency: 19 AnySetup *WatermarkRendering +*DefaultWatermarkRendering: False +*WatermarkRendering False/Aus: "/WatermarkRendering false def" +*WatermarkRendering True/Ein: "/WatermarkRendering true def" +*CloseUI: *WatermarkRendering + +*OpenUI *WmText/Text: PickOne +*OrderDependency: 65 AnySetup *WmText +*DefaultWmText: None +*WmText None/Keine: "" +*WmText Confidential/CONFIDENTIAL: "/WMTEXT (CONFIDENTIAL) def" +*WmText Original/ORIGINAL: "/WMTEXT (ORIGINAL) def" +*WmText Copy/COPY: "/WMTEXT (COPY) def" +*WmText DoNotPhotoCopy/DO NOT PHOTOCOPY: "/WMTEXT (DO NOT PHOTOCOPY) def" +*WmText Draft/DRAFT: "/WMTEXT (DRAFT) def" +*WmText Final/FINAL: "/WMTEXT (FINAL) def" +*WmText Proof/PROOF: "/WMTEXT (PROOF) def" +*CloseUI: *WmText + +*OpenUI *WmFont/Schriftarten: PickOne +*OrderDependency: 65 AnySetup *WmFont +*DefaultWmFont: Arial-BoldMT +*WmFont Arial-BoldMT/Arial: "/WMFONT /Arial-BoldMT def" +*WmFont Arial-BoldItalicMT/Arial Italic: "/WMFONT /Arial-BoldItalicMT def" +*WmFont Courier-Bold/Courier: "/WMFONT /Courier-Bold def" +*WmFont Courier-BoldOblique/Courier Italic: "/WMFONT /Courier-BoldOblique def" +*WmFont Helvetica-Bold/Helvetica: "/WMFONT /Helvetica-Bold def" +*WmFont Helvetica-BoldOblique/Helvetica Italic: "/WMFONT /Helvetica-BoldOblique def" +*WmFont Palatino-Bold/Palatino: "/WMFONT /Palatino-Bold def" +*WmFont Palatino-BoldItalic/Palatino Italic: "/WMFONT /Palatino-BoldItalic def" +*WmFont Times-Bold/Times: "/WMFONT /Times-Bold def" +*WmFont Times-BoldItalic/Times Italic: "/WMFONT /Times-BoldItalic def" +*CloseUI: *WmFont + +*OpenUI *WmColor/Mehrfarbig: PickOne +*OrderDependency: 65 AnySetup *WmColor +*DefaultWmColor: Black +*WmColor Red/Rot: "/WMCOLOR {1 0 0} def" +*WmColor Green/Grn: "/WMCOLOR {0 1 0} def" +*WmColor Blue/Blau: "/WMCOLOR {0 0 1} def" +*WmColor Black/Schwarz: "/WMCOLOR {0 0 0} def" +*CloseUI: *WmColor + +*OpenUI *WmType/Ausfllen: PickOne +*OrderDependency: 65 AnySetup *WmType +*DefaultWmType: Solid +*WmType Solid/Solid-Schriftart: "/WMTYPE 0 def" +*WmType Hollow/Verfassen: "/WMTYPE 1 def" +*CloseUI: *WmType + +*OpenUI *WmAngle/Winkel: PickOne +*OrderDependency: 65 AnySetup *WmAngle +*DefaultWmAngle: 50 +*WmAngle -180/-180: "/WMANGLE -180 def" +*WmAngle -170/-170: "/WMANGLE -170 def" +*WmAngle -160/-160: "/WMANGLE -160 def" +*WmAngle -150/-150: "/WMANGLE -150 def" +*WmAngle -140/-140: "/WMANGLE -140 def" +*WmAngle -130/-130: "/WMANGLE -130 def" +*WmAngle -120/-120: "/WMANGLE -120 def" +*WmAngle -110/-110: "/WMANGLE -110 def" +*WmAngle -100/-100: "/WMANGLE -100 def" +*WmAngle -90/-90: "/WMANGLE -90 def" +*WmAngle -80/-80: "/WMANGLE -80 def" +*WmAngle -70/-70: "/WMANGLE -70 def" +*WmAngle -60/-60: "/WMANGLE -60 def" +*WmAngle -50/-50: "/WMANGLE -50 def" +*WmAngle -40/-40: "/WMANGLE -40 def" +*WmAngle -30/-30: "/WMANGLE -30 def" +*WmAngle -20/-20: "/WMANGLE -20 def" +*WmAngle -10/-10: "/WMANGLE -10 def" +*WmAngle 0/0: "/WMANGLE 0 def" +*WmAngle 10/10: "/WMANGLE 10 def" +*WmAngle 20/20: "/WMANGLE 20 def" +*WmAngle 30/30: "/WMANGLE 30 def" +*WmAngle 40/40: "/WMANGLE 40 def" +*WmAngle 50/50: "/WMANGLE 50 def" +*WmAngle 60/60: "/WMANGLE 60 def" +*WmAngle 70/70: "/WMANGLE 70 def" +*WmAngle 80/80: "/WMANGLE 80 def" +*WmAngle 90/90: "/WMANGLE 90 def" +*WmAngle 100/100: "/WMANGLE 100 def" +*WmAngle 110/110: "/WMANGLE 110 def" +*WmAngle 120/120: "/WMANGLE 120 def" +*WmAngle 130/130: "/WMANGLE 130 def" +*WmAngle 140/140: "/WMANGLE 140 def" +*WmAngle 150/150: "/WMANGLE 150 def" +*WmAngle 160/160: "/WMANGLE 160 def" +*WmAngle 170/170: "/WMANGLE 170 def" +*WmAngle 180/180: "/WMANGLE 180 def" +*CloseUI: *WmAngle + +*OpenUI *WmSize/Format: PickOne +*OrderDependency: 65 AnySetup *WmSize +*DefaultWmSize: 72 +*WmSize 24/24 punkte: "/WMSIZE 24 def" +*WmSize 30/30 punkte: "/WMSIZE 30 def" +*WmSize 36/36 punkte: "/WMSIZE 36 def" +*WmSize 42/42 punkte: "/WMSIZE 42 def" +*WmSize 48/48 punkte: "/WMSIZE 48 def" +*WmSize 54/54 punkte: "/WMSIZE 54 def" +*WmSize 60/60 punkte: "/WMSIZE 60 def" +*WmSize 66/66 punkte: "/WMSIZE 66 def" +*WmSize 72/72 punkte: "/WMSIZE 72 def" +*CloseUI: *WmSize + +*OpenUI *WmTransparent/Stil: PickOne +*OrderDependency: 65 AnySetup *WmTransparent +*DefaultWmTransparent: watermark +*WmTransparent watermark/Wasserzeichen: "/WMTRANSPARENT true def" +*WmTransparent stamp/Stempel: "/WMTRANSPARENT false def" +*CloseUI: *WmTransparent + +*OpenUI *WmFlag/Wasserzeichen wiederholen: Boolean +*OrderDependency: 65 AnySetup *WmFlag +*DefaultWmFlag: False +*WmFlag False/Aus: "/WMFLAG 1 def" +*WmFlag True/Ein: "/WMFLAG 2 def" +*CloseUI: *WmFlag + +*CloseGroup: KMWatermark + +*OpenGroup: About/Info + +*% PPD Version Info +*OpenUI *KCVersion/PPD Version: PickOne +*OrderDependency: 25 AnySetup *KCVersion +*DefaultKCVersion: Default +*KCVersion Default/8.1310 [10-16-2013]: " +globaldict /ct_AddStdCIDMap known { +globaldict /ct_AddStdCIDMap get length 7 eq +{globaldict /ct_AddStdCIDMap get 0 get type /stringtype eq +{globaldict /ct_AddStdCIDMap get 1 get 0 eq +{globaldict /ct_AddStdCIDMap get 2 get () eq +{globaldict /ct_AddStdCIDMap get 3 get /SubFileDecode eq +{globaldict /ct_AddStdCIDMap get 4 get systemdict /filter get eq +{currentglobal true setglobal globaldict +/ct_AddStdCIDMap +globaldict /ct_AddStdCIDMap get dup +globaldict /ct_AddStdCIDMap get +0 get length 1 exch +put put setglobal +} if} if} if} if} if} if} if" +*End +*CloseUI: *KCVersion + +*CloseGroup: About/Info + +*% Font Information +*DefaultFont: Courier +*Font AlbertusMT-Italic: Standard "(001.000)" Standard ROM +*Font AlbertusMT-Light: Standard "(001.000)" Standard ROM +*Font AlbertusMT: Standard "(001.000)" Standard ROM +*Font AntiqueOlive-Bold: Standard "(001.000)" Standard ROM +*Font AntiqueOlive-Compact: Standard "(001.000)" Standard ROM +*Font AntiqueOlive-Italic: Standard "(001.000)" Standard ROM +*Font AntiqueOlive-Roman: Standard "(001.000)" Standard ROM +*Font Apple-Chancery: Standard "(001.000)" Standard ROM +*Font Arial-BoldItalicMT: Standard "(001.000)" Standard ROM +*Font Arial-BoldMT: Standard "(001.000)" Standard ROM +*Font Arial-ItalicMT: Standard "(001.000)" Standard ROM +*Font ArialMT: Standard "(001.000)" Standard ROM +*Font AvantGarde-Book: Standard "(001.000)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.000)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.000)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.000)" Standard ROM +*Font Bodoni-Bold: Standard "(001.000)" Standard ROM +*Font Bodoni-BoldItalic: Standard "(001.000)" Standard ROM +*Font Bodoni-Italic: Standard "(001.000)" Standard ROM +*Font Bodoni-Poster: Standard "(001.000)" Standard ROM +*Font Bodoni-PosterCompressed: Standard "(001.000)" Standard ROM +*Font Bodoni: Standard "(001.000)" Standard ROM +*Font Bookman-Demi: Standard "(001.000)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.000)" Standard ROM +*Font Bookman-Light: Standard "(001.000)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.000)" Standard ROM +*Font Candid: Special "(001.000)" Standard ROM +*Font Chicago: Standard "(001.000)" Standard ROM +*Font Clarendon-Bold: Standard "(001.000)" Standard ROM +*Font Clarendon-Light: Standard "(001.000)" Standard ROM +*Font Clarendon: Standard "(001.000)" Standard ROM +*Font CooperBlack-Italic: Standard "(001.000)" Standard ROM +*Font CooperBlack: Standard "(001.000)" Standard ROM +*Font Copperplate-ThirtyThreeBC: Standard "(001.000)" Standard ROM +*Font Copperplate-ThirtyTwoBC: Standard "(001.000)" Standard ROM +*Font Coronet-Regular: Standard "(001.000)" Standard ROM +*Font Courier-Bold: Standard "(001.000)" Standard ROM +*Font Courier-BoldOblique: Standard "(001.000)" Standard ROM +*Font Courier-Oblique: Standard "(001.000)" Standard ROM +*Font Courier: Standard "(001.000)" Standard ROM +*Font Eurostile-Bold: Standard "(001.000)" Standard ROM +*Font Eurostile-BoldExtendedTwo: Standard "(001.000)" Standard ROM +*Font Eurostile-ExtendedTwo: Standard "(001.000)" Standard ROM +*Font Eurostile: Standard "(001.000)" Standard ROM +*Font Geneva: Standard "(001.000)" Standard ROM +*Font GillSans-Bold: Standard "(001.000)" Standard ROM +*Font GillSans-BoldCondensed: Standard "(001.000)" Standard ROM +*Font GillSans-BoldItalic: Standard "(001.000)" Standard ROM +*Font GillSans-Condensed: Standard "(001.000)" Standard ROM +*Font GillSans-ExtraBold: Standard "(001.000)" Standard ROM +*Font GillSans-Italic: Standard "(001.000)" Standard ROM +*Font GillSans-Light: Standard "(001.000)" Standard ROM +*Font GillSans-LightItalic: Standard "(001.000)" Standard ROM +*Font GillSans: Standard "(001.000)" Standard ROM +*Font Goudy-Bold: Standard "(001.000)" Standard ROM +*Font Goudy-BoldItalic: Standard "(001.000)" Standard ROM +*Font Goudy-ExtraBold: Standard "(001.000)" Standard ROM +*Font Goudy-Italic: Standard "(001.000)" Standard ROM +*Font Goudy: Standard "(001.000)" Standard ROM +*Font Helvetica-Bold: Standard "(001.000)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.000)" Standard ROM +*Font Helvetica-Condensed-Bold: Standard "(001.000)" Standard ROM +*Font Helvetica-Condensed-BoldObl: Standard "(001.000)" Standard ROM +*Font Helvetica-Condensed-Oblique: Standard "(001.000)" Standard ROM +*Font Helvetica-Condensed: Standard "(001.000)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.000)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.000)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.000)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.000)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.000)" Standard ROM +*Font Helvetica: Standard "(001.000)" Standard ROM +*Font HoeflerText-Black: Standard "(001.000)" Standard ROM +*Font HoeflerText-BlackItalic: Standard "(001.000)" Standard ROM +*Font HoeflerText-Italic: Standard "(001.000)" Standard ROM +*Font HoeflerText-Ornaments: Special "(001.000)" Standard ROM +*Font HoeflerText-Regular: Standard "(001.000)" Standard ROM +*Font JoannaMT-Bold: Standard "(001.000)" Standard ROM +*Font JoannaMT-BoldItalic: Standard "(001.000)" Standard ROM +*Font JoannaMT-Italic: Standard "(001.000)" Standard ROM +*Font JoannaMT: Standard "(001.000)" Standard ROM +*Font LetterGothic-Bold: Standard "(001.000)" Standard ROM +*Font LetterGothic-BoldSlanted: Standard "(001.000)" Standard ROM +*Font LetterGothic-Slanted: Standard "(001.000)" Standard ROM +*Font LetterGothic: Standard "(001.000)" Standard ROM +*Font LubalinGraph-Book: Standard "(001.000)" Standard ROM +*Font LubalinGraph-BookOblique: Standard "(001.000)" Standard ROM +*Font LubalinGraph-Demi: Standard "(001.000)" Standard ROM +*Font LubalinGraph-DemiOblique: Standard "(001.000)" Standard ROM +*Font Marigold: Standard "(001.000)" Standard ROM +*Font MonaLisa-Recut: Standard "(001.000)" Standard ROM +*Font Monaco: Standard "(001.000)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.000)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.000)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.000)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.000)" Standard ROM +*Font NewYork: Standard "(001.000)" Standard ROM +*Font Optima-Bold: Standard "(001.000)" Standard ROM +*Font Optima-BoldItalic: Standard "(001.000)" Standard ROM +*Font Optima-Italic: Standard "(001.000)" Standard ROM +*Font Optima: Standard "(001.000)" Standard ROM +*Font Oxford: Standard "(001.000)" Standard ROM +*Font Palatino-Bold: Standard "(001.000)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.000)" Standard ROM +*Font Palatino-Italic: Standard "(001.000)" Standard ROM +*Font Palatino-Roman: Standard "(001.000)" Standard ROM +*Font StempelGaramond-Bold: Standard "(001.000)" Standard ROM +*Font StempelGaramond-BoldItalic: Standard "(001.000)" Standard ROM +*Font StempelGaramond-Italic: Standard "(001.000)" Standard ROM +*Font StempelGaramond-Roman: Standard "(001.000)" Standard ROM +*Font Symbol: Special "(001.000)" Standard ROM +*Font Taffy: Standard "(001.000)" Standard ROM +*Font Times-Bold: Standard "(001.000)" Standard ROM +*Font Times-BoldItalic: Standard "(001.000)" Standard ROM +*Font Times-Italic: Standard "(001.000)" Standard ROM +*Font Times-Roman: Standard "(001.000)" Standard ROM +*Font TimesNewRomanPS-BoldItalicMT: Standard "(001.000)" Standard ROM +*Font TimesNewRomanPS-BoldMT: Standard "(001.000)" Standard ROM +*Font TimesNewRomanPS-ItalicMT: Standard "(001.000)" Standard ROM +*Font TimesNewRomanPSMT: Standard "(001.000)" Standard ROM +*Font Univers-Bold: Standard "(001.000)" Standard ROM +*Font Univers-BoldExt: Standard "(001.000)" Standard ROM +*Font Univers-BoldExtObl: Standard "(001.000)" Standard ROM +*Font Univers-BoldOblique: Standard "(001.000)" Standard ROM +*Font Univers-Condensed: Standard "(001.000)" Standard ROM +*Font Univers-CondensedBold: Standard "(001.000)" Standard ROM +*Font Univers-CondensedBoldOblique: Standard "(001.000)" Standard ROM +*Font Univers-CondensedOblique: Standard "(001.000)" Standard ROM +*Font Univers-Extended: Standard "(001.000)" Standard ROM +*Font Univers-ExtendedObl: Standard "(001.000)" Standard ROM +*Font Univers-Light: Standard "(001.000)" Standard ROM +*Font Univers-LightOblique: Standard "(001.000)" Standard ROM +*Font Univers-Oblique: Standard "(001.000)" Standard ROM +*Font Univers: Standard "(001.000)" Standard ROM +*Font Wingdings-Regular: Special "(001.000)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.000)" Standard ROM +*Font ZapfDingbats: Special "(001.000)" Standard ROM +*?FontQuery: " + save + /str 132 string dup 0 (fonts/) putinterval def + {count 1 gt + { exch dup str 6 94 getinterval cvs + (/) print print (:) print + FontDirectory exch known + {(Yes)}{(No)} ifelse = + }{exit} ifelse + } bind loop (*) + = flush restore" +*End +*?FontList: "save FontDirectory { pop == } bind forall flush (*) = flush restore" +*% Printer Messages +*Message: "%%[ exitserver: permanent state may be changed ]%%" +*Message: "%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%" +*Message: "\FontName\ not found, using Courier" + +*% Status (format: %%[ status: ]%% ) +*Status: "warming up"/warming up +*Status: "idle"/idle +*Status: "busy"/busy +*Status: "waiting"/waiting +*Status: "printing"/printing +*Status: "initializing"/initializing +*Status: "printing test page"/printing test page +*% Printer Error (format: %%[ PrinterError: ]%% ) +*PrinterError: "paper entry misfeed" +*PrinterError: "cover open" +*PrinterError: "no paper tray" +*PrinterError: "out of paper" +*PrinterError: "toner low (halt)" +*PrinterError: "warming up" +*PrinterError: "other reason" +*PrinterError: "video interface mode" +*PrinterError: "offline" +*PrinterError: "toner low (warning)" + +*% Input Sources (format: %%[ status: ;source: ]%% ) +*Source: "Serial" +*Source: "Parallel" +*Source: "LocalTalk" +*Source: "Option" + +*% End of PPD file for CLP 3550_CLP 4550 (English) diff --git a/files/CQue_v4.0.5_Linux_64_DE.deb b/files/CQue_v4.0.5_Linux_64_DE.deb new file mode 100755 index 0000000..0005b54 Binary files /dev/null and b/files/CQue_v4.0.5_Linux_64_DE.deb differ diff --git a/files/Canon_LBP712Cx.ppd b/files/Canon_LBP712Cx.ppd new file mode 100755 index 0000000..4dd7ea9 --- /dev/null +++ b/files/Canon_LBP712Cx.ppd @@ -0,0 +1,134 @@ +*PPD-Adobe: "4.3" +*FormatVersion: "4.3" +*FileVersion: "2.2" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PSVersion: "(3010.000) 0" +*LanguageLevel: "3" +*FileSystem: False +*PCFileName: "ippeve.ppd" +*Manufacturer: "CNLBP712C" +*ModelName: "CNLBP712C" +*Product: "(CNLBP712C)" +*NickName: "CNLBP712C" +*ShortNickName: "CNLBP712C" +*ColorDevice: True +*cupsVersion: 2.2 +*cupsSNMPSupplies: False +*cupsLanguages: "en" +*cupsFilter2: "image/jpeg image/jpeg 0 -" +*cupsFilter2: "application/vnd.cups-pdf application/pdf 10 -" +*cupsFilter2: "image/urf image/urf 100 -" +*OpenUI *PageSize: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: A4 +*PageSize A4: "<>setpagedevice" +*PageSize A5: "<>setpagedevice" +*PageSize A6: "<>setpagedevice" +*PageSize B5: "<>setpagedevice" +*PageSize Executive: "<>setpagedevice" +*PageSize Letter: "<>setpagedevice" +*PageSize Legal: "<>setpagedevice" +*PageSize Statement: "<>setpagedevice" +*PageSize FanFoldGermanLegal: "<>setpagedevice" +*PageSize 3x5: "<>setpagedevice" +*PageSize Postcard: "<>setpagedevice" +*PageSize DoublePostcardRotated: "<>setpagedevice" +*PageSize 200x296mm: "<>setpagedevice" +*PageSize EnvC5: "<>setpagedevice" +*PageSize Env10: "<>setpagedevice" +*PageSize EnvMonarch: "<>setpagedevice" +*PageSize EnvDL: "<>setpagedevice" +*PageSize EnvChou3: "<>setpagedevice" +*PageSize 198x275mm: "<>setpagedevice" +*CloseUI: *PageSize +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: A4 +*PageRegion A4: "<>setpagedevice" +*PageRegion A5: "<>setpagedevice" +*PageRegion A6: "<>setpagedevice" +*PageRegion B5: "<>setpagedevice" +*PageRegion Executive: "<>setpagedevice" +*PageRegion Letter: "<>setpagedevice" +*PageRegion Legal: "<>setpagedevice" +*PageRegion Statement: "<>setpagedevice" +*PageRegion FanFoldGermanLegal: "<>setpagedevice" +*PageRegion 3x5: "<>setpagedevice" +*PageRegion Postcard: "<>setpagedevice" +*PageRegion DoublePostcardRotated: "<>setpagedevice" +*PageRegion 200x296mm: "<>setpagedevice" +*PageRegion EnvC5: "<>setpagedevice" +*PageRegion Env10: "<>setpagedevice" +*PageRegion EnvMonarch: "<>setpagedevice" +*PageRegion EnvDL: "<>setpagedevice" +*PageRegion EnvChou3: "<>setpagedevice" +*PageRegion 198x275mm: "<>setpagedevice" +*CloseUI: *PageRegion +*DefaultImageableArea: A4 +*DefaultPaperDimension: A4 +*ImageableArea A4: "14.173228346457 14.173228346457 581.102362204724 827.716535433071" +*PaperDimension A4: "595.275590551181 841.889763779528" +*ImageableArea A5: "14.173228346457 14.173228346457 405.354330708661 581.102362204724" +*PaperDimension A5: "419.527559055118 595.275590551181" +*ImageableArea A6: "14.173228346457 14.173228346457 283.464566929134 405.354330708661" +*PaperDimension A6: "297.637795275591 419.527559055118" +*ImageableArea B5: "14.173228346457 14.173228346457 501.732283464567 714.330708661417" +*PaperDimension B5: "515.905511811024 728.503937007874" +*ImageableArea Executive: "14.173228346457 14.173228346457 507.826771653543 741.826771653543" +*PaperDimension Executive: "522 756" +*ImageableArea Letter: "14.173228346457 14.173228346457 597.826771653543 777.826771653543" +*PaperDimension Letter: "612 792" +*ImageableArea Legal: "14.173228346457 14.173228346457 597.826771653543 993.826771653543" +*PaperDimension Legal: "612 1008" +*ImageableArea Statement: "14.173228346457 14.173228346457 381.826771653543 597.826771653543" +*PaperDimension Statement: "396 612" +*ImageableArea FanFoldGermanLegal: "14.173228346457 14.173228346457 597.826771653543 921.826771653543" +*PaperDimension FanFoldGermanLegal: "612 936" +*ImageableArea 3x5: "14.173228346457 14.173228346457 201.826771653543 345.826771653543" +*PaperDimension 3x5: "216 360" +*ImageableArea Postcard: "14.173228346457 14.173228346457 269.291338582677 405.354330708661" +*PaperDimension Postcard: "283.464566929134 419.527559055118" +*ImageableArea DoublePostcardRotated: "14.173228346457 14.173228346457 405.354330708661 552.755905511811" +*PaperDimension DoublePostcardRotated: "419.527559055118 566.929133858268" +*ImageableArea 200x296mm: "14.173228346457 14.173228346457 552.755905511811 824.88188976378" +*PaperDimension 200x296mm: "566.929133858268 839.055118110236" +*ImageableArea EnvC5: "14.173228346457 14.173228346457 445.03937007874 634.96062992126" +*PaperDimension EnvC5: "459.212598425197 649.133858267717" +*ImageableArea Env10: "14.173228346457 14.173228346457 282.812598425197 669.826771653543" +*PaperDimension Env10: "296.985826771654 684" +*ImageableArea EnvMonarch: "14.173228346457 14.173228346457 264.812598425197 525.826771653543" +*PaperDimension EnvMonarch: "278.985826771654 540" +*ImageableArea EnvDL: "14.173228346457 14.173228346457 297.637795275591 609.448818897638" +*PaperDimension EnvDL: "311.811023622047 623.622047244094" +*ImageableArea EnvChou3: "14.173228346457 14.173228346457 325.984251968504 651.968503937008" +*PaperDimension EnvChou3: "340.157480314961 666.141732283465" +*ImageableArea 198x275mm: "14.173228346457 14.173228346457 547.086614173228 765.354330708661" +*PaperDimension 198x275mm: "561.259842519685 779.527559055118" +*OpenUI *InputSlot: PickOne +*OrderDependency: 10 AnySetup *InputSlot +*DefaultInputSlot: ByPassTray +*InputSlot Auto/Automatic: "<>setpagedevice" +*InputSlot ByPassTray/Mehrzweck: "<>setpagedevice" +*InputSlot Tray1/Fach 1: "<>setpagedevice" +*CloseUI: *InputSlot +*OpenUI *ColorModel/Farbmodus: PickOne +*OrderDependency: 10 AnySetup *ColorModel +*ColorModel RGB/Farbe: "<>setpagedevice" +*DefaultColorModel: RGB +*CloseUI: *ColorModel +*OpenUI *Duplex/Doppelseitig drucken: PickOne +*OrderDependency: 10 AnySetup *Duplex +*DefaultDuplex: None +*Duplex None/Aus (Einseitig): "<>setpagedevice" +*Duplex DuplexNoTumble/Lange Kante (Hochformat): "<>setpagedevice" +*Duplex DuplexTumble/Kurze Kante (Querformat): "<>setpagedevice" +*CloseUI: *Duplex +*cupsBackSide: Normal +*DefaultResolution: 300dpi +*OpenUI *cupsPrintQuality/Druckqualität: PickOne +*OrderDependency: 10 AnySetup *cupsPrintQuality +*DefaultcupsPrintQuality: Normal +*cupsPrintQuality Draft/Entwurf: "<>setpagedevice" +*cupsPrintQuality Normal/Normal: "<>setpagedevice" +*CloseUI: *cupsPrintQuality diff --git a/files/FrutigerLTStd-Black.otf b/files/FrutigerLTStd-Black.otf new file mode 100755 index 0000000..6878eec Binary files /dev/null and b/files/FrutigerLTStd-Black.otf differ diff --git a/files/FrutigerLTStd-BlackCn.otf b/files/FrutigerLTStd-BlackCn.otf new file mode 100755 index 0000000..3481038 Binary files /dev/null and b/files/FrutigerLTStd-BlackCn.otf differ diff --git a/files/FrutigerLTStd-BlackItalic.otf b/files/FrutigerLTStd-BlackItalic.otf new file mode 100755 index 0000000..ed131fd Binary files /dev/null and b/files/FrutigerLTStd-BlackItalic.otf differ diff --git a/files/FrutigerLTStd-Bold.otf b/files/FrutigerLTStd-Bold.otf new file mode 100755 index 0000000..9e33f7e Binary files /dev/null and b/files/FrutigerLTStd-Bold.otf differ diff --git a/files/FrutigerLTStd-BoldCn.otf b/files/FrutigerLTStd-BoldCn.otf new file mode 100755 index 0000000..a93771b Binary files /dev/null and b/files/FrutigerLTStd-BoldCn.otf differ diff --git a/files/FrutigerLTStd-BoldItalic.otf b/files/FrutigerLTStd-BoldItalic.otf new file mode 100755 index 0000000..f5f3c7a Binary files /dev/null and b/files/FrutigerLTStd-BoldItalic.otf differ diff --git a/files/FrutigerLTStd-Cn.otf b/files/FrutigerLTStd-Cn.otf new file mode 100755 index 0000000..774e125 Binary files /dev/null and b/files/FrutigerLTStd-Cn.otf differ diff --git a/files/FrutigerLTStd-ExtraBlackCn.otf b/files/FrutigerLTStd-ExtraBlackCn.otf new file mode 100755 index 0000000..4ab9d26 Binary files /dev/null and b/files/FrutigerLTStd-ExtraBlackCn.otf differ diff --git a/files/FrutigerLTStd-Italic.otf b/files/FrutigerLTStd-Italic.otf new file mode 100755 index 0000000..c02ecd0 Binary files /dev/null and b/files/FrutigerLTStd-Italic.otf differ diff --git a/files/FrutigerLTStd-Light.otf b/files/FrutigerLTStd-Light.otf new file mode 100755 index 0000000..6d013a6 Binary files /dev/null and b/files/FrutigerLTStd-Light.otf differ diff --git a/files/FrutigerLTStd-LightCn.otf b/files/FrutigerLTStd-LightCn.otf new file mode 100755 index 0000000..451caa9 Binary files /dev/null and b/files/FrutigerLTStd-LightCn.otf differ diff --git a/files/FrutigerLTStd-LightItalic.otf b/files/FrutigerLTStd-LightItalic.otf new file mode 100755 index 0000000..7023777 Binary files /dev/null and b/files/FrutigerLTStd-LightItalic.otf differ diff --git a/files/FrutigerLTStd-Roman.otf b/files/FrutigerLTStd-Roman.otf new file mode 100755 index 0000000..a6d6edb Binary files /dev/null and b/files/FrutigerLTStd-Roman.otf differ diff --git a/files/FrutigerLTStd-UltraBlack.otf b/files/FrutigerLTStd-UltraBlack.otf new file mode 100755 index 0000000..978ab15 Binary files /dev/null and b/files/FrutigerLTStd-UltraBlack.otf differ diff --git a/files/UTAX_TA_3555i.ppd b/files/UTAX_TA_3555i.ppd new file mode 100755 index 0000000..44b32d2 --- /dev/null +++ b/files/UTAX_TA_3555i.ppd @@ -0,0 +1,224 @@ +*PPD-Adobe: "4.3" +*FormatVersion: "4.3" +*FileVersion: "2.2" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PSVersion: "(3010.000) 0" +*LanguageLevel: "3" +*FileSystem: False +*PCFileName: "ippeve.ppd" +*Manufacturer: "3555i" +*ModelName: "3555i" +*Product: "(3555i)" +*NickName: "3555i" +*ShortNickName: "3555i" +*ColorDevice: False +*cupsVersion: 2.2 +*cupsSNMPSupplies: False +*cupsLanguages: "en" +*cupsFilter2: "image/jpeg image/jpeg 0 -" +*cupsFilter2: "application/vnd.cups-pdf application/pdf 10 -" +*cupsFilter2: "image/urf image/urf 100 -" +*OpenUI *PageSize: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: A4 +*PageSize A3: "<>setpagedevice" +*PageSize B4: "<>setpagedevice" +*PageSize Tabloid: "<>setpagedevice" +*PageSize roc8k: "<>setpagedevice" +*PageSize EnvC4: "<>setpagedevice" +*PageSize ARCHB: "<>setpagedevice" +*PageSize A4: "<>setpagedevice" +*PageSize A5: "<>setpagedevice" +*PageSize A6: "<>setpagedevice" +*PageSize ISOB5: "<>setpagedevice" +*PageSize Legal: "<>setpagedevice" +*PageSize Letter: "<>setpagedevice" +*PageSize Executive: "<>setpagedevice" +*PageSize Statement: "<>setpagedevice" +*PageSize EnvC5: "<>setpagedevice" +*PageSize EnvC6: "<>setpagedevice" +*PageSize EnvDL: "<>setpagedevice" +*PageSize EnvMonarch: "<>setpagedevice" +*PageSize B5: "<>setpagedevice" +*PageSize B6: "<>setpagedevice" +*PageSize EnvYou4: "<>setpagedevice" +*PageSize Postcard: "<>setpagedevice" +*PageSize DoublePostcardRotated: "<>setpagedevice" +*PageSize roc16k: "<>setpagedevice" +*PageSize FanFoldGermanLegal: "<>setpagedevice" +*PageSize Env10: "<>setpagedevice" +*PageSize Env9: "<>setpagedevice" +*PageSize EnvPersonal: "<>setpagedevice" +*PageSize Folio: "<>setpagedevice" +*CloseUI: *PageSize +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: A4 +*PageRegion A3: "<>setpagedevice" +*PageRegion B4: "<>setpagedevice" +*PageRegion Tabloid: "<>setpagedevice" +*PageRegion roc8k: "<>setpagedevice" +*PageRegion EnvC4: "<>setpagedevice" +*PageRegion ARCHB: "<>setpagedevice" +*PageRegion A4: "<>setpagedevice" +*PageRegion A5: "<>setpagedevice" +*PageRegion A6: "<>setpagedevice" +*PageRegion ISOB5: "<>setpagedevice" +*PageRegion Legal: "<>setpagedevice" +*PageRegion Letter: "<>setpagedevice" +*PageRegion Executive: "<>setpagedevice" +*PageRegion Statement: "<>setpagedevice" +*PageRegion EnvC5: "<>setpagedevice" +*PageRegion EnvC6: "<>setpagedevice" +*PageRegion EnvDL: "<>setpagedevice" +*PageRegion EnvMonarch: "<>setpagedevice" +*PageRegion B5: "<>setpagedevice" +*PageRegion B6: "<>setpagedevice" +*PageRegion EnvYou4: "<>setpagedevice" +*PageRegion Postcard: "<>setpagedevice" +*PageRegion DoublePostcardRotated: "<>setpagedevice" +*PageRegion roc16k: "<>setpagedevice" +*PageRegion FanFoldGermanLegal: "<>setpagedevice" +*PageRegion Env10: "<>setpagedevice" +*PageRegion Env9: "<>setpagedevice" +*PageRegion EnvPersonal: "<>setpagedevice" +*PageRegion Folio: "<>setpagedevice" +*CloseUI: *PageRegion +*DefaultImageableArea: A4 +*DefaultPaperDimension: A4 +*ImageableArea A3: "11.338582677165 11.338582677165 830.551181102362 1179.212598425197" +*PaperDimension A3: "841.889763779528 1190.551181102362" +*ImageableArea B4: "11.338582677165 11.338582677165 717.165354330709 1020.472440944882" +*PaperDimension B4: "728.503937007874 1031.811023622047" +*ImageableArea Tabloid: "11.338582677165 11.338582677165 780.661417322835 1212.661417322835" +*PaperDimension Tabloid: "792 1224" +*ImageableArea roc8k: "11.338582677165 11.338582677165 762.661417322835 1104.661417322835" +*PaperDimension roc8k: "774 1116" +*ImageableArea EnvC4: "11.338582677165 11.338582677165 637.795275590551 907.086614173228" +*PaperDimension EnvC4: "649.133858267717 918.425196850394" +*ImageableArea ARCHB: "11.338582677165 11.338582677165 852.661417322835 1284.661417322835" +*PaperDimension ARCHB: "864 1296" +*ImageableArea A4: "11.338582677165 11.338582677165 583.937007874016 830.551181102362" +*PaperDimension A4: "595.275590551181 841.889763779528" +*ImageableArea A5: "11.338582677165 11.338582677165 408.188976377953 583.937007874016" +*PaperDimension A5: "419.527559055118 595.275590551181" +*ImageableArea A6: "11.338582677165 11.338582677165 286.299212598425 408.188976377953" +*PaperDimension A6: "297.637795275591 419.527559055118" +*ImageableArea ISOB5: "11.338582677165 11.338582677165 487.55905511811 697.322834645669" +*PaperDimension ISOB5: "498.897637795276 708.661417322835" +*ImageableArea Legal: "11.338582677165 11.338582677165 600.661417322835 996.661417322835" +*PaperDimension Legal: "612 1008" +*ImageableArea Letter: "11.338582677165 11.338582677165 600.661417322835 780.661417322835" +*PaperDimension Letter: "612 792" +*ImageableArea Executive: "11.338582677165 11.338582677165 510.661417322835 744.661417322835" +*PaperDimension Executive: "522 756" +*ImageableArea Statement: "11.338582677165 11.338582677165 384.661417322835 600.661417322835" +*PaperDimension Statement: "396 612" +*ImageableArea EnvC5: "11.338582677165 11.338582677165 447.874015748031 637.795275590551" +*PaperDimension EnvC5: "459.212598425197 649.133858267717" +*ImageableArea EnvC6: "11.338582677165 11.338582677165 311.811023622047 447.874015748031" +*PaperDimension EnvC6: "323.149606299213 459.212598425197" +*ImageableArea EnvDL: "11.338582677165 11.338582677165 300.472440944882 612.283464566929" +*PaperDimension EnvDL: "311.811023622047 623.622047244094" +*ImageableArea EnvMonarch: "11.338582677165 11.338582677165 267.647244094488 528.661417322835" +*PaperDimension EnvMonarch: "278.985826771654 540" +*ImageableArea B5: "11.338582677165 11.338582677165 504.566929133858 717.165354330709" +*PaperDimension B5: "515.905511811024 728.503937007874" +*ImageableArea B6: "11.338582677165 11.338582677165 351.496062992126 504.566929133858" +*PaperDimension B6: "362.834645669291 515.905511811024" +*ImageableArea EnvYou4: "11.338582677165 11.338582677165 286.299212598425 654.803149606299" +*PaperDimension EnvYou4: "297.637795275591 666.141732283465" +*ImageableArea Postcard: "11.338582677165 11.338582677165 272.125984251969 408.188976377953" +*PaperDimension Postcard: "283.464566929134 419.527559055118" +*ImageableArea DoublePostcardRotated: "11.338582677165 11.338582677165 408.188976377953 555.590551181102" +*PaperDimension DoublePostcardRotated: "419.527559055118 566.929133858268" +*ImageableArea roc16k: "11.338582677165 11.338582677165 546.661417322835 762.661417322835" +*PaperDimension roc16k: "558 774" +*ImageableArea FanFoldGermanLegal: "11.338582677165 11.338582677165 600.661417322835 924.661417322835" +*PaperDimension FanFoldGermanLegal: "612 936" +*ImageableArea Env10: "11.338582677165 11.338582677165 285.647244094488 672.661417322835" +*PaperDimension Env10: "296.985826771654 684" +*ImageableArea Env9: "11.338582677165 11.338582677165 267.647244094488 627.647244094488" +*PaperDimension Env9: "278.985826771654 638.985826771654" +*ImageableArea EnvPersonal: "11.338582677165 11.338582677165 249.647244094488 456.661417322835" +*PaperDimension EnvPersonal: "260.985826771654 468" +*ImageableArea Folio: "11.338582677165 11.338582677165 583.937007874016 924.094488188976" +*PaperDimension Folio: "595.275590551181 935.433070866142" +*OpenUI *InputSlot: PickOne +*OrderDependency: 10 AnySetup *InputSlot +*DefaultInputSlot: Tray1 +*InputSlot Auto/Automatic: "<>setpagedevice" +*InputSlot ByPassTray/Mehrzweck: "<>setpagedevice" +*InputSlot Tray1/Fach 1: "<>setpagedevice" +*InputSlot Tray2/Fach 2: "<>setpagedevice" +*InputSlot Tray3/Fach 3: "<>setpagedevice" +*InputSlot Tray4/Fach 4: "<>setpagedevice" +*CloseUI: *InputSlot +*OpenUI *MediaType: PickOne +*OrderDependency: 10 AnySetup *MediaType +*DefaultMediaType: Stationery +*MediaType Auto/Automatic: "<>setpagedevice" +*MediaType Stationery/Standardpapier: "<>setpagedevice" +*MediaType Transparency/Transparenz: "<>setpagedevice" +*MediaType Envelope/Umschlag: "<>setpagedevice" +*MediaType Labels/Etiketten: "<>setpagedevice" +*MediaType StationeryCoated/Beschichtetes Papier: "<>setpagedevice" +*MediaType Photographic/Fotopapier: "<>setpagedevice" +*MediaType Cardstock/Cardstock: "<>setpagedevice" +*MediaType StationeryLightweight/Lightweight Paper: "<>setpagedevice" +*MediaType StationeryPreprinted/Vorbedrucktes Papier: "<>setpagedevice" +*MediaType StationeryBond/stationery-bond: "<>setpagedevice" +*MediaType StationeryColored/stationery-colored: "<>setpagedevice" +*MediaType StationeryPrepunched/Gelochtes Papier: "<>setpagedevice" +*MediaType StationeryLetterhead/Briefkopf: "<>setpagedevice" +*MediaType StationeryHeavyweight/Schweres Papier: "<>setpagedevice" +*MediaType StationeryFine/Vellum Paper: "<>setpagedevice" +*CloseUI: *MediaType +*OpenUI *ColorModel/Farbmodus: PickOne +*OrderDependency: 10 AnySetup *ColorModel +*ColorModel Gray/Graustufen: "<>setpagedevice" +*DefaultColorModel: Gray +*CloseUI: *ColorModel +*OpenUI *Duplex/Doppelseitig drucken: PickOne +*OrderDependency: 10 AnySetup *Duplex +*DefaultDuplex: None +*Duplex None/Aus (Einseitig): "<>setpagedevice" +*Duplex DuplexNoTumble/Lange Kante (Hochformat): "<>setpagedevice" +*Duplex DuplexTumble/Kurze Kante (Querformat): "<>setpagedevice" +*CloseUI: *Duplex +*cupsBackSide: ManualTumble +*OpenUI *OutputBin: PickOne +*OrderDependency: 10 AnySetup *OutputBin +*DefaultOutputBin: Left +*OutputBin Left/Left Tray: "" +*OutputBin Top/Top Tray: "" +*CloseUI: *OutputBin +*OpenUI *StapleLocation/Heftung: PickOne +*OrderDependency: 10 AnySetup *StapleLocation +*DefaultStapleLocation: None +*StapleLocation None/None: "" +*StapleLocation staple-top-left/Einfachheftung (Hochformat): "" +*cupsIPPFinishings 20/staple-top-left: "*StapleLocation staple-top-left" +*StapleLocation staple-bottom-left/Single Staple (Reverse Landscape): "" +*cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation staple-bottom-left" +*StapleLocation staple-top-right/Einfachheftung (Querformat): "" +*cupsIPPFinishings 22/staple-top-right: "*StapleLocation staple-top-right" +*StapleLocation staple-bottom-right/Single Staple (Reverse Portrait): "" +*cupsIPPFinishings 23/staple-bottom-right: "*StapleLocation staple-bottom-right" +*StapleLocation staple-dual-left/Double Staple (Portrait): "" +*cupsIPPFinishings 28/staple-dual-left: "*StapleLocation staple-dual-left" +*StapleLocation staple-dual-top/Double Staple (Landscape): "" +*cupsIPPFinishings 29/staple-dual-top: "*StapleLocation staple-dual-top" +*StapleLocation staple-dual-right/Double Staple (Reverse Portrait): "" +*cupsIPPFinishings 30/staple-dual-right: "*StapleLocation staple-dual-right" +*StapleLocation staple-dual-bottom/Double Staple (Reverse Landscape): "" +*cupsIPPFinishings 31/staple-dual-bottom: "*StapleLocation staple-dual-bottom" +*CloseUI: *StapleLocation +*DefaultResolution: 600dpi +*OpenUI *cupsPrintQuality/Druckqualität: PickOne +*OrderDependency: 10 AnySetup *cupsPrintQuality +*DefaultcupsPrintQuality: Normal +*cupsPrintQuality Draft/Entwurf: "<>setpagedevice" +*cupsPrintQuality Normal/Normal: "<>setpagedevice" +*CloseUI: *cupsPrintQuality diff --git a/files/install.sh b/files/install.sh new file mode 100755 index 0000000..b322a0c --- /dev/null +++ b/files/install.sh @@ -0,0 +1,16 @@ +#!/bin/bash +if [ ! -d /usr/share/cups/model ]; then + sudo mkdir /usr/share/cups/model +fi +if [ ! -d /usr/share/cups/model/UTAX_TA ]; then +sudo mkdir /usr/share/cups/model/UTAX_TA +fi +sudo cp CLP3550.PPD /usr/share/cups/model/UTAX_TA/CLP3550.PPD +sudo cp kyofilter_B /usr/lib/cups/filter/kyofilter_B +sudo chmod 555 /usr/lib/cups/filter/kyofilter_B +if [ -f /usr/lib/cups/filter/kyofilter_B ] && +[ -f /usr/share/cups/model/UTAX_TA/CLP3550.PPD ]; then +echo "Installation completed" +else +echo "Installation failed" +fi diff --git a/files/kyofilter_B b/files/kyofilter_B new file mode 100755 index 0000000..5180d43 Binary files /dev/null and b/files/kyofilter_B differ diff --git a/files/lightdm.conf b/files/lightdm.conf new file mode 100755 index 0000000..b330e25 --- /dev/null +++ b/files/lightdm.conf @@ -0,0 +1,4 @@ +[SeatDefaults] +user-session=ubuntu +allow-guest=false +greeter-hide-users=true diff --git a/files/modules b/files/modules new file mode 100755 index 0000000..da8f3da --- /dev/null +++ b/files/modules @@ -0,0 +1,6 @@ +mii +usbnet +cdc_ether +r8152 +ax88179_178a +e1000e diff --git a/files/user b/files/user new file mode 100755 index 0000000..aca0641 --- /dev/null +++ b/files/user @@ -0,0 +1,2 @@ +user-db:user +system-db:local diff --git a/files/veracrypt-1.24-Update3-Ubuntu-18.04-amd64.deb b/files/veracrypt-1.24-Update3-Ubuntu-18.04-amd64.deb new file mode 100755 index 0000000..668114d Binary files /dev/null and b/files/veracrypt-1.24-Update3-Ubuntu-18.04-amd64.deb differ diff --git a/gnome.yml b/gnome.yml new file mode 100644 index 0000000..41f49cd --- /dev/null +++ b/gnome.yml @@ -0,0 +1,30 @@ +--- + +- name: create new user profile + copy: + src: user + dest: /etc/dconf/profile/user + owner: root + group: root + mode: 0644 + +- name: create local config dir + file: + path: /etc/dconf/db/local.d + state: directory + owner: root + group: root + mode: 0755 + +- name: configure gnome defaults + copy: + src: "{{ item }}" + dest: /etc/dconf/db/local.d/ + owner: root + group: root + mode: 0644 + with_items: + - 00-favorite-apps + - 01-recursive-search + - 02-energy + notify: dconf update diff --git a/hosts b/hosts new file mode 100644 index 0000000..2a8e54b --- /dev/null +++ b/hosts @@ -0,0 +1,18 @@ +[all] +pc101 +pc102 +pc103 +pc104 +pc105 +# pc106 noch nicht umgestellt +pc107 +pc108 +pc109 +pc110 +pc111 +pc112 +pc113 +pc114 +pc115 +pc116 ansible_host=192.168.112.138 +pc117 ansible_host=192.168.112.127 diff --git a/initramfs.yml b/initramfs.yml new file mode 100644 index 0000000..547fe91 --- /dev/null +++ b/initramfs.yml @@ -0,0 +1,31 @@ +--- + +- name: install dropbear-initramfs + apt: + name: "{{ physicals_packages_dropbear }}" + state: present + +- name: install admin ssh keys into initramfs + authorized_key: + user: root + key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCvAISe8/nJhWT1CAe2uBUPqfLBxe44HhnSSWNbqh+97nYnMr+wUj7hj/uGswsrd0mkYAnXfWsCEQJdqwtRDRiq7WVNfG3sHnFasb7MB1+Ti04cPqWKhEtxhpJRy4GKoIs3cX/1SI+GB8r6QuxN4NnjOEi3zyRBE/abQGvRe+fuq2bDI4pU4Ldy0isEG12MgUOSyq69ED3uOGpfZmVqaq5Z+j9m8k49PTz5lcWcJ0M7gCqnVCaN7ONoptdUJTI7EjnnpoQvgfGBNgBBx4zBWTf10UUHT+GYD0Ok6che7TTv1ImQyYmIvMlc4sV3yUgHrTWc7SwpzYBXCzqhrWZyDmV chris@sol" + path: /etc/dropbear-initramfs/authorized_keys + notify: update initramfs + +- name: add modules for initramfs + copy: + src: modules + dest: /etc/initramfs-tools/modules + owner: root + group: root + mode: 0644 + notify: update initramfs + +- name: configure initramfs network options in kernel boot parameters + lineinfile: + backrefs: yes + dest: /etc/default/grub + regexp: '^GRUB_CMDLINE_LINUX_DEFAULT=' + line: 'GRUB_CMDLINE_LINUX_DEFAULT="ip={{ kernel_network_params.address }}::{{ kernel_network_params.gateway }}:{{ kernel_network_params.netmask }}::{{ kernel_network_params.device }}:{{ kernel_network_params.autoconf }} quiet apparmor=1 security=apparmor"' + when: kernel_network_params|d() + notify: update grub diff --git a/playbook.yml b/playbook.yml new file mode 100644 index 0000000..b586920 --- /dev/null +++ b/playbook.yml @@ -0,0 +1,233 @@ +--- +- hosts: all + become: true + vars: + apt_packages: + - aptitude + - arj + - cifs-utils + - chromium-browser + - curl + - ethtool + - exfat-fuse + - exfat-utils + - firefox-locale-de + - gimp + - git + - gnupg2 + - grsync + - haveged + - httrack + - keepassxc + - lightdm + - mc + - net-tools + - nextcloud-client + - ntpdate + - pdfshuffler + - smb4k + - synaptic + - thunderbird-locale-de + - vim + - vim-doc + - vlc + - x11vnc + - xz-utils + apt_repositories: + - repo: ppa:nextcloud-devs/client + packages_absent: + - gnome-initial-setup + - ubuntu-web-launchers + - update-notifier + debs_present: + - CQue_v4.0.5_Linux_64_DE.deb + - veracrypt-1.24-Update3-Ubuntu-18.04-amd64.deb + physicals_packages_dropbear: + - dropbear-initramfs + - kbd + admin_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5IhVprsvVOcFPbZzD9xR0nCjZ/9qVG6RhLJ7QBSts81nRvLwnmvcMBHSf5Rfaigey7Ff5dLHfJnxRE0KDATn6n2yd/5mXpn2GAA8hDVfhdsmsb5U7bROjZNr8MmIUrP7c3msUGx1FtvzhwxtyvIWOFQpWx+W5biBa6hFjIxT1pkUJqe6fclp7xbGYKZiqZRBS4qKG5CpKnisuOYDsqYPND+OkU+PShoxGVzp1JywIVze7qeKv6GyYbRA9SP9Np+5Mit6B21Io4zOI81c2Rz6sPX7mwEAQEs7iCm2hzG8qJws45Lb4ERqDkVEVhGNUyHjHgGebS1sZx1mLExdurXlPm1l/EamkncDFDCutHXtLP7lsFFiym7fKUjSEgiiLmyu5Xm+mwZvesKa1FYNaeiFWfYZpCJrNzIk+ffs+mgg3kmL4Sd4Ooy7jXPX+WJe5Xyh1KLU/+Wj2TVrhN+LbmupYAti/Wgd3DA1v601svmG82aLmyJRtKC0rGMePH3kDbtqU72kYpzI8mXERe1TIQ00Z77kQBR/7BF/9y5/0YmYDcXt1wNCoSie+mzz3xYcEdLAc7T+DhYpd4M6VgWnuz/exzRzhQwoSdEKkEED8CpEoBrEWEiMdrlElGmlkVomLU7P9i9j1rshX/pAq0asnqeSoPdC3vNbU3keiJQnhIHECvw== christoph" + fonts_shared: + - type: 'opentype' + src: FrutigerLTStd-BlackCn.otf + dest: frutiger/FrutigerLTStd-BlackCn.otf + - type: 'opentype' + src: FrutigerLTStd-BlackItalic.otf + dest: frutiger/FrutigerLTStd-BlackItalic.otf + - type: 'opentype' + src: FrutigerLTStd-Black.otf + dest: frutiger/FrutigerLTStd-Black.otf + - type: 'opentype' + src: FrutigerLTStd-BoldCn.otf + dest: frutiger/FrutigerLTStd-BoldCn.otf + - type: 'opentype' + src: FrutigerLTStd-BoldItalic.otf + dest: frutiger/FrutigerLTStd-BoldItalic.otf + - type: 'opentype' + src: FrutigerLTStd-Bold.otf + dest: frutiger/FrutigerLTStd-Bold.otf + - type: 'opentype' + src: FrutigerLTStd-Cn.otf + dest: frutiger/FrutigerLTStd-Cn.otf + - type: 'opentype' + src: FrutigerLTStd-ExtraBlackCn.otf + dest: frutiger/FrutigerLTStd-ExtraBlackCn.otf + - type: 'opentype' + src: FrutigerLTStd-Italic.otf + dest: frutiger/FrutigerLTStd-Italic.otf + - type: 'opentype' + src: FrutigerLTStd-LightCn.otf + dest: frutiger/FrutigerLTStd-LightCn.otf + - type: 'opentype' + src: FrutigerLTStd-LightItalic.otf + dest: frutiger/FrutigerLTStd-LightItalic.otf + - type: 'opentype' + src: FrutigerLTStd-Light.otf + dest: frutiger/FrutigerLTStd-Light.otf + - type: 'opentype' + src: FrutigerLTStd-Roman.otf + dest: frutiger/FrutigerLTStd-Roman.otf + - type: 'opentype' + src: FrutigerLTStd-UltraBlack.otf + dest: frutiger/FrutigerLTStd-UltraBlack.otf + + pre_tasks: + - name: add group lokaladmin + group: + name: lokaladmin + gid: 1000 + + - name: ensure lokaladmin is present + user: + name: lokaladmin + group: lokaladmin + groups: adm, cdrom, sudo, dip, plugdev, lpadmin, sambashare + append: True + uid: 1000 + password: "$6$bzVyhcWa$X3NeSycmO8qhgjtYDjjg8ANBt1jf.uvRHdkaVL6qTFhXk6RQvChJQpUtBH1Ccg5t5VR/qqoDgOgieYsX08nK31" + + - name: add authorized_key for christoph + authorized_key: + user: "{{ item }}" + key: "{{ admin_key }}" + with_items: + - root + - lokaladmin + + - name: Disable motd-news + lineinfile: + dest: /etc/default/motd-news + regexp: '^ENABLED=' + line: 'ENABLED=0' + + - name: Delete unnecessary packages + apt: + pkg: "{{ packages_absent }}" + state: absent + tags: apt + + roles: + - role: weareinteractive.apt + tags: apt + - role: ontic.fonts + tags: fonts + - role: freedomofpress.signal-desktop + tags: signal + + tasks: + - name: copy debs + copy: + src: "{{ item }}" + dest: /root/ + owner: root + group: root + mode: 0644 + with_items: "{{ debs_present }}" + tags: apt + + - name: install local debs + apt: + deb: "/root/{{ item }}" + with_items: "{{ debs_present }}" + tags: apt + + - name: system time cron job + cron: + name: adjust system time + minute: 3 + job: /usr/sbin/ntpdate 192.168.112.254 > /dev/null + + - name: wake-on-lan cron job + cron: + name: "enable wake-on-lan interface {{ item }}" + special_time: reboot + job: /sbin/ethtool -s {{ item }} wol g + when: item != "lo" + with_items: "{{ ansible_interfaces }}" + tags: wol + + - name: set default editor + alternatives: + name: editor + path: /usr/bin/vim + + - name: get christoph admin scripts + git: + repo: https://git.oopen.de/script/{{ item }} + dest: /root/bin/{{ item }} + with_items: + - admin-stuff + - monitoring + + - name: configure lightdm + copy: + src: lightdm.conf + dest: /etc/lightdm/lightdm.conf + owner: root + group: root + mode: 0644 + + - name: make lightdm default + file: + path: /etc/systemd/system/display-manager.service + src: /lib/systemd/system/lightdm.service + state: link + + - name: make lightdm default (X11) + copy: + dest: /etc/X11/default-display-manager + content: "/usr/bin/lightdm" + owner: root + group: root + mode: 0644 + + - import_tasks: initramfs.yml + - import_tasks: gnome.yml + tags: + - gnome + + - name: copy printer drivers + copy: + src: "{{ item }}" + dest: /usr/share/ppd/custom + owner: root + group: lpadmin + mode: 0664 + with_items: + - Canon_LBP712Cx.ppd + - UTAX_TA_3555i.ppd + notify: configure printers + tags: printer + + handlers: + - name: update initramfs + command: update-initramfs -u + - name: dconf update + command: dconf update + - name: configure printers + shell: "lpadmin -p Kopierer -E -v socket://192.168.112.5 -P /usr/share/ppd/custom/UTAX_TA_3555i.ppd && lpadmin -p Farbdrucker -E -v socket://192.168.112.7 -P /usr/share/ppd/custom/Canon_LBP712Cx.ppd && lpadmin -d Kopierer" + + # use christophs role to configure NFS/NIS +- hosts: all + become: true + roles: + - common diff --git a/roles/common/files/etc/nsswitch.conf b/roles/common/files/etc/nsswitch.conf new file mode 100755 index 0000000..acd21cf --- /dev/null +++ b/roles/common/files/etc/nsswitch.conf @@ -0,0 +1,20 @@ +# /etc/nsswitch.conf +# +# Example configuration of GNU Name Service Switch functionality. +# If you have the `glibc-doc-reference' and `info' packages installed, try: +# `info libc "Name Service Switch"' for information about this file. + +passwd: compat systemd nis +group: compat systemd nis +shadow: compat nis +gshadow: files + +hosts: files nis mdns4_minimal [NOTFOUND=return] dns myhostname +networks: files + +protocols: db files +services: db files +ethers: db files +rpc: db files + +netgroup: nis diff --git a/roles/common/files/etc/systemd/system/rpcbind.socket.d/override.conf b/roles/common/files/etc/systemd/system/rpcbind.socket.d/override.conf new file mode 100755 index 0000000..480847b --- /dev/null +++ b/roles/common/files/etc/systemd/system/rpcbind.socket.d/override.conf @@ -0,0 +1,4 @@ +[Unit] +DefaultDependencies=no +Wants=rpcbind.target +Before=rpcbind.target diff --git a/roles/common/files/etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf b/roles/common/files/etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf new file mode 100755 index 0000000..20d1465 --- /dev/null +++ b/roles/common/files/etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf @@ -0,0 +1,3 @@ +[Service] +IPAddressAllow=192.168.0.0/16 + diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml new file mode 100755 index 0000000..6f0d681 --- /dev/null +++ b/roles/common/handlers/main.yml @@ -0,0 +1,26 @@ +--- + +- name: Renew nis databases + shell: make -C /var/yp + when: + - "groups['nis_server']|string is search(inventory_hostname)" + +- name: Reload nfs + service: + name: nfs-kernel-server + state: reloaded + enabled: yes + when: + - "groups['nfs_server']|string is search(inventory_hostname)" + +- name: Restart systemd-logind.service + service: + name: systemd-logind + daemon_reload: yes + state: restarted + +- name: Restart rpcbind + service: + name: rpcbind + daemon_reload: yes + state: restarted diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100755 index 0000000..6689618 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,9 @@ +--- +- import_tasks: nfs.yml + tags: + - nfs + +- import_tasks: nis-install-client.yml +# when: "groups['nis_client']|string is search(inventory_hostname)" + tags: + - nis-install diff --git a/roles/common/tasks/nfs.yml b/roles/common/tasks/nfs.yml new file mode 100755 index 0000000..e680a4a --- /dev/null +++ b/roles/common/tasks/nfs.yml @@ -0,0 +1,26 @@ +--- + + +- name: (nfs.yml) Ensure NFS utilities (clients) are installed. + apt: + pkg: nfs-common + state: present + when: + - ansible_os_family == "Debian" + tags: + - nfs-client + +- name: (nfs.yml) NFS Mount exports from nfs server + mount: + path: "{{ item.path }}" + src: "{{ item.src }}" + fstype: nfs + opts: "{{ item.mount_opts }}" + dump: "{{ item.dump | default(omit) }}" + passno: "{{ item.passno | default(omit) }}" + state: mounted + loop: "{{ nfs_exports }}" + loop_control: + label: '{{ item.src }}' + tags: + - nfs-client diff --git a/roles/common/tasks/nis-install-client.yml b/roles/common/tasks/nis-install-client.yml new file mode 100755 index 0000000..554f3dd --- /dev/null +++ b/roles/common/tasks/nis-install-client.yml @@ -0,0 +1,310 @@ +--- + +# --- +# Install nis +# --- + +- name: (nis-install-client.yml) Set (nis) default domain (/etc/defaultdomain) + template: + dest: /etc/defaultdomain + src: etc/defaultdomain.j2 + owner: root + group: root + mode: 0644 + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Create preconfigured /etc/yp.conf on nis clients + template: + dest: /etc/yp.conf + src: etc/yp.conf.j2 + owner: root + group: root + mode: 0644 + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Install nis common packages + package: + name: "{{ item }}" + state: present + with_items: "{{ nis_common_packages }}" + tags: + - nis-install + - nis-install-client + + +# --- +# /etc/default/nis +# --- + +- name: (nis-install-client.yml) Check if file '/etc/default/nis.ORIG' exists + stat: + path: /etc/default/nis.ORIG + register: default_nis_exists + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Backup existing file /etc/default/nis + command: cp -a /etc/default/nis /etc/default/nis.ORIG + when: + - default_nis_exists.stat.exists == False + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Adjust file /etc/default/nis - set 'NISSERVER' (client) + replace: + path: /etc/default/nis + regexp: '^NISSERVER=.*' + replace: 'NISSERVER=false' + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Adjust file /etc/default/nis - set 'NISCLIENT' (client) + replace: + path: /etc/default/nis + regexp: '^NISCLIENT=.*' + replace: 'NISCLIENT=true' + tags: + - nis-install + - nis-install-client + + +# --- +# /etc/{passwd,group,shadow} +# --- + +- name: (nis-install-client.yml) Add '+::::::' to file /etc/passwd + lineinfile: + path: /etc/passwd + line: '+::::::' + insertafter: EOF + state: present + owner: root + group: root + mode: '0644' + when: "ansible_distribution_major_version|int < 18" + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Add '+:::' to file /etc/group + lineinfile: + path: /etc/group + line: '+:::' + insertafter: EOF + state: present + owner: root + group: root + mode: '0644' + when: "ansible_distribution_major_version|int < 18" + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Add '+::::::::' to file /etc/shadow + lineinfile: + path: /etc/shadow + line: '+::::::::' + insertafter: EOF + state: present + owner: root + group: shadow + mode: '0640' + when: "ansible_distribution_major_version|int < 18" + tags: + - nis-install + - nis-install-client + + +# --- +# /etc/hosts +# --- + +- name: (nis-install-client.yml) Check if file '/etc/hosts.ORIG' exists + stat: + path: /etc/hosts.ORIG + register: etc_hosts_orig_exists + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Backup existing file /etc/hosts + command: cp -a /etc/hosts /etc/hosts.ORIG + when: + - etc_hosts_orig_exists.stat.exists == False + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Add nis-server to file /etc/hosts + lineinfile: + path: /etc/hosts + line: '{{ nis_server_address }} {{ nis_server_name }} {{ nis_server_name.split(".")[1] }}' + insertafter: EOF + state: present + owner: root + group: root + mode: '0644' + tags: + - nis-install + - nis-install-client + + +# --- +# /etc/nsswitch.conf +# --- + +#- name: (nis.yml) Check if file '/etc/nsswitch.conf.ORIG' exists +# stat: +# path: /etc/nsswitch.conf.ORIG +# register: nsswitch_conf_orig_exists +# tags: +# - nis-install +# - nis-install-client +# +#- name: (nis.yml) Backup existing file /etc/nsswitch.conf +# command: cp -a /etc/nsswitch.conf /etc/nsswitch.conf.ORIG +# when: +# - nsswitch_conf_orig_exists.stat.exists == False +# tags: +# - nis-install +# - nis-install-client +# +#- name: (nis-install-client.yml) Adjust file /etc/nsswitch.conf (set hosts) +# replace: +# path: /etc/nsswitch.conf +# regexp: '(hosts:\s+files)\s+([^nis].*)' +# replace: '\1 nis \2' +# tags: +# - nis-install +# - nis-install-client +# +#- name: (nis-install-client.yml) Adjust file /etc/nsswitch.conf (set passwd/group/shadow) +# replace: +# path: /etc/nsswitch.conf +# regexp: '^({{ item }}:\s+.*(?!nis).*)' +# replace: '\1 nis' +# with_items: +# - passwd +# - group +# - shadow +# tags: +# - nis-install +# - nis-install-client +- name: Copy /etc/nsswitch.conf + copy: + src: etc/nsswitch.conf + dest: /etc/nsswitch.conf + owner: root + group: root + mode: 0644 + +# --- +# /etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf +# --- + +# - !! Using NIS client in Ubuntu 18.04 crashes both Gnome and Unity !! +# - =================================================================== +# +# - Unter NIS in Ubuntu 18.04 stütrzt Gnome und Unity ab +# - +# - Abhilfe schafft: +# - +# +# - Create a new directory in /etc/systemd/system/ named exactly after the +# - service you want to extend including a '.d', here this would be: +# - systemd-logind.service.d +# - +# - mkdir /etc/systemd/system/systemd-logind.service.d +# +# - Create a new file choose_an_appropriate_name.conf (e.g. nis_allow_network.conf) +# - inside the newly created directory with the following content, which specifies +# - the IP or IP range you want to be allowed: +# - +# - cat < /etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf +# - [Service] +# - IPAddressAllow=192.168.0.0/16 +# - EOF +# - +# - systemctl daemon-reload +# - systemctl restart systemd-logind.service + +- name: (nis-install-client.yml) Ensure directory /etc/systemd/system/systemd-logind.service.d exists + file: + path: /etc/systemd/system/systemd-logind.service.d + owner: root + group: root + mode: '0755' + state: directory + when: "ansible_distribution_major_version|int >= 18" + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Ensure file /files/etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf exists + copy: + src: "{{ role_path + '/files/etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf' }}" + dest: /etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf + owner: root + group: root + mode: '0755' + when: "ansible_distribution_major_version|int >= 18" + # XXX: killt meine Xsession (Tim) + # notify: + # - Restart systemd-logind.service + tags: + - nis-install + - nis-install-client + + +# - Seit Ubuntu 16.04 startet nis vor dem portmapper (rpcbind). Das Starten +# - schlägt deshalb fehl und nis steht nicht zur Verfügung. +# - +# - Abhilfe: +# - +# - Run "systemctl edit rpcbind.socket" and add the following: +# - +# - [Unit] +# - DefaultDependencies=no +# - Wants=rpcbind.target +# - Before=rpcbind.target +# - +# - You can see your changes: +# - cat /etc/systemd/system/rpcbind.socket.d/override.conf + +- name: (nis-install-client.yml) Ensure directory /etc/systemd/system/rpcbind.socket.d exists + file: + path: /etc/systemd/system/rpcbind.socket.d + owner: root + group: root + mode: '0755' + state: directory + when: "ansible_distribution_major_version|int >= 16" + tags: + - nis-install + - nis-install-client + +- name: (nis-install-client.yml) Ensure file /files/etc/systemd/system/rpcbind.socket.d/override.conf exists + copy: + src: "{{ role_path + '/files/etc/systemd/system/rpcbind.socket.d/override.conf' }}" + dest: /etc/systemd/system/rpcbind.socket.d/override.conf + owner: root + group: root + mode: '0755' + when: "ansible_distribution_major_version|int >= 16" + notify: + - Restart rpcbind + tags: + - nis-install + - nis-install-client + + +# TODO: +# /etc/systemd/system/systemd-logind.service.d/nis_allow_network.conf +# /etc/systemd/system/rpcbind.socket.d/override.conf diff --git a/roles/common/templates/etc/defaultdomain.j2 b/roles/common/templates/etc/defaultdomain.j2 new file mode 100755 index 0000000..a016d89 --- /dev/null +++ b/roles/common/templates/etc/defaultdomain.j2 @@ -0,0 +1 @@ +{{ nis_domain }} diff --git a/roles/common/templates/etc/exports.j2 b/roles/common/templates/etc/exports.j2 new file mode 100755 index 0000000..62161dc --- /dev/null +++ b/roles/common/templates/etc/exports.j2 @@ -0,0 +1,31 @@ +# {{ ansible_managed }} + +# /etc/exports: the access control list for filesystems which may be exported +# to NFS clients. See exports(5). +# +# Example for NFSv2 and NFSv3: +# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) +# +# Example for NFSv4: +# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) +# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) +# + +{% set count = namespace(nfs_exports=100) %} +{% for export in nfs_exports %} + +{% set export_str= namespace(nfs_exports = export.src.split(":")[1]) %} + +{% set count.nfs_exports = count.nfs_exports + 10 %} +{% for network in export.export_networks %} +{% if export.fs_encrypted is defined and export.fs_encrypted is sameas true %} +{% set export_str.nfs_exports = export_str.nfs_exports~" "~network~"("~export.export_opt~",fsid="~count.nfs_exports~")" %} +#{{ export.src.split(":")[1] }} {{ network }}({{ export.export_opt }},fsid={{ count.nfs_exports }}) +{% else %} +{% set export_str.nfs_exports = export_str.nfs_exports~" "~network~"("~export.export_opt~")" %} +#{{ export.src.split(":")[1] }} {{ network }}({{ export.export_opt }}) +{% endif %} +{% endfor %} + +{{ export_str.nfs_exports }} +{% endfor %} diff --git a/roles/common/templates/etc/sudoers.d/50-user.j2 b/roles/common/templates/etc/sudoers.d/50-user.j2 new file mode 100755 index 0000000..ed81711 --- /dev/null +++ b/roles/common/templates/etc/sudoers.d/50-user.j2 @@ -0,0 +1,34 @@ +# {{ ansible_managed }} + +{% for item in sudoers_file_defaults | default([]) %} +Defaults {{ item }} +{% endfor %} + +# Host alias specification +{% for item in sudoers_file_host_aliases | default([]) %} +Host_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# User alias specification +{% for item in sudoers_file_user_aliases | default([]) %} +User_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# Cmnd alias specification +{% for item in sudoers_file_cmnd_aliases | default([]) %} +Cmnd_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# Runas alias specification +{% for item in sudoers_file_runas_aliases | default([]) %} +Runas_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# User privilege specification + +{# rules for nis users #} +{% for item in nis_user | default([]) %} +{{ item.name }} ALL=(root)NOPASSWD: MOUNT +{% endfor %} + +# Group privilege specification diff --git a/roles/common/templates/etc/sudoers.j2 b/roles/common/templates/etc/sudoers.j2 new file mode 100755 index 0000000..d8ea85b --- /dev/null +++ b/roles/common/templates/etc/sudoers.j2 @@ -0,0 +1,56 @@ +# {{ ansible_managed }} + +# This file MUST be edited with the 'visudo' command as root. +# +# Please consider adding local content in /etc/sudoers.d/ instead of +# directly modifying this file. +# +# See the man page for details on how to write a sudoers file. +# +{% for item in sudoers_defaults %} +{% if item != '' %} +Defaults {{ item }} +{% endif %} +{% endfor %} + +# Host alias specification +{% for item in sudoers_host_aliases | default([]) %} +Host_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# User alias specification +{% for item in sudoers_user_aliases | default([]) %} +User_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# Cmnd alias specification +{% for item in sudoers_cmnd_aliases | default([]) %} +Cmnd_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# Runas alias specification +{% for item in sudoers_runas_aliases | default([]) %} +Runas_Alias {{ item.name }} = {{ item.entry }} +{% endfor %} + +# User privilege specification +{% for item in sudoers_user_privileges | default([]) %} +{{ item.name }} {{ item.entry }} +{% endfor %} + +# Members of the admin group may gain root privileges +%admin ALL=(ALL) ALL + +# Allow members of group sudo to execute any command +%sudo ALL=(ALL:ALL) ALL + +# Group privilege specification + +{% for item in sudoers_group_privileges | default([]) %} +{{ item.name }} {{ item.entry }} +{% endfor %} + +# See sudoers(5) for more information on "#include" directives: + +#includedir /etc/sudoers.d + diff --git a/roles/common/templates/etc/yp.conf.j2 b/roles/common/templates/etc/yp.conf.j2 new file mode 100755 index 0000000..257e70c --- /dev/null +++ b/roles/common/templates/etc/yp.conf.j2 @@ -0,0 +1,24 @@ +# {{ ansible_managed }} + +# /etc/yp.conf - ypbind configuration file +# Valid entries are +# +# domain NISDOMAIN server HOSTNAME +# Use server HOSTNAME for the domain NISDOMAIN. +# +# domain NISDOMAIN broadcast +# Use broadcast on the local net for domain NISDOMAIN +# +# domain NISDOMAIN slp +# Query local SLP server for ypserver supporting NISDOMAIN +# +# ypserver HOSTNAME +# Use server HOSTNAME for the local domain. The +# IP-address of server must be listed in /etc/hosts. +# +# broadcast +# If no server for the default domain is specified or +# none of them is rechable, try a broadcast call to +# find a server. +# +domain {{ nis_domain }} server {{ nis_server_address }} diff --git a/roles/common/vars/main.yml b/roles/common/vars/main.yml new file mode 100755 index 0000000..2e48cbe --- /dev/null +++ b/roles/common/vars/main.yml @@ -0,0 +1,779 @@ +--- + +# --- +# NFS +# --- + +nfs_server: 192.168.112.10 + +# Set 'fs_encrypted' to true if filesystem lives on an encrypted +# partition. +# +nfs_exports: + - src: 192.168.112.10:/data/home + path: /data/home + mount_opts: users,rsize=8192,wsize=8192,hard,intr + export_opt: rw,root_squash,sync,subtree_check + export_networks: + - 192.168.112.0/24 + - 10.0.112.0/24 + - 10.1.112.0/24 + - 192.168.63.0/24 + fs_encrypted: false + + - src: 192.168.112.10:/data/shares + path: /data/shares + mount_opts: users,rsize=8192,wsize=8192,hard,intr + export_opt: rw,root_squash,sync,subtree_check + export_networks: + - 192.168.112.0/24 + - 10.0.112.0/24 + - 10.1.112.0/24 + - 192.168.63.0/24 + fs_encrypted: false + +# --- +# Samba / NIS +# --- + +samba_server: file-mbr.mbr-bln.netz + +samba_shares: + - name: Arbeitsrechtliches + user: + - anne + - bianca + - birgit.erhardt + - christina.wendt + - chris + - sysadm + - name: Ausschreibungen + user: + - anne + - bianca + - chris + - matthias.mueller + - sysadm + - name: BGN-Finanzen-Personal + user: + - anne + - bianca + - carolin + - christina.wendt + - chris + - sysadm + - ulf.balmer + - name: BVV-Projekt + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + - name: Finanzen + user: + - anne + - bianca + - birgit.erhardt + - christina.wendt + - chris + - sysadm + - name: Install + user: + - chris + - sysadm + - lokaladmin + - name: Kamera + user: + - anne + - axis + - bianca + - chris + - sysadm + - name: MBR + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + - name: Mobilisierungsplattform + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + - name: RIAS + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + - name: RIAS-Finanzen-Personal + user: + - anne + - bianca + - benjamin + - birgit.erhardt + - christina.wendt + - chris + - sysadm + - name: SCAN + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + - name: VDK + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + - name: Video + user: + - alexander.rasumny + - anna.mueller1 + - anne + - benjamin + - bianca + - birgit.erhardt + - bjoern.renkewitz + - carolin + - christina.wendt + - chris + - daniel.poensgen + - doku2 + - doku_4 + - doku_7 + - dorina.feldmann + - franziska + - johannes.radke + - judith.heinmueller + - kristina.holzapfel + - lavinia.schwedersky + - manja.kasten + - mathias + - matthias.mueller + - michael.sulies + - michael.trube + - pia.lamberty + - praktikum + - praktikum_rias + - praktikum2 + - praktikum2_rias + - praktikum3 + - praktikum4 + - sabine.kritter + - samuel.signer + - scan + - simon + - sysadm + - ulf.balmer + +nis_domain: mbr-bln.netz +#nis_domain: local.netz + +nis_server_address: 192.168.112.10 + +nis_server_name: file-mbr.mbr-bln.netz +#nis_server_name: luna.local.netz + +nis_common_packages: + - nis + - nscd + +nis_deleted_user: [] + + +nis_base_home: /data/home + +nis_groups: + - name: mbr-buero + group_id: 1200 + - name: mbr-finanzen + group_id: 1210 + - name: mbr-personal + group_id: 1220 + - name: mbr-kamera + group_id: 1250 + - name: mbr-admins + group_id: 1260 + - name: vdk + group_id: 1300 + - name: rias + group_id: 1400 + - name: rias-finanzen-personal + group_id: 1410 + - name: bgn + group_id: 1500 + - name: bgn-finanzen-personal + group_id: 1510 + +nis_user: + - name: chris + groups: + - mbr-buero + - mbr-finanzen + - mbr-personal + - mbr-kamera + - mbr-admins + - vdk + - rias + - rias-finanzen-personal + - bgn + - bgn-finanzen-personal + is_samba_user: true + password: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 38643435653764393333613564393733666139656264343833333632373938323230393036303234 + 3633303562636465643930643961663165646237386664370a386362346162313037353163383365 + 61343263386239316164613935633062343165363863376462653165306464633136313839343962 + 3865353333373661390a643564386432643532396632323664383330646430613033643130626430 + 6139 + - name: lokaladmin + groups: + - mbr-buero + - mbr-finanzen + - mbr-personal + - mbr-kamera + - mbr-admins + - vdk + - rias + - rias-finanzen-personal + - bgn + - bgn-finanzen-personal + is_samba_user: true + password: 'd4r1usz' + - name: sysadm + groups: + - mbr-buero + - mbr-finanzen + - mbr-personal + - mbr-kamera + - mbr-admins + - vdk + - rias + - rias-finanzen-personal + - bgn + - bgn-finanzen-personal + is_samba_user: true + password: 'KPk_Wf2F' + - name: alexander.rasumny + groups: + - mbr-buero + is_samba_user: true + password: 'twT9Rjbv9mjq' + - name: anna.mueller1 + groups: + - mbr-buero + is_samba_user: true + password: '5xp5ll9ar13us!' + - name: anne + groups: + - mbr-buero + - mbr-finanzen + - mbr-personal + - mbr-kamera + - mbr-admins + - vdk + - rias + - rias-finanzen-personal + - bgn + - bgn-finanzen-personal + is_samba_user: true + password: 'YA!LiLiC0MP5' + - name: axis + groups: + - mbr-buero + is_samba_user: true + password: '20_axis_16' + - name: benjamin + groups: + - mbr-buero + - vdk + - rias + - rias-finanzen-personal + is_samba_user: true + password: 'C2-0U#ch' + - name: bianca + groups: + - mbr-buero + - mbr-finanzen + - mbr-personal + - mbr-kamera + - mbr-admins + - vdk + - rias + - rias-finanzen-personal + - bgn + - bgn-finanzen-personal + is_samba_user: true + password: '73_BiBole_29' + - name: birgit.erhardt + groups: + - mbr-buero + - mbr-finanzen + - vdk + is_samba_user: true + password: '20_purpel!rain_17' + - name: bjoern.renkewitz + groups: + - mbr-buero + is_samba_user: true + password: 'Tz9-Wq-51' + - name: carolin + groups: + - mbr-buero + - bgn-finanzen-personal + is_samba_user: true + password: '20_carol1n_14' + - name: christina.wendt + groups: + - mbr-buero + - mbr-finanzen + - vdk + - rias-finanzen-personal + - bgn-finanzen-personal + is_samba_user: true + password: '8!Varianten' + - name: daniel.poensgen + groups: + - mbr-buero + is_samba_user: true + password: 'rcMRCm7jcpbp' + - name: doku_4 + groups: + - mbr-buero + is_samba_user: true + password: 'PwmNvPh9KM4T' + - name: doku_7 + groups: + - mbr-buero + is_samba_user: true + password: 'TFhCW9J4Vn4F' + - name: dorina.feldmann + groups: + - mbr-buero + is_samba_user: true + password: '17?4XPQ_!abc' + - name: franziska + groups: + - mbr-buero + is_samba_user: true + password: 'f49mCjbj3Jh7' + - name: frederick.kannenberg + groups: + - mbr-buero + is_samba_user: true + password: 'riasFK2019!#' + - name: doku2 + groups: + - mbr-buero + is_samba_user: true + password: '*M0ss4d*' + - name: johannes.radke + groups: + - mbr-buero + is_samba_user: true + password: 'Furzf4brik!' + - name: judith.heinmueller + groups: + - mbr-buero + is_samba_user: true + password: 't32_aHxV.' + - name: kristina.holzapfel + groups: + - mbr-buero + is_samba_user: true + password: 'c7PvX_39.' + - name: lavinia.schwedersky + groups: + - mbr-buero + is_samba_user: true + password: 'xJw.3R9vKf/N' + - name: manja.kasten + groups: + - mbr-buero + is_samba_user: true + password: 'Rasili_&n' + - name: mathias + groups: + - mbr-buero + is_samba_user: true + password: 'p3r*45p3r4*4d*45tr4m' + - name: matthias.mueller + groups: + - mbr-buero + - mbr-personal + is_samba_user: true + password: 'V1v@H@f3rdr1nk' + - name: michael.sulies + groups: + - mbr-buero + is_samba_user: true + password: 'Cryst4lp4l4c3' + - name: michael.trube + groups: + - mbr-buero + - mbr-kamera + is_samba_user: true + password: '*R13sl1ng*' + - name: pia.lamberty + groups: + - mbr-buero + is_samba_user: true + password: 'oasd31*as+Q%' + - name: praktikum + groups: + - mbr-buero + is_samba_user: true + password: '_F313r4b3nd*' + - name: praktikum_rias + groups: + - mbr-buero + is_samba_user: true + password: '7z7F%d3cv_dfjz' + - name: praktikum2 + groups: + - mbr-buero + is_samba_user: true + password: '20praktikum213' + - name: praktikum2_rias + groups: + - mbr-buero + is_samba_user: true + password: 'ctnrk3CczcJ9' + - name: praktikum3 + groups: + - mbr-buero + is_samba_user: true + password: 'Q56V.6kf/JLQ' + - name: praktikum4 + groups: + - mbr-buero + is_samba_user: true + password: '6jA,nmD,fdK!' + - name: sabine.kritter + groups: + - mbr-buero + is_samba_user: true + password: '#17_abc_?!' + - name: samuel.signer + groups: + - mbr-buero + is_samba_user: true + password: 'S4mmyC0mput3r!' + - name: scan + groups: + - mbr-buero + is_samba_user: true + password: '20scan13' + - name: simon + groups: + - mbr-buero + is_samba_user: true + password: 'S4u3rkr4ut!' + - name: ulf.balmer + groups: + - mbr-buero + - bgn + - bgn-finanzen-personal + is_samba_user: true + password: 'ALL3_e6ene#' + + + +# --- +# vars used by roles/ansible_dependencies +# --- + +apt_ansible_dependencies: + - python + - python-apt + - python3 + - python3-apt + - lsb-release + - apt-transport-https + - dbus + - sudo + - vim + - net-tools + - vlan + + +# --- +# vars used by roles/ansible_user +# --- + +ssh_keys_admin: + - 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5IhVprsvVOcFPbZzD9xR0nCjZ/9qVG6RhLJ7QBSts81nRvLwnmvcMBHSf5Rfaigey7Ff5dLHfJnxRE0KDATn6n2yd/5mXpn2GAA8hDVfhdsmsb5U7bROjZNr8MmIUrP7c3msUGx1FtvzhwxtyvIWOFQpWx+W5biBa6hFjIxT1pkUJqe6fclp7xbGYKZiqZRBS4qKG5CpKnisuOYDsqYPND+OkU+PShoxGVzp1JywIVze7qeKv6GyYbRA9SP9Np+5Mit6B21Io4zOI81c2Rz6sPX7mwEAQEs7iCm2hzG8qJws45Lb4ERqDkVEVhGNUyHjHgGebS1sZx1mLExdurXlPm1l/EamkncDFDCutHXtLP7lsFFiym7fKUjSEgiiLmyu5Xm+mwZvesKa1FYNaeiFWfYZpCJrNzIk+ffs+mgg3kmL4Sd4Ooy7jXPX+WJe5Xyh1KLU/+Wj2TVrhN+LbmupYAti/Wgd3DA1v601svmG82aLmyJRtKC0rGMePH3kDbtqU72kYpzI8mXERe1TIQ00Z77kQBR/7BF/9y5/0YmYDcXt1wNCoSie+mzz3xYcEdLAc7T+DhYpd4M6VgWnuz/exzRzhQwoSdEKkEED8CpEoBrEWEiMdrlElGmlkVomLU7P9i9j1rshX/pAq0asnqeSoPdC3vNbU3keiJQnhIHECvw== chris@luna' + - 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCyWbdnjnN/xfy1F6kPbsRXp8zvJEh8uHfTZuZKyaRV/iRuhsvqRiDB+AhUAlIaPwgQ8itaI6t5hijD+sZf+2oXXbNy3hkOHTrCDKCoVAWfMRKPuA1m8RqS4ZXXgayaeCzVnPEq6UrC5z0wO/XBwAktT37RRSQ/Hq2zCHy36NQEQYrhF3+ytX7ayb10pJAMVGRctYmr5YnLEVMSIREbPxZTNc80H1zqNPVJwYZhl8Ox61U4MoNhJmJwbKWPRPZsJpbTh9W2EU37tdwRBVQP6yxhua3TR6C7JnNPVY0IK23BYlNtQEDY4PHcIuewkamEWpP0+jhEjtwy1TqjRPdU/y+2uQjC6FSOVMsSPxgd8mw4cSsfp+Ard7P+YOevUXD81+jFZ3Wz0PRXbWMWAm2OCe7n8jVvkXMz+KxSYtrsvKNw1WugJq1z//bJNMTK6ISWpqaXDevGYQRJJ8dPbMmbey40WpS5CA/l29P7fj/cOl59w3LZGshrMOm7lVz9qysVV0ylfE3OpfKCGitkpY0Asw4lSkuLHoNZnDo6I5/ulRuKi6gsLk27LO5LYS8Zm1VOis/qHk1Gg1+QY47C4RzdTUxlU1CGesPIiQ1uUX2Z4bD7ebTrrOuEFcmNs3Wu5nif21Qq0ELEWhWby6ChFrbFHPn+hWlDwNM0Nr11ftwg0+sqVw== root@luna' + +ansible_remote_user: + - name: lokaladmin + password: $6$KLQUDbiw$qvsGUndXr2G3DxhML6maD/nsJtXfElSLQ7ufkMuJu2vACbYX7kqNXdiU17oX6CyN5L1xARZ.TiES/w7zfh0Cu/ + shell: /bin/bash + + + +# --- +# vars used by roles/common/tasks/basic.yml +# --- + +time_zone: Europe/Berlin + +locales: + - en_US.UTF-8 + - de_DE.UTF-8 + +set_default_limit_nofile: false + + +# --- +# vars used by roles/common/tasks/sudoers.yml +# --- + +sudo_users: + - lokaladmin + + +# /etc/sudoers +# +sudoers_defaults: + - env_reset + - mail_badpass + - 'secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"' + +sudoers_host_aliases: [] + +sudoers_user_aliases: [] + +sudoers_cmnd_aliases: [] + +sudoers_runas_aliases: [] + +sudoers_user_privileges: + - name: root + entry: 'ALL=(ALL:ALL) ALL' + +sudoers_group_privileges: [] + + + +# /etc/sudoers.d/50-user +# +sudoers_file_defaults: [] + +sudoers_file_host_aliases: [] + +sudoers_file_user_aliases: [] + +sudoers_file_cmnd_aliases: + - name: MOUNT + entry: '/bin/mount,/bin/umount' + +sudoers_file_runas_aliases: [] + diff --git a/roles/freedomofpress.signal-desktop/.gitignore b/roles/freedomofpress.signal-desktop/.gitignore new file mode 100755 index 0000000..a02b9ad --- /dev/null +++ b/roles/freedomofpress.signal-desktop/.gitignore @@ -0,0 +1 @@ +.molecule/ diff --git a/roles/freedomofpress.signal-desktop/.yamllint b/roles/freedomofpress.signal-desktop/.yamllint new file mode 100755 index 0000000..ad0be76 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/.yamllint @@ -0,0 +1,11 @@ +extends: default + +rules: + braces: + max-spaces-inside: 1 + level: error + brackets: + max-spaces-inside: 1 + level: error + line-length: disable + truthy: disable diff --git a/roles/freedomofpress.signal-desktop/README.md b/roles/freedomofpress.signal-desktop/README.md new file mode 100755 index 0000000..8366927 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/README.md @@ -0,0 +1,44 @@ +Signal Desktop Ansible role +=========================== + +Installs [Signal Desktop] on Linux hosts via `apt`. + +Requirements +------------ + +Debian or Ubuntu. + +Role Variables +-------------- + +```yaml +# GPG full fingerprint of apt repo key, retrieved from: +# https://updates.signal.org/desktop/apt/keys.asc +signal_desktop_gpg_fingerprint: "DBA36B5181D0C816F630E889D980A17457F6FB06" + +# Prerequisites for configuring HTTPS apt repo. +signal_desktop_apt_dependencies: + - apt-transport-https + - gpg + +# Pinning the Xenial repo, works fine on e.g. Debian Stretch. +# The Signal team does not maintain specific versions for other dists, +# so intentionally not using `{{ ansible_distribution }}` +signal_desktop_apt_repo: "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" +``` + + + +Example Playbook +---------------- + +```yaml +- hosts: workstations + roles: + - role: freedomofpress.signal-desktop +``` + +License +------- + +MIT diff --git a/roles/freedomofpress.signal-desktop/defaults/main.yml b/roles/freedomofpress.signal-desktop/defaults/main.yml new file mode 100755 index 0000000..2c669ed --- /dev/null +++ b/roles/freedomofpress.signal-desktop/defaults/main.yml @@ -0,0 +1,13 @@ +--- +# GPG full fingerprint of apt repo key, retrieved from: +# https://updates.signal.org/desktop/apt/keys.asc +signal_desktop_gpg_fingerprint: "DBA36B5181D0C816F630E889D980A17457F6FB06" + +# Prerequisites for configuring HTTPS apt repo. +signal_desktop_apt_dependencies: + - apt-transport-https + +# Pinning the Xenial repo, works fine on e.g. Debian Stretch. +# The Signal team does not maintain specific versions for other dists, +# so intentionally not using `{{ ansible_distribution }}` +signal_desktop_apt_repo: "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" diff --git a/roles/freedomofpress.signal-desktop/files/signal-apt-key.asc b/roles/freedomofpress.signal-desktop/files/signal-apt-key.asc new file mode 100755 index 0000000..4b09c47 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/files/signal-apt-key.asc @@ -0,0 +1,51 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFjlSicBEACgho//0EzxuvuCn01LwFqGAgwPKcSSl4L+AWws5/YbsZZvmTBk +ggIiVOCIMh+d3cmGu5W3ydaeUbWbFGNsxO44EB5YBZcuLa5EzRKbNPVaOXKXmhp+ +w0mEbkoKbF+3mz3lifwBnzcBpukyJDgcJSq8cXfq5JsDPR1KAL6ph/kwKeiDNg+8 +oFgqfboukK56yPTYc9iM8hkTFdx9L6JCJaZGaDMfihoQm2caKAmqc+TlpgtKbBL0 +t5hrzDpCPpJvCddu1NRysTcqfACSSocvoqY0dlbNPMN8j04LH8hcKGFipuLdI8qx +BFqlMIQJCVJhr05E8rEsI4nYEyG44YoPopTFLuQa+wewZsQkLwcfYeCecU1KxlpE +OI3xRtALJjA/C/AzUXVXsWn7Xpcble8i3CKkm5LgX5zvR6OxTbmBUmpNgKQiyxD6 +TrP3uADm+0P6e8sJQtA7DlxZLA6HuSi+SQ2WNcuyLL3Q/lJE0qBRWVJ08nI9vvxR +vAs20LKxq+D1NDhZ2jfG2+5agY661fkx66CZNFdz5OgxJih1UXlwiHpn6qhP7Rub +OJ54CFb+EwyzDVVKj3EyIZ1FeN/0I8a0WZV6+Y/p08DsDLcKgqcDtK01ydWYP0tA +o1S2Z7Jsgya50W7ZuP/VkobDqhOmE0HDPggX3zEpXrZKuMnRAcz6Bgi6lwARAQAB +tDFPcGVuIFdoaXNwZXIgU3lzdGVtcyA8c3VwcG9ydEB3aGlzcGVyc3lzdGVtcy5v +cmc+iQI3BBMBCgAhBQJY5UonAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJ +ENmAoXRX9vsGU00P/RBPPc5qx1EljTW3nnTtgugORrJhYl1CxNvrohVovAF4oP1b +UIGT5/3FoDsxJHSEIvorPFSaG2+3CBhMB1k950Ig2c2n+PTnNk6D0YIUbbEI0KTX +nLbCskdpy/+ICiaLfJZMe11wcQpkoNbG587JdQwnGegbQoo580CTSsYMdnvGzC8A +l1F7r37RVZToJMGgfMKK3oz8xIDXqOe5oiiKcV36tZ5V/PCDAu0hXYBRchtqHlHP +cKWeRTb1aDkbQ7SPlJ2bSvUjFdB6KahlSGJl3nIU5zAH2LA/tUQY16Z1QaJmfkEb +RY61B/LPv1TaA1SIUW32ej0NmeF09Ze4Cggdkacxv6E+CaBVbz5rLh6m91acBibm +pJdGWdZyQU90wYFRbSsqdDNB+0DvJy6AUg4e5f79JYDWT/Szdr0TLKmdPXOxa1Mb +i34UebYI7WF7q22e7AphpO/JbHcD+N6yYtN6FkUAmJskGkkgYzsM/G8OEbBRS7A+ +eg3+NdQRFhKa7D7nIuufXDOTMUUkUqNYLC+qvZVPJrWnK9ZsGKsP0EUZTfEGkmEN +UzmASxyMMe6JHmm5Alk4evJeQ31U5jy7ntZSWEV1pSGmSEJLRNJtycciFJpsEp/p +LkL0iFb30R9bHBp6cg7gjXbqZ9ZpEsxtZMBuqS70ZZyQdu2yGDQCBk7eLKCjuQIN +BFjlSicBEACsxCLVUE7UuxsEjNblTpSEysoTD6ojc2nWP/eCiII5g6SwA/tQKiQI +ZcGZsTZB9kTbCw4T3hVEmzPl6u2G6sY9Kh1NHKMR3jXvMC+FHODhOGyAOPERjHCJ +g20XF2/Gg462iW8e3lS7CQBzbplUCW/oMajj2Qkc61NLtxxzsssXjCKExub2HxCQ +AYtenuDtLU73G75BoghWJ19dIkodnEI0/fzccsgiP5xeVgmkWJPo9xKJtrBS5gcS +s7yaGY9YYo71RFzkpJpeAeLrJJqt+2KqH1u0EJUbs8YVGXKlnYeSNisg4OaRsldW +JmDDCD5WUdFq2LNdVisfwirgjmwYpLrzVMbmzPvdmxQ1NYzJsX4ARSL/wuKCvEub +gh1AR5oV7mUEA9I3KRH0TIDOnH4nGG3kqArzrV2E1WtnNzFII0IN9/48xY7Vkxs7 +Oil+E+wCpzUv/tF4ALx5TAXoPd66ddEOxzDrtBpEzsouszt7uUyncyT3X6ip5l9f +mI4uxbsjwkLVfd1WpD1uvp869oyx6wtHluswr1VY/cbnHO8J6J35JVMhYQdMOaTZ +rX6npe/YOHJ4a7YzLMfdrxyzK1wq5xu/9LgclMTdIhAKvnaXBg41jsid5n0GdIeW +ek8WAVNyvuvoTwm3GG6+/pkTwu0J79lAMD1mhJsuSca6SFNgYnd+PQARAQABiQIf +BBgBCgAJBQJY5UonAhsMAAoJENmAoXRX9vsGvRgQAJ4tWnK2TncCpu5nTCxYMXjW +LuvwORq8EBWczHS6SjLdwmSVKGKSYtl2n6nCkloVY6tONMoiCWmtcq7SJMJoyZw3 +XIf82Z39tzn/conjQcP0aIOFzww1XG7YiaTAhsDZ62kchukI52jUYm2w8cTZMEZB +oIwIWBpmLlyaDhjIM5neY5RuL7IbIpS/fdk2lwfAwcNq6z/ri2E5RWl3AEINdLUO +gAiVMagNJaJ+ap7kMcwOLoI2GD84mmbtDWemdUZ3HnqLHv0mb1djsWL6LwjCuOgK +l2GDrWCh18mE+9mVB1Lo7jzYXNSHXQP6FlDE6FhGO1nNBs2IJzDvmewpnO+a/0pw +dCerATHWtrCKwMOHrbGLSiTKEjnNt/74gKjXxdFKQkpaEfMFCeiAOFP93tKjRRhP +5wf1JHBZ1r1+pgfZlS5F20XnM2+f/K1dWmgh+4Grx8pEHGQGLP+A22O7iWjg9pS+ +LD3yikgyGGyQxgcN3sJBQ4yxakOUDZiljm3uNyklUMCiMjTvT/F02PalQMapvA5w +7Gwg5mSI8NDs3RtiG1rKl9Ytpdq7uHaStlHwGXBVfvayDDKnlpmndee2GBiU/hc2 +ZsYHzEWKXME/ru6EZofUFxeVdev5+9ztYJBBZCGMug5Xp3Gxh/9JUWi6F1+9qAyz +N+O606NOXLwcmq5KZL0g +=zyVo +-----END PGP PUBLIC KEY BLOCK----- diff --git a/roles/freedomofpress.signal-desktop/handlers/main.yml b/roles/freedomofpress.signal-desktop/handlers/main.yml new file mode 100755 index 0000000..1faff93 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for signal-desktop diff --git a/roles/freedomofpress.signal-desktop/meta/.galaxy_install_info b/roles/freedomofpress.signal-desktop/meta/.galaxy_install_info new file mode 100755 index 0000000..3dfc36f --- /dev/null +++ b/roles/freedomofpress.signal-desktop/meta/.galaxy_install_info @@ -0,0 +1 @@ +{install_date: 'Sun Jan 12 13:47:06 2020', version: master} diff --git a/roles/freedomofpress.signal-desktop/meta/main.yml b/roles/freedomofpress.signal-desktop/meta/main.yml new file mode 100755 index 0000000..2ea5a33 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/meta/main.yml @@ -0,0 +1,22 @@ +--- +galaxy_info: + author: Conor Schaefer (@conorsch) + description: Installs Signal Desktop on Linux hosts. + company: Freedom of the Press Foundation (@freedomofpress) + license: MIT + min_ansible_version: 2.4 + platforms: + - name: Debian + versions: + - stretch + + galaxy_tags: + - chat + - communications + - desktop + - encryption + - im + - secure + - signal + - workstation +dependencies: [] diff --git a/roles/freedomofpress.signal-desktop/molecule/default/Dockerfile.j2 b/roles/freedomofpress.signal-desktop/molecule/default/Dockerfile.j2 new file mode 100755 index 0000000..bed3cbb --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/Dockerfile.j2 @@ -0,0 +1,9 @@ +# Molecule managed + +FROM {{ item.image }} + +RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates && apt-get clean; \ + elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf bash && dnf clean all; \ + elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ + elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml && zypper clean -a; \ + elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates; fi diff --git a/roles/freedomofpress.signal-desktop/molecule/default/INSTALL.rst b/roles/freedomofpress.signal-desktop/molecule/default/INSTALL.rst new file mode 100755 index 0000000..e26493b --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/INSTALL.rst @@ -0,0 +1,16 @@ +******* +Install +******* + +Requirements +============ + +* Docker Engine +* docker-py + +Install +======= + +.. code-block:: bash + + $ sudo pip install docker-py diff --git a/roles/freedomofpress.signal-desktop/molecule/default/create.yml b/roles/freedomofpress.signal-desktop/molecule/default/create.yml new file mode 100755 index 0000000..11d5c69 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/create.yml @@ -0,0 +1,47 @@ +--- +- name: Create + hosts: localhost + connection: local + gather_facts: False + no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}" + vars: + molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}" + molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}" + molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}" + molecule_yml: "{{ lookup('file', molecule_file) | molecule_from_yaml }}" + tasks: + - name: Create Dockerfiles from image names + template: + src: "{{ molecule_scenario_directory }}/Dockerfile.j2" + dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}" + with_items: "{{ molecule_yml.platforms }}" + register: platforms + + - name: Discover local Docker images + docker_image_facts: + name: "molecule_local/{{ item.item.name }}" + with_items: "{{ platforms.results }}" + register: docker_images + + - name: Build an Ansible compatible image + docker_image: + path: "{{ molecule_ephemeral_directory }}" + name: "molecule_local/{{ item.item.image }}" + dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}" + force: "{{ item.item.force | default(True) }}" + with_items: "{{ platforms.results }}" + when: platforms.changed or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0 + + - name: Create molecule instance(s) + docker_container: + name: "{{ item.name }}" + hostname: "{{ item.name }}" + image: "molecule_local/{{ item.image }}" + state: started + recreate: False + log_driver: syslog + command: "{{ item.command | default('sleep infinity') }}" + privileged: "{{ item.privileged | default(omit) }}" + volumes: "{{ item.volumes | default(omit) }}" + capabilities: "{{ item.capabilities | default(omit) }}" + with_items: "{{ molecule_yml.platforms }}" diff --git a/roles/freedomofpress.signal-desktop/molecule/default/destroy.yml b/roles/freedomofpress.signal-desktop/molecule/default/destroy.yml new file mode 100755 index 0000000..f31ee27 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/destroy.yml @@ -0,0 +1,16 @@ +--- +- name: Destroy + hosts: localhost + connection: local + gather_facts: False + no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}" + vars: + molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}" + molecule_yml: "{{ lookup('file', molecule_file) | molecule_from_yaml }}" + tasks: + - name: Destroy molecule instance(s) + docker_container: + name: "{{ item.name }}" + state: absent + force_kill: "{{ item.force_kill | default(True) }}" + with_items: "{{ molecule_yml.platforms }}" diff --git a/roles/freedomofpress.signal-desktop/molecule/default/molecule.yml b/roles/freedomofpress.signal-desktop/molecule/default/molecule.yml new file mode 100755 index 0000000..eed6980 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/molecule.yml @@ -0,0 +1,20 @@ +--- +dependency: + name: galaxy +driver: + name: docker +lint: + name: yamllint +platforms: + - name: instance + image: debian:stretch +provisioner: + name: ansible + lint: + name: ansible-lint +scenario: + name: default +verifier: + name: testinfra + lint: + name: flake8 diff --git a/roles/freedomofpress.signal-desktop/molecule/default/playbook.yml b/roles/freedomofpress.signal-desktop/molecule/default/playbook.yml new file mode 100755 index 0000000..3b83510 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/playbook.yml @@ -0,0 +1,5 @@ +--- +- name: Converge + hosts: all + roles: + - role: signal-desktop diff --git a/roles/freedomofpress.signal-desktop/molecule/default/prepare.yml b/roles/freedomofpress.signal-desktop/molecule/default/prepare.yml new file mode 100755 index 0000000..d34f067 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/prepare.yml @@ -0,0 +1,5 @@ +--- +- name: Prepare + hosts: all + gather_facts: False + tasks: [] diff --git a/roles/freedomofpress.signal-desktop/molecule/default/tests/test_default.py b/roles/freedomofpress.signal-desktop/molecule/default/tests/test_default.py new file mode 100755 index 0000000..c00a791 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/molecule/default/tests/test_default.py @@ -0,0 +1,15 @@ +import os + +import pytest +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') + + +@pytest.mark.parametrize('pkg', [ + 'apt-transport-https', + 'signal-desktop', +]) +def test_packages_installed(host, pkg): + assert host.package(pkg).is_installed diff --git a/roles/freedomofpress.signal-desktop/tasks/main.yml b/roles/freedomofpress.signal-desktop/tasks/main.yml new file mode 100755 index 0000000..66ce343 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/tasks/main.yml @@ -0,0 +1,27 @@ +--- +# tasks file for signal-desktop +- name: Installs apt repo prerequisites. + become: yes + apt: + name: "{{ item }}" + state: present + with_items: "{{ signal_desktop_apt_dependencies }}" + +- name: Install Signal apt repo GPG key. + become: yes + apt_key: + data: "{{ lookup('file', 'signal-apt-key.asc') }}" + state: present + keyring: /etc/apt/trusted.gpg.d/signal-desktop.gpg + +- name: Add Signal apt repo. + become: yes + apt_repository: + repo: "{{ signal_desktop_apt_repo }}" + state: present + +- name: Installs Signal desktop. + become: yes + apt: + name: signal-desktop + state: present diff --git a/roles/freedomofpress.signal-desktop/vars/main.yml b/roles/freedomofpress.signal-desktop/vars/main.yml new file mode 100755 index 0000000..7cd2400 --- /dev/null +++ b/roles/freedomofpress.signal-desktop/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for signal-desktop diff --git a/roles/ontic.fonts/.gitignore b/roles/ontic.fonts/.gitignore new file mode 100755 index 0000000..1a0a0e0 --- /dev/null +++ b/roles/ontic.fonts/.gitignore @@ -0,0 +1,10 @@ +# IDE +/.cache/ +/.externalToolBuilders/ +/.idea/ +/.settings/ +/.buildpath +/.project + +# Vagrant +/.vagrant/ \ No newline at end of file diff --git a/roles/ontic.fonts/.travis.yml b/roles/ontic.fonts/.travis.yml new file mode 100755 index 0000000..f605d4b --- /dev/null +++ b/roles/ontic.fonts/.travis.yml @@ -0,0 +1,30 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +services: 'docker' + +env: + - distribution: 'centos' + version: '7' + - distribution: 'debian' + version: '9' + - distribution: 'ubuntu' + version: '16.04' + - distribution: 'ubuntu' + version: '18.04' + +before_install: + - 'export container_id=$(date +%s)' + - 'export cleanup=false' + - 'wget -O ${PWD}/tests/docker.sh https://raw.githubusercontent.com/ontic/ansible-role-test/master/docker.sh' + - 'chmod +x ${PWD}/tests/docker.sh' + - '${PWD}/tests/docker.sh build' + +script: + - '${PWD}/tests/docker.sh test' + - '${PWD}/tests/docker.sh verify' + +notifications: + webhooks: 'https://galaxy.ansible.com/api/v1/notifications/' \ No newline at end of file diff --git a/roles/ontic.fonts/COPYING b/roles/ontic.fonts/COPYING new file mode 100755 index 0000000..fa32766 --- /dev/null +++ b/roles/ontic.fonts/COPYING @@ -0,0 +1,5 @@ +Copyright (c) 2010-2018 Ontic. (http://www.ontic.com.au). All rights reserved. + +Each Ontic source file included in this distribution is subject to the New BSD license +that is bundled with this package in the LICENSE file. To understand any restrictions on +the use and redistribution of this package please see the LICENSE file for precise details. \ No newline at end of file diff --git a/roles/ontic.fonts/LICENSE b/roles/ontic.fonts/LICENSE new file mode 100755 index 0000000..1853949 --- /dev/null +++ b/roles/ontic.fonts/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2010-2018 Ontic. (http://www.ontic.com.au). All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Ontic (http://www.ontic.com.au). nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/roles/ontic.fonts/README.md b/roles/ontic.fonts/README.md new file mode 100755 index 0000000..1edc280 --- /dev/null +++ b/roles/ontic.fonts/README.md @@ -0,0 +1,81 @@ +# Ontic Fonts ![Status](https://img.shields.io/badge/project-maintained-brightgreen.svg) + +| Branch | Build | Galaxy | Release | +| :----------------- | :------------------ | :------------------ | :------------------- | +| **master** | [![Build](https://img.shields.io/travis/ontic/ansible-role-fonts/master.svg)](https://travis-ci.org/ontic/ansible-role-fonts) | [![Galaxy](https://img.shields.io/badge/galaxy-ontic.fonts-blue.svg)](https://galaxy.ansible.com/ontic/fonts) | [![Release](https://img.shields.io/github/release/ontic/ansible-role-fonts.svg)](https://github.com/ontic/ansible-role-fonts/releases) | + +## Introduction + +This role installs fonts on RedHat/CentOS and Debian/Ubuntu Linux servers. + +## Requirements + +| Name | Version | +| :-------------------------------------------------------------------------------------------- | :------------ | +None | N/A | + + +## Installation + +We strongly suggest installing this role using [Ansible Galaxy](https://galaxy.ansible.com) so that any dependencies +will get resolved and downloaded automatically. However, we've listed a few other alternatives. + +### 1.1 Downloading + +Download the project files as a `.zip` archive, extracting them into your `./roles/` directory. + +### 1.2 Cloning + +Clone the project it into your `./roles/` directory. + +### 1.3 Ansible Galaxy + +The easiest way to install this module is via the command line: + +``` +$ ansible-galaxy install ontic.fonts +``` + +If you have multiple roles to install, the ansible-galaxy CLI can be fed a `requirements.yml` file. + +```yml +- src: ontic.fonts +``` + +``` +$ ansible-galaxy install -r requirements.yml +``` + +Alternatively you could download the source by setting the repository in your `requirements.yml` file: + +```yml +- src: git+https://github.com/ontic/ansible-role-fonts.git + version: master + name: ontic.fonts +``` + +### 2.1 Enabling + +Enable the role in your playbook file. + +```yml +- name: Example web server + hosts: web_servers + roles: + - { role: ontic.fonts } +``` + +## Documentation + +Full documentation is available in the [docs](/docs) directory. + +## Contributors + +Below lists all individuals having contributed to the repository. If you would like to get involved, we encourage +you to do so by making a [pull](../../pulls) request or submitting an [issue](../../issues). + +* [Adam Dyson](https://github.com/adamdyson) + +## License + +Licensed under the BSD License. See the [LICENSE](/LICENSE) file for details. \ No newline at end of file diff --git a/roles/ontic.fonts/defaults/main.yml b/roles/ontic.fonts/defaults/main.yml new file mode 100755 index 0000000..e7021fb --- /dev/null +++ b/roles/ontic.fonts/defaults/main.yml @@ -0,0 +1,7 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +fonts_shared: +fonts_user: \ No newline at end of file diff --git a/roles/ontic.fonts/docs/README.md b/roles/ontic.fonts/docs/README.md new file mode 100755 index 0000000..6597eab --- /dev/null +++ b/roles/ontic.fonts/docs/README.md @@ -0,0 +1,20 @@ +# Documentation + +## Example + +``` +fonts_shared: + - type: 'truetype' + src: 'Fabulous.ttf' + dest: 'dafont/Fabulous.ttf' +fonts_user: + - name: 'johndoe' + type: 'opentype' + src: 'Aulyars.otf' + dest: 'dafont/Aulyars.otf' +``` + +## Role Variables + +Available variables are listed below, along with default values (see [defaults/main.yml](/defaults/main.yml)): + diff --git a/roles/ontic.fonts/handlers/main.yml b/roles/ontic.fonts/handlers/main.yml new file mode 100755 index 0000000..fa8cb6b --- /dev/null +++ b/roles/ontic.fonts/handlers/main.yml @@ -0,0 +1,8 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +- name: 'rebuild fonts cache' + become: yes + shell: 'fc-cache -v -f' \ No newline at end of file diff --git a/roles/ontic.fonts/meta/.galaxy_install_info b/roles/ontic.fonts/meta/.galaxy_install_info new file mode 100755 index 0000000..d6f6c06 --- /dev/null +++ b/roles/ontic.fonts/meta/.galaxy_install_info @@ -0,0 +1 @@ +{install_date: 'Fri Jan 10 18:39:38 2020', version: v2.4.0} diff --git a/roles/ontic.fonts/meta/main.yml b/roles/ontic.fonts/meta/main.yml new file mode 100755 index 0000000..313594a --- /dev/null +++ b/roles/ontic.fonts/meta/main.yml @@ -0,0 +1,31 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +dependencies: [] + +galaxy_info: + author: 'Adam Dyson' + description: 'This role installs fonts on RedHat/CentOS and Debian/Ubuntu Linux servers.' + company: 'Ontic' + license: 'BSD-3-Clause' + min_ansible_version: '2.4' + platforms: + - name: 'Ubuntu' + versions: + - 'xenial' + - 'bionic' + - name: 'Debian' + versions: + - 'stretch' + - name: 'EL' + versions: + - '7' + galaxy_tags: + - 'ontic' + - 'system' + - 'typography' + - 'font' + - 'truetype' + - 'opentype' \ No newline at end of file diff --git a/roles/ontic.fonts/tasks/configure.yml b/roles/ontic.fonts/tasks/configure.yml new file mode 100755 index 0000000..dd53a16 --- /dev/null +++ b/roles/ontic.fonts/tasks/configure.yml @@ -0,0 +1,52 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +- name: 'Fonts | Configure shared font directories.' + become: yes + file: + path: '/usr/local/share/fonts/{{ item.type }}/{{ item.dest | dirname }}' + state: 'directory' + group: 'root' + owner: 'root' + mode: '0755' + with_items: '{{ fonts_shared }}' + when: 'fonts_shared | default(None) != None' + +- name: 'Fonts | Configure shared fonts.' + become: yes + copy: + src: '{{ item.src }}' + dest: '/usr/local/share/fonts/{{ item.type }}/{{ item.dest }}' + owner: 'root' + group: 'root' + mode: '0644' + register: 'fonts_shared_installed' + notify: 'rebuild fonts cache' + with_items: '{{ fonts_shared }}' + when: 'fonts_shared | default(None) != None' + +- name: 'Fonts | Configure user font directories.' + become: yes + file: + path: '/home/{{ item.name }}/.fonts/{{ item.type }}/{{ item.dest | dirname }}' + state: 'directory' + owner: '{{ item.owner | default(item.name) }}' + group: '{{ item.group | default(omit) }}' + mode: '0755' + with_items: '{{ fonts_user }}' + when: 'fonts_user | default(None) != None' + +- name: 'Fonts | Configure user fonts.' + become: yes + copy: + src: '{{ item.src }}' + dest: '/home/{{ item.name }}/.fonts/{{ item.type }}/{{ item.dest }}' + owner: '{{ item.owner | default(item.name) }}' + group: '{{ item.group | default(omit) }}' + mode: '{{ item.mode | default(omit) }}' + register: 'fonts_user_installed' + notify: 'rebuild fonts cache' + with_items: '{{ fonts_user }}' + when: 'fonts_user | default(None) != None' \ No newline at end of file diff --git a/roles/ontic.fonts/tasks/main.yml b/roles/ontic.fonts/tasks/main.yml new file mode 100755 index 0000000..7c6e20d --- /dev/null +++ b/roles/ontic.fonts/tasks/main.yml @@ -0,0 +1,28 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +- name: 'Fonts | Include OS-specific variables.' + include_vars: '{{ item }}' + with_first_found: + - '{{ ansible_distribution }}.yml' + - '{{ ansible_os_family }}.yml' + tags: + - 'fonts' + - 'fonts-package' + - 'fonts-configure' + - 'package' + - 'configure' + +- import_tasks: 'package.yml' + tags: + - 'fonts' + - 'fonts-package' + - 'package' + +- import_tasks: 'configure.yml' + tags: + - 'fonts' + - 'fonts-configure' + - 'configure' \ No newline at end of file diff --git a/roles/ontic.fonts/tasks/package.yml b/roles/ontic.fonts/tasks/package.yml new file mode 100755 index 0000000..4c1f052 --- /dev/null +++ b/roles/ontic.fonts/tasks/package.yml @@ -0,0 +1,78 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +- name: 'Fonts | Debian | Install HTTPS transport.' + become: yes + apt: + name: 'apt-transport-https' + state: 'latest' + when: 'ansible_os_family == "Debian"' + +- name: 'Fonts | Debian | Update repository list.' + become: yes + apt_repository: + repo: '{{ item }}' + state: 'present' + update_cache: false + register: 'fonts_multiverse_installed' + notify: 'rebuild fonts cache' + with_items: '{{ fonts_repositories }}' + when: 'ansible_distribution == "Debian"' + +- name: 'Fonts | Debian | Update APT cache.' + become: yes + apt: + update_cache: yes + when: 'ansible_os_family == "Debian" and fonts_multiverse_installed.changed' + +- name: 'Fonts | Debian | Install Microsoft Core Fonts prerequisites.' + become: yes + apt: + name: '{{ item }}' + state: 'present' + with_items: + - 'libfreetype6' + - 'libfreetype6-dev' + - 'fontconfig' + when: 'ansible_os_family == "Debian"' + +- name: 'Fonts | Debian | Accept Microsoft Core Fonts EULA.' + become: yes + debconf: + name: 'ttf-mscorefonts-installer' + question: 'msttcorefonts/accepted-mscorefonts-eula' + value: 'true' + vtype: 'select' + when: 'ansible_os_family == "Debian"' + +- name: 'Fonts | Debian | Install Microsoft Core Fonts.' + become: yes + apt: + name: 'ttf-mscorefonts-installer' + state: 'present' + register: 'fonts_microsoft_installed' + notify: 'rebuild fonts cache' + when: 'ansible_os_family == "Debian"' + +- name: 'Fonts | RedHat | Install Microsoft Core Fonts prerequisites.' + become: yes + yum: + name: '{{ item }}' + state: 'present' + with_items: + - 'curl' + - 'cabextract' + - 'xorg-x11-font-utils' + - 'fontconfig' + when: 'ansible_os_family == "RedHat"' + +- name: 'Fonts | RedHat | Install Microsoft Core Fonts.' + become: yes + yum: + name: 'https://raw.githubusercontent.com/therevoman/mscorefonts2-code/master/RPMS/noarch/msttcore-fonts-installer-2.6-1.noarch.rpm' + state: 'present' + validate_certs: no + notify: 'rebuild fonts cache' + when: 'ansible_os_family == "RedHat"' \ No newline at end of file diff --git a/roles/ontic.fonts/tests/fonts/Aulyars.otf b/roles/ontic.fonts/tests/fonts/Aulyars.otf new file mode 100755 index 0000000..7a82d55 Binary files /dev/null and b/roles/ontic.fonts/tests/fonts/Aulyars.otf differ diff --git a/roles/ontic.fonts/tests/fonts/Fabulous.ttf b/roles/ontic.fonts/tests/fonts/Fabulous.ttf new file mode 100755 index 0000000..82a2acc Binary files /dev/null and b/roles/ontic.fonts/tests/fonts/Fabulous.ttf differ diff --git a/roles/ontic.fonts/tests/test-verify.sh b/roles/ontic.fonts/tests/test-verify.sh new file mode 100755 index 0000000..265fedd --- /dev/null +++ b/roles/ontic.fonts/tests/test-verify.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +# Verify the installed fonts. +docker exec --tty ${container_id} env TERM=xterm fc-list | grep true | sed -e "s|^.*/||" -e "s/:style=\(\<.*\>\).*$/ - \1/" -e "s/,.*$//" | sort \ No newline at end of file diff --git a/roles/ontic.fonts/tests/test.yml b/roles/ontic.fonts/tests/test.yml new file mode 100755 index 0000000..981967c --- /dev/null +++ b/roles/ontic.fonts/tests/test.yml @@ -0,0 +1,18 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +- hosts: 'localhost' + vars: + fonts_shared: + - type: 'truetype' + src: '{{ role_path }}/tests/fonts/Fabulous.ttf' + dest: 'dafont/Fabulous.ttf' + fonts_user: + - name: 'root' + type: 'opentype' + src: '{{ role_path }}/tests/fonts/Aulyars.otf' + dest: 'dafont/Aulyars.otf' + roles: + - { role: 'role_under_test' } \ No newline at end of file diff --git a/roles/ontic.fonts/vars/Debian.yml b/roles/ontic.fonts/vars/Debian.yml new file mode 100755 index 0000000..5d57aea --- /dev/null +++ b/roles/ontic.fonts/vars/Debian.yml @@ -0,0 +1,8 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +fonts_repositories: + - 'deb http://ftp.debian.org/debian/ stable main non-free contrib' + - 'deb-src http://ftp.debian.org/debian/ stable main non-free contrib' \ No newline at end of file diff --git a/roles/ontic.fonts/vars/RedHat.yml b/roles/ontic.fonts/vars/RedHat.yml new file mode 100755 index 0000000..110f95e --- /dev/null +++ b/roles/ontic.fonts/vars/RedHat.yml @@ -0,0 +1,5 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + diff --git a/roles/ontic.fonts/vars/Ubuntu.yml b/roles/ontic.fonts/vars/Ubuntu.yml new file mode 100755 index 0000000..a76f6fa --- /dev/null +++ b/roles/ontic.fonts/vars/Ubuntu.yml @@ -0,0 +1,10 @@ +# Copyright (c) Ontic. (http://www.ontic.com.au). All rights reserved. +# See the COPYING file bundled with this package for license details. + +--- + +fonts_repositories: + - 'deb http://archive.ubuntu.com/ubuntu {{ ansible_distribution_release }} multiverse' + - 'deb-src http://archive.ubuntu.com/ubuntu {{ ansible_distribution_release }} multiverse' + - 'deb http://archive.ubuntu.com/ubuntu {{ ansible_distribution_release }}-updates multiverse' + - 'deb-src http://archive.ubuntu.com/ubuntu {{ ansible_distribution_release }}-updates multiverse' \ No newline at end of file diff --git a/roles/weareinteractive.apt/.ansible-lint b/roles/weareinteractive.apt/.ansible-lint new file mode 100755 index 0000000..cf73c0e --- /dev/null +++ b/roles/weareinteractive.apt/.ansible-lint @@ -0,0 +1,2 @@ +exclude_paths: + - ./meta/readme.yml diff --git a/roles/weareinteractive.apt/.clog.toml b/roles/weareinteractive.apt/.clog.toml new file mode 100755 index 0000000..275cebb --- /dev/null +++ b/roles/weareinteractive.apt/.clog.toml @@ -0,0 +1,4 @@ +[clog] +changelog = "CHANGELOG.md" +repository = "https://github.com/weareinteractive/ansible-apt" +from-latest-tag = true diff --git a/roles/weareinteractive.apt/.editorconfig b/roles/weareinteractive.apt/.editorconfig new file mode 100755 index 0000000..737f591 --- /dev/null +++ b/roles/weareinteractive.apt/.editorconfig @@ -0,0 +1,19 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] +# Change these settings to your own preference +indent_size = 2 +indent_style = space + +# We recommend you to keep these unchanged +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[Makefile] +indent_style = tab diff --git a/roles/weareinteractive.apt/.gitignore b/roles/weareinteractive.apt/.gitignore new file mode 100755 index 0000000..62f2449 --- /dev/null +++ b/roles/weareinteractive.apt/.gitignore @@ -0,0 +1,8 @@ +*.log +*.retry +.DS_Store +.vagrant +.vscode/* +!.vscode/settings.json +!.vscode/extensions.json +.idea diff --git a/roles/weareinteractive.apt/.travis.yml b/roles/weareinteractive.apt/.travis.yml new file mode 100755 index 0000000..0103b4c --- /dev/null +++ b/roles/weareinteractive.apt/.travis.yml @@ -0,0 +1,60 @@ +--- +sudo: required +language: python +services: + - docker +env: + global: + - role: weareinteractive.apt + matrix: + - distribution: Ubuntu + distribution_version: "18.04" + init: /lib/systemd/systemd + run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" + - distribution: Ubuntu + distribution_version: "16.04" + init: /lib/systemd/systemd + run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" + - distribution: Ubuntu + distribution_version: "14.04" + init: /sbin/init + run_opts: "" + - distribution: Debian + distribution_version: "9" + init: /lib/systemd/systemd + run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" + - distribution: Debian + distribution_version: "8" + init: /lib/systemd/systemd + run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" + +before_install: + - sudo apt-get update + - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce + - docker pull ansiblecheck/ansiblecheck:"${distribution,,}"-"${distribution_version}" + +script: + - container_id=$(mktemp) + # Start The Built Container In The Background + - docker run -d -v "${PWD}":/etc/ansible/roles/${role}:ro ${run_opts} ansiblecheck/ansiblecheck:"${distribution,,}"-"${distribution_version}" "${init}" > "${container_id}" + + # Print ansible version + - docker exec -t "$(cat ${container_id})" env TERM=xterm ansible --version + + # Ansible syntax check. + - 'docker exec -t "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/${role}/tests/main.yml --syntax-check' + + # Test role. + - 'docker exec "$(cat ${container_id})" env ANSIBLE_FORCE_COLOR=1 ansible-playbook /etc/ansible/roles/${role}/tests/main.yml' + + # Test Idempotence + - idempotence=$(mktemp) + - docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/${role}/tests/main.yml | tee -a ${idempotence} + - > + tail ${idempotence} + | grep -q 'failed=0' + && (echo 'Idempotence test: pass' && exit 0) + || (echo 'Idempotence test: fail' && exit 1) + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/roles/weareinteractive.apt/.vscode/extensions.json b/roles/weareinteractive.apt/.vscode/extensions.json new file mode 100755 index 0000000..dd8f125 --- /dev/null +++ b/roles/weareinteractive.apt/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "vscoss.vscode-ansible" + ] +} diff --git a/roles/weareinteractive.apt/.vscode/settings.json b/roles/weareinteractive.apt/.vscode/settings.json new file mode 100755 index 0000000..237ad63 --- /dev/null +++ b/roles/weareinteractive.apt/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "*.yml": "ansible" + } +} diff --git a/roles/weareinteractive.apt/CHANGELOG.md b/roles/weareinteractive.apt/CHANGELOG.md new file mode 100755 index 0000000..616dcea --- /dev/null +++ b/roles/weareinteractive.apt/CHANGELOG.md @@ -0,0 +1,230 @@ + +### 2.9.1 (2019-12-08) + + +#### Bug Fixes + +* fix lint error ([65f889bd](https://github.com/weareinteractive/ansible-apt/commit/65f889bd07e3a7fd33e7df42023e7543b8af7c4a)) + + + + +## 2.9.0 (2019-12-08) + + +#### Bug Fixes + +* fix logic with apt_remove_recommends variable ([eaea78e1](https://github.com/weareinteractive/ansible-apt/commit/eaea78e1fb43f86b2a27db23ba121e805de8d835)) + + + + +## 2.8.0 (2019-10-18) + + +#### Features + +* remove depricated apt_remount_filesystem ([7ca12fb4](https://github.com/weareinteractive/ansible-apt/commit/7ca12fb483e0cd8272589e5b1393e4c74611fb2a)) + + + + +## 2.7.0 (2019-09-16) + + +#### Features + +* extend unattended update config Merge branch 'pbessonies-feature/update_unattended_template' ([7b2c0e4f](https://github.com/weareinteractive/ansible-apt/commit/7b2c0e4fadf07feb8ef3a97425a282b38315a44b)) + + + + +### 2.6.1 (2019-09-16) + + +#### Bug Fixes + +* ensure unattended-upgrades package installation ([03740eea](https://github.com/weareinteractive/ansible-apt/commit/03740eea70fdf744256e708798ea048be22a2a9e)) + +#### Features + +* add bool check ([1f9f71d3](https://github.com/weareinteractive/ansible-apt/commit/1f9f71d32df59563ebb2fb40b82ddc2e916e9de8)) + + + + +### 2.5.1 (2019-06-17) + + +#### Features + +* update syntax to ansible 2.8 ([fa5f8740](https://github.com/weareinteractive/ansible-apt/commit/fa5f87400d1d1db233bffcf8ced0b82c6460fd4d)) + + + + +## 2.5.0 (2018-12-12) + + +#### Features + +* add apt pinning ([349d5b09](https://github.com/weareinteractive/ansible-apt/commit/349d5b09a9b90513da4b66829eca1172da692e96)) +* added apt pinning ([d66994de](https://github.com/weareinteractive/ansible-apt/commit/d66994de87a291cb5a2ebfe2ed4867e290ad68fb)) + + + + +### 2.4.2 (2018-11-01) + + +#### Features + +* add options to apt_keys and apt_repositories ([f2ce4e0e](https://github.com/weareinteractive/ansible-apt/commit/f2ce4e0e6d41f539610adb34e0ac1093e482677c)) +* added options ([bb80fe88](https://github.com/weareinteractive/ansible-apt/commit/bb80fe8804ee2bac18065b89a8abcadc14f0ed9b)) + + + + +### 2.4.1 (2018-11-01) + + +#### Bug Fixes + +* fix deprication warning for ansible 2.7 and apt package loops ([556b6445](https://github.com/weareinteractive/ansible-apt/commit/556b6445e748004846c6e16248d9d92b69afd0c3)) + + + + +## 2.5.0 (2018-10-08) + + + + + +### 2.3.1 (2017-12-18) + + +#### Bug Fixes + +* rename missing include to include_tasks ([da051d29](https://github.com/weareinteractive/ansible-apt/commit/da051d29e279e48061e7e6b41f504a00f1508b16)) + + + + +## 2.3.0 (2017-12-18) + + +#### Features + +* upgrade tasks for ansible 2.4 ([6e5a1ca4](https://github.com/weareinteractive/ansible-apt/commit/6e5a1ca49a855e7c183446cb4a2d817d58bab59f)) + + + + +## 2.2.0 (2017-08-24) + + +#### Features + +* add option to alter solution cost ([cfaf694c](https://github.com/weareinteractive/ansible-apt/commit/cfaf694c6ea921e6d6209db0e851c84dd35c8fe2)) +* allow multiple file systems to be remounted ([5cb5a96c](https://github.com/weareinteractive/ansible-apt/commit/5cb5a96cfbdce66f7b5f4d2f7716e1e30279ac98)) + + + + +## 2.1.0 (2017-01-27) + + +#### Features + +* use builtin autoremove option ([87a34935](https://github.com/weareinteractive/ansible-apt/commit/87a34935874f78d4752f2557c9094496eb51a391)) + + + + +### 2.0.3 (2016-08-18) + + +#### Bug Fixes + +* fix proxy config conditions ([27787e80](https://github.com/weareinteractive/ansible-apt/commit/27787e80dc805a828af35b7206aae835e9d8b0aa)) + + + + +### 2.0.2 (2016-04-25) + + +#### Features + +* always get latest unattended-upgrades instead of just present ([a927d6af](https://github.com/weareinteractive/ansible-apt/commit/a927d6afbc0b35481c5eea3623cd5eebf7a3d415)) + + + + +### 2.0.1 (2016-03-22) + + +#### Features + +* escape bare variables ([96525b39](https://github.com/weareinteractive/ansible-apt/commit/96525b393671352973d81abfcb942272f70dc6bd)) + + + + +## 2.0.0 (2016-03-15) + + +#### Features + +* update to ansible 2.0 ([052bc675](https://github.com/weareinteractive/ansible-apt/commit/052bc675f01ded71c7bd9bd7e8154ecb2f600c4a)) + + + + +## 1.8.0 (2016-01-11) + + +#### Features + +* add support for proxy servers ([91ae92f5](https://github.com/weareinteractive/ansible-apt/commit/91ae92f56e7f3fa2f9851adc03235d3985dd7b7e)) + + + + +### 1.7.1 (2015-12-03) + + +#### Features + +* adds variables to configure apt ([3ec652be](https://github.com/weareinteractive/ansible-apt/commit/3ec652be9513b0d8b9b1bb7f317aa6a4c30256ff)) +* only adds 50unattended-upgrades config if enabled ([14742e5e](https://github.com/weareinteractive/ansible-apt/commit/14742e5ee87bf135edf8756ce9cd197ca65b346d)) +* updates travis tests ([2d1873da](https://github.com/weareinteractive/ansible-apt/commit/2d1873daec0e1b76e4bcafbb898ac63c4b12e91f)) +* using ansible-role to generate README ([3abe7246](https://github.com/weareinteractive/ansible-apt/commit/3abe72463af5d4d101570e233d497a96e910e4ea)) +* adds CHANGELOG ([5f4c6673](https://github.com/weareinteractive/ansible-apt/commit/5f4c66734445e239fb96faec557a6c5e708cd5b3)) + +#### Bug Fixes + +* fixes quotation marks on 'APT::Periodic::Enable' value ([bf19c900](https://github.com/weareinteractive/ansible-apt/commit/bf19c90034badb1173ad9b204d815d17cd33ba9d)) +* fixes the usage of unattended upgrades ([04f25734](https://github.com/weareinteractive/ansible-apt/commit/04f25734fa29aba48ec3f9461c9488785bfe8ae3)) + + + + +## 1.7.0 (2015-11-30) + + +#### Features + +* adds variables to configure apt ([3ec652be](https://github.com/weareinteractive/ansible-apt/commit/3ec652be9513b0d8b9b1bb7f317aa6a4c30256ff)) +* only adds 50unattended-upgrades config if enabled ([14742e5e](https://github.com/weareinteractive/ansible-apt/commit/14742e5ee87bf135edf8756ce9cd197ca65b346d)) +* updates travis tests ([2d1873da](https://github.com/weareinteractive/ansible-apt/commit/2d1873daec0e1b76e4bcafbb898ac63c4b12e91f)) +* using ansible-role to generate README ([3abe7246](https://github.com/weareinteractive/ansible-apt/commit/3abe72463af5d4d101570e233d497a96e910e4ea)) +* adds CHANGELOG ([5f4c6673](https://github.com/weareinteractive/ansible-apt/commit/5f4c66734445e239fb96faec557a6c5e708cd5b3)) + +#### Bug Fixes + +* fixes the usage of unattended upgrades ([04f25734](https://github.com/weareinteractive/ansible-apt/commit/04f25734fa29aba48ec3f9461c9488785bfe8ae3)) + + + diff --git a/roles/weareinteractive.apt/LICENSE b/roles/weareinteractive.apt/LICENSE new file mode 100755 index 0000000..90c58a9 --- /dev/null +++ b/roles/weareinteractive.apt/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) We Are Interactive + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/roles/weareinteractive.apt/Makefile b/roles/weareinteractive.apt/Makefile new file mode 100755 index 0000000..64dcc33 --- /dev/null +++ b/roles/weareinteractive.apt/Makefile @@ -0,0 +1,41 @@ +PWD=$(shell pwd) +ROLE_NAME=weareinteractive.apt +ROLE_PATH=/etc/ansible/roles/$(ROLE_NAME) +TEST_VERSION=ansible --version +TEST_SYNTAX=ansible-playbook -v -i 'localhost,' -c local $(ROLE_PATH)/tests/main.yml --syntax-check +TEST_PLAYBOOK=ansible-playbook -v -i 'localhost,' -c local $(ROLE_PATH)/tests/main.yml +TEST_IDEMPOTENT=$(TEST_PLAYBOOK) | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) || (echo 'Idempotence test: fail' && exit 1) +TEST_CMD=$(TEST_VERSION); $(TEST_SYNTAX); $(TEST_DEPS); $(TEST_PLAYBOOK); $(TEST_IDEMPOTENT) + +docs: + ansible-role docgen + +lint: + ansible-lint . + +ubuntu%: TEST_DEPS=apt-get update && \ + apt-get install -y python + +ubuntu18.04: dist=ubuntu-18.04 +ubuntu18.04: .run + +ubuntu16.04: dist=ubuntu-16.04 +ubuntu16.04: .run + +ubuntu14.04: dist=ubuntu-14.04 +ubuntu14.04: .run + +debian%: TEST_DEPS=apt-get update && \ + apt-get install -y python + +debian9: dist=debian-9 +debian9: .run + +debian8: dist=debian-8 +debian8: .run + +.run: + @echo "RUN:" + @echo " docker run -it --rm -v $(PWD):$(ROLE_PATH) ansiblecheck/ansiblecheck:$(dist) /bin/bash" + @echo " $(TEST_CMD)" + @docker run -it --rm -v $(PWD):$(ROLE_PATH) ansiblecheck/ansiblecheck:$(dist) /bin/bash -c "$(TEST_CMD)" diff --git a/roles/weareinteractive.apt/README.md b/roles/weareinteractive.apt/README.md new file mode 100755 index 0000000..a10470e --- /dev/null +++ b/roles/weareinteractive.apt/README.md @@ -0,0 +1,268 @@ +# Ansible weareinteractive.apt role + +[![Build Status](https://img.shields.io/travis/weareinteractive/ansible-apt.svg)](https://travis-ci.org/weareinteractive/ansible-apt) +[![Galaxy](http://img.shields.io/badge/galaxy-weareinteractive.apt-blue.svg)](https://galaxy.ansible.com/weareinteractive/apt) +[![GitHub Tags](https://img.shields.io/github/tag/weareinteractive/ansible-apt.svg)](https://github.com/weareinteractive/ansible-apt) +[![GitHub Stars](https://img.shields.io/github/stars/weareinteractive/ansible-apt.svg)](https://github.com/weareinteractive/ansible-apt) + +> `weareinteractive.apt` is an [Ansible](http://www.ansible.com) role which: +> +> * updates apt +> * cleans up apt +> * configures apt +> * installs packages +> * add repositories +> * add keys +> * apt pinning +> * manages unattended upgrades +> * optionally alters solution cost +> * optionally allows filesystems to be remounted + +**Note:** + +> Since Ansible Galaxy supports [organization](https://www.ansible.com/blog/ansible-galaxy-2-release) now, this role has moved from `franklinkim.apt` to `weareinteractive.apt`! + +## Installation + +Using `ansible-galaxy`: + +```shell +$ ansible-galaxy install weareinteractive.apt +``` + +Using `requirements.yml`: + +```yaml +- src: weareinteractive.apt +``` + +Using `git`: + +```shell +$ git clone https://github.com/weareinteractive/ansible-apt.git weareinteractive.apt +``` + +## Dependencies + +* Ansible >= 2.4 + +## Variables + +Here is a list of all the default variables for this role, which are also available in `defaults/main.yml`. + +```yaml +--- +# apt_unattended_upgrades_blacklist: +# - vim +# - libc6 +# apt_mails: +# - root +# - foo@dev.null +# apt_keys: +# - id: 473041FA +# file: /tmp/apt.gpg +# data: "{{ lookup('file', 'apt.asc') }}" +# keyring: /etc/apt/trusted.gpg.d/debian.gpg +# keyserver: keyserver.ubuntu.com +# url: https://ftp-master.debian.org/keys/archive-key-6.0.asc +# validate_certs: yes +# state: present +# apt_repositories: +# - codename: trusty +# filename: google-chrome +# mode: 0644 +# repo: 'ppa:nginx/stable' +# state: present +# update_cache: yes + + +# sets the amount of time the cache is valid +apt_cache_valid_time: 3600 +# upgrade system: safe | full | dist +apt_upgrade: no +# packages to install +apt_packages: [] +# remove packages that are no longer needed for dependencies +apt_autoremove: yes +# remove .deb files for packages no longer on your system +apt_autoclean: yes +# .deb packages to install. +apt_deb_packages: [] + +# whether or not suggested packages should be installed. +apt_install_suggests: no +# do not install Recommended packages by default +apt_install_recommends: no +# allow 'apt-get autoremove' to remove recommended packages +apt_remove_recommends: no +# Enable the update/upgrade script +apt_periodic: yes +# Do “apt-get update” automatically every n-days (0=disable) +apt_update_package_lists: 1 +# Do “apt-get upgrade –download-only” every n-days (0=disable) +apt_download_upgradeable_packages: 0 +# Do “apt-get autoclean” every n-days (0=disable) +apt_auto_clean_interval: 0 + +# enable unattended-upgrades +apt_unattended_upgrades: yes +# list of origins patterns to control which packages are upgraded +# replaces allowed-origins, kept for compatibility +apt_unattended_upgrades_origins: [] +# List of allowed-origins, default value kept for compatibility +# set to null to use origins-pattern +apt_unattended_upgrades_allowed: +- ${distro_id}:${distro_codename}-security +# list of packages to not update (regexp are supported) +apt_unattended_upgrades_blacklist: [] +# Split the upgrade into the smallest possible chunks so that +# they can be interrupted with SIGUSR1. This makes the upgrade +# a bit slower but it has the benefit that shutdown while a upgrade +# is running is possible (with a small delay) +apt_unattended_upgrades_minimal_steps: no +# Send email to this address for problems or packages upgrades +# If empty or unset then no email is sent, make sure that you +# have a working mail setup on your system. A package that provides +# 'mailx' must be installed. E.g. "user@example.com" +apt_mails: [] +# Set this value to "true" to get emails only on errors. Default +# is to always send a mail if Unattended-Upgrade::Mail is set +apt_unattended_upgrades_notify_error_only: yes +# Do automatic removal of new unused dependencies after the upgrade +# (equivalent to apt-get autoremove) +apt_unattended_upgrades_autoremove: yes +# Automatically reboot *WITHOUT CONFIRMATION* +# if the file /var/run/reboot-required is found after the upgrade +apt_unattended_upgrades_automatic_reboot: no +# Automatically reboot even if there are users currently logged in. +apt_unattended_upgrades_automatic_reboot_with_users: no +# If automatic reboot is enabled and needed, reboot at the specific +# time instead of immediately +# Values: now | 02:00 | ... +apt_unattended_upgrades_automatic_reboot_time: now +# Enable logging to syslog. +apt_unattended_upgrades_syslog_enable: no +# Specify syslog facility. +apt_unattended_upgrades_syslog_facility: daemon + +# Override download timer ? Default no +apt_unattended_upgrades_download_timer_override: null +# In case of override : +# apt_unattended_upgrades_download_timer_override: +# on_calendar_replace: (true|false) If true, delete default system schedule. If not, default and new schedules will be merged +# on_calendar: new schedule, see man systemd.time.7, example : 'Mon..Fri *-*-* 6:00' +# randomized_delay_sec: random delay in sec +# persistent: (true|false) +# See systemd.time.5 for random delay and persistent + +# Override upgrade timer the same way +apt_unattended_upgrades_upgrade_timer_override: null +# apt_unattended_upgrades_upgrade_timer_override: +# on_calendar_replace: +# on_calendar: +# randomized_delay_sec: +# persistent: + +# remount file system: currently supported options are rootfs and tmpfs +# tmpfs: remount tmp before running if mounted noexec +# rootfs: remount root filesystem r/w before running if mounted r/o +apt_remount_filesystems: [] + +# repositories to register +apt_repositories: [] +# gpg keys for external repositories +apt_keys: [] +# HTTP proxy server (optional) +# apt_http_proxy_address: +# HTTP pipeline depth (optional) +# apt_http_pipeline_depth: 5 + +# Change Aptitudes solution costs, default is not to change anything +# Mirror https://lists.debian.org/543FF3BD.1020609@zen.co.uk +# apt_aptitude_solution_cost: +# - priority +# - removals +# - canceled-actions +apt_aptitude_solution_cost: [] + +# List of preferences options. +# apt_preferences: +# - file: perl +# package: perl +# pin: "version 5.20*" +# priority: 1001 +apt_preferences: [] + +``` + +## Handlers + +These are the handlers that are defined in `handlers/main.yml`. + +```yaml +--- + +- name: reload systemd + systemd: + daemon_reload: true + +``` + + +## Usage + +This is an example playbook: + +```yaml +--- + +- hosts: all + become: yes + roles: + - weareinteractive.apt + vars: + apt_cache_valid_time: 7200 + apt_packages: + - vim + - tree + - ca-certificates + apt_deb_packages: + - "https://releases.hashicorp.com/vagrant/2.1.5/vagrant_2.1.5_x86_64.deb" + apt_mails: + - root + apt_preferences: + - file: perl + package: perl + pin: "version 5.20*" + priority: 1001 + apt_unattended_upgrades_notify_error_only: no + +``` + + +## Testing + +```shell +$ git clone https://github.com/weareinteractive/ansible-apt.git +$ cd ansible-apt +$ make test +``` + +## Contributing +In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests and examples for any new or changed functionality. + +1. Fork it +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create new Pull Request + +*Note: To update the `README.md` file please install and run `ansible-role`:* + +```shell +$ gem install ansible-role +$ ansible-role docgen +``` + +## License +Copyright (c) We Are Interactive under the MIT license. diff --git a/roles/weareinteractive.apt/defaults/main.yml b/roles/weareinteractive.apt/defaults/main.yml new file mode 100755 index 0000000..62e4c79 --- /dev/null +++ b/roles/weareinteractive.apt/defaults/main.yml @@ -0,0 +1,141 @@ +--- +# apt_unattended_upgrades_blacklist: +# - vim +# - libc6 +# apt_mails: +# - root +# - foo@dev.null +# apt_keys: +# - id: 473041FA +# file: /tmp/apt.gpg +# data: "{{ lookup('file', 'apt.asc') }}" +# keyring: /etc/apt/trusted.gpg.d/debian.gpg +# keyserver: keyserver.ubuntu.com +# url: https://ftp-master.debian.org/keys/archive-key-6.0.asc +# validate_certs: yes +# state: present +# apt_repositories: +# - codename: trusty +# filename: google-chrome +# mode: 0644 +# repo: 'ppa:nginx/stable' +# state: present +# update_cache: yes + + +# sets the amount of time the cache is valid +apt_cache_valid_time: 3600 +# upgrade system: safe | full | dist +apt_upgrade: no +# packages to install +apt_packages: [] +# remove packages that are no longer needed for dependencies +apt_autoremove: yes +# remove .deb files for packages no longer on your system +apt_autoclean: yes +# .deb packages to install. +apt_deb_packages: [] + +# whether or not suggested packages should be installed. +apt_install_suggests: no +# do not install Recommended packages by default +apt_install_recommends: no +# allow 'apt-get autoremove' to remove recommended packages +apt_remove_recommends: no +# Enable the update/upgrade script +apt_periodic: yes +# Do “apt-get update” automatically every n-days (0=disable) +apt_update_package_lists: 1 +# Do “apt-get upgrade –download-only” every n-days (0=disable) +apt_download_upgradeable_packages: 0 +# Do “apt-get autoclean” every n-days (0=disable) +apt_auto_clean_interval: 0 + +# enable unattended-upgrades +apt_unattended_upgrades: yes +# list of origins patterns to control which packages are upgraded +# replaces allowed-origins, kept for compatibility +apt_unattended_upgrades_origins: [] +# List of allowed-origins, default value kept for compatibility +# set to null to use origins-pattern +apt_unattended_upgrades_allowed: +- ${distro_id}:${distro_codename}-security +# list of packages to not update (regexp are supported) +apt_unattended_upgrades_blacklist: [] +# Split the upgrade into the smallest possible chunks so that +# they can be interrupted with SIGUSR1. This makes the upgrade +# a bit slower but it has the benefit that shutdown while a upgrade +# is running is possible (with a small delay) +apt_unattended_upgrades_minimal_steps: no +# Send email to this address for problems or packages upgrades +# If empty or unset then no email is sent, make sure that you +# have a working mail setup on your system. A package that provides +# 'mailx' must be installed. E.g. "user@example.com" +apt_mails: [] +# Set this value to "true" to get emails only on errors. Default +# is to always send a mail if Unattended-Upgrade::Mail is set +apt_unattended_upgrades_notify_error_only: yes +# Do automatic removal of new unused dependencies after the upgrade +# (equivalent to apt-get autoremove) +apt_unattended_upgrades_autoremove: yes +# Automatically reboot *WITHOUT CONFIRMATION* +# if the file /var/run/reboot-required is found after the upgrade +apt_unattended_upgrades_automatic_reboot: no +# Automatically reboot even if there are users currently logged in. +apt_unattended_upgrades_automatic_reboot_with_users: no +# If automatic reboot is enabled and needed, reboot at the specific +# time instead of immediately +# Values: now | 02:00 | ... +apt_unattended_upgrades_automatic_reboot_time: now +# Enable logging to syslog. +apt_unattended_upgrades_syslog_enable: no +# Specify syslog facility. +apt_unattended_upgrades_syslog_facility: daemon + +# Override download timer ? Default no +apt_unattended_upgrades_download_timer_override: null +# In case of override : +# apt_unattended_upgrades_download_timer_override: +# on_calendar_replace: (true|false) If true, delete default system schedule. If not, default and new schedules will be merged +# on_calendar: new schedule, see man systemd.time.7, example : 'Mon..Fri *-*-* 6:00' +# randomized_delay_sec: random delay in sec +# persistent: (true|false) +# See systemd.time.5 for random delay and persistent + +# Override upgrade timer the same way +apt_unattended_upgrades_upgrade_timer_override: null +# apt_unattended_upgrades_upgrade_timer_override: +# on_calendar_replace: +# on_calendar: +# randomized_delay_sec: +# persistent: + +# remount file system: currently supported options are rootfs and tmpfs +# tmpfs: remount tmp before running if mounted noexec +# rootfs: remount root filesystem r/w before running if mounted r/o +apt_remount_filesystems: [] + +# repositories to register +apt_repositories: [] +# gpg keys for external repositories +apt_keys: [] +# HTTP proxy server (optional) +# apt_http_proxy_address: +# HTTP pipeline depth (optional) +# apt_http_pipeline_depth: 5 + +# Change Aptitudes solution costs, default is not to change anything +# Mirror https://lists.debian.org/543FF3BD.1020609@zen.co.uk +# apt_aptitude_solution_cost: +# - priority +# - removals +# - canceled-actions +apt_aptitude_solution_cost: [] + +# List of preferences options. +# apt_preferences: +# - file: perl +# package: perl +# pin: "version 5.20*" +# priority: 1001 +apt_preferences: [] diff --git a/roles/weareinteractive.apt/handlers/main.yml b/roles/weareinteractive.apt/handlers/main.yml new file mode 100755 index 0000000..6f58378 --- /dev/null +++ b/roles/weareinteractive.apt/handlers/main.yml @@ -0,0 +1,5 @@ +--- + +- name: reload systemd + systemd: + daemon_reload: true diff --git a/roles/weareinteractive.apt/meta/.galaxy_install_info b/roles/weareinteractive.apt/meta/.galaxy_install_info new file mode 100755 index 0000000..3795c18 --- /dev/null +++ b/roles/weareinteractive.apt/meta/.galaxy_install_info @@ -0,0 +1,2 @@ +install_date: Sat Jan 11 17:32:26 2020 +version: 2.9.1 diff --git a/roles/weareinteractive.apt/meta/main.yml b/roles/weareinteractive.apt/meta/main.yml new file mode 100755 index 0000000..f12943b --- /dev/null +++ b/roles/weareinteractive.apt/meta/main.yml @@ -0,0 +1,142 @@ +--- +galaxy_info: + author: franklin + company: We Are Interactive + description: Configures apt and installs/updates packages + min_ansible_version: 2.4 + license: MIT + # Optionally specify the branch Galaxy will use when accessing the GitHub + # repo for this role. During role install, if no tags are available, + # Galaxy will use this branch. During import Galaxy will access files on + # this branch. If travis integration is cofigured, only notification for this + # branch will be accepted. Otherwise, in all cases, the repo's default branch + # (usually master) will be used. + github_branch: master + # + # Below are all platforms currently available. Just uncomment + # the ones that apply to your role. If you don't see your + # platform on this list, let us know and we'll get it added! + # + platforms: + #- name: EL + # versions: + # - all + # - 5 + # - 6 + # - 7 + #- name: GenericUNIX + # versions: + # - all + # - any + #- name: Solaris + # versions: + # - all + # - 10 + # - 11.0 + # - 11.1 + # - 11.2 + # - 11.3 + #- name: Fedora + # versions: + # - all + # - 16 + # - 17 + # - 18 + # - 19 + # - 20 + # - 21 + # - 22 + # - 23 + #- name: Windows + # versions: + # - all + # - 2012R2 + #- name: SmartOS + # versions: + # - all + # - any + #- name: opensuse + # versions: + # - all + # - 12.1 + # - 12.2 + # - 12.3 + # - 13.1 + # - 13.2 + #- name: Amazon + # versions: + # - all + # - 2013.03 + # - 2013.09 + #- name: GenericBSD + # versions: + # - all + # - any + #- name: FreeBSD + # versions: + # - all + # - 10.0 + # - 10.1 + # - 10.2 + # - 8.0 + # - 8.1 + # - 8.2 + # - 8.3 + # - 8.4 + # - 9.0 + # - 9.1 + # - 9.1 + # - 9.2 + # - 9.3 + - name: Ubuntu + versions: + - all + # - lucid + # - maverick + # - natty + # - oneiric + # - precise + # - quantal + # - raring + # - saucy + # - trusty + # - utopic + # - vivid + # - wily + #- name: SLES + # versions: + # - all + # - 10SP3 + # - 10SP4 + # - 11 + # - 11SP1 + # - 11SP2 + # - 11SP3 + #- name: GenericLinux + # versions: + # - all + # - any + - name: Debian + versions: + - all + # - etch + # - jessie + # - lenny + # - squeeze + # - wheezy + # + # List tags for your role here, one per line. A tag is + # a keyword that describes and categorizes the role. + # Users find roles by searching for tags. Be sure to + # remove the '[]' above if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of + # alphanumeric characters. Maximum 20 tags per role. + galaxy_tags: + - system + - apt +# List your role dependencies here, one per line. Only +# dependencies available via galaxy should be listed here. +# Be sure to remove the '[]' above if you add dependencies +# to this list. +dependencies: [] diff --git a/roles/weareinteractive.apt/meta/readme.yml b/roles/weareinteractive.apt/meta/readme.yml new file mode 100755 index 0000000..bfada23 --- /dev/null +++ b/roles/weareinteractive.apt/meta/readme.yml @@ -0,0 +1,25 @@ +--- + +galaxy_name: weareinteractive.apt +github_user: weareinteractive +github_name: ansible-apt +badges: | + [![Build Status](https://img.shields.io/travis/weareinteractive/ansible-apt.svg)](https://travis-ci.org/weareinteractive/ansible-apt) + [![Galaxy](http://img.shields.io/badge/galaxy-weareinteractive.apt-blue.svg)](https://galaxy.ansible.com/weareinteractive/apt) + [![GitHub Tags](https://img.shields.io/github/tag/weareinteractive/ansible-apt.svg)](https://github.com/weareinteractive/ansible-apt) + [![GitHub Stars](https://img.shields.io/github/stars/weareinteractive/ansible-apt.svg)](https://github.com/weareinteractive/ansible-apt) +description: | + > * updates apt + > * cleans up apt + > * configures apt + > * installs packages + > * add repositories + > * add keys + > * apt pinning + > * manages unattended upgrades + > * optionally alters solution cost + > * optionally allows filesystems to be remounted + + **Note:** + + > Since Ansible Galaxy supports [organization](https://www.ansible.com/blog/ansible-galaxy-2-release) now, this role has moved from `franklinkim.apt` to `weareinteractive.apt`! diff --git a/roles/weareinteractive.apt/tasks/config.yml b/roles/weareinteractive.apt/tasks/config.yml new file mode 100755 index 0000000..093b932 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/config.yml @@ -0,0 +1,65 @@ +--- + +- name: Configuring APT + template: + src: "{{ item }}.j2" + dest: "/{{ item }}" + owner: "root" + group: "root" + mode: "0644" + with_items: + - "etc/apt/apt.conf.d/10general" + - "etc/apt/apt.conf.d/10periodic" + +- name: Configuring APT + template: + src: "{{ item }}.j2" + dest: "/{{ item }}" + owner: "root" + group: "root" + mode: "0644" + when: apt_unattended_upgrades | bool + with_items: + - "etc/apt/apt.conf.d/50unattended-upgrades" + +- name: Configuring APT Download timer + include_tasks: unattended_upgrades_download_timer.yml + when: apt_unattended_upgrades_download_timer_override is not none + +- name: Configuring APT Upgrade timer + include_tasks: unattended_upgrades_upgrade_timer.yml + when: apt_unattended_upgrades_upgrade_timer_override is not none + +- name: Configuring remount filesystems + template: + src: "etc/apt/apt.conf.d/10remount_{{ item }}.j2" + dest: "/etc/apt/apt.conf.d/10remount_{{ item }}" + owner: "root" + group: "root" + mode: "0644" + when: apt_remount_filesystems | bool + with_items: + - "{{ apt_remount_filesystems }}" + +- name: Configuring APT proxy behavior + template: + src: "{{ item }}.j2" + dest: "/{{ item }}" + owner: "root" + group: "root" + mode: "0644" + when: apt_http_proxy_address is defined or apt_https_proxy_address is defined + with_items: + - "etc/apt/apt.conf.d/00proxy" + +- name: Alter Aptitude solution costs + template: + src: "{{ item }}.j2" + dest: "/{{ item }}" + owner: "root" + group: "root" + mode: "0644" + when: apt_aptitude_solution_cost | bool + with_items: + - "etc/apt/apt.conf.d/20alter-aptitude-solution-cost" + diff --git a/roles/weareinteractive.apt/tasks/debs.yml b/roles/weareinteractive.apt/tasks/debs.yml new file mode 100755 index 0000000..db86c75 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/debs.yml @@ -0,0 +1,7 @@ +--- + +- name: Installing .deb packages + apt: + deb: "{{ item }}" + autoremove: "{{ apt_autoremove }}" + with_items: "{{ apt_deb_packages }}" diff --git a/roles/weareinteractive.apt/tasks/dependencies.yml b/roles/weareinteractive.apt/tasks/dependencies.yml new file mode 100755 index 0000000..b38e89e --- /dev/null +++ b/roles/weareinteractive.apt/tasks/dependencies.yml @@ -0,0 +1,11 @@ +--- + +- name: Installing required packages + apt: + name: "{{ packages }}" + state: present + vars: + packages: + - aptitude + - python-apt + - python-pycurl diff --git a/roles/weareinteractive.apt/tasks/install.yml b/roles/weareinteractive.apt/tasks/install.yml new file mode 100755 index 0000000..c2dc062 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/install.yml @@ -0,0 +1,6 @@ +--- + +- include_tasks: update.yml +- include_tasks: upgrade.yml +- include_tasks: dependencies.yml +- include_tasks: unattended_upgrades.yml diff --git a/roles/weareinteractive.apt/tasks/keys.yml b/roles/weareinteractive.apt/tasks/keys.yml new file mode 100755 index 0000000..b312be3 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/keys.yml @@ -0,0 +1,13 @@ +--- + +- name: Adding apt signing key + apt_key: + id: "{{ item.id | default(omit) }}" + file: "{{ item.file | default(omit) }}" + data: "{{ item.data | default(omit) }}" + keyring: "{{ item.keyring | default(omit) }}" + keyserver: "{{ item.keyserver | default(omit) }}" + url: "{{ item.url | default(omit) }}" + validate_certs: "{{ item.validate_certs | default(omit) }}" + state: "{{ item.state | default('present') }}" + with_items: "{{ apt_keys }}" diff --git a/roles/weareinteractive.apt/tasks/main.yml b/roles/weareinteractive.apt/tasks/main.yml new file mode 100755 index 0000000..be5a7eb --- /dev/null +++ b/roles/weareinteractive.apt/tasks/main.yml @@ -0,0 +1,22 @@ +--- + +- import_tasks: config.yml + tags: + - system + - apt + - config + - apt-config + +- import_tasks: install.yml + tags: + - system + - apt + - install + - apt-install + +- import_tasks: manage.yml + tags: + - system + - apt + - manage + - apt-manage diff --git a/roles/weareinteractive.apt/tasks/manage.yml b/roles/weareinteractive.apt/tasks/manage.yml new file mode 100755 index 0000000..49ad1ec --- /dev/null +++ b/roles/weareinteractive.apt/tasks/manage.yml @@ -0,0 +1,7 @@ +--- + +- include_tasks: keys.yml +- include_tasks: repositories.yml +- include_tasks: preferences.yml +- include_tasks: packages.yml +- include_tasks: debs.yml diff --git a/roles/weareinteractive.apt/tasks/packages.yml b/roles/weareinteractive.apt/tasks/packages.yml new file mode 100755 index 0000000..5305f32 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/packages.yml @@ -0,0 +1,7 @@ +--- + +- name: Installing packages + apt: + name: "{{ apt_packages }}" + state: present + autoremove: "{{ apt_autoremove }}" diff --git a/roles/weareinteractive.apt/tasks/preferences.yml b/roles/weareinteractive.apt/tasks/preferences.yml new file mode 100755 index 0000000..4ad12b5 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/preferences.yml @@ -0,0 +1,10 @@ +--- + +- name: Configuring APT preferences + template: + src: etc/apt/preferences.d/preferences.j2 + dest: "/etc/apt/preferences.d/{{ item.file }}" + owner: root + group: root + mode: 0644 + with_items: "{{ apt_preferences }}" diff --git a/roles/weareinteractive.apt/tasks/repositories.yml b/roles/weareinteractive.apt/tasks/repositories.yml new file mode 100755 index 0000000..bd14ca7 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/repositories.yml @@ -0,0 +1,11 @@ +--- + +- name: Adding apt repository + apt_repository: + codename: "{{ item.codename | default(omit) }}" + filename: "{{ item.filename | default(omit) }}" + mode: "{{ item.mode | default(omit) }}" + repo: "{{ item.repo | default(omit) }}" + state: "{{ item.state | default(omit) }}" + update_cache: "{{ item.update_cache | default('yes') }}" + with_items: "{{ apt_repositories }}" diff --git a/roles/weareinteractive.apt/tasks/unattended_upgrades.yml b/roles/weareinteractive.apt/tasks/unattended_upgrades.yml new file mode 100755 index 0000000..58a11e3 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/unattended_upgrades.yml @@ -0,0 +1,7 @@ +--- + +- name: Installing packages + apt: + pkg: "unattended-upgrades" + state: "{{ 'latest' if apt_unattended_upgrades else 'absent' }}" + when: apt_unattended_upgrades | bool diff --git a/roles/weareinteractive.apt/tasks/unattended_upgrades_download_timer.yml b/roles/weareinteractive.apt/tasks/unattended_upgrades_download_timer.yml new file mode 100755 index 0000000..852d891 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/unattended_upgrades_download_timer.yml @@ -0,0 +1,20 @@ +--- + +- name: Creating Download timer directory + file: + path: "/etc/systemd/system/apt-daily.timer.d" + state: directory + owner: root + group: root + mode: "0755" + +- name: Configuring Download timer + template: + src: "{{ item }}.j2" + dest: "/{{ item }}" + owner: "root" + group: "root" + mode: "0644" + with_items: + - "etc/systemd/system/apt-daily.timer.d/override.conf" + notify: reload systemd diff --git a/roles/weareinteractive.apt/tasks/unattended_upgrades_upgrade_timer.yml b/roles/weareinteractive.apt/tasks/unattended_upgrades_upgrade_timer.yml new file mode 100755 index 0000000..f7084e2 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/unattended_upgrades_upgrade_timer.yml @@ -0,0 +1,20 @@ +--- + +- name: Creating Upgrade timer directory + file: + path: "/etc/systemd/system/apt-daily-upgrade.timer.d" + state: directory + owner: root + group: root + mode: "0755" + +- name: Configuring Upgrade timer + template: + src: "{{ item }}.j2" + dest: "/{{ item }}" + owner: "root" + group: "root" + mode: "0644" + with_items: + - "etc/systemd/system/apt-daily-upgrade.timer.d/override.conf" + notify: reload systemd diff --git a/roles/weareinteractive.apt/tasks/update.yml b/roles/weareinteractive.apt/tasks/update.yml new file mode 100755 index 0000000..01e4663 --- /dev/null +++ b/roles/weareinteractive.apt/tasks/update.yml @@ -0,0 +1,6 @@ +--- + +- name: Updating cache + apt: + update_cache: yes + cache_valid_time: "{{ apt_cache_valid_time }}" diff --git a/roles/weareinteractive.apt/tasks/upgrade.yml b/roles/weareinteractive.apt/tasks/upgrade.yml new file mode 100755 index 0000000..06589bc --- /dev/null +++ b/roles/weareinteractive.apt/tasks/upgrade.yml @@ -0,0 +1,8 @@ +--- + +- name: Upgrading system + apt: + upgrade: "{{ apt_upgrade }}" + update_cache: yes + autoremove: "{{ apt_autoremove }}" + when: (apt_upgrade == "safe") or (apt_upgrade == "full") or (apt_upgrade == "dist") diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/00proxy.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/00proxy.j2 new file mode 100755 index 0000000..845dfc6 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/00proxy.j2 @@ -0,0 +1,11 @@ +// {{ ansible_managed }} + +{% if apt_http_proxy_address is defined and apt_http_proxy_address %} +Acquire::http::Proxy "{{ apt_http_proxy_address }}"; +{% endif %} +{% if apt_https_proxy_address is defined and apt_https_proxy_address %} +Acquire::https::Proxy "{{ apt_https_proxy_address }}"; +{% endif %} +{% if apt_http_pipeline_depth is defined and apt_http_pipeline_depth %} +Acquire::http::Pipeline-Depth "{{ apt_http_pipeline_depth }}"; +{% endif %} diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10general.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10general.j2 new file mode 100755 index 0000000..4a37885 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10general.j2 @@ -0,0 +1,12 @@ +// {{ ansible_managed }} + +// Install Recommended packages by default +APT::Install-Recommends "{{ apt_install_recommends | to_nice_json }}"; + +// Allow 'apt-get autoremove' to remove recommended packages +APT::AutoRemove::RecommendsImportant "{{ "false" if apt_remove_recommends else "true" }}"; + +// Install Suggested packages by default +APT::Install-Suggests "{{ apt_install_suggests | to_nice_json }}"; + +APT::Get::Show-Upgraded "true"; diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10periodic.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10periodic.j2 new file mode 100755 index 0000000..9e27ea9 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10periodic.j2 @@ -0,0 +1,18 @@ +// {{ ansible_managed }} + +// Enable the update/upgrade script (0=disable) +APT::Periodic::Enable "{{ apt_periodic | int}}"; + +// Do “apt-get update” automatically every n-days (0=disable) +APT::Periodic::Update-Package-Lists "{{ apt_update_package_lists }}"; + +// Do “apt-get upgrade –download-only” every n-days (0=disable) +APT::Periodic::Download-Upgradeable-Packages "{{ apt_download_upgradeable_packages }}"; + +// Do “apt-get autoclean” every n-days (0=disable) +APT::Periodic::AutocleanInterval "{{ apt_auto_clean_interval }}"; + +// Run the “unattended-upgrade” security upgrade script every n-days (0=disabled) +// Requires the package “unattended-upgrades” and will write +// a log in /var/log/unattended-upgrades +APT::Periodic::Unattended-Upgrade "{{ apt_unattended_upgrades | int }}"; diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10remount_rootfs.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10remount_rootfs.j2 new file mode 100755 index 0000000..ff5b69b --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10remount_rootfs.j2 @@ -0,0 +1,7 @@ +// {{ ansible_managed }} + +DPkg { + // Auto re-mounting of a readonly / + Pre-Invoke { "mount -o remount,rw LABEL=ROOTFS /"; }; + Post-Invoke { "test ${NO_APT_REMOUNT:-no} = yes || mount -o remount,ro LABEL=ROOTFS / || true"; }; +}; diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10remount_tmpfs.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10remount_tmpfs.j2 new file mode 100755 index 0000000..f89c3c1 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/10remount_tmpfs.j2 @@ -0,0 +1,7 @@ +// {{ ansible_managed }} + +DPkg { + // Auto re-mounting of a noexec /tmp since some packages desire exec + Pre-Invoke { "mount -o remount,exec /tmp"; }; + Post-Invoke { "test ${NO_APT_REMOUNT:-no} = yes || mount -o remount,noexec /tmp || true"; }; +}; diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/20alter-aptitude-solution-cost.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/20alter-aptitude-solution-cost.j2 new file mode 100755 index 0000000..afc0c25 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/20alter-aptitude-solution-cost.j2 @@ -0,0 +1,5 @@ +# {{ ansible_managed }} +Aptitude::ProblemResolver { + SolutionCost "{{ apt_aptitude_solution_cost | join(", ") }}"; +} + diff --git a/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/50unattended-upgrades.j2 b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/50unattended-upgrades.j2 new file mode 100755 index 0000000..80cdbca --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/apt.conf.d/50unattended-upgrades.j2 @@ -0,0 +1,76 @@ +// {{ ansible_managed }} + +// Unattended-Upgrade::Origins-Pattern controls which packages are +// upgraded. Replace Allowed-Origins +Unattended-Upgrade::Origins-Pattern { +{% for origin in apt_unattended_upgrades_origins %} + "{{ origin }}"; +{% endfor %} +}; + +// Automatically upgrade packages from these (origin:archive) pairs +Unattended-Upgrade::Allowed-Origins { +{% for allowed in apt_unattended_upgrades_allowed %} + "{{ allowed }}"; +{% endfor %} +}; + +// List of packages to not update (regexp are supported) +Unattended-Upgrade::Package-Blacklist { +{% for package in apt_unattended_upgrades_blacklist %} + "{{ package }}"; +{% endfor %} +}; + +// This option allows you to control if on a unclean dpkg exit +// unattended-upgrades will automatically run +// dpkg --force-confold --configure -a +// The default is true, to ensure updates keep getting installed +//Unattended-Upgrade::AutoFixInterruptedDpkg "false"; + +// Split the upgrade into the smallest possible chunks so that +// they can be interrupted with SIGUSR1. This makes the upgrade +// a bit slower but it has the benefit that shutdown while a upgrade +// is running is possible (with a small delay) +Unattended-Upgrade::MinimalSteps "{{ apt_unattended_upgrades_minimal_steps | to_nice_json }}"; + +// Install all unattended-upgrades when the machine is shuting down +// instead of doing it in the background while the machine is running +// This will (obviously) make shutdown slower +//Unattended-Upgrade::InstallOnShutdown "true"; + +// Send email to this address for problems or packages upgrades +// If empty or unset then no email is sent, make sure that you +// have a working mail setup on your system. A package that provides +// 'mailx' must be installed. E.g. "user@example.com" +Unattended-Upgrade::Mail "{{ apt_mails | join(',') }}"; + +// Set this value to "true" to get emails only on errors. Default +// is to always send a mail if Unattended-Upgrade::Mail is set +Unattended-Upgrade::MailOnlyOnError "{{ apt_unattended_upgrades_notify_error_only | to_nice_json }}"; + +// Do automatic removal of new unused dependencies after the upgrade +// (equivalent to apt-get autoremove) +Unattended-Upgrade::Remove-Unused-Dependencies "{{ apt_unattended_upgrades_autoremove | to_nice_json }}"; + +// Automatically reboot *WITHOUT CONFIRMATION* +// if the file /var/run/reboot-required is found after the upgrade +Unattended-Upgrade::Automatic-Reboot "{{ apt_unattended_upgrades_automatic_reboot | to_nice_json }}"; + +// Automatically reboot even if there are users currently logged in. +Unattended-Upgrade::Automatic-Reboot-WithUsers "{{ apt_unattended_upgrades_automatic_reboot_with_users | to_nice_json }}"; + +// If automatic reboot is enabled and needed, reboot at the specific +// time instead of immediately +// Default: "now" +Unattended-Upgrade::Automatic-Reboot-Time "{{ apt_unattended_upgrades_automatic_reboot_time }}"; + +// Use apt bandwidth limit feature, this example limits the download +// speed to 70kb/sec +//Acquire::http::Dl-Limit "70"; + +// Enable logging to syslog. Default is False +Unattended-Upgrade::SyslogEnable "{{ apt_unattended_upgrades_syslog_enable | to_nice_json }}"; + +// Specify syslog facility. Default is daemon +Unattended-Upgrade::SyslogFacility "{{ apt_unattended_upgrades_syslog_facility }}"; diff --git a/roles/weareinteractive.apt/templates/etc/apt/preferences.d/preferences.j2 b/roles/weareinteractive.apt/templates/etc/apt/preferences.d/preferences.j2 new file mode 100755 index 0000000..af8b5d8 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/apt/preferences.d/preferences.j2 @@ -0,0 +1,5 @@ +# {{ ansible_managed }} + +Package: {{ item.package | default('*') }} +Pin: {{ item.pin }} +Pin-Priority: {{ item.priority }} diff --git a/roles/weareinteractive.apt/templates/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf.j2 b/roles/weareinteractive.apt/templates/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf.j2 new file mode 100755 index 0000000..1266342 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf.j2 @@ -0,0 +1,13 @@ +[Timer] +{% if apt_unattended_upgrades_upgrade_timer_override.on_calendar_replace is defined and apt_unattended_upgrades_upgrade_timer_override.on_calendar_replace|bool %} +OnCalendar= +{% endif %} +{% if apt_unattended_upgrades_upgrade_timer_override.on_calendar is defined %} +OnCalendar={{ apt_unattended_upgrades_upgrade_timer_override.on_calendar }} +{% endif %} +{% if apt_unattended_upgrades_upgrade_timer_override.randomized_delay_sec is defined %} +RandomizedDelaySec={{ apt_unattended_upgrades_upgrade_timer_override.randomized_delay_sec }} +{% endif %} +{% if apt_unattended_upgrades_upgrade_timer_override.persistent is defined %} +Persistent={{ apt_unattended_upgrades_upgrade_timer_override.persistent }} +{% endif %} diff --git a/roles/weareinteractive.apt/templates/etc/systemd/system/apt-daily.timer.d/override.conf.j2 b/roles/weareinteractive.apt/templates/etc/systemd/system/apt-daily.timer.d/override.conf.j2 new file mode 100755 index 0000000..2bbdbf2 --- /dev/null +++ b/roles/weareinteractive.apt/templates/etc/systemd/system/apt-daily.timer.d/override.conf.j2 @@ -0,0 +1,13 @@ +[Timer] +{% if apt_unattended_upgrades_download_timer_override.on_calendar_replace is defined and apt_unattended_upgrades_download_timer_override.on_calendar_replace|bool %} +OnCalendar= +{% endif %} +{% if apt_unattended_upgrades_download_timer_override.on_calendar is defined %} +OnCalendar={{ apt_unattended_upgrades_download_timer_override.on_calendar }} +{% endif %} +{% if apt_unattended_upgrades_download_timer_override.randomized_delay_sec is defined %} +RandomizedDelaySec={{ apt_unattended_upgrades_download_timer_override.randomized_delay_sec }} +{% endif %} +{% if apt_unattended_upgrades_download_timer_override.persistent is defined %} +Persistent={{ apt_unattended_upgrades_download_timer_override.persistent }} +{% endif %} diff --git a/roles/weareinteractive.apt/tests/main.yml b/roles/weareinteractive.apt/tests/main.yml new file mode 100755 index 0000000..edd6910 --- /dev/null +++ b/roles/weareinteractive.apt/tests/main.yml @@ -0,0 +1,22 @@ +--- + +- hosts: all + become: yes + roles: + - weareinteractive.apt + vars: + apt_cache_valid_time: 7200 + apt_packages: + - vim + - tree + - ca-certificates + apt_deb_packages: + - "https://releases.hashicorp.com/vagrant/2.1.5/vagrant_2.1.5_x86_64.deb" + apt_mails: + - root + apt_preferences: + - file: perl + package: perl + pin: "version 5.20*" + priority: 1001 + apt_unattended_upgrades_notify_error_only: no