Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 293071 Details for
Bug 430388
patch for libck-connector integration
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
use ck-connector to start the consolekit session
kdebase-workspace-4.0.0-connector.patch (text/plain), 9.34 KB, created by
Patrice Dumas
on 2008-01-27 11:12:46 UTC
(
hide
)
Description:
use ck-connector to start the consolekit session
Filename:
MIME Type:
Creator:
Patrice Dumas
Created:
2008-01-27 11:12:46 UTC
Size:
9.34 KB
patch
obsolete
>diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/config-kdm.h.cmake.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/config-kdm.h.cmake >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/config-kdm.h.cmake.connector 2008-01-26 23:18:32.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/config-kdm.h.cmake 2008-01-26 23:19:38.000000000 +0100 >@@ -123,6 +123,9 @@ > /* Define to 1 if you have the <termios.h> header file. */ > #cmakedefine HAVE_TERMIOS_H 1 > >+/* Define to 1 if the ck-connector library is found */ >+#cmakedefine HAVE_CKCONNECTOR 1 >+ > /* $PATH defaults set by KDM */ > #cmakedefine KDM_DEF_USER_PATH "${KDM_DEF_USER_PATH}" > #cmakedefine KDM_DEF_SYSTEM_PATH "${KDM_DEF_SYSTEM_PATH}" >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/ConfigureChecks.cmake.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/ConfigureChecks.cmake >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/ConfigureChecks.cmake.connector 2008-01-05 00:55:45.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/ConfigureChecks.cmake 2008-01-26 21:36:47.000000000 +0100 >@@ -170,6 +170,8 @@ check_function_exists(strnlen HAVE_S > check_struct_member("struct sockaddr_in" "sin_len" "sys/socket.h;netinet/in.h" HAVE_STRUCT_SOCKADDR_IN_SIN_LEN) > check_struct_member("struct sockaddr_in6" "sin6_len" "sys/socket.h;netinet/in.h" HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN) > >+pkg_check_modules(CKCONNECTOR ck-connector) >+ > FOREACH(path /usr/local/bin /usr/bin /bin) > if (XBINDIR STREQUAL ${path}) > set(dont_add_xbin 1) >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/CMakeLists.txt.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/CMakeLists.txt >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/CMakeLists.txt.connector 2008-01-05 00:55:45.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/CMakeLists.txt 2008-01-26 22:41:45.000000000 +0100 >@@ -4,6 +4,7 @@ include_directories( BEFORE ${CMAKE_CURR > install_pam_service(KDM) > > include(ConfigureChecks.cmake) >+macro_bool_to_01(CKCONNECTOR_FOUND HAVE_CKCONNECTOR) > configure_file(config-kdm.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kdm.h) > > install( FILES README DESTINATION ${DATA_INSTALL_DIR}/doc/kdm ) >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/session.c.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/session.c >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/session.c.connector 2008-01-26 23:33:40.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/session.c 2008-01-27 11:14:44.000000000 +0100 >@@ -45,6 +45,14 @@ from the copyright holder. > #include <ctype.h> > #include <signal.h> > >+#ifdef HAVE_CKCONNECTOR >+#include <ck-connector.h> >+#include <dbus/dbus.h> >+/* for getpwnam */ >+#include <sys/types.h> >+#include <pwd.h> >+#endif >+ > struct display *td; > const char *td_setup = "auto"; > >@@ -553,6 +561,18 @@ manageSession( struct display *d ) > volatile time_t tdiff = 0; > sigset_t ss; > >+#ifdef HAVE_CKCONNECTOR >+ DBusError error; >+ CkConnector *connector; >+ char *ck_session_cookie; >+ struct passwd *pwent; >+ char device[20] = ""; >+#ifdef XDMCP >+ char *empty_hostname = ""; >+ char **remote_host_name; >+#endif >+#endif >+ > td = d; > debug( "manageSession %s\n", d->name ); > if ((ex = Setjmp( abortSession ))) { >@@ -627,8 +647,63 @@ manageSession( struct display *d ) > > if (td_setup) > setupDisplay( td_setup ); >+#ifdef HAVE_VTS >+ if (d->serverVT > 0) { >+ /* FIXME: how does xorg construct this */ >+ sprintf(device, "/dev/tty%d", d->serverVT); >+ } >+#endif > >+#ifdef HAVE_CKCONNECTOR >+ pwent = getpwnam(curuser); >+ if (pwent == NULL) { >+ debug ("NULL user\n"); >+ sessionExit( EX_NORMAL ); >+ } >+ connector = ck_connector_new (); >+#ifdef XDMCP >+ if ((d->displayType & d_location) != dLocal) { >+ remote_host_name = &(d->remoteHost); >+ } else { >+ remote_host_name = &empty_hostname; >+ if (strlen(device) == 0) >+ sessionExit( EX_NORMAL ); >+ } >+#else >+ if (strlen(device) == 0) >+ sessionExit( EX_NORMAL ); >+#endif >+ >+ if (connector != NULL) { >+ dbus_error_init (&error); >+ if ( !(ck_connector_open_session_with_parameters (connector, >+ &error, "unix-user", &(pwent->pw_uid), >+ "display-device", &device, >+ "x11-display", &(d->name), >+ "is-local", ((d->displayType & d_location) == dLocal), >+#ifdef XDMCP >+ "remote-host-name", remote_host_name, >+#endif >+ NULL))) { >+ if (dbus_error_is_set (&error)) { >+ logError( "ConsoleKit open: %s\n", error.message); >+ dbus_error_free (&error); >+ } else { >+ logError("cannot open CK session: OOM, D-Bus system bus not available,\n" >+ "ConsoleKit not available or insufficient privileges.\n"); >+ } >+ ck_connector_unref (connector); >+ sessionExit( EX_NORMAL ); >+ } >+ } else { >+ debug ("OOM creating CkConnector\n"); >+ sessionExit( EX_NORMAL ); >+ } >+ ck_session_cookie = ck_connector_get_cookie (connector); >+ if (!startClient( &clientPid, ck_session_cookie )) { >+#else > if (!startClient( &clientPid )) { >+#endif > logError( "Client start failed\n" ); > sessionExit( EX_NORMAL ); /* XXX maybe EX_REMANAGE_DPY? -- enable in dm.c! */ > } >@@ -650,6 +725,23 @@ manageSession( struct display *d ) > catchTerm( SIGTERM ); > } > } >+ >+/* close consolekit session */ >+#ifdef HAVE_CKCONNECTOR >+ if (ck_session_cookie != NULL) { >+ dbus_error_init (&error); >+ if (! ck_connector_close_session (connector, &error)) { >+ if (dbus_error_is_set (&error)) { >+ logError ("ConsoleKit close: %s\n", error.message); >+ dbus_error_free (&error); >+ } else { >+ logError ("Cannot close CK session: OOM, D-Bus system bus not available,\n" >+ "ConsoleKit not available or insufficient privileges.\n"); >+ } >+ } >+ ck_connector_unref (connector); >+ } >+#endif > /* > * Sometimes the Xsession somehow manages to exit before > * a server crash is noticed - so we sleep a bit and wait >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/client.c.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/client.c >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/client.c.connector 2008-01-26 23:29:02.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/client.c 2008-01-27 00:27:59.000000000 +0100 >@@ -1179,7 +1179,11 @@ sendMsg( int lv, const char *msg, ... ) > */ > > int >+#ifdef HAVE_CKCONNECTOR >+startClient( volatile int *pid, const char *ck_session_cookie ) >+#else > startClient( volatile int *pid ) >+#endif > { > const char *home, *sessargs, *desksess; > char **env, *xma; >@@ -1268,6 +1272,11 @@ startClient( volatile int *pid ) > if (krbtkfile[0] != '\0') > env = setEnv( env, "KRBTKFILE", krbtkfile ); > #endif >+#ifdef HAVE_CKCONNECTOR >+ if (ck_session_cookie != NULL) { >+ env = setEnv ( env, "XDG_SESSION_COOKIE", ck_session_cookie ); >+ } >+#endif > userEnviron = inheritEnv( env, envvars ); > env = systemEnv( 0, curuser ); > systemEnviron = setEnv( env, "HOME", p->pw_dir ); >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/CMakeLists.txt.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/CMakeLists.txt >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/CMakeLists.txt.connector 2008-01-26 22:05:26.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/CMakeLists.txt 2008-01-27 01:50:27.000000000 +0100 >@@ -50,6 +50,9 @@ macro_add_file_dependencies(dm.h ${confc > macro_add_file_dependencies(error.c ${CMAKE_CURRENT_SOURCE_DIR}/printf.c) > kde4_add_executable(kdm NOGUI ${kdm_SRCS}) > macro_add_compile_flags(kdm -U_REENTRANT) >+string(REGEX REPLACE ";" " " CKCONNECTOR_CFLAGS_STRING "${CKCONNECTOR_CFLAGS}") >+set_source_files_properties (session.c PROPERTIES COMPILE_FLAGS >+ "${CKCONNECTOR_CFLAGS_STRING}") > target_link_libraries( kdm > ${X11_X11_LIB} ${X11_Xau_LIB} ${X11_Xdmcp_LIB} ${X11_X_EXTRA_LIBS} > ${UNIXAUTH_LIBRARIES} >@@ -59,6 +62,7 @@ target_link_libraries( kdm > ${KRB5_LIBRARIES} > ${SOCKET_LIBRARIES} > ${RESOLV_LIBRARIES} >+ ${CKCONNECTOR_LDFLAGS} > ) > if(UTIL_LIBRARIES) > target_link_libraries( kdm ${UTIL_LIBRARIES} ) >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/dm.h.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/dm.h >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/dm.h.connector 2008-01-26 23:32:44.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/dm.h 2008-01-26 23:33:28.000000000 +0100 >@@ -504,7 +504,11 @@ char **gRecvArgv( void ); > #define GCONV_BINARY 5 > typedef char *(*GConvFunc)( int what, const char *prompt ); > int verify( GConvFunc gconv, int rootok ); >+#ifdef HAVE_CKCONNECTOR >+int startClient( volatile int *pid, const char *ck_session_cookie ); >+#else > int startClient( volatile int *pid ); >+#endif > void clientExited( void ); > void sessionExit( int status ) ATTR_NORETURN; > int readDmrc( void ); >diff -up kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/xdmcp.c.connector kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/xdmcp.c >--- kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/xdmcp.c.connector 2008-01-27 02:34:38.000000000 +0100 >+++ kdebase-workspace-4.0.0-no-consolekit-work/kdm/backend/xdmcp.c 2008-01-27 02:35:45.000000000 +0100 >@@ -1016,6 +1016,8 @@ manage( struct sockaddr *from, int froml > d->clientAddr = clientAddress; > d->clientPort = clientPort; > d->connectionType = connectionType; >+ d->remoteHost = networkAddressToHostname (pdpy->connectionType, >+ &pdpy->connectionAddress); > if (pdpy->fileAuthorization) { > d->authorizations = (Xauth **)Malloc( sizeof(Xauth *) ); > if (!d->authorizations) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 430388
:
293071
|
311784