public static function netMatch($CIDR, $IP)
    {
        /* TODO: IPV6 */
        if (is_array($CIDR)) {
            foreach ($CIDR as &$v) {
                if (self::netMatch($v, $IP)) {
                    return true;
                }
            }

            return false;
        }

        $e = explode('/', $CIDR, 2);

        if (!isset($e[1])) {
            return $e[0] === $IP;
        }

        return (ip2long($IP) & ~((1 << (32 - $e[1])) - 1)) === ip2long($e[0]);
    }