@@ -2829,12 +2829,25 @@ inline_index_update ()
2829
2829
2830
2830
easytls_verbose " DEL: ${old_record} "
2831
2831
2832
+ # backup old index
2833
+ " ${EASYTLS_CP} " " ${EASYTLS_INLINE_INDEX} " \
2834
+ " ${EASYTLS_INLINE_INDEX} -deleted" || {
2835
+ error_msg " inline_index_update - del: backup old index"
2836
+ return 1
2837
+ }
2838
+
2832
2839
# Remove old record
2833
2840
" ${EASYTLS_SED} " -i -e " /^${old_record} .*$/d" \
2834
2841
" ${EASYTLS_INLINE_INDEX} " || {
2835
2842
error_msg " inline_index_update del: Remove old record"
2836
2843
return 1
2837
2844
}
2845
+
2846
+ # Remove backup old index
2847
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} -deleted" || {
2848
+ error_msg " inline_index_update - del: Remove backup old index"
2849
+ return 1
2850
+ }
2838
2851
;;
2839
2852
force-del)
2840
2853
# Build old record without inline file HASH, with --sub-key-name
@@ -3117,6 +3130,14 @@ remove_inline ()
3117
3130
die " Failed to remove: ${inline_file} "
3118
3131
fi
3119
3132
else
3133
+ # Restore original inline-index
3134
+ if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
3135
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
3136
+ " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
3137
+ " ${EASYTLS_INLINE_INDEX} " || \
3138
+ die " remove_inline - Restore original inline-index"
3139
+ fi
3140
+
3120
3141
# Undo move
3121
3142
if [ -z " ${force_remove} " ]; then
3122
3143
" ${EASYTLS_MV} " " ${inline_file} -deleteme" " ${inline_file} " || \
@@ -3207,6 +3228,14 @@ remove_group_inline ()
3207
3228
die " Failed to remove: ${inline_file} "
3208
3229
fi
3209
3230
else
3231
+ # Restore original inline-index
3232
+ if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
3233
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
3234
+ " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
3235
+ " ${EASYTLS_INLINE_INDEX} " || \
3236
+ die " remove_inline - Restore original inline-index"
3237
+ fi
3238
+
3210
3239
# Undo move
3211
3240
if [ -z " ${force_remove} " ]; then
3212
3241
" ${EASYTLS_MV} " " ${inline_file} -deleted" " ${inline_file} " || \
@@ -3272,7 +3301,29 @@ remove_metadata ()
3272
3301
# Remove client from inline index
3273
3302
known_inline_hash=" ${verified_inline_hash} "
3274
3303
inline_serial=" $( inline_index_ilhash_to_serial) "
3275
- inline_index_update del || die " Failed to update inline-index"
3304
+ if inline_index_update del; then
3305
+ : # OK
3306
+ else
3307
+ # Restore original inline-index
3308
+ if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
3309
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
3310
+ " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
3311
+ " ${EASYTLS_INLINE_INDEX} " || \
3312
+ die " remove_inline - Restore original inline-index"
3313
+ fi
3314
+
3315
+ # Undo move
3316
+ if [ -z " ${force_remove} " ]; then
3317
+ " ${EASYTLS_MV} " " ${inline_file} -deleted" " ${inline_file} " || \
3318
+ die " Failed to restore: ${inline_file} "
3319
+ else
3320
+ " ${EASYTLS_MV} " " ${inline_file} -badhash" " ${inline_file} " || \
3321
+ die " Failed to restore: ${inline_file} "
3322
+ fi
3323
+ # Always die
3324
+ die " Failed to update inline-index"
3325
+ fi
3326
+
3276
3327
# Reset inline_index_save_hash_block, to add this inline back to the index
3277
3328
unset -v inline_index_save_hash_block inline_index_verify_hash_block
3278
3329
@@ -3313,7 +3364,18 @@ remove_metadata ()
3313
3364
fi
3314
3365
3315
3366
# Add client to inline-index
3316
- inline_index_update add || die " Failed to update inline-index"
3367
+ if inline_index_update add; then
3368
+ : # OK
3369
+ else
3370
+ if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
3371
+ # Restore original inline-index
3372
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
3373
+ " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
3374
+ " ${EASYTLS_INLINE_INDEX} "
3375
+ die " Failed to update inline-index"
3376
+ fi
3377
+ fi
3378
+
3317
3379
[ -n " ${metadata_updated} " ] && notice " inline file updated"
3318
3380
easytls_verbose
3319
3381
} # => remove_metadata ()
@@ -4121,6 +4183,7 @@ inline_tls_crypt_v1 ()
4121
4183
fi
4122
4184
fi
4123
4185
4186
+ # share this client FP with server defined by -r=<serv-name> option
4124
4187
inline_share_fingerprint " ${name} " || die " Failed to share fingerprint"
4125
4188
4126
4189
notice " Inline TLS crypt file created: ${inline_file} "
@@ -4316,6 +4379,7 @@ inline_tls_crypt_v2 ()
4316
4379
fi
4317
4380
fi
4318
4381
4382
+ # share this client FP with server defined by -r=<serv-name> option
4319
4383
inline_share_fingerprint " ${name} " || die " Failed to share fingerprint"
4320
4384
4321
4385
notice " Inline TLS crypt v2 ${cert_purpose} file created: ${inline_file} "
@@ -4797,7 +4861,29 @@ inline_share_fingerprint ()
4797
4861
4798
4862
# Must unset the usage block
4799
4863
unset inline_index_save_hash_block
4800
- inline_index_update del || die " Failed to update inline-index"
4864
+ if inline_index_update del; then
4865
+ : # OK
4866
+ else
4867
+ # Restore original inline-index
4868
+ if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
4869
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
4870
+ " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
4871
+ " ${EASYTLS_INLINE_INDEX} " || \
4872
+ die " remove_inline - Restore original inline-index"
4873
+ fi
4874
+
4875
+ # Undo move
4876
+ if [ -z " ${force_remove} " ]; then
4877
+ " ${EASYTLS_MV} " " ${inline_file} -deleted" " ${inline_file} " || \
4878
+ die " Failed to restore: ${inline_file} "
4879
+ else
4880
+ " ${EASYTLS_MV} " " ${inline_file} -badhash" " ${inline_file} " || \
4881
+ die " Failed to restore: ${inline_file} "
4882
+ fi
4883
+ # Always die
4884
+ die " Failed to update inline-index"
4885
+ fi
4886
+
4801
4887
else
4802
4888
# die "Why is client inline hash missing from index ?"
4803
4889
# No-CA mode
@@ -4868,7 +4954,29 @@ inline_share_fingerprint ()
4868
4954
4869
4955
# Must unset the usage block
4870
4956
unset inline_index_save_hash_block
4871
- inline_index_update del || die " Failed to update inline-index"
4957
+ if inline_index_update del; then
4958
+ : # OK
4959
+ else
4960
+ # Restore original inline-index
4961
+ if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
4962
+ " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
4963
+ " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
4964
+ " ${EASYTLS_INLINE_INDEX} " || \
4965
+ die " remove_inline - Restore original inline-index"
4966
+ fi
4967
+
4968
+ # Undo move
4969
+ if [ -z " ${force_remove} " ]; then
4970
+ " ${EASYTLS_MV} " " ${inline_file} -deleted" " ${inline_file} " || \
4971
+ die " Failed to restore: ${inline_file} "
4972
+ else
4973
+ " ${EASYTLS_MV} " " ${inline_file} -badhash" " ${inline_file} " || \
4974
+ die " Failed to restore: ${inline_file} "
4975
+ fi
4976
+ # Always die
4977
+ die " Failed to update inline-index"
4978
+ fi
4979
+
4872
4980
else
4873
4981
# die "Why is server inline hash missing from index ?"
4874
4982
# No-CA mode
0 commit comments