Commit dcec8db4 authored by okhin's avatar okhin 🚴

Let's use sanitize number to check up on blacklisted numbers

parent 4242d11a
...@@ -115,7 +115,7 @@ class Channel(object): ...@@ -115,7 +115,7 @@ class Channel(object):
def originate(self, endpoint): def originate(self, endpoint):
''' '''
Originate a call to endpoint Originate a call to endpoint.
''' '''
try: try:
return ari_call(self.config, ['channels', self.name], 'POST', {'endpoint': endpoint}) return ari_call(self.config, ['channels', self.name], 'POST', {'endpoint': endpoint})
......
...@@ -145,6 +145,21 @@ def sanitize_phonenumber(number): ...@@ -145,6 +145,21 @@ def sanitize_phonenumber(number):
number = ''.join([c for c in number if c in '0123456789']) number = ''.join([c for c in number if c in '0123456789'])
if not number.startswith('00'): if not number.startswith('00'):
raise TypeError('{} is not a valid international number, it should start with 00') raise TypeError('{} is not a valid international number, it should start with 00')
# We're checking if we're blacklisted
db = sqlite3.connect(config['piphone']['db'])
bl_re = None
with blacklist in db.execute('SELECT pattern, reason FROM blacklist').fetchall():
if bl_re == None:
bl_re ='(?P<{reason}>^{pattern})'.format(pattern=blacklist[0],reason=blacklist[1],)
else:
bl_re +='|(?P<{reason}>^{pattern})'.format(pattern=blacklist[0], reason=blacklist[1],)
if bl_re != None:
# We have blacklisted patterns, need to chck for them
groups = re.match(bl_re, number)
if len(groups) >= 1:
# We matched, so we're blacklisted
raise ValueException('{} is blacklisted. Reason: {}', (number, groups.groupdict().keys[0],))
return number return number
@asyncio.coroutine @asyncio.coroutine
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment