Esempio n. 1
0
EventdRelayServer *
eventd_relay_server_new_for_domain(EventdCoreContext *core, const gchar *server_identity, gboolean accept_unknown_ca, gboolean use_websocket, gchar **forwards, gchar **subscriptions, const gchar *domain)
{
    EventcConnection *connection;
    GError *error = NULL;

    connection = eventc_connection_new(domain, &error);
    if ( connection == NULL )
    {
        g_warning("Couldn't get address for relay server '%s': %s", domain, error->message);
        g_clear_error(&error);
        return NULL;
    }

    EventdRelayServer *server;

    server = eventd_relay_server_new(core, server_identity, accept_unknown_ca, use_websocket, forwards, subscriptions);
    server->connection = connection;

    _eventd_relay_server_setup_connection(server);

    return server;
}
Esempio n. 2
0
int
main(int argc, char *argv[])
{
    int r = 0;
    gchar *host = NULL;
    gchar **event_data_name = NULL;
    gchar **event_data_content = NULL;

    gboolean print_version = FALSE;

    GOptionEntry entries[] =
    {
        { "data-name",    'd', 0, G_OPTION_ARG_STRING_ARRAY, &event_data_name,    "Event data name to send",                                "<name>" },
        { "data-content", 'c', 0, G_OPTION_ARG_STRING_ARRAY, &event_data_content, "Event data content to send (must be after a data-name)", "<content>" },
        { "host",         'h', 0, G_OPTION_ARG_STRING,       &host,               "Host to connect to",                                     "<host>" },
        { "max-tries",    'm', 0, G_OPTION_ARG_INT,          &max_tries,          "Maximum connection attempts (0 for infinite)",           "<times>" },
        { "wait",         'w', 0, G_OPTION_ARG_NONE,         &wait_event_end,     "Wait the end of the event",                              NULL },
        { "version",      'V', 0, G_OPTION_ARG_NONE,         &print_version,      "Print version",                                          NULL },
        { NULL }
    };
    GOptionContext *opt_context = g_option_context_new("<event category> <event name> - Basic CLI client for eventd");

    g_option_context_add_main_entries(opt_context, entries, GETTEXT_PACKAGE);

    GError *error = NULL;
    if ( ! g_option_context_parse(opt_context, &argc, &argv, &error) )
    {
        g_warning("Couldn't parse the arguments: %s", error->message);
        g_option_context_free(opt_context);
        return 1;
    }
    g_option_context_free(opt_context);

    if ( print_version )
    {
        g_print("eventc %s (using libeventc %s)\n",
            PACKAGE_VERSION,
            eventc_get_version());
        goto end;
    }

    r = 1; /* We are checking arguments */

    if ( argc < 2 )
    {
        g_print("You must define the category of the event.\n");
        goto end;
    }
    if ( argc < 3 )
    {
        g_print("You must define the name of the event.\n");
        goto end;
    }
    guint n_length, c_length;

    n_length = ( event_data_name == NULL ) ? 0 : g_strv_length(event_data_name);
    c_length = ( event_data_content == NULL ) ? 0 : g_strv_length(event_data_content);
    if ( n_length != c_length )
    {
        g_warning("Not the same number of data names and data contents");
        g_strfreev(event_data_name);
        g_strfreev(event_data_content);
        goto end;
    }

    r = 0; /* Arguments are fine */

    const gchar *category = argv[1];
    const gchar *name = argv[2];

    client = eventc_connection_new(host);
    eventc_connection_set_passive(client, !wait_event_end);

    event = eventd_event_new(category, name);

    GHashTable *data;

    data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);

    guint i;
    for ( i = 0 ; i < n_length ; ++i )
        g_hash_table_insert(data, event_data_name[i], event_data_content[i]);
    g_free(event_data_name);
    g_free(event_data_content);

    eventd_event_set_all_data(event, data);

    g_idle_add(_eventc_connect, NULL);

    loop = g_main_loop_new(NULL, FALSE);
    g_main_loop_run(loop);
    g_main_loop_unref(loop);

    g_object_unref(event);

    g_object_unref(client);

end:
    g_free(host);

    return r;
}