function zrl_init(App $a)
{
- $tmp_str = get_my_url();
- if (validate_url($tmp_str)) {
+ $my_url = get_my_url();
+ $my_url = validate_url($my_url);
+ if ($my_url) {
// Is it a DDoS attempt?
// The check fetches the cached value from gprobe to reduce the load for this system
- $urlparts = parse_url($tmp_str);
+ $urlparts = parse_url($my_url);
$result = Cache::get("gprobe:" . $urlparts["host"]);
if ((!is_null($result)) && (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))) {
return;
}
- Worker::add(PRIORITY_LOW, 'GProbe', $tmp_str);
- $arr = array('zrl' => $tmp_str, 'url' => $a->cmd);
+ Worker::add(PRIORITY_LOW, 'GProbe', $my_url);
+ $arr = array('zrl' => $my_url, 'url' => $a->cmd);
call_hooks('zrl_init', $arr);
}
}
* and check DNS to see if it's real (or check if is a valid IP address)
*
* @param string $url The URL to be validated
- * @return boolean True if it's a valid URL, fals if something wrong with it
+ * @return string|boolean The actual working URL, false else
*/
-function validate_url(&$url)
+function validate_url($url)
{
if (Config::get('system', 'disable_url_validation')) {
- return true;
+ return $url;
}
// no naked subdomains (allow localhost for tests)
- if (strpos($url, '.') === false && strpos($url, '/localhost/') === false)
+ if (strpos($url, '.') === false && strpos($url, '/localhost/') === false) {
return false;
+ }
- if (substr($url, 0, 4) != 'http')
+ if (substr($url, 0, 4) != 'http') {
$url = 'http://' . $url;
+ }
- /// @TODO Really supress function outcomes? Why not find them + debug them?
+ /// @TODO Really suppress function outcomes? Why not find them + debug them?
$h = @parse_url($url);
if ((is_array($h)) && (dns_get_record($h['host'], DNS_A + DNS_CNAME + DNS_PTR) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
- return true;
+ return $url;
}
return false;
);
}
else {
- if (! validate_url($url)) {
+ $url = validate_url($url);
+ if (! $url) {
notice( t('Invalid profile URL.') . EOL);
goaway(System::baseUrl() . '/' . $a->cmd);
return; // NOTREACHED
// If openid has changed or if there's an openid but no openidserver, try and discover it.
if ($openid != $a->user['openid'] || (strlen($openid) && (!strlen($openidserver)))) {
- $tmp_str = $openid;
- if (strlen($tmp_str) && validate_url($tmp_str)) {
+ if (strlen($tmp_str) && validate_url($openid)) {
logger('updating openidserver');
- require_once('library/openid.php');
+ require_once 'library/openid.php';
$open_id_obj = new LightOpenID;
$open_id_obj->identity = $openid;
$openidserver = $open_id_obj->discover($open_id_obj->identity);
$password = $password1;
}
- $tmp_str = $openid_url;
-
if ($using_invites) {
if (!$invite_id) {
throw new Exception(t('An invitation is required.'));
if (!x($username) || !x($email) || !x($nickname)) {
if ($openid_url) {
- if (!validate_url($tmp_str)) {
+ if (!validate_url($openid_url)) {
throw new Exception(t('Invalid OpenID url'));
}
$_SESSION['register'] = 1;
throw new Exception(t('Please enter the required information.'));
}
- if (!validate_url($tmp_str)) {
+ if (!validate_url($openid_url)) {
$openid_url = '';
}