Removed and renamed files
[cascardo/rnetproxy.git] / improxy.c
1 #include <glib.h>
2 #include <gnet.h>
3 #include <stdio.h>
4
5 void client_event (GConn* conn, GConnEvent* event, gpointer data)
6 {
7   GConn* server;
8   server = (GConn*) data;
9   switch (event->type)
10     {
11     case GNET_CONN_CONNECT:
12       fprintf (stderr, "Connected to localhost:80.\n");
13       gnet_conn_read (conn);
14       break;
15     case GNET_CONN_READ:
16       if (server == NULL)
17         {
18           fprintf (stderr, "Establishing connection to localhost:80.\n");
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);
22         }
23       gnet_conn_write (server, event->buffer, event->length);
24       gnet_conn_read (conn);
25       break;
26     case GNET_CONN_WRITE:
27       break;
28     default:
29       fprintf (stderr, "Received an unexpected client event.\n");
30       break;
31     }
32 }
33
34 void new_client (GServer* server, GConn* conn, gpointer data)
35 {
36   if (conn == NULL)
37     {
38       fprintf (stderr, "Server has received an error event.\n");
39       return;
40     }
41   gnet_conn_set_callback (conn, client_event, NULL);
42   gnet_conn_read (conn);
43 }
44
45 int main ()
46 {
47
48   GKeyFile *keyfile;
49   GInetAddr* inetaddr;
50   gchar* conf_address;
51   gint port;
52
53   gnet_init ();
54
55   keyfile =  g_key_file_new ();
56
57   g_key_file_load_from_file (keyfile, "conf", G_KEY_FILE_NONE, NULL);
58
59   conf_address = g_key_file_get_string (keyfile, "global", "address", NULL);
60   port = g_key_file_get_integer (keyfile, "global", "port", NULL);
61
62   printf ("Listen address is %s:%d\n", conf_address, port);
63
64   inetaddr = gnet_inetaddr_new_nonblock (conf_address, port);
65   gnet_server_new (inetaddr, port, new_client, NULL);
66
67   g_main_loop_run (g_main_loop_new (g_main_context_default (), TRUE));
68
69   return 0;
70
71 }