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_OK = enum.auto()
|
||||||
AUTH_POST = enum.auto()
|
AUTH_POST = enum.auto()
|
||||||
|
|
||||||
|
class SessionMode(enum.Enum):
|
||||||
|
READER = 1
|
||||||
|
|
||||||
class MessagePart(enum.Enum):
|
class MessagePart(enum.Enum):
|
||||||
HEAD = 1
|
HEAD = 1
|
||||||
BODY = enum.auto()
|
BODY = enum.auto()
|
||||||
|
@ -104,9 +107,10 @@ class Session():
|
||||||
def __init__(self, server: Server, sock: socket.socket):
|
def __init__(self, server: Server, sock: socket.socket):
|
||||||
self.server: Server = server
|
self.server: Server = server
|
||||||
self.db: Database = server.db
|
self.db: Database = server.db
|
||||||
self.state: SessionState = SessionState.ACTIVE
|
|
||||||
self.sock: socket.socket = sock
|
self.sock: socket.socket = sock
|
||||||
self.buf: LineBuffer = LineBuffer()
|
self.buf: LineBuffer = LineBuffer()
|
||||||
|
self.state: SessionState = SessionState.ACTIVE
|
||||||
|
self.mode: SessionMode = SessionMode.READER
|
||||||
|
|
||||||
self.newsgroup: Optional[Newsgroup] = None
|
self.newsgroup: Optional[Newsgroup] = None
|
||||||
self.article_id: Optional[int] = None
|
self.article_id: Optional[int] = None
|
||||||
|
@ -139,6 +143,14 @@ class Session():
|
||||||
|
|
||||||
self.end()
|
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):
|
def _cmd_group(self, name: str):
|
||||||
if name not in self.server.newsgroups:
|
if name not in self.server.newsgroups:
|
||||||
return self.respond(ResponseCode.NNTP_NEWSGROUP_NOT_FOUND)
|
return self.respond(ResponseCode.NNTP_NEWSGROUP_NOT_FOUND)
|
||||||
|
@ -561,6 +573,7 @@ class Session():
|
||||||
|
|
||||||
COMMANDS = {
|
COMMANDS = {
|
||||||
'CAPABILITIES': _cmd_capabilities,
|
'CAPABILITIES': _cmd_capabilities,
|
||||||
|
'MODE': _cmd_mode,
|
||||||
'GROUP': _cmd_group,
|
'GROUP': _cmd_group,
|
||||||
'LISTGROUP': _cmd_listgroup,
|
'LISTGROUP': _cmd_listgroup,
|
||||||
'LIST': _cmd_list,
|
'LIST': _cmd_list,
|
||||||
|
|
Loading…
Add table
Reference in a new issue