Implement MODE
This commit is contained in:
parent
2ffbdcb39a
commit
239ac5f8f0
1 changed files with 14 additions and 1 deletions
|
@ -19,6 +19,9 @@ class SessionState(enum.Flag):
|
|||
AUTH_OK = enum.auto()
|
||||
AUTH_POST = enum.auto()
|
||||
|
||||
class SessionMode(enum.Enum):
|
||||
READER = 1
|
||||
|
||||
class MessagePart(enum.Enum):
|
||||
HEAD = 1
|
||||
BODY = enum.auto()
|
||||
|
@ -104,9 +107,10 @@ class Session():
|
|||
def __init__(self, server: Server, sock: socket.socket):
|
||||
self.server: Server = server
|
||||
self.db: Database = server.db
|
||||
self.state: SessionState = SessionState.ACTIVE
|
||||
self.sock: socket.socket = sock
|
||||
self.buf: LineBuffer = LineBuffer()
|
||||
self.state: SessionState = SessionState.ACTIVE
|
||||
self.mode: SessionMode = SessionMode.READER
|
||||
|
||||
self.newsgroup: Optional[Newsgroup] = None
|
||||
self.article_id: Optional[int] = None
|
||||
|
@ -139,6 +143,14 @@ class Session():
|
|||
|
||||
self.end()
|
||||
|
||||
def _cmd_mode(self, *args):
|
||||
if len(args) != 1 or args[0] != 'READER':
|
||||
return self.respond(ResponseCode.NNTP_SYNTAX_ERROR)
|
||||
|
||||
self.mode = SessionMode.READER
|
||||
|
||||
return self.respond(ResponseCode.NNTP_POST_PROHIBITED)
|
||||
|
||||
def _cmd_group(self, name: str):
|
||||
if name not in self.server.newsgroups:
|
||||
return self.respond(ResponseCode.NNTP_NEWSGROUP_NOT_FOUND)
|
||||
|
@ -561,6 +573,7 @@ class Session():
|
|||
|
||||
COMMANDS = {
|
||||
'CAPABILITIES': _cmd_capabilities,
|
||||
'MODE': _cmd_mode,
|
||||
'GROUP': _cmd_group,
|
||||
'LISTGROUP': _cmd_listgroup,
|
||||
'LIST': _cmd_list,
|
||||
|
|
Loading…
Add table
Reference in a new issue