diff --git a/opkg.sh b/opkg.sh index e3e7b7c..19d60bf 100755 --- a/opkg.sh +++ b/opkg.sh @@ -1,20 +1,75 @@ #!/bin/bash +# set -x + +compute_md5 () { + exec {fd}< <(md5sum "$1") # open fd readable for P.S. + cs_pid=$! # remember pid of P.S. + md5="" + while read t <&$fd; do + if ! [ -z "$t" ]; then + t=($t) # md5sum returns two values: + # the hash plus the filename + md5="${md5}$t" + fi + done + + exec {fd}>&- # close fd (i.e. process substitution) + wait $cs_pid # wait for the subshell to finish + echo $md5 +} + +md5_for_ini_files() { + ini_directory="$1" + ini_files=("ISMASMgr.ini" "sysconfig.ini" "SystemControl.ini") + + local data="\"ini\": {"$'\n' + + for f in "${ini_files[@]}"; do + ini_file=${ini_directory}/$f + md5=`compute_md5 $ini_file` + data+="\"$ini_file\":\"$md5\"," + done + + if [[ "$data" =~ ^.*,$ ]]; then + data=${data%?} + fi + + data+="}," + echo $data +} + +md5_for_conf_files() { + conf_directory="$1" + conf_files=("emp.conf" "printer.conf" "device.conf") + + local data="\"conf\": {"$'\n' + + for f in "${conf_files[@]}"; do + conf_file=${conf_directory}/$f + md5=`compute_md5 $conf_file` + data+="\"$conf_file\":\"$md5\"," + done + + if [[ "$data" =~ ^.*,$ ]]; then + data=${data%?} + fi + + data+="}," + echo $data +} + write_config() { local path="$1" - local data="{ - \"ini\" : { - \"/opt/app/sysconfig/ISMASMgr.ini\" : \"d41d8cd98f00b204e9800998ecf8427e\", - \"/opt/app/sysconfig/sysconfig.ini\" : \"d41d8cd98f00b204e9800998ecf8427e\", - \"/opt/app/sysconfig/SystemControl.ini\" : \"d41d8cd98f00b204e9800998ecf8427e\" - }, - \"conf\" : { - \"szeged/1/1/etc/psa_config/emp.conf\" : \"d41d8cd98f00b204e9800998ecf8427e\", - \"szeged/1/1/etc/psa_config/printer.conf\": \"d41d8cd98f00b204e9800998ecf8427e\", - \"szeged/1/1/etc/psa_config/device.conf\" : \"d41d8cd98f00b204e9800998ecf8427e\" - }, - \"opkg\" : {" + if [ "${path: -1}" == "/" ]; then # remove trailing '/' + path=${path%?} + fi + local data="{ "$'\n' + data+=`md5_for_ini_files "$path/opt/app/sysconfig"` + data+=`md5_for_conf_files "$path/etc/psa_config"` + data+=" + \"opkg\" : {" local cnt=0 for package_name in $(opkg list-installed); # list names of installed packages do @@ -79,6 +134,8 @@ write_config() { $md5sum $filename $installed_time" + + # break done if [[ "$data" =~ ^.*,$ ]]; then @@ -88,10 +145,11 @@ write_config() { data="$data } }" - echo "$data" > "$path/test.txt" + echo "$data" > "${path}/$2" + # echo $(cat "/tmp/test.txt" | jq -C --indent 4 '.') > /tmp/test2.txt } -ddd={ date -d @10000000 +'%Y'; } -echo $ddd +write_config "/home/root/szeged/customer_281/szeged/1/1/" "test.txt" + + -# write_config "/tmp/customer_281/szeged" "test.txt"