added non interactive login
This commit is contained in:
@@ -14,6 +14,8 @@ class Config:
|
||||
server_url: str
|
||||
auth_server_url: str
|
||||
repo_folders: tuple[Path, ...]
|
||||
client_id: str
|
||||
client_secret: Optional[str]
|
||||
|
||||
|
||||
config_file_candidates = [
|
||||
@@ -35,10 +37,11 @@ def load_configuration() -> Config:
|
||||
server_url: Optional[str] = None
|
||||
auth_server_url: Optional[str] = None
|
||||
repo_folders: list[Path] = []
|
||||
client_id: Optional[str] = None
|
||||
client_secret: Optional[str] = None
|
||||
for config_file_maybe in config_file_candidates:
|
||||
def process_configuration(config_file: Path) -> None:
|
||||
nonlocal server_url
|
||||
nonlocal auth_server_url
|
||||
nonlocal server_url, auth_server_url, client_id, client_secret
|
||||
config = RawConfigParser()
|
||||
with open(config_file, 'r') as lines:
|
||||
config.read_file(chain((f'[{main_section}]',), lines))
|
||||
@@ -48,9 +51,15 @@ def load_configuration() -> Config:
|
||||
.if_present(repo_folders.append))
|
||||
server_url = config.get(main_section, 'ServerURL', fallback=server_url)
|
||||
auth_server_url = config.get(main_section, 'AuthServerURL', fallback=auth_server_url)
|
||||
client_id = config.get(main_section, 'ClientId', fallback=client_id)
|
||||
client_secret = config.get(main_section, 'ClientSecret', fallback=client_secret)
|
||||
|
||||
config_file_maybe.if_present(process_configuration)
|
||||
return Config(server_url or 'https://woggioni.net/jpacrepo/',
|
||||
auth_server_url or 'https://woggioni.net/auth/realms/woggioni.net',
|
||||
tuple(repo_folders) or (Path('/var/cache/pacman/pkg'),)
|
||||
return Config(server_url=server_url or 'https://woggioni.net/jpacrepo/',
|
||||
auth_server_url=auth_server_url or 'https://woggioni.net/auth/realms/woggioni.net',
|
||||
repo_folders=tuple(repo_folders) or (Path('/var/cache/pacman/pkg'),),
|
||||
client_id=client_id or 'jpacrepo-client',
|
||||
client_secret=Maybe.of_nullable(client_secret)
|
||||
.map(lambda v: v.format(**environ))
|
||||
.or_else(None)
|
||||
)
|
||||
|
@@ -140,8 +140,9 @@ class JpacrepoClient:
|
||||
def authenticate(self) -> None:
|
||||
token = oidc_client.login(
|
||||
provider_config=self.provider_config,
|
||||
client_id='jpacrepo-client',
|
||||
interactive=True,
|
||||
client_id=self.config.client_id,
|
||||
interactive=not bool(self.config.client_secret),
|
||||
client_secret=self.config.client_secret,
|
||||
redirect_uri=DEFAULT_REDIRECT_URI)
|
||||
self.token = token
|
||||
self.token_expiry = (token.created_at or int(time())) + (token.expires_in or 10)
|
||||
|
Reference in New Issue
Block a user