
TODO.cups12
===========

This is a list of features that need to be implemented in KDEPrint for 
KDE4.

Many gaps have opened by the continuing CUPS 1.1.x development already 
(which added quite some new parameters and features), while KDEPrint
development got dormant in recent years. Plus, even more new gaps by 
the recent CUPS 1.2 release (which added even more new features).


            ---------------------------
              In General:
            ---------------------------
* a GUI to configure client.conf is missing [1.1]
* a GUI to configure snmp.conf is missing [1.2]
* a GUI to configure subscriptions.conf is missing [1.2]

Other stuff that's new:

- port monitor support [1.2]
- unique job IDs support [1.2]
- print a self test page (if driver supports CUPS command file format, 
  you can now print the printer's self-test page) [1.2]
- perform a self-cleaning of print heads (if driver supports CUPS 
  command file format, you can now clean print heads) [1.2]
- per-printer sharing support [1.2]
- per-printer error policy support [1.2]
- per-printer operation policy support [1.2]
- IPP notifications support [1.2]
- cupsd.conf environment variable support [1.2]
- driver interfaces support (CUPS 1.2 supports "driver interfaces" 
  which allow a driver to advertise the printers it supports and 
  automatically generate the PPD file as needed) [1.2]
- improved error handling support (CUPS 1.2 API provides convenience 
  functions to get full error message of last request) [1.2]
- improved "backchannel" support (CUPS 1.2 API provides backends and 
  filters with access to information sent back from a printer) [1.2]
- globalized PPD support [1.2]
- custom PPD option support [1.2]
- extended PPD API support (CUPS 1.2 PPD API got added new functions:
  reading from CUPS files; localization of globalized PPD files; 
  emitting of arbitrary ranges of options; custom option support [like
  passwords, passcodes, curves, integers, points, reals and strings];
  enhanced JCL support; and access to all options in a PPD file) [1.2]
- CUPS ICC profiles support [1.2]


          --------------------------------
            More specifically:
          --------------------------------

kprinter
--------

* add support for "-U username somebody" (or, in a more IPP-conforming 
  syntax:  "-o job-originating-username=username").

* add support for multilanguage PPD files

* add support for other CUPS extensions re. PPD parameters; especially
  important is support for handling custom PPD options!


kaddprinterwizard
-----------------

* add support for IPv6 syntax when specifying or parsing network 
  addresses

* add support for new "snmp" backend in CUPS 1.2.

  The snmp backend can auto-discover most printer types which are 
  attached to the LAN with a NIC. For a sort of introduction to its
  features see http://www.kdedevelopers.org/node/2138/.

  To check it from the commandline, just run it without any parameter:
  "/usr/lib/cups/backend/snmp" (Ubuntu Dapper users have it disabled 
  by default; just run "/usr/lib/cups/backend-available/snmp". If you
  have network printers in your LAN, you'll likely see an output like

    network ipp://10.162.2.92:631/ipp "Ricoh IPP Printer v2.0" "Ricoh IPP Printer v2.0 10.162.2.92" ""
    network socket://10.162.2.93 "infotec  ISC824" "infotec  ISC824 10.162.2.93" ""
    network lpd://10.162.2.94/passthru "Canon iR5000-6000" "Canon iR5000-6000 10.162.2.94" ""

  kaddprintwizard should be able to parse the CUPS snmp backend's
  output for adding the auto-discovered network printers to the 
  local setup.

* add support for the following parameters in printers.conf (which
  where newly added in CUPS 1.2.0):
  - ErrorPolicy
  - OpPolicy
  - Option
  - PortMonitor
  - Shared
  - StateTime
  For information purposes: currently supported parameters are:
  - Accepting
  - AllowUser
  - DenyUser
  - DeviceURI
  - Info
  - JobSheets
  - KLimit
  - Location
  - PageLimit
  - QuotaPeriod
  - State
  - StateMessage



kaddprinterwizard --kdeconfig
-----------------------------

* add support for unix domain socket support (was added in CUPS 1.2.x)

  CUPS 1.2 newly introduced the option to communicate via "unix 
  domain sockets" for local cases (CUPS client and server on the
  same host [=localhost]. That means, you can now have 2 types of
  "Listen" directives (concurrently):
    Listen localhost:631
    Listen /path/to/domain.sock.name

  Support for unix domain socket communication should be added at
  "CUPS Server Settings" --> "Server information".


kaddprinterwizard --serverconfig
--------------------------------

* Add support for currently unsupported cupsd.conf 1.1.x parameters.
  All in all 15 unsupported parameters:
  - ConfigFilePerm
  - FaxRetryInterval
  - FaxRetryLimit
  - FileDevice
  - FilterNice
  - Include
  - LimitRequestBody
  - LogFilePerm
  - MaxClientsPerHost
  - MaxCopies
  - PrintcapGUI
  - ReloadTimeout
  - RootCertDuration
  - RunAsUser
  - ServerTokens

* add support for cupsd.conf parameters newly introduced in CUPS 1.2.0.
  Note, "RunAsUser" is no longer supported in CUPS 1.2.x!
  All in all about 18 new parameters (on top of the 15 unsupported ones
  from CUPS 1.1.x):
  - BrowseLDAPBindDN
  - BrowseLDAPDN
  - BrowseLDAPPassword
  - BrowseLDAPServer
  - BrowseLocalOptions
  - BrowseLocalProtocols
  - BrowseRemoteOptions
  - BrowseRemoteProtocols
  - DefaultEncryption
  - DefaultPolicy
  - DefaultShared
  - JobRetryInterval
  - JobRetryLimit
  - PassEnv
  - Policy
  - SetEnv
  - UseNetworkDefault


Complete list of 1.2.0 cupsd.conf directives
--------------------------------------------

This is a complete list of all cupsd.conf parameters that may be 
used in CUPS 1.2.x, alongside a listing if they are supported in
KDEPrint 3.5.3:


  ++ = supported
  -- = unsupported

 ------------+-----------------------------------------------------
  Supported? | cupsd.conf directive
 ------------+-----------------------------------------------------
  ++         | AccessLog
  ++         | Allow
  ++         | AuthClass
  ++         | AuthGroupName
  ++         | AuthType
  ++         | AutoPurgeJobs
  ++         | BrowseAddress
  ++         | BrowseAllow
  ++         | BrowseDeny
  ++         | BrowseInterval
  -- (1.2)   | BrowseLDAPBindDN
  -- (1.2)   | BrowseLDAPDN
  -- (1.2)   | BrowseLDAPPassword
  -- (1.2)   | BrowseLDAPServer
  -- (1.2)   | BrowseLocalOptions
  -- (1.2)   | BrowseLocalProtocols
  ++         | BrowseOrder
  ++         | BrowsePoll
  ++         | BrowsePort
  ++         | BrowseProtocols
  ++         | BrowseRelay
  ++         | BrowseRemoteOptions
  ++         | BrowseRemoteProtocols
  ++         | BrowseShortNames
  ++         | BrowseTimeout
  ++         | Browsing
  ++         | Classification
  ++         | ClassifyOverride
  -- (1.1)   | ConfigFilePerm
  ++         | DataDir
  ++         | DefaultAuthType
  ++         | DefaultCharset
  -- (1.2)   | DefaultEncryption
  ++         | DefaultLanguage
  -- (1.2)   | DefaultPolicy
  -- (1.2)   | DefaultShared
  ++         | Deny
  ++         | DocumentRoot
  ++         | Encryption
  ++         | ErrorLog
  -- (1.1)   | FileDevice
  ++         | FilterLimit
  -- (1.1)   | FilterNice
  ++         | FontPath
  ++         | Group
  ++         | HideImplicitMembers
  ++         | HostNameLookups
  ++         | ImplicitAnyClasses
  ++         | ImplicitClasses
  -- (1.1)   | Include
  -- (1.2)   | JobRetryInterval      # 1.1 had "FaxRetryInterval"
  -- (1.2)   | JobRetryLimit         # 1.1 had "FaxRetryLimit"
  ++         | KeepAlive
  ++         | KeepAliveTimeout
  ++         | Limit (Location)
  ++         | Limit (Policy)
  ++         | LimitExcept
  -- (1.1)   | LimitRequestBody
  ++         | Listen
  ++         | ListenBackLog
  ++         | Location
  -- (1.1)   | LogFilePerm
  ++         | LogLevel
  ++         | MaxClients
  -- (1.1)   | MaxClientsPerHost
  -- (1.1)   | MaxCopies
  ++         | MaxJobs
  ++         | MaxJobsPerPrinter
  ++         | MaxJobsPerUser
  ++         | MaxLogSize
  ++         | MaxRequestSize
  ++         | Order
  ++         | PageLog
  ++         | PassEnv
  -- (1.2)   | Policy
  ++         | Port
  ++         | PreserveJobFiles
  ++         | PreserveJobHistory
  ++         | Printcap
  ++         | PrintcapFormat
  -- (1.1)   | PrintcapGUI
  -- (1.1)   | ReloadTimeout
  ++         | RemoteRoot
  ++         | RequestRoot
  ++         | Require
  ++         | RIPCache
  -- (1.1)   | RootCertDuration
  --(removed)| (RunAsUser)       # present in 1.1
  ++         | Satisfy
  ++         | ServerAdmin
  ++         | ServerBin
  ++         | ServerCertificate
  ++         | ServerKey
  ++         | ServerRoot
  -- (1.1)   | ServerTokens
  ++         | SetEnv
  -- (1.2)   | SSLListen
  ++         | SSLPort
  ++         | SystemGroup
  ++         | TempDir
  ++         | Timeout
  -- (1.2)   | UseNetworkDefault
  ++         | User
 ------------+-----------------------------------------------------