from .base_service import Base_service
from .ds_docserver import ds_docserver
import string
import secrets
import uuid
import hashlib
import sys 

class auth(Base_service):
    def go(self, **kwarg):

#         self.get_requests_generic();
#         if 'ds-docserver' not in self.select_components: self.get_external_class(ds_docserver)
        self.async_runner(tasks=[self.load_images_async, self.get_requests], images=['cddisk-postgres.img'], **kwarg)
#        self.get_requests(**kwarg);
        self.add_service();

    async def get_requests(self, dialog: list = None, external:bool = False, **kwarg):
        dialogs = dialog if isinstance(dialog, list) else [
            {
                "env": f'AUTH_PORT',
                "enable": None,
                "msg": (
                    f'Р7-Логирование:\n\nВведите номер открытого порта {"внешней " if external else ""}службы Loki',
                    f'Номер порта {"внешней " if external else ""}службы Loki обязателен к заполнению.',
                    f'Номер порта {"внешней " if external else ""}службы Loki должен состоять из чисел, буквы и спецсимволы не допустимы.'
                ),
                "func_check": self.check_port(),
                "func_visibility": [self.visibility_detalization()],
                "detalization": 1
            },
        ];
        self.get_dialogs(dialogs)

    def add_service(self):

        self.service = {self.__class__.__name__.replace('_','-'): {
                'environment':{
                    'PORT': f'{self.AUTH_PORT[-1]}',
                    'FORWARD_HOST': 'loki',
                    'FORWARD_PORT': '3100',
                    'HTPASSWD': 'foo:$$apr1$$odHl5EJN$$KbxMfo86Qdve2FH4owePn.',
                },
                'networks': [f'net-{self.PREFIX_CS[0]}'],
                'image': f'{self.AUTH_IMAGE_NAME[-1]}:{self.AUTH_IMAGE_VERSION[-1]}',
                'hostname': self.AUTH_HOSTNAME[-1],
                'container_name': self.AUTH_CONTAINER_NAME[-1],
                'ports':[
                    {'target': 80,
                    'published': self.AUTH_PORT[-1],
                    'protocol': 'tcp',
                    'mode': 'host'}
                ],
            }
        }
############################################################
