Authentication HTTP

Cleiber Marques da Silva cleiber at e3c.com.br
Wed Jan 13 21:18:51 CET 2010


Hello guys,

I made a little patch in opkg to authentication in repositories that using
passwords in the directories. The patch working when use libcurl or wget to
donwload.

Diff:

Index: libopkg/opkg_conf.c
===================================================================
--- libopkg/opkg_conf.c (revision 518)
+++ libopkg/opkg_conf.c (working copy)
@@ -64,6 +64,8 @@
      { "offline_root", OPKG_OPT_TYPE_STRING, &_conf.offline_root },
      { "proxy_passwd", OPKG_OPT_TYPE_STRING, &_conf.proxy_passwd },
      { "proxy_user", OPKG_OPT_TYPE_STRING, &_conf.proxy_user },
+     { "http_user", OPKG_OPT_TYPE_STRING, &_conf.http_user },
+     { "http_passwd", OPKG_OPT_TYPE_STRING, &_conf.http_passwd },
      { "query-all", OPKG_OPT_TYPE_BOOL, &_conf.query_all },
      { "tmp_dir", OPKG_OPT_TYPE_STRING, &_conf.tmp_dir },
      { "verbosity", OPKG_OPT_TYPE_INT, &_conf.verbosity },
Index: libopkg/opkg_conf.h
===================================================================
--- libopkg/opkg_conf.h (revision 518)
+++ libopkg/opkg_conf.h (working copy)
@@ -108,6 +108,10 @@
      char *proxy_user;
      char *proxy_passwd;

+     /* http auth */
+     char *http_user;
+     char *http_passwd;
+
      char *signature_ca_file;
      char *signature_ca_path;

Index: libopkg/opkg_download.c
===================================================================
--- libopkg/opkg_download.c (revision 518)
+++ libopkg/opkg_download.c (working copy)
@@ -156,7 +156,7 @@
 #else
     {
       int res;
-      const char *argv[8];
+      const char *argv[10];
       int i = 0;

       argv[i++] = "wget";
@@ -165,6 +165,14 @@
    argv[i++] = "-Y";
    argv[i++] = "on";
       }
+
+      if (conf->http_user && conf->http_passwd) {
+          char *str;
+          sprintf_alloc(&str, "--http-user=%s", conf->http_user);
+          argv[i++] = str;
+          sprintf_alloc(&str, "--http-password=%s", conf->http_passwd);
+          argv[i++] = str;
+      }
       argv[i++] = "-O";
       argv[i++] = tmp_file_location;
       argv[i++] = src;
@@ -648,6 +656,14 @@
        curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, userpwd);
        free (userpwd);
    }
+   if (conf->http_user && conf->http_passwd)
+   {
+       char *userpwd;
+       sprintf_alloc (&userpwd, "%s:%s", conf->http_user,
+           conf->http_passwd);
+       curl_easy_setopt(curl, CURLOPT_USERPWD, userpwd);
+       free (userpwd);
+   }
     }

     curl_easy_setopt (curl, CURLOPT_NOPROGRESS, (cb == NULL));


#example opkg.conf
option http_user XXX
option http_passwd XXX

Best regards.

-- 
Cleiber Marques da Silva
MSc Student in Automation and System Engineering - UFSC
E3C Tecnologia
cleiber at e3c.com.br

Phone: +55 48 30240790
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.openmoko.org/pipermail/devel/attachments/20100113/6fa12b1b/attachment.htm 


More information about the devel mailing list