Merge pull request #265 from Gluejar/ban_disposable_emails
Ban disposable emails in reg, repel robots that search for reg form, update registrationpull/1/head
commit
476c9d49fc
|
@ -1686,6 +1686,9 @@ class UserProfile(models.Model):
|
|||
|
||||
@property
|
||||
def on_ml(self):
|
||||
if "@example.org" in self.user.email:
|
||||
# use @example.org email addresses for testing!
|
||||
return False
|
||||
try:
|
||||
return settings.MAILCHIMP_NEWS_ID in pm.listsForEmail(email_address=self.user.email)
|
||||
except MailChimpException, e:
|
||||
|
@ -1707,6 +1710,9 @@ class UserProfile(models.Model):
|
|||
return False
|
||||
|
||||
def ml_unsubscribe(self):
|
||||
if "@example.org" in self.user.email:
|
||||
# use @example.org email addresses for testing!
|
||||
return True
|
||||
try:
|
||||
return pm.listUnsubscribe(id=settings.MAILCHIMP_NEWS_ID, email_address=self.user.email)
|
||||
except Exception, e:
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{% extends "basedocumentation.html" %}
|
||||
{% load humanize %}
|
||||
{% block title %} Metrics {% endblock %}
|
||||
{% block doccontent %}
|
||||
|
||||
|
@ -9,11 +10,15 @@
|
|||
<ul class="terms">
|
||||
<li>{{ users.today.count }} have registered today. {% if users.today.count %}They are
|
||||
<ul class="terms">{% for user in users.today %}
|
||||
<li><a href="{% url supporter user.username %}">{{user.username}}</a></li>
|
||||
<li><a href="{% url supporter user.username %}"> {{user.username}}</a> {% if user.is_active %} ( {{ user.wishlist.works.count }} wishes) {% if user.library %}{{user.library}}{% endif %}{% endif %}</li>
|
||||
{% endfor %}</ul>{% endif %}
|
||||
<br />{{ wishlists.today.count }} of them have 1 or more items on a wishlist.
|
||||
</li>
|
||||
<li>{{ users.yesterday.count }} registered yesterday.
|
||||
<li>{{ users.yesterday.count }} registered yesterday.{% if users.today.count %}They are
|
||||
<ul class="terms">{% for user in users.yesterday %}
|
||||
<li><a href="{% url supporter user.username %}"> {{user.username}}</a> {% if user.is_active %} ( {{ user.wishlist.works.count }} wishes) {% if user.library %}{{user.library}}{% endif %}{% endif %}</li>
|
||||
{% endfor %}</ul>{% endif %}
|
||||
|
||||
<br />{{ wishlists.yesterday.count }} of them have 1 or more items on a wishlist.
|
||||
</li>
|
||||
<li>{{ users.days7.count }} have registered in the past 7 days.
|
||||
|
@ -57,6 +62,8 @@
|
|||
<dt> How often have the works been listed?</dt>
|
||||
<dd>
|
||||
<ul class="terms">
|
||||
<li>{{ works.wishedby100.count }} have been listed by more than 100 ungluers.
|
||||
</li>
|
||||
<li>{{ works.wishedby50.count }} have been listed by more than 50 ungluers.
|
||||
</li>
|
||||
<li>{{ works.wishedby20.count }} have been listed by more than 20 ungluers.
|
||||
|
|
|
@ -1907,6 +1907,7 @@ class ManageAccount(FormView):
|
|||
|
||||
def search(request):
|
||||
q = request.GET.get('q', '')
|
||||
request.session['q']=q
|
||||
page = int(request.GET.get('page', 1))
|
||||
results = gluejar_search(q, user_ip=request.META['REMOTE_ADDR'], page=page)
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
from .data import blacklist
|
||||
|
||||
def is_disposable(email_address):
|
||||
email_domain = email_address.lower().rsplit('@')[-1]
|
||||
return email_domain in blacklist
|
|
@ -0,0 +1,709 @@
|
|||
blacklist = frozenset([
|
||||
'0-mail.com',
|
||||
'0815.ru',
|
||||
'0845.ru',
|
||||
'0clickemail.com',
|
||||
'0wnd.net',
|
||||
'0wnd.org',
|
||||
'10minutemail.com',
|
||||
'10minutemail.net',
|
||||
'12houremail.com',
|
||||
'12minutemail.com',
|
||||
'163.com',
|
||||
'1pad.de',
|
||||
'20minutemail.com',
|
||||
'2prong.com',
|
||||
'30minutemail.com',
|
||||
'3d-painting.com',
|
||||
'4warding.com',
|
||||
'4warding.net',
|
||||
'4warding.org',
|
||||
'60minutemail.com',
|
||||
'675hosting.com',
|
||||
'675hosting.net',
|
||||
'675hosting.org',
|
||||
'6url.com',
|
||||
'75hosting.com',
|
||||
'75hosting.net',
|
||||
'75hosting.org',
|
||||
'7tags.com',
|
||||
'8127ep.com',
|
||||
'9ox.net',
|
||||
'a-bc.net',
|
||||
'afrobacon.com',
|
||||
'agedmail.com',
|
||||
'ajaxapp.net',
|
||||
'akapost.com',
|
||||
'akerd.com',
|
||||
'ama-trade.de',
|
||||
'ama-trans.de',
|
||||
'amilegit.com',
|
||||
'amiri.net',
|
||||
'amiriindustries.com',
|
||||
'ano-mail.net',
|
||||
'anon-mail.de',
|
||||
'anonbox.net',
|
||||
'anonmails.de',
|
||||
'anonymbox.com',
|
||||
'antichef.com',
|
||||
'antichef.net',
|
||||
'antireg.ru',
|
||||
'antispam.de',
|
||||
'antispam24.de',
|
||||
'antispammail.de',
|
||||
'armyspy.com',
|
||||
'asdasd.ru',
|
||||
'b2cmail.de',
|
||||
'baxomale.ht.cx',
|
||||
'beefmilk.com',
|
||||
'binkmail.com',
|
||||
'bio-muesli.info',
|
||||
'bio-muesli.net',
|
||||
'blackmarket.to',
|
||||
'bobmail.info',
|
||||
'bodhi.lawlita.com',
|
||||
'bofthew.com',
|
||||
'bootybay.de',
|
||||
'br.mintemail.com',
|
||||
'breakthru.com',
|
||||
'brefmail.com',
|
||||
'brennendesreich.de',
|
||||
'broadbandninja.com',
|
||||
'bsnow.net',
|
||||
'bspamfree.org',
|
||||
'buffemail.com',
|
||||
'bugmenever.com',
|
||||
'bugmenot.com',
|
||||
'bumpymail.com',
|
||||
'bund.us',
|
||||
'byom.de',
|
||||
'cam4you.cc',
|
||||
'card.zp.ua',
|
||||
'casualdx.com',
|
||||
'cellurl.com',
|
||||
'centermail.com',
|
||||
'centermail.net',
|
||||
'cheatmail.de',
|
||||
'chogmail.com',
|
||||
'choicemail1.com',
|
||||
'consumerriot.com',
|
||||
'cool.fr.nf',
|
||||
'correo.blogos.net',
|
||||
'cosmorph.com',
|
||||
'courriel.fr.nf',
|
||||
'courrieltemporaire.com',
|
||||
'cubiclink.com',
|
||||
'curryworld.de',
|
||||
'cust.in',
|
||||
'cuvox.de',
|
||||
'dacoolest.com',
|
||||
'dandikmail.com',
|
||||
'dayrep.com',
|
||||
'dbunker.com',
|
||||
'deadaddress.com',
|
||||
'deadspam.com',
|
||||
'dealja.com',
|
||||
'delikkt.de',
|
||||
'despam.it',
|
||||
'despammed.com',
|
||||
'devnullmail.com',
|
||||
'dfgh.net',
|
||||
'digitalsanctuary.com',
|
||||
'dingbone.com',
|
||||
'discardmail.com',
|
||||
'discardmail.de',
|
||||
'disposableaddress.com',
|
||||
'disposableemailaddresses:emailmiser.com',
|
||||
'disposeamail.com',
|
||||
'disposemail.com',
|
||||
'dispostable.com',
|
||||
'dm.w3internet.co.ukexample.com',
|
||||
'dodgeit.com',
|
||||
'dodgit.com',
|
||||
'dodgit.org',
|
||||
'donemail.ru',
|
||||
'dontreg.com',
|
||||
'dontsendmespam.de',
|
||||
'dotman.de',
|
||||
'dropcake.de',
|
||||
'dudmail.com',
|
||||
'dump-email.info',
|
||||
'dumpandjunk.com',
|
||||
'dumpmail.de',
|
||||
'dumpyemail.com',
|
||||
'duskmail.com',
|
||||
'e4ward.com',
|
||||
'easytrashmail.com',
|
||||
'edv.to',
|
||||
'einmalmail.de',
|
||||
'einrot.com',
|
||||
'eintagsmail.de',
|
||||
'email60.com',
|
||||
'emaildienst.de',
|
||||
'emailgo.de',
|
||||
'emailias.com',
|
||||
'emailigo.de',
|
||||
'emailinfive.com',
|
||||
'emaillime.com',
|
||||
'emailmiser.com',
|
||||
'emailsensei.com',
|
||||
'emailtemporanea.com',
|
||||
'emailtemporanea.net',
|
||||
'emailtemporario.com.br',
|
||||
'emailto.de',
|
||||
'emailwarden.com',
|
||||
'emailx.at.hm',
|
||||
'emailxfer.com',
|
||||
'emz.net',
|
||||
'enterto.com',
|
||||
'ephemail.net',
|
||||
'ero-tube.org',
|
||||
'etranquil.com',
|
||||
'etranquil.net',
|
||||
'etranquil.org',
|
||||
'explodemail.com',
|
||||
'express.net.ua',
|
||||
'eyepaste.com',
|
||||
'fakedemail.com',
|
||||
'fakeinbox.com',
|
||||
'fakeinformation.com',
|
||||
'fakemail.fr',
|
||||
'fakemailgenerator.com',
|
||||
'fansworldwide.de',
|
||||
'fastacura.com',
|
||||
'fastchevy.com',
|
||||
'fastchrysler.com',
|
||||
'fastkawasaki.com',
|
||||
'fastmazda.com',
|
||||
'fastmitsubishi.com',
|
||||
'fastnissan.com',
|
||||
'fastsubaru.com',
|
||||
'fastsuzuki.com',
|
||||
'fasttoyota.com',
|
||||
'fastyamaha.com',
|
||||
'film-blog.biz',
|
||||
'filzmail.com',
|
||||
'fivemail.de',
|
||||
'fizmail.com',
|
||||
'fly-ts.de',
|
||||
'flyspam.com',
|
||||
'fr33mail.info',
|
||||
'frapmail.com',
|
||||
'front14.org',
|
||||
'fudgerub.com',
|
||||
'fux0ringduh.com',
|
||||
'fyii.de',
|
||||
'garbagemail.org',
|
||||
'garliclife.com',
|
||||
'gehensiemirnichtaufdensack.de',
|
||||
'geschent.biz',
|
||||
'get1mail.com',
|
||||
'get2mail.fr',
|
||||
'getairmail.com',
|
||||
'getmails.eu',
|
||||
'getonemail.com',
|
||||
'getonemail.net',
|
||||
'ghosttexter.de',
|
||||
'giantmail.de',
|
||||
'girlsundertheinfluence.com',
|
||||
'gishpuppy.com',
|
||||
'gmal.com',
|
||||
'gmial.com',
|
||||
'gomail.in',
|
||||
'gowikibooks.com',
|
||||
'gowikicampus.com',
|
||||
'gowikicars.com',
|
||||
'gowikifilms.com',
|
||||
'gowikigames.com',
|
||||
'gowikimusic.com',
|
||||
'gowikinetwork.com',
|
||||
'gowikitravel.com',
|
||||
'gowikitv.com',
|
||||
'great-host.in',
|
||||
'greensloth.com',
|
||||
'gsrv.co.uk',
|
||||
'guerillamail.biz',
|
||||
'guerillamail.com',
|
||||
'guerillamail.net',
|
||||
'guerillamail.org',
|
||||
'guerrillamail.biz',
|
||||
'guerrillamail.com',
|
||||
'guerrillamail.de',
|
||||
'guerrillamail.info',
|
||||
'guerrillamail.net',
|
||||
'guerrillamail.org',
|
||||
'guerrillamailblock.com',
|
||||
'h.mintemail.com',
|
||||
'h8s.org',
|
||||
'haltospam.com',
|
||||
'hat-geld.de',
|
||||
'hatespam.org',
|
||||
'hidemail.de',
|
||||
'hmamail.com',
|
||||
'hochsitze.com',
|
||||
'hotmai.com',
|
||||
'hotmial.com',
|
||||
'hotpop.com',
|
||||
'hulapla.de',
|
||||
'humaility.com',
|
||||
'ieatspam.eu',
|
||||
'ieatspam.info',
|
||||
'ieh-mail.de',
|
||||
'ignoremail.com',
|
||||
'ihateyoualot.info',
|
||||
'iheartspam.org',
|
||||
'ikbenspamvrij.nl',
|
||||
'imails.info',
|
||||
'inboxclean.com',
|
||||
'inboxclean.org',
|
||||
'inboxed.im',
|
||||
'inboxed.pw',
|
||||
'incognitomail.com',
|
||||
'incognitomail.net',
|
||||
'incognitomail.org',
|
||||
'infocom.zp.ua',
|
||||
'insorg-mail.info',
|
||||
'instant-mail.de',
|
||||
'ip6.li',
|
||||
'ipoo.org',
|
||||
'irish2me.com',
|
||||
'is.af',
|
||||
'iwi.net',
|
||||
'jetable.com',
|
||||
'jetable.fr.nf',
|
||||
'jetable.net',
|
||||
'jetable.org',
|
||||
'jnxjn.com',
|
||||
'junk.to',
|
||||
'junk1e.com',
|
||||
'kasmail.com',
|
||||
'kaspop.com',
|
||||
'keepmymail.com',
|
||||
'killmail.com',
|
||||
'killmail.net',
|
||||
'kir.ch.tc',
|
||||
'klassmaster.com',
|
||||
'klassmaster.net',
|
||||
'klzlk.com',
|
||||
'kostenlosemailadresse.de',
|
||||
'koszmail.pl',
|
||||
'kulturbetrieb.info',
|
||||
'kurzepost.de',
|
||||
'lawlita.com',
|
||||
'letthemeatspam.com',
|
||||
'lhsdv.com',
|
||||
'lifebyfood.com',
|
||||
'link2mail.net',
|
||||
'linuxmail.so',
|
||||
'litedrop.com',
|
||||
'llogin.ru',
|
||||
'lol.ovpn.to',
|
||||
'lolfreak.net',
|
||||
'lookugly.com',
|
||||
'lopl.co.cc',
|
||||
'lortemail.dk',
|
||||
'losemymail.com',
|
||||
'lr78.com',
|
||||
'luckymail.org',
|
||||
'm21.cc',
|
||||
'm4ilweb.info',
|
||||
'maboard.com',
|
||||
'mail-temporaire.fr',
|
||||
'mail.by',
|
||||
'mail.mezimages.net',
|
||||
'mail.zp.ua',
|
||||
'mail1a.de',
|
||||
'mail21.cc',
|
||||
'mail2rss.org',
|
||||
'mail333.com',
|
||||
'mail4trash.com',
|
||||
'mailbidon.com',
|
||||
'mailbiz.biz',
|
||||
'mailblocks.com',
|
||||
'mailcatch.com',
|
||||
'mailde.de',
|
||||
'mailde.info',
|
||||
'maildrop.cc',
|
||||
'maileater.com',
|
||||
'maileimer.de',
|
||||
'mailexpire.com',
|
||||
'mailforspam.com',
|
||||
'mailfreeonline.com',
|
||||
'mailin8r.com',
|
||||
'mailinater.com',
|
||||
'mailinator.com',
|
||||
'mailinator.net',
|
||||
'mailinator2.com',
|
||||
'mailincubator.com',
|
||||
'mailita.tk',
|
||||
'mailme.ir',
|
||||
'mailme.lv',
|
||||
'mailme24.com',
|
||||
'mailmetrash.com',
|
||||
'mailmoat.com',
|
||||
'mailms.com',
|
||||
'mailnator.com',
|
||||
'mailnesia.com',
|
||||
'mailnull.com',
|
||||
'mailorg.org',
|
||||
'mailscrap.com',
|
||||
'mailseal.de',
|
||||
'mailshell.com',
|
||||
'mailsiphon.com',
|
||||
'mailslite.com',
|
||||
'mailtome.de',
|
||||
'mailtrash.net',
|
||||
'mailtv.net',
|
||||
'mailtv.tv',
|
||||
'mailzilla.com',
|
||||
'mailzilla.org',
|
||||
'makemetheking.com',
|
||||
'malahov.de',
|
||||
'mbx.cc',
|
||||
'mega.zik.dj',
|
||||
'meinspamschutz.de',
|
||||
'meltmail.com',
|
||||
'messagebeamer.de',
|
||||
'mierdamail.com',
|
||||
'ministry-of-silly-walks.de',
|
||||
'mintemail.com',
|
||||
'misterpinball.de',
|
||||
'moburl.com',
|
||||
'moncourrier.fr.nf',
|
||||
'monemail.fr.nf',
|
||||
'monmail.fr.nf',
|
||||
'msa.minsmail.com',
|
||||
'mt2009.com',
|
||||
'mt2014.com',
|
||||
'mx0.wwwnew.eu',
|
||||
'mycard.net.ua',
|
||||
'mycleaninbox.net',
|
||||
'mypartyclip.de',
|
||||
'myphantomemail.com',
|
||||
'mysamp.de',
|
||||
'myspaceinc.com',
|
||||
'myspaceinc.net',
|
||||
'myspaceinc.org',
|
||||
'myspacepimpedup.com',
|
||||
'myspamless.com',
|
||||
'mytempmail.com',
|
||||
'mytrashmail.com',
|
||||
'nabuma.com',
|
||||
'neomailbox.com',
|
||||
'nepwk.com',
|
||||
'nervmich.net',
|
||||
'nervtmich.net',
|
||||
'netmails.com',
|
||||
'netmails.net',
|
||||
'netzidiot.de',
|
||||
'neverbox.com',
|
||||
'nevermail.de',
|
||||
'nincsmail.hu',
|
||||
'no-spam.ws',
|
||||
'nobugmail.com',
|
||||
'nobulk.com',
|
||||
'nobuma.com',
|
||||
'noclickemail.com',
|
||||
'nogmailspam.info',
|
||||
'nomail.pw',
|
||||
'nomail.xl.cx',
|
||||
'nomail2me.com',
|
||||
'nomorespamemails.com',
|
||||
'nospam.ze.tc',
|
||||
'nospam4.us',
|
||||
'nospamfor.us',
|
||||
'nospammail.net',
|
||||
'nospamthanks.info',
|
||||
'notmailinator.com',
|
||||
'nowmymail.com',
|
||||
'nurfuerspam.de',
|
||||
'nus.edu.sg',
|
||||
'nwldx.com',
|
||||
'objectmail.com',
|
||||
'obobbo.com',
|
||||
'odnorazovoe.ru',
|
||||
'ohaaa.de',
|
||||
'omail.pro',
|
||||
'oneoffemail.com',
|
||||
'oneoffmail.com',
|
||||
'onewaymail.com',
|
||||
'onlatedotcom.info',
|
||||
'online.ms',
|
||||
'oopi.org',
|
||||
'ordinaryamerican.net',
|
||||
'otherinbox.com',
|
||||
'ourklips.com',
|
||||
'outlawspam.com',
|
||||
'ovpn.to',
|
||||
'owlpic.com',
|
||||
'pancakemail.com',
|
||||
'pimpedupmyspace.com',
|
||||
'pjjkp.com',
|
||||
'plexolan.de',
|
||||
'politikerclub.de',
|
||||
'poofy.org',
|
||||
'pookmail.com',
|
||||
'powered.name',
|
||||
'privacy.net',
|
||||
'privatdemail.net',
|
||||
'privy-mail.de',
|
||||
'privymail.de',
|
||||
'proxymail.eu',
|
||||
'prtnx.com',
|
||||
'punkass.com',
|
||||
'put2.net',
|
||||
'putthisinyourspamdatabase.com',
|
||||
'quickinbox.com',
|
||||
'rcpt.at',
|
||||
'realtyalerts.ca',
|
||||
'receiveee.com',
|
||||
'recode.me',
|
||||
'recursor.net',
|
||||
'regbypass.com',
|
||||
'regbypass.comsafe-mail.net',
|
||||
'rejectmail.com',
|
||||
'rhyta.com',
|
||||
'rklips.com',
|
||||
'rmqkr.net',
|
||||
'rppkn.com',
|
||||
'rtrtr.com',
|
||||
's0ny.net',
|
||||
'safe-mail.net',
|
||||
'safersignup.de',
|
||||
'safetymail.info',
|
||||
'safetypost.de',
|
||||
'sandelf.de',
|
||||
'saynotospams.com',
|
||||
'schafmail.de',
|
||||
'schmeissweg.tk',
|
||||
'schrott-email.de',
|
||||
'secmail.pw',
|
||||
'secretemail.de',
|
||||
'secure-mail.biz',
|
||||
'secure-mail.cc',
|
||||
'selfdestructingmail.com',
|
||||
'sendspamhere.com',
|
||||
'senseless-entertainment.com',
|
||||
'server.ms',
|
||||
'sharklasers.com',
|
||||
'shieldemail.com',
|
||||
'shiftmail.com',
|
||||
'shitmail.me',
|
||||
'shortmail.net',
|
||||
'shut.name',
|
||||
'shut.ws',
|
||||
'sibmail.com',
|
||||
'sinnlos-mail.de',
|
||||
'skeefmail.com',
|
||||
'sky-ts.de',
|
||||
'slaskpost.se',
|
||||
'slopsbox.com',
|
||||
'smashmail.de',
|
||||
'smellfear.com',
|
||||
'snakemail.com',
|
||||
'sneakemail.com',
|
||||
'sneakmail.de',
|
||||
'snkmail.com',
|
||||
'sofimail.com',
|
||||
'sofort-mail.de',
|
||||
'sofortmail.de',
|
||||
'sogetthis.com',
|
||||
'soodonims.com',
|
||||
'spam.la',
|
||||
'spam.su',
|
||||
'spam4.me',
|
||||
'spamail.de',
|
||||
'spamavert.com',
|
||||
'spambob.com',
|
||||
'spambob.net',
|
||||
'spambob.org',
|
||||
'spambog.com',
|
||||
'spambog.de',
|
||||
'spambog.ru',
|
||||
'spambox.info',
|
||||
'spambox.irishspringrealty.com',
|
||||
'spambox.us',
|
||||
'spamcannon.com',
|
||||
'spamcannon.net',
|
||||
'spamcero.com',
|
||||
'spamcon.org',
|
||||
'spamcorptastic.com',
|
||||
'spamcowboy.com',
|
||||
'spamcowboy.net',
|
||||
'spamcowboy.org',
|
||||
'spamday.com',
|
||||
'spamex.com',
|
||||
'spamfree.eu',
|
||||
'spamfree24.com',
|
||||
'spamfree24.de',
|
||||
'spamfree24.eu',
|
||||
'spamfree24.info',
|
||||
'spamfree24.net',
|
||||
'spamfree24.org',
|
||||
'spamgourmet.com',
|
||||
'spamgourmet.net',
|
||||
'spamgourmet.org',
|
||||
'spamherelots.com',
|
||||
'spamhereplease.com',
|
||||
'spamhole.com',
|
||||
'spamify.com',
|
||||
'spaminator.de',
|
||||
'spamkill.info',
|
||||
'spaml.com',
|
||||
'spaml.de',
|
||||
'spammotel.com',
|
||||
'spamobox.com',
|
||||
'spamoff.de',
|
||||
'spamslicer.com',
|
||||
'spamspot.com',
|
||||
'spamthis.co.uk',
|
||||
'spamthisplease.com',
|
||||
'spamtrail.com',
|
||||
'speed.1s.fr',
|
||||
'spoofmail.de',
|
||||
'squizzy.de',
|
||||
'sry.li',
|
||||
'stinkefinger.net',
|
||||
'stuffmail.de',
|
||||
'super-auswahl.de',
|
||||
'supergreatmail.com',
|
||||
'supermailer.jp',
|
||||
'superstachel.de',
|
||||
'suremail.info',
|
||||
'tagyourself.com',
|
||||
'teewars.org',
|
||||
'teleworm.com',
|
||||
'teleworm.us',
|
||||
'temp-mail.org',
|
||||
'temp-mail.ru',
|
||||
'tempail.com',
|
||||
'tempalias.com',
|
||||
'tempe-mail.com',
|
||||
'tempemail.biz',
|
||||
'tempemail.co.za',
|
||||
'tempemail.com',
|
||||
'tempemail.net',
|
||||
'tempinbox.co.uk',
|
||||
'tempinbox.com',
|
||||
'tempmail.eu',
|
||||
'tempmail.it',
|
||||
'tempmail2.com',
|
||||
'tempmailer.com',
|
||||
'tempmailer.de',
|
||||
'tempomail.fr',
|
||||
'temporarily.de',
|
||||
'temporarioemail.com.br',
|
||||
'temporaryemail.net',
|
||||
'temporaryforwarding.com',
|
||||
'temporaryinbox.com',
|
||||
'temporarymailaddress.com',
|
||||
'thanksnospam.info',
|
||||
'thankyou2010.com',
|
||||
'thc.st',
|
||||
'thisisnotmyrealemail.com',
|
||||
'thismail.net',
|
||||
'throwawayemailaddress.com',
|
||||
'tilien.com',
|
||||
'tittbit.in',
|
||||
'tmailinator.com',
|
||||
'tokem.co',
|
||||
'topranklist.de',
|
||||
'tormail.org',
|
||||
'tradermail.info',
|
||||
'trash-amil.com',
|
||||
'trash-mail.at',
|
||||
'trash-mail.com',
|
||||
'trash-mail.de',
|
||||
'trash2009.com',
|
||||
'trashdevil.com',
|
||||
'trashdevil.de',
|
||||
'trashemail.de',
|
||||
'trashinbox.com',
|
||||
'trashmail.at',
|
||||
'trashmail.com',
|
||||
'trashmail.de',
|
||||
'trashmail.me',
|
||||
'trashmail.net',
|
||||
'trashmail.org',
|
||||
'trashmail.ws',
|
||||
'trashmailer.com',
|
||||
'trashymail.com',
|
||||
'trashymail.net',
|
||||
'trialmail.de',
|
||||
'trillianpro.com',
|
||||
'turual.com',
|
||||
'twinmail.de',
|
||||
'tyldd.com',
|
||||
'uggsrock.com',
|
||||
'upliftnow.com',
|
||||
'uplipht.com',
|
||||
'us.af',
|
||||
'venompen.com',
|
||||
'veryrealemail.com',
|
||||
'vidchart.com',
|
||||
'viditag.com',
|
||||
'viewcastmedia.com',
|
||||
'viewcastmedia.net',
|
||||
'viewcastmedia.org',
|
||||
'vipmail.name',
|
||||
'vipmail.pw',
|
||||
'vpn.st',
|
||||
'vsimcard.com',
|
||||
'wasteland.rfc822.org',
|
||||
'watch-harry-potter.com',
|
||||
'watchfull.net',
|
||||
'webm4il.info',
|
||||
'weg-werf-email.de',
|
||||
'wegwerf-email-adressen.de',
|
||||
'wegwerf-email.de',
|
||||
'wegwerf-email.net',
|
||||
'wegwerf-emails.de',
|
||||
'wegwerfadresse.de',
|
||||
'wegwerfemail.com',
|
||||
'wegwerfemail.de',
|
||||
'wegwerfemail.net',
|
||||
'wegwerfemail.org',
|
||||
'wegwerfemailadresse.com',
|
||||
'wegwerfmail.de',
|
||||
'wegwerfmail.net',
|
||||
'wegwerfmail.org',
|
||||
'wetrainbayarea.com',
|
||||
'wetrainbayarea.org',
|
||||
'wh4f.org',
|
||||
'whatpaas.com',
|
||||
'whyspam.me',
|
||||
'willhackforfood.biz',
|
||||
'willselfdestruct.com',
|
||||
'winemaven.info',
|
||||
'wolfsmail.tk',
|
||||
'writeme.us',
|
||||
'wronghead.com',
|
||||
'wuzup.net',
|
||||
'wuzupmail.net',
|
||||
'www.e4ward.com',
|
||||
'www.gishpuppy.com',
|
||||
'www.mailinator.com',
|
||||
'wwwnew.eu',
|
||||
'x.ip6.li',
|
||||
'xagloo.com',
|
||||
'xemaps.com',
|
||||
'xents.com',
|
||||
'xmaily.com',
|
||||
'xoxy.net',
|
||||
'yanet.me',
|
||||
'yep.it',
|
||||
'yogamaven.com',
|
||||
'yopmail.com',
|
||||
'yopmail.fr',
|
||||
'yopmail.net',
|
||||
'youmailr.com',
|
||||
'ypmail.webarnak.fr.eu.org',
|
||||
'yuurok.com',
|
||||
'yxzx.net',
|
||||
'z1p.biz',
|
||||
'zehnminuten.de',
|
||||
'zehnminutenmail.de',
|
||||
'zippymail.info',
|
||||
'zoaxe.com',
|
||||
'zoemail.org',
|
||||
])
|
|
@ -1,10 +1,26 @@
|
|||
import logging
|
||||
from django import forms
|
||||
from django.contrib.auth.forms import AuthenticationForm
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from registration.forms import RegistrationForm
|
||||
from .emailcheck import is_disposable
|
||||
from .models import Library
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class RegistrationFormNoDisposableEmail(RegistrationForm):
|
||||
def clean_email(self):
|
||||
"""
|
||||
Check the supplied email address against a list of known disposable
|
||||
webmail domains.
|
||||
"""
|
||||
logger.info('cleaning email')
|
||||
if is_disposable(self.cleaned_data['email']):
|
||||
raise forms.ValidationError(_("Please supply a permanent email address."))
|
||||
return self.cleaned_data['email']
|
||||
|
||||
|
||||
class AuthForm(AuthenticationForm):
|
||||
def __init__(self, request=None, *args, **kwargs):
|
||||
if request and request.method == 'GET':
|
||||
|
@ -12,7 +28,7 @@ class AuthForm(AuthenticationForm):
|
|||
super(AuthForm, self).__init__(initial={"username":saved_un},*args, **kwargs)
|
||||
else:
|
||||
super(AuthForm, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class NewLibraryForm(forms.ModelForm):
|
||||
username = forms.RegexField(
|
||||
label=_("Library Username"),
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
import unittest
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
class TestLibraryAuth(TestCase):
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
|
||||
def test_pages(self):
|
||||
resp = self.client.get(reverse('registration_register'))
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
|
||||
def test_registration(self):
|
||||
"""
|
||||
LibraryAuth Registration creates a new inactive account and a new profile
|
||||
with activation key, populates the correct account data and
|
||||
sends an activation email.
|
||||
|
||||
"""
|
||||
resp = self.client.post(reverse('registration_register'),
|
||||
data={'username': 'bob',
|
||||
'email': 'bob@example.com',
|
||||
'password1': 'secret',
|
||||
'password2': 'secret'})
|
||||
self.assertRedirects(resp, reverse('registration_complete'))
|
||||
|
||||
new_user = User.objects.get(username='bob')
|
||||
|
||||
self.failUnless(new_user.check_password('secret'))
|
||||
self.assertEqual(new_user.email, 'bob@example.com')
|
||||
|
||||
# New user must not be active.
|
||||
self.failIf(new_user.is_active)
|
||||
|
||||
def test_bad_registration(self):
|
||||
"""
|
||||
LibraryAuth Registration rejects.
|
||||
|
||||
"""
|
||||
resp = self.client.post(reverse('registration_register'),
|
||||
data={'username': 'badbob',
|
||||
'email': 'bob@mailnesia.com',
|
||||
'password1': 'secret',
|
||||
'password2': 'secret'})
|
||||
self.assertTrue('Please supply a permanent email address' in resp.content)
|
||||
|
||||
with self.assertRaises(User.DoesNotExist):
|
||||
User.objects.get(username='badbob')
|
||||
|
||||
def test_is_disposable(self):
|
||||
from .emailcheck import is_disposable
|
||||
self.assertFalse(is_disposable('eric@hellman.net'))
|
||||
self.assertTrue(is_disposable('eric@mailnesia.com'))
|
||||
|
||||
|
|
@ -2,7 +2,8 @@ from django.conf.urls.defaults import *
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic.simple import direct_to_template
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from . import views, models
|
||||
from . import views, models, forms
|
||||
from .views import superlogin, CustomRegistrationView
|
||||
|
||||
urlpatterns = patterns(
|
||||
"",
|
||||
|
@ -20,5 +21,28 @@ urlpatterns = patterns(
|
|||
'template':'libraryauth/list.html',
|
||||
'extra_context':{'libraries_to_show':'new'}},
|
||||
name="new_libraries"),
|
||||
url(r'^accounts/register/$', CustomRegistrationView.as_view(), name='registration_register'),
|
||||
url(r'^accounts/superlogin/$', views.superlogin, name='superlogin'),
|
||||
)
|
||||
url(r"^accounts/superlogin/welcome/$", direct_to_template,
|
||||
{'template': 'registration/welcome.html',
|
||||
'extra_context': {'suppress_search_box': True,}
|
||||
}),
|
||||
url(r'^accounts/login/pledge/$',superlogin,
|
||||
{'template_name': 'registration/from_pledge.html'}),
|
||||
url(r'^accounts/login/purchase/$',superlogin,
|
||||
{'template_name': 'registration/from_purchase.html'}),
|
||||
url(r'^accounts/login/add/$',superlogin,
|
||||
{'template_name': 'registration/from_add.html'}),
|
||||
url(r'^accounts/activate/complete/$',superlogin,
|
||||
{'template_name': 'registration/activation_complete.html'}),
|
||||
url(r'^accounts/login-error/$',superlogin,
|
||||
{'template_name': 'registration/from_error.html'}),
|
||||
url(r'^accounts/edit/$', 'regluit.frontend.views.edit_user'),
|
||||
url(r"^accounts/login/welcome/$", direct_to_template, {
|
||||
'template': 'registration/welcome.html',
|
||||
'extra_context': {'suppress_search_box': True,}
|
||||
}),
|
||||
url(r'^socialauth/', include('social_auth.urls')),
|
||||
url('accounts/', include('email_change.urls')),
|
||||
url(r'^accounts/', include('registration.backends.default.urls')),
|
||||
)
|
||||
|
|
|
@ -8,10 +8,10 @@ from django.contrib.auth import load_backend
|
|||
from django.contrib.auth.decorators import login_required
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.views.generic.edit import FormView, CreateView, UpdateView, SingleObjectMixin
|
||||
from registration.backends.default.views import RegistrationView
|
||||
from . import backends
|
||||
|
||||
from .models import Library
|
||||
from .forms import AuthForm, LibraryForm, NewLibraryForm
|
||||
from .forms import AuthForm, LibraryForm, NewLibraryForm, RegistrationFormNoDisposableEmail
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -52,6 +52,7 @@ def superlogin(request, extra_context=None, **kwargs):
|
|||
request.session["add_wishlist"]=request.GET["add"]
|
||||
return login(request, extra_context=extra_context, authentication_form=AuthForm, **kwargs)
|
||||
|
||||
|
||||
class Authenticator:
|
||||
request=None
|
||||
library=None
|
||||
|
@ -226,4 +227,21 @@ def login_user(request, user):
|
|||
user.backend = backend
|
||||
break
|
||||
if hasattr(user, 'backend'):
|
||||
return login_to_user(request, user)
|
||||
return login_to_user(request, user)
|
||||
|
||||
robot_qs = {
|
||||
'user',
|
||||
'user/register',
|
||||
'node/add',
|
||||
}
|
||||
|
||||
class CustomRegistrationView(RegistrationView):
|
||||
form_class = RegistrationFormNoDisposableEmail
|
||||
def form_valid(self, request, form):
|
||||
q = request.session.get('q', False)
|
||||
if q and q in robot_qs:
|
||||
return self.render_to_response({'form':form})
|
||||
return super(CustomRegistrationView,self).form_valid(request, form)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ django-maintenancemode==0.10
|
|||
django-nose-selenium==0.7.3
|
||||
#django-notification==0.2
|
||||
git+git://github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1
|
||||
django-registration==0.8
|
||||
django-registration==1.0
|
||||
django-selectable==0.7.0
|
||||
django-smtp-ssl==1.0
|
||||
django-social-auth==0.7.20
|
||||
|
|
42
urls.py
42
urls.py
|
@ -1,11 +1,8 @@
|
|||
import notification.urls
|
||||
|
||||
from django.conf.urls.defaults import *
|
||||
from django.views.generic.simple import direct_to_template
|
||||
|
||||
from frontend.forms import ProfileForm
|
||||
from frontend.views import social_auth_reset_password
|
||||
from libraryauth.views import superlogin
|
||||
from regluit.admin import admin_site
|
||||
from regluit.core.sitemaps import WorkSitemap, PublisherSitemap
|
||||
|
||||
|
@ -15,39 +12,16 @@ sitemaps = {
|
|||
}
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^accounts/activate/complete/$',superlogin,
|
||||
{'template_name': 'registration/activation_complete.html'}),
|
||||
url(r'^accounts/login/pledge/$',superlogin,
|
||||
{'template_name': 'registration/from_pledge.html'}),
|
||||
url(r'^accounts/login/purchase/$',superlogin,
|
||||
{'template_name': 'registration/from_purchase.html'}),
|
||||
url(r'^accounts/login/add/$',superlogin,
|
||||
{'template_name': 'registration/from_add.html'}),
|
||||
url(r'^accounts/login-error/$',superlogin,
|
||||
{'template_name': 'registration/from_error.html'}),
|
||||
(r'^accounts/edit/$', 'regluit.frontend.views.edit_user'),
|
||||
(r'^accounts/', include('registration.backends.default.urls')),
|
||||
url('accounts/', include('email_change.urls')),
|
||||
url(r"^accounts/login/welcome/$", direct_to_template,
|
||||
{'template': 'registration/welcome.html',
|
||||
'extra_context': {'suppress_search_box': True,}
|
||||
}),
|
||||
url(r"^accounts/superlogin/welcome/$", direct_to_template,
|
||||
{'template': 'registration/welcome.html',
|
||||
'extra_context': {'suppress_search_box': True,}
|
||||
}),
|
||||
url(r'^socialauth/reset_password/$', social_auth_reset_password, name="social_auth_reset_password"),
|
||||
(r'^socialauth/', include('social_auth.urls')),
|
||||
(r'^api/', include('regluit.api.urls')),
|
||||
(r'', include('regluit.frontend.urls')),
|
||||
(r'', include('regluit.payment.urls')),
|
||||
(r'', include('regluit.libraryauth.urls')),
|
||||
(r'^selectable/', include('selectable.urls')),
|
||||
url(r'^api/', include('regluit.api.urls')),
|
||||
url(r'', include('regluit.frontend.urls')),
|
||||
url(r'', include('regluit.payment.urls')),
|
||||
url(r'', include('regluit.libraryauth.urls')),
|
||||
url(r'^selectable/', include('selectable.urls')),
|
||||
url(r'^admin/', include(admin_site.urls)),
|
||||
(r'^comments/', include('django.contrib.comments.urls')),
|
||||
(r'^notification/', include(notification.urls)),
|
||||
|
||||
(r'^ckeditor/', include('ckeditor.urls')),
|
||||
url(r'^comments/', include('django.contrib.comments.urls')),
|
||||
url(r'^notification/', include(notification.urls)),
|
||||
url(r'^ckeditor/', include('ckeditor.urls')),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('django.contrib.sitemaps.views',
|
||||
|
|
Loading…
Reference in New Issue