Dehydrated updates for Devuan.

This commit is contained in:
Darren 'Tadgy' Austin 2026-03-19 20:20:05 +00:00
commit 67a9bdd9eb
8 changed files with 455 additions and 361 deletions

View file

@ -11,344 +11,348 @@ LmdpdGhvb2tz 1773074781.635958529 1771512801.560006128 root:root 0755 - -
LmdpdGhvb2tzL3ByZS1jb21taXQ= 1757519106.000000000 1757519106.000000000 root:root 0755 - - LmdpdGhvb2tzL3ByZS1jb21taXQ= 1757519106.000000000 1757519106.000000000 root:root 0755 - -
LmdpdGlnbm9yZQ== 1762025173.020942279 1757593248.000000000 root:root 0644 - - LmdpdGlnbm9yZQ== 1762025173.020942279 1757593248.000000000 root:root 0644 - -
LmdpdG1vZHVsZXM= 1757607701.000000000 1757607701.000000000 root:root 0644 - - LmdpdG1vZHVsZXM= 1757607701.000000000 1757607701.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjLy5naXRpZ25vcmU= 1773946669.402887347 1757611781.000000000 root:root 0644 - - ZXRjLy5naXRpZ25vcmU= 1773946669.402887347 1757611781.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
ZXRjL2FwYWNoZTIvLmdpdGlnbm9yZQ== 1766069108.043264156 1757775932.000000000 root:root 0644 - - ZXRjL2FwYWNoZTIvLmdpdGlnbm9yZQ== 1766069108.043264156 1757775932.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
ZXRjL2FwYWNoZTIvYXBhY2hlMi5jb25m 1773343425.497690175 1757785514.000000000 root:root 0644 - - ZXRjL2FwYWNoZTIvYXBhY2hlMi5jb25m 1773343425.497690175 1757785514.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGhuX2NvcmUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGhuX2NvcmUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGhuX2ZpbGUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGhuX2ZpbGUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGh6X2NvcmUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGh6X2NvcmUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGh6X3VzZXIubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2F1dGh6X3VzZXIubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2NnaWQubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2NnaWQubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2RlZmxhdGUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2RlZmxhdGUubG9hZA== 1771512801.564006063 1771512801.564006063 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2ZpbHRlci5sb2Fk 1771512801.568005995 1771512801.568005995 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2ZpbHRlci5sb2Fk 1771512801.568005995 1771512801.568005995 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2h0dHAyLmxvYWQ= 1771512801.568005995 1771512801.568005995 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2h0dHAyLmxvYWQ= 1771512801.568005995 1771512801.568005995 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2luY2x1ZGUubG9hZA== 1771512801.568005995 1771512801.568005995 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL2luY2x1ZGUubG9hZA== 1771512801.568005995 1771512801.568005995 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Byb3h5LmxvYWQ= 1771512801.568005995 1771512801.568005995 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Byb3h5LmxvYWQ= 1771512801.568005995 1771512801.568005995 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Byb3h5X2ZjZ2kubG9hZA== 1771512801.568005995 1771512801.568005995 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Byb3h5X2ZjZ2kubG9hZA== 1771512801.568005995 1771512801.568005995 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Byb3h5X2h0dHAubG9hZA== 1773512305.071354981 1773512305.071354981 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Byb3h5X2h0dHAubG9hZA== 1773512305.071354981 1773512305.071354981 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Jld3JpdGUubG9hZA== 1773519967.649760800 1773519967.649760800 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3Jld3JpdGUubG9hZA== 1773519967.649760800 1773519967.649760800 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3NvY2FjaGVfc2htY2IubG9hZA== 1773343134.250327036 1773343134.250327036 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3NvY2FjaGVfc2htY2IubG9hZA== 1773343134.250327036 1773343134.250327036 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
bW9kcy1lbmFibGVk - - bW9kcy1lbmFibGVk - -
ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3NzbC5sb2Fk 1773343014.364235719 1773343014.364235719 root:root 0777 - - ZXRjL2FwYWNoZTIvbW9kcy1lbmFibGVkL3NzbC5sb2Fk 1773343014.364235719 1773343014.364235719 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
c2l0ZXMtYXZhaWxhYmxl - - c2l0ZXMtYXZhaWxhYmxl - -
ZXRjL2FwYWNoZTIvc2l0ZXMtYXZhaWxhYmxlLy5naXRpZ25vcmU= 1766069274.068541443 1766069263.648712326 root:root 0644 - - ZXRjL2FwYWNoZTIvc2l0ZXMtYXZhaWxhYmxlLy5naXRpZ25vcmU= 1766069274.068541443 1766069263.648712326 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
c2l0ZXMtYXZhaWxhYmxl - - c2l0ZXMtYXZhaWxhYmxl - -
ZXRjL2FwYWNoZTIvc2l0ZXMtYXZhaWxhYmxlL2NvcmUuc2xhY2t3YXJlLnVrLm5ldC5jb25m 1773519943.102151242 1757785113.000000000 root:root 0644 - - ZXRjL2FwYWNoZTIvc2l0ZXMtYXZhaWxhYmxlL2NvcmUuc2xhY2t3YXJlLnVrLm5ldC5jb25m 1773519943.102151242 1757785113.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
c2l0ZXMtZW5hYmxlZA== - - c2l0ZXMtZW5hYmxlZA== - -
ZXRjL2FwYWNoZTIvc2l0ZXMtZW5hYmxlZC8wMC1jb3JlLnNsYWNrd2FyZS51ay5uZXQuY29uZg== 1773340506.404142422 1773340506.404142422 root:root 0777 - - ZXRjL2FwYWNoZTIvc2l0ZXMtZW5hYmxlZC8wMC1jb3JlLnNsYWNrd2FyZS51ay5uZXQuY29uZg== 1773340506.404142422 1773340506.404142422 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXB0 - - YXB0 - -
ZXRjL2FwdC8uZ2l0aWdub3Jl 1762532662.236312315 1762532566.409854495 root:root 0644 - - ZXRjL2FwdC8uZ2l0aWdub3Jl 1762532662.236312315 1762532566.409854495 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXB0 - - YXB0 - -
cHJlZmVyZW5jZXMuZA== - - cHJlZmVyZW5jZXMuZA== - -
ZXRjL2FwdC9wcmVmZXJlbmNlcy5kL3N1cnk= 1762021809.456432672 1762021809.456432672 root:root 0644 - - ZXRjL2FwdC9wcmVmZXJlbmNlcy5kL3N1cnk= 1762021809.456432672 1762021809.456432672 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXB0 - - YXB0 - -
c291cmNlcy5saXN0LmQ= - - c291cmNlcy5saXN0LmQ= - -
ZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9mZC5saXN0 1762021706.378133066 1762021706.374133133 root:root 0644 - - ZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9mZC5saXN0 1762021706.378133066 1762021706.374133133 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
YXB0 - - YXB0 - -
c291cmNlcy5saXN0LmQ= - - c291cmNlcy5saXN0LmQ= - -
ZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9zdXJ5Lmxpc3Q= 1762021706.378133066 1762021706.378133066 root:root 0644 - - ZXRjL2FwdC9zb3VyY2VzLmxpc3QuZC9zdXJ5Lmxpc3Q= 1762021706.378133066 1762021706.378133066 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi4xNW1pbg== - - Y3Jvbi4xNW1pbg== - -
ZXRjL2Nyb24uMTVtaW4vLmdpdGlnbm9yZQ== 1762535468.567176697 1762535289.358058790 root:root 0644 - - ZXRjL2Nyb24uMTVtaW4vLmdpdGlnbm9yZQ== 1762535468.567176697 1762535289.358058790 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5k - - Y3Jvbi5k - -
ZXRjL2Nyb24uZC8uZ2l0aWdub3Jl 1762535453.203423781 1762535289.358058790 root:root 0644 - - ZXRjL2Nyb24uZC8uZ2l0aWdub3Jl 1762535453.203423781 1762535289.358058790 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5kYWlseQ== - - Y3Jvbi5kYWlseQ== - -
ZXRjL2Nyb24uZGFpbHkvLmdpdGlnbm9yZQ== 1762538383.748288196 1762535499.146684944 root:root 0644 - - ZXRjL2Nyb24uZGFpbHkvLmdpdGlnbm9yZQ== 1762538383.748288196 1762535499.146684944 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5kYWlseQ== - - Y3Jvbi5kYWlseQ== - -
ZXRjL2Nyb24uZGFpbHkvMC1yb3RhdGUtbG9ncy1zeW1saW5rcw== 1773074830.431179720 1773074830.431179720 root:root 0777 - - ZXRjL2Nyb24uZGFpbHkvMC1yb3RhdGUtbG9ncy1zeW1saW5rcw== 1773074830.431179720 1773074830.431179720 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5kYWlseQ== - - Y3Jvbi5kYWlseQ== - -
ZXRjL2Nyb24uZGFpbHkvMTAtZGVoeWRyYXRlZA== 1773074830.431179720 1773074830.431179720 root:root 0777 - - ZXRjL2Nyb24uZGFpbHkvMTAtZGVoeWRyYXRlZA== 1773074830.431179720 1773074830.431179720 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5kYWlseQ== - - Y3Jvbi5kYWlseQ== - -
ZXRjL2Nyb24uZGFpbHkvNS11cGRhdGUtcGFja2FnZXMtbGlzdA== 1773074830.431179720 1773074830.431179720 root:root 0777 - - ZXRjL2Nyb24uZGFpbHkvNS11cGRhdGUtcGFja2FnZXMtbGlzdA== 1773074830.431179720 1773074830.431179720 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5kYWlseQ== - - Y3Jvbi5kYWlseQ== - -
ZXRjL2Nyb24uZGFpbHkvNy13YXJuLWdpdC1zdGF0dXM= 1773074830.431179720 1773074830.431179720 root:root 0777 - - ZXRjL2Nyb24uZGFpbHkvNy13YXJuLWdpdC1zdGF0dXM= 1773074830.431179720 1773074830.431179720 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5ob3VybHk= - - Y3Jvbi5ob3VybHk= - -
ZXRjL2Nyb24uaG91cmx5Ly5naXRpZ25vcmU= 1762535518.534373147 1762535518.534373147 root:root 0644 - - ZXRjL2Nyb24uaG91cmx5Ly5naXRpZ25vcmU= 1762535518.534373147 1762535518.534373147 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi5tb250aGx5 - - Y3Jvbi5tb250aGx5 - -
ZXRjL2Nyb24ubW9udGhseS8uZ2l0aWdub3Jl 1762535548.045898541 1762535548.045898541 root:root 0644 - - ZXRjL2Nyb24ubW9udGhseS8uZ2l0aWdub3Jl 1762535548.045898541 1762535548.045898541 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi53ZWVrbHk= - - Y3Jvbi53ZWVrbHk= - -
ZXRjL2Nyb24ud2Vla2x5Ly5naXRpZ25vcmU= 1762628453.620630321 1762535530.470181196 root:root 0644 - - ZXRjL2Nyb24ud2Vla2x5Ly5naXRpZ25vcmU= 1762628453.620630321 1762535530.470181196 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi53ZWVrbHk= - - Y3Jvbi53ZWVrbHk= - -
ZXRjL2Nyb24ud2Vla2x5L2NsZWFuLXBocA== 1773074830.431179720 1773074830.431179720 root:root 0777 - - ZXRjL2Nyb24ud2Vla2x5L2NsZWFuLXBocA== 1773074830.431179720 1773074830.431179720 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
Y3Jvbi55ZWFybHk= - - Y3Jvbi55ZWFybHk= - -
ZXRjL2Nyb24ueWVhcmx5Ly5naXRpZ25vcmU= 1762535568.001577608 1762535568.001577608 root:root 0644 - - ZXRjL2Nyb24ueWVhcmx5Ly5naXRpZ25vcmU= 1762535568.001577608 1762535568.001577608 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2Nyb250YWI= 1762534976.223094581 1757593504.000000000 root:root 0600 - - ZXRjL2Nyb250YWI= 1762534976.223094581 1757593504.000000000 root:root 0600 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVmYXVsdA== - - ZGVmYXVsdA== - -
ZXRjL2RlZmF1bHQvLmdpdGlnbm9yZQ== 1762624179.585857684 1762624148.166366444 root:root 0644 - - ZXRjL2RlZmF1bHQvLmdpdGlnbm9yZQ== 1762624179.585857684 1762624148.166366444 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVmYXVsdA== - - ZGVmYXVsdA== - -
ZXRjL2RlZmF1bHQvcHJvbWV0aGV1cy1ub2RlLWV4cG9ydGVy 1773511187.568917165 1762023153.000000000 root:root 0644 - - ZXRjL2RlZmF1bHQvcHJvbWV0aGV1cy1ub2RlLWV4cG9ydGVy 1773511187.568917165 1762023153.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVmYXVsdA== - - ZGVmYXVsdA== - -
ZXRjL2RlZmF1bHQvcm90YXRlLWxvZ3Mtc3ltbGlua3M= 1758555243.000000000 1758552192.000000000 root:root 0644 - - ZXRjL2RlZmF1bHQvcm90YXRlLWxvZ3Mtc3ltbGlua3M= 1758555243.000000000 1758552192.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVmYXVsdA== - - ZGVmYXVsdA== - -
ZXRjL2RlZmF1bHQvdGVycmFmb3JtLWh0dHAtYmFja2VuZA== 1773511563.759009356 1757595391.000000000 root:root 0600 - - ZXRjL2RlZmF1bHQvdGVycmFmb3JtLWh0dHAtYmFja2VuZA== 1773511563.759009356 1757595391.000000000 root:root 0600 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
ZXRjL2RlaHlkcmF0ZWQvLmdpdGlnbm9yZQ== 1758038054.000000000 1758038054.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvLmdpdGlnbm9yZQ== 1758038054.000000000 1758038054.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
YWNjb3VudHM= - - YWNjb3VudHM= - -
ZXRjL2RlaHlkcmF0ZWQvYWNjb3VudHMvLmdpdGlnbm9yZQ== 1757873230.000000000 1757873230.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvYWNjb3VudHMvLmdpdGlnbm9yZQ== 1757873230.000000000 1757873230.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
YWNjb3VudHM= - - YWNjb3VudHM= - -
ZXRjL2RlaHlkcmF0ZWQvYWNjb3VudHMvYUhSMGNITTZMeTloWTIxbExYWXdNaTVoY0drdWJHVjBjMlZ1WTNKNWNIUXViM0puTDJScGNtVmpkRzl5ZVFvLnRhci5ncGc= 1773159494.828502366 1757873275.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvYWNjb3VudHMvYUhSMGNITTZMeTloWTIxbExYWXdNaTVoY0drdWJHVjBjMlZ1WTNKNWNIUXViM0puTDJScGNtVmpkRzl5ZVFvLnRhci5ncGc= 1773159494.828502366 1757873275.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
YXJjaGl2ZQ== - - YXJjaGl2ZQ== - -
ZXRjL2RlaHlkcmF0ZWQvYXJjaGl2ZS8uZ2l0aWdub3Jl 1757874259.000000000 1757873451.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvYXJjaGl2ZS8uZ2l0aWdub3Jl 1757874259.000000000 1757873451.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
Y2VydHM= - - Y2VydHM= - -
ZXRjL2RlaHlkcmF0ZWQvY2VydHMvLmdpdGlnbm9yZQ== 1757874303.000000000 1757873537.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvY2VydHMvLmdpdGlnbm9yZQ== 1757874303.000000000 1757873537.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - -
Y29uZi5k - -
ZXRjL2RlaHlkcmF0ZWQvY29uZi5kLy5naXRrZWVwZGly 1773342473.728835264 1773342473.728835264 root:root 0644 - -
ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
ZXRjL2RlaHlkcmF0ZWQvY29uZmln 1773422158.392330219 1757862077.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvY29uZmln 1773422158.392330219 1757862077.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
ZXRjL2RlaHlkcmF0ZWQvZG9tYWlucw== 1757862328.000000000 1757862077.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvZG9tYWlucw== 1757862328.000000000 1757862077.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
ZG9tYWlucy5k - - ZG9tYWlucy5k - -
ZXRjL2RlaHlkcmF0ZWQvZG9tYWlucy5kL19leGFtcGxlXw== 1773422197.987710884 1757862077.000000000 root:root 0644 - - ZXRjL2RlaHlkcmF0ZWQvZG9tYWlucy5kL19leGFtcGxlXw== 1773422197.987710884 1757862077.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZGVoeWRyYXRlZA== - - ZGVoeWRyYXRlZA== - -
aG9va3M= - - aG9va3M= - -
ZXRjL2RlaHlkcmF0ZWQvaG9va3MvZGVmYXVsdA== 1773342632.190315764 1757862077.000000000 root:root 0755 - - ZXRjL2RlaHlkcmF0ZWQvaG9va3MvZGVmYXVsdA== 1773342632.190315764 1757862077.000000000 root:root 0755 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZnVzaW9uZGlyZWN0b3J5 - - ZnVzaW9uZGlyZWN0b3J5 - -
ZXRjL2Z1c2lvbmRpcmVjdG9yeS9mdXNpb25kaXJlY3RvcnktYXBhY2hlLmNvbmY= 1740415693.000000000 1762022137.000000000 root:root 0644 - - ZXRjL2Z1c2lvbmRpcmVjdG9yeS9mdXNpb25kaXJlY3RvcnktYXBhY2hlLmNvbmY= 1740415693.000000000 1762022137.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZnVzaW9uZGlyZWN0b3J5 - - ZnVzaW9uZGlyZWN0b3J5 - -
ZXRjL2Z1c2lvbmRpcmVjdG9yeS9mdXNpb25kaXJlY3RvcnkuY29uZg== - - ZXRjL2Z1c2lvbmRpcmVjdG9yeS9mdXNpb25kaXJlY3RvcnkuY29uZg== - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZnVzaW9uZGlyZWN0b3J5 - - ZnVzaW9uZGlyZWN0b3J5 - -
ZXRjL2Z1c2lvbmRpcmVjdG9yeS9mdXNpb25kaXJlY3RvcnkuY29uZi5vcmln 1760207207.000000000 1760207207.000000000 root:root 0644 - - ZXRjL2Z1c2lvbmRpcmVjdG9yeS9mdXNpb25kaXJlY3RvcnkuY29uZi5vcmln 1760207207.000000000 1760207207.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2dyb3Vw 1762530431.632238190 1762530431.632238190 root:root 0644 - - ZXRjL2dyb3Vw 1773951237.415059979 1773951237.415059979 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2dzaGFkb3cuZ3Bn 1762628156.813441524 1762447499.282711556 root:root 0644 - - ZXRjL2dzaGFkb3cuZ3Bn 1762628156.813441524 1762447499.282711556 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2hvc3RuYW1l 1757594311.000000000 1757594311.000000000 root:root 0644 - - ZXRjL2hvc3RuYW1l 1757594311.000000000 1757594311.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2hvc3Rz 1762446715.371577485 1757594362.000000000 root:root 0644 - - ZXRjL2hvc3Rz 1762446715.371577485 1757594362.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
aW5pdC5k - - aW5pdC5k - -
ZXRjL2luaXQuZC8uZ2l0aWdub3Jl 1771459200.000000000 1771459200.000000000 root:root 0644 - - ZXRjL2luaXQuZC8uZ2l0aWdub3Jl 1771459200.000000000 1771459200.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
aW5pdC5k - - aW5pdC5k - -
ZXRjL2luaXQuZC90ZXJyYWZvcm0taHR0cC1iYWNrZW5k 1773654405.833829368 1771459200.000000000 root:root 0755 - - ZXRjL2luaXQuZC90ZXJyYWZvcm0taHR0cC1iYWNrZW5k 1773654405.833829368 1771459200.000000000 root:root 0755 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2tyYjUuY29uZg== 1773662876.418407545 1583171707.000000000 root:root 0644 - - ZXRjL2tyYjUuY29uZg== 1773662876.418407545 1583171707.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bGRhcA== - - bGRhcA== - -
ZXRjL2xkYXAvbGRhcC5jb25m 1758374529.000000000 1730112559.000000000 root:root 0644 - - ZXRjL2xkYXAvbGRhcC5jb25m 1758374529.000000000 1730112559.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bGRhcA== - - bGRhcA== - -
c2NoZW1h - - c2NoZW1h - -
ZXRjL2xkYXAvc2NoZW1hLy5naXRpZ25vcmU= 1762628549.507075969 1762628549.507075969 root:root 0644 - - ZXRjL2xkYXAvc2NoZW1hLy5naXRpZ25vcmU= 1762628549.507075969 1762628549.507075969 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bGRhcA== - - bGRhcA== - -
c2NoZW1h - - c2NoZW1h - -
ZXRjL2xkYXAvc2NoZW1hL3JmYzIzMDdiaXMuc2NoZW1h 1759835660.000000000 1759835660.000000000 root:root 0644 - - ZXRjL2xkYXAvc2NoZW1hL3JmYzIzMDdiaXMuc2NoZW1h 1759835660.000000000 1759835660.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL2xvZ2luLmRlZnM= 1771509215.801996599 1745058028.000000000 root:root 0644 - - ZXRjL2xvZ2luLmRlZnM= 1771509215.801996599 1745058028.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL21vdGQ= 1762625944.389278724 1756052400.000000000 root:root 0644 - - ZXRjL21vdGQ= 1762625944.389278724 1756052400.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL21zbXRwLmFsaWFzZXM= 1758035451.000000000 1758035451.000000000 root:root 0644 - - ZXRjL21zbXRwLmFsaWFzZXM= 1758035451.000000000 1758035451.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL21zbXRwcmMuZ3Bn 1761052674.000000000 1758049424.000000000 root:root 0644 - - ZXRjL21zbXRwcmMuZ3Bn 1761052674.000000000 1758049424.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bmV0d29yaw== - - bmV0d29yaw== - -
ZXRjL25ldHdvcmsvLmdpdGlnbm9yZQ== 1757596572.000000000 1757596572.000000000 root:root 0644 - - ZXRjL25ldHdvcmsvLmdpdGlnbm9yZQ== 1757596572.000000000 1757596572.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bmV0d29yaw== - - bmV0d29yaw== - -
ZXRjL25ldHdvcmsvaW50ZXJmYWNlcw== 1762449437.502802342 1762449437.502802342 root:root 0644 - - ZXRjL25ldHdvcmsvaW50ZXJmYWNlcw== 1762449437.502802342 1762449437.502802342 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bmV0d29yaw== - - bmV0d29yaw== - -
aW50ZXJmYWNlcy5k - - aW50ZXJmYWNlcy5k - -
ZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kL2V0aDA= 1762449591.864258045 1762449559.040799058 root:root 0644 - - ZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kL2V0aDA= 1762449591.864258045 1762449559.040799058 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
bmV0d29yaw== - - bmV0d29yaw== - -
aW50ZXJmYWNlcy5k - - aW50ZXJmYWNlcy5k - -
ZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kL2V0aDE= 1762449602.376084790 1762449560.312778093 root:root 0644 - - ZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kL2V0aDE= 1762449602.376084790 1762449560.312778093 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3Bhc3N3ZA== 1773520112.011464701 1762449439.234773795 root:root 0644 - - ZXRjL3Bhc3N3ZA== 1773951229.999182951 1773951229.999182951 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
ZXRjL3BocC8uZ2l0aWdub3Jl 1773950303.090525695 1773950303.090525695 root:root 0644 - - ZXRjL3BocC8uZ2l0aWdub3Jl 1773950303.090525695 1773950303.090525695 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
ZXRjL3BocC84LjQvLmdpdGlnbm9yZQ== 1773950864.129246341 1773950864.129246341 root:root 0644 - - ZXRjL3BocC84LjQvLmdpdGlnbm9yZQ== 1773950864.129246341 1773950864.129246341 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
ZXRjL3BocC84LjQvYXBhY2hlMi8uZ2l0aWdub3Jl 1773950761.570942616 1773950761.570942616 root:root 0644 - - ZXRjL3BocC84LjQvYXBhY2hlMi8uZ2l0aWdub3Jl 1773950761.570942616 1773950761.570942616 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
YXBhY2hlMg== - - YXBhY2hlMg== - -
ZXRjL3BocC84LjQvYXBhY2hlMi9waHAuaW5p 1773248884.583344972 1773248884.583344972 root:root 0777 - - ZXRjL3BocC84LjQvYXBhY2hlMi9waHAuaW5p 1773248884.583344972 1773248884.583344972 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
Y2xp - - Y2xp - -
ZXRjL3BocC84LjQvY2xpLy5naXRpZ25vcmU= 1773950780.838623940 1773950780.838623940 root:root 0644 - - ZXRjL3BocC84LjQvY2xpLy5naXRpZ25vcmU= 1773950780.838623940 1773950780.838623940 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
Y2xp - - Y2xp - -
ZXRjL3BocC84LjQvY2xpL3BocC5pbmk= 1773248893.095208163 1773248893.095208163 root:root 0777 - - ZXRjL3BocC84LjQvY2xpL3BocC5pbmk= 1773248893.095208163 1773248893.095208163 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
ZnBt - - ZnBt - -
ZXRjL3BocC84LjQvZnBtLy5naXRpZ25vcmU= 1773950820.753963759 1773950820.753963759 root:root 0644 - - ZXRjL3BocC84LjQvZnBtLy5naXRpZ25vcmU= 1773950820.753963759 1773950820.753963759 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
ZnBt - - ZnBt - -
ZXRjL3BocC84LjQvZnBtL3BocC1mcG0uY29uZg== 1773249914.582789624 1771512192.000000000 root:root 0644 - - ZXRjL3BocC84LjQvZnBtL3BocC1mcG0uY29uZg== 1773249914.582789624 1771512192.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
ZnBt - - ZnBt - -
ZXRjL3BocC84LjQvZnBtL3BocC5pbmk= 1773248900.295092442 1773248900.295092442 root:root 0777 - - ZXRjL3BocC84LjQvZnBtL3BocC5pbmk= 1773248900.295092442 1773248900.295092442 root:root 0777 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
ZnBt - - ZnBt - -
cG9vbC5k - - cG9vbC5k - -
ZXRjL3BocC84LjQvZnBtL3Bvb2wuZC93d3cuY29uZg== 1773343753.212472726 1771512192.000000000 root:root 0644 - - ZXRjL3BocC84LjQvZnBtL3Bvb2wuZC93d3cuY29uZg== 1773343753.212472726 1771512192.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhw - - cGhw - -
OC40 - - OC40 - -
ZXRjL3BocC84LjQvcGhwLmluaQ== 1773248696.138374022 1773229113.232168334 root:root 0644 - - ZXRjL3BocC84LjQvcGhwLmluaQ== 1773248696.138374022 1773229113.232168334 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhwbGRhcGFkbWlu - - cGhwbGRhcGFkbWlu - -
ZXRjL3BocGxkYXBhZG1pbi8uZ2l0aWdub3Jl 1762628720.800299329 1762628701.308615289 root:root 0644 - - ZXRjL3BocGxkYXBhZG1pbi8uZ2l0aWdub3Jl 1762628720.800299329 1762628701.308615289 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cGhwbGRhcGFkbWlu - - cGhwbGRhcGFkbWlu - -
ZXRjL3BocGxkYXBhZG1pbi9jb25maWcucGhwLmdwZw== 1761052640.000000000 1758539944.000000000 root:root 0644 - - ZXRjL3BocGxkYXBhZG1pbi9jb25maWcucGhwLmdwZw== 1761052640.000000000 1758539944.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3BrZ2xpc3Q= 1773878402.020187156 1762560002.068536774 root:root 0644 - - ZXRjL3BrZ2xpc3Q= 1773878402.020187156 1762560002.068536774 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cHVzaG92ZXItY2xpZW50 - - cHVzaG92ZXItY2xpZW50 - -
ZXRjL3B1c2hvdmVyLWNsaWVudC8uZ2l0aWdub3Jl 1762628624.365862525 1762448145.464092595 root:root 0644 - - ZXRjL3B1c2hvdmVyLWNsaWVudC8uZ2l0aWdub3Jl 1762628624.365862525 1762448145.464092595 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
cHVzaG92ZXItY2xpZW50 - - cHVzaG92ZXItY2xpZW50 - -
ZXRjL3B1c2hvdmVyLWNsaWVudC9kZWZhdWx0LmdwZw== 1762448163.991787320 1762448163.979787518 root:root 0644 - - ZXRjL3B1c2hvdmVyLWNsaWVudC9kZWZhdWx0LmdwZw== 1762448163.991787320 1762448163.979787518 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3Jlc29sdi5jb25m 1773592997.299303370 1757611605.000000000 root:root 0644 - - ZXRjL3Jlc29sdi5jb25m 1773592997.299303370 1757611605.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3JzeXNsb2cuY29uZg== 1757785113.000000000 1757785113.000000000 root:root 0644 - - ZXRjL3JzeXNsb2cuY29uZg== 1757785113.000000000 1757785113.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c2FtYmE= - - c2FtYmE= - -
ZXRjL3NhbWJhL3NtYi5jb25m 1762447904.392054475 1758208516.000000000 root:root 0644 - - ZXRjL3NhbWJhL3NtYi5jb25m 1762447904.392054475 1758208516.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c2FtYmE= - - c2FtYmE= - -
ZXRjL3NhbWJhL3NtYnVzZXJz 1758121825.000000000 1758121586.000000000 root:root 0644 - - ZXRjL3NhbWJhL3NtYnVzZXJz 1758121825.000000000 1758121586.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3NoYWRvdy5ncGc= 1762628180.969049967 1762447484.598952854 root:root 0644 - - ZXRjL3NoYWRvdy5ncGc= 1762628180.969049967 1762447484.598952854 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3No - - c3No - -
ZXRjL3NzaC8uZ2l0aWdub3Jl 1762628843.382312260 1757606957.000000000 root:root 0644 - - ZXRjL3NzaC8uZ2l0aWdub3Jl 1762628843.382312260 1757606957.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3No - - c3No - -
ZXRjL3NzaC9zc2hfY29uZmln 1757606630.000000000 1757606630.000000000 root:root 0644 - - ZXRjL3NzaC9zc2hfY29uZmln 1757606630.000000000 1757606630.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3No - - c3No - -
ZXRjL3NzaC9zc2hkX2NvbmZpZw== 1758202229.000000000 1757606896.000000000 root:root 0644 - - ZXRjL3NzaC9zc2hkX2NvbmZpZw== 1758202229.000000000 1757606896.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3NoZ3VhcmQ= - - c3NoZ3VhcmQ= - -
ZXRjL3NzaGd1YXJkL3NzaGd1YXJkLmNvbmY= 1758050700.000000000 1758050700.000000000 root:root 0644 - - ZXRjL3NzaGd1YXJkL3NzaGd1YXJkLmNvbmY= 1758050700.000000000 1758050700.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3NoZ3VhcmQ= - - c3NoZ3VhcmQ= - -
ZXRjL3NzaGd1YXJkL3doaXRlbGlzdA== 1758050235.000000000 1758050235.000000000 root:root 0644 - - ZXRjL3NzaGd1YXJkL3doaXRlbGlzdA== 1758050235.000000000 1758050235.000000000 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3Vkb2Vycy5k - - c3Vkb2Vycy5k - -
ZXRjL3N1ZG9lcnMuZC8uZ2l0aWdub3Jl 1762026765.566662574 1762026765.566662574 root:root 0644 - - ZXRjL3N1ZG9lcnMuZC8uZ2l0aWdub3Jl 1762026765.566662574 1762026765.566662574 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3Vkb2Vycy5k - - c3Vkb2Vycy5k - -
ZXRjL3N1ZG9lcnMuZC9kZWZhdWx0cw== 1757599359.000000000 1757599359.000000000 root:root 0640 - - ZXRjL3N1ZG9lcnMuZC9kZWZhdWx0cw== 1757599359.000000000 1757599359.000000000 root:root 0640 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3Vkb2Vycy5k - - c3Vkb2Vycy5k - -
ZXRjL3N1ZG9lcnMuZC9yb290LWFjY2Vzcw== 1757600157.000000000 1757600157.000000000 root:root 0640 - - ZXRjL3N1ZG9lcnMuZC9yb290LWFjY2Vzcw== 1757600157.000000000 1757600157.000000000 root:root 0640 - -
aG9tZQ== 1773074781.647958337 1771512801.576005863 root:root 0755 - - aG9tZQ== 1773074781.647958337 1771512801.576005863 root:root 0755 - -
@ -409,36 +413,36 @@ b3B0L3NiaW4vcHVzaG92ZXItY2xpZW50 1758224526.000000000 1758224526.000000000 root:
b3B0 1771515169.961748163 1771501851.000000000 root:root 0755 - - b3B0 1771515169.961748163 1771501851.000000000 root:root 0755 - -
c2Jpbg== 1767688090.000000000 1767688090.000000000 root:root 0777 - - c2Jpbg== 1767688090.000000000 1767688090.000000000 root:root 0777 - -
b3B0L3NiaW4vdGVycmFmb3JtLWh0dHAtYmFja2VuZA== 1757590543.000000000 1757590543.000000000 root:root 0755 - - b3B0L3NiaW4vdGVycmFmb3JtLWh0dHAtYmFja2VuZA== 1757590543.000000000 1757590543.000000000 root:root 0755 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
cm9vdC8uYmFzaF9sb2dvdXQ= 1757582867.000000000 1757582867.000000000 root:root 0644 - - cm9vdC8uYmFzaF9sb2dvdXQ= 1757582867.000000000 1757582867.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
cm9vdC8uYmFzaF9wcm9maWxl 1757584711.000000000 1757584711.000000000 root:root 0644 - - cm9vdC8uYmFzaF9wcm9maWxl 1757584711.000000000 1757584711.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
cm9vdC8uYmFzaHJj 1758887027.000000000 1757586493.000000000 root:root 0644 - - cm9vdC8uYmFzaHJj 1758887027.000000000 1757586493.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
cm9vdC8uZ2l0Y29uZmln 1757582738.000000000 1757582738.000000000 root:root 0644 - - cm9vdC8uZ2l0Y29uZmln 1757582738.000000000 1757582738.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
cm9vdC8uZ2l0aWdub3Jl 1771509562.912369370 1757600312.000000000 root:root 0644 - - cm9vdC8uZ2l0aWdub3Jl 1771509562.912369370 1757600312.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
LmxvY2Fs - - LmxvY2Fs - -
c2hhcmU= - - c2hhcmU= - -
bmFubw== - - bmFubw== - -
cm9vdC8ubG9jYWwvc2hhcmUvbmFuby8uZ2l0aWdub3Jl 1757586210.000000000 1757586210.000000000 root:root 0644 - - cm9vdC8ubG9jYWwvc2hhcmUvbmFuby8uZ2l0aWdub3Jl 1757586210.000000000 1757586210.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
cm9vdC8ubmFub3Jj 1757585756.000000000 1757585756.000000000 root:root 0644 - - cm9vdC8ubmFub3Jj 1757585756.000000000 1757585756.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
LnNzaA== - - LnNzaA== - -
cm9vdC8uc3NoLy5naXRpZ25vcmU= 1757593349.000000000 1757593349.000000000 root:root 0644 - - cm9vdC8uc3NoLy5naXRpZ25vcmU= 1757593349.000000000 1757593349.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
LnNzaA== - - LnNzaA== - -
cm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5cw== 1757587611.000000000 1757587611.000000000 root:root 0644 - - cm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5cw== 1757587611.000000000 1757587611.000000000 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
c3R1ZmYtdG8ta2VlcA== - - c3R1ZmYtdG8ta2VlcA== - -
cm9vdC9zdHVmZi10by1rZWVwL2NsZWFuLWZk 1758994151.000000000 1758992264.000000000 root:root 0755 - - cm9vdC9zdHVmZi10by1rZWVwL2NsZWFuLWZk 1758994151.000000000 1758992264.000000000 root:root 0755 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
c3R1ZmYtdG8ta2VlcA== - - c3R1ZmYtdG8ta2VlcA== - -
cm9vdC9zdHVmZi10by1rZWVwL2R1bW15LWRlZmF1bHQtbXRh 1762020478.278412865 1762020215.034844513 root:root 0644 - - cm9vdC9zdHVmZi10by1rZWVwL2R1bW15LWRlZmF1bHQtbXRh 1762020478.278412865 1762020215.034844513 root:root 0644 - -
cm9vdA== 1773947266.280944041 1771512801.616005200 root:root 0755 - - cm9vdA== 1773951371.844830681 1771512801.616005200 root:root 0755 - -
c3R1ZmYtdG8ta2VlcA== - - c3R1ZmYtdG8ta2VlcA== - -
cm9vdC9zdHVmZi10by1rZWVwL2R1bW15LWRlZmF1bHQtbXRhXzAuMC4xX2FsbC5kZWI= 1762020499.466056182 1762020499.458056317 root:root 0644 - - cm9vdC9zdHVmZi10by1rZWVwL2R1bW15LWRlZmF1bHQtbXRhXzAuMC4xX2FsbC5kZWI= 1762020499.466056182 1762020499.458056317 root:root 0644 - -
dmFy 1773949028.799601180 1771512801.620005134 root:root 0755 - - dmFy 1773949028.799601180 1771512801.620005134 root:root 0755 - -
@ -462,19 +466,26 @@ dmFy 1773949028.799601180 1771512801.620005134 root:root 0755 - -
dG1w 1773942460.457147071 1771501870.000000000 root:root 1777 - - dG1w 1773942460.457147071 1771501870.000000000 root:root 1777 - -
cGhwLXVwbG9hZHM= - - cGhwLXVwbG9hZHM= - -
dmFyL3RtcC9waHAtdXBsb2Fkcy8uZ2l0aWdub3Jl 1773949181.645073322 1773949181.645073322 root:root 0644 - - dmFyL3RtcC9waHAtdXBsb2Fkcy8uZ2l0aWdub3Jl 1773949181.645073322 1773949181.645073322 root:root 0644 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - dmFy 1773949028.799601180 1771512801.620005134 root:root 0755 - -
ZXRjL3NoYWRvdw== 1762449439.206774257 1762449439.206774257 root:shadow 0640 - - d3d3 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - dmFyL3d3dy8uZ2l0aWdub3Jl 1773949001.724048991 1773949001.724048991 root:root 0644 - -
ZXRjL3NoYWRvdy0= 1762023813.000000000 1762023813.000000000 root:shadow 0640 - - dmFy 1773949028.799601180 1771512801.620005134 root:root 0755 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - d3d3 - -
ZGVoeWRyYXRlZA== - -
dmFyL3d3dy9kZWh5ZHJhdGVkLy5naXRpZ25vcmU= 1773946447.886574894 1773340286.179664904 root:root 0644 - -
ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3NoYWRvdw== 1773951229.983183217 1773951229.983183217 root:shadow 0640 - -
ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3NoYWRvdy0= 1762449439.000000000 1762449439.000000000 root:shadow 0640 - -
ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
ZXRjL3N1ZG9lcnM= 1751262933.000000000 1751262933.000000000 root:root 0440 - - ZXRjL3N1ZG9lcnM= 1751262933.000000000 1751262933.000000000 root:root 0440 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3Vkb2Vycy5k - - c3Vkb2Vycy5k - -
ZXRjL3N1ZG9lcnMuZC9SRUFETUU= 1751262933.000000000 1751262933.000000000 root:root 0440 - - ZXRjL3N1ZG9lcnMuZC9SRUFETUU= 1751262933.000000000 1751262933.000000000 root:root 0440 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3Vkb2Vycy5k - - c3Vkb2Vycy5k - -
ZXRjL3N1ZG9lcnMuZC9kZWZhdWx0cw== 1757599359.000000000 1757599359.000000000 root:root 0640 - - ZXRjL3N1ZG9lcnMuZC9kZWZhdWx0cw== 1757599359.000000000 1757599359.000000000 root:root 0640 - -
ZXRj 1773949446.172698365 1771501908.000000000 root:root 0755 - - ZXRj 1773951237.415059979 1771501908.000000000 root:root 0755 - -
c3Vkb2Vycy5k - - c3Vkb2Vycy5k - -
ZXRjL3N1ZG9lcnMuZC9yb290LWFjY2Vzcw== 1757600157.000000000 1757600157.000000000 root:root 0640 - - ZXRjL3N1ZG9lcnMuZC9yb290LWFjY2Vzcw== 1757600157.000000000 1757600157.000000000 root:root 0640 - -
aG9tZQ== 1773074781.647958337 1771512801.576005863 root:root 0755 - - aG9tZQ== 1773074781.647958337 1771512801.576005863 root:root 0755 - -

View file

View file

@ -3,7 +3,7 @@
# $SCRIPTDIR/config (next to this script) # $SCRIPTDIR/config (next to this script)
# /usr/local/etc/dehydrated/config # /usr/local/etc/dehydrated/config
# /etc/dehydrated/config # /etc/dehydrated/config
# ${PWD}/config (in current working-directory) # $PWD/config (in current working-directory)
# Which user should dehydrated run as? This will be implictly enforced when running as root. # Which user should dehydrated run as? This will be implictly enforced when running as root.
# Default: <unset> # Default: <unset>
@ -32,7 +32,7 @@
#OLDCA="https://acme-v01.api.letsencrypt.org/directory" #OLDCA="https://acme-v01.api.letsencrypt.org/directory"
# Which challenge should be used? # Which challenge should be used?
# Supported values: http-01, dns-01, tls-alpn-01. # Supported values: http-01, dns-01, dns-persist-01, tls-alpn-01.
# Default: http-01 # Default: http-01
#CHALLENGETYPE="http-01" #CHALLENGETYPE="http-01"
@ -40,7 +40,7 @@
# This allows overriding the defaults found in the main configuration file. # This allows overriding the defaults found in the main configuration file.
# Additional config files in this directory must be named with a '.sh' ending. # Additional config files in this directory must be named with a '.sh' ending.
# Default: <unset> # Default: <unset>
#CONFIG_D="" CONFIG_D="/etc/dehydrated/conf.d"
# Base directory for account key, generated certificates and list of domains. # Base directory for account key, generated certificates and list of domains.
# Default: $SCRIPTDIR # Default: $SCRIPTDIR
@ -48,28 +48,28 @@ BASEDIR="/etc/dehydrated"
# File containing the list of domains for which to request certificates. # File containing the list of domains for which to request certificates.
# Default: $BASEDIR/domains.txt # Default: $BASEDIR/domains.txt
DOMAINS_TXT="${BASEDIR}/domains" DOMAINS_TXT="$BASEDIR/domains"
# Directory for per-domain configuration files. # Directory for per-domain configuration files.
# If not set, per-domain configurations are sourced from each certificates output directory. # If not set, per-domain configurations are sourced from each certificates output directory.
# Default: <unset> # Default: <unset>
DOMAINS_D="${BASEDIR}/domains.d" DOMAINS_D="$BASEDIR/domains.d"
# Output directory for generated certificates. # Output directory for generated certificates.
# Default: ${BASEDIR}/certs # Default: $BASEDIR/certs
#CERTDIR="${BASEDIR}/certs" #CERTDIR="$BASEDIR/certs"
# Output directory for alpn verification certificates. # Output directory for alpn verification certificates.
# Default: ${BASEDIR}/alpn-certs # Default: $BASEDIR/alpn-certs
#ALPNCERTDIR="${BASEDIR}/alpn-certs" #ALPNCERTDIR="$BASEDIR/alpn-certs"
# Directory for account keys and registration information. # Directory for account keys and registration information.
# Default: ${BASEDIR}/accounts # Default: $BASEDIR/accounts
#ACCOUNTDIR="${BASEDIR}/accounts" #ACCOUNTDIR="$BASEDIR/accounts"
# Output directory for challenge-tokens to be served by webserver, or deployed in $HOOK. # Output directory for challenge-tokens to be served by webserver, or deployed in $HOOK.
# Default: /var/www/dehydrated # Default: /var/www/dehydrated
WELLKNOWN="/srv/dehydrated" WELLKNOWN="/var/www/dehydrated"
# Default keysize for private keys. # Default keysize for private keys.
# Default: 4096 # Default: 4096
@ -91,7 +91,7 @@ WELLKNOWN="/srv/dehydrated"
# Program or function called at certain stages of processing. # Program or function called at certain stages of processing.
# BASEDIR and WELLKNOWN variables are exported and can be used in an external program. # BASEDIR and WELLKNOWN variables are exported and can be used in an external program.
# Default: <unset> # Default: <unset>
HOOK="${BASEDIR}/hooks/default" HOOK="$BASEDIR/hooks/default"
# Chain clean_challenge|deploy_challenge arguments together into one hook call per certificate? # Chain clean_challenge|deploy_challenge arguments together into one hook call per certificate?
# Default: no # Default: no
@ -103,7 +103,7 @@ HOOK="${BASEDIR}/hooks/default"
# Regenerate private keys instead of just signing new certificates on renewal? # Regenerate private keys instead of just signing new certificates on renewal?
# Default: yes # Default: yes
PRIVATE_KEY_RENEW="no" #PRIVATE_KEY_RENEW="yes"
# Create an extra private key for rollover? # Create an extra private key for rollover?
# Default: no # Default: no
@ -136,7 +136,7 @@ LOCKFILE="/run/dehydrated.lock"
# Issuer chain cache directory. # Issuer chain cache directory.
# Default: $BASEDIR/chains # Default: $BASEDIR/chains
#CHAINCACHE="${BASEDIR}/chains" #CHAINCACHE="$BASEDIR/chains"
# Automatic cleanup? # Automatic cleanup?
# Default: no # Default: no

View file

@ -1,7 +1,7 @@
# The settings in this file can be used to override those in the global config file in /etc/dehydrated # The settings in this file can be used to override those in the global config file in /etc/dehydrated
# Which challenge should be used? # Which challenge should be used?
# Supported values: http-01, dns-01, tls-alpn-01. # Supported values: http-01, dns-01, dns-persist-01, tls-alpn-01.
# Default: http-01 # Default: http-01
#CHALLENGETYPE="http-01" #CHALLENGETYPE="http-01"

View file

@ -1,136 +1,189 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# This file contains the default hook functions for dehydrated - these functions will be used when there is no overriding certificate specific hooks file. # This file contains the default hook functions for dehydrated - these functions will be used when there is no overriding certificate
# All but startup_hook and ext_hook can be overridden by a hooks script on a per certificate basis. # specific hooks file. All but startup_hook and ext_hook can be overridden by a hooks script on a per certificate basis.
# #
# shellcheck disable=SC2034,SC2317 # shellcheck disable=SC2034,SC2317
# Configuration. # Configuration.
# Where the copies of the current certificates/keys should be placed. Comment for no copying. # Where the copies of the current certificates/keys should be placed. Comment for no copying.
CERTSDIR="/etc/certificates" CERTSDIR="/etc/certificates"
# The syslog facility and tag to use. # The syslog facility and tag to use. Comment for no sysloging.
FACILITY="local3" SYSLOG_FACILITY="local1"
TAG="dehydrated" SYSLOG_TAG="dehydrated-hooks"
# Where from/to to send emails. # Where from/to to send emails. Comment for no emailing.
EMAIL_FROM="\"Server: ${HOSTNAME%%.*}\" <noreply@slackware.uk>" EMAIL_FROM="\"Server: ${HOSTNAME%%.*}\" <noreply@slackware.uk.net>"
EMAIL_TO=("Systems' Administrator <sysadmin@slackware.uk>") EMAIL_TO=("Systems' Administrator <sysadmin@slackware.uk>")
# Get the system ID. # Get the system ID.
# shellcheck disable=SC2046 # shellcheck disable=SC2046
declare SYSTEM_$(grep '^ID=' /etc/os-release 2>/dev/null) declare SYSTEM_$(grep '^ID=' /etc/os-release 2>/dev/null)
# Write a message to syslog, and send a copy via email. # Write a message to syslog and/or send via email.
notify() { notify() {
local LOG_PREFIX="${LOG_PREFIX:-Certificate renewal} $1" PRIORITY # Parameters:
# $1 Log entry type (currently one of: error, warning or info).
# $2... The text of the log entry.
local PREFIX PRIORITY
[[ -z "$1" ]] && return 1 [[ -z "$1" ]] && return 1
# Select the syslog priority level. # Select the syslog priority level.
case "$1" in case "$1" in
'error') PRIORITY="err" ;; 'error')
'warning') PRIORITY="warn" ;; PREFIX="${LOG_PREFIX:-Certificate renewal} $1"
*) PRIORITY="info" ;; PRIORITY="err"
esac
shift shift
;;
'info')
PREFIX="${LOG_PREFIX:-Certificate renewal} $1"
PRIORITY="info"
shift
;;
'warning')
PREFIX="${LOG_PREFIX:-Certificate renewal} $1"
PRIORITY="warn"
shift
;;
*)
LOG_PREFIX="Dehydrated hooks' coding"
notify "error" "Invalid or no log entry severity specified - using 'error'"
PREFIX="${LOG_PREFIX:-Certificate renewal} error"
PRIORITY="err"
;;
esac
# Log the message to syslog # Log the message to syslog.
if [[ "$ID" == "alpine" ]]; then [[ -n "$SYSLOG_FACILITY" ]] && [[ -n "$SYSLOG_TAG" ]] && {
if [[ "$SYSTEM_ID" == "alpine" ]]; then
# BusyBox logger on Alpine's is missing the --id option. # BusyBox logger on Alpine's is missing the --id option.
printf "%s\\n" "$LOG_PREFIX:" "$@" "EOX" | logger -p "$FACILITY.$PRIORITY" -t "$TAG" >/dev/null 2>&1 printf "%s\\n" "$PREFIX:" "$@" "EOL" | logger -p "$SYSLOG_FACILITY.$PRIORITY" -t "$SYSLOG_TAG" >/dev/null 2>&1
else else
printf "%s\\n" "$LOG_PREFIX:" "$@" "EOX" | logger --id="$$" -p "$FACILITY.$PRIORITY" -t "$TAG" >/dev/null 2>&1 printf "%s\\n" "$PREFIX:" "$@" "EOL" | logger --id="$$" -p "$SYSLOG_FACILITY.$PRIORITY" -t "$SYSLOG_TAG" >/dev/null 2>&1
fi fi
}
# Email the notification. # Email the notification.
printf "%s\\n" "$@" | mail -r "$EMAIL_FROM" -s "$LOG_PREFIX" "${EMAIL_TO[@]}" >/dev/null 2>&1 [[ -n "$EMAIL_FROM" ]] && [[ -n "${EMAIL_TO[*]}" ]] && {
printf "%s\\n" "$@" | mail -r "$EMAIL_FROM" -s "$PREFIX" "${EMAIL_TO[@]}" >/dev/null 2>&1
}
return 0 return 0
} }
# Service configurations (used at startup/shutdown). # Service configurations (used at startup/shutdown).
services() { services() {
local DAEMON ERR=0 LOG_PREFIX="Dehydrated configuration" PIDFILE RCFILE SANITY="$1" # Parameters:
# $1 Whether to sanity check configuration. '1' == sanity check.
# Select the service configuration based on the distribution. local LOG_PREFIX="Dehydrated hooks' configuration" SERVICE
# RCFILE_<service> is required for any service. declare -g -A SERVICE_CTL SERVICE_DAEMON SERVICE_PIDFILE
# Either DAEMON_<service> or PIDFILE_<service>, or both is required for any service.
if [[ "$SYSTEM_ID" == "slackware" ]]; then # Select the service configurations based on the distribution.
# HTTP daemon selection. # SERVICE_CTL['<service>'] is required, and either SERVICE_DAEMON['<service>'] or SERVICE_PIDFILE['<service>'], or both is required for any service.
if [[ -x "/etc/rc.d/rc.httpd" ]]; then # An 'httpd' service must be defined for certificate renewal to work.
RCFILE_HTTPD="/etc/rc.d/rc.httpd" if [[ "$SYSTEM_ID" == "alpine" ]]; then
DAEMON_HTTPD="httpd" # HTTP daemon.
PIDFILE_HTTPD="/run/httpd.pid"
elif [[ -x "/etc/rc.d/rc.thttpd" ]]; then
RCFILE_HTTPD="/etc/rc.d/rc.thttpd"
DAEMON_HTTPD="thttpd"
PIDFILE_HTTPD="/run/thttpd.pid"
fi
# FTP daemon selection.
if [[ -x "/etc/rc.d/rc.proftpd" ]]; then
RCFILE_FTPD="/etc/rc.d/rc.proftpd"
DAEMON_FTPD="proftpd"
PIDFILE_FTPD="/run/proftpd.pid"
fi
# SMTP daemon selection.
if [[ -x "/etc/rc.d/rc.exim" ]]; then
RCFILE_SMTPD="/etc/rc.d/rc.exim"
DAEMON_SMTPD="exim"
PIDFILE_SMTPD="/run/exim.pid"
fi
elif [[ "$SYSTEM_ID" == "void" ]]; then
# HTTP daemon selection.
# thttpd on Void doesn't have a directly callable rc script, so can't be supported.
if [[ -x "/usr/sbin/apachectl" ]]; then
RCFILE_HTTPD="/usr/sbin/apachectl"
DAEMON_HTTPD="httpd"
PIDFILE_HTTPD="/run/httpd/httpd.pid"
fi
elif [[ "$SYSTEM_ID" == "alpine" ]]; then
# HTTP daemon selection.
if [[ -x "/etc/init.d/apache2" ]]; then if [[ -x "/etc/init.d/apache2" ]]; then
RCFILE_HTTPD="/etc/init.d/apache2" SERVICE_CTL['httpd']="/etc/init.d/apache2"
DAEMON_HTTPD="httpd" SERVICE_DAEMON['httpd']="httpd"
PIDFILE_HTTPD="/run/apache2/httpd.pid" SERVICE_PIDFILE['httpd']="/run/apache2/httpd.pid"
elif [[ -x "/etc/init.d/thttpd" ]]; then elif [[ -x "/etc/init.d/thttpd" ]]; then
RCFILE_HTTPD="/etc/init.d/thttpd" SERVICE_CTL['httpd']="/etc/init.d/thttpd"
DAEMON_HTTPD="thttpd" SERVICE_DAEMON['httpd']="thttpd"
PIDFILE_HTTPD="/run/thttpd.pid" SERVICE_PIDFILE['httpd']="/run/thttpd.pid"
fi fi
# Samba daemon selection. # Samba daemon selection.
if [[ -x "/etc/init.d/samba" ]]; then if [[ -x "/etc/init.d/samba" ]]; then
# FIXME: SERVICE_CTL['samba']="/etc/init.d/samba"
# RCFILE_SAMBA="/etc/init.d/samba" SERVICE_DAEMON['samba']="samba"
DAEMON_SAMBA="samba" SERVICE_PIDFILE['samba']="/run/samba.pid"
PIDFILE_SAMBA="/run/samba.pid"
fi fi
elif [[ "$SYSTEM_ID" =~ ^(debian|devuan)$ ]]; then
# HTTP daemon.
if [[ -x "/usr/sbin/apachectl" ]]; then
SERVICE_CTL['httpd']="/usr/sbin/apachectl"
SERVICE_DAEMON['httpd']="apache2"
SERVICE_PIDFILE['httpd']="/run/apache2/apache2.pid"
fi
# Samba daemon.
if [[ -x "/etc/init.d/samba" ]]; then
SERVICE_CTL['samba']="/etc/init.d/samba"
SERVICE_DAEMON['samba']="samba"
SERVICE_PIDFILE['samba']="/run/samba/samba.pid"
fi
elif [[ "$SYSTEM_ID" == "slackware" ]]; then
# HTTP daemon.
if [[ -x "/etc/rc.d/rc.httpd" ]]; then
SERVICE_CTL['httpd']="/etc/rc.d/rc.httpd"
SERVICE_DAEMON['httpd']="httpd"
SERVICE_PIDFILE['httpd']="/run/httpd.pid"
elif [[ -x "/etc/rc.d/rc.thttpd" ]]; then
SERVICE_CTL['httpd']="/etc/rc.d/rc.thttpd"
SERVICE_DAEMON['httpd']="thttpd"
SERVICE_PIDFILE['httpd']="/run/thttpd.pid"
fi
# FTP daemon.
if [[ -x "/etc/rc.d/rc.proftpd" ]]; then
SERVICE_CTL['ftpd']="/etc/rc.d/rc.proftpd"
SERVICE_DAEMON['ftpd']="proftpd"
SERVICE_PIDFILE['ftpd']="/run/proftpd.pid"
fi
# SMTP daemon.
if [[ -x "/etc/rc.d/rc.exim" ]]; then
SERVICE_CTL['smtpd']="/etc/rc.d/rc.exim"
SERVICE_DAEMON['smtpd']="exim"
SERVICE_PIDFILE['smtpd']="/run/exim.pid"
fi
elif [[ "$SYSTEM_ID" == "void" ]]; then
# HTTP daemon selection.
# Note: thttpd on Void doesn't have a directly callable rc script, so can't be supported.
if [[ -x "/usr/sbin/apachectl" ]]; then
SERVICE_CTL['httpd']="/usr/sbin/apachectl"
SERVICE_DAEMON['httpd']="httpd"
SERVICE_PIDFILE['httpd']="/run/httpd/httpd.pid"
fi
else
notify "error" "'$SYSTEM_ID' is not a supported platform for hooks"
return 1
fi fi
# Sanity check settings. # Sanity check settings.
((SANITY == 1)) && { (( $1 == 1 )) && {
[[ -z "$RCFILE_HTTPD" ]] && notify "warning" "No configuration settings for an HTTP daemon - no start/restart of HTTP daemon is possible -- check configuration" local IFS=$'\n'
for RCFILE in "${!RCFILE_@}"; do for SERVICE in $(printf "%s\\n" "${!SERVICE_CTL[@]}" "${!SERVICE_DAEMON[@]}" "${!SERVICE_PIDFILE[@]}" | sort | uniq); do
DAEMON="DAEMON_${RCFILE#RCFILE_}" if [[ -z "${SERVICE_CTL[\"$SERVICE\"]}" ]]; then
PIDFILE="PIDFILE_${RCFILE#RCFILE_}" if [[ "$SERVICE" == "httpd" ]]; then
[[ -n "${!RCFILE}" ]] && [[ -z "${!DAEMON}" ]] && [[ -z "${!PIDFILE}" ]] && notify "error" "'$RCFILE' is set, but neither '$DAEMON' nor '$PIDFILE' is set - at least one setting is required -- aborting" && ERR=1 notify "warning" "'SERVICE_CTL' is not set for service 'httpd' - HTTP based validation, if used, not possible" "Comment all 'httpd' SERVICE_* settings to silence this warning"
else
notify "warning" "'SERVICE_CTL' is not set for service '$SERVICE'"
fi
unset "SERVICE_CTL['$SERVICE']" "SERVICE_DAEMON['$SERVICE']" "SERVICE_PIDFILE['$SERVICE']"
continue
else
[[ -z "${SERVICE_DAEMON[\"$SERVICE\"]}" ]] && [[ -z "${SERVICE_PIDFILE[\"$SERVICE\"]}" ]] && {
notify "warning" "neither 'SERVICE_DAEMON' nor 'SERVICE_PIDFILE' is set for service '$SERVICE' - at least one setting is required"
unset "SERVICE_CTL['$SERVICE']" "SERVICE_DAEMON['$SERVICE']" "SERVICE_PIDFILE['$SERVICE']"
continue
}
fi
done done
} }
((ERR == 1)) && return 1
return 0 return 0
} }
# Called once for every domain that needs to be validated, including any alternative names listed.
deploy_challenge() { deploy_challenge() {
local DOMAIN="$1" TOKEN_FILENAME="$2" TOKEN_VALUE="$3"
# This hook is called once for every domain that needs to be
# validated, including any alternative names you may have listed.
# Parameters: # Parameters:
# DOMAIN - The domain name (CN or subject alternative name) being validated. # $1 (DOMAIN) The domain name (CN or subject alternative name) being validated.
# TOKEN_FILENAME - The name of the file containing the token to be served for HTTP validation # $2 (TOKEN_FILENAME) The name of the file containing the token to be served for HTTP validation
# Should be served by your web server as /.well-known/acme-challenge/${TOKEN_FILENAME}. # Should be served by your web server as /.well-known/acme-challenge/${TOKEN_FILENAME}.
# TOKEN_VALUE - The token value that needs to be served for validation. # $3 (TOKEN_VALUE) The token value that needs to be served for validation.
# For DNS validation, this is what you want to put in the _acme-challenge TXT record.
# For HTTP validation it is the value that is expected be found in the $TOKEN_FILENAME file. # For HTTP validation it is the value that is expected be found in the $TOKEN_FILENAME file.
# For DNS validation, this is what you want to put in the _acme-challenge TXT record.
local DOMAIN="$1" TOKEN_FILENAME="$2" TOKEN_VALUE="$3"
# Simple example: Use nsupdate with local named # Simple example: Use nsupdate with local named
# printf 'server 127.0.0.1\nupdate add _acme-challenge.%s 300 IN TXT "%s"\nsend\n' "$DOMAIN" "$TOKEN_VALUE" | nsupdate -k /var/run/named/session.key # printf 'server 127.0.0.1\nupdate add _acme-challenge.%s 300 IN TXT "%s"\nsend\n' "$DOMAIN" "$TOKEN_VALUE" | nsupdate -k /var/run/named/session.key
@ -139,11 +192,18 @@ deploy_challenge() {
} }
# Called after attempting to validate each domain, whether or not validation was successful.
# Can be used to delete files or DNS records that are no longer needed.
clean_challenge() { clean_challenge() {
local DOMAIN="$1" TOKEN_FILENAME="$2" TOKEN_VALUE="$3" # Parameters:
# $1 (DOMAIN) The domain name (CN or subject alternative name) being validated.
# $2 (TOKEN_FILENAME) The name of the file containing the token to be served for HTTP validation
# Should be served by your web server as /.well-known/acme-challenge/${TOKEN_FILENAME}.
# $3 (TOKEN_VALUE) The token value that needs to be served for validation.
# For HTTP validation it is the value that is expected be found in the $TOKEN_FILENAME file.
# For DNS validation, this is what you want to put in the _acme-challenge TXT record.
# This hook is called after attempting to validate each domain, whether or not validation was successful. Here you can delete files or DNS records that are no longer needed. local DOMAIN="$1" TOKEN_FILENAME="$2" TOKEN_VALUE="$3"
# The parameters are the same as for deploy_challenge.
# Simple example: Use nsupdate with local named # Simple example: Use nsupdate with local named
# printf 'server 127.0.0.1\nupdate delete _acme-challenge.%s TXT "%s"\nsend\n' "$DOMAIN" "$TOKEN_VALUE" | nsupdate -k /var/run/named/session.key # printf 'server 127.0.0.1\nupdate delete _acme-challenge.%s TXT "%s"\nsend\n' "$DOMAIN" "$TOKEN_VALUE" | nsupdate -k /var/run/named/session.key
@ -152,38 +212,37 @@ clean_challenge() {
} }
# Called after the certificates have been created but before they are symlinked.
# This allows the sync the files to disk to prevent creating a symlink to empty files on unexpected system crashes.
# This hook is not intended to be used for further processing of certificate files; see deploy_cert for that.
sync_cert() { sync_cert() {
# Parameters:
# $1 (KEYFILE) The path of the file containing the private key.
# $2 (CERTFILE) The path of the file containing the signed certificate.
# $3 (FULLCHAINFILE) The path of the file containing the full certificate chain.
# $4 (CHAINFILE) The path of the file containing the intermediate certificate(s).
# $5 (REQUESTFILE) The path of the file containing the certificate signing request.
local KEYFILE="$1" CERTFILE="$2" FULLCHAINFILE="$3" CHAINFILE="$4" REQUESTFILE="$5" local KEYFILE="$1" CERTFILE="$2" FULLCHAINFILE="$3" CHAINFILE="$4" REQUESTFILE="$5"
# This hook is called after the certificates have been created but before they are symlinked. sync "$KEYFILE" "$CERTFILE" "$FULLCHAINFILE" "$CHAINFILE" "$REQUESTFILE"
# This allows you to sync the files to disk to prevent creating a symlink to empty files on unexpected system crashes.
# This hook is not intended to be used for further processing of certificate files; see deploy_cert for that.
# Parameters:
# KEYFILE - The path of the file containing the private key.
# CERTFILE - The path of the file containing the signed certificate.
# FULLCHAINFILE - The path of the file containing the full certificate chain.
# CHAINFILE - The path of the file containing the intermediate certificate(s).
# REQUESTFILE - The path of the file containing the certificate signing request.
# Simple example: sync the files before symlinking them
# sync "$KEYFILE" "$CERTFILE" "$FULLCHAINFILE" "$CHAINFILE" "$REQUESTFILE"
return 0 return 0
} }
# Called once for each certificate that has been produced.
# Here you can copy your new certificates to service-specific locations and reload the service.
deploy_cert() { deploy_cert() {
local DOMAIN="$1" KEYFILE="$2" CERTFILE="$3" FULLCHAINFILE="$4" CHAINFILE="$5" TIMESTAMP="$6"
# This hook is called once for each certificate that has been produced.
# Here you might, for instance, copy your new certificates to service-specific locations and reload the service.
# Parameters: # Parameters:
# DOMAIN - The primary domain name, i.e. the certificate common name (CN). # $1 (DOMAIN) The primary domain name, i.e. the certificate common name (CN).
# KEYFILE - The path of the file containing the private key. # $2 (KEYFILE) The path of the file containing the private key.
# CERTFILE - The path of the file containing the signed certificate. # $3 (CERTFILE) The path of the file containing the signed certificate.
# FULLCHAINFILE - The path of the file containing the full certificate chain. # $4 (FULLCHAINFILE) The path of the file containing the full certificate chain.
# CHAINFILE - The path of the file containing the intermediate certificate(s). # $5 (CHAINFILE) The path of the file containing the intermediate certificate(s).
# TIMESTAMP - Timestamp when the specified certificate was created. # $6 (TIMESTAMP) Timestamp when the specified certificate was created.
local DOMAIN="$1" KEYFILE="$2" CERTFILE="$3" FULLCHAINFILE="$4" CHAINFILE="$5" TIMESTAMP="$6"
local FILE LOG_PREFIX="Certificate deployment" local FILE LOG_PREFIX="Certificate deployment"
@ -198,9 +257,10 @@ deploy_cert() {
} }
done done
# Only copy the certificate if it differs from the new one.
cmp "$CERTFILE" "$CERTSDIR/${DOMAIN}_cert.pem" >/dev/null 2>&1 || {
# The first time through this will create the files readable by root only, but better to err on the side of caution. # The first time through this will create the files readable by root only, but better to err on the side of caution.
# Subsequent runs will retain whatever permissions were set by the admin after the first run. # Subsequent runs will retain whatever permissions were set by the admin after the first run.
cmp "$CERTFILE" "$CERTSDIR/${DOMAIN}_cert.pem" >/dev/null 2>&1 || {
umask 066 umask 066
# shellcheck disable=SC2015 # shellcheck disable=SC2015
cat "$CERTFILE" >"$CERTSDIR/${DOMAIN}_cert.pem" && cat "$KEYFILE" >"$CERTSDIR/${DOMAIN}_key.pem" && cat "$CHAINFILE" >"$CERTSDIR/${DOMAIN}_chain.pem" && cat "$FULLCHAINFILE" >"$CERTSDIR/${DOMAIN}_fullchain.pem" || { cat "$CERTFILE" >"$CERTSDIR/${DOMAIN}_cert.pem" && cat "$KEYFILE" >"$CERTSDIR/${DOMAIN}_key.pem" && cat "$CHAINFILE" >"$CERTSDIR/${DOMAIN}_chain.pem" && cat "$FULLCHAINFILE" >"$CERTSDIR/${DOMAIN}_fullchain.pem" || {
@ -211,7 +271,7 @@ deploy_cert() {
} }
# Set a marker (used in the exit_hook function) to signal that services should be reloaded at the end of deployments. # Set a marker (used in the exit_hook function) to signal that services should be reloaded at the end of deployments.
touch /run/dehydrated-reload-marker || { touch "/run/dehydrated-reload-marker" || {
notify "warning" "Failed to create reload marker during '$DOMAIN' certificate deployment - reloading services manually may be required -- check server" notify "warning" "Failed to create reload marker during '$DOMAIN' certificate deployment - reloading services manually may be required -- check server"
# Return 0 so that dehydrated doesn't stop - there may be some more certificates to renew. # Return 0 so that dehydrated doesn't stop - there may be some more certificates to renew.
return 0 return 0
@ -225,15 +285,15 @@ deploy_cert() {
} }
# Called once for each updated OCSP stapling file that has been produced.
# Here you can copy your new OCSP stapling files to service-specific locations and reload the service.
deploy_ocsp() { deploy_ocsp() {
local DOMAIN="$1" OCSPFILE="$2" TIMESTAMP="$3"
# This hook is called once for each updated ocsp stapling file that has been produced.
# Here you might, for instance, copy your new ocsp stapling files to service-specific locations and reload the service.
# Parameters: # Parameters:
# DOMAIN - The primary domain name, i.e. the certificate common name (CN). # $1 (DOMAIN) The primary domain name, i.e. the certificate common name (CN).
# OCSPFILE - The path of the ocsp stapling file. # $2 (OCSPFILE) The path of the OCSP stapling file.
# TIMESTAMP - Timestamp when the specified ocsp stapling file was created. # $3 (TIMESTAMP) Timestamp when the specified OCSP stapling file was created.
local DOMAIN="$1" OCSPFILE="$2" TIMESTAMP="$3"
# Simple example: Copy file to nginx config # Simple example: Copy file to nginx config
# cp "$OCSPFILE" /etc/nginx/ssl/; chown -R nginx: /etc/nginx/ssl # cp "$OCSPFILE" /etc/nginx/ssl/; chown -R nginx: /etc/nginx/ssl
@ -243,28 +303,28 @@ deploy_ocsp() {
} }
# Called once for each certificate that is still valid and therefore wasn't reissued.
unchanged_cert() { unchanged_cert() {
local DOMAIN="$1" KEYFILE="$2" CERTFILE="$3" FULLCHAINFILE="$4" CHAINFILE="$5"
# This hook is called once for each certificate that is still valid and therefore wasn't reissued.
# Parameters: # Parameters:
# DOMAIN - The primary domain name, i.e. the certificate common name (CN). # $1 (DOMAIN) The primary domain name, i.e. the certificate common name (CN).
# KEYFILE - The path of the file containing the private key. # $2 (KEYFILE) The path of the file containing the private key.
# CERTFILE - The path of the file containing the signed certificate. # $3 (CERTFILE) The path of the file containing the signed certificate.
# FULLCHAINFILE - The path of the file containing the full certificate chain. # $4 (FULLCHAINFILE) The path of the file containing the full certificate chain.
# CHAINFILE - The path of the file containing the intermediate certificate(s). # $5 (CHAINFILE) The path of the file containing the intermediate certificate(s).
local DOMAIN="$1" KEYFILE="$2" CERTFILE="$3" FULLCHAINFILE="$4" CHAINFILE="$5"
return 0 return 0
} }
# Called if the challenge response has failed, so domain owners can be aware and act accordingly.
invalid_challenge() { invalid_challenge() {
local DOMAIN="$1" RESPONSE="$2"
# This hook is called if the challenge response has failed, so domain owners can be aware and act accordingly.
# Parameters: # Parameters:
# DOMAIN - The primary domain name, i.e. the certificate common name (CN). # $1 (DOMAIN) The primary domain name, i.e. the certificate common name (CN).
# RESPONSE - The response that the verification server returned # $2 (RESPONSE) The response that the verification server returned
local DOMAIN="$1" RESPONSE="$2"
# Notify the sysadmin. # Notify the sysadmin.
notify "error" "Validation of '$DOMAIN' failed:" "$RESPONSE" notify "error" "Validation of '$DOMAIN' failed:" "$RESPONSE"
@ -273,154 +333,174 @@ invalid_challenge() {
} }
# Called when an HTTP request fails (e.g., when the ACME server is busy, returns an error, etc).
# It will be called upon any response code that does not start with '2'. Useful to alert admins about problems with requests.
request_failure() { request_failure() {
# Parameters:
# $1 (STATUSCODE) The HTML status code that originated the error.
# $2 (REASON) The specified reason for the error.
# $3 (REQTYPE) The kind of request that was made (GET, POST...)
local STATUSCODE="$1" REASON="$2" REQTYPE="$3" HEADERS="$4" local STATUSCODE="$1" REASON="$2" REQTYPE="$3" HEADERS="$4"
# This hook is called when an HTTP request fails (e.g., when the ACME server is busy, returns an error, etc).
# It will be called upon any response code that does not start with '2'. Useful to alert admins about problems with requests.
# Parameters:
# STATUSCODE - The HTML status code that originated the error.
# REASON - The specified reason for the error.
# REQTYPE - The kind of request that was made (GET, POST...)
# Notify the sysadmin. # Notify the sysadmin.
notify "error" "HTTP $REQTYPE request failed for '$DOMAIN' with code '$STATUSCODE'" "Reason: $REASON" "Headers:" "$HEADERS" notify "error" "HTTP '$REQTYPE' request failed for '$DOMAIN' with code '$STATUSCODE'" "Reason: $REASON" "Headers:" "$HEADERS"
return 0 return 0
} }
# Called before any certificate signing operation takes place.
# It can be used to generate or fetch a certificate signing request with external tools.
# The output should be just the cerificate signing request formatted as PEM.
generate_csr() { generate_csr() {
local DOMAIN="$1" CERTDIR="$2" ALTNAMES="$3"
# This hook is called before any certificate signing operation takes place.
# It can be used to generate or fetch a certificate signing request with external tools.
# The output should be just the cerificate signing request formatted as PEM.
# Parameters: # Parameters:
# DOMAIN - The primary domain as specified in domains.txt. # $1 (DOMAIN) The primary domain as specified in domains.txt.
# This does not need to match with the domains in the CSR, it's basically just the directory name. # This does not need to match with the domains in the CSR, it's basically just the directory name.
# CERTDIR - Certificate output directory for this particular certificate. # $2 (CERTDIR) Certificate output directory for this particular certificate.
# Can be used for storing additional files. # Can be used for storing additional files.
# ALTNAMES - All domain names for the current certificate as specified in domains.txt. # $3 (ALTNAMES) All domain names for the current certificate as specified in domains.txt.
# Again, this doesn't need to match with the CSR, it's just there for convenience. # Again, this doesn't need to match with the CSR, it's just there for convenience.
local DOMAIN="$1" CERTDIR="$2" ALTNAMES="$3"
# Simple example: Look for pre-generated CSRs # Simple example: Look for pre-generated CSRs
# if [ -e "$CERTDIR/pre-generated.csr" ]; then # [[ -e "$CERTDIR/pre-generated.csr" ]] && cat "$CERTDIR/pre-generated.csr"
# cat "$CERTDIR/pre-generated.csr"
# fi
return 0 return 0
} }
# Called before the cron command to do some initial tasks (e.g. starting a webserver).
startup_hook() { startup_hook() {
# This hook is called before the cron command to do some initial tasks (e.g. starting a webserver).
local LOG_PREFIX="Dehydrated startup" local LOG_PREFIX="Dehydrated startup"
# Read services configuration (with sanity check) # The 'root' user is required.
services 1 || return 1 (( $(id -u) != 0 )) && {
notify "error" "Must be running as 'root' -- aborting"
return 1
}
# Read services configuration (with sanity checks).
services "1"
# Make sure the certificates directory exists. # Make sure the certificates directory exists.
[[ -n "$CERTSDIR" ]] && { [[ -n "$CERTSDIR" ]] && {
umask 022 umask 022
# shellcheck disable=SC2174 # shellcheck disable=SC2174
mkdir -p -m 0755 "$CERTSDIR" 2>/dev/null || { mkdir -p -m 0755 "$CERTSDIR" 2>/dev/null || {
notify "error" "Failed to create certificate storage directory -- aborting" notify "error" "Failed to create certificate storage directory '$CERTSDIR' -- aborting"
return 1 return 1
} }
} }
# If an HTTP daemon rc script is available and the service is not already running, start it. # If an HTTP daemon is not already running, start it.
[[ -n "$RCFILE_HTTPD" ]] && { [[ -n "${SERVICE_CTL['httpd']}" ]] && {
pgrep -c ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 || { pgrep -c ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 || {
"$RCFILE_HTTPD" start >/dev/null 2>&1 "${SERVICE_CTL['httpd']}" "start" >/dev/null 2>&1
sleep 5 sleep 5
if pgrep -c ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1; then if pgrep -c ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1; then
# Set a marker (used in exit_hook()) to signal that the HTTP daemon should be stopped at the end of deployments. # Set a marker (used in exit_hook()) to signal that the HTTP daemon should be stopped at the end of deployments.
touch /run/dehydrated-http-daemon-stop-marker 2>/dev/null || notify "warning" "Failed to create HTTP daemon stop marker - HTTP daemon will be left running -- check server" touch "/run/dehydrated-http-daemon-stop-marker" 2>/dev/null || notify "warning" "Failed to create HTTP daemon stop marker - HTTP daemon will be left running -- check server"
else else
notify "error" "Failure of '$RCFILE_HTTPD' to start HTTP daemon -- aborting" notify "error" "Failed to start HTTP daemon for nonce validation -- aborting"
return 1 return 1
fi fi
} }
}
# Add firewall rules to allow HTTP traffic so the nonce can be validated. # Add firewall rules to allow HTTP traffic so the nonce can be validated.
{ iptables -N dehydrated && ip6tables -N dehydrated && iptables -I INPUT 1 -j dehydrated && ip6tables -I INPUT 1 -j dehydrated && iptables -I dehydrated 1 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT && ip6tables -I dehydrated 1 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT; } >/dev/null 2>&1 || { { iptables -N dehydrated && ip6tables -N dehydrated && \
notify "error" "Failed to insert firewall rules to allow nonce validation -- aborting" iptables -I INPUT 1 -j dehydrated && ip6tables -I INPUT 1 -j dehydrated && \
iptables -I dehydrated 1 -p tcp --dport 80 -j ACCEPT && ip6tables -I dehydrated 1 -p tcp --dport 80 -j ACCEPT; } >/dev/null 2>&1 || {
notify "warning" "Failed to insert firewall rules to allow nonce validation"
return 1 return 1
} }
}
return 0 return 0
} }
# Called at the end of the cron command and can be used to do some final (cleanup or other) tasks.
exit_hook() { exit_hook() {
local ERROR="$1"
# This hook is called at the end of the cron command and can be used to do some final (cleanup or other) tasks.
# Parameters: # Parameters:
# ERROR - Contains error message if dehydrated exits with error. # $1 (ERROR) Contains error message if dehydrated exits with error.
local DAEMON ERR=0 LOG_PREFIX="Dehydrated shutdown" PIDFILE RCFILE TIMEOUT=30 local ERROR="$1"
local ERR=0 LOG_PREFIX="Dehydrated shutdown" SERVICE TIMEOUT=30
# Read services configuration (without sanity check - this was already done at startup) # Read services configuration (without sanity check - this was already done at startup)
services 0 || return 1 services 0
# Delete firewall rules that was added to allow HTTP traffic.
iptables -C INPUT -j dehydrated >/dev/null 2>&1 && iptables -D INPUT -j dehydrated >/dev/null 2>&1
ip6tables -C INPUT -j dehydrated >/dev/null 2>&1 && ip6tables -D INPUT -j dehydrated >/dev/null 2>&1
iptables -F dehydrated >/dev/null 2>&1
ip6tables -F dehydrated >/dev/null 2>&1
iptables -X dehydrated >/dev/null 2>&1
ip6tables -X dehydrated >/dev/null 2>&1
# If the reload marker was set, restart services. # If the reload marker was set, restart services.
[[ -e /run/dehydrated-reload-marker ]] && { [[ -e "/run/dehydrated-reload-marker" ]] && {
for RCFILE in "${!RCFILE_@}"; do local IFS=$'\n'
DAEMON="DAEMON_${RCFILE#RCFILE_}" for SERVICE in $(printf "%s\\n" "${!SERVICE_CTL[@]}"); do
PIDFILE="PIDFILE_${RCFILE#RCFILE_}"
# If the HTTP daemon is going to be shut down, there's no need to restart it. # If the HTTP daemon is going to be shut down, there's no need to restart it.
[[ "$RCFILE" == "RCFILE_HTTPD" ]] && [[ -e /run/dehydrated-http-daemon-stop-marker ]] && continue [[ "$SERVICE" == "httpd" ]] && [[ -e "/run/dehydrated-http-daemon-stop-marker" ]] && continue
# Restart the service.
"${!RCFILE}" restart >/dev/null 2>&1 || notify "warning" "Failed to restart service '${!DAEMON}' -- check server" # Restart the services.
sleep "$TIMEOUT" "${SERVICE_CTL[\"$SERVICE\"]}" "restart" >/dev/null 2>&1 || {
pgrep -c ${PIDFILE:+-F "${!PIDFILE}"} "${!DAEMON}" >/dev/null 2>&1 || { notify "error" "Controlled restart of service '$SERVICE' failed -- check server"
notify "warning" "Service '${!DAEMON}' exited unexpectedly - trying to start again"
"${!RCFILE}" start >/dev/null 2>&1 || notify "warning" "Failed to start service '${!DAEMON}' -- check server"
sleep "$TIMEOUT"
pgrep -c ${PIDFILE:+-F "${!PIDFILE}"} "${!DAEMON}" >/dev/null 2>&1 || {
notify "warning" "Service '${!DAEMON}' failed to restart correctly -- check server"
ERR=1 ERR=1
continue
}
sleep "$TIMEOUT"
pgrep -c ${SERVICE_PIDFILE["$SERVICE"]:+-F "${SERVICE_PIDFILE[\"$SERVICE\"]}"} "${SERVICE_DAEMON[\"$SERVICE\"]}" >/dev/null 2>&1 || {
notify "warning" "Service '$SERVICE' exited unexpectedly - trying to start again"
"${SERVICE_CTL[\"$SERVICE\"]}" "start" >/dev/null 2>&1 || {
notify "error" "Controlled start of service '$SERVICE' failed -- check server"
ERR=1
continue
}
sleep "$TIMEOUT"
pgrep -c ${SERVICE_PIDFILE["$SERVICE"]:+-F "${SERVICE_PIDFILE[\"$SERVICE\"]}"} "${SERVICE_DAEMON[\"$SERVICE\"]}" >/dev/null 2>&1 || {
notify "error" "Multiple failures (re)starting service '$SERVICE' -- check server"
ERR=1
continue
} }
} }
done done
} }
# Remove the reload marker if all services restarted without issue. Keep the marker if any failed. # Remove the reload marker if all services restarted without issue. Keep the marker if any failed.
((ERR == 0)) && { rm -f /run/dehydrated-reload-marker 2>/dev/null || notify "warning" "Failed to remove services reload marker -- check server"; } (( ERR == 0 )) && {
rm -f "/run/dehydrated-reload-marker" 2>/dev/null || notify "warning" "Failed to remove services reload marker -- check server"
}
# If an HTTP daemon was started by dehydrated, stop it now. # If an HTTP daemon is configured, process the shutdown of it.
[[ -n "${SERVICE_CTL['httpd']}" ]] && {
# Delete firewall rules that were added to allow HTTP traffic.
{ iptables -C INPUT -j dehydrated && iptables -D INPUT -j dehydrated; } >/dev/null 2>&1
{ ip6tables -C INPUT -j dehydrated && ip6tables -D INPUT -j dehydrated; } >/dev/null 2>&1
iptables -F dehydrated >/dev/null 2>&1
ip6tables -F dehydrated >/dev/null 2>&1
iptables -X dehydrated >/dev/null 2>&1
ip6tables -X dehydrated >/dev/null 2>&1
# If an HTTP daemon was started in startup_hook(), stop it now.
ERR=0 ERR=0
[[ -e /run/dehydrated-http-daemon-stop-marker ]] && { [[ -e "/run/dehydrated-http-daemon-stop-marker" ]] && {
pgrep -c ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 && { pgrep -c ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 && {
"$RCFILE_HTTPD" stop >/dev/null 2>&1 || notify "warning" "Failed to gracefully stop service '$DAEMON_HTTPD' -- check server" "${SERVICE_CTL['httpd']}" "stop" >/dev/null 2>&1 || notify "error" "Controlled stop service of 'httpd' failed -- check server"
sleep "$TIMEOUT" sleep "$TIMEOUT"
pgrep -c ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 && { pgrep -c ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 && {
pkill -TERM ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 || notify "warning" "Failed to -SIGTERM service '$DAEMON_HTTPD' -- check server" pkill -TERM ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 || notify "warning" "Failed to SIGTERM service 'httpd' -- check server"
sleep "$TIMEOUT" sleep "$TIMEOUT"
pgrep -c ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 && { pgrep -c ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 && {
pkill -KILL ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 || notify "warning" "Failed to -SIGKILL service '$DAEMON_HTTPD' -- check server" pkill -KILL ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 || notify "warning" "Failed to SIGKILL service 'httpd' -- check server"
sleep 5 sleep 5
} }
} }
pgrep -c ${PIDFILE_HTTPD:+-F "$PIDFILE_HTTPD"} "$DAEMON_HTTPD" >/dev/null 2>&1 && notify "warning" "Failed to stop HTTP daemon that dehydrated started" && ERR=1 pgrep -c ${SERVICE_PIDFILE['httpd']:+-F "${SERVICE_PIDFILE['httpd']}"} "${SERVICE_DAEMON['httpd']}" >/dev/null 2>&1 && notify "error" "Failed to stop HTTP daemon that dehydrated started" && ERR=1
} }
} }
# If the HTTP daemon was stopped correctly, remove the stop marker. # If the HTTP daemon was stopped correctly, remove the stop marker.
((ERR == 0)) && { rm -f /run/dehydrated-http-daemon-stop-marker 2>/dev/null || notify "warning" "Failed to remove HTTP daemon stop marker -- check server"; } (( ERR == 0 )) && {
rm -f "/run/dehydrated-http-daemon-stop-marker" 2>/dev/null || notify "warning" "Failed to remove HTTP daemon stop marker -- check server"
}
}
return 0 return 0
} }

1
var/www/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/html/

2
var/www/dehydrated/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/*
!/.gitignore