6 void client_event (GConn* conn, GConnEvent* event, gpointer data)
9 server = (GConn*) data;
12 case GNET_CONN_CONNECT:
13 g_debug ("Connected to localhost:80.");
14 gnet_conn_read (conn);
19 g_debug ("Establishing connection to localhost:80.");
20 server = gnet_conn_new ("127.0.0.1", 80, client_event, (gpointer) conn);
21 gnet_conn_connect (server);
22 gnet_conn_set_callback (conn, client_event, (gpointer) server);
24 gnet_conn_write (server, event->buffer, event->length);
25 gnet_conn_read (conn);
30 gnet_conn_unref (server);
31 gnet_conn_unref (conn);
34 g_warning ("Received an unexpected client event.");
39 void new_client (GServer* server, GConn* conn, gpointer data)
43 g_critical ("Server has received an error event.");
46 g_message ("Received connection from %s.", conn->hostname);
47 gnet_conn_set_callback (conn, client_event, NULL);
48 gnet_conn_read (conn);
62 keyfile = g_key_file_new ();
64 g_key_file_load_from_file (keyfile, "improxy.conf", G_KEY_FILE_NONE, NULL);
66 conf_address = g_key_file_get_string (keyfile, "global", "address", NULL);
67 port = g_key_file_get_integer (keyfile, "global", "port", NULL);
69 g_message ("Listen address is %s:%d.", conf_address, port);
71 inetaddr = gnet_inetaddr_new_nonblock (conf_address, port);
72 gnet_server_new (inetaddr, port, new_client, NULL);
74 g_main_loop_run (g_main_loop_new (g_main_context_default (), TRUE));