acloud: setup a mkcert for secure webrtc
Installs mkcert package process.
BUG: 187911329
Test: acloud-dev setup --host
Change-Id: I825588542547c65fbcd71d37da138044e68b9d6f
diff --git a/setup/host_setup_runner.py b/setup/host_setup_runner.py
index fcc5b74..2952f12 100644
--- a/setup/host_setup_runner.py
+++ b/setup/host_setup_runner.py
@@ -50,6 +50,20 @@
"yes | sudo mk-build-deps -i -r -B",
"dpkg-buildpackage -uc -us",
"sudo apt-get install -y -f ../cuttlefish-common_*_amd64.deb"]
+_MKCERT_URL = "https://github.com/FiloSottile/mkcert"
+_MKCERT_VERSION = "v1.4.3"
+_MKCERT_INSTALL_PATH = os.path.join(os.path.expanduser("~"), ".config",
+ constants.TOOL_NAME, "mkcert")
+_MKCERT_CAROOT_CMD = "%s/mkcert -install" % _MKCERT_INSTALL_PATH
+_MKCERT_DOWNLOAD_CMD = ("wget -O %(mkcert_install_path)s/mkcert "
+ "%(mkcert_url)s/releases/download/"
+ "%(mkcert_ver)s/mkcert-%(mkcert_ver)s-linux-amd64" %
+ {"mkcert_install_path": _MKCERT_INSTALL_PATH,
+ "mkcert_url": _MKCERT_URL,
+ "mkcert_ver": _MKCERT_VERSION})
+_INSTALL_MKCERT_CMD = [
+ "sudo apt-get install wget libnss3-tools",
+ _MKCERT_DOWNLOAD_CMD]
class BasePkgInstaller(base_task_runner.BaseTaskRunner):
@@ -153,6 +167,43 @@
shutil.rmtree(os.path.dirname(cf_common_path))
logger.info("Cuttlefish-common package installed now.")
+class MkcertPkgInstaller(base_task_runner.BaseTaskRunner):
+ """Subtask base runner class for installing mkcert."""
+
+ WELCOME_MESSAGE_TITLE = "Install mkcert package on the host"
+ WELCOME_MESSAGE = ("This step will walk you through the mkcert "
+ "package installation to your host for "
+ "assuring a secure localhost url connection "
+ "when launching an AVD over webrtc")
+
+ def ShouldRun(self):
+ """Check if mkcert package is installed.
+
+ Returns:
+ Boolean, True if mkcert is not installed.
+ """
+ if not utils.IsSupportedPlatform():
+ return False
+
+ if not os.path.exists(os.path.join(_MKCERT_INSTALL_PATH, "mkcert")):
+ return True
+ return False
+
+ def _Run(self):
+ """Install mkcert packages."""
+ cmd = "\n".join(_INSTALL_MKCERT_CMD)
+
+ if not utils.GetUserAnswerYes("\nStart to install mkcert :\n%s"
+ "\nEnter 'y' to continue, otherwise N or "
+ "enter to exit: " % cmd):
+ sys.exit(constants.EXIT_BY_USER)
+
+ os.mkdir(_MKCERT_INSTALL_PATH)
+ setup_common.CheckCmdOutput(cmd, shell=True)
+ utils.SetExecutable(os.path.join(_MKCERT_INSTALL_PATH, "mkcert"))
+ utils.CheckOutput(_MKCERT_CAROOT_CMD, shell=True)
+ logger.info("Mkcert package is installed at \"%s\" now.",
+ _MKCERT_INSTALL_PATH)
class CuttlefishHostSetup(base_task_runner.BaseTaskRunner):
"""Subtask class that setup host for cuttlefish."""