mirror of
https://github.com/GOSTSec/sgminer
synced 2025-09-01 00:31:51 +00:00
--api-allow special case 0/0 means all
This commit is contained in:
parent
136b50d51c
commit
3955fefec0
65
api.c
65
api.c
@ -1234,7 +1234,10 @@ static void tidyup()
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Interpret IP[/Prefix][,IP2[/Prefix2][,...]] --api-allow option
|
* Interpret IP[/Prefix][,IP2[/Prefix2][,...]] --api-allow option
|
||||||
*
|
* special case of 0/0 allows /0 (means all IP addresses)
|
||||||
|
*/
|
||||||
|
#define ALLIP4 "0/0"
|
||||||
|
/*
|
||||||
* N.B. IP4 addresses are by Definition 32bit big endian on all platforms
|
* N.B. IP4 addresses are by Definition 32bit big endian on all platforms
|
||||||
*/
|
*/
|
||||||
static void setup_ipaccess()
|
static void setup_ipaccess()
|
||||||
@ -1274,39 +1277,43 @@ static void setup_ipaccess()
|
|||||||
if (comma)
|
if (comma)
|
||||||
*(comma++) = '\0';
|
*(comma++) = '\0';
|
||||||
|
|
||||||
slash = strchr(ptr, '/');
|
if (strcmp(ptr, ALLIP4) == 0)
|
||||||
if (!slash)
|
ipaccess[ips].ip = ipaccess[ips].mask = 0;
|
||||||
ipaccess[ips].mask = 0xffffffff;
|
|
||||||
else {
|
else {
|
||||||
*(slash++) = '\0';
|
slash = strchr(ptr, '/');
|
||||||
mask = atoi(slash);
|
if (!slash)
|
||||||
if (mask < 1 || mask > 32)
|
ipaccess[ips].mask = 0xffffffff;
|
||||||
goto popipo; // skip invalid/zero
|
else {
|
||||||
|
*(slash++) = '\0';
|
||||||
|
mask = atoi(slash);
|
||||||
|
if (mask < 1 || mask > 32)
|
||||||
|
goto popipo; // skip invalid/zero
|
||||||
|
|
||||||
ipaccess[ips].mask = 0;
|
ipaccess[ips].mask = 0;
|
||||||
while (mask-- >= 0) {
|
while (mask-- >= 0) {
|
||||||
octet = 1 << (mask % 8);
|
octet = 1 << (mask % 8);
|
||||||
ipaccess[ips].mask |= (octet << (8 * (mask >> 3)));
|
ipaccess[ips].mask |= (octet << (8 * (mask >> 3)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ipaccess[ips].ip = 0; // missing default to '.0'
|
||||||
|
for (i = 0; ptr && (i < 4); i++) {
|
||||||
|
dot = strchr(ptr, '.');
|
||||||
|
if (dot)
|
||||||
|
*(dot++) = '\0';
|
||||||
|
|
||||||
|
octet = atoi(ptr);
|
||||||
|
if (octet < 0 || octet > 0xff)
|
||||||
|
goto popipo; // skip invalid
|
||||||
|
|
||||||
|
ipaccess[ips].ip |= (octet << (i * 8));
|
||||||
|
|
||||||
|
ptr = dot;
|
||||||
|
}
|
||||||
|
|
||||||
|
ipaccess[ips].ip &= ipaccess[ips].mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
ipaccess[ips].ip = 0; // missing default to '.0'
|
|
||||||
for (i = 0; ptr && (i < 4); i++) {
|
|
||||||
dot = strchr(ptr, '.');
|
|
||||||
if (dot)
|
|
||||||
*(dot++) = '\0';
|
|
||||||
|
|
||||||
octet = atoi(ptr);
|
|
||||||
if (octet < 0 || octet > 0xff)
|
|
||||||
goto popipo; // skip invalid
|
|
||||||
|
|
||||||
ipaccess[ips].ip |= (octet << (i * 8));
|
|
||||||
|
|
||||||
ptr = dot;
|
|
||||||
}
|
|
||||||
|
|
||||||
ipaccess[ips].ip &= ipaccess[ips].mask;
|
|
||||||
|
|
||||||
ips++;
|
ips++;
|
||||||
popipo:
|
popipo:
|
||||||
ptr = comma;
|
ptr = comma;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user