Merge pull request #2906 from annando/1611-parseurl
Improvements to page_info (bad ssl, bad formatted url)
This commit is contained in:
commit
717997b14f
|
@ -147,19 +147,23 @@ function add_page_info_data($data) {
|
||||||
// It maybe is a rich content, but if it does have everything that a link has,
|
// It maybe is a rich content, but if it does have everything that a link has,
|
||||||
// then treat it that way
|
// then treat it that way
|
||||||
if (($data["type"] == "rich") AND is_string($data["title"]) AND
|
if (($data["type"] == "rich") AND is_string($data["title"]) AND
|
||||||
is_string($data["text"]) AND (sizeof($data["images"]) > 0))
|
is_string($data["text"]) AND (sizeof($data["images"]) > 0)) {
|
||||||
$data["type"] = "link";
|
$data["type"] = "link";
|
||||||
|
}
|
||||||
|
|
||||||
if ((($data["type"] != "link") AND ($data["type"] != "video") AND ($data["type"] != "photo")) OR ($data["title"] == $url))
|
if ((($data["type"] != "link") AND ($data["type"] != "video") AND ($data["type"] != "photo")) OR ($data["title"] == $data["url"])) {
|
||||||
return("");
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
if ($no_photos AND ($data["type"] == "photo"))
|
if ($no_photos AND ($data["type"] == "photo")) {
|
||||||
return("");
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
if (sizeof($data["images"]) > 0)
|
if (sizeof($data["images"]) > 0) {
|
||||||
$preview = $data["images"][0];
|
$preview = $data["images"][0];
|
||||||
else
|
} else {
|
||||||
$preview = "";
|
$preview = "";
|
||||||
|
}
|
||||||
|
|
||||||
// Escape some bad characters
|
// Escape some bad characters
|
||||||
$data["url"] = str_replace(array("[", "]"), array("[", "]"), htmlentities($data["url"], ENT_QUOTES, 'UTF-8', false));
|
$data["url"] = str_replace(array("[", "]"), array("[", "]"), htmlentities($data["url"], ENT_QUOTES, 'UTF-8', false));
|
||||||
|
@ -167,19 +171,33 @@ function add_page_info_data($data) {
|
||||||
|
|
||||||
$text = "[attachment type='".$data["type"]."'";
|
$text = "[attachment type='".$data["type"]."'";
|
||||||
|
|
||||||
if ($data["url"] != "")
|
if ($data["text"] == "") {
|
||||||
|
$data["text"] = $data["title"];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($data["text"] == "") {
|
||||||
|
$data["text"] = $data["url"];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($data["url"] != "") {
|
||||||
$text .= " url='".$data["url"]."'";
|
$text .= " url='".$data["url"]."'";
|
||||||
if ($data["title"] != "")
|
}
|
||||||
|
|
||||||
|
if ($data["title"] != "") {
|
||||||
$text .= " title='".$data["title"]."'";
|
$text .= " title='".$data["title"]."'";
|
||||||
|
}
|
||||||
|
|
||||||
if (sizeof($data["images"]) > 0) {
|
if (sizeof($data["images"]) > 0) {
|
||||||
$preview = str_replace(array("[", "]"), array("[", "]"), htmlentities($data["images"][0]["src"], ENT_QUOTES, 'UTF-8', false));
|
$preview = str_replace(array("[", "]"), array("[", "]"), htmlentities($data["images"][0]["src"], ENT_QUOTES, 'UTF-8', false));
|
||||||
// if the preview picture is larger than 500 pixels then show it in a larger mode
|
// if the preview picture is larger than 500 pixels then show it in a larger mode
|
||||||
// But only, if the picture isn't higher than large (To prevent huge posts)
|
// But only, if the picture isn't higher than large (To prevent huge posts)
|
||||||
if (($data["images"][0]["width"] >= 500) AND ($data["images"][0]["width"] >= $data["images"][0]["height"]))
|
if (($data["images"][0]["width"] >= 500) AND ($data["images"][0]["width"] >= $data["images"][0]["height"])) {
|
||||||
$text .= " image='".$preview."'";
|
$text .= " image='".$preview."'";
|
||||||
else
|
} else {
|
||||||
$text .= " preview='".$preview."'";
|
$text .= " preview='".$preview."'";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$text .= "]".$data["text"]."[/attachment]";
|
$text .= "]".$data["text"]."[/attachment]";
|
||||||
|
|
||||||
$hashtags = "";
|
$hashtags = "";
|
||||||
|
|
|
@ -89,6 +89,13 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
|
||||||
|
|
||||||
$siteinfo = array();
|
$siteinfo = array();
|
||||||
|
|
||||||
|
// Check if the URL does contain a scheme
|
||||||
|
$scheme = parse_url($url, PHP_URL_SCHEME);
|
||||||
|
|
||||||
|
if ($scheme == "") {
|
||||||
|
$url = "http://".trim($url, "/");
|
||||||
|
}
|
||||||
|
|
||||||
if ($count > 10) {
|
if ($count > 10) {
|
||||||
logger("parseurl_getsiteinfo: Endless loop detected for ".$url, LOGGER_DEBUG);
|
logger("parseurl_getsiteinfo: Endless loop detected for ".$url, LOGGER_DEBUG);
|
||||||
return($siteinfo);
|
return($siteinfo);
|
||||||
|
@ -102,6 +109,8 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
|
||||||
$siteinfo["url"] = $url;
|
$siteinfo["url"] = $url;
|
||||||
$siteinfo["type"] = "link";
|
$siteinfo["type"] = "link";
|
||||||
|
|
||||||
|
$check_cert = get_config('system','verifyssl');
|
||||||
|
|
||||||
$stamp1 = microtime(true);
|
$stamp1 = microtime(true);
|
||||||
|
|
||||||
$ch = curl_init();
|
$ch = curl_init();
|
||||||
|
@ -110,8 +119,9 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
|
||||||
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
||||||
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
|
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
|
||||||
curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
|
curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
|
||||||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
|
||||||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, (($check_cert) ? 2 : false));
|
||||||
|
|
||||||
$header = curl_exec($ch);
|
$header = curl_exec($ch);
|
||||||
$curl_info = @curl_getinfo($ch);
|
$curl_info = @curl_getinfo($ch);
|
||||||
|
@ -142,8 +152,9 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
|
||||||
|
|
||||||
$oembed_data = oembed_fetch_url($url);
|
$oembed_data = oembed_fetch_url($url);
|
||||||
|
|
||||||
if ($oembed_data->type != "error")
|
if (!in_array($oembed_data->type, array("error", "rich"))) {
|
||||||
$siteinfo["type"] = $oembed_data->type;
|
$siteinfo["type"] = $oembed_data->type;
|
||||||
|
}
|
||||||
|
|
||||||
if (($oembed_data->type == "link") AND ($siteinfo["type"] != "photo")) {
|
if (($oembed_data->type == "link") AND ($siteinfo["type"] != "photo")) {
|
||||||
if (isset($oembed_data->title))
|
if (isset($oembed_data->title))
|
||||||
|
@ -165,6 +176,8 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
|
||||||
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
|
curl_setopt($ch, CURLOPT_USERAGENT, $a->get_useragent());
|
||||||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, (($check_cert) ? true : false));
|
||||||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, (($check_cert) ? 2 : false));
|
||||||
|
|
||||||
$header = curl_exec($ch);
|
$header = curl_exec($ch);
|
||||||
$curl_info = @curl_getinfo($ch);
|
$curl_info = @curl_getinfo($ch);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user