<?php /** @file */ require_once 'include/cli_startup.php'; require_once 'include/zot.php'; function gprobe_run($argv, $argc) { cli_startup(); $a = get_app(); if ($argc != 2) { return; } $url = hex2bin($argv[1]); $r = q("select * from xchan where xchan_addr = '%s' limit 1", dbesc($url)); if (!$r) { $x = zot_finger($url, null); if ($x['success']) { $j = json_decode($x['body'], true); $y = import_xchan($j); } } return; } if (array_search(__FILE__, get_included_files()) === 0) { gprobe_run($argv, $argc); killme(); }
logger("gprobe start for " . normalise_link($url), LOGGER_DEBUG); if (!count($r)) { // Is it a DDoS attempt? $urlparts = parse_url($url); $result = Cache::get("gprobe:" . $urlparts["host"]); if (!is_null($result)) { $result = unserialize($result); if ($result["network"] == NETWORK_FEED) { logger("DDoS attempt detected for " . $urlparts["host"] . " by " . $_SERVER["REMOTE_ADDR"] . ". server data: " . print_r($_SERVER, true), LOGGER_DEBUG); return; } } $arr = probe_url($url); if (is_null($result)) { Cache::set("gprobe:" . $urlparts["host"], serialize($arr)); } if (count($arr) && x($arr, 'network') && $arr['network'] === NETWORK_DFRN) { q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`)\n\t\t\t\tvalues ( '%s', '%s', '%s', '%s') ", dbesc($arr['name']), dbesc($arr['url']), dbesc(normalise_link($arr['url'])), dbesc($arr['photo'])); } $r = q("select * from gcontact where nurl = '%s' limit 1", dbesc(normalise_link($url))); } if (count($r)) { poco_load(0, 0, $r[0]['id'], str_replace('/profile/', '/poco/', $r[0]['url'])); } logger("gprobe end for " . normalise_link($url), LOGGER_DEBUG); return; } if (array_search(__FILE__, get_included_files()) === 0) { gprobe_run($_SERVER["argv"], $_SERVER["argc"]); killme(); }