47 lines
1.2 KiB
Python
Raw Normal View History

2017-11-11 07:33:21 +01:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging
2017-11-11 08:44:28 +01:00
from flask import request, jsonify, abort, redirect
from core import app
from models.site import Site
from models.comment import Comment
from helpers.hashing import md5
from core import processor
2017-11-11 07:33:21 +01:00
logger = logging.getLogger(__name__)
@app.route("/newcomment", methods=['POST'])
def new_form_comment():
try:
data = request.form
2018-01-28 18:12:53 +01:00
# add client IP if provided by HTTP proxy
2018-01-28 18:20:42 +01:00
clientip = ''
2018-01-28 18:12:53 +01:00
if 'X-Forwarded-For' in request.headers:
2018-01-28 18:20:42 +01:00
clientip = request.headers['X-Forwarded-For']
2018-01-28 18:12:53 +01:00
# log
2017-11-11 07:33:21 +01:00
logger.info(data)
# validate token: retrieve site entity
token = data.get('token', '')
site = Site.select().where(Site.token == token).get()
if site is None:
logger.warn('Unknown site %s' % token)
abort(400)
# honeypot for spammers
captcha = data.get('captcha', '')
if captcha:
logger.warn('discard spam: data %s' % data)
abort(400)
2018-01-28 18:20:42 +01:00
processor.enqueue({'request': 'new_comment', 'data': data, 'clientip': clientip})
2017-11-11 07:33:21 +01:00
except:
logger.exception("new comment failure")
abort(400)
2017-11-18 18:38:54 +01:00
return redirect('/redirect/', code=302)