CUPS print server - GTK2 nem kéri be a jelszót

Fórumok

van egy CUPS kiszolgáló, amin authenticated policy-vel futnak a nyomtatók.
* cli parancsok bekérik a jelszót: lpstat, lpq, ... (igaz a usernevet nem, így nem tudom magam más névvel azonosítani mint a login nevem)
* GTK3-as programok a nyomtatás panelnél rendesen bekérik a usernevet, jelszót.
* GTK2-es programok nem kérnek be semmit, nem urgik fel a user/pass dialog, hanem megállás nélkül üres jelszót küldenek a cups szervernek.

hogyan lehet rávenni a gtk2-t hogy kérjen be bejelentkezési adatokat?
gyanítom, hogy a libprintbackend-cups.so (debiánban /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/printbackends alatt), felel érte. beleírtam, beforgattam, nyomtam ldconfig-ot is, de nem látszik hogy az új libet használnák a programok.

pluszpontért: hogyan lehet rávenni a cli-s programokat, hogy másik usernevet használjanak mint a login nevem? néztem strace-szel a rendszerhívásokat, nem environmentből veszi...

cupsd.conf:


Listen 0.0.0.0:631
DefaultEncryption Never
ServerTokens ProductOnly
WebInterface On
KeepAlive On
KeepAliveTimeout 60
Timeout 15
DirtyCleanInterval 0

Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols CUPS DNSSD
BrowseAddress @LOCAL
BrowseLocalProtocols CUPS DNSSD
BrowseWebIF Off

DefaultAuthType Basic
MaxJobsPerUser 3
DefaultPolicy authenticated
DefaultShared Yes

< Location / >
        Order allow,deny
        Allow all
        Require valid-user
        Satisfy all
< /Location>
<  Location /admin >
        Order deny,allow
        Allow all
        Require group lpadmin
        Satisfy all
< /Location >

< Policy authenticated >
        JobPrivateAccess @OWNER @SYSTEM @lpadmin
        JobPrivateValues job-name job-originating-host-name job-originating-user-name
        SubscriptionPrivateAccess @OWNER @SYSTEM @lpadmin
        SubscriptionPrivateValues notify-events notify-pull-method notify-recipient-uri notify-subscriber-user-name notify-user-data

        < Limit Create-Job Print-Job Print-URI >
                AuthType Default
                Order deny,allow
        < /Limit >
        < Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document Cancel-My-Jobs >
                AuthType Default
                Require user @OWNER @SYSTEM
                Order deny,allow
        < /Limit >
        < Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default >
                AuthType Default
                Require user @SYSTEM
                Order deny,allow
        < /Limit >
        < Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs >
                AuthType Default
                Require user @SYSTEM
                Order deny,allow
        < /Limit >
        < Limit Cancel-Job Cancel-Jobs CUPS-Authenticate-Job Close-Job Validate-Job >
                AuthType Default
                Require user @OWNER @SYSTEM
                Order deny,allow
        < /Limit >
        < Limit All >
                AuthType Default
                Order deny,allow
        < /Limit >
< /Policy >

releváns printers.conf részlet:


AuthInfoRequired username,password
Accepting Yes
Shared Yes
AllowUser @lp
OpPolicy authenticated

~/.cups/client.conf -ban meg van adva a cups szerver címe.

logban ez ismétlődik:


Dec 17 10:28:00 cupsd[15655]: cupsdAcceptClient: 13 from xxx.xxx.xxx.xxx:631 (IPv4)
Dec 17 10:28:00 cupsd[15655]: cupsdReadClient: 13 POST / HTTP/1.1
Dec 17 10:28:00 cupsd[15655]: cupsdSetBusyState: newbusy="Active clients", busy="Not busy"
Dec 17 10:28:00 cupsd[15655]: cupsdAuthorize: Empty Basic password!
Dec 17 10:28:00 cupsd[15655]: cupsdReadClient: 13 1.1 CUPS-Get-Printers 1
Dec 17 10:28:00 cupsd[15655]: CUPS-Get-Printers
Dec 17 10:28:00 cupsd[15655]: cupsdIsAuthorized: username=""
Dec 17 10:28:00 cupsd[15655]: Returning HTTP Nem jogosult for CUPS-Get-Printers (no URI) from xxx.xxx.xxx.xxx
Dec 17 10:28:00 cupsd[15655]: REQUEST xxx.xxx.xxx.xxx - - "POST / HTTP/1.1" 401 433 CUPS-Get-Printers successful-ok
Dec 17 10:28:00 cupsd[15655]: cupsdSendHeader: 13 WWW-Authenticate: Basic realm="CUPS"
Dec 17 10:28:00 cupsd[15655]: cupsdReadClient: 13 WAITING Closing on EOF
Dec 17 10:28:00 cupsd[15655]: cupsdCloseClient: 13
Dec 17 10:28:00 cupsd[15655]: cupsdSetBusyState: newbusy="Not busy", busy="Active clients"

Hozzászólások

helyesbítek, használja a libprintbackend-cups.so -t, csak rossz helyre szúrtam bele a debug kiiratást.

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

a'szem megtaláltam a fícsört a gtk-2 forrásában:
gtk+-2.24.10/modules/printbackends/cups/gtkcupsutils.c


/* Very ugly hack: cups has a stupid synchronous password callback 
 * that doesn't even take the request or user data parameters, so 
 * we have to use a static variable to pass the password to it.
 * Not threadsafe !
 * The callback sets cups_password to NULL to signal that the 
 * password has been used.
 */
static char *cups_password;
static char *cups_username;

static const char *
passwordCB (const char *prompt)
{
  char *pwd = cups_password;
  cups_password = NULL;

  cupsSetUser (cups_username);

  return pwd;
}

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

gtk+-2.24.10 -et nézem, ez csak jelszó nélküli CUPS-on keresztül tud nyomtatni.
üres sztringet küld jelszóként és kész, de azt megállás nélkül küldi.

készítettem egy patch-et, ami a CUPS_ASKPASS env-ben megadott segédprogramot hívja a cups jelszó megszerzéséhez.
egy jó válasz (IPP 200) után lementi static változóba a jelszót és később azzal próbálkozik.

ui. még jó hogy nem raktam fail2ban-t a cups naplóra.

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack