Skip to content

Commit 7e31773

Browse files
authored
Merge pull request #39 from ListenerMoya/master
add the tool that convert compose-file to K8s-yaml
2 parents 5ea4c00 + e50d07f commit 7e31773

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

tools/docker_to_k8s.sh

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
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

Comments
 (0)