Sun, 16 Jul 2017 19:34:54 +0200
Started implementing the SafeBrowsingUrl class.
5808
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de> |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing an URL representation suitable for Google Safe Browsing. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from __future__ import unicode_literals |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | try: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import urlparse # Py2 |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | import urllib # Py2 |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | except ImportError: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | import urllib.parse as urllib |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from urllib import parse as urlparse |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | import re |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | import posixpath |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | import socket |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | import struct |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | import Preferences |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | class SafeBrowsingUrl(object): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Class implementing an URL representation suitable for Google Safe Browsing. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | # |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | # Modeled after the URL class of the gglsbl package. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | # https://github.com/afilipovich/gglsbl |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | # |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | def __init__(self, url): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | Constructor |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @param url URL to be embedded |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @type str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__url = url |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | def hashes(self): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | Public method to get the hashes of all possible permutations of the URL |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | in canonical form. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | @return generator for the URL hashes |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | @rtype generator of str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | for variant in self.permutations(self.canonical()): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | urlHash = self.digest(variant) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | yield urlHash |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | def canonical(self): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | Public method to convert the URL to the canonical form. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | @return canonical form of the URL |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | @rtype str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | def fullUnescape(u): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | Method to recursively unescape an URL. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @param u URL string to unescape |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | @type str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | @return unescaped URL string |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | @rtype str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | uu = urllib.unquote(u) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | if uu == u: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | return uu |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | else: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | return fullUnescape(uu) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | def quote(s): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | Method to quote a string. |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | @param string to be quoted |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | @type str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | @return quoted string |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | @rtype str |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | """ |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | safeChars = '!"$&\'()*+,-./:;<=>?@[\\]^_`{|}~' |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | return urllib.quote(s, safe=safeChars) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | url = self.__url.strip() |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | url = url.replace('\n', '').replace('\r', '').replace('\t', '') |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | url = url.split('#', 1)[0] |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | if url.startswith('//'): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | url = Preferences.getWebBrowser("DefaultScheme")[:-3] + url |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | if len(url.split('://')) <= 1: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | url = Preferences.getWebBrowser("DefaultScheme") + url |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | url = quote(fullUnescape(url)) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | urlParts = urlparse.urlsplit(url) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | if not urlParts[0]: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | url = Preferences.getWebBrowser("DefaultScheme") + url |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | urlParts = urlparse.urlsplit(url) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | protocol = urlParts.scheme |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | host = fullUnescape(urlParts.hostname) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | path = fullUnescape(urlParts.path) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | query = urlParts.query |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | if not query and '?' not in url: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | query = None |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | if not path: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | path = '/' |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | hasTrailingSlash = (path[-1] == '/') |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | path = posixpath.normpath(path).replace('//', '/') |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | if hasTrailingSlash and path[-1] != '/': |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | path += '/' |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | port = urlParts.port |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | host = host.strip('.') |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | host = re.sub(r'\.+', '.', host).lower() |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | if host.isdigit(): |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | try: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | host = socket.inet_ntoa(struct.pack("!I", int(host))) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | except Exception: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | pass |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | if host.startswith('0x') and '.' not in host: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | try: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | host = socket.inet_ntoa(struct.pack("!I", int(host, 16))) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | except Exception: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | pass |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | quotedPath = quote(path) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | quotedHost = quote(host) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | if port is not None: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | quotedHost = '{0}:{1}'.format(quotedHost, port) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | canonicalUrl = '{0}://{1}{2}'.format(protocol, quotedHost, quotedPath) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | if query is not None: |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | canonicalUrl = '{0}?{1}'.format(canonicalUrl, query) |
7bf90dcae4e1
Started implementing the SafeBrowsingUrl class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | return canonicalUrl |