@stamhoofd/redirecter 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ {
2
+ "environment": "development",
3
+ "PORT": 9092
4
+ }
package/.eslintrc.js ADDED
@@ -0,0 +1,61 @@
1
+ module.exports = {
2
+ root: true,
3
+ ignorePatterns: ["dist/", "node_modules/"],
4
+ parserOptions: {
5
+ "ecmaVersion": 2017
6
+ },
7
+ env: {
8
+ "es6": true,
9
+ "node": true,
10
+ },
11
+ extends: [
12
+ "eslint:recommended",
13
+ ],
14
+ plugins: [],
15
+ rules: {
16
+ "no-console": "off",
17
+ "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
18
+ "sort-imports": "off",
19
+ "import/order": "off"
20
+ },
21
+ overrides: [
22
+ {
23
+ // Rules for TypeScript and vue
24
+ files: ["*.ts"],
25
+ parser: "@typescript-eslint/parser",
26
+ parserOptions: {
27
+ project: ["./tsconfig.json"]
28
+ },
29
+ plugins: ["@typescript-eslint", "jest"],
30
+ extends: [
31
+ "eslint:recommended",
32
+ "plugin:@typescript-eslint/eslint-recommended",
33
+ "plugin:@typescript-eslint/recommended",
34
+ "plugin:@typescript-eslint/recommended-requiring-type-checking",
35
+ "plugin:jest/recommended",
36
+ ],
37
+ rules: {
38
+ "no-console": "off",
39
+ "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
40
+ "sort-imports": "off",
41
+ "import/order": "off",
42
+ "@typescript-eslint/explicit-function-return-type": "off",
43
+ "@typescript-eslint/no-explicit-any": "off",
44
+ "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
45
+ "@typescript-eslint/no-namespace": "off",
46
+ "@typescript-eslint/no-floating-promises": "error",
47
+ "@typescript-eslint/no-misused-promises": "error",
48
+ "@typescript-eslint/prefer-for-of": "warn",
49
+ "@typescript-eslint/no-empty-interface": "off", // It is convenient to have placeholder interfaces
50
+ "@typescript-eslint/no-this-alias": "off", // No idea why we need this. This breaks code that is just fine. Prohibit the use of function() instead of this rule
51
+ "@typescript-eslint/unbound-method": "off", // Methods are automatically bound in vue, it would break removeEventListeners if we bound it every time unless we save every method in variables again...
52
+ "@typescript-eslint/no-unsafe-assignment": "off", // This is impossible to use with dependencies that don't have types yet, such as tiptap
53
+ "@typescript-eslint/no-unsafe-return": "off", // This is impossible to use with dependencies that don't have types yet, such as tiptap
54
+ "@typescript-eslint/no-unsafe-call": "off", // This is impossible to use with dependencies that don't have types yet, such as tiptap
55
+ "@typescript-eslint/no-unsafe-member-access": "off", // This is impossible to use with dependencies that don't have types yet, such as tiptap
56
+ "@typescript-eslint/restrict-plus-operands": "off", // bullshit one
57
+ "@typescript-eslint/explicit-module-boundary-types": "off",
58
+ },
59
+ }
60
+ ]
61
+ };
package/README.md ADDED
@@ -0,0 +1 @@
1
+ This service redirects to stamhoofd.be or stamhoofd.nl, depending on the country (based by IP and/or Accept-Language header)
package/index.ts ADDED
@@ -0,0 +1,77 @@
1
+ require('@stamhoofd/backend-env').load({ service: "redirecter" })
2
+ import { Router, RouterServer } from "@simonbackx/simple-endpoints";
3
+ import { Country } from "@stamhoofd/structures";
4
+
5
+ import { Geolocator } from "./src/classes/Geolocator";
6
+
7
+ process.on("unhandledRejection", (error: Error) => {
8
+ console.error("unhandledRejection");
9
+ console.error(error.message, error.stack);
10
+ process.exit(1);
11
+ });
12
+
13
+ // Set timezone!
14
+ process.env.TZ = "UTC";
15
+
16
+ // Quick check
17
+ if (new Date().getTimezoneOffset() != 0) {
18
+ throw new Error("Process should always run in UTC timezone");
19
+ }
20
+
21
+ const start = async () => {
22
+ await Geolocator.shared.load(__dirname+"/src/data/belgium.csv", Country.Belgium)
23
+
24
+ // Netherlands not needed, because it is the current default
25
+ //await Geolocator.shared.load(__dirname+"/src/data/netherlands.csv", Country.Netherlands)
26
+
27
+ console.log("Initialising server...")
28
+ const router = new Router();
29
+ await router.loadAllEndpoints(__dirname + "/src/endpoints");
30
+ await router.loadAllEndpoints(__dirname + "/src/endpoints/*");
31
+
32
+ const routerServer = new RouterServer(router);
33
+ routerServer.verbose = false
34
+ routerServer.listen(STAMHOOFD.PORT ?? 9090);
35
+
36
+ const shutdown = async () => {
37
+ console.log("Shutting down...")
38
+ // Disable keep alive
39
+ routerServer.defaultHeaders = Object.assign(routerServer.defaultHeaders, { 'Connection': 'close' })
40
+ if (routerServer.server) {
41
+ routerServer.server.headersTimeout = 5000;
42
+ routerServer.server.keepAliveTimeout = 1;
43
+ }
44
+
45
+ try {
46
+ await routerServer.close()
47
+ console.log("HTTP server stopped");
48
+ } catch (err) {
49
+ console.error("Failed to stop HTTP server:");
50
+ console.error(err);
51
+ }
52
+
53
+ // Should not be needed, but added for security as sometimes a promise hangs somewhere
54
+ process.exit(0);
55
+ };
56
+
57
+ process.on("SIGTERM", () => {
58
+ console.info("SIGTERM signal received.");
59
+ shutdown().catch((e) => {
60
+ console.error(e)
61
+ process.exit(1);
62
+ });
63
+ });
64
+
65
+ process.on("SIGINT", () => {
66
+ console.info("SIGINT signal received.");
67
+ shutdown().catch((e) => {
68
+ console.error(e)
69
+ process.exit(1);
70
+ });
71
+ });
72
+ };
73
+
74
+ start().catch(error => {
75
+ console.error("unhandledRejection", error);
76
+ process.exit(1);
77
+ });
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@stamhoofd/redirecter",
3
+ "version": "2.1.1",
4
+ "main": "index.ts",
5
+ "license": "UNLICENCED",
6
+ "scripts": {
7
+ "build": "rm -rf ./dist/src/data && tsc -b && mkdir -p ./dist/src/data && cp ./src/data/* ./dist/src/data",
8
+ "build:full": "rm -rf ./dist && yarn build",
9
+ "start": "yarn build && node ./dist/index.js",
10
+ "lint": "eslint . --ext .js,.jsx,.ts,.tsx"
11
+ },
12
+ "devDependencies": {
13
+ "@types/node": "^18.11.17"
14
+ },
15
+ "dependencies": {
16
+ "@simonbackx/simple-endpoints": "1.13.0",
17
+ "@simonbackx/simple-logging": "^1.0.1"
18
+ }
19
+ }
@@ -0,0 +1,81 @@
1
+ import { Country } from "@stamhoofd/structures";
2
+ import fs from "fs";
3
+ import readline from "readline";
4
+
5
+ function fromIP(ip: string): Buffer {
6
+ const splitted = ip.split(".")
7
+ if (splitted.length != 4) {
8
+ throw new Error("Invalid ipv4 address " + ip)
9
+ }
10
+
11
+ return Buffer.from(splitted.map(s => parseInt(s)))
12
+ }
13
+
14
+ class IPRange {
15
+ start: Buffer
16
+ end: Buffer // included
17
+
18
+ carrier: string
19
+
20
+ constructor(start: string, end: string, carrier: string) {
21
+ this.start = fromIP(start)
22
+ this.end = fromIP(end)
23
+ this.carrier = carrier
24
+ }
25
+
26
+ includes(ip: Buffer): boolean {
27
+ return this.start.compare(ip) <= 0 && this.end.compare(ip) >= 0
28
+ }
29
+ }
30
+
31
+ export class Geolocator {
32
+ static shared = new Geolocator()
33
+
34
+ ranges: Map<Country, IPRange[]> = new Map()
35
+
36
+ async load(file: string, country: Country) {
37
+ const lineReader = readline.createInterface({
38
+ input: fs.createReadStream(file, { encoding: "utf-8" })
39
+ });
40
+
41
+ const range = this.ranges.get(country) ?? []
42
+ this.ranges.set(country, range)
43
+
44
+ for await (const line of lineReader) {
45
+ const splitted = line.split(",")
46
+ if (splitted.length < 2) {
47
+ console.error(`Failed to parse line: ${line}`);
48
+ continue;
49
+ }
50
+ const from = splitted[0]
51
+ const to = splitted[1]
52
+
53
+ console.log("From ", from, "to", to)
54
+ range.push(new IPRange(from, to, splitted[4] ?? ""))
55
+ }
56
+ }
57
+
58
+ getCountry(ip: string): Country | undefined {
59
+ const parsed = fromIP(ip)
60
+
61
+ for (const [country, ranges] of this.ranges) {
62
+ for (const range of ranges) {
63
+ if (range.includes(parsed)) {
64
+ return country
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ getInfo(ip: string): { country: Country, carrier: string } | undefined {
71
+ const parsed = fromIP(ip)
72
+
73
+ for (const [country, ranges] of this.ranges) {
74
+ for (const range of ranges) {
75
+ if (range.includes(parsed)) {
76
+ return {country, carrier: range.carrier}
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,225 @@
1
+ 5.23.128.0,5.23.255.255,32768,07/05/12,Telenet BVBA
2
+ 31.31.128.0,31.31.159.255,8192,18/03/11,Citymesh NV
3
+ 37.62.0.0,37.62.255.255,65536,20/01/12,Proximus NV
4
+ 37.184.0.0,37.185.255.255,131072,19/03/12,Proximus NV
5
+ 46.178.0.0,46.179.255.255,131072,07/12/10,Proximus NV
6
+ 46.253.160.0,46.253.175.255,4096,14/01/11,Coditel Brabant SPRL/BVBA
7
+ 57.0.0.0,57.255.255.255,16777216,21/06/93,
8
+ 62.4.128.0,62.4.159.255,8192,08/12/99,Proximus NV
9
+ 62.4.160.0,62.4.191.255,8192,09/05/00,Proximus NV
10
+ 62.4.192.0,62.4.255.255,16384,09/05/00,Proximus NV
11
+ 62.58.0.0,62.59.255.255,131072,15/06/00,
12
+ 62.88.0.0,62.88.127.255,32768,23/01/06,Orange Belgium SA
13
+ 62.166.0.0,62.166.255.255,65536,27/07/00,
14
+ 62.197.64.0,62.197.127.255,16384,30/10/01,Brutele SC
15
+ 62.205.64.0,62.205.127.255,16384,01/11/01,Telenet BVBA
16
+ 62.213.192.0,62.213.255.255,16384,31/01/03,Kangaroot BVBA
17
+ 62.233.0.0,62.233.31.255,8192,20/07/00,Getronics Belgium NV / SA
18
+ 62.235.0.0,62.235.255.255,65536,02/01/01,Scarlet Belgium NV
19
+ 77.241.80.0,77.241.95.255,4096,02/02/07,Combell NV
20
+ 78.20.0.0,78.23.255.255,262144,14/05/07,Telenet BVBA
21
+ 78.29.192.0,78.29.255.255,16384,27/09/07,Coditel Brabant SPRL/BVBA
22
+ 78.110.192.0,78.110.207.255,4096,17/08/07,Destiny N.V
23
+ 78.129.0.0,78.129.127.255,32768,17/04/07,Brutele SC
24
+ 79.132.224.0,79.132.255.255,8192,01/10/08,EDPNET NV
25
+ 80.65.128.0,80.65.143.255,4096,15/05/01,ASP SA
26
+ 80.66.128.0,80.66.143.255,4096,16/05/01,Sprintlink Belgium bvba
27
+ 80.88.32.0,80.88.47.255,4096,28/08/01,SONY ITE a division of SONY Service Europe Center
28
+ 80.91.144.0,80.91.159.255,4096,14/06/05,MAC Telecom S.A.
29
+ 80.200.0.0,80.201.255.255,131072,08/11/01,Proximus NV
30
+ 80.236.128.0,80.236.255.255,32768,31/10/01,Scarlet Belgium NV
31
+ 81.11.128.0,81.11.255.255,32768,13/05/02,Scarlet Belgium NV
32
+ 81.58.0.0,81.59.255.255,131072,28/11/02,
33
+ 81.82.0.0,81.83.255.255,131072,29/04/02,Telenet BVBA
34
+ 81.95.112.0,81.95.127.255,4096,22/05/06,lcp nv
35
+ 81.164.0.0,81.165.255.255,131072,01/05/03,Telenet BVBA
36
+ 81.169.0.0,81.169.127.255,32768,10/04/03,Proximus NV
37
+ 81.188.0.0,81.188.255.255,65536,18/02/03,Easynet Belgium
38
+ 81.201.80.0,81.201.95.255,4096,20/06/06,Voxbone
39
+ 81.240.0.0,81.243.255.255,262144,29/11/02,Proximus NV
40
+ 81.244.0.0,81.247.255.255,262144,29/11/02,Proximus NV
41
+ 82.143.64.0,82.143.127.255,16384,11/09/03,Telenet BVBA
42
+ 82.146.96.0,82.146.127.255,8192,19/06/03,Meritel NV
43
+ 82.212.128.0,82.212.191.255,16384,16/10/03,Brutele SC
44
+ 83.101.0.0,83.101.127.255,32768,24/02/04,SCHEDOM NV
45
+ 83.134.0.0,83.134.255.255,65536,22/01/04,Scarlet Belgium NV
46
+ 83.217.64.0,83.217.79.255,4096,05/03/04,Combell NV
47
+ 83.217.80.0,83.217.95.255,4096,05/03/04,Combell NV
48
+ 83.217.128.0,83.217.159.255,8192,08/03/04,Coditel Brabant SPRL/BVBA
49
+ 84.17.128.0,84.17.159.255,8192,27/07/04,Wallonie Data Center SA
50
+ 84.192.0.0,84.199.255.255,524288,21/04/04,Telenet BVBA
51
+ 85.10.64.0,85.10.127.255,16384,21/02/05,Orange Belgium SA
52
+ 85.26.0.0,85.26.127.255,32768,09/03/05,Brutele SC
53
+ 85.27.0.0,85.27.127.255,32768,18/03/05,Brutele SC
54
+ 85.28.64.0,85.28.127.255,16384,29/04/05,Coditel Brabant SPRL/BVBA
55
+ 85.88.32.0,85.88.63.255,8192,22/10/04,EUSIP bvba
56
+ 85.91.160.0,85.91.191.255,8192,24/11/04,SmalS vzw
57
+ 85.201.0.0,85.201.255.255,65536,11/01/05,Brutele SC
58
+ 85.234.192.0,85.234.223.255,8192,03/05/05,EDPNET NV
59
+ 85.255.192.0,85.255.207.255,4096,11/08/05,
60
+ 86.39.0.0,86.39.127.255,32768,23/05/05,Tigron BVBA
61
+ 86.39.128.0,86.39.255.255,32768,23/05/05,Easyhost BVBA
62
+ 87.64.0.0,87.67.255.255,262144,19/05/05,Proximus NV
63
+ 88.82.32.0,88.82.63.255,8192,16/12/05,Destiny N.V
64
+ 88.197.128.0,88.197.255.255,32768,14/02/07,
65
+ 91.86.0.0,91.87.255.255,131072,15/08/06,Orange Belgium SA
66
+ 91.176.0.0,91.183.255.255,524288,04/09/06,Proximus NV
67
+ 92.48.128.0,92.48.191.255,16384,14/11/07,Proximus NV
68
+ 94.104.0.0,94.111.255.255,524288,20/06/08,Orange Belgium SA
69
+ 94.139.32.0,94.139.63.255,8192,13/11/08,Alpha Networks S.A.
70
+ 94.140.160.0,94.140.191.255,8192,04/12/08,Destiny N.V
71
+ 94.224.0.0,94.227.255.255,262144,18/09/08,Telenet BVBA
72
+ 95.171.160.0,95.171.191.255,8192,25/02/09,Destiny N.V
73
+ 95.182.128.0,95.182.255.255,32768,06/02/09,Brutele SC
74
+ 109.88.0.0,109.89.255.255,131072,01/09/09,Brutele SC
75
+ 109.128.0.0,109.143.255.255,1048576,27/07/09,Proximus NV
76
+ 109.236.128.0,109.236.143.255,4096,14/12/09,EDPNET NV
77
+ 130.104.0.0,130.104.255.255,65536,19/07/88,
78
+ 134.54.0.0,134.54.255.255,65536,01/09/93,
79
+ 134.58.0.0,134.58.255.255,65536,17/09/90,
80
+ 134.184.0.0,134.184.255.255,65536,06/07/89,
81
+ 138.48.0.0,138.48.255.255,65536,06/02/90,
82
+ 138.203.0.0,138.203.255.255,65536,29/05/90,
83
+ 138.205.0.0,138.205.255.255,65536,29/05/90,
84
+ 139.10.0.0,139.10.255.255,65536,01/09/93,
85
+ 139.90.0.0,139.90.255.255,65536,12/02/90,
86
+ 139.165.0.0,139.165.255.255,65536,24/03/90,
87
+ 141.96.0.0,141.96.255.255,65536,02/03/93,
88
+ 141.134.0.0,141.135.255.255,131072,20/06/11,Telenet BVBA
89
+ 141.138.64.0,141.138.79.255,4096,30/06/11,ITAF bvba
90
+ 141.253.0.0,141.253.255.255,65536,22/08/90,
91
+ 143.129.0.0,143.129.255.255,65536,19/09/90,
92
+ 143.169.0.0,143.169.255.255,65536,26/09/90,
93
+ 144.248.0.0,144.248.255.255,65536,15/01/91,
94
+ 146.103.0.0,146.103.255.255,65536,23/10/92,
95
+ 146.175.0.0,146.175.255.255,65536,22/02/91,
96
+ 147.93.0.0,147.93.255.255,65536,19/07/91,
97
+ 149.134.0.0,149.134.255.255,65536,30/04/91,
98
+ 149.154.192.0,149.154.255.255,16384,05/08/11,Brutele SC
99
+ 150.251.0.0,150.251.255.255,65536,19/08/91,
100
+ 152.152.0.0,152.152.255.255,65536,04/09/91,
101
+ 157.164.0.0,157.164.255.255,65536,07/04/04,
102
+ 157.193.0.0,157.193.255.255,65536,07/04/04,
103
+ 159.109.0.0,159.109.255.255,65536,01/09/93,
104
+ 160.221.0.0,160.221.255.255,65536,05/04/04,
105
+ 161.59.0.0,161.59.255.255,65536,02/06/92,
106
+ 163.163.0.0,163.163.255.255,65536,27/08/92,
107
+ 163.165.0.0,163.165.191.255,49152,27/08/92,
108
+ 164.15.0.0,164.15.255.255,65536,07/01/93,
109
+ 164.35.0.0,164.35.255.255,65536,20/10/92,KBC Group NV
110
+ 170.205.64.0,170.205.127.255,16384,01/12/94,
111
+ 170.255.0.0,170.255.255.255,65536,01/01/84,
112
+ 171.26.0.0,171.26.255.255,65536,14/11/94,
113
+ 176.62.160.0,176.62.175.255,4096,09/06/11,Combell NV
114
+ 178.50.0.0,178.50.255.255,65536,28/12/09,Orange Belgium SA
115
+ 178.51.0.0,178.51.255.255,65536,21/07/10,Orange Belgium SA
116
+ 178.116.0.0,178.119.255.255,262144,22/01/10,Telenet BVBA
117
+ 178.144.0.0,178.145.255.255,131072,03/03/10,Proximus NV
118
+ 178.208.32.0,178.208.63.255,8192,03/03/10,Combell NV
119
+ 188.5.0.0,188.5.255.255,65536,17/02/09,Proximus NV
120
+ 188.44.64.0,188.44.95.255,8192,04/10/11,Coditel Brabant SPRL/BVBA
121
+ 188.118.0.0,188.118.63.255,16384,18/06/09,Destiny N.V
122
+ 188.126.96.0,188.126.127.255,8192,23/07/09,
123
+ 188.188.0.0,188.189.255.255,131072,22/06/09,Telenet Group NV
124
+ 193.53.48.0,193.53.63.255,4096,18/04/94,
125
+ 193.53.64.0,193.53.79.255,4096,18/04/94,
126
+ 193.53.128.0,193.53.159.255,8192,18/04/94,
127
+ 193.53.170.0,193.53.199.255,7680,18/04/94,
128
+ 193.53.200.0,193.53.244.255,11520,18/04/94,
129
+ 193.58.16.0,193.58.35.255,5120,11/07/94,
130
+ 193.58.48.0,193.58.63.255,4096,11/07/94,
131
+ 193.74.0.0,193.74.255.255,65536,01/09/93,Scarlet Belgium NV
132
+ 193.75.128.0,193.75.255.255,32768,13/05/96,Scarlet Belgium NV
133
+ 193.91.96.0,193.91.127.255,8192,24/10/95,Scarlet Belgium NV
134
+ 193.121.0.0,193.121.31.255,8192,26/05/95,Scarlet Belgium NV
135
+ 193.121.32.0,193.121.63.255,8192,08/05/96,Scarlet Belgium NV
136
+ 193.121.64.0,193.121.127.255,16384,08/05/96,Scarlet Belgium NV
137
+ 193.121.128.0,193.121.255.255,32768,08/05/96,Scarlet Belgium NV
138
+ 193.149.240.0,193.149.255.255,4096,10/06/98,
139
+ 193.190.0.0,193.190.255.255,65536,01/09/93,BELNET
140
+ 193.191.0.0,193.191.255.255,65536,01/09/93,BELNET
141
+ 193.221.0.0,193.221.15.255,4096,01/09/93,
142
+ 193.221.160.0,193.221.191.255,8192,01/07/94,
143
+ 193.221.224.0,193.221.255.255,8192,01/01/94,
144
+ 193.244.0.0,193.245.255.255,131072,20/10/92,KBC Group NV
145
+ 194.7.0.0,194.7.255.255,65536,11/01/95,NV Verizon Belgium Luxembourg SA
146
+ 194.41.96.0,194.41.111.255,4096,01/06/94,
147
+ 194.78.0.0,194.78.255.255,65536,13/02/96,Proximus NV
148
+ 194.119.224.0,194.119.255.255,8192,02/07/96,Scarlet Belgium NV
149
+ 194.183.224.0,194.183.255.255,8192,20/12/95,Perceval S.A.
150
+ 195.0.0.0,195.0.127.255,32768,03/04/96,Scarlet Belgium NV
151
+ 195.13.0.0,195.13.31.255,8192,04/10/96,Proximus NV
152
+ 195.16.0.0,195.16.31.255,8192,16/04/96,Telenet BVBA
153
+ 195.72.64.0,195.72.95.255,8192,24/01/97,
154
+ 195.74.192.0,195.74.223.255,8192,18/04/97,Scarlet Belgium NV
155
+ 195.95.0.0,195.95.127.255,32768,03/03/97,Scarlet Belgium NV
156
+ 195.122.96.0,195.122.127.255,8192,05/09/97,ISABEL N.V.
157
+ 195.130.128.0,195.130.159.255,8192,27/11/96,Telenet BVBA
158
+ 195.144.64.0,195.144.95.255,8192,12/03/97,Meritel NV
159
+ 195.162.192.0,195.162.223.255,8192,29/04/97,Telenet BVBA
160
+ 195.184.128.0,195.184.159.255,8192,10/10/96,
161
+ 195.207.0.0,195.207.255.255,65536,22/09/97,Scarlet Belgium NV
162
+ 195.213.0.0,195.213.255.255,65536,25/09/97,
163
+ 195.238.0.0,195.238.31.255,8192,19/09/96,
164
+ 195.244.160.0,195.244.191.255,8192,08/10/97,CIRB-CIBG
165
+ 212.53.0.0,212.53.15.255,4096,29/09/09,Orange Belgium SA
166
+ 212.53.16.0,212.53.31.255,4096,03/04/98,
167
+ 212.63.224.0,212.63.255.255,8192,20/09/99,ASSOCIATED DEXIA TECHNOLOGY SERVICES, S.A.
168
+ 212.65.32.0,212.65.63.255,8192,14/06/99,Orange Belgium SA
169
+ 212.68.192.0,212.68.223.255,8192,23/04/99,Brutele SC
170
+ 212.68.224.0,212.68.255.255,8192,08/02/00,Brutele SC
171
+ 212.71.0.0,212.71.31.255,8192,28/10/98,EDPNET NV
172
+ 212.76.224.0,212.76.255.255,8192,23/05/00,Coditel Brabant SPRL/BVBA
173
+ 212.79.64.0,212.79.95.255,8192,02/02/99,Portima
174
+ 212.87.96.0,212.87.127.255,8192,13/05/04,Orange Belgium SA
175
+ 212.88.224.0,212.88.255.255,8192,22/05/00,Telenet BVBA
176
+ 212.100.160.0,212.100.191.255,8192,12/07/99,Easynet Belgium
177
+ 212.105.128.0,212.105.159.255,8192,21/12/98,Pietercil Delby's NV
178
+ 212.113.64.0,212.113.95.255,8192,10/02/99,Cegeka NV
179
+ 212.123.0.0,212.123.31.255,8192,13/11/98,Telenet BVBA
180
+ 212.166.0.0,212.166.63.255,16384,23/02/99,WIN S.A.
181
+ 212.190.0.0,212.190.255.255,65536,04/03/99,NV Verizon Belgium Luxembourg SA
182
+ 212.221.0.0,212.221.127.255,32768,07/08/98,
183
+ 212.224.128.0,212.224.255.255,32768,14/09/00,Orange Belgium SA
184
+ 212.233.0.0,212.233.31.255,8192,17/09/98,Scarlet Belgium NV
185
+ 212.239.128.0,212.239.255.255,32768,04/11/99,Scarlet Belgium NV
186
+ 213.31.0.0,213.31.255.255,65536,27/03/00,
187
+ 213.49.0.0,213.49.255.255,65536,19/11/99,Scarlet Belgium NV
188
+ 213.118.0.0,213.119.255.255,131072,07/09/00,Telenet BVBA
189
+ 213.132.128.0,213.132.159.255,8192,24/01/00,Telenet BVBA
190
+ 213.177.64.0,213.177.95.255,8192,22/03/00,CYBERNET SA
191
+ 213.177.128.0,213.177.159.255,8192,08/02/00,Scarlet Belgium NV
192
+ 213.177.160.0,213.177.191.255,8192,22/06/01,WIS Telecom SA
193
+ 213.181.32.0,213.181.63.255,8192,19/01/01,Proximus NV
194
+ 213.189.160.0,213.189.191.255,8192,10/10/01,Brutele SC
195
+ 213.193.128.0,213.193.191.255,16384,23/05/00,Easynet Belgium
196
+ 213.211.128.0,213.211.191.255,16384,02/08/00,EDPNET NV
197
+ 213.213.192.0,213.213.255.255,16384,24/06/02,Brutele SC
198
+ 213.214.32.0,213.214.63.255,8192,28/03/03,Coditel Brabant SPRL/BVBA
199
+ 213.219.128.0,213.219.191.255,16384,30/08/00,EDPNET NV
200
+ 213.224.0.0,213.224.31.255,8192,14/07/99,Telenet BVBA
201
+ 213.224.32.0,213.224.63.255,8192,14/01/00,Telenet BVBA
202
+ 213.224.64.0,213.224.127.255,16384,14/01/00,Telenet BVBA
203
+ 213.224.128.0,213.224.255.255,32768,21/06/00,Telenet BVBA
204
+ 213.246.192.0,213.246.255.255,16384,19/03/03,
205
+ 213.251.64.0,213.251.127.255,16384,25/04/01,Telenet BVBA
206
+ 217.15.224.0,217.15.239.255,4096,05/08/11,Brutele SC
207
+ 217.16.32.0,217.16.47.255,4096,11/09/00,
208
+ 217.19.224.0,217.19.239.255,4096,29/03/05,Combell NV
209
+ 217.21.176.0,217.21.191.255,4096,06/10/08,Combell NV
210
+ 217.22.48.0,217.22.63.255,4096,13/02/03,Easyhost BVBA
211
+ 217.30.16.0,217.30.31.255,4096,23/05/03,Global Telephone & Telecommunication S.A. (GT&T)
212
+ 217.64.240.0,217.64.255.255,4096,17/06/03,MAC Telecom S.A.
213
+ 217.66.0.0,217.66.15.255,4096,03/11/00,Descartes Systems (Belgium) NV
214
+ 217.70.224.0,217.70.239.255,4096,15/07/08,
215
+ 217.72.224.0,217.72.239.255,4096,12/12/00,Telenet Group NV
216
+ 217.76.224.0,217.76.239.255,4096,30/11/00,IDnet bvba
217
+ 217.112.176.0,217.112.191.255,4096,08/12/03,BELCENTER SPRL
218
+ 217.113.64.0,217.113.79.255,4096,16/01/01,Gateway Communications
219
+ 217.113.80.0,217.113.95.255,4096,19/08/03,Gateway Communications
220
+ 217.117.32.0,217.117.47.255,4096,06/02/01,Network Research Belgium
221
+ 217.117.48.0,217.117.63.255,4096,03/04/01,Network Research Belgium
222
+ 217.136.0.0,217.136.255.255,65536,25/01/01,Proximus NV
223
+ 217.145.32.0,217.145.47.255,4096,21/02/01,IP NEXIA N.V.
224
+ 217.148.240.0,217.148.255.255,4096,17/05/05,
225
+ 217.171.80.0,217.171.95.255,4096,24/08/04,