- Beranda
- Komunitas
- Tech
- Programmer Forum
[Tanya] Validasi FQDN dengan Regex pada BASH
TS
venantius
[Tanya] Validasi FQDN dengan Regex pada BASH
Saya sedang coba-coba membuat script bash interaktif untuk memudahkan pembuatan, pembaruan, ataupun pembatalan sertifikat TLS untuk single atau wildcard domain dengan melakukan request ke server api Letsencrypt atau Buypass Go.
Cuma di bagian validasi inputan awalnya masih ada "bug" di regexnya, yang diiginkan adalah karakter asterisk "*" hanya dianggap valid apabila posisinya berada di awal sebelum karakter dot "." yang pertama.
Contohnya:
*.namadomain.tld
*.subdomain.namadomain.tld
*.sub.subdomain.namadomain.tld
Sedangkan kalau yang diinputkan:
sub*.namadomain.tld
sub.nama*domain.tld
sub.namadomain*.tld
Seharusnya tidak dianggap sebagai input yang valid. Penggalan kode script yang saya buat:
Cuma di bagian validasi inputan awalnya masih ada "bug" di regexnya, yang diiginkan adalah karakter asterisk "*" hanya dianggap valid apabila posisinya berada di awal sebelum karakter dot "." yang pertama.
Contohnya:
*.namadomain.tld
*.subdomain.namadomain.tld
*.sub.subdomain.namadomain.tld
Sedangkan kalau yang diinputkan:
sub*.namadomain.tld
sub.nama*domain.tld
sub.namadomain*.tld
Seharusnya tidak dianggap sebagai input yang valid. Penggalan kode script yang saya buat:
PHP Code:
#!/bin/bash
# Script to renew letsenscrypt ssl certificate
echo ""
echo "Script Sertifikat TLS Letsencrypt / Buypass GO"
echo ""
echo "Pilih salah satu opsi berikut ini"
echo " 1) Terbitkan sertifikat tls baru"
echo " 2) Perpanjang sertifikat tls"
echo " 3) Cabut serifikat tls"
echo " 4) Keluar"
echo ""
echo -n "Pilihan Anda: "
read opsi
case $opsi in
1)
parameter="--issue"
ket="pembuatan"
;;
2)
parameter="--renew"
ket="pembaruan"
;;
3)
parameter="--revoke"
ket="pencabutan"
;;
4)
exit 0
;;
*)
echo "Pilihan tidak berlaku!";;
esac
VALIDASI() {
read -p 'Ketik Nama Domain: ' domainvar
fqdn=$domainvar
domain_regex=$(echo $fqdn | grep -P '(?=^.{1,254}$)(^(?>(?!d+.)[a-zA-Z0-9-*]{1,63}.?)+(?:[a-zA-Z]{2,})$)')
domaintld=$(expr match "$fqdn" '.*.(.*..*\/;)/')
while true; do
if [[ -z "$domain_regex" ]]
then
echo " Nama domain yang dimasukkan harus sesuai FQDN"
VALIDASI
else
return
fi
done
}
VALIDASI
## Memproses permintaan ke server api acme letsencrypt dengan mengeksekusi script acmessl
echo ""
echo "Memproses $ket sertifikat TLS"
export NSUPDATE_ZONE="$domaintld"
acmessl $parameter --dns dns_nsupdate -d $domainvar
# Check nomor serial SOA domain zone
soa_sn=$(dig +short $domaintld SOA | awk '{print $3}' | sed 's/..$//')
waktu_utc=$(date --utc +%Y%m%d)
Diubah oleh venantius 30-10-2019 18:10
nona212 memberi reputasi
1
310
2
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Urutan
Terbaru
Terlama
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Komunitas Pilihan