tSOCKS support for HTTP connections (controlled by MetaServer.UseSocks); docume… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit f8dc591b26deac71c0a9bb30898186158bf1864f | |
parent da4d9b8e32c32e7aab338e77448f8084da14414a | |
Author: Ben Webb <[email protected]> | |
Date: Sun, 7 Oct 2001 23:55:16 +0000 | |
SOCKS support for HTTP connections (controlled by MetaServer.UseSocks); | |
documentation updates for SOCKS configuration variables | |
Diffstat: | |
M doc/configfile.html | 24 ++++++++++++++++++++++++ | |
M src/dopewars.c | 9 +++++++-- | |
M src/dopewars.h | 1 + | |
M src/message.c | 1 + | |
M src/network.c | 3 ++- | |
M src/network.h | 1 + | |
M src/serverside.c | 1 + | |
7 files changed, 37 insertions(+), 3 deletions(-) | |
--- | |
diff --git a/doc/configfile.html b/doc/configfile.html | |
t@@ -87,6 +87,25 @@ This option can be overridden with the -o <a href="commandl… | |
command line option</a> (but be sure to protect the brackets from the shell | |
if you use one of the "special" names). | |
+<dt><b>Socks.Active=<i>FALSE</i></b></a> | |
+<dd>Instructs the dopewars client to connect directly to the given server, | |
+without using an intermediate SOCKS server. If this is set to TRUE, all | |
+connections go via. the SOCKS server. By default, SOCKS is not used for | |
+metaserver communications - see the MetaServer.UseSocks variable. N.B. You | |
+cannot run a dopewars server behind a SOCKS server, due to limitations in | |
+the SOCKS protocol. | |
+ | |
+<dt><b>Socks.Name=<i>socks</i></b></a> | |
+<dd>If using SOCKS, sets the hostname of the SOCKS server to connect to to | |
+be <i>"socks"</i>. | |
+ | |
+<dt><b>Socks.Port=<i>1080</i></b></a> | |
+<dd>Connects to the SOCKS server on TCP port <i>1080</i>. | |
+ | |
+<dt><b>Socks.Version=<i>4</i></b></a> | |
+<dd>Uses SOCKS version <i>4</i>. Version 5 is also supported; SOCKS5 servers | |
+support username/password authentication, unlike SOCKS4. | |
+ | |
<dt><a name="HiScoreFile"><b>HiScoreFile=<i>"/var/lib/dopewars.sco"</i></b></a> | |
<dd>Tells the dopewars server (or the client, if running in single-player | |
mode, not connected to a server) to use the file <i>/var/lib/dopewars.sco</i> | |
t@@ -157,6 +176,11 @@ See the <a href="metaserver.html">metaserver page</a> for… | |
<dt><b>MetaServer.Password=<i>"auth"</i></b> | |
<dd>Uses the password <i>auth</i> to authenticate your dopewars server's | |
hostname (see MetaServer.LocalName above) with the metaserver. | |
+ | |
+<dt><b>MetaServer.UseSocks=<i>FALSE</i></b> | |
+<dd>Even if "Socks.Active" is TRUE, do not use SOCKS for metaserver | |
+communication - connect directly to the metaserver or proxy. | |
+ | |
</dl> | |
<h2><a name="places">Basic configuration: places in the game</a></h2> | |
diff --git a/src/dopewars.c b/src/dopewars.c | |
t@@ -158,11 +158,12 @@ struct BITCH Bitch = { | |
50000,150000 | |
}; | |
-struct METASERVER MetaServer = { FALSE,NULL,0,NULL,0,NULL,NULL,NULL,NULL }; | |
+struct METASERVER MetaServer = { FALSE,NULL,0,NULL,0,NULL,NULL,NULL, | |
+ NULL,FALSE }; | |
struct METASERVER DefaultMetaServer = { | |
TRUE,"dopewars.sourceforge.net",80,"",8080,"/metaserver.php", | |
- "","","dopewars server" | |
+ "","","dopewars server", FALSE | |
}; | |
SocksServer Socks = { NULL,0,0 }; | |
t@@ -223,6 +224,9 @@ struct GLOBALS Globals[] = { | |
{ NULL,NULL,NULL,&MetaServer.Comment,NULL,"MetaServer.Comment", | |
N_("Server description, reported to the metaserver"),NULL,NULL,0,"",NULL, | |
NULL }, | |
+ { NULL,&MetaServer.UseSocks,NULL,NULL,NULL,"MetaServer.UseSocks", | |
+ N_("TRUE if SOCKS should be used for metaserver communication"), | |
+ NULL,NULL,0,"",NULL,NULL }, | |
{ NULL,NULL,NULL,&Pager,NULL,"Pager", | |
N_("Program used to display multi-page output"),NULL,NULL,0,"",NULL,NULL … | |
{ &NumTurns,NULL,NULL,NULL,NULL,"NumTurns", | |
t@@ -1240,6 +1244,7 @@ void CopyMetaServer(struct METASERVER *dest,struct METAS… | |
dest->Active=src->Active; | |
dest->Port=src->Port; | |
dest->ProxyPort=src->ProxyPort; | |
+ dest->UseSocks=src->UseSocks; | |
AssignName(&dest->Name,src->Name); | |
AssignName(&dest->ProxyName,src->ProxyName); | |
AssignName(&dest->Path,src->Path); | |
diff --git a/src/dopewars.h b/src/dopewars.h | |
t@@ -83,6 +83,7 @@ struct METASERVER { | |
gchar *ProxyName; | |
unsigned ProxyPort; | |
gchar *Path,*LocalName,*Password,*Comment; | |
+ gboolean UseSocks; | |
}; | |
struct PRICES { | |
diff --git a/src/message.c b/src/message.c | |
t@@ -311,6 +311,7 @@ gboolean OpenMetaHttpConnection(HttpConnection **conn) { | |
MetaServer.Path,METAVERSION); | |
retval = OpenHttpConnection(conn,MetaServer.Name,MetaServer.Port, | |
MetaServer.ProxyName,MetaServer.ProxyPort, | |
+ UseSocks && MetaServer.UseSocks ? &Socks : NULL, | |
"GET",query,NULL,NULL); | |
g_free(query); | |
return retval; | |
diff --git a/src/network.c b/src/network.c | |
t@@ -937,13 +937,14 @@ static gboolean StartHttpConnect(HttpConnection *conn) { | |
gboolean OpenHttpConnection(HttpConnection **connpt,gchar *HostName, | |
unsigned Port,gchar *Proxy,unsigned ProxyPort, | |
+ SocksServer *socks, | |
gchar *Method,gchar *Query, | |
gchar *Headers,gchar *Body) { | |
HttpConnection *conn; | |
g_assert(HostName && Method && Query && connpt); | |
conn=g_new0(HttpConnection,1); | |
- InitNetworkBuffer(&conn->NetBuf,'\n','\r',NULL); | |
+ InitNetworkBuffer(&conn->NetBuf,'\n','\r',socks); | |
conn->HostName=g_strdup(HostName); | |
if (Proxy && Proxy[0]) conn->Proxy=g_strdup(Proxy); | |
conn->Method=g_strdup(Method); | |
diff --git a/src/network.h b/src/network.h | |
t@@ -172,6 +172,7 @@ gchar *GetWaitingMessage(NetworkBuffer *NetBuf); | |
gboolean OpenHttpConnection(HttpConnection **conn,gchar *HostName, | |
unsigned Port,gchar *Proxy,unsigned ProxyPort, | |
+ SocksServer *socks, | |
gchar *Method,gchar *Query, | |
gchar *Headers,gchar *Body); | |
void CloseHttpConnection(HttpConnection *conn); | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -219,6 +219,7 @@ void RegisterWithMetaServer(gboolean Up,gboolean SendData, | |
retval=OpenHttpConnection(&MetaConn,MetaServer.Name,MetaServer.Port, | |
MetaServer.ProxyName,MetaServer.ProxyPort, | |
+ UseSocks && MetaServer.UseSocks ? &Socks : NULL, | |
"POST",MetaServer.Path,headers->str,body->str); | |
g_string_free(headers,TRUE); | |
g_string_free(body,TRUE); |