summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* chooser: port to libgdmwip/slave-connectionRay Strode2012-07-175-495/+50
| | | | | | | | | | | | | | | | The chooser is the UI showns to XDMCP clients connecting via indirect queries. It shows a list of login screens on the network and lets the user pick that login screen to jump to. Right now it uses its own hardcoded D-Bus calls to interact with the GDM daemon. The D-Bus APIs have changed, though, and so now it no longer works. This commit changes simple-chooser to use libgdm instead.
* greeter: port to libgdmRay Strode2012-07-1710-1495/+849
| | | | | | | | | | | | | | The simple-greeter is the fallback greeter shown if gnome-shell is unavailable. Right now it uses its own hardcoded D-Bus calls to interact with the GDM daemon. The D-Bus APIs have changed, though, and so now it no longer works. This commit changes simple-greeter to use libgdm instead.
* libgdmgreeter: rename to libgdmRay Strode2012-07-1710-315/+314
| | | | | | | | | | | | | libgdmgreeter is useful for clients that aren't greeters. This will be even more true in the future as it gets updated to be useful for screensavers. Given it offers APIs that apply to non-greeter applications, it's silly to have greeter in the library name. This commit renames libgdmgreeter to libgdm. https://bugzilla.gnome.org/show_bug.cgi?id=676381
* libgdmgreeter: generate implementationRay Strode2012-07-176-996/+1230
| | | | | | | | | | | | | | | | | | | | | | GdmGreeterClient is the interface greeters use to communicate with their respective slaves. It will eventually also be useful as an interface for screensavers to do authentication. The actual GdmGreeterClient code is a just a thin wrapper around some libdbus calls. Something very similar can be automatically generated using gdbus-codegen. This commit: - updates the library to use the most up to date dbus interfaces provided by the daemon - replaces the hand rolled dbus code with generated code, but leaving the client interface to get at the generated objects. Based on work by Giovanni Campagna <gcampagna@src.gnome.org> https://bugzilla.gnome.org/show_bug.cgi?id=676381
* configure: Drop dbus-glib from daemon codeGiovanni Campagna2012-07-171-1/+0
| | | | | | | | | Now that the GDM daemon code is using GDBus, we don't need to pull in dbus-glib anymore. This commit removes the pkgconfig check for dbus-glib. Note, the fallback greeter and chooser still use dbus-glib.
* daemon: add greeter test programGiovanni Campagna2012-07-173-0/+276
| | | | | This commit adds a small test program that excerises the new interface for connecting to GDM.
* worker: add reauthentication supportRay Strode2012-07-1722-95/+1438
| | | | | | | | | | | | | This commit adds reauthentication support for screensavers and user switching to use. 1) It adds a "verification mode" argument to the GdmSession constructor that tweaks the behavior of how the session worker acts to fit login or unlock scenarios better. 2) It adds a way for programs to open a communication channel for user verification to already runnings sessions (so reauthentication happens in the context of the session).
* worker: propagate 'is local' to session workerRay Strode2012-07-173-13/+18
| | | | | It's needed by ConsoleKit and it will be needed for starting reauthentication sessions.
* daemon: Add an interface for communicating with GDM via D-BusRay Strode2012-07-1731-3551/+2201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One goal for GNOME 3.6, is to replace the screen locking functionality provided by gnome-screensaver with redesigned functionality provided by gnome-shell. At the same time, it makes sense to consolidate the yucky PAM authentication code to one place (GDM). Right now only greeters can talk to GDM. At the time the greeter is started, the slave sets up a private communication channel which the greeter then connects to for initiating communication. This commit adds a new method to the org.gnome.DisplayManager.Manager interface that allows opening a private connection to the slave that is associated with the currently running session. That slave exports the session object over the bus that greeters can interact with the session as appropriate. This interface replaces the GDM_GREETER_DBUS_ADDRESS environment variable that used to to be used for connecting the greeter to the slave. This commit also drops gdm-greeter-server and gdm-chooser-server which don't fit the new model, and are really just thin middle men that don't do anything important. Furthermore, this commit splits GdmSession interfaces 3 orthogonal parts up into 3 separate interfaces on the session object. A future commit will make this interface work for screensavers/reauthentication. Based on work by Giovanni Campagna <gcampagna@src.gnome.org> https://bugzilla.gnome.org/show_bug.cgi?id=676381
* worker: Port to GDBusGiovanni Campagna2012-07-174-682/+293
| | | | | | | | | | | | The gdm-session-worker is a process used for managing interaction with PAM. PAM modules can do weird things to the process they run in, so GDM segregrates all PAM conversations in their own independent "worker" subprocesses. This commit moves gdm-session-worker away from using dbus-glib to using gdbus instead. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* daemon: Port GdmSession to use GDBusGiovanni Campagna2012-07-178-1624/+841
| | | | | | | | | | | | | | | GdmSession is an object in the slave that manages the various session worker processes. Each session worker process talks to PAM to perform authentication for the user. For instance, if the user has a fingerprint reader, then there will normally be two worker processes, one for handling fingerprint auth, and one for handling password auth. GdmSession is the interface layer in the slave to talking to those running worker processes. This commit ports GdmSession over to GDBus from dbus-glib. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* daemon: Port GdmChooserServer to GDBusGiovanni Campagna2012-07-175-278/+142
| | | | | | | | | | | | | | | | | GdmChooserServer is the slave-side object that handles communication with choosers. The chooser talks over a private peer-to-peer dbus connection to its slave via GdmChooserServer. A chooser is like a greeter, but instead of presenting a login screen it presents a list of hosts on the network that will offer login screens if asked. The user picks one of these hosts and their display is redirected to it. This commit makes GdmChooserServer use GDBus. This gets us one step closer to GDM running without dbus-glib. https://bugzilla.gnome.org/show_bug.cgi?id=6228
* daemon: Finish display if its slave diesGiovanni Campagna2012-07-171-0/+27
| | | | | | | | If a slave goes away for whatever reason, we need to make sure we clean up the display associated with it. This commit changes the display code to watch its associated slave on the bus and automatically finish if the slave goes away.
* daemon: Remove transient displays from display store when finishedGiovanni Campagna2012-07-177-240/+138
| | | | | | | | | | | | | | | | | When a display finishes (because it failed to start, or the users session ended) the GDM display handling code needs to remove the display from its display store. For static (logind or the first automatic) displays this happens in the on_static_display_status_changed function. For transient (user-switch initiated) displays, though, it never happens. This commit reworks on_static_display_status_changed into a more generally applicable on_display_status_changed function, so the proper bookkeeping can happen for transient displays, too.
* daemon: Fix added/remove signal emission in display codeRay Strode2012-07-173-21/+160
| | | | | | | | | | | | | | | | | | The display store is a small container object meant to track currently known about displays. It has two signals, "display-added" and "display-removed" that are supposed to get emitted any time a display gets added or removed from the store. Likewise, the GdmManager object has two similar signals that are supposed to be emitted under similar circumstances. These signals in GdmDisplayStore and GdmManager were never actually hooked up to fire at the appropriate times. This commit changes GdmDisplayStore and GdmManager to properly fire these signals.
* daemon: Port display handling to GDBusGiovanni Campagna2012-07-1720-700/+926
| | | | | | | | This is one big commit because it uses generated code both in the daemon and in the slaves, so we need to port both at the same time. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* daemon: NUL terminate X11 cookieGiovanni Campagna2012-07-171-1/+1
| | | | | | | | | | | | | | | The X11 cookie is used as a shared secret between X clients and the X server. This cookie is written into an Xauthority file pointed to by the XAUTHORITY environment variable. In the event standard peer-credential based access isn't available, clients read this file and gain authorization to use the X server by presenting the cookie to the X server. This cookie is passed from the gdm daemon to the slave over the bus as an array of bytes. GDBus expects bytes strings to be NUL terminated. This commit NUL terminates the cookie, so that it will be compatible with GDBus's generated code.
* daemon: Port GdmGreeterServer to GDBusGiovanni Campagna2012-07-176-744/+333
| | | | | | | | | | | | GdmGreeterServer is the slave-side object that handles communication with greeters. The greeter talks over a private peer-to-peer dbus connection to its slave via GdmGreeterServer. This commit makes GdmGreeterServer use GDBus. This gets us one step closer to GDM running without dbus-glib. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* daemon: Add utilities to create private DBus serversGiovanni Campagna2012-07-172-0/+154
| | | | | | | | | | | | | | | | | | | GDM creates private off-the-bus dbus servers for facilitating communication between its various processes. This commit adds a new function: gdm_dbus_setup_private_server that performs the work necessary to create a private server, including code for generating the socket address, and code for handling new connections. The ultimate goal is to drop our dependency on dbus-glib, and instead use GDBus. gdm_dbus_setup_private_server uses GDBus, so this is one step toward that goal. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* configure: drop dbus-glib from common libsGiovanni Campagna2012-07-171-1/+0
| | | | | | | While the daemon still uses dbus-glib, none of the bits that rely on the common libs exclusively do anymore. This commit drops the requirement from configure.
* gdmflexiserver: Port to GDBusGiovanni Campagna2012-07-171-447/+195
| | | | | | | | | | | | gdmflexiserver is the program that handles initiating user switch requests. Ultimately, we don't want any part of GDM using dbus-glib, including gdmflexiserver. This commit moves gdmflexiserver over to GDBus. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* common: Use GDBus for GdmSettingsGiovanni Campagna2012-07-179-214/+170
| | | | | | | | | | | GdmSettings is a system bus service provided by GDM so that greeters can read custom.conf without parsing the file themselves. This commit changes GdmSettings to use gdbus instead of dbus-glib. https://bugzilla.gnome.org/show_bug.cgi?id=622888
* common: plug small memory leakGiovanni Campagna2012-07-171-0/+1
| | | | | | | | In the event GDM fails to be parse its settings schema file, settings clients will leak the proxy connection. This commit fixes that.
* simple-greeter: only hide Other item if we can skip itRay Strode2012-07-171-3/+3
| | | | | | | | | | | Normally if "Other" is the only thing we'll show, we forgo it and jump straight to the password prompt. There is a bug, though, if multiple authentication methods are enabled. In that case, we hide the user chooser, but don't jump to the Password prompt. This commit makes sure we show the user chooser / Other in that case.
* simple-greeter: drop gdm-user.[ch]Ray Strode2012-07-132-1160/+0
| | | | They're dead code.
* daemon: Drop manager bus watching codeGiovanni Campagna2012-07-131-68/+0
| | | | | | | | | | | GdmManager watches the system bus to see whenever a service leaves. The intent of the code is to stop managing displays associated with slaves that have disappeared. The code wasn't ever finished, though, so drop it for now. It will be easy to add back in a different way after GdmManager has been ported to GDBus.
* worker: Drop unused reauthentication statesRay Strode2012-07-131-53/+1
| | | | | | | | | | | | | It's dead code at the moment, and when the worker will ultimately support reauthentication, it's going to need to do it in a fundamentally different way (using a separate, transient worker process rather than reusing the one sitting there from login time) This commit removes the GDM_SESSION_WORKER_STATE_REAUTHENTICATED, GDM_SESSION_WORKER_STATE_REAUTHORIZED, and GDM_SESSION_WORKER_STATE_REACCREDITED states and associated signal handlers.
* daemon: drop display-id arg to GdmSessionDirectRay Strode2012-07-139-3696/+3305
| | | | It's not used anywhere, and so there's no reason to pass it along.
* daemon: Don't put simple slave interface on busRay Strode2012-07-133-14/+0
| | | | It doesn't do anything.
* daemon: Don't put session objects on busRay Strode2012-07-134-106/+0
| | | | | The exported functions and objects don't do anything, they're just dead code.
* daemon: drop CLOSED signalRay Strode2012-07-134-31/+0
| | | | It was only used by now-removed code.
* daemon: drop reference to non-existent fileRay Strode2012-07-131-1/+0
| | | | we no longer have gdm-product-slave.xml
* daemon: drop if 0'd codeRay Strode2012-07-131-4/+0
| | | | It's referencing api we don't have anymore.
* manager: plug small memory leakGiovanni Campagna2012-07-131-3/+3
| | | | | | | | The finalize handler for GdmManager wasn't properly unreffing its DBus connection or local display factory. This commit fixes that up, and changes the free call for the xdmcp_factory call to match the style of the newly added free calls.
* daemon: s/g_atexit/atexit/Giovanni Campagna2012-07-131-1/+1
| | | | | g_atexit is deprecated. For now replace the g_atexit call with a normal atexit call.
* s/WITH_PLYMOUTH/HAVE_PLYMOUTH/Ray Strode2012-07-131-1/+1
| | | | fixes a compiler warning
* daemon: driveby XDMCP crash fixRay Strode2012-07-132-3/+17
| | | | | | | | | | | | | | | If the XDMCP chooser exits enough times, the whole daemon eventually tanks when the child watch function tries to access freed memory. This commit takes the hammer approach of adding a reference to the slave from the child watch func. It also makes sure that there isn't ever two slaves running for one display at the same time.
* common: fix child reap codeRay Strode2012-07-131-1/+5
|
* data: add desktop file for polkit gnome authentication agentRay Strode2012-07-132-0/+8
| | | | | We now start it in the greeter session, but polkit doesn't ship an agent desktop file, so ship our own.
* worker: fix up consolekit codeRay Strode2012-07-131-1/+1
| | | | | | | | | | ck-connector was recently dropped and replaced with raw gdbus calls. It had a small bug in it's OpenSessionWithParameters call that meant it never got the right return value. This commit fixes that.
* Add --with-default-pam-config option, autodetect from /etc/foo-release filesColin Walters2012-07-105-1/+67
| | | | | | | | | | | | | | | | | | The PAM files that ship with GDM are really specific to Red Hat's historical fork of pam. For example, the "system-auth" file still lives in the Fedora 17 "pam" git. A long while back, Debian hit the same problem, and of course the difference is the naming; common-auth/common-password etc. OpenEmbedded then picked up Debian's PAM fork. Since for OSTree-GNOME we're using Poky/OpenEmbedded, let's add an option to integrate with their PAM. We use code similar to what NetworkManager has, so we should keep using the Red Hat files on systems with /etc/redhat-release or /etc/fedora-release. https://bugzilla.gnome.org/show_bug.cgi?id=675085
* Clean up PAM build/install rules; move to pam-redhatColin Walters2012-07-107-35/+15
| | | | | | | | | | | | | | | | | | | | | | | | The build system was inconsistent in its handling of pam files. The multistack files had names ending in .pam, which we copied to an unsuffixed file, and installed via pam_DATA. The non-multistack files had unsuffixed filenames in the source, which we installed manually via install-data-local. Let's clean this up by naming every file with ".pam", and do the rename when we put them in the install root. This is faster and requires less makefile boilerplate to copy the files during the build process. Note: This also drops the previous crappy implementation of a configuration management scheme where we only installed the files if they didn't already exist. I'm not aware of anyone who actually uses 'make install' for gdm and cares about that semantic. Finally, because all of these pam files are Red Hat specific, move them to a separate pam-redhat directory, to ease the addition of a future patch which adds PAM files for different systems. https://bugzilla.gnome.org/show_bug.cgi?id=675085
* Fix a free/g_free confusionMatthias Clasen2012-07-091-1/+1
| | | | | | The type string is allocated by sd_session_get_type, and is documented as 'free with libc free', so don't call g_free on it, which might theoretically be something else.
* Ignore lingering sessionsMatthias Clasen2012-07-092-2/+19
| | | | | | | | When a session process is slow to die at the session end, or when a process is intentionally leaked (such as screen), a session can linger for a while after the user logged out. Avoid such 'zombie' sessions when looking for an existing session to switch to.
* Updated POTFILES.inPiotr Drąg2012-07-071-7/+0
|
* password: more makefile manueveringRay Strode2012-07-061-3/+0
| | | | | | | | | commit 675d9870a2b1e25190cae29c03bed1e3956f3084 move gdm-password.pam to data/ This commit takes it out the password plugins Makefile.
* daemon: more house cleaningRay Strode2012-07-062-1300/+0
| | | | | | This commit drops gdm-session-relay.c and cleans up .gitignore. (two things missed in the last house cleaning commit)
* simple-greeter: move gdm-password pam file to dataRay Strode2012-07-064-26/+8
| | | | That's where the other two are after all.
* daemon: clean house (drop factory mode)Ray Strode2012-07-0617-3318/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | GDM has a currently unused feature called "factory mode", where the login screen gets allocated its own VT and any subsequent logins from that login screen go to their own VT. Any time there's a user switch GDM just jumps back to initial VT where the login screen is patiently waiting. This feature has a lot of upsides, and we've had it as a TODO item to start using it for while now. It doesn't look it's going to happen in the near term, though, and factory mode has downsides as well: - a VT switch after the user hits enter at the login screen would be jarring and would ruin the "flicker free" boot experience we've tried to acheive at various points in the past. This could theoretically be fixed by Wayland. - it adds a bunch of untested, unused code to the codebase. This latter reason makes me want to kill it for now. It shouldn't be hard to resurrect later if we end up needing the feature. This commit drops that code.
* daemon: fix description of GdmDisplayFactoryRay Strode2012-07-061-1/+1
|