2020-09-25 18:03:02 +00:00
|
|
|
from typing import List, Optional
|
|
|
|
from dataclasses import dataclass, field
|
2020-04-02 16:54:27 +00:00
|
|
|
|
|
|
|
class SASLParams(object):
|
2020-04-26 00:08:47 +00:00
|
|
|
mechanism: str
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
class _SASLUserPass(SASLParams):
|
|
|
|
username: str
|
|
|
|
password: str
|
|
|
|
|
|
|
|
class SASLUserPass(_SASLUserPass):
|
|
|
|
mechanism = "USERPASS"
|
|
|
|
class SASLSCRAM(_SASLUserPass):
|
|
|
|
mechanism = "SCRAM"
|
2020-04-02 16:54:27 +00:00
|
|
|
class SASLExternal(SASLParams):
|
2020-04-26 00:08:47 +00:00
|
|
|
mechanism = "EXTERNAL"
|
2020-04-02 16:54:27 +00:00
|
|
|
|
2020-04-19 20:51:33 +00:00
|
|
|
@dataclass
|
|
|
|
class STSPolicy(object):
|
|
|
|
created: int
|
|
|
|
port: int
|
|
|
|
duration: int
|
|
|
|
preload: bool
|
|
|
|
|
2020-04-25 18:30:36 +00:00
|
|
|
@dataclass
|
|
|
|
class ResumePolicy(object):
|
|
|
|
address: str
|
|
|
|
token: str
|
|
|
|
|
2020-04-02 16:54:27 +00:00
|
|
|
@dataclass
|
|
|
|
class ConnectionParams(object):
|
|
|
|
nickname: str
|
|
|
|
host: str
|
|
|
|
port: int
|
2020-04-03 08:50:30 +00:00
|
|
|
tls: bool
|
2020-04-02 16:54:27 +00:00
|
|
|
|
|
|
|
username: Optional[str] = None
|
|
|
|
realname: Optional[str] = None
|
|
|
|
bindhost: Optional[str] = None
|
|
|
|
|
2020-04-13 18:10:02 +00:00
|
|
|
password: Optional[str] = None
|
2020-04-03 08:50:30 +00:00
|
|
|
tls_verify: bool = True
|
2020-04-02 21:43:34 +00:00
|
|
|
sasl: Optional[SASLParams] = None
|
2020-04-19 20:51:33 +00:00
|
|
|
|
2020-04-25 18:30:36 +00:00
|
|
|
sts: Optional[STSPolicy] = None
|
|
|
|
resume: Optional[ResumePolicy] = None
|
2020-04-26 00:19:16 +00:00
|
|
|
|
|
|
|
reconnect: int = 10 # seconds
|
2020-09-25 18:03:02 +00:00
|
|
|
|
|
|
|
autojoin: List[str] = field(default_factory=list)
|