Der Un-Faxdrucker

Stefan
14.01.2010 9 1:16 min

Wie bereits einige Kunden bemerkt und zum Teil auch bemängelt haben, ist der sipgate Faxdrucker für Mac OS X nicht wirklich als Drucker/Faxgerät in Mac OS X integriert. Auch wir würden uns eine entsprechende Integration ins System wünschen, konnten diese in der Form aber aus verschiedenen Gründen bisher nicht umsetzen. Mac OS X verwendet im Hintergrund ein System namens CUPS, das die Drucker und die Druckvorgänge verwaltet. CUPS macht es vergleichsweise einfach neue Treiber zu programmieren, legt dem Entwickler allerdings auch einige Restriktionen auf, die die Eignung für unsere Zwecke stark einschränken.

faxdrucker

Ein CUPS-Drucker ist im Grunde ein Programm, das jedoch leider nur (wahlweise) in zwei Modi laufen kann: entweder als unprivilegierter User oder als root (sowas wie der superuser des Systems). Da beide sich jedoch von dem User unterscheiden, als der der Nutzer zum Zeitpunkt der Verwendung eingeloggt ist, besteht kein Zugriff auf den dem User zugeordneten Schlüsselbund. Das Passwort zum Login des Faxdruckers kann also nicht sicher gespeichert werden. Der Faxdrucker von Christian Aust speichert das Passwort einfach unverschlüsselt „im Drucker“, was wir für unsere eigene Applikation nicht machen wollen. Für die Zukunft ist ein Kommunikationskanal geplant, über den der „Drucker“ mit der Applikation Daten austauschen kann und somit auch z.B. Serienfaxe ermöglicht, ohne die „User-Experience“ für den „Otto-Normal-Verbraucher“ einzuschränken.

Weitere interessante Beiträge

9 Kommentare


Christian Aust:

Hallo,

mir war das Speichern des Passwortes im Klartext auch stets ein Dorn im Auge. Natürlich gehört ein Passwort in OSX in den Schlüsselbund und nicht in irgendwelche Konfiguration (auch wenn diese in meinem Fall nur von Admin-Usern zu lesen ist)

Eine Überlegung war, mit einer Systemeinstellung (Preference Pane) ein lokales Socket aufzumachen, über das der anonyme CUPS-Prozess die Weiterleitung des PDF an ein userspezifisches Programm übergeben kann. Aber so ganz das Gelbe vom Ei ist das auch nicht…

Vielleicht habe ich noch eine Eingebung. Allerdings verfolge ich das Thema aktuell nicht intensiv (siehe Blog) weil ich mit eurer Software ganz gut klarkomme.

Grüße,

Christian Aust

antworten

Henning Hucke:

Hallo,

ist Unix hier nicht richtig verstanden worden?

Drucken – und IMHO eben auch ein Fax-Drucker – ist ein Dienst, der zunächst einmal System weit angeboten werden sollte. Der _Zugang_ zum *Drucker* wird dann sinnigerweise *lokal* beschränkt! Was ist, wenn ich meine Frau aber nicht meine Kinder Faxen lassen möchte? Was ist, wenn ein Cron-Job faxen soll?

Irgendwie läuft hier etwas schief.

MfG Henning Hucke

antworten

Stefan:

Hallo Herr Hucke,

Der „Faxdrucker“ muss sich mit unserem Backend verbinden und benötigt dafür einen Benutzernamen und ein Passwort. Wenn Sie eine Idee haben, wo man dieselben sicher und für den „zuständigen User“ zugänglich ablegen kann werden wir die Idee so schnell wie möglich umsetzen. Bitte beachten Sie dabei auch, dass ein anderer User auf dem System auch einen anderen sipgate Account verwenden können muss und dass wir Wert darauf legen unser spezialisiertes Frontend für den Versand zu verwenden, wenn der User es wünscht.

Der „Faxdrucker“ von Herrn Aust entsprach sicherlich mehr dem, was sie sich vorstellen würden, aber eben nicht dem, was wir unseren Kunden in der Form anbieten wollen.

Für spezielle Wünsche haben wir eine API, die es ermöglicht auch besondere Anforderungen abzudecken.

antworten

Henning Hucke:

Der zuständige User ist der „System user“, unter Unix also root. Mit welchen Rechten Cups unter MacOSX läuft, ist mir nicht bekannt aber egal.
Die Account-Informationen mit einer symetrischen Verschlüsselung in einem File abzulegen, dass nur für den System user lesbar ist, sollte kein Problem sein. Das das ganze – wie jede Lösung, die nicht die Möglichkeit zur User-Interaktion hat – daran krankt, dass der Schlüssel irgendwo abgelegt sein muss ist klar. Ich will aber gerade bei MacOSX nicht ausschließen, dass es irgendwo ein System-Zertifikat gibt und über Crypto-Funktionen verwendbar wäre.

Ich vermisse eine Lösung für Linux… :-).

„…aber eben nicht dem, was wir unseren Kunden in der Form anbieten wollen.“: Wie ich bereits schrub: Nicht die Philosophie von Unixen verstanden?
Irre ich mich oder authentifiziert sich ein Cups-System gegen andere Cups-Systeme mit einem Zertifikat? Ist X.509-Wissen bei Sipgate nicht vorhanden?

MfG

antworten

Stefan:

Das hat mit UNIX und X.509 überhaupt nichts zu tun, sondern mit der sipgate-API und der Tatsache, dass CUPS als „root“ oder „lp“ läuft (manpage backend(7)) und deshalb KEINEN Zugriff auf den Userkeychain von Mac OS X hat, der Systemkeychain ist ein möglicher Lösungsansatz. Es geht uns um die User Experience und nicht um die Machbarkeit, die ist hinreichend erwiesen, eben nicht zuletzt durch das CUPS-Backend von Herrn Aust, das übrigens Open Source ist und sich vermutlich ohne großen Aufwand nach Linux portieren lässt.

antworten

Thomas Fischer:

„Da beide sich jedoch von dem User unterscheiden, als der der Nutzer zum Zeitpunkt der Verwendung eingeloggt ist, besteht kein Zugriff auf den dem User zugeordneten Schlüsselbund. Das Passwort zum Login des Faxdruckers kann also nicht sicher gespeichert werden“

Ohne jetzt tiefere Kenntnisse von CUPS zu haben, könnte man nicht wie folgt vorgehen:
1. „Sipgate-Drucker“ nimmt Druckaufträge an und wandelt sie CUPS-intern in PDF um
2. Der CUPS-interne Sipgate-Druckertreiber benutzt dbus (ist AFAIK auch für OSX verfügbar) um mit einer Desktopanwendung im Benutzerkontext zu kommunizieren.
3. Desktopanwendung, die bisher inaktiv/versteckt war, springt im Desktop des Benutzers auf. Sie erlaubt Eingabe von Faxnummer und Benutzername/Passwort bzw. fragt Keychain ab. Evtl kann der Benutzer weitere Einstellungen vornehmen.
4. Desktopanwendung übergibt Daten via dbus wieder zurück an Sipgate-CUPS-Treiber, der den Versand vornimmt.
5. Optional wird die Desktopanwendung via dbus über Versandstatus etc informiert.

Kommunikation via dbus zwischen Systemdiensten und Desktopanwendungen ist bei modernen Linux-Systemen etabliert und funktioniert sauber. Wenn ihr die ganze Architektur als OpenSource (CUPS-Treiber und GUI via Qt4) macht, deckt ihr gleichzeitig Mac OS X, Linux und vielleicht noch andere System ab…

antworten

Be:

Hallo,

wo bleibt die saubere Linux-Lösung?

Schon ärgerlich die alte und unsichere Windowskiste an werfen zu müssen, nur um ein Fax zu versenden. Ich wage zu bezweifeln, dass meine Zugangsdaten dort sicher aufgehoben sind.

Kann lp sich die Zugangsdaten nicht aus einer Datei im home-Verzeichnis des jeweiligen Benutzers holen? Dort könnte auch eine Option gesetzt sein die Zugangsdaten manuell einzugeben.

Wie wär’s ein zweites Passwort einzuführen, das nur für die API gültig ist? Dann könnte jemand, der sich als Benutzer lp ausgibt, nicht auf die Idee kommen sich im SipGate-Benutzerkonto einzuloggen.

Viel Spaß beim Programmieren!
Be

antworten

Benjamin:

Naja, die Drucker sind zwar mittlerweile schon kleine Alleskönner. Aber Fax ist für mich eine sehr veraltete Technik, die kaum noch Anwendung findet. Also nice-to-have!

antworten

Vieldrucker:

Alles die Geschichte mit dem Passwort gefällt mir überhaupt nicht! Also wenn ich schon Passwort und Klartext lesen, dann beisst sich das einfach. Wozu ein Passwort, wenn es jeder im Klartext mitlesen kann/könnte?!

antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.