$sw_a = explode('|', VBSEO_PINGBACK_STOPWORDS); foreach ($sw_a as $v) { echo "\n" . $v . ""; } ?> </textarea></td> </tr> <tr class=altsecond> <td> <?php echo $alang['linkback_black_desc']; ?> </td> <td><textarea name="linkback_black" cols="45" rows="8" wrap="VIRTUAL"><?php vbseo_extra_inc('linkback'); $sw_a = vbseo_linkback_getbandomains(1); if (!$sw_a) { $sw_a = explode('|', VBSEO_LINKBACK_BLACKLIST); } foreach ($sw_a as $v) { echo "\n" . $v . ""; } ?> </textarea></td> </tr> <tr class=subheader> <td colspan=2><a name="out_linkbacks" id="out_linkbacks"></a><?php echo $alang['out_linkbacks']; ?> </td> </tr>
function vbseo_ping_proc($src_url, $dest_url, $pingtype = 0, $title = '', $snippet = '') { global $vboptions, $vbseo_gcache; $ping_type_str = ($pingtype == 1 ? 'track' : ($pingtype == 2 ? 'ref' : 'ping')) . 'backs'; $error_msg = array(); $link_confirm = false; vbseo_get_options(false); vbseo_prepare_seo_replace(); vbseo_get_forum_info(); $db = vbseo_get_db(); $matchfull = $vboptions['bburl2']; $postid = $postcount = $threadid = $page = 0; if ($GLOBALS['vbseo_linkback_cleanup']) { $src_url = preg_replace('#' . implode('|', $GLOBALS['vbseo_linkback_cleanup']) . '#', '', $src_url); $dest_url = preg_replace('#' . implode('|', $GLOBALS['vbseo_linkback_cleanup']) . '#', '', $dest_url); } $arr = $arr2 = $arr3 = array(); list($dest_url_pre, $dest_url_post) = explode('#', $dest_url); if (strstr($dest_url_pre, $matchfull)) { $dest_url_pre = substr($dest_url_pre, strlen($matchfull) + 1); $dest_url_pre2 = preg_replace('#\\?.*#', '', $dest_url_pre); if (!($arrt = vbseo_check_url('VBSEO_URL_THREAD_PAGENUM', $dest_url_pre2))) { $arrt = vbseo_check_url('VBSEO_URL_THREAD', $dest_url_pre2); } if (isset($arrt['thread_id'])) { $threadid = $arrt['thread_id']; } if (($arr = vbseo_check_url('VBSEO_URL_POST_SHOW', $dest_url_pre2)) || preg_match('#showpost\\.' . VBSEO_VB_EXT . '\\?[^"]*?p(?:ostid)?=([0-9]+)[^/"]*$#i', $dest_url_pre, $arr2) || preg_match('#showthread\\.' . VBSEO_VB_EXT . '\\?[^"]*?p=([0-9]+)[^/"]*$#i', $dest_url_pre, $arr2) || $arrt && preg_match('#post(\\d+)#', $dest_url_post, $arr3)) { global $found_object_ids; $postid = $arr ? $arr['post_id'] : ($arr2 ? $arr2[1] : $arr3[1] + 0); if ($postid) { $found_object_ids['prepostthread_ids'] = array($postid); vbseo_get_post_thread_info($postid); $threadid = $vbseo_gcache['post'][$postid]['threadid']; $postcount = $vbseo_gcache['post'][$postid]['preposts']; $page = vbseo_thread_pagenum($postcount); $link_confirm = true; } } else { if (preg_match('#showthread\\.' . VBSEO_VB_EXT . '\\?[^"]*?t=([0-9]+)[^/"]*$#i', $dest_url_pre, $arr2) || $arrt && !$dest_url_post) { $threadid = $arr2 ? $arr2[1] : $arrt['thread_id']; $page = $arrt['thread_page'] ? $arrt['thread_page'] : 1; $link_confirm = true; } } vbseo_get_thread_info($threadid); $threadinfo = $vbseo_gcache['thread'][$threadid]; $forumid = $threadinfo['forumid']; if ($threadinfo['visible'] != 1) { $link_confirm = false; } } $put_wait = false; if ($link_confirm) { $c_src_url = preg_replace('|.*?://(www\\.)?|', '', preg_replace('|#.*$|', '', $src_url)); $pret = vbseo_http_query_full($src_url); $pcont = $pret['content']; $purl = parse_url($src_url); if (!$title) { $title = vbseo_get_page_title($pcont); $pcharset = vbseo_get_page_charset($pcont); $title = vbseo_convert_charset($title, $pcharset); } $qf = $db->vbseodb_query_first($q = "SELECT * FROM " . vbseo_tbl_prefix('vbseo_linkback') . "\nWHERE (t_src_url LIKE \"%" . addslashes($c_src_url) . "%\" \n" . (VBSEO_LINKBACK_IGNOREDUPE && $purl['host'] ? "OR (\nt_src_url LIKE \"%" . addslashes(str_replace('www.', '', $purl['host'])) . "/%\" \nAND t_title LIKE \"" . addslashes($title) . "\" \n)" : "") . "\n)\nAND t_threadid = \"{$threadid}\""); if (VBSEO_LINKBACK_REQUIRE_REF && $pingtype == 2 && $qf['t_wait']) { $pingtype = $qf['t_type']; $approve = $vbseo_gcache['forum'][$forumid]['vbseo_moderate_pingback'] ? 1 : 0; $db->vbseodb_query("UPDATE " . vbseo_tbl_prefix('vbseo_linkback') . "\nSET t_wait = 0, t_approve = " . $approve . "\nWHERE t_id = " . $qf['t_id']); vbseo_linkback_approve($qf['t_id']); vbseo_send_notification_pingback($threadid, $postid, $src_url, $qf['t_title'], $qf['t_text'], $approve, VBSEO_PINGBACK_NOTIFY); } else { if (VBSEO_LINKBACK_REQUIRE_REF && $pingtype == 0 && !$qf['t_id']) { $put_wait = true; } } if ($qf['t_id']) { $error_msg = array('code' => 48, 'msg' => 'The pingback has already been registered.'); } else { if ($pingtype == 1 && VBSEO_TRACKBACK_IPCHECK) { $parsed_src_url = @parse_url($src_url); $hostip = gethostbyname($parsed_src_url['host']); if ($hostip != $_SERVER['REMOTE_ADDR']) { $error_msg = array('code' => 47, 'msg' => 'The target server IP address doesn\'t match request host IP.'); } } if (!$error_msg && $pingtype == 2) { $qf2 = $db->vbseodb_query_first($q = "SELECT count(*) as cnt FROM " . vbseo_tbl_prefix('vbseo_linkback') . "\nWHERE t_dest_url LIKE \"%" . addslashes($c_src_url) . "%\" AND\nt_threadid = \"{$threadid}\""); if ($qf2['cnt'] > 0) { $error_msg = array('code' => 4, 'msg' => 'The outgoing linkback has already been registered, refback skipped.'); } } if (!$error_msg && $pingtype != 1) { if (!preg_match('#<a[^>]*?' . preg_quote($dest_url, '#') . '.*?>#', $pcont, $lm) && !preg_match('#<a[^>]*?' . preg_quote($matchfull . '/showthread.php?t=' . $threadid, '#') . '.*?>#', $pcont, $lm)) { $error_msg = array('code' => 17, 'msg' => 'The source URI does not contain a link to the target URI, and so cannot be used as a source.'); } else { $sn = '%vbseo_snippet%'; $snippet = preg_replace('#[ \\t]+#s', " ", preg_replace('#<.*?>#is', '', str_replace($lm[0], $sn, $pcont))); $snippet = preg_replace('#(<\\/?(div|p).*?\\>)#m', "\n\$1", $snippet); $snippet = preg_replace('#^\\s+#m', "", $snippet); $snippet = preg_replace('#[\\r\\n]+#', "\n ", $snippet); $halflen = (int) (VBSEO_SNIPPET_LENGTH / 2); preg_match('#\\s(.{0,' . $halflen . '}' . preg_quote($sn) . '.{0,' . $halflen . '})\\b#', $snippet, $sm); $snippet = trim(str_replace($sn, '', $sm[0])); } } if (VBSEO_PINGBACK_STOPWORDS && (preg_match('#' . VBSEO_PINGBACK_STOPWORDS . '#', $snippet) || preg_match('#' . VBSEO_PINGBACK_STOPWORDS . '#', $title) || preg_match('#' . VBSEO_PINGBACK_STOPWORDS . '#', $threadinfo['title']))) { $error_msg = array('code' => 1, 'msg' => 'The request has been rejected due to anti-SPAM policy.'); } else { if ($purl['host']) { $banned_domains = vbseo_linkback_getbandomains(1, false); if ($banned_domains && preg_match('#(' . $banned_domains . ')#i', $purl['host'], $pm)) { vbseo_linkback_banhit($pm[1], 1); $error_msg = array('code' => 2, 'msg' => 'The request is originated from blacklisted domain.'); } } } if (!$error_msg) { if (VBSEO_MAX_TITLE_LENGTH) { $title = vbseo_substr($title, 0, VBSEO_MAX_TITLE_LENGTH); } vbseo_store_pingback($src_url, $dest_url, $pingtype, $postid, $postcount, $threadid, $page, $title, $snippet, 1, $vbseo_gcache['forum'][$forumid]['vbseo_moderate' . $ping_type_str] ? 0 : 1, 0, $put_wait); } } } else { $error_msg = array('code' => 3, 'msg' => 'The link is not confirmed.'); } return $error_msg; }