-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Check the domains when posting, new route to force check_domain, get …
…the check informations in GET
- Loading branch information
Benjamin Bayart
committed
Jul 26, 2024
1 parent
29d1ab1
commit 9237e68
Showing
16 changed files
with
333 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
"""add errors | ||
Revision ID: a00d7feb5df9 | ||
Revises: 7d80d2028a7f | ||
Create Date: 2024-07-26 10:13:59.099634 | ||
""" | ||
from typing import Sequence, Union | ||
|
||
from alembic import op | ||
import sqlalchemy as sa | ||
|
||
|
||
# revision identifiers, used by Alembic. | ||
revision: str = 'a00d7feb5df9' | ||
down_revision: Union[str, None] = '7d80d2028a7f' | ||
branch_labels: Union[str, Sequence[str], None] = None | ||
depends_on: Union[str, Sequence[str], None] = None | ||
|
||
|
||
def upgrade(engine_name: str) -> None: | ||
globals()["upgrade_%s" % engine_name]() | ||
|
||
|
||
def downgrade(engine_name: str) -> None: | ||
globals()["downgrade_%s" % engine_name]() | ||
|
||
|
||
|
||
|
||
|
||
def upgrade_api() -> None: | ||
# ### commands auto generated by Alembic - please adjust! ### | ||
op.add_column('domains', sa.Column('errors', sa.JSON(), nullable=True)) | ||
# ### end Alembic commands ### | ||
|
||
|
||
def downgrade_api() -> None: | ||
# ### commands auto generated by Alembic - please adjust! ### | ||
op.drop_column('domains', 'errors') | ||
# ### end Alembic commands ### | ||
|
||
|
||
def upgrade_dovecot() -> None: | ||
# ### commands auto generated by Alembic - please adjust! ### | ||
pass | ||
# ### end Alembic commands ### | ||
|
||
|
||
def downgrade_dovecot() -> None: | ||
# ### commands auto generated by Alembic - please adjust! ### | ||
pass | ||
# ### end Alembic commands ### | ||
|
||
|
||
def upgrade_postfix() -> None: | ||
# ### commands auto generated by Alembic - please adjust! ### | ||
pass | ||
# ### end Alembic commands ### | ||
|
||
|
||
def downgrade_postfix() -> None: | ||
# ### commands auto generated by Alembic - please adjust! ### | ||
pass | ||
# ### end Alembic commands ### | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,12 @@ | ||
from .domain import Domain | ||
from .domain import background_check_new_domain, foreground_check_domain, Domain | ||
from .dkim import DkimInfo | ||
from .utils import get_ip_address, make_auth_resolver | ||
|
||
__all__ = [ | ||
background_check_new_domain, | ||
DkimInfo, | ||
Domain, | ||
foreground_check_domain, | ||
get_ip_address, | ||
make_auth_resolver, | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import logging | ||
|
||
import fastapi | ||
|
||
from ... import auth, dns, sql_api, web_models | ||
from .. import dependencies, routers | ||
|
||
|
||
@routers.domains.get("/{domain_name}/check") | ||
async def check_domain( | ||
db: dependencies.DependsApiDb, | ||
user: auth.DependsBasicAdmin, | ||
domain_name: str, | ||
) -> web_models.Domain: | ||
log = logging.getLogger(__name__) | ||
perms = user.get_creds() | ||
|
||
domain_db = sql_api.get_domain(db, domain_name) | ||
if domain_db is None: | ||
log.info(f"Domain {domain_name} not found.") | ||
raise fastapi.HTTPException(status_code=404, detail="Domain not found") | ||
|
||
if not perms.can_read(domain_name): | ||
log.info(f"Permission denied on domain {domain_name} for user.") | ||
raise fastapi.HTTPException(status_code=401, detail="Not authorized.") | ||
|
||
domain_db = dns.foreground_check_domain(db, domain_db) | ||
log.info(f"Domain state after check is {domain_db.state}") | ||
assert domain_db.state in [ "ok", "broken" ] | ||
|
||
return web_models.Domain.from_db(domain_db) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.