diff --git a/README.rst b/README.rst index 6f08e69..a9d0dac 100644 --- a/README.rst +++ b/README.rst @@ -47,8 +47,8 @@ Important Credentials *(passwords set at first boot)* ------------------------------------------- -- Webmin, Webshell, SSH, MySQL: username **root** -- Samba: username **administrator** +- Webmin, SSH: username **root** +- Samba/Windows AD: username **administrator** .. _TurnKey Core: https://www.turnkeylinux.org/core .. _Domain Controller documentation: https://www.turnkeylinux.org/docs/domain-controller diff --git a/changelog b/changelog index 91a8aa7..59c2eda 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,148 @@ +turnkey-domain-controller-19.0 (1) turnkey; urgency=low + + * Upgraded base distribution to Debian 13.x/Trixie. + + * Samba DNS forwarder now defaults to the host's existing upstream resolver + rather than being hardcoded to Google DNS (8.8.8.8) + + * Removed bundled legacy Windows Point-and-Print v3 print drivers; current + Windows blocks them by default (post-PrintNightmare) and CUPS ships + disabled by default. + + * domain-controller inithook fixes: + - Report the actual samba error (not a literal "{samba_run_out}") when + provisioning fails non-interactively. + - Validate nameserver IPs strictly (reject partial forms like "8.8"). + - Honour --join_ns as a join request when falling back to interactive mode + (previously it could create a new domain instead). + - Select a single IPv4 from 'hostname -I' for the samba interfaces option + and hosts file. + - Check nameserver reachability via TCP/53 rather than ICMP ping. + - Fix empty realm-segment validation and assorted dead-code cleanups. + + * Joining domain tested and confirmed working from Windows 11 Pro - 25H2 + (OS Build 26200.8875). + + * Replace TurnKey custom Debian-Installer based 'di-live' with new custom + TurnKey installer built from scratch; 'tkl-installer'. + + * Updated release signing keys & apt repo keys - now included as + 'turnkey-keys' deb package. + + * Replace legacy '.list' apt remote config files with Deb822 '.sources' + files. + + * "Proper" IPv6 support. May still have some gaps and still requires cosmetic + work but fully functional. + + * Improved fail2ban config: + - Increased default findtime (10 minutes) & bumped maxretry (3) to minimize + risk of user accidentally locking themself out. + - Removed redundant v18.x custom patches. + + * Include 'zstd' by default to support smaller initramfs that unpacks faster. + + * Replace 'ifupdown' with 'ifupdown-ng' (and 'ifupdown-ng-compat'). + + * Replace 'udhcpc' (IPv4 only) with 'dhcpcd-base' (dual stack ipv4/6). Also + include custom TurnKey config (if-pre-up & if-post-down scripts provided by + 'tkl-dhcpcd-ifupdown-glue') to ensure DHCP config is in sync with + /etc/network/interfaces file. + + * General code cleanup of TurnKey code; build code, build tools and TurnKey + custom tools & libraries. Updates include linting, formating and style + updates. Still WIP but solid start. + + * Configuration console (confconsole): + - Bugfixes: + - Support for firewall config when setting a static IP. Particularly + affected OpenVPN (which ships with firewall enabled by default). + Closes #2037. + - Fix Let's Encrypt integration failing back-to-back runs. Closes #2121. + - Features: + - "Proper" support for IPv6: + - Make ifutil.py module code "IPv6 aware", including reliable + management of /etc/network/interfaces with "inet6" stanza/s. + - Show IPv6 info on "usage" page - only shown if IPv6 configured. + Special thanks to Marcos: + https://github.com/marcos-mendez - https://popsolutions.co/ + - Misc clean up and improvements in code and packaging. See Confconsole + release notes for full details. + + * Firstboot Initialization (inithooks): + - Bugfixes: + - Ensure everyboot scripts only run once per boot. + - firstboot.d/15regen-sslcert: + - Only services which are already running need to be restarted as + restart is only to apply updated certs. + - firstboot.d/01ipconfig: + - Minor bugfix. + - Features/improvements and other changes of significance: + - Reimplement an 'inithooks.service' and refactor integration with + getty1. + - Delay start of inithooks/confconsole at boot time to reduce chance of + boot messages overwriting inithooks/confconsole. + - Developers - please note that hooks with a prefix less than '30' will + still run early, so should _always_ be non-interactive. + - TurnKey 'init-fence' (blocks web access at firstboot): + - Run by default on all builds pre firstboot initialization (previously + only enabled on "headless" builds). + - New pre-seed variable 'AUTO_RUN' to skip interactive config + (re-implements previous "headless" build functionality). + - Replace legacy init.d script with systemd + 'turnkey-init-fence.service' (& script which is called by the + service). + - Add support for 'systemctl reload turnkey-init-fence.service' - + which restarts 'simplehttpd.py' (init-fence mini web server) but does + not disable the firewall rules. + - Support for custom init-fence content. + - Update dynamically generated SSH information for IPv6 address + display. + - Add IPv6 support to mini server. + - Ensure inithook 'SEC_UPDATES' pre-seed variable test is case insensitive; + eliminates risk of unintended behavior when pre-seeding. + - Misc clean up and improvements in code and packaging. See Inithooks + release notes for full details. + + * Web management console (webmin): + - Upgraded Webmin to latest upstream. + - Refactored TurnKey Webmin packaging process to support easier updates; + with the intention of following upstream releases as closely as possible + (provided via TurnKey apt repo). + - Updated default Webmin config: + - Listen on IPv6 by default. + - Preconfigured IPv6 firewall matching IPv4 rules (but not enabled - as + per historical IPv4 default). + - Auto redirect http => https. + - Default 30 min user logout (can be overridden via login page "remember + me" checkbox or webmin "authentication" config). + - Updated logging paths and fixed log file rotation. + + * Backup (tklbam): + - Bugfixes: + - Fix broken help pager (not sure how long that has been broken!?). + - Fix broken tar command (deprecated functionality removed in Debian + Trixie). + - Features/improvements: + - Migrate core program and direct dependency python2 runtime from + cpython2 (EOL) to Pypy (still supported - packaged by TurnKey). + - Migrate all other components to python3. + Note: remaining python2 TKLBAM code port to python3 is in progress but + no ETA yet... + - Misc clean up and improvements in code and packaging. See TKLBAM release + notes for full details. + + * Misc code cleanup and improvements. + + -- Jeremy Davis Wed, 12 Aug 2026 09:30:26 +1000 + turnkey-domain-controller-18.1 (1) turnkey; urgency=low - * v18.1 rebuild - includes latest Debian & TurnKey packages. Despite auto - security updates, this rebuild is primarily to pre-install the updated - cups security package. + * v18.1 rebuild - includes latest Debian & TurnKey packages. Despite auto + security updates, this rebuild is primarily to pre-install the updated + cups security package. - * Disable cups by default and update landing page (tkl-webcp) and readme. + * Disable cups by default and update landing page (tkl-webcp) and readme. -- Jeremy Davis Tue, 01 Oct 2024 09:01:45 +0000 diff --git a/docs/ReleaseNotes b/docs/ReleaseNotes index 2680c39..d98969e 100644 --- a/docs/ReleaseNotes +++ b/docs/ReleaseNotes @@ -1,14 +1,13 @@ -Notes for Domain Controller appliance v14.0 -=========================================== +Notes for Domain Controller appliance +===================================== -As of v14.0 TurnKey's domain-controller (DC) appliance -uses Samba4 to provide a Microsoft Active Directory -domain. +TurnKey's domain-controller (DC) appliance uses Samba4 +to provide a Microsoft Active Directory domain. -However, the current v14.0 appliance is a bare-bones -AD server. It is provided as a "better starting point" -for those that wish to use Samba4 as an AD DC but is -far from being feature complete. +The appliance is a bare-bones AD server. It is provided +as a "better starting point" for those that wish to use +Samba4 as an AD DC but is far from being feature +complete. Steps that need to be taken when first launched: ------------------------------------------------ @@ -34,9 +33,10 @@ samba-tool dns zonecreate dc1 1.168.192.in-addr.arpa --username=administrator -- samba-tool dns add dom-controller 1.168.192.in-addr.arpa 192.168.1.50 PTR dc1.domain.lan --username=administrator --password="$ADMIN_PASS" - (optional) Adjust DNS forwarder in /etc/samba/smb.conf - -currently hardcoded to Google DNS (8.8.8.8) - -edit /etc/samba/smb.conf and adjust the field that - is currently "dns forwarder = 8.8.8.8" + -defaults to the host's upstream resolver detected at + provision time (falls back to 8.8.8.8 if none found) + -edit /etc/samba/smb.conf and adjust the + "dns forwarder = ..." field to suit For how to join a Windows Desktop to a AD domain see the Samba Wiki: https://wiki.samba.org/index.php/Joining_a_Windows_client_to_a_domain diff --git a/overlay/etc/confconsole/services.txt b/overlay/etc/confconsole/services.txt index c372637..8037b82 100644 --- a/overlay/etc/confconsole/services.txt +++ b/overlay/etc/confconsole/services.txt @@ -4,3 +4,6 @@ CUPS admin: https://$ipaddr:631 Webmin: https://$ipaddr:12321 SMB/CIFS: \\$ipaddr (ports 139/445) SSH/SFTP: root@$ipaddr (port 22) + +DNS to use when adding client + $ipaddr diff --git a/overlay/usr/lib/inithooks/bin/domain-controller.py b/overlay/usr/lib/inithooks/bin/domain-controller.py index 4104ef2..56a6018 100755 --- a/overlay/usr/lib/inithooks/bin/domain-controller.py +++ b/overlay/usr/lib/inithooks/bin/domain-controller.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 # Copyright (c) 2010 Alon Swartz - all rights reserved -# Copyright (c) 2011-2023 TurnKey GNU/Linux +# Copyright (c) 2011-2026 TurnKey GNU/Linux """Configure Samba AD domain, realm and administrator password Options: @@ -78,10 +78,10 @@ import shutil import getopt import socket +import ipaddress import time import subprocess from subprocess import PIPE, STDOUT -from string import digits, ascii_uppercase, ascii_lowercase, punctuation from libinithooks.dialog_wrapper import Dialog @@ -116,23 +116,44 @@ def error_msg(msg, interactive): def valid_ip(address): + # IPv4Address rejects partial/short forms (e.g. "8", "8.8") that the + # older socket.inet_aton() accepted and then wrote into resolv.conf. try: - socket.inet_aton(address) - return address - except OSError: + return str(ipaddress.IPv4Address(address)) + except ValueError: return False +def get_dns_forwarder(default='8.8.8.8'): + """Return the host's current upstream (non-loopback) IPv4 nameserver to + use as the samba DNS forwarder, falling back to a public resolver if none + can be determined. Must be read before resolv.conf is rewritten to point + at the local samba DNS, otherwise we'd just find 127.0.0.1.""" + try: + with open('/etc/resolv.conf') as fob: + for line in fob: + fields = line.split() + if len(fields) >= 2 and fields[0] == 'nameserver': + ns = valid_ip(fields[1]) + if ns and not ipaddress.IPv4Address(ns).is_loopback: + return ns + except FileNotFoundError: + pass + return default + + def validate_realm(realm, interactive): err = [] realm = realm.strip('.') if len(realm) > 255: err = error_msg("Realm must be less than 255 characters.", interactive) for bit in realm.split('.'): - if len(bit) < 0 or len(bit) > 63: + if len(bit) < 1 or len(bit) > 63: err = error_msg("All realm segments must be greater than 0 and" " less than 63 characters.", interactive) + # empty segment has no first char to validate below + continue regex = r'^[a-zA-Z0-9-]*$' if not bit[0].isalpha() or not re.fullmatch(regex, bit): err = error_msg("All realm segment characters must be" @@ -179,11 +200,22 @@ def validate_username(username, interactive): return (username) -def ping_client(fqdn): - proc = subprocess.run(['ping', '-c1', fqdn]) - if proc.returncode == 0: +def dns_reachable(nameserver, timeout=3): + """Check that a DNS server is reachable. Loopback is always treated as + reachable because during new-domain provisioning resolv.conf is pointed at + the not-yet-started local samba DNS. For a remote server, try a TCP + connection to port 53 - more reliable than ICMP, which is commonly + firewalled even when DNS itself answers.""" + ns = valid_ip(nameserver) + if not ns: + return False + if ipaddress.IPv4Address(ns).is_loopback: return True - return False + try: + with socket.create_connection((ns, 53), timeout=timeout): + return True + except OSError: + return False def check_dns(fqdn): @@ -251,9 +283,9 @@ def run_command(command, stdin=False): def update_resolvconf(domain, nameserver, interactive): - if not ping_client(nameserver): + if not dns_reachable(nameserver): return error_msg( - f"No client is responding to ping at ip address {nameserver}.", + f"No DNS server is reachable (TCP/53) at IP address {nameserver}.", interactive) shutil.copy2(RESOLVCNF_HEAD, RESOLVCNF_BAK) with open(RESOLVCNF_HEAD, 'r') as fob: @@ -327,16 +359,17 @@ def main(): HOSTNAME = subprocess.run(['hostname', '-s'], encoding='utf-8', stdout=PIPE).stdout.strip() - NET_IP = subprocess.run(['hostname', '-I'], - encoding='utf-8', stdout=PIPE).stdout.strip() + # 'hostname -I' returns every address on the host (IPv6 included), space + # separated. Pick the first IPv4 - feeding the whole list into the samba + # 'interfaces' option or the hosts file produces malformed config. + net_ips = subprocess.run(['hostname', '-I'], + encoding='utf-8', stdout=PIPE).stdout.split() + NET_IP = next((ip for ip in net_ips if valid_ip(ip)), "") - # disabled for now, will reimplment at some point... - # NET_IP321 = NET_IP.split('.')[:-1] - # NET_IP321.reverse() - # NET_IP321 = '.'.join(NET_IP321) - # NET_IP4 = NET_IP.split('.')[-1] + # Capture the upstream resolver now, before update_resolvconf() repoints + # resolv.conf at the local samba DNS. + DNS_FORWARDER = get_dns_forwarder() - DEFAULT_HOSTNAME = "dc1" DEFAULT_REALM = "DOMAIN.LAN" DEFAULT_DOMAIN = "DOMAIN" DEFAULT_NS = "" @@ -391,7 +424,12 @@ def main(): or TURNKEY_INIT): interactive = True if join_nameserver: - create = True + # --join_ns means the user wants to JOIN an existing domain, not + # create a new one. Drop an invalid value so the interactive flow + # re-prompts for it rather than silently skipping the prompt. + create = False + if not valid_ip(join_nameserver): + join_nameserver = "" elif realm and domain and admin_password and join_nameserver and hostname: join_nameserver = valid_ip(join_nameserver) update_resolvconf(realm.lower(), join_nameserver, interactive) @@ -587,7 +625,7 @@ def main(): f'--realm={realm}', f'--domain={domain}', f'--adminpass={admin_password}', - '--option=dns forwarder=8.8.8.8', + f'--option=dns forwarder={DNS_FORWARDER}', f'--option=interfaces=127.0.0.1 {NET_IP}'] commands = [samba_domain, set_expiry, export_krb] nameserver = '127.0.0.1' @@ -603,7 +641,7 @@ def main(): krb_pass = admin_password samba_domain = ['samba-tool', 'domain', 'join', realm.lower(), 'DC', - "--option='idmap_ldb:use rfc2307 = yes'"] + '--option=idmap_ldb:use rfc2307 = yes'] commands = [config_krb, samba_domain, export_krb] nameserver = join_nameserver @@ -653,8 +691,8 @@ def main(): lines_to_print.append('') lines_to_print.append( f"See {COMMAND_LOG} for full output") - error_msg = '\n'.join(lines_to_print) - retry = d.error(f"{error_msg}\n\n") + err_text = '\n'.join(lines_to_print) + retry = d.error(f"{err_text}\n\n") finalize = False DEFAULT_REALM = realm realm = "" @@ -666,7 +704,7 @@ def main(): break else: fatal("Errors in processing domain-controller inithook" - " data:\n{samba_run_out}") + f" data:\n{samba_run_out}") else: finalize = True @@ -688,11 +726,11 @@ def main(): if create: msg = (f"{msg}\nWhen adding clients, you'll need this info:\n" - f" nameserver: {nameserver}\n" + f" nameserver: \n" " * - set client to use this nameserver first!\n" f" AD DNS domain: {realm.lower()}\n" f" AD admin account name: {username}\n" - " AD admin user password: (what you set)\n") + " AD admin user password: \n") if interactive: d = Dialog('Turnkey Linux - First boot configuration') diff --git a/overlay/usr/share/cups/drivers/PDF.ppd b/overlay/usr/share/cups/drivers/PDF.ppd deleted file mode 100644 index 60c96a6..0000000 --- a/overlay/usr/share/cups/drivers/PDF.ppd +++ /dev/null @@ -1,462 +0,0 @@ -*PPD-Adobe: "4.3" -*% Modified on 20090807104004+0000 for CUPS Windows Driver -*% -*% "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $" -*% -*% Sample Postscript driver PPD file for the Common UNIX Printing -*% System (CUPS). -*% -*% Michael Goffioul -*% -*% Changes to the original file by Volker Behr, Martin-Eric Racine, -*% Nickolay Kondrashov and other contributors: -*% added custom page size - 2006-05-18 -*% replaced page descriptions - 2006-05-18 -*% InputSlot constraints removed - 2006-05-11 -*% maxed out imageable regions - 2006-05-11 -*% added pstitleiconv filter - 2006-05-11 -*% added ledger paper size - 2006-01-29 -*% match Adobe specifications - 2005-12-23 -*% additional paper formats - 2005-02-03 and 2005-02-07 -*% made A4 default paper size - 2005-02-03 -*% Color enabled - 2003-12-02 -*% -*FormatVersion: "4.3" -*FileVersion: "1.1" -*LanguageVersion: English -*LanguageEncoding: ISOLatin1 -*PCFileName: "PDFGEN.PPD" -*Manufacturer: "Generic" -*Product: "(CUPS v1.1)" -*ModelName: "Generic PDF file generator" -*ShortNickName: "Generic PDF file generator" -*NickName: "Generic PDF file generator" -*1284DeviceID: "MFG:Generic;MDL:PDF file generator;DES:Generic PDF file generator;CLS:PRINTER;CMD:POSTSCRIPT;" -*% cupsFilter: "application/vnd.cups-postscript 0 pstitleiconv" -*PSVersion: "(2017.000) 0" -*LanguageLevel: "2" -*ColorDevice: True -*DefaultColorSpace: RGB -*FileSystem: False -*Throughput: "8" -*LandscapeOrientation: Plus90 -*TTRasterizer: Type42 - -*HWMargins: 0 0 0 0 -*VariablePaperSize: True -*MaxMediaWidth: 100000 -*MaxMediaHeight: 100000 -*NonUIOrderDependency: 100 AnySetup *CustomPageSize -*CustomPageSize True: "pop pop pop -<>setpagedevice" -*End -*ParamCustomPageSize Width: 1 points 36 100000 -*ParamCustomPageSize Height: 2 points 36 100000 -*ParamCustomPageSize Orientation: 3 int 0 3 -*ParamCustomPageSize WidthOffset: 4 points 0 0 -*ParamCustomPageSize HeightOffset: 5 points 0 0 - -*OpenGroup: General/General - -*OpenUI *PageSize/Page Size: PickOne -*OrderDependency: 100 AnySetup *PageSize -*DefaultPageSize: A4 -*PageSize 11x14/11x14: "<>setpagedevice" -*PageSize 11x17/11x17: "<>setpagedevice" -*PageSize 13x19/13x19: "<>setpagedevice" -*PageSize 16x20/16x20: "<>setpagedevice" -*PageSize 16x24/16x24: "<>setpagedevice" -*PageSize 2A/2A: "<>setpagedevice" -*PageSize 4A/4A: "<>setpagedevice" -*PageSize 8x10/8x10: "<>setpagedevice" -*PageSize 8x12/8x12: "<>setpagedevice" -*PageSize A0/A0: "<>setpagedevice" -*PageSize A1/A1: "<>setpagedevice" -*PageSize A2/A2: "<>setpagedevice" -*PageSize A3/A3: "<>setpagedevice" -*PageSize A4/A4: "<>setpagedevice" -*PageSize A5/A5: "<>setpagedevice" -*PageSize AnsiA/ANSI A: "<>setpagedevice" -*PageSize AnsiB/ANSI B: "<>setpagedevice" -*PageSize AnsiC/ANSI C: "<>setpagedevice" -*PageSize AnsiD/ANSI D: "<>setpagedevice" -*PageSize AnsiE/ANSI E: "<>setpagedevice" -*PageSize ArchA/Arch A: "<>setpagedevice" -*PageSize ArchB/Arch B: "<>setpagedevice" -*PageSize ArchC/Arch C: "<>setpagedevice" -*PageSize ArchD/Arch D: "<>setpagedevice" -*PageSize ArchE/Arch E: "<>setpagedevice" -*PageSize C0/C0: "<>setpagedevice" -*PageSize C1/C1: "<>setpagedevice" -*PageSize C2/C2: "<>setpagedevice" -*PageSize C3/C3: "<>setpagedevice" -*PageSize C4/C4: "<>setpagedevice" -*PageSize C5/C5: "<>setpagedevice" -*PageSize Env10/Envelope #10: "<>setpagedevice" -*PageSize EnvC5/Envelope C5: "<>setpagedevice" -*PageSize EnvDL/Envelope DL: "<>setpagedevice" -*PageSize EnvMonarch/Envelope Monarch: "<>setpagedevice" -*PageSize Executive/Executive: "<>setpagedevice" -*PageSize ISOB0/B0 (ISO): "<>setpagedevice" -*PageSize ISOB1/B1 (ISO): "<>setpagedevice" -*PageSize ISOB2/B2 (ISO): "<>setpagedevice" -*PageSize ISOB3/B3 (ISO): "<>setpagedevice" -*PageSize ISOB4/B4 (ISO): "<>setpagedevice" -*PageSize ISOB5/B5 (ISO): "<>setpagedevice" -*PageSize JISB0/B0 (JIS): "<>setpagedevice" -*PageSize JISB1/B1 (JIS): "<>setpagedevice" -*PageSize JISB2/B2 (JIS): "<>setpagedevice" -*PageSize JISB3/B3 (JIS): "<>setpagedevice" -*PageSize JISB4/B4 (JIS): "<>setpagedevice" -*PageSize JISB5/B5 (JIS): "<>setpagedevice" -*PageSize Ledger/Ledger: "<>setpagedevice" -*PageSize Legal/US Legal: "<>setpagedevice" -*PageSize Letter/US Letter: "<>setpagedevice" -*PageSize RA0/RA0: "<>setpagedevice" -*PageSize RA1/RA1: "<>setpagedevice" -*PageSize RA2/RA2: "<>setpagedevice" -*PageSize RA3/RA3: "<>setpagedevice" -*PageSize RA4/RA4: "<>setpagedevice" -*PageSize SRA0/SRA0: "<>setpagedevice" -*PageSize SRA1/SRA1: "<>setpagedevice" -*PageSize SRA2/SRA2: "<>setpagedevice" -*PageSize SRA3/SRA3: "<>setpagedevice" -*PageSize SRA4/SRA4: "<>setpagedevice" -*PageSize SuperA/Super A: "<>setpagedevice" -*PageSize SuperB/Super B: "<>setpagedevice" -*PageSize TabloidExtra/Tabloid Extra: "<>setpagedevice" -*PageSize Tabloid/Tabloid: "<>setpagedevice" -*CloseUI: *PageSize - -*OpenUI *PageRegion: PickOne -*OrderDependency: 100 AnySetup *PageRegion -*DefaultPageRegion: A4 -*PageRegion 11x14/11x14: "<>setpagedevice" -*PageRegion 11x17/11x17: "<>setpagedevice" -*PageRegion 13x19/13x19: "<>setpagedevice" -*PageRegion 16x20/16x20: "<>setpagedevice" -*PageRegion 16x24/16x24: "<>setpagedevice" -*PageRegion 2A/2A: "<>setpagedevice" -*PageRegion 4A/4A: "<>setpagedevice" -*PageRegion 8x10/8x10: "<>setpagedevice" -*PageRegion 8x12/8x12: "<>setpagedevice" -*PageRegion A0/A0: "<>setpagedevice" -*PageRegion A1/A1: "<>setpagedevice" -*PageRegion A2/A2: "<>setpagedevice" -*PageRegion A3/A3: "<>setpagedevice" -*PageRegion A4/A4: "<>setpagedevice" -*PageRegion A5/A5: "<>setpagedevice" -*PageRegion AnsiA/ANSI A: "<>setpagedevice" -*PageRegion AnsiB/ANSI B: "<>setpagedevice" -*PageRegion AnsiC/ANSI C: "<>setpagedevice" -*PageRegion AnsiD/ANSI D: "<>setpagedevice" -*PageRegion AnsiE/ANSI E: "<>setpagedevice" -*PageRegion ArchA/Arch A: "<>setpagedevice" -*PageRegion ArchB/Arch B: "<>setpagedevice" -*PageRegion ArchC/Arch C: "<>setpagedevice" -*PageRegion ArchD/Arch D: "<>setpagedevice" -*PageRegion ArchE/Arch E: "<>setpagedevice" -*PageRegion C0/C0: "<>setpagedevice" -*PageRegion C1/C1: "<>setpagedevice" -*PageRegion C2/C2: "<>setpagedevice" -*PageRegion C3/C3: "<>setpagedevice" -*PageRegion C4/C4: "<>setpagedevice" -*PageRegion C5/C5: "<>setpagedevice" -*PageRegion Env10/Envelope #10: "<>setpagedevice" -*PageRegion EnvC5/Envelope C5: "<>setpagedevice" -*PageRegion EnvDL/Envelope DL: "<>setpagedevice" -*PageRegion EnvMonarch/Envelope Monarch: "<>setpagedevice" -*PageRegion Executive/Executive: "<>setpagedevice" -*PageRegion ISOB0/B0 (ISO): "<>setpagedevice" -*PageRegion ISOB1/B1 (ISO): "<>setpagedevice" -*PageRegion ISOB2/B2 (ISO): "<>setpagedevice" -*PageRegion ISOB3/B3 (ISO): "<>setpagedevice" -*PageRegion ISOB4/B4 (ISO): "<>setpagedevice" -*PageRegion ISOB5/B5 (ISO): "<>setpagedevice" -*PageRegion JISB0/B0 (JIS): "<>setpagedevice" -*PageRegion JISB1/B1 (JIS): "<>setpagedevice" -*PageRegion JISB2/B2 (JIS): "<>setpagedevice" -*PageRegion JISB3/B3 (JIS): "<>setpagedevice" -*PageRegion JISB4/B4 (JIS): "<>setpagedevice" -*PageRegion JISB5/B5 (JIS): "<>setpagedevice" -*PageRegion Ledger/Ledger: "<>setpagedevice" -*PageRegion Legal/US Legal: "<>setpagedevice" -*PageRegion Letter/US Letter: "<>setpagedevice" -*PageRegion RA0/RA0: "<>setpagedevice" -*PageRegion RA1/RA1: "<>setpagedevice" -*PageRegion RA2/RA2: "<>setpagedevice" -*PageRegion RA3/RA3: "<>setpagedevice" -*PageRegion RA4/RA4: "<>setpagedevice" -*PageRegion SRA0/SRA0: "<>setpagedevice" -*PageRegion SRA1/SRA1: "<>setpagedevice" -*PageRegion SRA2/SRA2: "<>setpagedevice" -*PageRegion SRA3/SRA3: "<>setpagedevice" -*PageRegion SRA4/SRA4: "<>setpagedevice" -*PageRegion SuperA/Super A: "<>setpagedevice" -*PageRegion SuperB/Super B: "<>setpagedevice" -*PageRegion TabloidExtra/Tabloid Extra: "<>setpagedevice" -*PageRegion Tabloid/Tabloid: "<>setpagedevice" -*CloseUI: *PageRegion - -*DefaultImageableArea: A4 -*ImageableArea 11x14/11x14: "0 0 792 1008" -*ImageableArea 11x17/11x17: "0 0 792 1224" -*ImageableArea 13x19/13x19: "0 0 936 1368" -*ImageableArea 16x20/16x20: "0 0 1152 1440" -*ImageableArea 16x24/16x24: "0 0 1152 1728" -*ImageableArea 2A/2A: "0 0 3370 4768" -*ImageableArea 4A/4A: "0 0 4768 6749" -*ImageableArea 8x10/8x10: "0 0 576 720" -*ImageableArea 8x12/8x12: "0 0 576 864" -*ImageableArea A0/A0: "0 0 2384 3370" -*ImageableArea A1/A1: "0 0 1684 2384" -*ImageableArea A2/A2: "0 0 1191 1684" -*ImageableArea A3/A3: "0 0 842 1191" -*ImageableArea A4/A4: "0 0 595 842" -*ImageableArea A5/A5: "0 0 421 595" -*ImageableArea AnsiA/ANSI A: "0 0 612 792" -*ImageableArea AnsiB/ANSI B: "0 0 792 1224" -*ImageableArea AnsiC/ANSI C: "0 0 1224 1584" -*ImageableArea AnsiD/ANSI D: "0 0 1584 2448" -*ImageableArea AnsiE/ANSI E: "0 0 2448 3168" -*ImageableArea ArchA/Arch A: "0 0 648 864" -*ImageableArea ArchB/Arch B: "0 0 864 1296" -*ImageableArea ArchC/Arch C: "0 0 1296 1728" -*ImageableArea ArchD/Arch D: "0 0 1728 2592" -*ImageableArea ArchE/Arch E: "0 0 2592 3456" -*ImageableArea C0/C0: "0 0 2599 3676" -*ImageableArea C1/C1: "0 0 1836 2599" -*ImageableArea C2/C2: "0 0 1298 1836" -*ImageableArea C3/C3: "0 0 918 1298" -*ImageableArea C4/C4: "0 0 649 918" -*ImageableArea C5/C5: "0 0 459 649" -*ImageableArea Env10/Envelope #10: "0 0 297 684" -*ImageableArea EnvC5/Envelope C5: "0 0 459 649" -*ImageableArea EnvDL/Envelope DL: "0 0 312 624" -*ImageableArea EnvMonarch/Envelope Monarch: "0 0 279 540" -*ImageableArea Executive/Executive: "0 0 522 756" -*ImageableArea ISOB0/B0 (ISO): "0 0 2834 4008" -*ImageableArea ISOB1/B1 (ISO): "0 0 2004 2834" -*ImageableArea ISOB2/B2 (ISO): "0 0 1417 2004" -*ImageableArea ISOB3/B3 (ISO): "0 0 1000 1417" -*ImageableArea ISOB4/B4 (ISO): "0 0 708 1000" -*ImageableArea ISOB5/B5 (ISO): "0 0 498 708" -*ImageableArea JISB0/B0 (JIS): "0 0 2919 4127" -*ImageableArea JISB1/B1 (JIS): "0 0 2063 2919" -*ImageableArea JISB2/B2 (JIS): "0 0 1459 2063" -*ImageableArea JISB3/B3 (JIS): "0 0 1029 1459" -*ImageableArea JISB4/B4 (JIS): "0 0 727 1029" -*ImageableArea JISB5/B5 (JIS): "0 0 518 727" -*ImageableArea Ledger/Ledger: "0 0 1224 792" -*ImageableArea Legal/US Legal: "0 0 612 1008" -*ImageableArea Letter/US Letter: "0 0 612 792" -*ImageableArea RA0/RA0: "0 0 2437 3458" -*ImageableArea RA1/RA1: "0 0 1729 2437" -*ImageableArea RA2/RA2: "0 0 1218 1729" -*ImageableArea RA3/RA3: "0 0 864 1218" -*ImageableArea RA4/RA4: "0 0 609 864" -*ImageableArea SRA0/SRA0: "0 0 2551 3628" -*ImageableArea SRA1/SRA1: "0 0 1814 2551" -*ImageableArea SRA2/SRA2: "0 0 1275 1814" -*ImageableArea SRA3/SRA3: "0 0 907 1275" -*ImageableArea SRA4/SRA4: "0 0 637 907" -*ImageableArea SuperA/Super A: "0 0 644 1008" -*ImageableArea SuperB/Super B: "0 0 936 1368" -*ImageableArea TabloidExtra/Tabloid Extra: "0 0 864 1296" -*ImageableArea Tabloid/Tabloid: "0 0 792 1224" - -*DefaultPaperDimension: A4 -*PaperDimension 11x14/11x14: "792 1008" -*PaperDimension 11x17/11x17: "792 1224" -*PaperDimension 13x19/13x19: "936 1368" -*PaperDimension 16x20/16x20: "1152 1440" -*PaperDimension 16x24/16x24: "1152 1728" -*PaperDimension 2A/2A: "3370 4768" -*PaperDimension 4A/4A: "4768 6749" -*PaperDimension 8x10/8x10: "576 720" -*PaperDimension 8x12/8x12: "576 864" -*PaperDimension A0/A0: "2384 3370" -*PaperDimension A1/A1: "1684 2384" -*PaperDimension A2/A2: "1191 1684" -*PaperDimension A3/A3: "842 1191" -*PaperDimension A4/A4: "595 842" -*PaperDimension A5/A5: "421 595" -*PaperDimension AnsiA/ANSI A: "612 792" -*PaperDimension AnsiB/ANSI B: "792 1224" -*PaperDimension AnsiC/ANSI C: "1224 1584" -*PaperDimension AnsiD/ANSI D: "1584 2448" -*PaperDimension AnsiE/ANSI E: "2448 3168" -*PaperDimension ArchA/Arch A: "648 864" -*PaperDimension ArchB/Arch B: "864 1296" -*PaperDimension ArchC/Arch C: "1296 1728" -*PaperDimension ArchD/Arch D: "1728 2592" -*PaperDimension ArchE/Arch E: "2592 3456" -*PaperDimension C0/C0: "2599 3676" -*PaperDimension C1/C1: "1836 2599" -*PaperDimension C2/C2: "1298 1836" -*PaperDimension C3/C3: "918 1298" -*PaperDimension C4/C4: "649 918" -*PaperDimension C5/C5: "459 649" -*PaperDimension Env10/Envelope #10: "297 684" -*PaperDimension EnvC5/Envelope C5: "459 649" -*PaperDimension EnvDL/Envelope DL: "312 624" -*PaperDimension EnvMonarch/Envelope Monarch: "279 540" -*PaperDimension Executive/Executive: "522 756" -*PaperDimension ISOB0/B0 (ISO): "2834 4008" -*PaperDimension ISOB1/B1 (ISO): "2004 2834" -*PaperDimension ISOB2/B2 (ISO): "1417 2004" -*PaperDimension ISOB3/B3 (ISO): "1000 1417" -*PaperDimension ISOB4/B4 (ISO): "708 1000" -*PaperDimension ISOB5/B5 (ISO): "498 708" -*PaperDimension JISB0/B0 (JIS): "2919 4127" -*PaperDimension JISB1/B1 (JIS): "2063 2919" -*PaperDimension JISB2/B2 (JIS): "1459 2063" -*PaperDimension JISB3/B3 (JIS): "1029 1459" -*PaperDimension JISB4/B4 (JIS): "727 1029" -*PaperDimension JISB5/B5 (JIS): "518 727" -*PaperDimension Ledger/Ledger: "1224 792" -*PaperDimension Legal/US Legal: "612 1008" -*PaperDimension Letter/US Letter: "612 792" -*PaperDimension RA0/RA0: "2437 3458" -*PaperDimension RA1/RA1: "1729 2437" -*PaperDimension RA2/RA2: "1218 1729" -*PaperDimension RA3/RA3: "864 1218" -*PaperDimension RA4/RA4: "609 864" -*PaperDimension SRA0/SRA0: "2551 3628" -*PaperDimension SRA1/SRA1: "1814 2551" -*PaperDimension SRA2/SRA2: "1275 1814" -*PaperDimension SRA3/SRA3: "907 1275" -*PaperDimension SRA4/SRA4: "637 907" -*PaperDimension SuperA/Super A: "644 1008" -*PaperDimension SuperB/Super B: "936 1368" -*PaperDimension TabloidExtra/Tabloid Extra: "864 1296" -*PaperDimension Tabloid/Tabloid: "792 1224" - -*OpenUI *Resolution/Output Resolution: PickOne -*OrderDependency: 100 AnySetup *Resolution -*DefaultResolution: 300dpi -*Resolution 150dpi/150 DPI: "<>setpagedevice" -*Resolution 300dpi/300 DPI: "<>setpagedevice" -*Resolution 600dpi/600 DPI: "<>setpagedevice" -*Resolution 1200dpi/1200 DPI: "<>setpagedevice" -*Resolution 2400dpi/2400 DPI: "<>setpagedevice" -*CloseUI: *Resolution - -*CloseGroup: General - -*DefaultFont: Courier -*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM -*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM -*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM -*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM -*Font Bookman-Demi: Standard "(001.004S)" Standard ROM -*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM -*Font Bookman-Light: Standard "(001.004S)" Standard ROM -*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM -*Font Courier: Standard "(002.004S)" Standard ROM -*Font Courier-Bold: Standard "(002.004S)" Standard ROM -*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM -*Font Courier-Oblique: Standard "(002.004S)" Standard ROM -*Font Helvetica: Standard "(001.006S)" Standard ROM -*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM -*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM -*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM -*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM -*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM -*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM -*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM -*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM -*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM -*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM -*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM -*Font Palatino-Bold: Standard "(001.005S)" Standard ROM -*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM -*Font Palatino-Italic: Standard "(001.005S)" Standard ROM -*Font Palatino-Roman: Standard "(001.005S)" Standard ROM -*Font Symbol: Special "(001.007S)" Special ROM -*Font Times-Bold: Standard "(001.007S)" Standard ROM -*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM -*Font Times-Italic: Standard "(001.007S)" Standard ROM -*Font Times-Roman: Standard "(001.007S)" Standard ROM -*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM -*Font ZapfDingbats: Special "(001.004S)" Standard ROM -*% -*% End of "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $". -*% - -*% CUPS Job Ticket support and options... -*Protocols: PJL -*JCLBegin: "%!PS-Adobe-3.0<0A>" -*JCLToPSInterpreter: "" -*JCLEnd: "" - -*OpenGroup: CUPS/CUPS Options - -*JCLOpenUI *cupsJobHoldUntil/Hold Until: PickOne -*OrderDependency: 0 JCLSetup *cupsJobHoldUntil -*DefaultcupsJobHoldUntil: no-hold -*cupsJobHoldUntil no-hold: "%cupsJobTicket: job-hold-until=no-hold -" -*End -*cupsJobHoldUntil indefinite: "%cupsJobTicket: job-hold-until=indefinite -" -*End -*cupsJobHoldUntil day-time: "%cupsJobTicket: job-hold-until=day-time -" -*End -*cupsJobHoldUntil evening: "%cupsJobTicket: job-hold-until=evening -" -*End -*cupsJobHoldUntil night: "%cupsJobTicket: job-hold-until=night -" -*End -*cupsJobHoldUntil second-shift: "%cupsJobTicket: job-hold-until=second-shift -" -*End -*cupsJobHoldUntil third-shift: "%cupsJobTicket: job-hold-until=third-shift -" -*End -*cupsJobHoldUntil weekend: "%cupsJobTicket: job-hold-until=weekend -" -*End -*JCLCloseUI: *cupsJobHoldUntil - -*JCLOpenUI *cupsJobSheetsStart/Start Banner: PickOne -*OrderDependency: 1 JCLSetup *cupsJobSheetsStart -*DefaultcupsJobSheetsStart: none -*cupsJobSheetsStart none: "%cupsJobTicket: job-sheets=none" -*cupsJobSheetsStart classified: "%cupsJobTicket: job-sheets=classified" -*cupsJobSheetsStart confidential: "%cupsJobTicket: job-sheets=confidential" -*cupsJobSheetsStart secret: "%cupsJobTicket: job-sheets=secret" -*cupsJobSheetsStart standard: "%cupsJobTicket: job-sheets=standard" -*cupsJobSheetsStart topsecret: "%cupsJobTicket: job-sheets=topsecret" -*cupsJobSheetsStart unclassified: "%cupsJobTicket: job-sheets=unclassified" -*JCLCloseUI: *cupsJobSheetsStart - -*JCLOpenUI *cupsJobSheetsEnd/End Banner: PickOne -*OrderDependency: 2 JCLSetup *cupsJobSheetsEnd -*DefaultcupsJobSheetsEnd: none -*cupsJobSheetsEnd none: ",none -" -*End -*cupsJobSheetsEnd classified: ",classified -" -*End -*cupsJobSheetsEnd confidential: ",confidential -" -*End -*cupsJobSheetsEnd secret: ",secret -" -*End -*cupsJobSheetsEnd standard: ",standard -" -*End -*cupsJobSheetsEnd topsecret: ",topsecret -" -*End -*cupsJobSheetsEnd unclassified: ",unclassified -" -*End -*JCLCloseUI: *cupsJobSheetsEnd - -*CloseGroup: CUPS diff --git a/overlay/usr/share/cups/drivers/cups6.ini b/overlay/usr/share/cups/drivers/cups6.ini deleted file mode 100644 index 87a4459..0000000 --- a/overlay/usr/share/cups/drivers/cups6.ini +++ /dev/null @@ -1,5 +0,0 @@ -[OEMFiles] -OEMConfigFile1=CUPSUI6.DLL -OEMDriverFile1=CUPSPS6.DLL - - diff --git a/overlay/usr/share/cups/drivers/cupsps6.dll b/overlay/usr/share/cups/drivers/cupsps6.dll deleted file mode 100644 index c40bd04..0000000 Binary files a/overlay/usr/share/cups/drivers/cupsps6.dll and /dev/null differ diff --git a/overlay/usr/share/cups/drivers/cupsui6.dll b/overlay/usr/share/cups/drivers/cupsui6.dll deleted file mode 100644 index fae2222..0000000 Binary files a/overlay/usr/share/cups/drivers/cupsui6.dll and /dev/null differ diff --git a/overlay/usr/share/cups/drivers/ps5ui.dll b/overlay/usr/share/cups/drivers/ps5ui.dll deleted file mode 100644 index 16a3b4b..0000000 Binary files a/overlay/usr/share/cups/drivers/ps5ui.dll and /dev/null differ diff --git a/overlay/usr/share/cups/drivers/pscript.hlp b/overlay/usr/share/cups/drivers/pscript.hlp deleted file mode 100644 index 34ee8ba..0000000 Binary files a/overlay/usr/share/cups/drivers/pscript.hlp and /dev/null differ diff --git a/overlay/usr/share/cups/drivers/pscript.ntf b/overlay/usr/share/cups/drivers/pscript.ntf deleted file mode 100644 index db38e98..0000000 Binary files a/overlay/usr/share/cups/drivers/pscript.ntf and /dev/null differ diff --git a/overlay/usr/share/cups/drivers/pscript5.dll b/overlay/usr/share/cups/drivers/pscript5.dll deleted file mode 100644 index 37f53f8..0000000 Binary files a/overlay/usr/share/cups/drivers/pscript5.dll and /dev/null differ diff --git a/plan/main b/plan/main index 10a11a5..57359e0 100644 --- a/plan/main +++ b/plan/main @@ -2,15 +2,30 @@ #include cups -cups-pdf +printer-driver-cups-pdf + +// IMPORTANT: 'printer-driver-cups-pdf' install with cups running on host. +// If cups is running on the host (or available via shared network) at build +// time - i.e. listening on 127.0.0.1:631 - an interactive prompt will show: +// Running in chroot, ignoring request. +// Reloading Common Unix Printing System: cupsd failed! +// Password for root on localhost? +// +// This is a known "won't fix" issue. The only known workaround is to stop cups +// on the host _before_ building: +// systemctl stop cups.service cups.socket cups.path +// +// Primary bug and other related bugs: +// https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=539156 +// https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=614713 +// https://bugs.launchpad.net/ubuntu/+source/cups-pdf/+bug/1486796 acl -attr /* Samba AD dependency */ +attr /* Samba AD dependency */ krb5-user -samba-vfs-modules -samba-ad-provision - +samba-ad-dc samba-dsdb-modules +samba-ad-provision ldb-tools lighttpd