venantiusAvatar border
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:

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 -"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 -'Ketik Nama Domain: ' domainvar
   fqdn
=$domainvar
   domain_regex
=$(echo $fqdn grep -'(?=^.{1,254}$)(^(?>(?!d+.)[a-zA-Z0-9-*]{1,63}.?)+(?:[a-zA-Z]{2,})$)')
   
domaintld=$(expr match "$fqdn" '.*.(.*..*&#92/;)/')

 while 
true; do
       if [[ -
"$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
nona212 memberi reputasi
1
310
2
GuestAvatar border
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Urutan
Terbaru
Terlama
GuestAvatar border
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Komunitas Pilihan