def pingback(request, source, target): source_file = urllib.urlopen(source.split('#')[0]) if source_file.headers.get('error', '') == '404': raise Fault(0x0010, "Target %s not exists" % target) source_page = parser() source_page.feed(source_file.read()) source_file.close() if source_page.title == "": source_page.title = source if target in source_page.hrefs: target_entry = fileFor(request, target) body = '' try: from rssfinder import getFeeds from rssparser import parse baseurl = source.split("#")[0] for feed in getFeeds(baseurl): for item in parse(feed)['items']: if item['link'] == source: if 'title' in item: source_page.title = item['title'] if 'content_encoded' in item: body = item['content_encoded'].strip() if 'description' in item: body = item['description'].strip() or body body = re.compile('<.*?>', re.S).sub('', body) body = re.sub('\s+', ' ', body) body = body[:body.rfind(' ', 0, 250 )][:250] + " ...<br />" except: pass cmt = {'title':source_page.title, \ 'author':'Pingback from %s' % source_page.title, 'pubDate' : str(time.time()), \ 'link': source, 'source' : '', 'description' : body} from comments import writeComment config = request.getConfiguration() data = request.getData() data['entry_list'] = [target_entry] # TODO: Check if comment from the URL exists writeComment(config, data, cmt) return "success pinging %s from %s\n" % (source, target) else: raise Fault(0x0011, "%s does not point to %s" % (target, source))
def pingback(request, source, target): source_file = urllib.urlopen(source.split('#')[0]) if source_file.headers.get('error', '') == '404': raise Fault(0x0010, "Target %s not exists" % target) source_page = parser() source_page.feed(source_file.read()) source_file.close() if source_page.title == "": source_page.title = source if target in source_page.hrefs: target_entry = fileFor(request, target) body = '' try: from rssfinder import getFeeds from rssparser import parse baseurl=source.split("#")[0] for feed in getFeeds(baseurl): for item in parse(feed)['items']: if item['link']==source: if 'title' in item: source_page.title = item['title'] if 'content_encoded' in item: body = item['content_encoded'].strip() if 'description' in item: body = item['description'].strip() or body body=re.compile('<.*?>',re.S).sub('',body) body=re.sub('\s+',' ',body) body=body[:body.rfind(' ',0,250)][:250] + " ...<br />" except: pass cmt = {'title':source_page.title, \ 'author':'Pingback from %s' % source_page.title, 'pubDate' : str(time.time()), \ 'link': source, 'source' : '', 'description' : body} from comments import writeComment config = request.getConfiguration() data = request.getData() data['entry_list'] = [ target_entry ] # TODO: Check if comment from the URL exists writeComment(config, data, cmt) return "success pinging %s from %s\n" % (source, target) else: raise Fault(0x0011, "%s does not point to %s" % (target, source))
def pingback(request, source, target): logger = tools.getLogger() logger.info("pingback started") source_file = urllib.urlopen(source.split('#')[0]) if source_file.headers.get('error', '') == '404': raise Fault(0x0010, "Target %s not exists" % target) source_page = parser() source_page.feed(source_file.read()) source_file.close() if source_page.title == "": source_page.title = source if target in source_page.hrefs: target_entry = fileFor(request, target) body = '' try: from rssfinder import getFeeds from rssparser import parse baseurl=source.split("#")[0] for feed in getFeeds(baseurl): for item in parse(feed)['items']: if item['link']==source: if 'title' in item: source_page.title = item['title'] if 'content_encoded' in item: body = item['content_encoded'].strip() if 'description' in item: body = item['description'].strip() or body body=re.compile('<.*?>',re.S).sub('',body) body=re.sub('\s+',' ',body) body=body[:body.rfind(' ',0,250)][:250] + " ...<br />" except: pass cmt = {'title':source_page.title, \ 'author':'Pingback from %s' % source_page.title, 'pubDate' : str(time.time()), \ 'link': source, 'source' : '', 'description' : body} # run anti-spam plugins argdict = { "request": request, "comment": cmt } reject = tools.run_callback("trackback_reject", argdict, donefunc=lambda x:x != 0) if ((isinstance(reject, tuple) or isinstance(reject, list)) and len(reject) == 2): reject_code, reject_message = reject else: reject_code, reject_message = reject, "Pingback rejected." if reject_code == 1: raise Fault(0x0031, reject_message) from comments import writeComment config = request.getConfiguration() data = request.getData() data['entry_list'] = [ target_entry ] # TODO: Check if comment from the URL exists writeComment(request, config, data, cmt, config['blog_encoding']) return "success pinging %s from %s\n" % (target, source) else: raise Fault(0x0011, "%s does not point to %s" % (source, target))