diff options
author | Lars-Dominik Braun <PromyLOPh@lavabit.com> | 2010-05-09 11:54:22 +0200 |
---|---|---|
committer | Lars-Dominik Braun <PromyLOPh@lavabit.com> | 2010-05-09 11:54:22 +0200 |
commit | 550fe90708c223ba65e7375ab8b822917ca903c3 (patch) | |
tree | 7a81e79c20fd2ea3494401f76fbd4eecfcfafae0 /src | |
parent | 97e2e779b196621117bfb73c4be61ae9a0b2be30 (diff) | |
download | pianobar-windows-550fe90708c223ba65e7375ab8b822917ca903c3.tar.gz pianobar-windows-550fe90708c223ba65e7375ab8b822917ca903c3.tar.bz2 pianobar-windows-550fe90708c223ba65e7375ab8b822917ca903c3.zip |
HTTP proxy support
control_proxy pipes xmlrpc data through the proxy, this one is for the
music too.
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 22 | ||||
-rw-r--r-- | src/pianobar.1 | 5 | ||||
-rw-r--r-- | src/settings.c | 11 | ||||
-rw-r--r-- | src/settings.h | 1 |
4 files changed, 37 insertions, 2 deletions
@@ -123,8 +123,15 @@ int main (int argc, char **argv) { settings.password = strdup (passBuf); } - /* setup control connection */ - if (settings.controlProxy != NULL) { + /* set up proxy (control proxy for non-us citizen or global proxy for poor + * firewalled fellows) */ + if (settings.proxy != NULL && strlen (settings.proxy) > 0) { + char tmpPath[2]; + WaitressSplitUrl (settings.proxy, waith.proxyHost, + sizeof (waith.proxyHost), waith.proxyPort, + sizeof (waith.proxyPort), tmpPath, sizeof (tmpPath)); + } else if (settings.controlProxy != NULL) { + /* global proxy overrides control proxy */ char tmpPath[2]; WaitressSplitUrl (settings.controlProxy, waith.proxyHost, sizeof (waith.proxyHost), waith.proxyPort, @@ -267,6 +274,17 @@ int main (int argc, char **argv) { WaitressInit (&player.waith); WaitressSetUrl (&player.waith, playlist->audioUrl); + /* set up global proxy, player is NULLed on songfinish */ + if (settings.proxy != NULL) { + char tmpPath[2]; + WaitressSplitUrl (settings.proxy, + player.waith.proxyHost, + sizeof (player.waith.proxyHost), + player.waith.proxyPort, + sizeof (player.waith.proxyPort), tmpPath, + sizeof (tmpPath)); + } + player.gain = playlist->fileGain; player.audioFormat = playlist->audioFormat; diff --git a/src/pianobar.1 b/src/pianobar.1 index e89b0bc..94604b5 100644 --- a/src/pianobar.1 +++ b/src/pianobar.1 @@ -158,6 +158,11 @@ Keep a history of the last n songs (5, by default). You can rate these songs. Your pandora.com password. Plain-text. .TP +.B proxy = http://host:port/ +Use a http proxy. Note that this setting overrides the http_proxy environment +variable. + +.TP .B user = your@user.name Your pandora.com username. diff --git a/src/settings.c b/src/settings.c index 4ac2fea..1dee0ea 100644 --- a/src/settings.c +++ b/src/settings.c @@ -72,6 +72,7 @@ void BarSettingsInit (BarSettings_t *settings) { */ void BarSettingsDestroy (BarSettings_t *settings) { free (settings->controlProxy); + free (settings->proxy); free (settings->username); free (settings->password); free (settings->autostartStation); @@ -130,6 +131,8 @@ void BarSettingsRead (BarSettings_t *settings) { } if (strcmp ("control_proxy", key) == 0) { settings->controlProxy = strdup (val); + } else if (strcmp ("proxy", key) == 0) { + settings->proxy = strdup (val); } else if (strcmp ("user", key) == 0) { settings->username = strdup (val); } else if (strcmp ("password", key) == 0) { @@ -159,5 +162,13 @@ void BarSettingsRead (BarSettings_t *settings) { } } + /* check environment variable if proxy is not set explicitly */ + if (settings->proxy == NULL) { + char *tmpProxy = getenv ("http_proxy"); + if (tmpProxy != NULL && strlen (tmpProxy) > 0) { + settings->proxy = strdup (tmpProxy); + } + } + fclose (configfd); } diff --git a/src/settings.h b/src/settings.h index 85ab71a..42443d7 100644 --- a/src/settings.h +++ b/src/settings.h @@ -68,6 +68,7 @@ typedef struct { char *username; char *password; char *controlProxy; /* non-american listeners need this */ + char *proxy; char keys[BAR_KS_COUNT]; PianoAudioFormat_t audioFormat; char *autostartStation; |