add api and tool for query mxpassfiles, fixes

This commit is contained in:
saces 2026-03-13 13:02:30 +01:00
parent 41fa795971
commit 8df08611a9
7 changed files with 95 additions and 20 deletions

View file

@ -38,6 +38,7 @@ mxtoken = "pymxutils.mxutils:mktoken"
mxaccountinfo = "pymxutils.mxutils:accountinfo"
mxclearaccount = "pymxutils.mxutils:clearaccount"
mxserverinfo = "pymxutils.mxutils:serverinfo"
mxpassitem = "pymxutils.mxutils:passitem"
smalsetup = "smal.smalsetup:smalsetup"
demobot = "demobot:main"
simplebot = "demobot.simple:main"

View file

@ -1,6 +1,7 @@
from .discoverhs import discoverhs
from .mktoken import mktoken
from .whoami import whoami
from .accountinfo import accountinfo
from .clearaccount import clearaccount
from .serverinfo import serverinfo
from .discoverhs import discoverhs as discoverhs
from .mktoken import mktoken as mktoken
from .whoami import whoami as whoami
from .accountinfo import accountinfo as accountinfo
from .clearaccount import clearaccount as clearaccount
from .serverinfo import serverinfo as serverinfo
from .passitem import passitem as passitem

View file

@ -0,0 +1,46 @@
# Copyright (C) 2026 saces@c-base.org
# SPDX-License-Identifier: AGPL-3.0-only
from _pygomx import lib, ffi
import click
import json
@click.command()
@click.option(
"-s", "--secret", "show_secret", is_flag=True, help="print only the secret"
)
@click.option("-u", "--url", "hs_url", metavar="url", help="url selector")
@click.option(
"-l", "--localpart", "localpart", metavar="localpart", help="localpart selector"
)
@click.option("-d", "--domain", "domain", metavar="domain", help="domain selector")
@click.argument("mxpassfile", metavar="mxpassfilepath", required=False)
def passitem(mxpassfile, show_secret, hs_url, localpart, domain):
"""utility to get items from mxpasss files"""
# defaults
if mxpassfile is None:
mxpassfile = ".mxpass"
if hs_url is None:
hs_url = "*"
if localpart is None:
localpart = "*"
if domain is None:
domain = "*"
r = lib.cliv0_mxpassitem(
mxpassfile.encode(encoding="utf-8"),
hs_url.encode(encoding="utf-8"),
localpart.encode(encoding="utf-8"),
domain.encode(encoding="utf-8"),
)
result = ffi.string(r).decode("utf-8")
lib.FreeCString(r)
result_dict = json.loads(result)
if show_secret:
print(result_dict["Token"])
else:
result_dict["Token"] = "***"
print(json.dumps(result_dict))