tDocument switch to libcurl - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 911e3d0b81eaa0cfb2ec75a3d8394906cff257c5
 (DIR) parent 826c6ac4c313c45fad652728ea9002483507ef9a
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Mon,  2 Nov 2020 23:52:15 -0800
       
       Document switch to libcurl
       
       Diffstat:
         M ChangeLog                           |       7 +++++++
         M doc/configfile.html                 |      54 ++++---------------------------
         M doc/example-igneous                 |       2 --
         M doc/metaserver.html                 |      11 ++---------
         M src/dopewars.c                      |      37 +++----------------------------
         M src/dopewars.h                      |       4 ----
         M src/gui_client/optdialog.c          |      12 ------------
         M src/serverside.c                    |      43 ------------------------------
       
       8 files changed, 19 insertions(+), 151 deletions(-)
       ---
 (DIR) diff --git a/ChangeLog b/ChangeLog
       t@@ -7,6 +7,13 @@ SVN
              of these libraries to build dopewars.
            - Update metaserver to work with new SourceForge; older versions can no
              longer successfully register with the metaserver.
       +    - Switch to using libcurl to talk to the metaserver (this supports https,
       +      unlike the old internal code). The metaserver configuration has changed
       +      accordingly; MetaServer.Name, MetaServer.Port and MetaServer.Path are
       +      replaced with MetaServer.URL, and MetaServer.Auth, MetaServer.Proxy*,
       +      and MetaServer.UseSocks are removed (set the https_proxy environment
       +      variable instead, as per
       +      https://curl.haxx.se/libcurl/c/libcurl-tutorial.html#Environment)
            - Fix for a DOS against the server using the REQUESTJET message type
              (thanks to Doug Prostko for reporting the problem).
        
 (DIR) diff --git a/doc/configfile.html b/doc/configfile.html
       t@@ -202,31 +202,13 @@ is replaced by <i>FALSE</i> the server will not report to the metaserver.
        This setting, if set to TRUE, can be overridden by the -S
        <a href="commandline.html#privateserver">command line option</a>.</dd>
        
       -<dt><b>MetaServer.Name=<i>"dopewars.sourceforge.net"</i></b></dt>
       -<dd>Tells dopewars that the metaserver is located at
       -<i>dopewars.sourceforge.net</i>. See the
       -<a href="metaserver.html">metaserver</a> page, and below, for information
       -about connecting to the dopewars metaserver via a proxy web server.</dd>
       -
       -<dt><b>MetaServer.Port=<i>80</i></b></dt>
       -<dd>Instructs dopewars that the metaserver can be found on TCP port
       -<i>80</i>. This is the standard HTTP port for Web access. (You shouldn't need
       -to change this, even if you connect via a proxy.)</dd>
       -
       -<dt><b>MetaServer.ProxyName=<i>"proxy.com"</i></b></dt>
       -<dd>Sends all requests to the metaserver via the web proxy at <i>proxy.com</i>.
       -If this is set to a blank string (the default) then the connection to the
       -metaserver is made directly.</dd>
       -
       -<dt><b>MetaServer.ProxyPort=<i>8080</i></b></dt>
       -<dd>Connects to the web proxy on port <i>8080</i>. (It then connects to the
       -metaserver on the port specified by MetaServer.Port.) This variable is ignored
       -if MetaServer.ProxyName is blank.</dd>
       -
       -<dt><b>MetaServer.Path=<i>"/metaserver.php"</i></b></dt>
       -<dd>Tells dopewars that the PHP script on the metaserver, for server
       -registration (server mode) or listing the available servers (client mode) is
       -<i>/metaserver.php</i>.</dd>
       +<dt><b>MetaServer.URL=<i>"https://dopewars.sourceforge.io/metaserver.php"</i></b></dt>
       +<dd>Tells dopewars that the metaserver PHP script is located at
       +<i>https://dopewars.sourceforge.io/metaserver.php</i>. This is used for server
       +registration (server mode) or listing the available servers (client mode);
       +see the <a href="metaserver.html">metaserver</a> page. If a proxy is needed to
       +connect to the web server, set the
       +<a href="https://curl.haxx.se/libcurl/c/libcurl-tutorial.html#Environment">https_proxy environment variable</a>.</dd>
        
        <dt><a id="MetaServerComment"><b>MetaServer.Comment=<i>"dopewars
        server"</i></b></a></dt>
       t@@ -248,28 +230,6 @@ See the <a href="metaserver.html">metaserver page</a> for more details.</dd>
        <dd>Uses the password <i>auth</i> to authenticate your dopewars server's
        hostname (see MetaServer.LocalName above) with the metaserver.</dd>
        
       -<dt><b>MetaServer.UseSocks=<i>FALSE</i></b></dt>
       -<dd>Even if "Socks.Active" is TRUE, do not use SOCKS for metaserver
       -communication - connect directly to the metaserver or proxy.</dd>
       -
       -<dt><b>MetaServer.Auth.User=<i>""</i></b></dt>
       -<dd>If the metaserver webpage is on a restricted access server (i.e. it
       -requires HTTP Basic authentication), and you wish to connect with the server
       -or AI player (which can both run unattended) then setting this variable to
       -something other than "" will enable them to authenticate themselves,
       -provided MetaServer.Auth.Password is also set. (The game clients prompt
       -the user for a username and password on each connect instead.)</dd>
       -
       -<dt><b>MetaServer.Auth.Password=<i>""</i></b></dt>
       -<dd>The corresponding password for MetaServer.Auth.User, above.</dd>
       -
       -<dt><b>MetaServer.Proxy.User=<i>""</i></b></dt>
       -<dd>In a similar way to MetaServer.Auth.User, above, this enables a dopewars
       -server or AI player to authenticate itself with a web proxy.</dd>
       -
       -<dt><b>MetaServer.Proxy.Password=<i>""</i></b></dt>
       -<dd>The corresponding password for MetaServer.Proxy.User, above.</dd>
       -
        </dl>
        
        <h2><a id="places">Basic configuration: places in the game</a></h2>
 (DIR) diff --git a/doc/example-igneous b/doc/example-igneous
       t@@ -1,7 +1,5 @@
        ServerMOTD = "Welcome All, Play for as long as you like. !- MAKE SURE TO PAY OFF YOUR DEBT NOW -!"
        Port = 7902
       -MetaServer.Port = 80
       -MetaServer.ProxyPort = 0
        MetaServer.Comment = "Igneous\'s MOD"
        NumTurns = 0
        NumLocation = 87
 (DIR) diff --git a/doc/metaserver.html b/doc/metaserver.html
       t@@ -55,15 +55,8 @@ and so there is at least a good chance that the servers listed there will
        be working.</p>
        
        <p>The metaserver, being an ordinary web page, should work happily on
       -most machines which have web access. A problem occurs, however, if your
       -connection to the Web is via an enforced proxy server (i.e. traffic on
       -port 80 from your machine is blocked by firewall). dopewars can be
       -configured to connect via a proxy server without too much difficulty; if
       -your proxy server is at <i>proxy.com</i> on port <i>8080</i> then you should
       -add the following lines to your dopewars <a href="configfile.html">
       -configuration file</a>:-<br />
       -<b>MetaServer.ProxyName="proxy.com"<br />
       -MetaServer.ProxyPort=8080</b></p>
       +most machines which have web access. If you require a proxy to connect to
       +the Web, set the <a href="https://curl.haxx.se/libcurl/c/libcurl-tutorial.html#Environment">https_proxy environment variable</a>.</p>
        
        <h2><a id="server">Using the metaserver from the server</a></h2>
        <p>People running servers who <b>do not</b> want their details listed by the
 (DIR) diff --git a/src/dopewars.c b/src/dopewars.c
       t@@ -210,13 +210,12 @@ struct BITCH Bitch = {
        
        #ifdef NETWORKING
        struct METASERVER MetaServer = {
       -  FALSE, NULL, NULL, 0, NULL, NULL,
       -  NULL, FALSE, NULL, NULL, NULL, NULL
       +  FALSE, NULL, NULL, NULL, NULL
        };
        
        struct METASERVER DefaultMetaServer = {
       -  TRUE, "https://dopewars.sourceforge.io/metaserver.php", "", 8080,
       -  "", "", "dopewars server", FALSE, "", "", "", ""
       +  TRUE, "https://dopewars.sourceforge.io/metaserver.php", "",
       +  "", "dopewars server"
        };
        
        SocksServer Socks = { NULL, 0, 0, FALSE, NULL, NULL, NULL };
       t@@ -280,12 +279,6 @@ struct GLOBALS Globals[] = {
          {NULL, NULL, NULL, &MetaServer.URL, NULL, "MetaServer.URL",
           N_("Metaserver URL to report/get server details to/from"),
           NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
       -  {NULL, NULL, NULL, &MetaServer.ProxyName, NULL, "MetaServer.ProxyName",
       -   N_("Name of a proxy for metaserver communication"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
       -  {&MetaServer.ProxyPort, NULL, NULL, NULL, NULL, "MetaServer.ProxyPort",
       -   N_("Port for communicating with the proxy server"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 65535},
          {NULL, NULL, NULL, &MetaServer.LocalName, NULL, "MetaServer.LocalName",
           N_("Preferred hostname of your server machine"), NULL, NULL, 0, "",
           NULL, NULL, FALSE, 0, 0},
       t@@ -295,23 +288,6 @@ struct GLOBALS Globals[] = {
          {NULL, NULL, NULL, &MetaServer.Comment, NULL, "MetaServer.Comment",
           N_("Server description, reported to the metaserver"), NULL, NULL, 0, "",
           NULL, NULL, FALSE, 0, 0},
       -  {NULL, &MetaServer.UseSocks, NULL, NULL, NULL, "MetaServer.UseSocks",
       -   N_("If TRUE, use SOCKS for metaserver communication"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
       -  {NULL, NULL, NULL, &MetaServer.authuser, NULL, "MetaServer.Auth.User",
       -   N_("Username for HTTP Basic authentication"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
       -  {NULL, NULL, NULL, &MetaServer.authpassword, NULL,
       -   "MetaServer.Auth.Password",
       -   N_("Password for HTTP Basic authentication"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
       -  {NULL, NULL, NULL, &MetaServer.proxyuser, NULL, "MetaServer.Proxy.User",
       -   N_("Username for HTTP Basic proxy authentication"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
       -  {NULL, NULL, NULL, &MetaServer.proxypassword, NULL,
       -   "MetaServer.Proxy.Password",
       -   N_("Password for HTTP Basic proxy authentication"),
       -   NULL, NULL, 0, "", NULL, NULL, FALSE, 0, 0},
        #endif /* NETWORKING */
        #ifdef CYGWIN
          {NULL, &MinToSysTray, NULL, NULL, NULL, "MinToSysTray",
       t@@ -1676,17 +1652,10 @@ void CopyNames(struct NAMES *dest, struct NAMES *src)
        void CopyMetaServer(struct METASERVER *dest, struct METASERVER *src)
        {
          dest->Active = src->Active;
       -  dest->ProxyPort = src->ProxyPort;
       -  dest->UseSocks = src->UseSocks;
          AssignName(&dest->URL, src->URL);
       -  AssignName(&dest->ProxyName, src->ProxyName);
          AssignName(&dest->LocalName, src->LocalName);
          AssignName(&dest->Password, src->Password);
          AssignName(&dest->Comment, src->Comment);
       -  AssignName(&dest->authuser, src->authuser);
       -  AssignName(&dest->authpassword, src->authpassword);
       -  AssignName(&dest->proxyuser, src->proxyuser);
       -  AssignName(&dest->proxypassword, src->proxypassword);
        }
        #endif
        
 (DIR) diff --git a/src/dopewars.h b/src/dopewars.h
       t@@ -101,11 +101,7 @@ struct SOUNDS {
        struct METASERVER {
          gboolean Active;
          gchar *URL;
       -  gchar *ProxyName;
       -  unsigned ProxyPort;
          gchar *LocalName, *Password, *Comment;
       -  gboolean UseSocks;
       -  gchar *authuser, *authpassword, *proxyuser, *proxypassword;
        };
        #endif
        
 (DIR) diff --git a/src/gui_client/optdialog.c b/src/gui_client/optdialog.c
       t@@ -920,18 +920,6 @@ void OptDialog(GtkWidget *widget, gpointer data)
          entry = NewConfigEntry("MetaServer.URL");
          gtk_table_attach_defaults(GTK_TABLE(table), entry, 1, 4, 1, 2);
        
       -  label = gtk_label_new(_("Web proxy hostname"));
       -  gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
       -                   GTK_SHRINK, GTK_SHRINK, 0, 0);
       -  entry = NewConfigEntry("MetaServer.ProxyName");
       -  gtk_table_attach_defaults(GTK_TABLE(table), entry, 1, 2, 2, 3);
       -
       -  label = gtk_label_new(_("Port"));
       -  gtk_table_attach(GTK_TABLE(table), label, 2, 3, 2, 3,
       -                   GTK_SHRINK, GTK_SHRINK, 0, 0);
       -  entry = NewConfigEntry("MetaServer.ProxyPort");
       -  gtk_table_attach_defaults(GTK_TABLE(table), entry, 3, 4, 2, 3);
       -
          label = gtk_label_new(_("Comment"));
          gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
                           GTK_SHRINK, GTK_SHRINK, 0, 0);
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -168,49 +168,6 @@ void log_meta_headers(gpointer data, gpointer user_data)
          if (*header)
            dopelog(4, LF_SERVER, _("MetaServer: %s"), header);
        }
       -
       -static void ServerHttpAuth(HttpConnection *conn, gboolean proxyauth,
       -                           gchar *realm, gpointer data)
       -{
       -  gchar *user = NULL, *password = NULL;
       -
       -  if (proxyauth) {
       -    if (MetaServer.proxyuser[0] && MetaServer.proxypassword[0]) {
       -      user = MetaServer.proxyuser;
       -      password = MetaServer.proxypassword;
       -      dopelog(3, LF_SERVER,
       -              _("Using MetaServer.Proxy.User and "
       -                "MetaServer.Proxy.Password for HTTP proxy authentication"));
       -    } else {
       -      dopelog(0, LF_SERVER,
       -              _("Unable to authenticate with HTTP proxy; please "
       -                "set MetaServer.Proxy.User and "
       -                "MetaServer.Proxy.Password variables"));
       -    }
       -  } else {
       -    if (MetaServer.authuser[0] && MetaServer.authpassword[0]) {
       -      user = MetaServer.authuser;
       -      password = MetaServer.authpassword;
       -      dopelog(3, LF_SERVER,
       -              _("Using MetaServer.Auth.User and MetaServer.Auth.Password "
       -                "for HTTP authentication"));
       -    } else {
       -      dopelog(0, LF_SERVER,
       -              _("Unable to authenticate with HTTP server; please set "
       -                "MetaServer.Auth.User and "
       -                "MetaServer.Auth.Password variables"));
       -    }
       -  }
       -  SetHttpAuthentication(conn, proxyauth, user, password);
       -}
       -
       -static void ServerNetBufAuth(NetworkBuffer *netbuf, gpointer data)
       -{
       -  dopelog(3, LF_SERVER,
       -          _("Using Socks.Auth.User and Socks.Auth.Password "
       -            "for SOCKS5 authentication"));
       -  SendSocks5UserPasswd(netbuf, Socks.authuser, Socks.authpassword);
       -}
        #endif
        
        /*