summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars-Dominik Braun <PromyLOPh@gmail.com>2008-07-07 22:03:24 +0200
committerLars-Dominik Braun <PromyLOPh@gmail.com>2008-07-07 22:03:24 +0200
commit0269bfa309f85aaf05f1451196ad2bd8c0b150ac (patch)
treee8b70f8c1a08ec06053d81571897b1af04b696ac
parenteb46d942e5ecf50ff9f85ee62ea2fa454aa228fa (diff)
downloadpianobar-0269bfa309f85aaf05f1451196ad2bd8c0b150ac.tar.gz
pianobar-0269bfa309f85aaf05f1451196ad2bd8c0b150ac.tar.bz2
pianobar-0269bfa309f85aaf05f1451196ad2bd8c0b150ac.zip
SSL control proxy issue workaround
Some proxies refuse SSL connections. Make them usable by adding an option which disables the usage of SSL for the login.
-rw-r--r--libpiano/src/main.c9
-rw-r--r--libpiano/src/piano.h3
-rw-r--r--src/main.c4
-rw-r--r--src/pianobar.18
-rw-r--r--src/settings.c6
-rw-r--r--src/settings.h1
6 files changed, 25 insertions, 6 deletions
diff --git a/libpiano/src/main.c b/libpiano/src/main.c
index 1839c0c..dcfa70f 100644
--- a/libpiano/src/main.c
+++ b/libpiano/src/main.c
@@ -171,8 +171,11 @@ void PianoDestroy (PianoHandle_t *ph) {
* @param piano handle
* @param username (utf-8 encoded)
* @param password (plaintext, utf-8 encoded)
+ * @param use ssl when logging in (1 = on, 0 = off), note that the password
+ * is not hashed and will be sent as plain-text!
*/
-PianoReturn_t PianoConnect (PianoHandle_t *ph, char *user, char *password) {
+PianoReturn_t PianoConnect (PianoHandle_t *ph, char *user, char *password,
+ char secureLogin) {
char url[PIANO_URL_BUFFER_SIZE];
char *requestStr = PianoEncryptString ("<?xml version=\"1.0\"?>"
"<methodCall><methodName>misc.sync</methodName>"
@@ -200,8 +203,8 @@ PianoReturn_t PianoConnect (PianoHandle_t *ph, char *user, char *password) {
"<param><value><string>%s</string></value></param>"
"</params></methodCall>", time (NULL), user, password);
requestStr = PianoEncryptString (requestStrPlain);
- snprintf (url, sizeof (url), PIANO_SECURE_RPC_URL "rid=%s"
- "&method=authenticateListener", ph->routeId);
+ snprintf (url, sizeof (url), "%srid=%s&method=authenticateListener",
+ secureLogin ? PIANO_SECURE_RPC_URL : PIANO_RPC_URL, ph->routeId);
if ((ret = PianoHttpPost (ph->curlHandle, url, requestStr, &retStr)) ==
PIANO_RET_OK) {
diff --git a/libpiano/src/piano.h b/libpiano/src/piano.h
index ce68c48..9945839 100644
--- a/libpiano/src/piano.h
+++ b/libpiano/src/piano.h
@@ -151,7 +151,8 @@ void PianoDestroyPlaylist (PianoHandle_t *ph);
void PianoDestroySearchResult (PianoSearchResult_t *searchResult);
void PianoDestroyStation (PianoStation_t *station);
void PianoDestroyStations (PianoHandle_t *ph);
-PianoReturn_t PianoConnect (PianoHandle_t *, char *, char *);
+PianoReturn_t PianoConnect (PianoHandle_t *ph, char *user, char *password,
+ char secureLogin);
PianoReturn_t PianoGetStations (PianoHandle_t *ph);
PianoReturn_t PianoGetPlaylist (PianoHandle_t *ph, char *stationId);
diff --git a/src/main.c b/src/main.c
index 49914ba..fb9e02d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -267,8 +267,8 @@ int main (int argc, char **argv) {
BarTermSetBuffer (0);
BarUiMsg ("Login... ");
- if (PianoConnect (&ph, bsettings.username, bsettings.password) !=
- PIANO_RET_OK) {
+ if (PianoConnect (&ph, bsettings.username, bsettings.password,
+ !bsettings.disableSecureLogin) != PIANO_RET_OK) {
BarUiMsg ("Error.\n");
return 0;
} else {
diff --git a/src/pianobar.1 b/src/pianobar.1
index 99c04e7..500b7ae 100644
--- a/src/pianobar.1
+++ b/src/pianobar.1
@@ -99,6 +99,14 @@ needs an IP address specified in
.B control_proxy
.TP
+.B disable_secure_login = {1,0}
+If you have problems when loggin in and you know your control proxy definitively
+works try setting this option to
+.B 1.
+It disables the SSL secured login. Beware!
+.I Your password will be sent as plain-text!
+
+.TP
.B lastfm_user = your_username
If you want to send your played song to last.fm set this to your last.fm
username.
diff --git a/src/settings.c b/src/settings.c
index 3a0ed4a..a691607 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -113,6 +113,12 @@ void BarSettingsRead (BarSettings_t *settings) {
settings->lastfmPassword = strdup (val);
} else if (strcmp ("lastfm_scrobble_percent", key) == 0) {
settings->lastfmScrobblePercent = atoi (val);
+ } else if (strcmp ("disable_secure_login", key) == 0) {
+ if (strcmp (val, "1") == 0) {
+ settings->disableSecureLogin = 1;
+ } else {
+ settings->disableSecureLogin = 0;
+ }
}
}
diff --git a/src/settings.h b/src/settings.h
index b3604fa..b9617c4 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -34,6 +34,7 @@ struct BarSettings {
char *lastfmPassword;
unsigned char lastfmScrobblePercent;
char enableScrobbling;
+ char disableSecureLogin;
};
typedef struct BarSettings BarSettings_t;