client: actually fix the wildcard matching (#312)

This commit is contained in:
prez 2020-05-16 12:49:12 +02:00 committed by GitHub
parent 793e55ddbc
commit 626f93ed6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,6 +9,7 @@ import re
import sys import sys
import threading import threading
import time import time
from fnmatch import fnmatch
from copy import deepcopy from copy import deepcopy
from functools import wraps from functools import wraps
@ -506,20 +507,14 @@ class SyncplayClient(object):
return False return False
def isURITrusted(self, URIToTest): def isURITrusted(self, URIToTest):
def sWildcardMatch(a, b):
splt = a.split('*')
if len(splt) == 1:
return b.startswith(a)
return b.startswith(splt[0]) and b.endswith(splt[-1])
URIToTest = URIToTest+"/" URIToTest = URIToTest+"/"
for trustedProtocol in constants.TRUSTABLE_WEB_PROTOCOLS: for trustedProtocol in constants.TRUSTABLE_WEB_PROTOCOLS:
if URIToTest.startswith(trustedProtocol): if URIToTest.startswith(trustedProtocol):
if self._config['onlySwitchToTrustedDomains']: if self._config['onlySwitchToTrustedDomains']:
if self._config['trustedDomains']: if self._config['trustedDomains']:
for trustedDomain in self._config['trustedDomains']: for trustedDomain in self._config['trustedDomains']:
trustableURI = ''.join([trustedProtocol, trustedDomain, "/"]) trustableURI = ''.join([trustedProtocol, trustedDomain, "/*"])
if sWildcardMatch(trustableURI, URIToTest): if fnmatch(URIToTest, trustableURI):
return True return True
return False return False
else: else: