Enlightenment CVS committal

Author  : atmosphere
Project : e17
Module  : apps/entrance

Dir     : e17/apps/entrance/src/client


Modified Files:
        entrance_auth.c entrance_auth.h entrance_config.c 
        entrance_ipc.c entrance_session.c entrance_session.h main.c 


Log Message:
o entrance_auth.c
  - add entrance_auth_reset, this puts a bandaid on the bad user attempt,
    good user, good pass, entrance crashes bug, i can not figure out for the
    life of me what free this struct is doing incorrectly... still looking
    into it
  - set_(pass|user) -> (user|pass)_set functions renamed
  - simplified user_set some
o entrance_auth.h
  - set_(pass|user) -> (user|pass)_set functions renamed
o entrance_config.c
  - indent fixup
o entrance_ipc.c
  - send some of those printfs to syslog
o entrance_session.c
  - entrance_session_free
    - cleanup edje, and the containers
  - fix incorrect #ifdef in auth_user function
  - disable the freeing/reallocating of the Entrance_Auth struct in favor of
    resetting
  - entrance_session_user_set
    - parameter change Entrance_User -> const char *user
    - returns and int, 0 on success, 1 on failure
  - entrance_session_pass_set, new function
    - returns and int, 0 on success, 1 on failure of user auth w/ this pass
  - entrance_session_start_user_session
    - changed some syslog output from CRIT to INFO
    - use entrance_session_free where applicable
  - entrance_sesion_x_session_set
    - save user's session when changed in entrance again
o main.c
  - no more referencing nested member info of entrance_session, namely the
    session->auth attribute
  - update to new additions/changes in entrance_session

gonna continue trying to cleanup src/client/ when I get time 


===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_auth.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- entrance_auth.c     10 Dec 2004 23:33:31 -0000      1.20
+++ entrance_auth.c     20 Dec 2004 03:07:04 -0000      1.21
@@ -92,7 +92,8 @@
       e->pam.handle = NULL;
    }
 #endif
-   syslog(LOG_INFO, "Auth: Session Closed Successfully.");
+   /* 
+      syslog(LOG_INFO, "Auth: Session Closed Successfully."); */
 }
 
 /**
@@ -103,8 +104,13 @@
 entrance_auth_clear_pass(Entrance_Auth * e)
 {
    if (e->pw)
+   {
       if (e->pw->pw_passwd)
+      {
          free(e->pw->pw_passwd);
+         e->pw->pw_passwd = NULL;
+      }
+   }
    memset(e->pass, 0, sizeof(e->pass));
 }
 
@@ -119,9 +125,25 @@
       e->pw = struct_passwd_free(e->pw);
 
    memset(e->pass, 0, sizeof(e->pass));
+   entrance_auth_session_end(e);
    free(e);
 }
 
+/**
+ * entrance_auth_reset
+ * @e the Entrance_Auth struct to be reset
+ */
+void
+entrance_auth_reset(Entrance_Auth * e)
+{
+   if (e->pw)
+      e->pw = struct_passwd_free(e->pw);
+
+   memset(e->user, 0, sizeof(e->user));
+   memset(e->pass, 0, sizeof(e->pass));
+}
+
+
 #if HAVE_PAM
 /**
  * _entrance_auth_pam_initialize - initialize PAM session, structures etc.
@@ -260,7 +282,7 @@
  * Pass it a char* and it'll set it if it should
  */
 void
-entrance_auth_set_pass(Entrance_Auth * e, const char *str)
+entrance_auth_pass_set(Entrance_Auth * e, const char *str)
 {
    if (str)
       snprintf(e->pass, PATH_MAX, "%s", str);
@@ -275,15 +297,16 @@
  * to the passed in string, if they don't, e->user is unmodified.
  */
 int
-entrance_auth_set_user(Entrance_Auth * e, const char *str)
+entrance_auth_user_set(Entrance_Auth * e, const char *str)
 {
-   int result = 0;
+   int result = 1;
 
-   if (str)
+   if (e && str)
    {
       struct passwd *pwent;
 
       memset(e->pass, 0, sizeof(e->pass));
+      memset(e->user, 0, sizeof(e->user));
       snprintf(e->user, PATH_MAX, "%s", str);
 
       e->pw = struct_passwd_free(e->pw);
@@ -292,9 +315,6 @@
          e->pw = struct_passwd_dup(pwent);
          result = 0;
       }
-      else
-         result = 1;
-
       endpwent();
    }
    return (result);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_auth.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- entrance_auth.h     1 May 2004 20:44:52 -0000       1.10
+++ entrance_auth.h     20 Dec 2004 03:07:05 -0000      1.11
@@ -70,10 +70,11 @@
 /* 0 on success, 1 on failure */
 int entrance_auth_cmp_pam(Entrance_Auth * e);
 int entrance_auth_cmp_crypt(Entrance_Auth * e, Entrance_Config * cfg);
-void entrance_auth_set_pass(Entrance_Auth * e, const char *str);
+void entrance_auth_pass_set(Entrance_Auth * e, const char *str);
 
 /* 0 on success, 1 on no user by that name */
-int entrance_auth_set_user(Entrance_Auth * e, const char *str);
+int entrance_auth_user_set(Entrance_Auth * e, const char *str);
 void entrance_auth_setup_environment(Entrance_Auth * e);
+void entrance_auth_reset(Entrance_Auth * e);
 
 #endif
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_config.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- entrance_config.c   16 Dec 2004 01:48:11 -0000      1.25
+++ entrance_config.c   20 Dec 2004 03:07:05 -0000      1.26
@@ -190,8 +190,9 @@
       {
          syslog(LOG_CRIT,
                 "/etc/shadow was found but couldn't be read. Run entrance as 
root.");
-         if(getuid() == 0) {
-             exit(-1);
+         if (getuid() == 0)
+         {
+            exit(-1);
          }
       }
    }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_ipc.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- entrance_ipc.c      4 Dec 2004 04:26:13 -0000       1.11
+++ entrance_ipc.c      20 Dec 2004 03:07:05 -0000      1.12
@@ -163,7 +163,7 @@
    if (ipc_title)
       free(ipc_title);
    ipc_title = strdup(buf);
-   printf("Debug: ipc_title = %s\n", ipc_title);
+   syslog(LOG_INFO, "Debug: ipc_title = %s", ipc_title);
    ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD,
                            _entrance_ipc_client_add, NULL);
 
@@ -185,10 +185,10 @@
    if ((server =
         ecore_ipc_server_connect(ECORE_IPC_LOCAL_SYSTEM, ipc_title, 0, NULL)))
    {
-      fprintf(stderr, "entrance_ipc_init: Success\n");
+      syslog(LOG_INFO, "entrance_ipc_init: Success");
    }
    else
-      fprintf(stderr, "entrance_ipc_init: connect to daemon failed.\n");
+      syslog(LOG_INFO, "entrance_ipc_init: connect to daemon failed.");
 
    return TRUE;
 }
@@ -200,7 +200,7 @@
       ecore_ipc_server_del(server);
    server = NULL;
    ecore_ipc_shutdown();
-   fprintf(stderr, "entrance_ipc_shutdown: Success\n");
+   syslog(LOG_INFO, "entrance_ipc_shutdown: Success");
 }
 
 int
@@ -227,6 +227,6 @@
                          0);
    ecore_ipc_server_send(server, E_XAUTH_REQ, E_HOMEDIR, pid, 0, 0, homedir,
                          strlen(homedir) + 1);
-   fprintf(stderr, "entranced: Requesting auth for uid %d (%s)\n", uid,
-           homedir);
+   syslog(LOG_INFO, "entranced: Requesting auth for uid %d (%s)", uid,
+          homedir);
 }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_session.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -3 -r1.65 -r1.66
--- entrance_session.c  10 Dec 2004 23:33:31 -0000      1.65
+++ entrance_session.c  20 Dec 2004 03:07:05 -0000      1.66
@@ -63,7 +63,7 @@
 }
 
 /**
- * entrance_session_free: free the entrance session
+ * entrance_session_ecore_evas_set : 
  * @param e - the Entrance_Session to set the ecore evas for
  * @param ee - the pointer to a fully setup Ecore_Evas we want to run
  */
@@ -104,6 +104,24 @@
          entrance_auth_free(e->auth);
          e->auth = NULL;
       }
+      if (e->edje)
+      {
+         evas_object_hide(e->edje);
+         evas_object_del(e->edje);
+         e->edje = NULL;
+      }
+      if (e->user_container)
+      {
+         evas_object_hide(e->user_container);
+         evas_object_del(e->user_container);
+         e->user_container = NULL;
+      }
+      if (e->session_container)
+      {
+         evas_object_hide(e->session_container);
+         evas_object_del(e->session_container);
+         e->session_container = NULL;
+      }
       if (e->config)
       {
          entrance_config_free(e->config);
@@ -111,6 +129,7 @@
       }
       if (e->ee)
       {
+         ecore_evas_hide(e->ee);
          ecore_evas_free(e->ee);
          e->ee = NULL;
       }
@@ -148,7 +167,7 @@
         {
            ok = 1;
            e->authed = 1;
-           entrance_session_user_set(e, eu);
+           entrance_session_user_set(e, eu->name);
         }
         break;
      case ENTRANCE_AUTOLOGIN_THEME:
@@ -158,7 +177,7 @@
                             e->config->autologin.username)))
         {
            e->authed = 1;
-           entrance_session_user_set(e, eu);
+           entrance_session_user_set(e, eu->name);
            edje_object_signal_emit(e->edje, "entrance,user,auth,success", "");
         }
         break;
@@ -177,7 +196,7 @@
 int
 entrance_session_auth_user(Entrance_Session * e)
 {
-#ifdef HAVE_PAM
+#if HAVE_PAM
    if (e->config->auth == ENTRANCE_USE_PAM)
       return (entrance_auth_cmp_pam(e->auth));
    else
@@ -196,8 +215,13 @@
    {
       Evas_Object *obj = NULL;
 
-      entrance_auth_free(e->auth);
+#if 0
+      if (e->auth)
+         entrance_auth_free(e->auth);
       e->auth = entrance_auth_new();
+#else
+      entrance_auth_reset(e->auth);
+#endif
       if ((obj =
            edje_object_part_swallow_get(e->edje, "entrance.user.avatar")))
       {
@@ -215,14 +239,16 @@
  * @param e - the entrance sesssion currently running
  * @param eu - the new entrance user we're setting as "current"
  */
-void
-entrance_session_user_set(Entrance_Session * e, Entrance_User * eu)
+int
+entrance_session_user_set(Entrance_Session * e, const char *user)
 {
+   int result = 1;
    Evas_Object *obj = NULL;
    const char *file = NULL;
    Entrance_X_Session *exs = NULL;
+   Entrance_User *eu = NULL;
 
-   if (e && eu)
+   if (e)
    {
       if ((obj =
            edje_object_part_swallow_get(e->edje, "entrance.user.avatar")))
@@ -230,71 +256,54 @@
          edje_object_part_unswallow(e->edje, obj);
          evas_object_del(obj);
       }
-      edje_object_file_get(e->edje, &file, NULL);
-      if ((obj = entrance_user_edje_get(eu, e->edje, file)))
+      if (!entrance_auth_user_set(e->auth, user))
       {
-         if (!entrance_auth_set_user(e->auth, eu->name))
+         if ((eu = evas_hash_find(e->config->users.hash, user)) == NULL)
+            eu = entrance_user_new(strdup(user), NULL, e->session);
+
+         if ((eu->session) && (strlen(eu->session) > 0))
          {
-            if ((eu->session) && (strlen(eu->session) > 0))
-            {
-               if (e->session)
-                  free(e->session);
-               e->session = strdup(eu->session);
-               if ((exs =
-                    evas_hash_find(e->config->sessions.hash, eu->session)))
-               {
-                  entrance_session_x_session_set(e, exs);
-               }
-            }
-#if 0
-            if ((pass = edje_file_data_get(file, "password")))
+            if (e->session)
+               free(e->session);
+            e->session = strdup(eu->session);
+         }
+         edje_object_file_get(e->edje, &file, NULL);
+         if ((obj = entrance_user_edje_get(eu, e->edje, file)))
+         {
+            if ((exs = evas_hash_find(e->config->sessions.hash, eu->session)))
             {
-               entrance_auth_set_pass(e->auth, pass);
-               result = entrance_session_auth_user(e);
-               if (result == 0)
-               {
-                  if (edje_object_part_exists
-                      (e->edje, "entrance.user.avatar"))
-                  {
-                     edje_object_part_swallow(e->edje, "entrance.user.avatar",
-                                              obj);
-                  }
-                  edje_object_signal_emit(e->edje,
-                                          "entrance,user,auth,success", "");
-                  e->authed = 1;
-               }
-               else
-               {
-                  edje_object_signal_emit(e->edje, "entrance,user,auth,fail",
-                                          "");
-                  evas_object_del(obj);
-               }
+               entrance_session_x_session_set(e, exs);
             }
-            else
+            evas_object_layer_set(obj, evas_object_layer_get(e->edje));
+            if (edje_object_part_exists(e->edje, "entrance.user.avatar"))
             {
-#endif
-               evas_object_layer_set(obj, evas_object_layer_get(e->edje));
-               if (edje_object_part_exists(e->edje, "entrance.user.avatar"))
-               {
-                  edje_object_part_swallow(e->edje, "entrance.user.avatar",
-                                           obj);
-               }
-               edje_object_signal_emit(e->edje, "In", "entrance.entry.pass");
-               edje_object_signal_emit(e->edje, "entrance,user,success", "");
-               edje_object_signal_emit(e->edje, "entrance,user,selected", "");
-#if 0
+               edje_object_part_swallow(e->edje, "entrance.user.avatar", obj);
             }
-#endif
-         }
-         else
-         {
-            evas_object_del(obj);
-            /* edje_object_signal_emit(e->edje, "In", "entrance.entry.pass"); 
-             */
-            edje_object_signal_emit(e->edje, "entrance,user,fail", "");
          }
+         edje_object_signal_emit(e->edje, "In", "entrance.entry.pass");
+         edje_object_signal_emit(e->edje, "entrance,user,success", "");
+         edje_object_signal_emit(e->edje, "entrance,user,selected", "");
+         result = 0;
+      }
+      else
+      {
+         edje_object_signal_emit(e->edje, "entrance,user,fail", "");
       }
    }
+   return (result);
+}
+
+int
+entrance_session_pass_set(Entrance_Session * e, const char *pass)
+{
+   int result = 1;
+
+   if (e)
+   {
+      entrance_auth_pass_set(e->auth, pass);
+      result = entrance_session_auth_user(e);
+   }
+   return (result);
 }
 
 /**
@@ -374,10 +383,11 @@
    if (e->testing)
       snprintf(buf, PATH_MAX, "/usr/X11R6/bin/xterm");
 
-   syslog(LOG_CRIT, "Executing %s", buf);
+   syslog(LOG_INFO, "Executing %s", buf);
 
    if (e->ee)
    {
+      ecore_evas_hide(e->ee);
       ecore_evas_free(e->ee);
       e->ee = NULL;
    }
@@ -413,9 +423,7 @@
         if (setuid(e->auth->pw->pw_uid))
            syslog(LOG_CRIT, "Unable to set user id.");
         shell = strdup(e->auth->pw->pw_shell);
-        entrance_auth_clear_pass(e->auth);
-        entrance_auth_free(e->auth);
-        e->auth = NULL;
+        entrance_session_free(e);
         execl(shell, "-", "-c", buf, NULL);
         exit(0);
         break;
@@ -426,9 +434,7 @@
         break;
    }
    _entrance_session_user_list_fix(e);
-   /* clear users's password out of memory */
-   if (e->auth)
-      entrance_auth_clear_pass(e->auth);
+   entrance_session_free(e);
    /* this bypasses a race condition where entrance loses its x connection */
    /* before the wm gets it and x goes and resets itself */
    sleep(10);
@@ -454,6 +460,7 @@
    {
       const char *file = NULL;
       Evas_Object *o = NULL, *old_o = NULL;
+      Entrance_User *eu = NULL;
 
       edje_object_file_get(e->edje, &file, NULL);
       if ((o = entrance_x_session_edje_get(exs, e->edje, file)))
@@ -462,6 +469,14 @@
             free(e->session);
          e->session = strdup(exs->session);
 
+         if ((eu =
+              evas_hash_find(e->config->users.hash, e->auth->user)) != NULL)
+         {
+            if (eu->session)
+               free(eu->session);
+            eu->session = strdup(e->session);
+         }
+
          old_o =
             edje_object_part_swallow_get(e->edje,
                                          "entrance.xsessions.selected");
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_session.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- entrance_session.h  7 Dec 2004 02:45:30 -0000       1.20
+++ entrance_session.h  20 Dec 2004 03:07:05 -0000      1.21
@@ -48,8 +48,9 @@
 void entrance_session_run(Entrance_Session * e);
 int entrance_session_auth_user(Entrance_Session * e);
 void entrance_session_user_reset(Entrance_Session * e);
-void entrance_session_user_set(Entrance_Session * e, Entrance_User * user);
+int entrance_session_user_set(Entrance_Session * e, const char *user);
 void entrance_session_user_session_default_set(Entrance_Session * e);
+int entrance_session_pass_set(Entrance_Session * e, const char *pass);
 void entrance_session_setup_user_session(Entrance_Session * e);
 void entrance_session_start_user_session(Entrance_Session * e);
 void entrance_session_edje_object_set(Entrance_Session * e,
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/main.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -3 -r1.64 -r1.65
--- main.c      10 Dec 2004 23:33:31 -0000      1.64
+++ main.c      20 Dec 2004 03:07:05 -0000      1.65
@@ -155,18 +155,15 @@
 interp_return_key(void *data, const char *str)
 {
    Evas_Object *o = NULL;
-   Entrance_User *eu = NULL;
 
    o = (Evas_Object *) data;
 
    if (!strcmp(esmart_text_entry_edje_part_get(o), "entrance.entry.user"))
    {
-      if (!entrance_auth_set_user(session->auth, str))
+      if (!entrance_session_user_set(session, str))
       {
          edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
                                  "entrance,user,success", "");
-         if ((eu = evas_hash_find(session->config->users.hash, str)))
-            entrance_session_user_set(session, eu);
          focus_swap(o, 0);
       }
       else
@@ -180,22 +177,19 @@
    }
    if (!strcmp(esmart_text_entry_edje_part_get(o), "entrance.entry.pass"))
    {
-      if (session->auth->user && strlen(session->auth->user) > 0)
+      if (!entrance_session_pass_set(session, str))
       {
-         entrance_auth_set_pass(session->auth, str);
-         if (!entrance_session_auth_user(session))
-         {
-            session->authed = 1;
-            edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
-                                    "entrance,user,auth,success", "");
-         }
-         else
-         {
-            entrance_session_user_reset(session);
-            edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
-                                    "entrance,user,auth,fail", "");
-            focus_swap(o, 0);
-         }
+         session->authed = 1;
+         edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
+                                 "entrance,user,auth,success", "");
+      }
+      else
+      {
+         esmart_text_entry_text_set(o, "");
+         entrance_session_user_reset(session);
+         edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
+                                 "entrance,user,auth,fail", "");
+         focus_swap(o, 0);
       }
    }
 }
@@ -306,8 +300,8 @@
        * Request cookie here and call ecore_main_loop_quit, after we
        * receive the cookie back from server
        */
+      entrance_session_setup_user_session(session);
    }
-   entrance_session_setup_user_session(session);
 }
 
 /**
@@ -348,7 +342,7 @@
 {
    if (session && data)
    {
-      entrance_session_user_set(session, (Entrance_User *) data);
+      entrance_session_user_set(session, ((Entrance_User *) data)->name);
    }
 }
 
@@ -973,16 +967,15 @@
       if (session->authed)
       {
          entrance_session_start_user_session(session);
-         entrance_session_free(session);
       }
       else
       {
          entrance_session_free(session);
-         ecore_evas_shutdown();
       }
       if (!testing)
          entrance_ipc_shutdown();
       edje_shutdown();
+      ecore_evas_shutdown();
       ecore_x_shutdown();
       ecore_shutdown();
    }
@@ -991,6 +984,5 @@
       fprintf(stderr, "Fatal error: Could not initialize ecore_evas!\n");
       exit(1);
    }
-
    return (0);
 }




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to