Initial implementation of IHAVE
This commit is contained in:
parent
9450957740
commit
0922a7788b
1 changed files with 43 additions and 0 deletions
|
@ -764,6 +764,48 @@ class Session():
|
||||||
except:
|
except:
|
||||||
return self.respond(ResponseCode.NNTP_POST_FAILED)
|
return self.respond(ResponseCode.NNTP_POST_FAILED)
|
||||||
|
|
||||||
|
def _cmd_ihave(self, message_id):
|
||||||
|
sql = """
|
||||||
|
select
|
||||||
|
count(message_id)
|
||||||
|
from
|
||||||
|
message
|
||||||
|
where
|
||||||
|
message_id = ?
|
||||||
|
"""
|
||||||
|
|
||||||
|
cr = self.db.execute(sql, (message_id,))
|
||||||
|
row = cr.fetchone()
|
||||||
|
|
||||||
|
if row is not None and row[0] > 0:
|
||||||
|
return self.respond(ResponseCode.NNTP_ARTICLE_NOT_WANTED_ID)
|
||||||
|
|
||||||
|
self.respond(ResponseCode.NNTP_INQUIRY_ARTICLE_ID)
|
||||||
|
|
||||||
|
message = Message()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
line = self.readline()
|
||||||
|
|
||||||
|
if line == '':
|
||||||
|
self.active = False
|
||||||
|
break
|
||||||
|
elif line == '.':
|
||||||
|
if message.message_id != message_id:
|
||||||
|
return self.respond(ResponseCode.NNTP_POST_FAILED)
|
||||||
|
|
||||||
|
if self._save_message(message):
|
||||||
|
return self.respond(ResponseCode.NNTP_ARTICLE_RECEIVED_ID)
|
||||||
|
else:
|
||||||
|
return self.respond(ResponseCode.NNTP_POST_FAILED)
|
||||||
|
elif line == '..':
|
||||||
|
line = '.'
|
||||||
|
|
||||||
|
try:
|
||||||
|
message.readline(line)
|
||||||
|
except:
|
||||||
|
return self.respond(ResponseCode.NNTP_POST_FAILED)
|
||||||
|
|
||||||
def _cmd_date(self):
|
def _cmd_date(self):
|
||||||
timestamp = datetime.datetime.now(datetime.UTC)
|
timestamp = datetime.datetime.now(datetime.UTC)
|
||||||
|
|
||||||
|
@ -795,6 +837,7 @@ class Session():
|
||||||
'XOVER': _cmd_over,
|
'XOVER': _cmd_over,
|
||||||
'STAT': _cmd_stat,
|
'STAT': _cmd_stat,
|
||||||
'POST': _cmd_post,
|
'POST': _cmd_post,
|
||||||
|
'IHAVE': _cmd_ihave,
|
||||||
'DATE': _cmd_date,
|
'DATE': _cmd_date,
|
||||||
'QUIT': _cmd_quit,
|
'QUIT': _cmd_quit,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue