Beispiel #1
0
EventdRelayServer *
eventd_relay_server_new_for_host_and_port(const gchar *host_and_port)
{
    GSocketConnectable *address;
    GError *error = NULL;

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

    EventdRelayServer *server;

    server = eventd_relay_server_new();
    eventd_relay_server_set_address(server, address);

    return server;
}
Beispiel #2
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;
}
Beispiel #3
0
static void
_eventd_relay_event_parse(EventdPluginContext *context, const gchar *id, GKeyFile *config_file)
{
    gboolean disable;

    if ( ! g_key_file_has_group(config_file, "Relay") )
        return;

    if ( libeventd_config_key_file_get_boolean(config_file, "Relay", "Disable", &disable) < 0 )
        return;
    if ( disable )
    {
        g_hash_table_insert(context->events, g_strdup(id), NULL);
        return;
    }

    GList *list = NULL;

    gchar **server_uris;
    if ( libeventd_config_key_file_get_string_list(config_file, "Relay", "Servers", &server_uris, NULL) == 0 )
    {
        gchar **server_uri;
        for ( server_uri = server_uris ; *server_uri != NULL ; ++server_uri )
        {
            EventdRelayServer *server;
            server = g_hash_table_lookup(context->servers, *server_uri);
            if ( server == NULL )
            {
                server = eventd_relay_server_new_for_host_and_port(*server_uri);
                if ( server == NULL )
                    g_warning("Couldn't create the connectiont to server '%s'", *server_uri);
                else
                    g_hash_table_insert(context->servers, g_strdup(*server_uri), server);
            }
            if ( server != NULL )
                list = g_list_prepend(list, server);
        }
        g_strfreev(server_uris);
    }

#ifdef ENABLE_AVAHI
    gchar **avahi_names;
    if ( ( context->avahi != NULL ) && ( libeventd_config_key_file_get_string_list(config_file, "Relay", "Avahi", &avahi_names, NULL) == 0 ) )
    {
        gchar **avahi_name;
        for ( avahi_name = avahi_names ; *avahi_name != NULL ; ++avahi_name )
        {
            EventdRelayServer *server;
            server = g_hash_table_lookup(context->servers, *avahi_name);
            if ( server == NULL )
            {
                server = eventd_relay_server_new();
                eventd_relay_avahi_server_new(context->avahi, *avahi_name, server);
                g_hash_table_insert(context->servers, g_strdup(*avahi_name), server);
            }
            if ( server != NULL )
                list = g_list_prepend(list, server);
        }
        g_strfreev(avahi_names);
    }
#endif /* ENABLE_AVAHI */

    g_hash_table_insert(context->events, g_strdup(id), list);
}