gboolean cockpit_handler_login (CockpitWebServer *server, const gchar *path, GHashTable *headers, CockpitWebResponse *response, CockpitHandlerData *ws) { CockpitWebService *service; CockpitCreds *creds; gchar *remote_peer = NULL; GHashTable *out_headers; GIOStream *io_stream; service = cockpit_auth_check_cookie (ws->auth, headers); if (service == NULL) { io_stream = cockpit_web_response_get_stream (response); remote_peer = get_remote_address (io_stream); cockpit_auth_login_async (ws->auth, headers, remote_peer, on_login_complete, g_object_ref (response)); g_free (remote_peer); } else { out_headers = cockpit_web_server_new_table (); creds = cockpit_web_service_get_creds (service); send_login_response (response, creds, out_headers); g_hash_table_unref (out_headers); g_object_unref (service); } /* no response yet */ return TRUE; }
static void handle_login (CockpitHandlerData *data, CockpitWebService *service, const gchar *path, GHashTable *headers, CockpitWebResponse *response) { GHashTable *out_headers; GIOStream *io_stream; CockpitCreds *creds; JsonObject *creds_json = NULL; if (service) { out_headers = cockpit_web_server_new_table (); creds = cockpit_web_service_get_creds (service); creds_json = cockpit_creds_to_json (creds); send_login_response (response, creds_json, out_headers); g_hash_table_unref (out_headers); json_object_unref (creds_json); return; } io_stream = cockpit_web_response_get_stream (response); cockpit_auth_login_async (data->auth, path,io_stream, headers, on_login_complete, g_object_ref (response)); }
static void handle_login (CockpitHandlerData *data, CockpitWebService *service, const gchar *path, GHashTable *headers, CockpitWebResponse *response) { GHashTable *out_headers; gchar *remote_peer = NULL; GIOStream *io_stream; CockpitCreds *creds; if (service) { out_headers = cockpit_web_server_new_table (); creds = cockpit_web_service_get_creds (service); send_login_response (response, creds, out_headers); g_hash_table_unref (out_headers); } else { io_stream = cockpit_web_response_get_stream (response); remote_peer = get_remote_address (io_stream); cockpit_auth_login_async (data->auth, path, headers, remote_peer, on_login_complete, g_object_ref (response)); g_free (remote_peer); } }
gboolean cockpit_handler_login (CockpitWebServer *server, CockpitWebServerRequestType reqtype, const gchar *path, GHashTable *headers, GBytes *input, CockpitWebResponse *response, CockpitHandlerData *ws) { CockpitWebService *service; gchar *remote_peer = NULL; GIOStream *io_stream; LoginResponse *lr; lr = g_new0 (LoginResponse, 1); lr->response = g_object_ref (response); lr->headers = cockpit_web_server_new_table (); if (reqtype == COCKPIT_WEB_SERVER_REQUEST_GET) { service = cockpit_auth_check_cookie (ws->auth, headers); if (service == NULL) { cockpit_web_response_error (response, 401, NULL, NULL); login_response_free (lr); } else { cockpit_web_service_modules (service, "localhost", on_login_modules, lr); g_object_unref (service); /* no response yet */ } } else if (reqtype == COCKPIT_WEB_SERVER_REQUEST_POST) { io_stream = cockpit_web_response_get_stream (response); remote_peer = get_remote_address (io_stream); cockpit_auth_login_async (ws->auth, headers, input, remote_peer, on_login_complete, lr); g_free (remote_peer); /* no response yet */ } return TRUE; }