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; }
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; }
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); }