Example #1
0
int
run_server (guint * http_port, guint * https_port)
{
  guint port = SOUP_ADDRESS_ANY_PORT;
  guint ssl_port = SOUP_ADDRESS_ANY_PORT;
  const char *ssl_cert_file = GST_TEST_FILES_PATH "/test-cert.pem";
  const char *ssl_key_file = GST_TEST_FILES_PATH "/test-key.pem";
  static int server_running = 0;

  SoupAuthDomain *domain = NULL;

  if (server_running)
    return 0;
  server_running = 1;

  *http_port = *https_port = 0;

  server = soup_server_new (SOUP_SERVER_PORT, port, NULL);
  if (!server) {
    GST_DEBUG ("Unable to bind to server port %u", port);
    return 1;
  }
  *http_port = soup_server_get_port (server);
  GST_INFO ("HTTP server listening on port %u", *http_port);
  soup_server_add_handler (server, NULL, server_callback, NULL, NULL);
  domain = soup_auth_domain_basic_new (SOUP_AUTH_DOMAIN_REALM, realm,
      SOUP_AUTH_DOMAIN_BASIC_AUTH_CALLBACK, basic_auth_cb,
      SOUP_AUTH_DOMAIN_ADD_PATH, basic_auth_path, NULL);
  soup_server_add_auth_domain (server, domain);
  g_object_unref (domain);
  domain = soup_auth_domain_digest_new (SOUP_AUTH_DOMAIN_REALM, realm,
      SOUP_AUTH_DOMAIN_DIGEST_AUTH_CALLBACK, digest_auth_cb,
      SOUP_AUTH_DOMAIN_ADD_PATH, digest_auth_path, NULL);
  soup_server_add_auth_domain (server, domain);
  g_object_unref (domain);
  soup_server_run_async (server);

  if (ssl_cert_file && ssl_key_file) {
    ssl_server = soup_server_new (SOUP_SERVER_PORT, ssl_port,
        SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file,
        SOUP_SERVER_SSL_KEY_FILE, ssl_key_file, NULL);

    if (!ssl_server) {
      GST_DEBUG ("Unable to bind to SSL server port %u", ssl_port);
      return 1;
    }
    *https_port = soup_server_get_port (ssl_server);
    GST_INFO ("HTTPS server listening on port %u", *https_port);
    soup_server_add_handler (ssl_server, NULL, server_callback, NULL, NULL);
    soup_server_run_async (ssl_server);
  }

  return 0;
}
Example #2
0
static dlr_host_server_t *prv_host_server_new(const gchar *device_if,
					      guint port,
					      GError **error)
{
	dlr_host_server_t *server = NULL;
	SoupAddress *addr;

	addr = soup_address_new(device_if, port);

	if (soup_address_resolve_sync(addr, NULL) != SOUP_STATUS_OK) {
		*error = g_error_new(DLEYNA_SERVER_ERROR,
				     DLEYNA_ERROR_HOST_FAILED,
				     "Unable to create host server on %s",
				     device_if);
		goto on_error;
	}

	server = g_new(dlr_host_server_t, 1);
	server->files = g_hash_table_new_full(g_str_hash, g_str_equal,
					      g_free, prv_host_file_delete);

	server->soup_server = soup_server_new(SOUP_SERVER_INTERFACE, addr,
					      NULL);
	soup_server_add_handler(server->soup_server, DLR_HOST_SERVICE_ROOT,
				prv_soup_server_cb, server, NULL);
	soup_server_run_async(server->soup_server);
	server->counter = 0;

on_error:

	g_object_unref(addr);

	return server;
}
Example #3
0
int main(int argc, char *argv[])
{
    GMainLoop *loop;
    SoupServer *server;
    int port = 13333;

    (void) argc;
    (void) argv;

    if ((glib_major_version == 2) && (glib_minor_version < 36))
        g_type_init();

    server = soup_server_new(SOUP_SERVER_PORT, port,
                             SOUP_SERVER_SERVER_HEADER, "auto-complete",
                             NULL);
    if (!server) {
        g_printerr("Unable to bind to server port %d\n", port);
        exit(1);
    }

    soup_server_add_handler(server, NULL, server_callback, NULL, NULL);
    soup_server_run_async(server);

    g_print("\nWaiting for requests on port %u...\n", port);

    loop = g_main_loop_new(NULL, TRUE);
    g_main_loop_run(loop);

    return 0;
}
Example #4
0
File: ui.c Project: imgflo/imgflo
UiConnection *
ui_connection_new(const gchar *hostname, int internal_port, int external_port) {
    UiConnection *self = g_new(UiConnection, 1);

    self->connection = NULL;
    self->main_network = NULL;
    self->network_map = g_hash_table_new_full(g_str_hash, g_str_equal,
                                              g_free, (GDestroyNotify)network_free);
    self->hostname = g_strdup(hostname);
    self->registry = registry_new(runtime_info_new_from_env(hostname, external_port));
    self->component_lib = library_new();

    setup_log_handlers(self);

    self->server = soup_server_new(SOUP_SERVER_SERVER_HEADER, "imgflo-runtime", NULL);
    if (!self->server) {
        g_free(self);
        return NULL;
    }

    soup_server_add_handler(self->server, NULL,
        server_callback, self, NULL);

    soup_server_add_websocket_handler(self->server, NULL, NULL, NULL,
        websocket_callback, self, NULL);

    soup_server_listen_all(self->server, internal_port, SOUP_SERVER_LISTEN_IPV4_ONLY, NULL);

    return self;
}
Example #5
0
void
web_setup (WebFixture *fix, gconstpointer data)
{
	if (!PORT)
		PORT = 52853;
	fix->server = soup_server_new (SOUP_SERVER_PORT, PORT, NULL);
	while (!SOUP_IS_SERVER (fix->server)) {
		PORT++;
		fix->server = soup_server_new (SOUP_SERVER_PORT, PORT, NULL);
	}

	soup_server_add_handler (fix->server, "/feeds/", feed_server, NULL, NULL);
	soup_server_add_handler (fix->server, "/video/", video_server, NULL, NULL);
	soup_server_add_handler (fix->server, "/redirect/", redirect_server, NULL, NULL);
	soup_server_run_async (fix->server);
}
Example #6
0
int main(int argc, char** argv)
{
    SoupServer* server;
    SoupURI* soup_uri;

    gtk_test_init(&argc, &argv, NULL);

    /* Hopefully make test independent of the path it's called from. */
    testutils_relative_chdir("Source/WebKit/gtk/tests/resources/test.html", argv[0]);

    server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
    soup_server_run_async(server);

    soup_server_add_handler(server, NULL, server_callback, NULL, NULL);

    soup_uri = soup_uri_new("http://127.0.0.1/");
    soup_uri_set_port(soup_uri, soup_server_get_port(server));

    base_uri = soup_uri_to_string(soup_uri, FALSE);
    soup_uri_free(soup_uri);

    g_test_bug_base("https://bugs.webkit.org/");
    g_test_add_func("/webkit/webview/icon-uri", test_webkit_web_view_icon_uri);
    g_test_add_func("/webkit/webview/adjustments", test_webkit_web_view_adjustments);
    g_test_add_func("/webkit/webview/destroy", test_webkit_web_view_destroy);
    g_test_add_func("/webkit/webview/grab_focus", test_webkit_web_view_grab_focus);
    g_test_add_func("/webkit/webview/window-features", test_webkit_web_view_window_features);
    g_test_add_func("/webkit/webview/webview-in-offscreen-window-does-not-crash", test_webkit_web_view_in_offscreen_window_does_not_crash);
    g_test_add_func("/webkit/webview/webview-does-not-steal-focus", test_webkit_web_view_does_not_steal_focus);
    g_test_add_data_func("/webkit/webview/fullscreen", GINT_TO_POINTER(FALSE), test_webkit_web_view_fullscreen);
    g_test_add_data_func("/webkit/webview/fullscreen-blocked", GINT_TO_POINTER(TRUE), test_webkit_web_view_fullscreen);
    g_test_add_func("/webkit/webview/file-chooser", test_webkit_web_view_file_chooser);

    return g_test_run ();
}
Example #7
0
int main(int argc, char** argv)
{
    SoupServer* server;
    SoupURI* soup_uri;

    g_thread_init(NULL);
    gtk_test_init(&argc, &argv, NULL);

    /* Hopefully make test independent of the path it's called from. */
    testutils_relative_chdir("WebKit/gtk/tests/resources/test.html", argv[0]);

    server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
    soup_server_run_async(server);

    soup_server_add_handler(server, NULL, server_callback, NULL, NULL);

    soup_uri = soup_uri_new("http://127.0.0.1/");
    soup_uri_set_port(soup_uri, soup_server_get_port(server));

    base_uri = soup_uri_to_string(soup_uri, FALSE);
    soup_uri_free(soup_uri);

    g_test_bug_base("https://bugs.webkit.org/");
    g_test_add_func("/webkit/webview/icon-uri", test_webkit_web_view_icon_uri);
    g_test_add_func("/webkit/webview/adjustments", test_webkit_web_view_adjustments);
    g_test_add_func("/webkit/webview/destroy", test_webkit_web_view_destroy);
    g_test_add_func("/webkit/webview/grab_focus", test_webkit_web_view_grab_focus);
    g_test_add_func("/webkit/webview/window-features", test_webkit_web_view_window_features);

    return g_test_run ();
}
Example #8
0
static void
korva_upnp_file_server_init (KorvaUPnPFileServer *self)
{
    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
                                              KORVA_TYPE_UPNP_FILE_SERVER,
                                              KorvaUPnPFileServerPrivate);
    self->priv->http_server = soup_server_new (NULL, NULL);
    soup_server_add_handler (self->priv->http_server,
                             "/item",
                             korva_upnp_file_server_handle_request,
                             self,
                             NULL);
    soup_server_run_async (self->priv->http_server);
    self->priv->host_data = g_hash_table_new_full (g_file_hash,
                                                   (GEqualFunc) g_file_equal,
                                                   g_object_unref,
                                                   g_object_unref);
    self->priv->id_map = g_hash_table_new_full (g_str_hash,
                                                (GEqualFunc) g_str_equal,
                                                g_free,
                                                g_object_unref);
    self->priv->path_regex = g_regex_new (KORVA_PATH_REGEX,
                                          G_REGEX_OPTIMIZE,
                                          G_REGEX_MATCH_NEWLINE_ANY,
                                          NULL);
}
Example #9
0
int
main (int argc, char **argv)
{
	GOptionContext *opts;
	GMainLoop *loop;
	GError *error = NULL;

	opts = g_option_context_new (NULL);
	g_option_context_add_main_entries (opts, entries, NULL);
	if (!g_option_context_parse (opts, &argc, &argv, &error)) {
		g_printerr ("Could not parse arguments: %s\n",
			    error->message);
		g_printerr ("%s",
			    g_option_context_get_help (opts, TRUE, NULL));
		exit (1);
	}

	if (argc != 2) {
		g_printerr ("%s",
			    g_option_context_get_help (opts, TRUE, NULL));
		exit (1);
	}
	g_option_context_free (opts);

	signal (SIGINT, quit);

	server = soup_server_new (SOUP_SERVER_PORT, port,
				  NULL);
	if (!server) {
		g_printerr ("Unable to bind to server port %d\n", port);
		exit (1);
	}
	soup_server_add_handler (server, NULL,
				 server_callback, NULL, NULL);
	if (require_auth) {
		SoupAuthDomain *auth_domain;

		auth_domain = soup_auth_domain_basic_new (
			SOUP_AUTH_DOMAIN_REALM, "simple-proxy",
			SOUP_AUTH_DOMAIN_PROXY, TRUE,
			SOUP_AUTH_DOMAIN_BASIC_AUTH_CALLBACK, auth_callback,
			NULL);
		soup_server_add_auth_domain (server, auth_domain);
		g_object_unref (auth_domain);
	}

	g_print ("\nStarting proxy on port %d\n",
		 soup_server_get_port (server));
	soup_server_run_async (server);

	session = soup_session_async_new ();

	g_print ("\nWaiting for requests...\n");

	loop = g_main_loop_new (NULL, TRUE);
	g_main_loop_run (loop);
	g_main_loop_unref (loop);

	return 0;
}
Example #10
0
int main(int argc, char **argv)
{
    gtk_test_init(&argc, &argv, NULL);

    /* This hopefully makes the test independent of the path it's called from. */
    testutils_relative_chdir("Source/WebKit/gtk/tests/resources/test.html", argv[0]);

    SoupServer *server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
    soup_server_run_async(server);

    soup_server_add_handler(server, NULL, serverCallback, NULL, NULL);

    SoupURI *soupURI = soup_uri_new("http://127.0.0.1/");
    soup_uri_set_port(soupURI, soup_server_get_port(server));

    baseURI = soup_uri_to_string(soupURI, FALSE);
    soup_uri_free(soupURI);

    g_test_bug_base("https://bugs.webkit.org/");
    g_test_add_func("/webkit/favicondatabase/set-path", testWebKitFaviconDatabaseSetPath);

    // These two tests will trigger an ASSERTION on debug builds due
    // to http://webkit.org/b/67582. Remove the guards once the bug is fixed.
#ifdef NDEBUG
    g_test_add_func("/webkit/favicondatabase/get-favicon", testWebKitFaviconDatabaseGetFavicon);
    g_test_add_func("/webkit/favicondatabase/get-favicon-uri", testWebKitFaviconDatabaseGetFaviconURI);
#endif

    g_test_add_func("/webkit/favicondatabase/remove-all", testWebKitFaviconDatabaseRemoveAll);
    g_test_add_func("/webkit/favicondatabase/close-db", testWebKitFaviconDatabaseCloseDatabase);

    return g_test_run();
}
Example #11
0
int
main (int argc, char **argv)
{
  SoupSession *session;
  char *url;
  RestProxy *proxy;

  g_type_init ();
  loop = g_main_loop_new (NULL, FALSE);

  session = soup_session_async_new ();

  server = soup_server_new (NULL);
  soup_server_add_handler (server, NULL, server_callback, NULL, NULL);
  soup_server_run_async (server);

  url = g_strdup_printf ("http://127.0.0.1:%d/", soup_server_get_port (server));
  proxy = rest_proxy_new (url, FALSE);
  g_free (url);

  stream_test (proxy);
  g_main_loop_run (loop);

  return errors != 0;
}
static SoupServer *
get_http_server (int port)
{
  SoupAddress *if6;
  SoupServer *server;

  if6 = soup_address_new_any (SOUP_ADDRESS_FAMILY_IPV6, port);
  server = soup_server_new (SOUP_SERVER_INTERFACE, if6, SOUP_SERVER_PORT,
      port, NULL);
  g_object_unref (if6);
  if (server)
    return server;

  /* try again with just IPv4 */
  server = soup_server_new (SOUP_SERVER_PORT, port, NULL);
  return server;
}
Example #13
0
int
main (int argc, char **argv)
{
	GMainLoop *loop;
	int opt;
	int port = SOUP_ADDRESS_ANY_PORT;
	SoupAuthDomain *auth_domain = NULL;

	g_type_init ();
	signal (SIGINT, quit);

	while ((opt = getopt (argc, argv, "ap:")) != -1) {
		switch (opt) {
		case 'a':
			auth_domain = soup_auth_domain_basic_new (
				SOUP_AUTH_DOMAIN_REALM, "simple-proxy",
				SOUP_AUTH_DOMAIN_PROXY, TRUE,
				SOUP_AUTH_DOMAIN_BASIC_AUTH_CALLBACK, auth_callback,
				NULL);
			break;
		case 'p':
			port = atoi (optarg);
			break;
		default:
			g_printerr ("Usage: %s [-p port] [-n]\n",
				    argv[0]);
			exit (1);
		}
	}

	server = soup_server_new (SOUP_SERVER_PORT, port,
				  NULL);
	if (!server) {
		g_printerr ("Unable to bind to server port %d\n", port);
		exit (1);
	}
	soup_server_add_handler (server, NULL,
				 server_callback, NULL, NULL);
	if (auth_domain) {
		soup_server_add_auth_domain (server, auth_domain);
		g_object_unref (auth_domain);
	}

	g_print ("\nStarting proxy on port %d\n",
		 soup_server_get_port (server));
	soup_server_run_async (server);

	session = soup_session_async_new ();

	g_print ("\nWaiting for requests...\n");

	loop = g_main_loop_new (NULL, TRUE);
	g_main_loop_run (loop);
	g_main_loop_unref (loop);

	return 0;
}
Example #14
0
int main()
{
    SoupServer *server;
    GError *error;

    server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "simple-httpd ", SOUP_SERVER_TLS_CERTIFICATE, NULL, NULL);
    soup_server_listen_all (server, 1234, SOUP_SERVER_LISTEN_HTTPS, &error);

    return 0;
}
Example #15
0
int main()
{
	g_type_init();

	SoupServer *server = soup_server_new (
		SOUP_SERVER_PORT, 3000,
		NULL);
	soup_server_add_handler (server, NULL, (SoupServerCallback) server_callback,
             NULL,NULL);

	btree = btree_open("/tmp/badger", 0, 0666);
	soup_server_run(server);
}
static void
remote_display_host_init (RemoteDisplayHost *host)
{
	RemoteDisplayHostPrivate *priv;

	priv = GET_PRIVATE (host);
	priv->files = g_hash_table_new_full (g_str_hash, g_str_equal,
					     g_free, (GDestroyNotify) file_free);
	priv->server = soup_server_new (NULL, NULL);
	soup_server_add_handler (priv->server, NULL,
				 server_callback, host, NULL);

}
Example #17
0
static void
do_ipv6_test (void)
{
	SoupServer *ipv6_server;
	SoupURI *ipv6_uri;
	SoupAddress *ipv6_addr;
	SoupSession *session;
	SoupMessage *msg;

	debug_printf (1, "\nIPv6 server test\n");

	ipv6_addr = soup_address_new ("::1", SOUP_ADDRESS_ANY_PORT);
	soup_address_resolve_sync (ipv6_addr, NULL);
	ipv6_server = soup_server_new (SOUP_SERVER_INTERFACE, ipv6_addr,
				       NULL);
	g_object_unref (ipv6_addr);
	soup_server_add_handler (ipv6_server, NULL, ipv6_server_callback, NULL, NULL);
	soup_server_run_async (ipv6_server);

	ipv6_uri = soup_uri_new ("http://[::1]/");
	soup_uri_set_port (ipv6_uri, soup_server_get_port (ipv6_server));

	session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, NULL);

	debug_printf (1, "  HTTP/1.1\n");
	msg = soup_message_new_from_uri ("GET", ipv6_uri);
	soup_session_send_message (session, msg);
	if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) {
		debug_printf (1, "    request failed: %d %s\n",
			      msg->status_code, msg->reason_phrase);
		errors++;
	}
	g_object_unref (msg);

	debug_printf (1, "  HTTP/1.0\n");
	msg = soup_message_new_from_uri ("GET", ipv6_uri);
	soup_message_set_http_version (msg, SOUP_HTTP_1_0);
	soup_session_send_message (session, msg);
	if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) {
		debug_printf (1, "    request failed: %d %s\n",
			      msg->status_code, msg->reason_phrase);
		errors++;
	}
	g_object_unref (msg);

	soup_uri_free (ipv6_uri);
	soup_test_session_abort_unref (session);
	soup_test_server_quit_unref (ipv6_server);
}
Example #18
0
SoupServer *
soupcut_server_take_new (GMainContext *context)
{
    SoupServer *server;
    SoupAddress *address;

    address = soup_address_new("localhost", SOUP_ADDRESS_ANY_PORT);
    soup_address_resolve_sync(address, NULL);
    server = soup_server_new(SOUP_SERVER_INTERFACE, address,
                             SOUP_SERVER_ASYNC_CONTEXT, context,
                             NULL);
    g_object_unref(address);

    return soupcut_server_take(server);
}
Example #19
0
void trap_init(void)
{
	GError *error = NULL;
	SoupServer *server;

	server = soup_server_new(SOUP_SERVER_SERVER_HEADER,
		"TRAP-1.0", NULL);
	soup_server_listen_all(server, 1373,
		SOUP_SERVER_LISTEN_IPV4_ONLY, &error);
	if (error) {
		g_critical("Unable to create soup server: %s\n", error->message);
		exit(1);
	}
	soup_server_add_handler(server, NULL, trap_callback, NULL, NULL);
}
Example #20
0
int
main (int argc, char **argv)
{
	GMainLoop *loop;
	int opt;
	int port = SOUP_ADDRESS_ANY_PORT;

	g_thread_init (NULL);
	g_type_init ();
	signal (SIGINT, quit);

	while ((opt = getopt (argc, argv, "p:s:")) != -1) {
		switch (opt) {
		case 'p':
			port = atoi (optarg);
			break;
		default:
			fprintf (stderr, "Usage: %s [-p port] [-n]\n",
				 argv[0]);
			exit (1);
		}
	}

	server = soup_server_new (SOUP_SERVER_PORT, port,
				  NULL);
	if (!server) {
		fprintf (stderr, "Unable to bind to server port %d\n", port);
		exit (1);
	}
	soup_server_add_handler (server, NULL,
				 server_callback, NULL, NULL);

	printf ("\nStarting proxy on port %d\n",
		soup_server_get_port (server));
	soup_server_run_async (server);

	session = soup_session_async_new ();

	printf ("\nWaiting for requests...\n");

	loop = g_main_loop_new (NULL, TRUE);
	g_main_loop_run (loop);
	g_main_loop_unref (loop);

	return 0;
}
Example #21
0
void
start_http_server (DBusClient *dbus_client, guint port)
{
  SoupServer *server;

  server = soup_server_new (SOUP_SERVER_PORT, port,
                           SOUP_SERVER_SERVER_HEADER, "httpdbusd",
                           NULL);

  if (!server)
    g_error ("Sorry, unable to start server");

  soup_server_run_async (server);

  soup_server_add_handler (server, NULL, (SoupServerCallback)server_cb,
                           dbus_client,
                           NULL);
}
Example #22
0
static SoupServer *
test_server_new (gboolean in_own_thread, gboolean ssl)
{
	SoupServer *server;
	GMainContext *async_context;
	const char *ssl_cert_file, *ssl_key_file;
	SoupAddress *addr;

	async_context = in_own_thread ? g_main_context_new () : NULL;

	if (ssl) {
		ssl_cert_file = SRCDIR "/test-cert.pem";
		ssl_key_file = SRCDIR "/test-key.pem";
	} else
		ssl_cert_file = ssl_key_file = NULL;

	addr = soup_address_new ("127.0.0.1", SOUP_ADDRESS_ANY_PORT);
	soup_address_resolve_sync (addr, NULL);

	server = soup_server_new (SOUP_SERVER_INTERFACE, addr,
				  SOUP_SERVER_ASYNC_CONTEXT, async_context,
				  SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file,
				  SOUP_SERVER_SSL_KEY_FILE, ssl_key_file,
				  NULL);
	g_object_unref (addr);
	if (async_context)
		g_main_context_unref (async_context);

	if (!server) {
		fprintf (stderr, "Unable to create server\n");
		exit (1);
	}

	if (in_own_thread) {
		GThread *thread;

		thread = g_thread_create (run_server_thread, server,
					  TRUE, NULL);
		g_object_set_data (G_OBJECT (server), "thread", thread);
	} else
		soup_server_run_async (server);

	return server;
}
Example #23
0
WebKitTestServer::WebKitTestServer(ServerType type)
{
    GUniquePtr<char> sslCertificateFile;
    GUniquePtr<char> sslKeyFile;
    if (type == ServerHTTPS) {
        CString resourcesDir = Test::getResourcesDir();
        sslCertificateFile.reset(g_build_filename(resourcesDir.data(), "test-cert.pem", NULL));
        sslKeyFile.reset(g_build_filename(resourcesDir.data(), "test-key.pem", NULL));
    }

    GRefPtr<SoupAddress> address = adoptGRef(soup_address_new("127.0.0.1", SOUP_ADDRESS_ANY_PORT));
    soup_address_resolve_sync(address.get(), 0);

    m_soupServer = adoptGRef(soup_server_new(SOUP_SERVER_INTERFACE, address.get(),
        SOUP_SERVER_SSL_CERT_FILE, sslCertificateFile.get(),
        SOUP_SERVER_SSL_KEY_FILE, sslKeyFile.get(), nullptr));
    m_baseURI = type == ServerHTTPS ? soup_uri_new("https://127.0.0.1/") : soup_uri_new("http://127.0.0.1/");
    soup_uri_set_port(m_baseURI, soup_server_get_port(m_soupServer.get()));
}
Example #24
0
int init_server()
{
    SoupServer *server;
    int port = SOUP_ADDRESS_ANY_PORT;

    server = soup_server_new (SOUP_SERVER_PORT, port,
                              SOUP_SERVER_SERVER_HEADER, "AwayFramework ",
                              NULL);
    if (!server) {
        g_log("AFR", G_LOG_LEVEL_ERROR, "Unable to bind to server port %d\n", port);
        return -1;
    }

    soup_server_add_handler (server, NULL,
                             server_callback, NULL, NULL);
    g_log("AFR", G_LOG_LEVEL_INFO, "Starting Server on port %d",
          soup_server_get_port (server));
    soup_server_run_async (server);

    return soup_server_get_port (server);
}
Example #25
0
int main(int argc, char** argv)
{
    SoupServer* server;

    gtk_test_init(&argc, &argv, NULL);

    server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
    soup_server_run_async(server);

    soup_server_add_handler(server, NULL, server_callback, NULL, NULL);

    base_uri = soup_uri_new("http://127.0.0.1/");
    soup_uri_set_port(base_uri, soup_server_get_port(server));

    g_test_bug_base("https://bugs.webkit.org/");
    g_test_add("/webkit/loading/status",
               WebLoadingFixture, NULL,
               web_loading_fixture_setup,
               test_loading_status,
               web_loading_fixture_teardown);
    g_test_add("/webkit/loading/error",
               WebLoadingFixture, NULL,
               web_loading_fixture_setup,
               test_loading_error,
               web_loading_fixture_teardown);
    g_test_add("/webkit/loading/cancelled",
               WebLoadingFixture, NULL,
               web_loading_fixture_setup,
               test_loading_cancelled,
               web_loading_fixture_teardown);
    g_test_add("/webkit/loading/goback",
               WebLoadingFixture, NULL,
               web_loading_fixture_setup,
               test_loading_goback,
               web_loading_fixture_teardown);
    return g_test_run();
}
Example #26
0
static SoupServer *
test_server_new (gboolean in_own_thread, gboolean ssl)
{
	GMainContext *async_context;
	const char *ssl_cert_file, *ssl_key_file;

	if (test_server)
		test_server_shutdown ();

	async_context = in_own_thread ? g_main_context_new () : NULL;

	if (ssl) {
		ssl_cert_file = SRCDIR "/test-cert.pem";
		ssl_key_file = SRCDIR "/test-key.pem";
	} else
		ssl_cert_file = ssl_key_file = NULL;

	test_server = soup_server_new (SOUP_SERVER_ASYNC_CONTEXT, async_context,
				       SOUP_SERVER_SSL_CERT_FILE, ssl_cert_file,
				       SOUP_SERVER_SSL_KEY_FILE, ssl_key_file,
				       NULL);
	if (async_context)
		g_main_context_unref (async_context);

	if (!test_server) {
		fprintf (stderr, "Unable to create server\n");
		exit (1);
	}

	if (in_own_thread) {
		server_thread = g_thread_create (run_server_thread, test_server,
						 TRUE, NULL);
	} else
		soup_server_run_async (test_server);

	return test_server;
}
Example #27
0
int main(int argc, char** argv)
{
    SoupServer* server;
    SoupURI* soup_uri;

    g_thread_init(NULL);
    gtk_test_init(&argc, &argv, NULL);

    /* Hopefully make test independent of the path it's called from. */
    while (!g_file_test ("WebKit/gtk/tests/resources/test.html", G_FILE_TEST_EXISTS)) {
        char path_name[PATH_MAX];

        g_chdir("..");

        g_assert(!g_str_equal(getcwd(path_name, PATH_MAX), "/"));
    }

    g_chdir("WebKit/gtk/tests/resources/");

    server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
    soup_server_run_async(server);

    soup_server_add_handler(server, NULL, server_callback, NULL, NULL);

    soup_uri = soup_uri_new("http://127.0.0.1/");
    soup_uri_set_port(soup_uri, soup_server_get_port(server));

    base_uri = soup_uri_to_string(soup_uri, FALSE);
    soup_uri_free(soup_uri);

    g_test_bug_base("https://bugs.webkit.org/");
    g_test_add_func("/webkit/webview/icon-uri", test_webkit_web_view_icon_uri);
    g_test_add_func("/webkit/webview/adjustments", test_webkit_web_view_adjustments);

    return g_test_run ();
}
Example #28
0
int main(int argc, char* argv[])
{
    //ARGH: putting it after g_dbus_node_info_new_for_xml works on Fedora but crashes the XO...
    gtk_init(&argc, &argv);

    GError *error = NULL;
    GOptionContext *context;

    context = g_option_context_new (NULL);
    g_option_context_add_main_entries (context, entries, NULL);
    //g_option_context_add_group (context, gtk_get_option_group (TRUE));
    if (!g_option_context_parse (context, &argc, &argv, &error))
    {
        g_print ("option parsing failed: %s\n", error->message);
        exit (1);
    }
    if(bundle_id == NULL || activity_id == NULL)
    {
        g_print ("bundle-id and activity-id are required options\n");
        exit (1);
    }

/////////////////////////////////////////////////

    introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
    g_assert (introspection_data != NULL);

    gchar service_name[256];
    sprintf(service_name, "org.laptop.Activity%s", activity_id);
    
    /*guint owner_id =*/ g_bus_own_name(
        G_BUS_TYPE_SESSION, service_name, G_BUS_NAME_OWNER_FLAGS_NONE,
        on_bus_acquired, on_name_acquired, on_name_lost,
        NULL, NULL);

/////////////////////////////////////////////////
/*
    GDBusProxy *journal = g_dbus_proxy_new_for_bus_sync(
        G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL,
        "org.laptop.sugar.DataStore",
        "/org/laptop/sugar/DataStore",
        "org.laptop.sugar.DataStore",
        NULL, NULL);
    GVariant *params = g_variant_new("(a{sv}as)", NULL, NULL);
    //fprintf(stderr, "journal proxy params is %s\n", params == NULL ? "null" : "notnull");
    GVariant *result = g_dbus_proxy_call_sync(
        journal, "find", params, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
    //fprintf(stderr, "journal proxy result is %s\n", result == NULL ? "null" : "notnull");
    if(error != NULL) {fprintf(stderr, "error: %d, %d, %s\n", error->domain, error->code, error->message);}
    if(result != NULL) {
        //fprintf(stderr, "result type: %s\n", g_variant_get_type_string(result));
        GVariant *results = NULL;
        guint32 count = -1;
        g_variant_get(result, "(@aa{sv}u)", &results, &count);
        fprintf(stderr, "results is %s, count is %d\n", results == NULL ? "null" : "notnull", count);
        //fprintf(stderr, "results type: %s\n", g_variant_get_type_string(results));
        GVariant *dictionary = NULL;
        GVariantIter results_iter;
        g_variant_iter_init(&results_iter, results);
        while (g_variant_iter_loop(&results_iter, "@a{sv}", &dictionary)) {
            GVariantIter dictionary_iter;
            g_variant_iter_init(&dictionary_iter, dictionary);
            const char *key = NULL;
            GVariant *value = NULL;
            while (g_variant_iter_loop(&dictionary_iter, "{s@v}", &key, &value)) {
                GVariant *unboxed = g_variant_get_variant(value);
                if(strcmp(g_variant_get_type_string(unboxed), "ay") != 0) {
                    fprintf(stderr, "%s=%s\n", key, g_variant_print(unboxed, TRUE));
                } else if(g_variant_n_children(unboxed) < 256) { // skip preview
                    //ARGH: for some 'clever' reason most of the strings are byte arrays...
                    fprintf(stderr, "%s=", key);
                    guchar c;
                    GVariantIter char_iter;
                    g_variant_iter_init(&char_iter, unboxed);
                    while (g_variant_iter_loop(&char_iter, "y", &c)) {
                        fprintf(stderr, "%c", c);
                    }
                    fprintf(stderr, "\n");
                }
            }
        }
    }
*/                                         
/////////////////////////////////////////////////
        
    WebKitWebView *webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
/*
    guint n = -1, i;
    guint *alma = g_signal_list_ids(G_TYPE_FROM_INSTANCE(webView), &n);
    for(i=0; i<n; ++i) {
        GSignalQuery q;
        g_signal_query(alma[i], &q);
        printf("alma: %d, %s\n", q.signal_id, q.signal_name);
    }
*/                            
    GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL));
    gtk_scrolled_window_add_with_viewport(scrolledWindow, GTK_WIDGET(webView));
                                                        
    GtkWidget *main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_decorated(GTK_WINDOW(main_window), FALSE);
    gtk_window_maximize(GTK_WINDOW(main_window));
    //ARGH: do not use fullscreen as it disables the frame
    //gtk_window_fullscreen(GTK_WINDOW(main_window));
    gtk_container_add(GTK_CONTAINER(main_window), GTK_WIDGET(scrolledWindow));
    g_signal_connect_after(main_window, "realize", G_CALLBACK(afterMainWindowRealized), NULL);
    g_signal_connect(main_window, "destroy", G_CALLBACK(destroyWindowCb), NULL);

#ifdef USE_WEBKIT2
    g_signal_connect(webView, "close", G_CALLBACK(closeWebViewCb), main_window);
#else
    g_signal_connect(webView, "close-web-view", G_CALLBACK(closeWebViewCb), main_window);
/*
    //g_signal_connect(webView, "resource-request-starting", G_CALLBACK(resourceRequestStarting), main_window);
    SoupSession *session = webkit_get_default_session();
    fprintf(stderr, "session is %s\n", session == NULL ? "null" : "notnull");
    g_signal_connect(session, "request-started", G_CALLBACK(requestStartedCb), main_window);
*/
#endif

    SoupServer *server = soup_server_new(SOUP_SERVER_PORT, 0, NULL); // use some random port
//ARGH: it crashes
//    SoupAddress *address = soup_address_new("localhost", 0);
//    if(address != NULL) {
//        SoupServer *server = soup_server_new(SOUP_SERVER_INTERFACE, address, NULL); // use some random port
//    }
    guint port = soup_server_get_port(server);
    SoupSocket *listener = soup_server_get_listener(server);
    SoupAddress *addr = soup_socket_get_local_address(listener);
    fprintf(stderr, "server host %s port %d\n", soup_address_get_name(addr), port);
    soup_server_add_handler(server, "/activity", serverHandleStatic, NULL, NULL);
    soup_server_add_handler(server, "/web", serverHandleStatic, NULL, NULL);
    soup_server_add_handler(server, "/journal", serverHandleJournal, NULL, NULL);
//    g_signal_connect(server, "request-started", G_CALLBACK(serverRequestStartedCb), NULL);
    soup_server_run_async(server);
    
/*
    gchar *current_dir = g_get_current_dir();
    gchar index_uri[256];
    //ARGH: a file uri always has to be absolute
    sprintf(index_uri, "file://%s/index.html", current_dir);
    webkit_web_view_load_uri(webView, index_uri);
*/
    //webkit_web_view_load_uri(webView, "http://nell-colors.github.cscott.net");
    //webkit_web_view_load_uri(webView, "http://index.hu");

    gchar buffer[256];
    sprintf(buffer, "http://localhost:%d/web/index.html", port);
    webkit_web_view_load_uri(webView, buffer);

    gtk_widget_grab_focus(GTK_WIDGET(webView));
    gtk_widget_show_all(main_window);

    gtk_main();

    return 0;
}
Example #29
0
static gboolean
run (int argc, char **argv, GCancellable *cancellable, GError **error)
{
  gboolean ret = FALSE;
  g_autoptr(GOptionContext) context = NULL;
  const char *dirpath;
  OtTrivialHttpd appstruct = { 0, };
  OtTrivialHttpd *app = &appstruct;
  glnx_unref_object SoupServer *server = NULL;
  g_autoptr(GFileMonitor) dirmon = NULL;

  context = g_option_context_new ("[DIR] - Simple webserver");
  g_option_context_add_main_entries (context, options, NULL);

  app->root_dfd = -1;

  if (!g_option_context_parse (context, &argc, &argv, error))
    goto out;

  if (argc > 1)
    dirpath = argv[1];
  else
    dirpath = ".";

  if (!glnx_opendirat (AT_FDCWD, dirpath, TRUE, &app->root_dfd, error))
    goto out;

  if (!(opt_random_500s_percentage >= 0 && opt_random_500s_percentage <= 99))
    {
      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
                   "Invalid --random-500s=%u", opt_random_500s_percentage);
      goto out;
    }

  if (opt_log)
    {
      GOutputStream *stream = NULL;

      if (g_strcmp0 (opt_log, "-") == 0)
        {
          if (opt_daemonize)
            {
              ot_util_usage_error (context, "Cannot use --log-file=- and --daemonize at the same time", error);
              goto out;
            }
          stream = G_OUTPUT_STREAM (g_unix_output_stream_new (STDOUT_FILENO, FALSE));
        }
      else
        {
          g_autoptr(GFile) log_file = NULL;
          GFileOutputStream* log_stream;

          log_file = g_file_new_for_path (opt_log);
          log_stream = g_file_create (log_file,
                                      G_FILE_CREATE_PRIVATE,
                                      cancellable,
                                      error);
          if (!log_stream)
            goto out;
          stream = G_OUTPUT_STREAM (log_stream);
        }

      app->log = stream;
    }

#if SOUP_CHECK_VERSION(2, 48, 0)
  server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "ostree-httpd ", NULL);
  if (!soup_server_listen_all (server, opt_port, 0, error))
    goto out;
#else
  server = soup_server_new (SOUP_SERVER_PORT, opt_port,
                            SOUP_SERVER_SERVER_HEADER, "ostree-httpd ",
                            NULL);
#endif

  soup_server_add_handler (server, NULL, httpd_callback, app, NULL);
  if (opt_port_file)
    {
      g_autofree char *portstr = NULL;
#if SOUP_CHECK_VERSION(2, 48, 0)
      GSList *listeners = soup_server_get_listeners (server);
      g_autoptr(GSocket) listener = NULL;
      g_autoptr(GSocketAddress) addr = NULL;
      
      g_assert (listeners);
      listener = g_object_ref (listeners->data);
      g_slist_free (listeners);
      listeners = NULL;
      addr = g_socket_get_local_address (listener, error);
      if (!addr)
        goto out;

      g_assert (G_IS_INET_SOCKET_ADDRESS (addr));
      
      portstr = g_strdup_printf ("%u\n", g_inet_socket_address_get_port ((GInetSocketAddress*)addr));
#else
      portstr = g_strdup_printf ("%u\n", soup_server_get_port (server));
#endif

      if (g_strcmp0 ("-", opt_port_file) == 0)
        {
          fputs (portstr, stdout); // not g_print - this must go to stdout, not a handler
          fflush (stdout);
        }
      else if (!g_file_set_contents (opt_port_file, portstr, strlen (portstr), error))
        goto out;
    }
#if !SOUP_CHECK_VERSION(2, 48, 0)
  soup_server_run_async (server);
#endif
  
  if (opt_daemonize)
    {
      pid_t pid = fork();
      if (pid == -1)
        {
          int errsv = errno;
          g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                               g_strerror (errsv));
          goto out;
        }
      else if (pid > 0)
        {
          ret = TRUE;
          goto out;
        }
      /* Child, continue */
      if (setsid () < 0)
        err (1, "setsid");
      /* Daemonising: close stdout/stderr so $() et al work on us */
      if (freopen("/dev/null", "r", stdin) == NULL)
        err (1, "freopen");
      if (freopen("/dev/null", "w", stdout) == NULL)
        err (1, "freopen");
      if (freopen("/dev/null", "w", stderr) == NULL)
        err (1, "freopen");
    }
  else
    {
      /* Since we're used for testing purposes, let's just do this by
       * default.  This ensures we exit when our parent does.
       */
      if (prctl (PR_SET_PDEATHSIG, SIGTERM) != 0)
        {
          if (errno != ENOSYS)
            {
              glnx_set_error_from_errno (error);
              goto out;
            }
        }
    }

  app->running = TRUE;
  if (opt_autoexit)
    {
      gboolean is_symlink = FALSE;
      g_autoptr(GFile) root = NULL;
      g_autoptr(GFileInfo) info = NULL;

      root = g_file_new_for_path (dirpath);
      info = g_file_query_info (root,
                                G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK,
                                G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
                                cancellable, error);
      if (!info)
        goto out;

      is_symlink = g_file_info_get_is_symlink (info);

      if (is_symlink)
        dirmon = g_file_monitor_file (root, 0, cancellable, error);
      else
        dirmon = g_file_monitor_directory (root, 0, cancellable, error);

      if (!dirmon)
        goto out;
      g_signal_connect (dirmon, "changed", G_CALLBACK (on_dir_changed), app);
    }
  httpd_log (app, "serving at root %s\n", dirpath);
  while (app->running)
    g_main_context_iteration (NULL, TRUE);

  ret = TRUE;
 out:
  if (app->root_dfd != -1)
    (void) close (app->root_dfd);
  g_clear_object (&app->log);
  return ret;
}
Example #30
0
int
main (int argc, char **argv)
{
	GOptionContext *opts;
	GMainLoop *loop;
	SoupServer *server;
	GSList *uris, *u;
	char *str;
	GTlsCertificate *cert;
	GError *error = NULL;

	opts = g_option_context_new (NULL);
	g_option_context_add_main_entries (opts, entries, NULL);
	if (!g_option_context_parse (opts, &argc, &argv, &error)) {
		g_printerr ("Could not parse arguments: %s\n",
			    error->message);
		g_printerr ("%s",
			    g_option_context_get_help (opts, TRUE, NULL));
		exit (1);
	}
	if (argc != 1) {
		g_printerr ("%s",
			    g_option_context_get_help (opts, TRUE, NULL));
		exit (1);
	}
	g_option_context_free (opts);

	signal (SIGINT, quit);

	if (tls_cert_file && tls_key_file) {
		cert = g_tls_certificate_new_from_files (tls_cert_file, tls_key_file, &error);
		if (error) {
			g_printerr ("Unable to create server: %s\n", error->message);
			exit (1);
		}
		server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "simple-httpd ",
					  SOUP_SERVER_TLS_CERTIFICATE, cert,
					  NULL);
		g_object_unref (cert);

		soup_server_listen_all (server, port, SOUP_SERVER_LISTEN_HTTPS, &error);
	} else {
		server = soup_server_new (SOUP_SERVER_SERVER_HEADER, "simple-httpd ",
					  NULL);
		soup_server_listen_all (server, port, 0, &error);
	}

	soup_server_add_handler (server, NULL,
				 server_callback, NULL, NULL);

	uris = soup_server_get_uris (server);
	for (u = uris; u; u = u->next) {
		str = soup_uri_to_string (u->data, FALSE);
		g_print ("Listening on %s\n", str);
		g_free (str);
		soup_uri_free (u->data);
	}
	g_slist_free (uris);

	g_print ("\nWaiting for requests...\n");

	loop = g_main_loop_new (NULL, TRUE);
	g_main_loop_run (loop);

	return 0;
}