Skip to content

Commit 2416f7d

Browse files
committed
Added support for 6to4 and Teredo.
1 parent a6aab16 commit 2416f7d

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ip2proxy-nodejs",
3-
"version": "2.0.0",
3+
"version": "2.1.0",
44
"description": "IP2Proxy proxy detection component",
55
"keywords": [
66
"vpn-detection",

src/ip2proxy.js

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var bigInt = require("big-integer");
44

55
var fd;
66

7-
var version = "2.0.0";
7+
var version = "2.1.0";
88
var binfile = "";
99
var IPv4ColumnSize = 0;
1010
var IPv6ColumnSize = 0;
@@ -52,6 +52,11 @@ var lastseen_enabled = 0;
5252

5353
var MAX_IPV4_RANGE = bigInt(4294967295);
5454
var MAX_IPV6_RANGE = bigInt("340282366920938463463374607431768211455");
55+
var FROM_6TO4 = bigInt("42545680458834377588178886921629466624");
56+
var TO_6TO4 = bigInt("42550872755692912415807417417958686719");
57+
var FROM_TEREDO = bigInt("42540488161975842760550356425300246528");
58+
var TO_TEREDO = bigInt("42540488241204005274814694018844196863");
59+
var LAST_32BITS = bigInt("4294967295");
5560

5661
var mydb = {
5762
"_DBType": 0,
@@ -352,9 +357,28 @@ function proxyquery_data(myIP, iptype, data, mode) {
352357
_ColumnSize = IPv6ColumnSize;
353358
ipnum = ip2no(myIP);
354359

355-
indexaddr = ipnum.shiftRight(112).toJSNumber();
356-
low = IndexArrayIPv6[indexaddr][0];
357-
high = IndexArrayIPv6[indexaddr][1];
360+
if ((ipnum.geq(FROM_6TO4) && ipnum.leq(TO_6TO4)) || (ipnum.geq(FROM_TEREDO) && ipnum.leq(TO_TEREDO))) {
361+
iptype = 4;
362+
MAX_IP_RANGE = MAX_IPV4_RANGE;
363+
high = mydb._DBCount;
364+
_BaseAddr = mydb._BaseAddr;
365+
_ColumnSize = IPv4ColumnSize;
366+
367+
if (ipnum.geq(FROM_6TO4) && ipnum.leq(TO_6TO4)) {
368+
ipnum = ipnum.shiftRight(80).and(LAST_32BITS).toJSNumber();
369+
}
370+
else {
371+
ipnum = ipnum.not().and(LAST_32BITS).toJSNumber();
372+
}
373+
indexaddr = ipnum >>> 16;
374+
low = IndexArrayIPv4[indexaddr][0];
375+
high = IndexArrayIPv4[indexaddr][1];
376+
}
377+
else {
378+
indexaddr = ipnum.shiftRight(112).toJSNumber();
379+
low = IndexArrayIPv6[indexaddr][0];
380+
high = IndexArrayIPv6[indexaddr][1];
381+
}
358382
}
359383

360384
data.IP = myIP;

0 commit comments

Comments
 (0)