2012-08-09 13:15:30 -07:00
|
|
|
#include <Ecore_Con.h>
|
|
|
|
#include "entrance_client.h"
|
|
|
|
|
2013-09-03 17:10:38 -07:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
Entrance_Connect_Auth_Cb func;
|
|
|
|
void *data;
|
|
|
|
} Entrance_Connect_Auth;
|
2012-08-09 13:15:30 -07:00
|
|
|
|
|
|
|
static Eina_Bool _entrance_connect_add(void *data, int type, void *event);
|
|
|
|
static Eina_Bool _entrance_connect_del(void *data, int type, void *event);
|
|
|
|
static Eina_Bool _entrance_connect_data(void *data, int type, void *event);
|
2013-10-29 11:26:56 -07:00
|
|
|
static void _entrance_connect_auth(const char *login, Eina_Bool granted);
|
2012-08-09 13:15:30 -07:00
|
|
|
|
2013-09-03 17:10:38 -07:00
|
|
|
static Ecore_Con_Server *_entrance_connect;
|
|
|
|
static Eina_List *_handlers = NULL;
|
|
|
|
static Eina_List *_auth_list = NULL;
|
2012-08-09 13:15:30 -07:00
|
|
|
|
|
|
|
static Eina_Bool
|
2013-10-29 11:26:56 -07:00
|
|
|
_entrance_connect_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
2012-09-11 12:52:26 -07:00
|
|
|
PT("connected\n");
|
2012-08-09 13:15:30 -07:00
|
|
|
return ECORE_CALLBACK_RENEW;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Bool
|
2013-10-29 11:26:56 -07:00
|
|
|
_entrance_connect_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
2012-09-11 12:52:26 -07:00
|
|
|
PT("disconnected\n");
|
2012-08-09 13:15:30 -07:00
|
|
|
_entrance_connect = NULL;
|
|
|
|
|
|
|
|
return ECORE_CALLBACK_RENEW;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Bool
|
2013-10-29 11:26:56 -07:00
|
|
|
_entrance_connect_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
|
|
|
Ecore_Con_Event_Server_Data *ev;
|
|
|
|
ev = event;
|
|
|
|
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_event_received(ev->data, ev->size);
|
|
|
|
|
|
|
|
return ECORE_CALLBACK_RENEW;
|
|
|
|
}
|
|
|
|
|
2013-09-03 17:10:38 -07:00
|
|
|
static void
|
2013-10-29 11:26:56 -07:00
|
|
|
_entrance_connect_auth(const char *login, Eina_Bool granted)
|
2013-09-03 17:10:38 -07:00
|
|
|
{
|
|
|
|
Entrance_Connect_Auth *auth;
|
|
|
|
Eina_List *l, *ll;
|
|
|
|
|
|
|
|
EINA_LIST_FOREACH_SAFE(_auth_list, l, ll, auth)
|
|
|
|
{
|
|
|
|
if (auth->func)
|
2013-10-29 11:26:56 -07:00
|
|
|
auth->func(auth->data, login, granted);
|
2013-09-03 17:10:38 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-09-03 11:08:37 -07:00
|
|
|
static Eina_Bool
|
|
|
|
_entrance_connect_read_cb(const void *data, size_t size EINA_UNUSED, void *user_data EINA_UNUSED)
|
|
|
|
{
|
|
|
|
const Entrance_Event *eev;
|
|
|
|
eev = data;
|
2012-08-09 13:15:30 -07:00
|
|
|
if (eev)
|
|
|
|
{
|
|
|
|
if (eev->type == ENTRANCE_EVENT_STATUS)
|
|
|
|
{
|
|
|
|
if (eev->event.status.granted)
|
2013-09-03 17:10:38 -07:00
|
|
|
PT("Auth granted :)\n");
|
2012-08-09 13:15:30 -07:00
|
|
|
else
|
2013-09-03 17:10:38 -07:00
|
|
|
PT("Auth error :(\n");
|
2013-10-29 11:26:56 -07:00
|
|
|
_entrance_connect_auth(eev->event.status.login,
|
|
|
|
eev->event.status.granted);
|
2012-08-09 13:15:30 -07:00
|
|
|
}
|
|
|
|
else if (eev->type == ENTRANCE_EVENT_MAXTRIES)
|
2013-09-03 11:08:37 -07:00
|
|
|
{
|
|
|
|
PT("Max tries !\n");
|
|
|
|
entrance_gui_auth_max_tries();
|
|
|
|
}
|
2012-08-09 13:15:30 -07:00
|
|
|
else if (eev->type == ENTRANCE_EVENT_XSESSIONS)
|
2013-09-03 11:08:37 -07:00
|
|
|
{
|
|
|
|
PT("Xsession received\n");
|
|
|
|
entrance_gui_xsessions_set(eev->event.xsessions.xsessions);
|
|
|
|
}
|
2012-08-09 13:15:30 -07:00
|
|
|
else if (eev->type == ENTRANCE_EVENT_USERS)
|
2013-09-03 11:08:37 -07:00
|
|
|
{
|
|
|
|
PT("Users received\n");
|
|
|
|
entrance_gui_users_set(eev->event.users.users);
|
|
|
|
}
|
2012-08-09 13:15:30 -07:00
|
|
|
else if (eev->type == ENTRANCE_EVENT_ACTIONS)
|
2013-09-03 11:08:37 -07:00
|
|
|
{
|
|
|
|
PT("Action received\n");
|
|
|
|
entrance_gui_actions_set(eev->event.actions.actions);
|
|
|
|
}
|
|
|
|
else if (eev->type == ENTRANCE_EVENT_CONF_GUI)
|
|
|
|
{
|
|
|
|
PT("Gui conf received\n");
|
|
|
|
entrance_gui_conf_set(&(eev->event.conf_gui));
|
|
|
|
}
|
2012-08-09 13:15:30 -07:00
|
|
|
else
|
2013-09-03 11:08:37 -07:00
|
|
|
{
|
|
|
|
PT("UNKNOW signal ");
|
|
|
|
fprintf(stderr, "%d\n", eev->type);
|
|
|
|
}
|
|
|
|
//free(eev);
|
2012-08-09 13:15:30 -07:00
|
|
|
}
|
|
|
|
return ECORE_CALLBACK_RENEW;
|
|
|
|
}
|
|
|
|
|
2013-09-03 11:08:37 -07:00
|
|
|
static Eina_Bool
|
|
|
|
_entrance_connect_write_cb(const void *data, size_t size, void *user_data EINA_UNUSED)
|
|
|
|
{
|
|
|
|
ecore_con_server_send(_entrance_connect, data, size);
|
|
|
|
return ECORE_CALLBACK_RENEW;
|
|
|
|
}
|
|
|
|
|
2012-08-09 13:15:30 -07:00
|
|
|
void
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_connect_auth_send(const char *login, const char *password, const char *session, Eina_Bool open_session)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
|
|
|
Entrance_Event eev;
|
|
|
|
|
2013-09-03 11:08:37 -07:00
|
|
|
PT("Request auth\n");
|
2012-08-09 13:15:30 -07:00
|
|
|
eev.event.auth.login = login;
|
|
|
|
eev.event.auth.password = password;
|
|
|
|
eev.event.auth.session = session;
|
2013-09-03 11:08:37 -07:00
|
|
|
eev.event.auth.open_session = open_session;
|
2012-08-09 13:15:30 -07:00
|
|
|
eev.type = ENTRANCE_EVENT_AUTH;
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_event_send(&eev);
|
2012-08-09 13:15:30 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_connect_action_send(unsigned char id)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
|
|
|
Entrance_Event eev;
|
|
|
|
|
2013-09-03 11:08:37 -07:00
|
|
|
PT("Request action %d\n", id);
|
2012-08-09 13:15:30 -07:00
|
|
|
eev.event.action.action = id;
|
|
|
|
eev.type = ENTRANCE_EVENT_ACTION;
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_event_send(&eev);
|
2012-08-09 13:15:30 -07:00
|
|
|
}
|
|
|
|
|
2013-09-03 11:08:37 -07:00
|
|
|
void
|
2014-01-09 15:10:30 -08:00
|
|
|
entrance_connect_conf_gui_send(Entrance_Conf_Gui_Event *ev)
|
2013-09-03 11:08:37 -07:00
|
|
|
{
|
|
|
|
Entrance_Event eev;
|
2014-01-09 15:10:30 -08:00
|
|
|
PT("Send gui config\n");
|
2013-09-03 11:08:37 -07:00
|
|
|
eev.event.conf_gui.bg.path = ev->bg.path;
|
|
|
|
eev.event.conf_gui.bg.group = ev->bg.group;
|
|
|
|
|
|
|
|
eev.type = ENTRANCE_EVENT_CONF_GUI;
|
|
|
|
entrance_event_send(&eev);
|
|
|
|
}
|
|
|
|
|
2014-01-09 15:10:30 -08:00
|
|
|
void
|
|
|
|
entrance_connect_conf_user_send(Entrance_Login *el)
|
|
|
|
{
|
|
|
|
Entrance_Event eev;
|
|
|
|
PT("Send user config\n");
|
|
|
|
eev.event.conf_user.login = el->login;
|
|
|
|
eev.event.conf_user.lsess = el->lsess;
|
|
|
|
eev.event.conf_user.image.group = el->image.group;
|
|
|
|
eev.event.conf_user.image.path = el->image.path;
|
|
|
|
eev.event.conf_user.bg.path = el->bg.path;
|
|
|
|
eev.event.conf_user.bg.group = el->bg.group;
|
|
|
|
eev.event.conf_user.remember_session = el->remember_session;
|
|
|
|
eev.type = ENTRANCE_EVENT_CONF_USER;
|
|
|
|
entrance_event_send(&eev);
|
|
|
|
}
|
|
|
|
|
2013-09-03 17:10:38 -07:00
|
|
|
void *
|
|
|
|
entrance_connect_auth_cb_add(Entrance_Connect_Auth_Cb func, void *data)
|
|
|
|
{
|
|
|
|
PT("auth handler add\n");
|
|
|
|
Entrance_Connect_Auth *auth;
|
|
|
|
auth = malloc(sizeof(Entrance_Connect_Auth));
|
|
|
|
auth->func = func;
|
|
|
|
auth->data = data;
|
|
|
|
_auth_list = eina_list_append(_auth_list, auth);
|
|
|
|
return auth;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
entrance_connect_auth_cb_del(void *auth)
|
|
|
|
{
|
|
|
|
PT("auth handler remove\n");
|
|
|
|
_auth_list = eina_list_remove(_auth_list, auth);
|
|
|
|
}
|
2013-09-03 11:08:37 -07:00
|
|
|
|
2012-08-09 13:15:30 -07:00
|
|
|
void
|
2014-01-08 15:04:44 -08:00
|
|
|
entrance_connect_init(void)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
|
|
|
Ecore_Event_Handler *h;
|
|
|
|
ecore_con_init();
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_event_init(_entrance_connect_read_cb,
|
|
|
|
_entrance_connect_write_cb,
|
|
|
|
NULL);
|
2012-08-09 13:15:30 -07:00
|
|
|
_entrance_connect = ecore_con_server_connect(ECORE_CON_LOCAL_SYSTEM,
|
2013-09-03 11:08:37 -07:00
|
|
|
"entrance", 42, NULL);
|
2012-08-09 13:15:30 -07:00
|
|
|
if (_entrance_connect)
|
2012-09-11 12:52:26 -07:00
|
|
|
PT("client server init ok\n");
|
2012-08-09 13:15:30 -07:00
|
|
|
else
|
2012-09-11 12:52:26 -07:00
|
|
|
PT("client server init fail\n");
|
2012-08-09 13:15:30 -07:00
|
|
|
h = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD,
|
|
|
|
_entrance_connect_add, NULL);
|
|
|
|
_handlers = eina_list_append(_handlers, h);
|
|
|
|
h = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL,
|
|
|
|
_entrance_connect_del, NULL);
|
|
|
|
_handlers = eina_list_append(_handlers, h);
|
|
|
|
h = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA,
|
|
|
|
_entrance_connect_data, NULL);
|
|
|
|
_handlers = eina_list_append(_handlers, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2014-01-08 15:04:44 -08:00
|
|
|
entrance_connect_shutdown(void)
|
2012-08-09 13:15:30 -07:00
|
|
|
{
|
|
|
|
Ecore_Event_Handler *h;
|
|
|
|
EINA_LIST_FREE(_handlers, h)
|
|
|
|
ecore_event_handler_del(h);
|
2013-09-03 11:08:37 -07:00
|
|
|
entrance_event_shutdown();
|
2012-08-09 13:15:30 -07:00
|
|
|
ecore_con_shutdown();
|
|
|
|
}
|
|
|
|
|