mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
"""Émet un jeton d'auto-inscription à usage unique pour un nouveau noeud
|
|
(flux "kubeadm join", voir ROADMAP.md et banevents/views.py::join_node).
|
|
À lancer sur le MASTER uniquement — le jeton n'a de sens que contre
|
|
l'endpoint /api/join/ de cette même instance.
|
|
|
|
Usage :
|
|
manage.py create_join_token <nom_du_noeud> [--ttl-minutes 60]
|
|
|
|
Le jeton n'est affiché QU'UNE SEULE FOIS ici, en clair — seul son hash est
|
|
persisté (JoinToken.token_hash). Impossible de le retrouver après coup :
|
|
en cas de perte, en émettre un nouveau (le précédent reste valide jusqu'à
|
|
son expiration ou son utilisation, aucun conflit).
|
|
"""
|
|
from typing import Any
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from banevents.enrollment import DEFAULT_TTL_MINUTES, issue_join_token, join_command
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Émet un jeton d'auto-inscription à usage unique pour un nouveau noeud."
|
|
|
|
def add_arguments(self, parser: Any) -> None:
|
|
parser.add_argument('node_name')
|
|
parser.add_argument('--ttl-minutes', type=int, default=DEFAULT_TTL_MINUTES)
|
|
|
|
def handle(self, *args: Any, **options: Any) -> None:
|
|
node_name = options['node_name']
|
|
ttl_minutes = options['ttl_minutes']
|
|
|
|
token, _ = issue_join_token(node_name, ttl_minutes)
|
|
|
|
self.stdout.write(self.style.SUCCESS(
|
|
f"Jeton émis pour '{node_name}' (expire dans {ttl_minutes} min, usage unique) :"
|
|
))
|
|
self.stdout.write('')
|
|
self.stdout.write(f' {join_command(node_name, token)}')
|
|
self.stdout.write('')
|
|
self.stdout.write('À lancer sur le nouveau noeud, puis "sudo make install" comme d\'habitude.')
|