diff --git a/index.php b/index.php
new file mode 100644
index 0000000..81bcdda
--- /dev/null
+++ b/index.php
@@ -0,0 +1,128 @@
+
+
+
+
enwiki IPv4 Rangeblock finder
+
+ $cookieJar,
+ CURLOPT_COOKIEJAR => $cookieJar,
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_USERAGENT => 'RangeblockFinder/0.1 (+mailto:wikimedia@stwalkerster.co.uk)',
+
+);
+
+const API_ENWIKI = 'https://en.wikipedia.org/w/api.php';
+const API_METAWIKI = 'https://meta.wikimedia.org/w/api.php';
+
+function apiQuery($base, array $params, array $substitutions, $post = false)
+{
+ global $curlOpt;
+
+ $usableParams = [];
+
+ foreach ($params as $k => $v) {
+ $val = $v;
+
+ foreach ($substitutions as $kid => $repl) {
+ $val = str_replace('{' . $kid . '}', $repl, $val);
+ }
+
+ $usableParams[$k] = $val;
+ }
+
+ $usableParams['format'] = 'json';
+
+ $queryString = http_build_query($usableParams);
+
+ $url = $base;
+
+ if (!$post) {
+ $url .= '?' . $queryString;
+ }
+
+ $ch = curl_init();
+ curl_setopt_array($ch, $curlOpt);
+ curl_setopt($ch, CURLOPT_URL, $url);
+
+ if ($post) {
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $queryString);
+ }
+
+ $data = curl_exec($ch);
+
+ if (curl_errno($ch)) {
+ die('cURL Error: ' . curl_error($ch));
+ }
+
+ return json_decode($data);
+}
+
+function countBlocks($target) {
+ $enwikiGeneralQuery = [
+ 'action' => 'query',
+ 'list' => 'logevents',
+ 'letitle' => 'User:{0}',
+ 'letype' => 'block',
+ ];
+
+ $data = apiQuery(API_ENWIKI, $enwikiGeneralQuery, [$target]);
+ return count($data->query->logevents);
+}
+function countGlobalBlocks($target) {
+ $metaGeneralQuery = [
+ 'action' => 'query',
+ 'list' => 'logevents',
+ 'letitle' => 'User:{0}',
+ 'letype' => 'gblblock',
+ ];
+
+ $data = apiQuery(API_METAWIKI, $metaGeneralQuery, [$target]);
+ return count($data->query->logevents);
+}
+
+$ip = filter_var(trim($_POST['ip']), FILTER_VALIDATE_IP);
+if($ip === false) {
+ die('Not a valid IP!');
+}
+
+$ipBlocks = countBlocks($ip);
+$ipGBlocks = countGlobalBlocks($ip);
+
+?>
+Target | Local count | | Global count | |
+
+ = $ip ?>/32 |
+ ">= $ipBlocks ?> |
+ Local log
+ | ">= $ipGBlocks ?> |
+ Global log
+ |
+= 16; --$x) {
+ $mask = -1 << 32 - $x;
+ $val = $ipl & $mask;
+ $range = long2ip($val) . '/' . $x;
+ $ipBlocks = countBlocks($range);
+ $ipGBlocks = countGlobalBlocks($range);
+ ?>
+ = $range ?> |
+ ">= $ipBlocks ?> |
+ Local log
+ | ">= $ipGBlocks ?> |
+ Global log
+ |