126 lines
3.8 KiB
Python
Executable File
126 lines
3.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from generator import get_version, write_to_file
|
|
|
|
|
|
def generate_american_warninglist():
|
|
|
|
# Warning list for fictitious telephone numbers in the US
|
|
warninglist = [
|
|
'/((?:\+|00)1)?55501([0-9]{2})/g',
|
|
'/((?:\+|00)1)?([0-9]{3})55501([0-9]{2})/g'
|
|
]
|
|
|
|
return warninglist
|
|
|
|
|
|
def generate_australian_warninglist():
|
|
prefix = '((?:\+|00)61)?'
|
|
|
|
# Australian Fictitious numbers
|
|
warninglist = [f'/{prefix}1900654321/g', f'/{prefix}1800160401/g']
|
|
location = ('02', '03', '07', '08')
|
|
numbers = ('5550', '7010')
|
|
rate_numbers = ('07', '08', '09', '10', '11')
|
|
warninglist = [
|
|
f'/{prefix}1900654321/g',
|
|
f'/{prefix}1800160401/g',
|
|
f"/{prefix}1(3|8)009757{'|'.join(rate_numbers)}/g",
|
|
'/%s(%s)(%s)([0-9]{4})/g' % (prefix, '|'.join(location), '|'.join(numbers))
|
|
]
|
|
|
|
mobile_numbers = {
|
|
'570': ('006', '156', '157', '158', '159', '110', '313', '737'),
|
|
'571': ('266', '491', '804'),
|
|
'572': ('549', '665', '983'),
|
|
'573': ('770', '087'),
|
|
'574': ('118', '632'),
|
|
'575': ('254', '789'),
|
|
'576': ('398', '801'),
|
|
'577': ('426', '644'),
|
|
'578': ('957', '148', '888'),
|
|
'579': ('212', '760', '455')
|
|
}
|
|
warninglist.extend([f"/{prefix}0491{key}({'|'.join(values)})/g" for key, values in mobile_numbers.items()])
|
|
|
|
return warninglist
|
|
|
|
|
|
def generate_french_warninglist():
|
|
regex = '/((?:\+|00)33?|0?)(%s)([0-9]{%s})/g'
|
|
|
|
# Warning list for numbers dedicated to communications companies internal use: numbers starting with 09 99
|
|
warninglist = [regex % ('999', '6')]
|
|
|
|
# Warning list for numbers dedicated to audiovisual works: starting with any of the following list
|
|
prefixes = ('19900', '26191', '35301', '46571', '53649', '63998')
|
|
warninglist.append(regex % ('|'.join(prefixes), '4'))
|
|
|
|
return warninglist
|
|
|
|
|
|
def generate_irish_warninglist():
|
|
return ['/((?:\+|00)353)?02091([0-9]{5})/g']
|
|
|
|
|
|
def generate_swedish_warninglist():
|
|
prefix = '((?:\+|00)46)?'
|
|
numbers = (
|
|
'3139006',
|
|
'4062804',
|
|
'8465004',
|
|
'9803192'
|
|
)
|
|
warninglist = ['/%s07017406(0[5-9]|[1-9][0-9])/g' % prefix]
|
|
warninglist.extend('/%s%s([0-9]{2})/g' % (prefix, number) for number in numbers)
|
|
return warninglist
|
|
|
|
|
|
def generate_uk_warninglist():
|
|
prefix = '((?:\+|00)44)?'
|
|
end = '([0-9]{3})'
|
|
codes = ('13', '14', '15', '16', '17', '18', '21', '31', '41', '51', '61')
|
|
|
|
warninglist = [
|
|
f"/{prefix}01({'|'.join(codes)})4960{end}/g",
|
|
f'/{prefix}01914980{end}/g',
|
|
f'/{prefix}02079460{end}/g',
|
|
f'/{prefix}02(89|92)0180{end}/g',
|
|
f'/{prefix}01632960{end}/g',
|
|
f'/{prefix}07700900{end}/g',
|
|
f'/{prefix}03069990{end}/g',
|
|
f'/{prefix}08081570{end}/g',
|
|
f'/{prefix}09098790{end}/g'
|
|
]
|
|
return warninglist
|
|
|
|
|
|
def process(warninglist_name):
|
|
description = {
|
|
'description': 'Numbers that cannot be attributed because they reserved for different purposes.',
|
|
'name': 'Unattributed phone number.',
|
|
'matching_attributes': [
|
|
'phone-number',
|
|
'whois-registrant-phone'
|
|
],
|
|
'type': 'regex',
|
|
'version': get_version()
|
|
}
|
|
|
|
warninglist = generate_australian_warninglist()
|
|
warninglist.extend(generate_american_warninglist())
|
|
warninglist.extend(generate_french_warninglist())
|
|
warninglist.extend(generate_irish_warninglist())
|
|
warninglist.extend(generate_swedish_warninglist())
|
|
warninglist.extend(generate_uk_warninglist())
|
|
# The list can be extended by adding other entries: `warninglist.extend(generate_some_warninglist())`
|
|
|
|
description['list'] = warninglist
|
|
write_to_file(description, warninglist_name)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
warninglist_name = 'phone_numbers'
|
|
process(warninglist_name)
|