@@ -2809,18 +2809,6 @@ inline_index_update ()
2809
2809
{
2810
2810
update_index_action=" ${1} "
2811
2811
2812
- # Verify inline-index Hash
2813
- # inline_index_verify_hash || {
2814
- # error_msg "inline-index is corrupt"
2815
- # return 1
2816
- # }
2817
-
2818
- # backup old index
2819
- " ${EASYTLS_CP} " " ${EASYTLS_INLINE_INDEX} " " ${EASYTLS_INLINE_INDEX} .tmp" || {
2820
- error_msg " inline_index_update - backup old index"
2821
- return 1
2822
- }
2823
-
2824
2812
if [ " ${update_index_action} " = ' del' ] && [ -n " ${force_remove} " ]; then
2825
2813
update_index_action=' force-del'
2826
2814
fi
@@ -2860,64 +2848,31 @@ inline_index_update ()
2860
2848
2861
2849
easytls_verbose " ADD: ${new_record} "
2862
2850
2863
- # Write new record
2864
- " ${EASYTLS_PRINTF} " " %s\n" " ${new_record} " > " ${EASYTLS_TEMP_RECORD} " || {
2865
- error_msg " inline_index_update - add: Write new record"
2866
- return 1
2867
- }
2868
-
2869
- # copy old index to temp-list
2870
- " ${EASYTLS_CP} " " ${EASYTLS_INLINE_INDEX} " " ${EASYTLS_TEMP_LIST} " || {
2871
- error_msg " inline_index_update - add: copy old index"
2851
+ # universal_update
2852
+ if universal_update add " ${EASYTLS_INLINE_INDEX} " " ${new_record} " ; then
2853
+ : # ok
2854
+ update_master_hash=1
2855
+ return 0
2856
+ else
2857
+ error_msg " inline_index_update - universal_update - add"
2872
2858
return 1
2873
- }
2874
-
2875
- # move old index
2876
- " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} " \
2877
- " ${EASYTLS_INLINE_INDEX} -deleted" || {
2878
- error_msg " inline_index_update - add: move old index"
2879
- return 1
2880
- }
2881
-
2882
- # Append temp record to temp-list and write new index
2883
- " ${EASYTLS_CAT} " " ${EASYTLS_TEMP_LIST} " " ${EASYTLS_TEMP_RECORD} " > \
2884
- " ${EASYTLS_INLINE_INDEX} " || {
2885
- error_msg " inline_index_update - add: write new index"
2886
- return 1
2887
- }
2859
+ fi
2888
2860
;;
2889
2861
del)
2890
2862
# Note: Inline HASH is unique, regardless of --sub-key-name
2891
2863
# Identify old record
2892
2864
old_record=" ${verified_inline_hash} [[:blank:]]${inline_serial} [[:blank:]]"
2893
2865
2894
- # Find old record
2895
- " ${EASYTLS_GREP} " -q " ^${old_record} " " ${EASYTLS_INLINE_INDEX} " || {
2896
- error_msg " inline_index_update del: find: ${old_record} "
2897
- return 1
2898
- }
2899
-
2900
2866
easytls_verbose " DEL: ${old_record} "
2901
2867
2902
- # backup old index
2903
- " ${EASYTLS_CP} " " ${EASYTLS_INLINE_INDEX} " \
2904
- " ${EASYTLS_INLINE_INDEX} -deleted" || {
2905
- error_msg " inline_index_update - del: backup old index"
2906
- return 1
2907
- }
2908
-
2909
- # Remove old record
2910
- " ${EASYTLS_SED} " -i -e " /^${old_record} .*$/d" \
2911
- " ${EASYTLS_INLINE_INDEX} " || {
2912
- error_msg " inline_index_update del: Remove old record"
2913
- return 1
2914
- }
2915
-
2916
- # Remove backup old index
2917
- " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} -deleted" || {
2918
- error_msg " inline_index_update - del: Remove backup old index"
2868
+ if universal_update del " ${EASYTLS_INLINE_INDEX} " " ${old_record} " ; then
2869
+ : # ok
2870
+ update_master_hash=1
2871
+ return 0
2872
+ else
2873
+ error_msg " inline_index_update - universal_update - del"
2919
2874
return 1
2920
- }
2875
+ fi
2921
2876
;;
2922
2877
force-del)
2923
2878
# Build old record without inline file HASH, with --sub-key-name
@@ -2926,14 +2881,14 @@ inline_index_update ()
2926
2881
old_record=" ${old_record} [[:blank:]]${name} "
2927
2882
old_record=" ${old_record} [[:blank:]]${TLSKEY_SUBNAME} "
2928
2883
2884
+ easytls_verbose " DEL: ${old_record} "
2885
+
2929
2886
# Find old record
2930
2887
" ${EASYTLS_GREP} " -q " ^${old_record} " " ${EASYTLS_INLINE_INDEX} " || {
2931
2888
error_msg " inline_index_update force-del: Find ${old_record} "
2932
2889
return 1
2933
2890
}
2934
2891
2935
- easytls_verbose " DEL: ${old_record} "
2936
-
2937
2892
# Remove old record
2938
2893
" ${EASYTLS_SED} " -i -e " /^${old_record} .*$/d" \
2939
2894
" ${EASYTLS_INLINE_INDEX} " || {
@@ -2947,16 +2902,6 @@ inline_index_update ()
2947
2902
;;
2948
2903
esac
2949
2904
2950
- # Remove temp files
2951
- " ${EASYTLS_RM} " -f " ${EASYTLS_TEMP_LIST} " " ${EASYTLS_TEMP_RECORD} " \
2952
- " ${EASYTLS_INLINE_INDEX} .tmp"
2953
-
2954
- # Keep a hash of the inline-index
2955
- # inline_index_save_hash || {
2956
- # error_msg "Failed to update inline-index hash"
2957
- # return 1
2958
- # }
2959
-
2960
2905
easytls_verbose " Inline Index Update complete!"
2961
2906
update_master_hash=1
2962
2907
} # => inline_index_update ()
@@ -3359,7 +3304,7 @@ remove_metadata ()
3359
3304
[ -f " ${inline_file} " ] || missing_file " ${inline_file} "
3360
3305
3361
3306
tlskey_serial=" $( inline_tlskey_serial) "
3362
- if " ${EASYTLS_GREP} " " UV_TLSKEY_SERIAL ${tlskey_serial} " " ${inline_file} "
3307
+ if " ${EASYTLS_GREP} " -q " UV_TLSKEY_SERIAL ${tlskey_serial} " " ${inline_file} "
3363
3308
then
3364
3309
: # OK
3365
3310
else
@@ -3384,23 +3329,6 @@ remove_metadata ()
3384
3329
if inline_index_update del; then
3385
3330
: # OK
3386
3331
else
3387
- # Restore original inline-index
3388
- if [ -f " ${EASYTLS_INLINE_INDEX} -deleted" ]; then
3389
- " ${EASYTLS_RM} " -f " ${EASYTLS_INLINE_INDEX} "
3390
- " ${EASYTLS_MV} " " ${EASYTLS_INLINE_INDEX} -deleted" \
3391
- " ${EASYTLS_INLINE_INDEX} " || \
3392
- die " remove_inline - Restore original inline-index"
3393
- fi
3394
-
3395
- # Undo move
3396
- if [ -z " ${force_remove} " ]; then
3397
- " ${EASYTLS_MV} " " ${inline_file} -deleted" " ${inline_file} " || \
3398
- die " Failed to restore: ${inline_file} "
3399
- else
3400
- " ${EASYTLS_MV} " " ${inline_file} -badhash" " ${inline_file} " || \
3401
- die " Failed to restore: ${inline_file} "
3402
- fi
3403
- # Always die
3404
3332
die " Failed to update inline-index"
3405
3333
fi
3406
3334
@@ -3487,99 +3415,30 @@ tlskey_index_update ()
3487
3415
update_index_action=" ${1} "
3488
3416
3489
3417
# Verify tlskey_serial
3490
- [ -n " ${tlskey_serial} " ] || return 1
3491
-
3492
- # Verify tlskey-index Hash
3493
- # tlskey_index_verify_hash || {
3494
- # error_msg "tlskey-index is corrupt"
3495
- # return 1
3496
- # }
3497
-
3498
- # backup old index
3499
- " ${EASYTLS_CP} " " ${EASYTLS_TLSKEY_INDEX} " " ${EASYTLS_TLSKEY_INDEX} .tmp" || {
3500
- error_msg " tlskey_index_update - backup old index"
3501
- return 1
3502
- }
3418
+ [ -n " ${tlskey_serial} " ] || die " tlskey_index_update - tlskey_serial"
3503
3419
3504
3420
# Update
3505
3421
case " ${update_index_action} " in
3506
3422
add)
3507
- # Create new record
3508
3423
new_record=" ${tlskey_serial} ${cert_serial} ${cli_name} ${TLSKEY_SUBNAME} "
3509
-
3510
- # Verify new record does not exist
3511
- if " ${EASYTLS_GREP} " -q " ^${new_record} \$ " " ${EASYTLS_TLSKEY_INDEX} "
3512
- then
3513
- error_msg " tlskey_index_update - add: Cannot add duplicate record"
3424
+ if universal_update add " ${EASYTLS_TLSKEY_INDEX} " " ${new_record} " ; then
3425
+ : # ok
3426
+ else
3514
3427
return 1
3515
3428
fi
3516
-
3517
- easytls_verbose " ADD: ${new_record} "
3518
-
3519
- # Write new record
3520
- " ${EASYTLS_PRINTF} " ' %s\n' " ${new_record} " > " ${EASYTLS_TEMP_RECORD} " || {
3521
- error_msg " tlskey_index_update - add: Failed to create temp record"
3522
- return 1
3523
- }
3524
-
3525
- # Append temp record to TLS key index
3526
- " ${EASYTLS_CP} " " ${EASYTLS_TLSKEY_INDEX} " " ${EASYTLS_TEMP_LIST} "
3527
- " ${EASYTLS_CAT} " " ${EASYTLS_TEMP_LIST} " " ${EASYTLS_TEMP_RECORD} " > \
3528
- " ${EASYTLS_TLSKEY_INDEX} "
3529
-
3530
- # Verify new record does exist
3531
- " ${EASYTLS_GREP} " -q " ^${new_record} \$ " " ${EASYTLS_TLSKEY_INDEX} " || {
3532
- # Restore original TLS key index
3533
- " ${EASYTLS_CP} " " ${EASYTLS_TEMP_LIST} " " ${EASYTLS_TLSKEY_INDEX} "
3534
- error_msg " tlskey_index_update - add: failed to add record"
3535
- return 1
3536
- }
3537
3429
;;
3538
3430
del)
3539
- # Note:
3540
- # Client tlskey_serial is unique, regardless of --sub-key-name
3541
- # Server tlskey_serial is always 40 or 64 zeros
3542
- # Identify old record
3543
3431
old_record=" ${tlskey_serial} [[:blank:]]${cert_serial} [[:blank:]].*"
3544
-
3545
- # Find old record
3546
- " ${EASYTLS_GREP} " -q " ^${old_record} \$ " " ${EASYTLS_TLSKEY_INDEX} " || {
3547
- error_msg " tlskey_index_update - del: Failed to find old record"
3548
- return 1
3549
- }
3550
-
3551
- easytls_verbose " DEL: ${old_record} "
3552
-
3553
- # Remove old record
3554
- " ${EASYTLS_SED} " -i \
3555
- -e " /^${old_record} \$ /d" " ${EASYTLS_TLSKEY_INDEX} " || {
3556
- error_msg " tlskey_index_update - del: Failed write"
3557
- return 1
3558
- }
3559
-
3560
- # Verify old record does not exist
3561
- if " ${EASYTLS_GREP} " -q " ^${old_record} \$ " " ${EASYTLS_TLSKEY_INDEX} "
3562
- then
3563
- error_msg " tlskey_index_update - del: Failed to delete old record"
3432
+ if universal_update del " ${EASYTLS_TLSKEY_INDEX} " " ${old_record} " ; then
3433
+ : # ok
3434
+ else
3564
3435
return 1
3565
3436
fi
3566
3437
;;
3567
- * )
3568
- error_msg " Unknown index action: ${update_index_action} "
3438
+ * ) error_msg " Unknown index action: ${update_index_action} "
3569
3439
return 1
3570
- ;;
3571
3440
esac
3572
3441
3573
- # Remove temp files
3574
- " ${EASYTLS_RM} " -f " ${EASYTLS_TEMP_LIST} " " ${EASYTLS_TEMP_RECORD} " \
3575
- " ${EASYTLS_TLSKEY_INDEX} .tmp"
3576
-
3577
- # Keep a hash of the tlskey-index
3578
- # tlskey_index_save_hash || {
3579
- # error_msg "Failed to update tlskey-index hash"
3580
- # return 1
3581
- # }
3582
-
3583
3442
easytls_verbose " tlskey-index Update complete!"
3584
3443
update_master_hash=1
3585
3444
} # => tlskey_index_update ()
@@ -6497,6 +6356,78 @@ save_id ()
6497
6356
6498
6357
6499
6358
6359
+ # ###########################################################################
6360
+ #
6361
+ # TEST Section
6362
+ #
6363
+
6364
+ # universal update config/index/list
6365
+ universal_update ()
6366
+ {
6367
+ [ " $# " -eq 3 ] || return 1
6368
+
6369
+ action=" ${1} "
6370
+ target=" ${2} "
6371
+ record=" ${3} "
6372
+
6373
+ # Valid target
6374
+ [ -f " ${target} " ] || missing_file " universal_update - ${target} "
6375
+ [ ! -f " ${EASYTLS_TEMP_LIST} " ] || " ${EASYTLS_RM} " -f " ${EASYTLS_TEMP_LIST} "
6376
+ " ${EASYTLS_CP} " " ${target} " " ${EASYTLS_TEMP_LIST} " || {
6377
+ error_msg " universal_update - copy target to temp-list"
6378
+ return 1
6379
+ }
6380
+
6381
+ unset -v universal_update_ok
6382
+
6383
+ # Action
6384
+ case " ${action} " in
6385
+ add)
6386
+ if " ${EASYTLS_GREP} " -q " ${record} " " ${EASYTLS_TEMP_LIST} " ; then
6387
+ error_msg " universal_update - add - record exists"
6388
+ else
6389
+ # Add record
6390
+ if { " ${EASYTLS_CAT} " " ${EASYTLS_TEMP_LIST} "
6391
+ " ${EASYTLS_PRINTF} " ' %s\n' " ${record} "
6392
+ } > " ${EASYTLS_TEMP_UPDATE} "
6393
+ then
6394
+ # Success
6395
+ universal_update_ok=1
6396
+ else
6397
+ error_msg " universal_update - Add record"
6398
+ fi
6399
+ fi
6400
+ ;;
6401
+ del)
6402
+ if " ${EASYTLS_GREP} " -q " ^${record} " " ${EASYTLS_TEMP_LIST} " ; then
6403
+ # Delete record
6404
+ if " ${EASYTLS_SED} " -e " /^${record} /d" \
6405
+ " ${EASYTLS_TEMP_LIST} " > " ${EASYTLS_TEMP_UPDATE} "
6406
+ then
6407
+ # Success
6408
+ universal_update_ok=1
6409
+ else
6410
+ error_msg " universal_update - Delete record"
6411
+ fi
6412
+ else
6413
+ error_msg " universal_update - del - record does not exist"
6414
+ fi
6415
+ ;;
6416
+ * ) die " universal_update - unknown action - ${action} "
6417
+ esac
6418
+
6419
+ if [ -n " ${universal_update_ok} " ]; then
6420
+ # Move temp file over target
6421
+ " ${EASYTLS_RM} " -f " ${target} "
6422
+ " ${EASYTLS_MV} " " ${EASYTLS_TEMP_UPDATE} " " ${target} " || \
6423
+ die " universal_update - Move temp file over target"
6424
+ else
6425
+ return 1
6426
+ fi
6427
+ } # => universal_update ()
6428
+
6429
+
6430
+
6500
6431
# ###########################################################################
6501
6432
#
6502
6433
# DISABLED-LIST Section
@@ -9522,6 +9453,7 @@ shellcheck_ignore_2154 ()
9522
9453
EASYTLS_DISABLED_LIST=
9523
9454
EASYTLS_DISABLED_HASH=
9524
9455
9456
+ EASYTLS_TEMP_UPDATE=
9525
9457
EASYTLS_TEMP_LIST=
9526
9458
EASYTLS_TEMP_RECORD=
9527
9459
EASYTLS_TEMP_LOCK=
@@ -9767,6 +9699,7 @@ vars_setup()
9767
9699
set_var EASYTLS_DISABLED_HASH \
9768
9700
" ${EASYTLS_DATA_DIR} /easytls-disabled-list.hash"
9769
9701
9702
+ set_var EASYTLS_TEMP_UPDATE " ${EASYTLS_DATA_DIR} /easytls-temp.update"
9770
9703
set_var EASYTLS_TEMP_LIST " ${EASYTLS_DATA_DIR} /easytls-temp.list"
9771
9704
set_var EASYTLS_TEMP_RECORD " ${EASYTLS_DATA_DIR} /easytls-temp.record"
9772
9705
set_var EASYTLS_TEMP_LOCK " ${EASYTLS_DATA_DIR} /easytls-temp.lock.d"
0 commit comments