Deduplicate and maybe works
This commit is contained in:
@@ -106,6 +106,15 @@ gint teleport_peer_get_port (TeleportPeer *self, gint index, GError **error)
|
|||||||
|
|
||||||
void teleport_peer_add_peer (TeleportPeer *self, gchar *name, gchar *ip, gint port)
|
void teleport_peer_add_peer (TeleportPeer *self, gchar *name, gchar *ip, gint port)
|
||||||
{
|
{
|
||||||
|
Peer *element;
|
||||||
|
for (int i = 0; i < self->list->len; i++) {
|
||||||
|
element = g_array_index(self->list, Peer *, i);
|
||||||
|
if (g_strcmp0(element->name, name) == 0) {
|
||||||
|
g_print("Peer '%s' already exists, skipping duplicate.\n", name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Peer *new = g_new(Peer, 1);
|
Peer *new = g_new(Peer, 1);
|
||||||
new->ip = ip;
|
new->ip = ip;
|
||||||
new->port = port;
|
new->port = port;
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ on_file_chooser_response (GtkNativeDialog *dialog,
|
|||||||
if (filename)
|
if (filename)
|
||||||
{
|
{
|
||||||
g_print("Chosen file is %s\n", filename);
|
g_print("Chosen file is %s\n", filename);
|
||||||
teleport_server_add_route (g_compute_checksum_for_string (G_CHECKSUM_SHA256, filename, -1), g_strdup(filename), device->ip);
|
teleport_server_add_route (g_compute_checksum_for_string (G_CHECKSUM_SHA256, filename, -1), g_strdup(filename), device->ip, device->port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ send_file_to_device (GFile *file, Peer *device)
|
|||||||
{
|
{
|
||||||
g_autofree gchar *filename = g_file_get_path (file);
|
g_autofree gchar *filename = g_file_get_path (file);
|
||||||
if (g_file_query_exists (file, NULL)) {
|
if (g_file_query_exists (file, NULL)) {
|
||||||
teleport_server_add_route (g_compute_checksum_for_string (G_CHECKSUM_SHA256, filename, -1), g_strdup(filename), device->ip);
|
teleport_server_add_route (g_compute_checksum_for_string (G_CHECKSUM_SHA256, filename, -1), g_strdup(filename), device->ip, device->port);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g_print ("File doesn't exist: %s\n", filename);
|
g_print ("File doesn't exist: %s\n", filename);
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
#include "beam-me-up-get.h"
|
#include "beam-me-up-get.h"
|
||||||
#include "beam-me-up-app.h"
|
#include "beam-me-up-app.h"
|
||||||
|
|
||||||
static int port;
|
static int local_port;
|
||||||
static SoupServer *glob_server;
|
static SoupServer *glob_server;
|
||||||
//static const char *tls_cert_file, *tls_key_file;
|
//static const char *tls_cert_file, *tls_key_file;
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ handle_incoming_file(const char *hash,
|
|||||||
"s",
|
"s",
|
||||||
g_strdup_printf("http://%s:%d/transfer/%s",
|
g_strdup_printf("http://%s:%d/transfer/%s",
|
||||||
origin,
|
origin,
|
||||||
port,
|
local_port,
|
||||||
hash)),
|
hash)),
|
||||||
g_variant_builder_add (builder, "s", filename);
|
g_variant_builder_add (builder, "s", filename);
|
||||||
value = g_variant_new ("as", builder);
|
value = g_variant_new ("as", builder);
|
||||||
@@ -191,7 +191,8 @@ do_server_timeout (gpointer user_data)
|
|||||||
int
|
int
|
||||||
teleport_server_add_route (gchar *name,
|
teleport_server_add_route (gchar *name,
|
||||||
gchar *file_to_send,
|
gchar *file_to_send,
|
||||||
gchar *destination) {
|
gchar *destination,
|
||||||
|
int remote_port) {
|
||||||
GFile *file;
|
GFile *file;
|
||||||
GFileInfo *fileInfo;
|
GFileInfo *fileInfo;
|
||||||
gchar *path;
|
gchar *path;
|
||||||
@@ -211,7 +212,7 @@ teleport_server_add_route (gchar *name,
|
|||||||
|
|
||||||
teleport_get_do_client_notify(g_strdup_printf("http://%s:%d/?token=%s&size=%jd&name=%s\n",
|
teleport_get_do_client_notify(g_strdup_printf("http://%s:%d/?token=%s&size=%jd&name=%s\n",
|
||||||
destination,
|
destination,
|
||||||
port,
|
remote_port,
|
||||||
name,
|
name,
|
||||||
g_file_info_get_size(fileInfo),
|
g_file_info_get_size(fileInfo),
|
||||||
g_file_info_get_display_name(fileInfo)));
|
g_file_info_get_display_name(fileInfo)));
|
||||||
@@ -231,10 +232,10 @@ teleport_server_run (void) {
|
|||||||
//GTlsCertificate *cert;
|
//GTlsCertificate *cert;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
|
||||||
port = 3000;
|
local_port = 3000;
|
||||||
glob_server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "beam-me-up-httpd ",
|
glob_server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "beam-me-up-httpd ",
|
||||||
NULL);
|
NULL);
|
||||||
soup_server_listen_all (glob_server, port, 0, &error);
|
soup_server_listen_all (glob_server, local_port, 0, &error);
|
||||||
|
|
||||||
soup_server_add_handler (glob_server, NULL,
|
soup_server_add_handler (glob_server, NULL,
|
||||||
server_callback, NULL, NULL);
|
server_callback, NULL, NULL);
|
||||||
|
|||||||
@@ -20,8 +20,6 @@
|
|||||||
#define __TELEPORT_SERVER_H
|
#define __TELEPORT_SERVER_H
|
||||||
|
|
||||||
int teleport_server_run (void);
|
int teleport_server_run (void);
|
||||||
int teleport_server_add_route (gchar *,
|
int teleport_server_add_route (gchar *, gchar *, gchar *, int);
|
||||||
gchar *,
|
|
||||||
gchar *);
|
|
||||||
|
|
||||||
#endif /* __TELEPORT_SERVER_H */
|
#endif /* __TELEPORT_SERVER_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user