diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2012-04-14 16:49:51 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2012-04-14 16:49:51 +0200 |
commit | 35763dea799c96361e288a10eab0fbd16c36e880 (patch) | |
tree | eeedf6a184106a8da119f1c59f110aac6d9a8329 | |
parent | ed6d013054f589f2999926b02f4ac6dc76c7fe91 (diff) | |
download | pianobar-35763dea799c96361e288a10eab0fbd16c36e880.tar.gz pianobar-35763dea799c96361e288a10eab0fbd16c36e880.tar.bz2 pianobar-35763dea799c96361e288a10eab0fbd16c36e880.zip |
Add force_tls setting
Use TLS for all actions when requested. Closes #234
-rw-r--r-- | contrib/pianobar.1 | 5 | ||||
-rw-r--r-- | src/settings.c | 3 | ||||
-rw-r--r-- | src/settings.h | 1 | ||||
-rw-r--r-- | src/ui.c | 7 |
4 files changed, 13 insertions, 3 deletions
diff --git a/contrib/pianobar.1 b/contrib/pianobar.1 index da87270..4c76e2f 100644 --- a/contrib/pianobar.1 +++ b/contrib/pianobar.1 @@ -195,6 +195,11 @@ usually the value above). See section .B REMOTE CONTROL .TP +.B force_tls = {0,1} +Use TLS for all actions (not just sending login credentials). Use if you are on +an untrusted network or to get around GeoIP restrictions. + +.TP .B format_list_song = %i) %a - %t%r Available format characters: diff --git a/src/settings.c b/src/settings.c index 54edba9..51c2400 100644 --- a/src/settings.c +++ b/src/settings.c @@ -121,6 +121,7 @@ void BarSettingsRead (BarSettings_t *settings) { #endif #endif settings->autoselect = true; + settings->forceTls = false; settings->history = 5; settings->volume = 0; settings->sortOrder = BAR_SORT_NAME_AZ; @@ -245,6 +246,8 @@ void BarSettingsRead (BarSettings_t *settings) { settings->fifo = strdup (val); } else if (streq ("autoselect", key)) { settings->autoselect = atoi (val); + } else if (streq ("force_tls", key)) { + settings->forceTls = atoi (val); } else if (streq ("tls_fingerprint", key)) { /* expects 40 byte hex-encoded sha1 */ if (strlen (val) == 40) { diff --git a/src/settings.h b/src/settings.h index 4c4205e..ce3732b 100644 --- a/src/settings.h +++ b/src/settings.h @@ -81,6 +81,7 @@ typedef struct { typedef struct { bool autoselect; + bool forceTls; unsigned int history; int volume; BarStationSorting_t sortOrder; @@ -134,14 +134,15 @@ void BarUiMsg (const BarSettings_t *settings, const BarUiMsg_t type, /* fetch http resource (post request) * @param waitress handle * @param piano request (initialized by PianoRequest()) + * @param ignore libpiano TLS hint and use it always */ static WaitressReturn_t BarPianoHttpRequest (WaitressHandle_t *waith, - PianoRequest_t *req) { + PianoRequest_t *req, bool forceTls) { waith->extraHeaders = "Content-Type: text/xml\r\n"; waith->postData = req->postData; waith->method = WAITRESS_METHOD_POST; waith->url.path = req->urlPath; - waith->url.tls = req->secure; + waith->url.tls = req->secure || forceTls; return WaitressFetchBuf (waith, &req->responseData); } @@ -172,7 +173,7 @@ int BarUiPianoCall (BarApp_t * const app, PianoRequestType_t type, return 0; } - *wRet = BarPianoHttpRequest (&app->waith, &req); + *wRet = BarPianoHttpRequest (&app->waith, &req, app->settings.forceTls); if (*wRet != WAITRESS_RET_OK) { BarUiMsg (&app->settings, MSG_NONE, "Network error: %s\n", WaitressErrorToStr (*wRet)); if (req.responseData != NULL) { |