summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/geoclue.conf.in5
-rw-r--r--src/gclue-config.c18
-rw-r--r--src/gclue-config.h19
-rw-r--r--src/gclue-wifi.c11
4 files changed, 41 insertions, 12 deletions
diff --git a/data/geoclue.conf.in b/data/geoclue.conf.in
index feace8b..3d32fac 100644
--- a/data/geoclue.conf.in
+++ b/data/geoclue.conf.in
@@ -19,6 +19,11 @@ url=https://location.services.mozilla.com/v1/geolocate?key=geoclue
# each time it gets a GPS lock.
#submission-url=https://location.services.mozilla.com/v1/submit?key=geoclue
+# A nickname to submit network data with. This is currently used for leaderboard:
+# https://location.services.mozilla.com/leaders
+# A nickname must be 2-32 characters long.
+#submission-nick=geoclue
+
# To use the Google geolocation service instead of mozilla's, simply uncomment
# this url while changing API_KEY to your Google API key and comment out or
# remove the url above.
diff --git a/src/gclue-config.c b/src/gclue-config.c
index 3feb0f5..4da3502 100644
--- a/src/gclue-config.c
+++ b/src/gclue-config.c
@@ -216,3 +216,21 @@ gclue_config_get_wifi_submit_url (GClueConfig *config)
return url;
}
+
+char *
+gclue_config_get_wifi_submit_nick (GClueConfig *config)
+{
+ char *nick;
+ GError *error = NULL;
+
+ nick = g_key_file_get_string (config->priv->key_file,
+ "wifi",
+ "submission-nick",
+ &error);
+ if (error != NULL) {
+ g_debug ("No wifi submission nick: %s", error->message);
+ g_error_free (error);
+ }
+
+ return nick;
+}
diff --git a/src/gclue-config.h b/src/gclue-config.h
index c77a514..c510ff5 100644
--- a/src/gclue-config.h
+++ b/src/gclue-config.h
@@ -57,15 +57,16 @@ struct _GClueConfigClass
GType gclue_config_get_type (void) G_GNUC_CONST;
-GClueConfig * gclue_config_get_singleton (void);
-gboolean gclue_config_is_agent_allowed (GClueConfig *config,
- const char *desktop_id,
- GClueClientInfo *agent_info);
-gboolean gclue_config_is_app_allowed (GClueConfig *config,
- const char *desktop_id,
- GClueClientInfo *app_info);
-char * gclue_config_get_wifi_url (GClueConfig *config);
-char * gclue_config_get_wifi_submit_url (GClueConfig *config);
+GClueConfig * gclue_config_get_singleton (void);
+gboolean gclue_config_is_agent_allowed (GClueConfig *config,
+ const char *desktop_id,
+ GClueClientInfo *agent_info);
+gboolean gclue_config_is_app_allowed (GClueConfig *config,
+ const char *desktop_id,
+ GClueClientInfo *app_info);
+char * gclue_config_get_wifi_url (GClueConfig *config);
+char * gclue_config_get_wifi_submit_url (GClueConfig *config);
+char * gclue_config_get_wifi_submit_nick (GClueConfig *config);
G_END_DECLS
diff --git a/src/gclue-wifi.c b/src/gclue-wifi.c
index 1014662..f5612cd 100644
--- a/src/gclue-wifi.c
+++ b/src/gclue-wifi.c
@@ -681,11 +681,12 @@ gclue_wifi_parse_response (GClueWebSource *source,
#if GCLUE_USE_NETWORK_MANAGER
static char *
-get_submit_url (void)
+get_submit_config (char **nick)
{
GClueConfig *config;
config = gclue_config_get_singleton ();
+ *nick = gclue_config_get_wifi_submit_nick (config);
return gclue_config_get_wifi_submit_url (config);
}
@@ -700,14 +701,14 @@ gclue_wifi_create_submit_query (GClueWebSource *source,
JsonBuilder *builder;
JsonGenerator *generator;
JsonNode *root_node;
- char *data, *timestamp, *url;
+ char *data, *timestamp, *url, *nick;
gsize data_len;
const GPtrArray *aps; /* As in Access Points */
guint i, frequency;
gdouble lat, lon, accuracy, altitude;
GTimeVal tv;
- url = get_submit_url ();
+ url = get_submit_config (&nick);
if (url == NULL)
goto out;
@@ -791,6 +792,10 @@ gclue_wifi_create_submit_query (GClueWebSource *source,
g_object_unref (generator);
ret = soup_message_new ("POST", url);
+ if (nick != NULL && nick[0] != '\0')
+ soup_message_headers_append (ret->request_headers,
+ "X-Nickname",
+ nick);
soup_message_set_request (ret,
"application/json",
SOUP_MEMORY_TAKE,