diff --git a/.gitignore b/.gitignore
index 5b0f531..996d7d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,4 @@ venv/
# programming languages
*.pyc
*.o
+
diff --git a/README.md b/README.md
index 64e7e1e..490c9aa 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+22321268
diff --git a/cmds/cnv.py b/cmds/cnv.py
index e51869a..21f9f03 100644
--- a/cmds/cnv.py
+++ b/cmds/cnv.py
@@ -66,11 +66,11 @@ def install(args):
if installed_flag:
color_print.debug(
'{vuln} already installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
return
color_print.debug(
'{vuln} is going to be installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
color_print.debug('uninstalling current docker gadgets if applicable')
DockerInstaller.uninstall(verbose=args.verbose)
if not DockerInstaller.install_by_version(
@@ -81,14 +81,14 @@ def install(args):
else:
color_print.debug(
'{v} successfully installed'.format(
- v=vuln['name']))
+ v=vuln['name']), type=1)
if vuln['class'] == 'kubernetes':
if checkers.kubernetes_specified_installed(
vuln['dependencies'], verbose=args.verbose):
color_print.debug(
'{vuln} already installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
return
if not checkers.docker_installed(verbose=args.verbose):
color_print.error(
@@ -97,7 +97,7 @@ def install(args):
'you can run `metarget gadget install docker --version 18.03.1` to install one')
color_print.debug(
'{vuln} is going to be installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
color_print.debug('uninstalling current kubernetes if applicable')
KubernetesInstaller.uninstall(verbose=args.verbose)
temp_pod_network_cidr = args.pod_network_cidr if args.pod_network_cidr else config.cni_plugin_cidrs[
@@ -119,18 +119,18 @@ def install(args):
else:
color_print.debug(
'{v} successfully installed'.format(
- v=vuln['name']))
+ v=vuln['name']), type=1)
if vuln['class'] == 'kernel':
if checkers.kernel_specified_installed(
vuln['dependencies'], verbose=args.verbose):
color_print.debug(
'{vuln} already installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
return
color_print.debug(
'{vuln} is going to be installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
if not KernelInstaller.install_by_version(
gadgets=vuln['dependencies'], verbose=args.verbose):
@@ -140,9 +140,9 @@ def install(args):
else:
color_print.debug(
'{v} successfully installed'.format(
- v=vuln['name']))
+ v=vuln['name']), type=1)
# reboot
- reboot = color_print.debug_input('reboot system now? (y/n) ')
+ reboot = color_print.debug_input('reboot system now? (y/n) ', type=1)
if reboot == 'y' or reboot == 'Y':
system_func.reboot_system(verbose=args.verbose)
@@ -153,7 +153,7 @@ def install(args):
verbose=args.verbose):
color_print.debug(
'{vuln} already installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
return
if not checkers.docker_installed(verbose=args.verbose):
color_print.error(
@@ -163,7 +163,7 @@ def install(args):
color_print.debug(
'{vuln} is going to be installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
color_print.debug('uninstalling current kata-containers if applicable')
KataContainersInstaller.uninstall(verbose=args.verbose)
@@ -181,7 +181,7 @@ def install(args):
else:
color_print.debug(
'{v} successfully installed'.format(
- v=vuln['name']))
+ v=vuln['name']), type=1)
def remove(args):
@@ -217,21 +217,21 @@ def remove(args):
color_print.debug(
'{vuln} is going to be removed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
if vuln['class'].startswith('docker'):
DockerInstaller.uninstall(verbose=args.verbose)
- color_print.debug('{v} successfully removed'.format(v=vuln['name']))
+ color_print.debug('{v} successfully removed'.format(v=vuln['name']), type=2)
if vuln['class'] == 'kubernetes':
KubernetesInstaller.uninstall(verbose=args.verbose)
- color_print.debug('{v} successfully removed'.format(v=vuln['name']))
+ color_print.debug('{v} successfully removed'.format(v=vuln['name']), type=2)
if vuln['class'] == 'kata-containers':
if KataContainersInstaller.uninstall(verbose=args.verbose):
color_print.debug(
'{v} successfully removed'.format(
- v=vuln['name']))
+ v=vuln['name']), type=2)
else:
color_print.error('failed to remove {v}'.format(v=vuln['name']))
diff --git a/cmds/gadget.py b/cmds/gadget.py
index 970815f..44e3471 100644
--- a/cmds/gadget.py
+++ b/cmds/gadget.py
@@ -42,7 +42,7 @@ def install(args):
if checkers.docker_specified_installed(temp_gadgets):
color_print.debug(
'{gadget} with version {version} already installed'.format(
- gadget=args.gadget, version=args.version))
+ gadget=args.gadget, version=args.version), type=3)
return
color_print.debug('uninstalling current docker if applicable')
DockerInstaller.uninstall(verbose=args.verbose)
@@ -54,7 +54,7 @@ def install(args):
else:
color_print.debug(
'{gadget} with version {version} successfully installed'.format(
- gadget=args.gadget, version=args.version))
+ gadget=args.gadget, version=args.version), type=1)
if args.gadget == 'k8s':
temp_gadgets = [
@@ -66,7 +66,7 @@ def install(args):
temp_gadgets, verbose=args.verbose):
color_print.debug(
'{gadget} with version {version} already installed'.format(
- gadget=args.gadget, version=args.version))
+ gadget=args.gadget, version=args.version), type=3)
return
if not checkers.docker_installed(verbose=args.verbose):
color_print.error(
@@ -92,7 +92,7 @@ def install(args):
else:
color_print.debug(
'{gadget} successfully installed'.format(
- gadget=args.gadget))
+ gadget=args.gadget), type=1)
if args.gadget == 'kata':
temp_gadgets = [
@@ -102,7 +102,7 @@ def install(args):
temp_gadgets, kata_runtime_type=args.kata_runtime_type, verbose=args.verbose):
color_print.debug(
'{gadget} with version {version} already installed'.format(
- gadget=args.gadget, version=args.version))
+ gadget=args.gadget, version=args.version), type=3)
return
if not checkers.docker_installed(verbose=args.verbose):
color_print.error(
@@ -119,7 +119,7 @@ def install(args):
else:
color_print.debug(
'{gadget} with version {version} (runtime type: {runtime_type}) successfully installed'.format(
- gadget=args.gadget, version=args.version, runtime_type=args.kata_runtime_type))
+ gadget=args.gadget, version=args.version, runtime_type=args.kata_runtime_type), type=1)
if args.gadget == 'kernel':
temp_gadgets = [
@@ -129,7 +129,7 @@ def install(args):
temp_gadgets, verbose=args.verbose):
color_print.debug(
'{gadget} with version {version} already installed'.format(
- gadget=args.gadget, version=args.version))
+ gadget=args.gadget, version=args.version), type=3)
return
if not KernelInstaller.install_by_version(
temp_gadgets, verbose=args.verbose):
@@ -139,9 +139,9 @@ def install(args):
else:
color_print.debug(
'{gadget} successfully installed'.format(
- gadget=args.gadget))
+ gadget=args.gadget), type=1)
# reboot
- reboot = color_print.debug_input('reboot system now? (y/n) ')
+ reboot = color_print.debug_input('reboot system now? (y/n) ', type=1)
if reboot == 'y' or reboot == 'Y':
system_func.reboot_system(verbose=args.verbose)
@@ -160,17 +160,17 @@ def remove(args):
DockerInstaller.uninstall(verbose=args.verbose)
color_print.debug(
'{gadget} successfully removed'.format(
- gadget=args.gadget))
+ gadget=args.gadget), type=2)
if args.gadget == 'k8s':
KubernetesInstaller.uninstall(verbose=args.verbose)
color_print.debug(
'{gadget} successfully removed'.format(
- gadget=args.gadget))
+ gadget=args.gadget), type=2)
if args.gadget == 'kata':
if KataContainersInstaller.uninstall(verbose=args.verbose):
color_print.debug(
'{gadget} successfully removed'.format(
- gadget=args.gadget))
+ gadget=args.gadget), type=2)
else:
color_print.error(
'failed to remove {gadget}'.format(
@@ -182,9 +182,9 @@ def remove(args):
if KernelInstaller.uninstall(temp_gadgets, verbose=args.verbose):
color_print.debug(
'{gadget} successfully removed'.format(
- gadget=args.gadget))
+ gadget=args.gadget), type=2)
# reboot
- reboot = color_print.debug_input('reboot system now? (y/n) ')
+ reboot = color_print.debug_input('reboot system now? (y/n) ', type=1)
if reboot == 'y' or reboot == 'Y':
system_func.reboot_system(verbose=args.verbose)
else:
diff --git a/cmds/internal.py b/cmds/internal.py
index 3a6e805..440dc47 100644
--- a/cmds/internal.py
+++ b/cmds/internal.py
@@ -31,7 +31,7 @@ def deploy_vuln_resources_in_k8s(
color_print.debug(
'{vuln} is going to be installed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
yamls = [os.path.join(vuln['path'], dependency)
for dependency in vuln['dependencies']['yamls']]
# some appv need hostPath volumes
@@ -86,7 +86,7 @@ def deploy_vuln_resources_in_k8s(
'failed to install {v}'.format(
v=vuln['name']))
else:
- color_print.debug('{v} successfully installed'.format(v=vuln['name']))
+ color_print.debug('{v} successfully installed'.format(v=vuln['name']), tyype=1)
def delete_vuln_resources_in_k8s(vuln, verbose=False):
@@ -104,7 +104,7 @@ def delete_vuln_resources_in_k8s(vuln, verbose=False):
"""
color_print.debug(
'{vuln} is going to be removed'.format(
- vuln=vuln['name']))
+ vuln=vuln['name']), type=3)
yamls = [os.path.join(vuln['path'], dependency)
for dependency in vuln['dependencies']['yamls']]
diff --git a/core/env_managers/installer.py b/core/env_managers/installer.py
index f0a754a..fbe2aec 100644
--- a/core/env_managers/installer.py
+++ b/core/env_managers/installer.py
@@ -175,7 +175,7 @@ def _pull_image(cls, image, mappings=None, verbose=False):
except subprocess.CalledProcessError:
return False
else:
- color_print.debug('%s already pulled' % image)
+ color_print.debug('%s already pulled' % image, 3)
@classmethod
def _pull_domestic_images(cls, images, ori_prefix,
@@ -209,7 +209,7 @@ def _pull_domestic_image(cls, image, ori_prefix,
cls._pull_image(temp_image, verbose=verbose)
cls._tag_image(temp_image, image)
else:
- color_print.debug('%s already pulled' % image)
+ color_print.debug('%s already pulled' % image, 3)
@classmethod
def _tag_images(cls, old_names, new_names):
diff --git a/utils/checkers.py b/utils/checkers.py
index 2418e9d..300e087 100644
--- a/utils/checkers.py
+++ b/utils/checkers.py
@@ -51,7 +51,7 @@ def kubernetes_installed(verbose=False):
stdout=subprocess.PIPE,
stderr=stderr,
check=True)
- color_print.debug('kubernetes already installed')
+ color_print.debug('kubernetes already installed', type=3)
return True
except (FileNotFoundError, AttributeError, IndexError, subprocess.CalledProcessError):
return False
@@ -74,7 +74,7 @@ def docker_installed(verbose=False):
stdout=subprocess.PIPE,
stderr=stderr,
check=True)
- color_print.debug('docker already installed')
+ color_print.debug('docker already installed', type=3)
return True
except (FileNotFoundError, AttributeError, IndexError, subprocess.CalledProcessError):
return False
diff --git a/utils/color_print.py b/utils/color_print.py
index 0ed79f2..1da6709 100644
--- a/utils/color_print.py
+++ b/utils/color_print.py
@@ -9,10 +9,33 @@
GREEN_STR = "\033[32m%s\033[0m"
YELLOW_STR = "\033[33mwarning: %s\033[0m"
+# Add some new color print
+BLUE_PROMPT = "\033[34m[\033[0m%s\033[34m]\033[0m"
+TYPE_PLUS_ = "\033[32m%s\033[0m"
+TYPE_RMVS_ = "\033[31m%s\033[0m"
+TYPE_USED_ = "\033[33m%s\033[0m"
+TYPE_IMPR_ = "\033[95m%s\033[0m"
-def debug(message, mode=0):
+
+# Add some prompts related the info
+def debug(message, mode=0, type=0):
if mode == 0:
- print(GREEN_STR % message)
+ if type == 0:
+ # TYPE:0 default mode without any prompt message
+ print(GREEN_STR % message)
+ elif type == 1:
+ # TYPE:1 with prompt message +
+ # Prompt: successfully installed
+ print(BLUE_PROMPT % (TYPE_PLUS_ % '+') + GREEN_STR % message)
+ elif type == 2:
+ # TYPE:2 with prompt message -
+ # Prompt: successfully uninstalled/remove
+ print(BLUE_PROMPT % (TYPE_RMVS_ % '-') + GREEN_STR % message)
+ elif type == 3:
+ # TYPE:3 with prompt message *
+ # Prompt: message about already installed
+ # Prompt: going to install/remove
+ print(BLUE_PROMPT % (TYPE_USED_ % '*') + GREEN_STR % message)
elif mode == 1:
print(RED_STR % message)
elif mode == 2:
@@ -21,10 +44,13 @@ def debug(message, mode=0):
print(message)
return
-
-def debug_input(message, mode=0):
+# Add prompts related to important confirmations
+def debug_input(message, mode=0, type=0):
if mode == 0:
- res = input(GREEN_STR % message)
+ if type == 0:
+ res = input(GREEN_STR % message)
+ elif type == 1:
+ res = input(BLUE_PROMPT % (TYPE_IMPR_ % "!") + GREEN_STR % message)
elif mode == 1:
res = input(RED_STR % message)
elif mode == 2:
@@ -50,3 +76,4 @@ def warning(message):
if __name__ == '__main__':
debug('hello, world')
debug_input('ready to reboot system? (y/n) ')
+ debug_input('ready to reboot system? (y/n) ', type=1)