aboutsummaryrefslogtreecommitdiffstats
path: root/whitelist.py
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2023-05-25 10:15:47 +0200
committerMatěj Cepl <mcepl@cepl.eu>2023-05-25 11:01:18 +0200
commitec4b49d843e67b31b33ac81bef55346353f1d04c (patch)
tree5f60ffae4d6ebe180c5ee4d51d468bf154535251 /whitelist.py
parent8006d981ce26fe8c1140e33b9476c08470d59f30 (diff)
downloadpyg-ec4b49d843e67b31b33ac81bef55346353f1d04c.tar.gz
refactor: rearrange the project to the src/ layout.0.10.3
Fix also pyproject.toml to generate what seems right. Add the explicit dependency on nntplib for Python >= 3.12 (gh#python/cpython!104894). Fixes: https://todo.sr.ht/~mcepl/pygn/7
Diffstat (limited to 'whitelist.py')
-rw-r--r--whitelist.py99
1 files changed, 0 insertions, 99 deletions
diff --git a/whitelist.py b/whitelist.py
deleted file mode 100644
index 4e02f0e..0000000
--- a/whitelist.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""News to mail gateway script. Copyright 2000 Cosimo Alfarano
-
-Author: Cosimo Alfarano
-Date: June 11 2000
-
-whitelist.py - (C) 2000 by Cosimo Alfarano <Alfarano@Students.CS.UniBo.It>
-You can use this software under the terms of the GPL. If we meet some day,
-and you think this stuff is worth it, you can buy me a beer in return.
-
-Thanks to md for this useful formula. Beer is beer.
-
-whitelist manage a list of trusted user.
-"""
-
-from __future__ import absolute_import
-import logging
-# logging.basicConfig(level=logging.DEBUG)
-import sys
-import time
-
-import wlp
-
-
-class whitelist(object):
- """whitelist handling class
-
- Do you really want anyone can post? Ah ah ah.
- """
- wl = {}
-
- # constants
- DENY = 0
- ACCEPT = 1
-
- def __init__(self, wlfile, logfile='pyg.log'):
- self.logger = logging.getLogger(__name__)
- self.logger.setLevel(logging.INFO)
- log_fh = logging.FileHandler(logfile)
- log_fmt = logging.Formatter(
- '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
- log_fh.setFormatter(log_fmt)
- self.logger.addHandler(log_fh)
-
- # dict is a { ownername : {variable: value}} dictionary of dictionaries
- with open(wlfile) as inf:
- self.wl = wlp.mkdict(inf)
-
- def checkfrom(self, fromhead):
- """have you permission to be here, sir?"""
- for owner in self.wl:
- # here colon after 'From' IS required, because binary module wl
- # expects it.
- # TODO: when switching to the python lexxing, remove this
- # limitation.
- if fromhead.find(self.wl[owner]['From:']) >= 0:
- return owner
- else:
- return None
-
- def logmsg(self, heads, ok=DENY, owner=None):
- """who are walking through my gate?
- """
-
- ltime = time.ctime(time.time())
-
- if time.daylight:
- tzone = time.tzname[1]
- else:
- tzone = time.tzname[0]
-
- if ok == self.ACCEPT:
- self.logger.info('Permission Accorded ')
- else:
- self.logger.info('Permission Denied ')
-
- self.logger.info('at %s (%s)', ltime, tzone)
- if owner is not None:
- self.logger.debug('\tWLOwner: ' + owner + '')
- self.logger.debug('\tFrom: ' + heads.get('From', 'NOT PRESENT'))
- self.logger.debug('\tSubject: ' + heads.get('Subject', 'NOT PRESENT'))
- self.logger.debug('\tSender: ' + heads.get('Sender', 'NOT PRESENT'))
- self.logger.debug('\tDate: ' + heads.get('Date', 'NOT PRESENT'))
-
- # some client create Message-Id other Message-ID.
- if 'Message-ID' in heads:
- self.logger.debug('\tMessage-ID: ' + heads.get('Message-ID'))
- else:
- self.logger.debug('\tMessage-Id: ' + heads.get('Message-Id',
- 'NOT PRESENT'))
-
- # X-Newsgroups: and To: are present if user is trusted, else
- # Newsgroup: exists since no changes on nntp headers are done.
- if 'X-Newsgroups' in heads:
- self.logger.debug('\tTo: ' + heads.get('To', 'NOT PRESENT'))
- self.logger.debug('\tX-Newsgroups: ' + heads.get('X-Newsgroups',
- 'NOT PRESENT'))
- else:
- self.logger.debug('\tNewsgroups: ' +
- heads.get('Newsgroups', 'NOT PRESENT'))