fix: handle missing force_delete_start date

Update `force_delete_start_date` method to handle cases where `domain.force_delete_start` is not present:
- Return formatted current date plus expire warning period if `force_delete_start` is missing
- Ensure consistent date formatting across scenarios

This change prevents errors when `force_delete_start` is nil and provides a fallback date based on the current date and configured warning period.
This commit is contained in:
oleghasjanov 2025-02-21 10:40:39 +02:00
parent 5b1a5a6d06
commit ebff7a8321
10 changed files with 555 additions and 1 deletions

View file

@ -10,7 +10,11 @@ module Domains
end
def force_delete_start_date
domain.force_delete_start.strftime('%d.%m.%Y')
if domain.force_delete_start.present?
domain.force_delete_start&.strftime('%d.%m.%Y')
else
(Time.zone.today + Setting.expire_warning_period.days)&.strftime('%d.%m.%Y')
end
end
def notify_without_email

35
certs/ca/certs/ca.crt.pem Normal file
View file

@ -0,0 +1,35 @@
-----BEGIN CERTIFICATE-----
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
GxfJGH0WPgILpBo=
-----END CERTIFICATE-----

0
certs/ca/index.txt Normal file
View file

348
certs/ca/openssl.cnf Normal file
View file

@ -0,0 +1,348 @@
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
# Policies used by the TSA examples.
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = /opt/ca # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several certs with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extensions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = optional
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extensions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask = utf8only
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = EE
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Harjumaa
localityName = Locality Name (eg, city)
localityName_default = Tallinn
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Eesti Interneti Sihtasutus
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_default = hello@internet.ee
emailAddress_max = 64
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This is required for TSA certificates.
# extendedKeyUsage = critical,timeStamping
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
keyUsage = cRLSign, keyCertSign
# Some might want this also
# nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
####################################################################
[ tsa ]
default_tsa = tsa_config1 # the default TSA section
[ tsa_config1 ]
# These are used by the TSA reply generation only.
dir = /opt/ca # TSA root directory
serial = $dir/tsaserial # The current serial number (mandatory)
crypto_device = builtin # OpenSSL engine to use for signing
signer_cert = $dir/tsacert.pem # The TSA signing certificate
# (optional)
certs = $dir/cacert.pem # Certificate chain to include in reply
# (optional)
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
signer_digest = sha256 # Signing digest to use. (Optional)
default_policy = tsa_policy1 # Policy if request did not specify it
# (optional)
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory)
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
clock_precision_digits = 0 # number of digits after dot. (optional)
ordering = yes # Is ordering defined for timestamps?
# (optional, default: no)
tsa_name = yes # Must the TSA name be included in the reply?
# (optional, default: no)
ess_cert_id_chain = no # Must the ESS cert id chain be included?
# (optional, default: no)

View file

@ -0,0 +1,54 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
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
-----END ENCRYPTED PRIVATE KEY-----

1
certs/ca/serial Normal file
View file

@ -0,0 +1 @@
1000

32
certs/user.crt Normal file
View file

@ -0,0 +1,32 @@
-----BEGIN CERTIFICATE-----
MIIFeDCCA2CgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCRUUx
ETAPBgNVBAgMCEhhcmp1bWFhMRAwDgYDVQQHDAdUYWxsaW5uMSMwIQYDVQQKDBpF
ZXN0aSBJbnRlcm5ldGkgU2lodGFzdXR1czESMBAGA1UECwwJUkVHSVNUUkFSMSAw
HgYJKoZIhvcNAQkBFhFoZWxsb0BpbnRlcm5ldC5lZTAeFw0yNTAyMTkxMzEyMzJa
Fw0yNjAyMTkxMzEyMzJaMDYxFTATBgNVBAMMDG9sZWdoYXNqYW5vdjEOMAwGA1UE
CwwFRUUxMjMxDTALBgNVBAoMBE5PUk0wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDhUh0yUmzZ64C22ycZA+kTK8HvV3nJvq/4jFpPYbyWAjEPftqSeVR7
1BSpeLQ3YGdVri8lmzk+TrbIkR3jTjluOFHc8BLdagI0/sAHiSoLj/xffxHGsHJf
60X/0SkP17om5YoKfP7eZadjUcnus6A8eBeBB69konlrKjU0TL5Aa/JOGx8K5xGu
50prwXCYK2Zk7ycLYeoLrpZFOY7cTz7+TxnIfhqUtL93LbXOqRurPnDHhwLwNf8f
DjXtlFZUjWHdPWV6JwOkoS0sdpOBH8Flb0Rgxka8U8OFR9PAl06ZiIcFxOCtAsRB
SMJJ07K0ly8HUQxz73LqxUcim0Zgz1QnlP6TJ3Xbx8xcpbxMX3lk4yAoi7im3/Zz
7qVhP998No5GH7ovy5ncBNkOjlEDYaD7V9bNIv1NgAhhet6Z0sp2ySqq+OnQZpVN
B2q5leVJiMUBTAAt6KRzp97k7tyB2ihUhCpUE4ww0Ns0jm2/bktdGTIqBmo6GdoO
EWtLU/PKouuHtKg2m73UvOxQuuwvSMudC5vm56y6cqdZmwSxCW4T7UrhQqKbJ4+d
HTE7WKTgLjC0lJiy1/khB1nP+Ew5UciUZfGyTpcOJ3/nUcntEUHq+zkH2K0vmSXO
doSi1NFHk0ElaGTeVFNTDkho7pl/gGqHGLGJaZyht7rF+GH5v2fY/wIDAQABozkw
NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAdBgNVHQ4EFgQUvAn+wEaQPEWDWfK2
9sCg5wf0P4UwDQYJKoZIhvcNAQELBQADggIBAFnlFHJwyJgpKWBXj4EiKa4/HGVS
9Wz+sHANcRXSbcMzW3toY/qamA2llkE75N/hq71O3SrMWCwvBJyyrHU2MxF9Aeb7
/XqegN4ldnbtnuLIcefqiTfpQb6Hm3Qj6cSMRymTs9+Ht5LVmIEolccQ9idbNPVv
e2N62GPTLuK+/WmSeX/cUhiexVD00rkKS37QPwkq5E1uLGm+Eu1j/HJIK+TaAv1X
IWWEWxBBKpg43dOaAAPDH8jQt52v4CM9WGEX3XGoVed9Or2Np0yP2cIT92zmeVXW
12PVjSPOSdc3/3RM578gdyZmUhg96dUKReG6H3bbiUswNLNfBp46Jmhu1UPxjaBk
cdU1yx3/q85Tdz2qarDMmTybC9+8QWc3SBEHqVlpE9xhQC2XNRuY+mbPPTvk9/D0
Ed4tHml22NgLm0vxaDDT8aR2gYxhStWX+Z98nKBo5uB1vDahhIETWo6+AIzms6wq
nnDuWQ7yGHEvsbpRjAzrc5CLl/IaJCOQ3GCb4ib7oSzcfDY1S8ab2wRInid3RrAs
5R92Si0oY2ArXbx0/a0v/90X9mVtjbmrclrf88qevIa77q4Z5SGjIUnXekyPUrWL
Q6jbqgaqjiA7o2ymXMZEBjA7nkI39pS561wwfdUZczsxFlG/Tp9ZLxTlMcA0iG3A
VYBXxIfJEHS3OaOE
-----END CERTIFICATE-----

26
certs/user.csr Normal file
View file

@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIEezCCAmMCAQAwNjEVMBMGA1UEAwwMb2xlZ2hhc2phbm92MQ4wDAYDVQQLDAVF
RTEyMzENMAsGA1UECgwETk9STTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
ggIBAOFSHTJSbNnrgLbbJxkD6RMrwe9Xecm+r/iMWk9hvJYCMQ9+2pJ5VHvUFKl4
tDdgZ1WuLyWbOT5OtsiRHeNOOW44UdzwEt1qAjT+wAeJKguP/F9/Ecawcl/rRf/R
KQ/Xuibligp8/t5lp2NRye6zoDx4F4EHr2SieWsqNTRMvkBr8k4bHwrnEa7nSmvB
cJgrZmTvJwth6guulkU5jtxPPv5PGch+GpS0v3cttc6pG6s+cMeHAvA1/x8ONe2U
VlSNYd09ZXonA6ShLSx2k4EfwWVvRGDGRrxTw4VH08CXTpmIhwXE4K0CxEFIwknT
srSXLwdRDHPvcurFRyKbRmDPVCeU/pMnddvHzFylvExfeWTjICiLuKbf9nPupWE/
33w2jkYfui/LmdwE2Q6OUQNhoPtX1s0i/U2ACGF63pnSynbJKqr46dBmlU0HarmV
5UmIxQFMAC3opHOn3uTu3IHaKFSEKlQTjDDQ2zSObb9uS10ZMioGajoZ2g4Ra0tT
88qi64e0qDabvdS87FC67C9Iy50Lm+bnrLpyp1mbBLEJbhPtSuFCopsnj50dMTtY
pOAuMLSUmLLX+SEHWc/4TDlRyJRl8bJOlw4nf+dRye0RQer7OQfYrS+ZJc52hKLU
0UeTQSVoZN5UU1MOSGjumX+AaocYsYlpnKG3usX4Yfm/Z9j/AgMBAAGgADANBgkq
hkiG9w0BAQsFAAOCAgEAQozkfQOLODOatZNRAqTxUs9OL9izNgXNE3FVB7rDBWIg
0WxuXwm+BgrZGnd0I50Wb/MV3v64Rv33IDS0TbXYi7mTlT8dAXMnrnj6KnRy5cCZ
O8aORGU4skt3WTZtq4u8f5PRji77VYpmWjSlB12S0MPrVE9eiOzdx+aRZWctO9PX
cj9J7SFnQHKrjHUjaBoLz6xdNxklDj//dCDxKW6VEWV6jhoVRP2k8137WgHkLGkU
S0L2JZl7FwwM01D6Mfw25yRItDuc6h6NByURfY5Svl7yURW4wPvcW3VukxxHUNZo
hrI1dJc9VW7xJ00V/VFeXA9nJTIHpwFTYsOrLvgHwXolW6Y+frFjtmFHHl3TTqwx
gJjg0kEAHVpYO7W0qGokS2y1bvyZdLOwb77dzHOqj3XISF5ij6tUIfMDuRdJg+6L
u5/BfXpC19eU4F3U1eWe8EWWwPVrkwXAyfx+wz1i3A5CkxajkXCYZ2WZzE0LXjpL
nSxCRYfVP2NHwqMV9fT36NpZwV/sBSF+TTlrAKK0in46oya1CftRbD5rStOnJYj/
iQCrdF6OYTGW74ZHG45PBxcUXIDLvFwiUzNl1Ot7z+zB2G1BEHAREM+iX5cC20+P
eqoHFDwzC2zeFAi4zSkdf80vJeMLqI4v4a2fl9vVmXh9+MXzY2UqFoJeGI2Bk4E=
-----END CERTIFICATE REQUEST-----

54
certs/user.key Normal file
View file

@ -0,0 +1,54 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,2F7C3EC575CB0FD49F3C523AD16F255F
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
-----END RSA PRIVATE KEY-----

BIN
certs/user.p12 Normal file

Binary file not shown.