diff --git a/tests/test_token_plugins.py b/tests/test_token_plugins.py index b3a1847..d13d944 100644 --- a/tests/test_token_plugins.py +++ b/tests/test_token_plugins.py @@ -289,3 +289,67 @@ class TokenRedisTestCase(unittest.TestCase): self.assertEqual(plugin._port, 1234) self.assertEqual(plugin._db, 2) self.assertEqual(plugin._password, 'verysecret') + + def test_src_with_host_empty_port_empty_db_pass(self): + plugin = TokenRedis('127.0.0.1:::verysecret') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 0) + self.assertEqual(plugin._password, 'verysecret') + + def test_src_with_host_empty_port_empty_db_empty_pass(self): + plugin = TokenRedis('127.0.0.1:::') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 0) + self.assertEqual(plugin._password, None) + + def test_src_with_host_empty_port_empty_db_no_pass(self): + plugin = TokenRedis('127.0.0.1::') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 0) + self.assertEqual(plugin._password, None) + + def test_src_with_host_empty_port_no_db_no_pass(self): + plugin = TokenRedis('127.0.0.1:') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 0) + self.assertEqual(plugin._password, None) + + def test_src_with_host_empty_port_db_no_pass(self): + plugin = TokenRedis('127.0.0.1::2') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 2) + self.assertEqual(plugin._password, None) + + def test_src_with_host_port_empty_db_pass(self): + plugin = TokenRedis('127.0.0.1:1234::verysecret') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 1234) + self.assertEqual(plugin._db, 0) + self.assertEqual(plugin._password, 'verysecret') + + def test_src_with_host_empty_port_db_pass(self): + plugin = TokenRedis('127.0.0.1::2:verysecret') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 2) + self.assertEqual(plugin._password, 'verysecret') + + def test_src_with_host_empty_port_db_empty_pass(self): + plugin = TokenRedis('127.0.0.1::2:') + + self.assertEqual(plugin._server, '127.0.0.1') + self.assertEqual(plugin._port, 6379) + self.assertEqual(plugin._db, 2) + self.assertEqual(plugin._password, None) diff --git a/websockify/token_plugins.py b/websockify/token_plugins.py index 4e92c56..d42414e 100644 --- a/websockify/token_plugins.py +++ b/websockify/token_plugins.py @@ -163,16 +163,21 @@ class TokenRedis(BasePlugin): host[:port[:db[:password]]] - where port and password are optional. + where port, db and password are optional. If port or db are left empty + they will take its default value, ie. 6379 and 0 respectively. If your redis server is using the default port (6379) then you can use: my-redis-host - In case you need to authenticate with the redis server you will have to - specify also the port and db: + In case you need to authenticate with the redis server and you are using + the default database and port you can use: - my-redis-host:6379:0:verysecretpass + my-redis-host:::verysecretpass + + In the more general case you will use: + + my-redis-host:6380:1:verysecretpass The TokenRedis plugin expects the format of the target in one of these two formats: @@ -218,10 +223,22 @@ class TokenRedis(BasePlugin): self._server = fields[0] elif len(fields) == 2: self._server, self._port = fields + if not self._port: + self._port = 6379 elif len(fields) == 3: self._server, self._port, self._db = fields + if not self._port: + self._port = 6379 + if not self._db: + self._db = 0 elif len(fields) == 4: self._server, self._port, self._db, self._password = fields + if not self._port: + self._port = 6379 + if not self._db: + self._db = 0 + if not self._password: + self._password = None else: raise ValueError self._port = int(self._port)