Refuse any url with a scheme or path
This commit is contained in:
@@ -22,7 +22,14 @@ def main():
|
||||
# set user agent
|
||||
musicbrainzngs.set_useragent("whipper", whipper.__version__,
|
||||
"https://github.com/JoeLametta/whipper")
|
||||
musicbrainzngs.set_hostname(config.Config().get_musicbrainz_server())
|
||||
|
||||
try:
|
||||
server = config.Config().get_musicbrainz_server()
|
||||
except KeyError, e:
|
||||
sys.stderr.write('whipper: %s\n' % e.message)
|
||||
sys.exit()
|
||||
|
||||
musicbrainzngs.set_hostname(server)
|
||||
# register plugins with pkg_resources
|
||||
distributions, _ = pkg_resources.working_set.find_plugins(
|
||||
pkg_resources.Environment([directory.data_path('plugins')])
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
import ConfigParser
|
||||
import codecs
|
||||
import os.path
|
||||
import re
|
||||
import shutil
|
||||
import tempfile
|
||||
import urllib
|
||||
@@ -78,8 +77,10 @@ class Config:
|
||||
|
||||
def get_musicbrainz_server(self):
|
||||
server = self.get('musicbrainz', 'server') or 'musicbrainz.org'
|
||||
server_url = server if re.match(r'^\D*//', server) else '//' + server
|
||||
return urlparse(server_url).netloc
|
||||
server_url = urlparse('//' + server)
|
||||
if server_url.scheme != '' or server_url.path != '':
|
||||
raise KeyError('Invalid MusicBrainz server: %s' % server)
|
||||
return server
|
||||
|
||||
# drive sections
|
||||
|
||||
|
||||
@@ -84,8 +84,11 @@ class ConfigTestCase(tcommon.TestCase):
|
||||
self._config._parser.set('musicbrainz', 'server',
|
||||
'192.168.2.141:5000/hello/world')
|
||||
self._config.write()
|
||||
self.assertEquals(self._config.get_musicbrainz_server(),
|
||||
'192.168.2.141:5000',
|
||||
msg='Correctly strips out path after port number')
|
||||
self.assertRaises(KeyError, self._config.get_musicbrainz_server)
|
||||
|
||||
self._config._parser.set('musicbrainz', 'server',
|
||||
'http://192.168.2.141:5000')
|
||||
self._config.write()
|
||||
self.assertRaises(KeyError, self._config.get_musicbrainz_server)
|
||||
|
||||
self._config._parser.remove_section('musicbrainz')
|
||||
|
||||
Reference in New Issue
Block a user