wadebug/wa_actions/implementations/check_mysql_password.py (30 lines of code) (raw):
# Copyright (c) Facebook, Inc. and its affiliates.
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
from __future__ import absolute_import, division, print_function, unicode_literals
from wadebug import results
from wadebug.wa_actions import docker_utils
from wadebug.wa_actions.base import WAAction
INVALID_CHARACTERS = "?{}&~!()^="
class CheckMySQLPassword(WAAction):
user_facing_name = "check_mysql_password"
short_description = "Test if database password has any invalid characters"
config_dependencies = ("db.password",)
@classmethod
def _run(cls, config, *args, **kwargs):
errors = []
wa_containers = docker_utils.get_running_wa_containers()
if wa_containers:
password = docker_utils.get_mysql_password(wa_containers[0])
else:
# if containers not giving password then get password from db config file
password = config.get("db").get("password")
if set(INVALID_CHARACTERS) & set(password):
errors.append(
"Please make sure mysql password do not have "
"any special characters from {}".format(INVALID_CHARACTERS)
)
if errors:
return results.Problem(
cls,
"Your mysql password contains some invalid characters",
"\n".join(errors),
"",
)
return results.OK(cls)