|
| 1 | +#!/bin/bash |
| 2 | +for file in $(cat $1) |
| 3 | + # Usage: bash docker_to_k8s.sh file |
| 4 | + |
| 5 | + # U can use command <find ./ -name "*.yml"> to get it. File content like this: |
| 6 | + # ./drupal/CVE-2019-6341/docker-compose.yml |
| 7 | + # ./drupal/CVE-2014-3704/docker-compose.yml |
| 8 | + # ./drupal/CVE-2018-7600/docker-compose.yml |
| 9 | + # ./apereo-cas/4.1-rce/docker-compose.yml |
| 10 | + |
| 11 | + # Problem: some compose files which include "mysql" can't use `sed` to rename it. |
| 12 | +do |
| 13 | + file_backup=$file".backup" |
| 14 | + cp $file $file_backup |
| 15 | + |
| 16 | + #Parsing file path |
| 17 | + pre_path="vul_app" |
| 18 | + app=`echo $file_backup |awk -F '/' '{print $2}' | tr '[A-Z]' '[a-z]' |sed 's/\./'-'/g'` |
| 19 | + app_path=$pre_path"/"$app |
| 20 | + # echo $app_path |
| 21 | + cve=`echo $file_backup |awk -F '/' '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/\./'-'/g'` |
| 22 | + cve2=`echo $file_backup |awk -F '/' '{print $3}' | sed 's/\./'-'/g'` |
| 23 | + cve3=`echo $file_backup |awk -F '/' '{print $3}'` |
| 24 | + cve_path=$app_path"/"$cve2 |
| 25 | + # echo $cve_path |
| 26 | + |
| 27 | + #Create directory |
| 28 | + if [ ! -d $pre_path ];then |
| 29 | + mkdir $pre_path |
| 30 | + fi |
| 31 | + if [ ! -d $app_path ];then |
| 32 | + mkdir $app_path |
| 33 | + fi |
| 34 | + if [ ! -d $cve_path ];then |
| 35 | + mkdir $cve_path |
| 36 | + fi |
| 37 | + |
| 38 | + #Convert docker-compose.yml to K8s-yaml |
| 39 | + srv_name=(web php) |
| 40 | + for k in ${srv_name[*]} |
| 41 | + do |
| 42 | + if [[ `grep $k $file_backup` ]];then |
| 43 | + sed -i "s/$k/$cve"-"$k/g" $file_backup |
| 44 | + fi |
| 45 | + done |
| 46 | + |
| 47 | + outpath=$cve_path"/" |
| 48 | + output_file=$cve_path"/"$cve".yaml" |
| 49 | + home_path=`pwd`"/" |
| 50 | + kompose convert -f $file_backup -o $output_file --volumes hostPath |
| 51 | + sed -i "s!$home_path!!g" $output_file |
| 52 | + |
| 53 | + # Create desc.yaml |
| 54 | + touch $outpath/desc.yaml |
| 55 | + str="cve" |
| 56 | + if [[ $cve == *$str* ]];then |
| 57 | + name=$cve |
| 58 | + else |
| 59 | + name=`echo $app"-"$cve| sed 's/\./'-'/g'` |
| 60 | + fi |
| 61 | + echo "name: "$name >> $outpath/desc.yaml |
| 62 | + echo "class: "$app >> $outpath/desc.yaml |
| 63 | + echo "type: rce" >> $outpath/desc.yaml |
| 64 | + key_path='volumes:' |
| 65 | + if [[ `grep $key_path $file_backup` ]];then |
| 66 | + echo "hostPath: true" >> $outpath/desc.yaml |
| 67 | + fi |
| 68 | + echo "dependencies:" >> $outpath/desc.yaml |
| 69 | + echo " yamls:" >> $outpath/desc.yaml |
| 70 | + for d in $(ls $outpath*.yaml);do |
| 71 | + list=`echo $d |awk -F '/' '{print $4}'` |
| 72 | + if [ $list != "desc.yaml" ];then |
| 73 | + echo " - "$list >> $outpath/desc.yaml |
| 74 | + fi |
| 75 | + done |
| 76 | + echo "links:" >> $outpath/desc.yaml |
| 77 | + echo " - https://github.com/vulhub/vulhub/tree/master/"$app"/"$cve3 >> $outpath/desc.yaml |
| 78 | + |
| 79 | + rm -f $file_backup |
| 80 | + |
| 81 | +done |
0 commit comments