freecwmp
[Top] [All Lists]

freecwmpd with an ACS requiring digest authentication

To: "freecwmp@linux-mips.org" <freecwmp@linux-mips.org>
Subject: freecwmpd with an ACS requiring digest authentication
From: Rajsek Miroslav <miroslav.rajsek@innbox.net>
Date: Tue, 19 Feb 2013 10:26:06 +0100
Accept-language: sl-SI
Acceptlanguage: sl-SI
Original-recipient: rfc822;freecwmp@linux-mips.org
Sender: freecwmp-bounce@linux-mips.org
Thread-index: AQHODoMkTHvKIWWJekGnRl5Vg2gPdw==
Thread-topic: freecwmpd with an ACS requiring digest authentication
Hi Luka, hi everybody

Recently I have used freecwmpd with an ACS that required digest authentication.
I wrote a patch for this. It is written for HTTP_CURL and imitates ssl_verify 
flag in configuration.
Please check it if you find it useful. Let me know if you need other things 
like pcap traces etc.

Regards,

Miroslav
--------------------------------------

Signed-off-by: Miroslav Rajsek <miroslav.rajsek@innbox.net>
---
 src/config.c   |   11 +++++++++++
 src/config.h   |    1 +
 src/freecwmp.c |    2 +-
 src/http.c     |    3 +++
 4 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/src/config.c b/src/config.c
index 9460c2f..de1a26a 100644
--- a/src/config.c
+++ b/src/config.c
@@ -237,6 +237,17 @@ section_found:
    DD("freecwmp.@acs[0].ssl_verify=%d\n", config->acs->ssl_verify);
    goto next;
   }
+
+  if (!strcmp((uci_to_option(e))->e.name, "auth_digest")) {
+   if (!strcmp((uci_to_option(e))->v.string, "enabled")) {
+    config->acs->auth_digest = true;
+   } else {
+    config->acs->auth_digest = false;
+   }
+   DD("freecwmp.@acs[0].auth_digest=%d\n", config->acs->auth_digest);
+   goto next;
+  }
+
 #endif /* HTTP_CURL */

 next:
diff --git a/src/config.h b/src/config.h
index 8bf5e3d..b658525 100644
--- a/src/config.h
+++ b/src/config.h
@@ -30,6 +30,7 @@ struct acs {
  char *ssl_cert;
  char *ssl_cacert;
  bool ssl_verify;
+ bool auth_digest;
 #endif /* HTTP_CURL */
 };

diff --git a/src/freecwmp.c b/src/freecwmp.c
index ada4def..c5ebcad 100644
--- a/src/freecwmp.c
+++ b/src/freecwmp.c
@@ -236,7 +236,7 @@ int main (int argc, char **argv)

  /* run early cwmp initialization */
  cwmp = calloc(1, sizeof(struct cwmp_internal));
- if (!cwmp) return;
+ if (!cwmp) return -1;

  INIT_LIST_HEAD(&cwmp->events);
  INIT_LIST_HEAD(&cwmp->notifications);
diff --git a/src/http.c b/src/http.c
index c63712f..f1838b1 100644
--- a/src/http.c
+++ b/src/http.c
@@ -155,6 +155,9 @@ http_send_message(char *msg_out, char **msg_in)
  curl = curl_easy_init();
  if (!curl) return -1;

+ if (config->acs->auth_digest)
+  curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
+
  curl_easy_setopt(curl, CURLOPT_URL, http_c.url);
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, http_c.header_list);

--
1.7.0.4

This e-mail and any attachments may contain confidential and/or privileged 
information and is intended solely for the addressee. Any unauthorised use, 
review, retransmissions, dissemination, copying or other use of this 
information by persons or entities other than the intended recipient is 
strictly prohibited.

To elektronsko sporo?ilo in vse morebitne priloge lahko vsebujejo informacije 
zaupne narave in so namenjene izklju?no naslovniku. Fizi?ni ali pravni osebi, 
ki ni naslovnik, je kakr?nakoli nepoobla??ena uporaba, pregledovanje, 
po?iljanje, raz?irjanje, kopiranje ali drug na?in razpolaganja z vsebino 
sporo?ila strogo prepovedana.

<Prev in Thread] Current Thread [Next in Thread>