5 void client_event (GConn* conn, GConnEvent* event, gpointer data)
8 server = (GConn*) data;
11 case GNET_CONN_CONNECT:
12 g_debug ("Connected to localhost:80.");
13 gnet_conn_read (conn);
18 g_debug ("Establishing connection to localhost:80.");
19 server = gnet_conn_new ("127.0.0.1", 80, client_event, (gpointer) conn);
20 gnet_conn_connect (server);
21 gnet_conn_set_callback (conn, client_event, (gpointer) server);
23 gnet_conn_write (server, event->buffer, event->length);
24 gnet_conn_read (conn);
29 gnet_conn_unref (server);
30 gnet_conn_unref (conn);
33 g_warning ("Received an unexpected client event.");
38 void new_client (GServer* server, GConn* conn, gpointer data)
42 g_critical ("Server has received an error event.");
45 g_message ("Received connection from %s.", conn->hostname);
46 gnet_conn_set_callback (conn, client_event, NULL);
47 gnet_conn_read (conn);
60 keyfile = g_key_file_new ();
62 g_key_file_load_from_file (keyfile, "improxy.conf", G_KEY_FILE_NONE, NULL);
64 conf_address = g_key_file_get_string (keyfile, "global", "address", NULL);
65 port = g_key_file_get_integer (keyfile, "global", "port", NULL);
67 g_message ("Listen address is %s:%d.", conf_address, port);
69 inetaddr = gnet_inetaddr_new_nonblock (conf_address, port);
70 gnet_server_new (inetaddr, port, new_client, NULL);
72 g_main_loop_run (g_main_loop_new (g_main_context_default (), TRUE));