@@ -445,10 +445,11 @@ public function request_certificates($data, $server_type = 'apache') {
445445 }
446446 foreach ($ queryDomains as $ queryDomain ) {
447447 $ sql = "SELECT * FROM dns_soa WHERE active = 'y' AND origin = ' " . $ queryDomain . ".' " ;
448- if (is_array ($ app ->dbmaster ->queryOneRecord ($ sql ))) {
448+ $ soa = $ app ->dbmaster ->queryOneRecord ($ sql );
449+ if (is_array ($ soa )) {
449450 $ zoneExists = true ;
450451 $ zonedomain = $ queryDomain ;
451- $ dns_server_id = $ sql ['server_id ' ];
452+ $ dns_server_id = $ soa ['server_id ' ];
452453 break ;
453454 }
454455 }
@@ -500,25 +501,29 @@ public function request_certificates($data, $server_type = 'apache') {
500501 $ app ->log ("Let's Encrypt SSL Cert domains: $ cli_domain_arg " , LOGLEVEL_DEBUG );
501502
502503 if ($ use_acme && $ global_sites_config ['acme_dns_user ' ] != '' && $ dns_server_id == $ conf ["server_id " ]) {
504+ $ firstrun = true ;
503505 $ dns_config = $ app ->getconf ->get_server_config ($ conf ["server_id " ], 'dns ' );
504506 $ zonefile = $ dns_config ['bind_zonefiles_dir ' ].'/ ' . "pri. " . $ zonedomain ;
505507 $ datalogfound = false ;
506- while ($ success = $ app ->system ->_exec ($ letsencrypt_cmd , $ allow_return_codes )) {
507- while (!$ datalogfound ) {
508- $ sql = "SELECT data FROM sys_datalog WHERE dbtable = 'dns_rr' AND data LIKE '%_acme-challenge%' AND status = 'pending' " ;
509- $ datalogs = $ app ->dbmaster ->queryAllRecords ($ sql );
510- if (is_array ($ datalogs )) {
511- foreach ($ datalogs as $ datalog ) {
512- $ datalog = unserialize ($ datalog );
513- $ hostname = $ datalog ['new ' ]['name ' ];
514- $ data = $ datalog ['new ' ]['data ' ];
515- $ record = "\n" . $ hostname . ". " . $ zonedomain . ". " . " 3600 TXT \"" . $ data . "\"" ;
516- file_put_contents ($ zonefile , $ record , FILE_APPEND | LOCK_EX );
517- }
518- $ app ->services ->restartService ('named ' , 'restart ' );
519- $ datalogfound = true ;
520- break ;
508+ while (!$ datalogfound ) {
509+ if ($ firstrun == true ) {
510+ $ success = $ app ->system ->_exec ($ letsencrypt_cmd , $ allow_return_codes );
511+ $ firstrun = false ;
512+ }
513+ $ sql = "SELECT data FROM sys_datalog WHERE dbtable = 'dns_rr' AND data LIKE '%_acme-challenge%' AND status = 'pending' " ;
514+ $ datalogs = $ app ->dbmaster ->queryAllRecords ($ sql );
515+ if (is_array ($ datalogs )) {
516+ foreach ($ datalogs as $ datalog ) {
517+ $ datalog = unserialize ($ datalog );
518+ $ hostname = $ datalog ['new ' ]['name ' ];
519+ $ data = $ datalog ['new ' ]['data ' ];
520+ $ record = "\n" . $ hostname . ". " . $ zonedomain . ". " . " 3600 TXT \"" . $ data . "\"" ;
521+ file_put_contents ($ zonefile , $ record , FILE_APPEND | LOCK_EX );
521522 }
523+ $ app ->services ->registerService ('bind ' , 'dns_module ' , 'restartBind ' );
524+ $ app ->services ->restartService ('bind ' , 'restart ' );
525+ $ datalogfound = true ;
526+ break ;
522527 }
523528 }
524529 } else {
0 commit comments