[refactor] fix intent in some files

This commit is contained in:
Julian Sparber
2017-10-02 19:59:42 +02:00
parent da1d515482
commit a44f896fcd
8 changed files with 302 additions and 299 deletions

View File

@@ -10,16 +10,16 @@
void save_file_callback (GSimpleAction *simple,
GVariant *parameter,
gpointer user_data);
GVariant *parameter,
gpointer user_data);
void do_nothing_callback (GSimpleAction *simple,
GVariant *parameter,
gpointer user_data);
GVariant *parameter,
gpointer user_data);
void open_file_callback (GSimpleAction *simple,
GVariant *parameter,
gpointer user_data);
GVariant *parameter,
gpointer user_data);
enum {
@@ -28,10 +28,10 @@ enum {
static GActionEntry app_entries[] =
{
{ "save", save_file_callback, "as", NULL, NULL },
{ "decline", do_nothing_callback, "as", NULL, NULL },
{ "do-nothing", do_nothing_callback, "as", NULL, NULL },
{ "open-file", open_file_callback, "as", NULL, NULL }
{ "save", save_file_callback, "as", NULL, NULL },
{ "decline", do_nothing_callback, "as", NULL, NULL },
{ "do-nothing", do_nothing_callback, "as", NULL, NULL },
{ "open-file", open_file_callback, "as", NULL, NULL }
};
static TeleportAppWindow *win;
@@ -46,38 +46,38 @@ G_DEFINE_TYPE (TeleportApp, teleport_app, GTK_TYPE_APPLICATION);
void save_file_callback (GSimpleAction *simple,
GVariant *parameter,
gpointer user_data) {
do_downloading(g_variant_get_string (g_variant_get_child_value (parameter, 0), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 1), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 2), NULL));
GVariant *parameter,
gpointer user_data) {
teleport_get_do_downloading(g_variant_get_string (g_variant_get_child_value (parameter, 0), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 1), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 2), NULL));
}
void do_nothing_callback (GSimpleAction *simple,
GVariant *parameter,
gpointer user_data) {
GVariant *parameter,
gpointer user_data) {
}
void open_file_callback (GSimpleAction *simple,
GVariant *parameter,
gpointer user_data) {
GVariant *parameter,
gpointer user_data) {
g_print("Open file\n %s%s",
g_variant_get_string (g_variant_get_child_value (parameter, 3), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 2), NULL));
g_variant_get_string (g_variant_get_child_value (parameter, 3), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 2), NULL));
g_spawn_command_line_async(g_strdup_printf("xdg-open %s/%s",
g_variant_get_string (g_variant_get_child_value (parameter, 3), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 2), NULL)), NULL);
g_variant_get_string (g_variant_get_child_value (parameter, 3), NULL),
g_variant_get_string (g_variant_get_child_value (parameter, 2), NULL)), NULL);
}
void create_user_notification (const char *file_name, const int file_size, const char *origin_device, GVariant *target) {
GIcon *icon;
GNotification *notification = g_notification_new ("Teleport");
g_notification_set_body (notification,
g_strdup_printf("%s is sending %s (%s)",
origin_device,
file_name,
g_format_size (file_size)));
g_strdup_printf("%s is sending %s (%s)",
origin_device,
file_name,
g_format_size (file_size)));
icon = g_themed_icon_new ("dialog-information");
g_notification_set_icon (notification, icon);
g_notification_set_default_action_and_target_value (notification, "app.do-nothing", target);
@@ -144,8 +144,8 @@ teleport_app_activate (GApplication *app) {
gtk_window_present (GTK_WINDOW (win));
g_action_map_add_action_entries (G_ACTION_MAP (app),
app_entries, G_N_ELEMENTS (app_entries),
app);
app_entries, G_N_ELEMENTS (app_entries),
app);
g_signal_connect (peerList, "addpeer", (GCallback)callback_add_peer, win);
g_signal_connect (peerList, "removepeer", (GCallback)callback_remove_peer, win);
@@ -157,27 +157,27 @@ teleport_app_activate (GApplication *app) {
*/
/*GVariantBuilder *builder;
GVariant *value;
GVariant *value;
builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
g_variant_builder_add (builder, "s", "devicename");
g_variant_builder_add (builder, "s", "https://downloadlink");
g_variant_builder_add (builder, "s", "filename");
value = g_variant_new ("as", builder);
g_variant_builder_unref (builder);
builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
g_variant_builder_add (builder, "s", "devicename");
g_variant_builder_add (builder, "s", "https://downloadlink");
g_variant_builder_add (builder, "s", "filename");
value = g_variant_new ("as", builder);
g_variant_builder_unref (builder);
create_finished_notification ("USER", 2000, "FILENAME", value);
*/
create_finished_notification ("USER", 2000, "FILENAME", value);
*/
run_http_server();
run_avahi_publish_service((char *) g_get_host_name());
run_avahi_service(peerList);
}
static void
static void
teleport_app_open (GApplication *app,
GFile **files,
gint n_files,
const gchar *hint)
GFile **files,
gint n_files,
const gchar *hint)
{
GList *windows;
int i;
@@ -194,29 +194,29 @@ teleport_app_open (GApplication *app,
gtk_window_present (GTK_WINDOW (win));
}
static void
static void
teleport_app_class_init (TeleportAppClass *class)
{
G_APPLICATION_CLASS (class)->activate = teleport_app_activate;
G_APPLICATION_CLASS (class)->open = teleport_app_open;
signalIds[NOTIFY_USER] = g_signal_new ("notify_user",
G_TYPE_OBJECT,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL /* accumulator */,
NULL /* accumulator data */,
NULL /* C marshaller */,
G_TYPE_NONE /* return_type */,
1,
G_TYPE_STRING);
G_TYPE_OBJECT,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL /* accumulator */,
NULL /* accumulator data */,
NULL /* C marshaller */,
G_TYPE_NONE /* return_type */,
1,
G_TYPE_STRING);
}
TeleportApp *
TeleportApp *
teleport_app_new (void)
{
return g_object_new (TELEPORT_APP_TYPE,
"application-id", "com.frac_tion.teleport",
"flags", G_APPLICATION_HANDLES_OPEN,
NULL);
"application-id", "com.frac_tion.teleport",
"flags", G_APPLICATION_HANDLES_OPEN,
NULL);
}

View File

@@ -22,96 +22,95 @@ static AvahiThreadedPoll *threaded_poll = NULL;
static AvahiClient *client = NULL;
static TeleportPeer *peerList = NULL;
static void resolve_callback(
AvahiServiceResolver *r,
AVAHI_GCC_UNUSED AvahiIfIndex interface,
AVAHI_GCC_UNUSED AvahiProtocol protocol,
AvahiResolverEvent event,
const char *name,
const char *type,
const char *domain,
const char *host_name,
const AvahiAddress *address,
uint16_t port,
AvahiStringList *txt,
AvahiLookupResultFlags flags,
AVAHI_GCC_UNUSED void* userdata) {
static void resolve_callback (AvahiServiceResolver *r,
AVAHI_GCC_UNUSED AvahiIfIndex interface,
AVAHI_GCC_UNUSED AvahiProtocol protocol,
AvahiResolverEvent event,
const char *name,
const char *type,
const char *domain,
const char *host_name,
const AvahiAddress *address,
uint16_t port,
AvahiStringList *txt,
AvahiLookupResultFlags flags,
AVAHI_GCC_UNUSED void* userdata) {
assert(r);
/* Called whenever a service has been resolved successfully or timed out */
switch (event) {
case AVAHI_RESOLVER_FAILURE:
fprintf(stderr, "(Resolver) Failed to resolve service '%s' of type '%s' in domain '%s': %s\n", name, type, domain, avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(r))));
break;
case AVAHI_RESOLVER_FOUND: {
char a[AVAHI_ADDRESS_STR_MAX], *t;
fprintf(stderr, "Service '%s' of type '%s' in domain '%s':\n", name, type, domain);
avahi_address_snprint(a, sizeof(a), address);
t = avahi_string_list_to_string(txt);
teleport_peer_add_peer(peerList, g_strdup(name), g_strdup(a), port);
//teleport_app_add_peer(name, port, a);
/*fprintf(stderr,
"\t%s:%u (%s)\n"
"\tTXT=%s\n"
"\tcookie is %u\n"
"\tis_local: %i\n"
"\tour_own: %i\n"
"\twide_area: %i\n"
"\tmulticast: %i\n"
"\tcached: %i\n",
host_name, port, a,
t,
avahi_string_list_get_service_cookie(txt),
!!(flags & AVAHI_LOOKUP_RESULT_LOCAL),
!!(flags & AVAHI_LOOKUP_RESULT_OUR_OWN),
!!(flags & AVAHI_LOOKUP_RESULT_WIDE_AREA),
!!(flags & AVAHI_LOOKUP_RESULT_MULTICAST),
!!(flags & AVAHI_LOOKUP_RESULT_CACHED));
*/
avahi_free(t);
}
case AVAHI_RESOLVER_FAILURE:
fprintf(stderr, "(Resolver) Failed to resolve service '%s' of type '%s' in domain '%s': %s\n", name, type, domain, avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(r))));
break;
case AVAHI_RESOLVER_FOUND: {
char a[AVAHI_ADDRESS_STR_MAX], *t;
fprintf(stderr, "Service '%s' of type '%s' in domain '%s':\n", name, type, domain);
avahi_address_snprint(a, sizeof(a), address);
t = avahi_string_list_to_string(txt);
teleport_peer_add_peer(peerList, g_strdup(name), g_strdup(a), port);
//teleport_app_add_peer(name, port, a);
/*fprintf(stderr,
"\t%s:%u (%s)\n"
"\tTXT=%s\n"
"\tcookie is %u\n"
"\tis_local: %i\n"
"\tour_own: %i\n"
"\twide_area: %i\n"
"\tmulticast: %i\n"
"\tcached: %i\n",
host_name, port, a,
t,
avahi_string_list_get_service_cookie(txt),
!!(flags & AVAHI_LOOKUP_RESULT_LOCAL),
!!(flags & AVAHI_LOOKUP_RESULT_OUR_OWN),
!!(flags & AVAHI_LOOKUP_RESULT_WIDE_AREA),
!!(flags & AVAHI_LOOKUP_RESULT_MULTICAST),
!!(flags & AVAHI_LOOKUP_RESULT_CACHED));
*/
avahi_free(t);
}
}
avahi_service_resolver_free(r);
}
static void browse_callback(
AvahiServiceBrowser *b,
AvahiIfIndex interface,
AvahiProtocol protocol,
AvahiBrowserEvent event,
const char *name,
const char *type,
const char *domain,
AVAHI_GCC_UNUSED AvahiLookupResultFlags flags,
void* userdata) {
AvahiServiceBrowser *b,
AvahiIfIndex interface,
AvahiProtocol protocol,
AvahiBrowserEvent event,
const char *name,
const char *type,
const char *domain,
AVAHI_GCC_UNUSED AvahiLookupResultFlags flags,
void* userdata) {
AvahiClient *c = userdata;
assert(b);
/* Called whenever a new services becomes available on the LAN or is removed from the LAN */
switch (event) {
case AVAHI_BROWSER_FAILURE:
fprintf(stderr, "(Browser) %s\n", avahi_strerror(avahi_client_errno(avahi_service_browser_get_client(b))));
avahi_shutdown();
//avahi_simple_poll_quit(simple_poll);
return;
case AVAHI_BROWSER_NEW:
fprintf(stderr, "(Browser) NEW: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
if (flags & AVAHI_LOOKUP_RESULT_LOCAL)
break;
/* We ignore the returned resolver object. In the callback
function we free it. If the server is terminated before
the callback function is called the server will free
the resolver for us. */
if (!(avahi_service_resolver_new(c, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, 0, resolve_callback, c)))
//if (!(avahi_service_resolver_new(c, interface, protocol, name, type, domain, AVAHI_PROTO_INET, 0, resolve_callback, c)))
fprintf(stderr, "Failed to resolve service '%s': %s\n", name, avahi_strerror(avahi_client_errno(c)));
break;
case AVAHI_BROWSER_REMOVE:
fprintf(stderr, "(Browser) REMOVE: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
//teleport_app_remove_peer(name);
teleport_peer_remove_peer_by_name(peerList, g_strdup(name));
break;
case AVAHI_BROWSER_ALL_FOR_NOW:
case AVAHI_BROWSER_CACHE_EXHAUSTED:
fprintf(stderr, "(Browser) %s\n", event == AVAHI_BROWSER_CACHE_EXHAUSTED ? "CACHE_EXHAUSTED" : "ALL_FOR_NOW");
case AVAHI_BROWSER_FAILURE:
fprintf(stderr, "(Browser) %s\n", avahi_strerror(avahi_client_errno(avahi_service_browser_get_client(b))));
avahi_shutdown();
//avahi_simple_poll_quit(simple_poll);
return;
case AVAHI_BROWSER_NEW:
fprintf(stderr, "(Browser) NEW: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
if (flags & AVAHI_LOOKUP_RESULT_LOCAL)
break;
/* We ignore the returned resolver object. In the callback
function we free it. If the server is terminated before
the callback function is called the server will free
the resolver for us. */
if (!(avahi_service_resolver_new(c, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, 0, resolve_callback, c)))
//if (!(avahi_service_resolver_new(c, interface, protocol, name, type, domain, AVAHI_PROTO_INET, 0, resolve_callback, c)))
fprintf(stderr, "Failed to resolve service '%s': %s\n", name, avahi_strerror(avahi_client_errno(c)));
break;
case AVAHI_BROWSER_REMOVE:
fprintf(stderr, "(Browser) REMOVE: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
//teleport_app_remove_peer(name);
teleport_peer_remove_peer_by_name(peerList, g_strdup(name));
break;
case AVAHI_BROWSER_ALL_FOR_NOW:
case AVAHI_BROWSER_CACHE_EXHAUSTED:
fprintf(stderr, "(Browser) %s\n", event == AVAHI_BROWSER_CACHE_EXHAUSTED ? "CACHE_EXHAUSTED" : "ALL_FOR_NOW");
break;
}
}
static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata) {

View File

@@ -2,39 +2,41 @@
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libsoup/soup.h>
#include "teleport-app.h"
#include "teleport-get.h"
static int saveFile (SoupMessage *, const gchar *, const gchar *);
static gchar * getFilePath (const gchar *, const gchar *);
static int get (const gchar *, const gchar *, const gchar *, const gchar *);
static gboolean debug;
static void
finished (SoupSession *session, SoupMessage *msg, gpointer target)
finished (SoupSession *session,
SoupMessage *msg,
gpointer target)
{
//GVariant *target array: {originDevice, url, filename, downloadDirectory}
if ((char *) g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 2), NULL) != NULL) {
g_variant_get_child_value ((GVariant *) target, 2), NULL) != NULL) {
saveFile(msg,
(char *) g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 3), NULL),
(char *) g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 2), NULL));
(char *) g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 3), NULL),
(char *) g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 2), NULL));
create_finished_notification ((char *) g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 0), NULL),
0,
g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 2), NULL),
target);
g_variant_get_child_value ((GVariant *) target, 0), NULL),
0,
g_variant_get_string (
g_variant_get_child_value ((GVariant *) target, 2), NULL),
target);
}
}
int
get (char *url,
static int
get (const gchar *url,
const gchar *originDevice,
const gchar *downloadDirectory,
const gchar *outputFilename) {
@@ -48,10 +50,13 @@ get (char *url,
}
session = g_object_new (SOUP_TYPE_SESSION,
SOUP_SESSION_ADD_FEATURE_BY_TYPE, SOUP_TYPE_CONTENT_DECODER,
SOUP_SESSION_USER_AGENT, "teleport ",
SOUP_SESSION_ACCEPT_LANGUAGE_AUTO, TRUE,
NULL);
SOUP_SESSION_ADD_FEATURE_BY_TYPE,
SOUP_TYPE_CONTENT_DECODER,
SOUP_SESSION_USER_AGENT,
"teleport ",
SOUP_SESSION_ACCEPT_LANGUAGE_AUTO,
TRUE,
NULL);
if (debug) {
logger = soup_logger_new (SOUP_LOGGER_LOG_BODY, -1);
@@ -85,7 +90,7 @@ get (char *url,
return 0;
}
int
static int
saveFile (SoupMessage *msg,
const gchar *outputDirectory,
const gchar *outputFilename) {
@@ -112,9 +117,9 @@ saveFile (SoupMessage *msg,
if (outputFile) {
fwrite (msg->response_body->data,
1,
msg->response_body->length,
outputFile);
1,
msg->response_body->length,
outputFile);
fclose (outputFile);
}
@@ -123,24 +128,25 @@ saveFile (SoupMessage *msg,
return 0;
}
static gchar *
getFilePath (const gchar *outputDirectory,
const gchar *outputFilename) {
return g_strdup_printf("%s/%s", outputDirectory,
g_uri_escape_string(outputFilename, NULL, TRUE));
}
int
do_client_notify (char *url) {
teleport_get_do_client_notify (const gchar *url) {
get (g_strdup(url), NULL, NULL, NULL);
g_print("Offering selected file to other machine.\n");
return 0;
}
gchar *
getFilePath (const gchar *outputDirectory,
const gchar *outputFilename) {
return g_strdup_printf("%s/%s", outputDirectory,
g_uri_escape_string(outputFilename, NULL, TRUE));
}
int
do_downloading (const char *originDevice,
const char *url,
const char *filename) {
teleport_get_do_downloading (const char *originDevice,
const char *url,
const char *filename) {
const gchar *outputDirectory = g_get_user_special_dir(G_USER_DIRECTORY_DOWNLOAD);
g_print("Downloading %s to %s\n", url, g_uri_escape_string(filename, NULL, TRUE));
get (g_strdup(url), originDevice, outputDirectory, filename);

View File

@@ -3,11 +3,9 @@
#include <libsoup/soup.h>
extern int do_downloading(const char *, const char *, const char *);
extern int do_client_notify(char *);
int saveFile (SoupMessage *, const gchar *, const gchar *);
gchar * getFilePath (const gchar *, const gchar *);
int get (char *, const gchar *, const gchar *, const gchar *);
int teleport_get_do_downloading (const gchar *,
const gchar *,
const gchar *);
int teleport_get_do_client_notify (const gchar *);
#endif /* __TELEPORT_GET_H */

View File

@@ -29,26 +29,26 @@ teleport_peer_class_init (TeleportPeerClass *klass)
object_class->constructed = teleport_peer_constructed;
signalIds[ADD] = g_signal_new ("addpeer",
G_TYPE_OBJECT,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL /* accumulator */,
NULL /* accumulator data */,
NULL /* C marshaller */,
G_TYPE_NONE /* return_type */,
1,
G_TYPE_POINTER);
G_TYPE_OBJECT,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL /* accumulator */,
NULL /* accumulator data */,
NULL /* C marshaller */,
G_TYPE_NONE /* return_type */,
1,
G_TYPE_POINTER);
signalIds[REMOVE] = g_signal_new ("removepeer",
G_TYPE_OBJECT,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL /* accumulator */,
NULL /* accumulator data */,
NULL /* C marshaller */,
G_TYPE_NONE /* return_type */,
1,
G_TYPE_POINTER);
G_TYPE_OBJECT,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL /* accumulator */,
NULL /* accumulator data */,
NULL /* C marshaller */,
G_TYPE_NONE /* return_type */,
1,
G_TYPE_POINTER);
}

View File

@@ -37,39 +37,39 @@ static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state,
/* Called whenever the entry group state changes */
switch (state) {
case AVAHI_ENTRY_GROUP_ESTABLISHED :
/* The entry group has been established successfully */
fprintf(stderr, "Service '%s' successfully established.\n", name);
break;
case AVAHI_ENTRY_GROUP_ESTABLISHED :
/* The entry group has been established successfully */
fprintf(stderr, "Service '%s' successfully established.\n", name);
break;
case AVAHI_ENTRY_GROUP_COLLISION : {
char *n;
case AVAHI_ENTRY_GROUP_COLLISION : {
char *n;
/* A service name collision with a remote service
* happened. Let's pick a new name */
n = avahi_alternative_service_name(name);
avahi_free(name);
name = n;
/* A service name collision with a remote service
* happened. Let's pick a new name */
n = avahi_alternative_service_name(name);
avahi_free(name);
name = n;
fprintf(stderr, "Service name collision, renaming service to '%s'\n", name);
fprintf(stderr, "Service name collision, renaming service to '%s'\n", name);
/* And recreate the services */
create_services(avahi_entry_group_get_client(g));
break;
}
case AVAHI_ENTRY_GROUP_FAILURE :
fprintf(stderr, "Entry group failure: %s\n", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))));
/* Some kind of failure happened while we were registering our services */
//avahi_simple_poll_quit(simple_poll);
shutdown_avahi_publish_service();
/* And recreate the services */
create_services(avahi_entry_group_get_client(g));
break;
}
case AVAHI_ENTRY_GROUP_UNCOMMITED:
case AVAHI_ENTRY_GROUP_REGISTERING:
;
case AVAHI_ENTRY_GROUP_FAILURE :
fprintf(stderr, "Entry group failure: %s\n", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))));
/* Some kind of failure happened while we were registering our services */
//avahi_simple_poll_quit(simple_poll);
shutdown_avahi_publish_service();
break;
case AVAHI_ENTRY_GROUP_UNCOMMITED:
case AVAHI_ENTRY_GROUP_REGISTERING:
;
}
}
@@ -146,41 +146,41 @@ static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UN
/* Called whenever the client or server state changes */
switch (state) {
case AVAHI_CLIENT_S_RUNNING:
case AVAHI_CLIENT_S_RUNNING:
/* The server has startup successfully and registered its host
* name on the network, so it's time to create our services */
create_services(c);
break;
/* The server has startup successfully and registered its host
* name on the network, so it's time to create our services */
create_services(c);
break;
case AVAHI_CLIENT_FAILURE:
case AVAHI_CLIENT_FAILURE:
fprintf(stderr, "Client failure: %s\n", avahi_strerror(avahi_client_errno(c)));
//avahi_simple_poll_quit(simple_poll);
shutdown_avahi_publish_service();
fprintf(stderr, "Client failure: %s\n", avahi_strerror(avahi_client_errno(c)));
//avahi_simple_poll_quit(simple_poll);
shutdown_avahi_publish_service();
break;
break;
case AVAHI_CLIENT_S_COLLISION:
case AVAHI_CLIENT_S_COLLISION:
/* Let's drop our registered services. When the server is back
* in AVAHI_SERVER_RUNNING state we will register them
* again with the new host name. */
/* Let's drop our registered services. When the server is back
* in AVAHI_SERVER_RUNNING state we will register them
* again with the new host name. */
case AVAHI_CLIENT_S_REGISTERING:
case AVAHI_CLIENT_S_REGISTERING:
/* The server records are now being established. This
* might be caused by a host name change. We need to wait
* for our own records to register until the host name is
* properly esatblished. */
/* The server records are now being established. This
* might be caused by a host name change. We need to wait
* for our own records to register until the host name is
* properly esatblished. */
if (group)
avahi_entry_group_reset(group);
if (group)
avahi_entry_group_reset(group);
break;
break;
case AVAHI_CLIENT_CONNECTING:
;
case AVAHI_CLIENT_CONNECTING:
;
}
}

View File

@@ -15,7 +15,7 @@ static int port;
static SoupServer *glob_server;
//static const char *tls_cert_file, *tls_key_file;
static int
static int
compare_strings (gconstpointer a, gconstpointer b)
{
const char **sa = (const char **)a;
@@ -24,7 +24,7 @@ compare_strings (gconstpointer a, gconstpointer b)
return strcmp (*sa, *sb);
}
static GString *
static GString *
get_directory_listing (const char *path)
{
GPtrArray *entries;
@@ -57,8 +57,8 @@ get_directory_listing (const char *path)
g_free (escaped);
for (i = 0; i < entries->len; i++) {
g_string_append_printf (listing, "<a href=\"%s\">%s</a><br>\r\n",
(char *)entries->pdata[i],
(char *)entries->pdata[i]);
(char *)entries->pdata[i],
(char *)entries->pdata[i]);
g_free (entries->pdata[i]);
}
g_string_append (listing, "</body>\r\n</html>\r\n");
@@ -67,7 +67,7 @@ get_directory_listing (const char *path)
return listing;
}
static void
static void
do_get (SoupServer *server, SoupMessage *msg, const char *path)
{
char *slash;
@@ -94,7 +94,7 @@ do_get (SoupServer *server, SoupMessage *msg, const char *path)
redir_uri = g_strdup_printf ("%s/", soup_message_get_uri (msg)->path);
soup_message_set_redirect (msg, SOUP_STATUS_MOVED_PERMANENTLY,
redir_uri);
redir_uri);
g_free (redir_uri);
return;
}
@@ -109,8 +109,8 @@ do_get (SoupServer *server, SoupMessage *msg, const char *path)
listing = get_directory_listing (path);
soup_message_set_response (msg, "text/html",
SOUP_MEMORY_TAKE,
listing->str, listing->len);
SOUP_MEMORY_TAKE,
listing->str, listing->len);
soup_message_set_status (msg, SOUP_STATUS_OK);
g_string_free (listing, FALSE);
return;
@@ -127,8 +127,8 @@ do_get (SoupServer *server, SoupMessage *msg, const char *path)
}
buffer = soup_buffer_new_with_owner (g_mapped_file_get_contents (mapping),
g_mapped_file_get_length (mapping),
mapping, (GDestroyNotify)g_mapped_file_unref);
g_mapped_file_get_length (mapping),
mapping, (GDestroyNotify)g_mapped_file_unref);
soup_message_body_append_buffer (msg->response_body, buffer);
soup_buffer_free (buffer);
} else /* msg->method == SOUP_METHOD_HEAD */ {
@@ -140,7 +140,7 @@ do_get (SoupServer *server, SoupMessage *msg, const char *path)
*/
length = g_strdup_printf ("%lu", (gulong)st.st_size);
soup_message_headers_append (msg->response_headers,
"Content-Length", length);
"Content-Length", length);
g_free (length);
}
@@ -160,7 +160,7 @@ static void handle_incoming_file(const char *hash, const char *filename, const i
origin,
port,
hash)),
g_variant_builder_add (builder, "s", filename);
g_variant_builder_add (builder, "s", filename);
value = g_variant_new ("as", builder);
g_variant_builder_unref (builder);
@@ -169,10 +169,10 @@ static void handle_incoming_file(const char *hash, const char *filename, const i
create_user_notification(filename, size, origin, value);
}
static void
static void
server_callback (SoupServer *server, SoupMessage *msg,
const char *path, GHashTable *query,
SoupClientContext *context, gpointer data)
const char *path, GHashTable *query,
SoupClientContext *context, gpointer data)
{
char *file_path;
SoupMessageHeadersIter iter;
@@ -182,7 +182,7 @@ server_callback (SoupServer *server, SoupMessage *msg,
origin_addr = soup_client_context_get_host (context);
g_print ("%s %s HTTP/1.%d\n", msg->method, path,
soup_message_get_http_version (msg));
soup_message_get_http_version (msg));
soup_message_headers_iter_init (&iter, msg->request_headers);
while (soup_message_headers_iter_next (&iter, &name, &value))
g_print ("%s: %s\n", name, value);
@@ -223,8 +223,8 @@ server_callback (SoupServer *server, SoupMessage *msg,
do_get (server, msg, file_path);
else {
soup_message_set_response (msg, "application/json",
SOUP_MEMORY_TAKE,
response->str, response->len);
SOUP_MEMORY_TAKE,
response->str, response->len);
soup_message_set_status (msg, SOUP_STATUS_OK);
g_print("Handle response\n");
}
@@ -245,19 +245,19 @@ int addRouteToServer(char *name, char *file_to_send, char *destination) {
GFile *file;
GFileInfo *fileInfo;
soup_server_add_handler (glob_server, g_strdup_printf("/transfer/%s", name),
server_callback, g_strdup(file_to_send), NULL);
server_callback, g_strdup(file_to_send), NULL);
//send notification of available file to the client
//For getting file size
//https://developer.gnome.org/gio/stable/GFile.html#g-file-query-info
file = g_file_new_for_path(file_to_send);
//G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, G_FILE_ATTRIBUTE_STANDARD_SIZE
fileInfo = g_file_query_info(file, "standard::display-name,standard::size", G_FILE_QUERY_INFO_NONE, NULL, NULL);
do_client_notify(g_strdup_printf("http://%s:%d/?token=%s&size=%jd&name=%s\n",
destination,
port,
name,
g_file_info_get_size(fileInfo),
g_file_info_get_display_name(fileInfo)));
teleport_get_do_client_notify(g_strdup_printf("http://%s:%d/?token=%s&size=%jd&name=%s\n",
destination,
port,
name,
g_file_info_get_size(fileInfo),
g_file_info_get_display_name(fileInfo)));
g_object_unref(fileInfo);
g_object_unref(file);
return 0;
@@ -271,11 +271,11 @@ extern int run_http_server(void) {
port = 3000;
glob_server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "teleport-httpd ",
NULL);
NULL);
soup_server_listen_all (glob_server, port, 0, &error);
soup_server_add_handler (glob_server, NULL,
server_callback, NULL, NULL);
server_callback, NULL, NULL);
uris = soup_server_get_uris (glob_server);
for (u = uris; u; u = u->next) {

View File

@@ -26,7 +26,7 @@ struct _TeleportAppWindowPrivate
G_DEFINE_TYPE_WITH_PRIVATE(TeleportAppWindow, teleport_app_window, GTK_TYPE_APPLICATION_WINDOW);
static void
static void
teleport_app_window_init (TeleportAppWindow *win)
{
TeleportAppWindowPrivate *priv;
@@ -62,29 +62,29 @@ open_file_picker(GtkButton *btn, Peer *device) {
g_print("Open file chooser for submitting a file to %s with Address %s\n", device->name, device->ip);
dialog = gtk_file_chooser_dialog_new ("Open File",
GTK_WINDOW(mainWin),
action,
("_Cancel"),
GTK_RESPONSE_CANCEL,
("_Open"),
GTK_RESPONSE_ACCEPT,
NULL);
GTK_WINDOW(mainWin),
action,
("_Cancel"),
GTK_RESPONSE_CANCEL,
("_Open"),
GTK_RESPONSE_ACCEPT,
NULL);
res = gtk_dialog_run (GTK_DIALOG (dialog));
if (res == GTK_RESPONSE_ACCEPT)
{
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
filename = gtk_file_chooser_get_filename (chooser);
g_print("Choosen file is %s\n", filename);
gtk_widget_destroy (dialog);
addRouteToServer(g_compute_checksum_for_string (G_CHECKSUM_SHA256, filename, -1), filename, device->ip);
g_free (filename);
}
{
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
filename = gtk_file_chooser_get_filename (chooser);
g_print("Choosen file is %s\n", filename);
gtk_widget_destroy (dialog);
addRouteToServer(g_compute_checksum_for_string (G_CHECKSUM_SHA256, filename, -1), filename, device->ip);
g_free (filename);
}
else
{
gtk_widget_destroy (dialog);
}
{
gtk_widget_destroy (dialog);
}
}
void update_remote_device_list(TeleportAppWindow *win, Peer *device) {
@@ -140,7 +140,7 @@ void update_remote_device_list_remove(TeleportAppWindow *win, Peer *device) {
}
}
GtkWidget *
GtkWidget *
find_child(GtkWidget *parent, const gchar *name)
{
if (g_strcmp0(gtk_widget_get_name((GtkWidget *)parent), (gchar *)name) == 0) {
@@ -166,7 +166,7 @@ find_child(GtkWidget *parent, const gchar *name)
}
static void
static void
teleport_app_window_dispose (GObject *object)
{
//TeleportAppWindow *win;
@@ -180,13 +180,13 @@ teleport_app_window_dispose (GObject *object)
G_OBJECT_CLASS (teleport_app_window_parent_class)->dispose (object);
}
static void
static void
teleport_app_window_class_init (TeleportAppWindowClass *class)
{
G_OBJECT_CLASS (class)->dispose = teleport_app_window_dispose;
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/com/frac_tion/teleport/window.ui");
"/com/frac_tion/teleport/window.ui");
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), TeleportAppWindow, gears);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), TeleportAppWindow, this_device_name_label);
@@ -194,15 +194,15 @@ teleport_app_window_class_init (TeleportAppWindowClass *class)
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), TeleportAppWindow, remote_devices_list);
}
TeleportAppWindow *
TeleportAppWindow *
teleport_app_window_new (TeleportApp *app)
{
return g_object_new (TELEPORT_APP_WINDOW_TYPE, "application", app, NULL);
}
void
void
teleport_app_window_open (TeleportAppWindow *win,
GFile *file)
GFile *file)
{
//TeleportAppWindowPrivate *priv;
//priv = teleport_app_window_get_instance_private (win);