@@ -35,11 +35,11 @@ alias log_warn='logger "${WARN}"'
35
35
alias log_info=' logger "${INFO}"'
36
36
alias log_exit=' exit_error "${EXIT_MSG}"'
37
37
if ${VERBOSE} ; then
38
- alias log=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}"'
39
- alias log_info=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${INFO}"'
40
- alias log_warn=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${WARN}"'
38
+ alias log=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}"'
39
+ alias log_info=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${INFO}"'
40
+ alias log_warn=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${WARN}"'
41
41
alias log_error=' logger "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${ERROR}"'
42
- alias log_exit=' exit_error "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${EXIT_MSG}"'
42
+ alias log_exit=' exit_error "$(date "+%D %H:%m:%S")" "Func:${FUNCNAME:-main}" "Line:${LINENO:-null}" "${EXIT_MSG}"'
43
43
fi
44
44
45
45
logger () {
@@ -84,9 +84,45 @@ check_network() {
84
84
download_file (){
85
85
local url=${1}
86
86
local dest=${2}
87
- local http_code=$( curl --output /dev/null --silent --head -w " %{http_code}" ${url} )
87
+ local checksum_url=${3:- " " }
88
+ local checksum_file=${4:- " " }
89
+
88
90
log
89
- log " Downloading ${url} data to: ${DEST} "
91
+ log " Checking for ${dest} "
92
+
93
+ # Check if file exists locally and if we should verify checksum
94
+ if [[ -f " ${dest} " && -n " ${checksum_url} " && -n " ${checksum_file} " ]]; then
95
+ log " File exists locally. Checking remote checksum..."
96
+
97
+ # Download checksum file if it doesn't exist
98
+ if [[ ! -f " ${checksum_file} " ]]; then
99
+ log " Downloading checksum file: ${checksum_url} "
100
+ curl -s -L ${checksum_url} -o " ${checksum_file} " || exit_error " ${COLRED} Error${COLRESET} downloading checksum file ${checksum_url} "
101
+ fi
102
+
103
+ # Get the remote checksum
104
+ local remote_sha256=$( cat ${checksum_file} | awk {' print $1' })
105
+
106
+ # Calculate local file checksum
107
+ local local_sha256=$( sha256sum ${dest} | awk {' print $1' })
108
+
109
+ log " Local SHA256: ${local_sha256} "
110
+ log " Remote SHA256: ${remote_sha256} "
111
+
112
+ # If checksums match, skip download
113
+ if [[ " ${local_sha256} " == " ${remote_sha256} " ]]; then
114
+ log " ${COLGREEN} Checksum matches. Skipping download.${COLRESET} "
115
+ return 0
116
+ else
117
+ log " ${COLYELLOW} Checksum mismatch. Will download fresh copy.${COLRESET} "
118
+ fi
119
+ elif [[ -f " ${dest} " ]]; then
120
+ log " ${COLYELLOW} File exists but cannot verify checksum. Will download fresh copy.${COLRESET} "
121
+ fi
122
+
123
+ # Download the file
124
+ local http_code=$( curl --output /dev/null --silent --head -w " %{http_code}" ${url} )
125
+ log " Downloading ${url} data to: ${dest} "
90
126
if [[ " ${http_code} " && " ${http_code} " != " 200" ]]; then
91
127
exit_error " ${COLRED} Error${COLRESET} - ${url} doesn't exist"
92
128
fi
@@ -95,6 +131,13 @@ download_file(){
95
131
log " File Download size: ${converted_size} "
96
132
log " Retrieving: ${url} "
97
133
curl -L -# ${url} -o " ${dest} " || exit_error " ${COLRED} Error${COLRESET} downloading ${url} to ${dest} "
134
+
135
+ # If checksum URL was provided, download it (if not done already)
136
+ if [[ -n " ${checksum_url} " && -n " ${checksum_file} " && ! -f " ${checksum_file} " ]]; then
137
+ log " Downloading checksum file: ${checksum_url} "
138
+ curl -s -L ${checksum_url} -o " ${checksum_file} " || exit_error " ${COLRED} Error${COLRESET} downloading checksum file ${checksum_url} "
139
+ fi
140
+
98
141
return 0
99
142
}
100
143
@@ -117,7 +160,7 @@ verify_checksum(){
117
160
return 0
118
161
}
119
162
120
- log " -- seed-chainstate.sh --"
163
+ log " -- seed-chainstate.sh --"
121
164
log " Starting at $( date " +%D %H:%m:%S" ) "
122
165
log " Using files/methods from https://docs.hiro.so/hiro-archive"
123
166
log " checking for existence of ${SCRIPTPATH} /persistent-data/${NETWORK} "
@@ -154,12 +197,10 @@ if check_network "${PROFILE}"; then
154
197
${VERBOSE} && log " Continuing"
155
198
fi
156
199
157
- download_file ${PGDUMP_URL} ${PGDUMP_DEST}
158
- download_file ${PGDUMP_URL_SHA256} ${PGDUMP_DEST_SHA256}
200
+ download_file ${PGDUMP_URL} ${PGDUMP_DEST} ${PGDUMP_URL_SHA256} ${PGDUMP_DEST_SHA256}
159
201
verify_checksum ${PGDUMP_DEST} ${PGDUMP_DEST_SHA256}
160
202
161
- download_file ${CHAINDATA_URL} ${CHAINDATA_DEST}
162
- download_file ${CHAINDATA_URL_SHA256} ${CHAINDATA_DEST_SHA256}
203
+ download_file ${CHAINDATA_URL} ${CHAINDATA_DEST} ${CHAINDATA_URL_SHA256} ${CHAINDATA_DEST_SHA256}
163
204
verify_checksum ${CHAINDATA_DEST} ${CHAINDATA_DEST_SHA256}
164
205
165
206
171
212
log " Chowning data to ${CURRENT_USER} "
172
213
chown -R ${CURRENT_USER} " ${SCRIPTPATH} /persistent-data/${NETWORK} " || exit_error " ${COLRED} Error${COLRESET} setting file permissions"
173
214
174
- log
215
+ log
175
216
log " Importing postgres data"
176
217
log " Starting postgres container: ${CONTAINER} "
177
218
0 commit comments