Bernd Wurst commited on 2025-12-24 16:33:25
Zeige 7 geänderte Dateien mit 41 Einfügungen und 3 Löschungen.
| ... | ... |
@@ -47,7 +47,7 @@ output('<div class="contact-list">');
|
| 47 | 47 |
$contacts = get_contacts(); |
| 48 | 48 |
$have_invalid = false; |
| 49 | 49 |
foreach ($contacts as $c) {
|
| 50 |
- if (possible_domainholder($c)) {
|
|
| 50 |
+ if (possible_domainholder($c, $_SESSION['contacts_choose_domainname'])) {
|
|
| 51 | 51 |
output(internal_link('', display_contact($c), "id={$c['id']}", 'class="contacts-choose"'));
|
| 52 | 52 |
} else {
|
| 53 | 53 |
$have_invalid = true; |
| ... | ... |
@@ -60,6 +60,20 @@ function apicontact_to_contact($ac) |
| 60 | 60 |
} |
| 61 | 61 |
|
| 62 | 62 |
|
| 63 |
+function missing_properties_for_tld($nic_id, $extension) |
|
| 64 |
+{
|
|
| 65 |
+ $data = ["contactId" => $nic_id, |
|
| 66 |
+ "allocation" => "owner", |
|
| 67 |
+ "domainSuffixes" => [$extension]]; |
|
| 68 |
+ $result = api_request('contactUsableFor', $data);
|
|
| 69 |
+ if ($result['status'] == 'success') {
|
|
| 70 |
+ if (count($result['response']['missingProperties']) > 0) {
|
|
| 71 |
+ return $result['response']['missingProperties']; |
|
| 72 |
+ } |
|
| 73 |
+ return []; |
|
| 74 |
+ } |
|
| 75 |
+ return null; |
|
| 76 |
+} |
|
| 63 | 77 |
|
| 64 | 78 |
function download_contact($nic_id) |
| 65 | 79 |
{
|
| ... | ... |
@@ -98,8 +98,21 @@ function possible_domainholders() |
| 98 | 98 |
return $ret; |
| 99 | 99 |
} |
| 100 | 100 |
|
| 101 |
-function possible_domainholder($c) |
|
| 101 |
+function possible_domainholder($c, $domainname=null) |
|
| 102 | 102 |
{
|
| 103 |
+ if ($domainname && $c['nic_id']) {
|
|
| 104 |
+ // Wenn NIC-ID nicht gesetzt ist, dann ignorieren wir das hier. Doof, eigentlich. |
|
| 105 |
+ $tld = preg_replace('/^.*\./', '', $domainname);
|
|
| 106 |
+ $missing = missing_properties_for_tld($c['nic_id'], $tld); |
|
| 107 |
+ if ($missing === null) {
|
|
| 108 |
+ logger(LOG_WARNING, "Es konnte nicht sicher geprüft werden, ob der Kontakt #{$c['id']} ({$c['name']}) für die Endung {$tld} nutzbar ist.");
|
|
| 109 |
+ } elseif ($missing === []) {
|
|
| 110 |
+ return true; |
|
| 111 |
+ } else {
|
|
| 112 |
+ warning("Dem Kontakt #{$c['id']} ({$c['name']}) fehlen für die Endung {$tld} folgende Datenfelder: " . implode(',', $missing) . "\n Diese Datenfelder können nur über den Support gesetzt werden!");
|
|
| 113 |
+ return false; |
|
| 114 |
+ } |
|
| 115 |
+ } |
|
| 103 | 116 |
if ($c['name'] && $c['address'] && $c['zip'] && $c['city'] && $c['country'] && $c['phone'] && $c['email']) {
|
| 104 | 117 |
return true; |
| 105 | 118 |
} |
| ... | ... |
@@ -31,12 +31,14 @@ if (isset($_GET['type'])) {
|
| 31 | 31 |
$t = 'Verwalter'; |
| 32 | 32 |
} |
| 33 | 33 |
$_SESSION['contacts_choose_header'] = 'Wählen Sie einen neuen ' . $t . ' für die Domain ' . $_SESSION['domains_' . $caller . '_domainname']; |
| 34 |
+ $_SESSION['contacts_choose_domainname'] = $_SESSION['domains_' . $caller . '_domainname']; |
|
| 34 | 35 |
$_SESSION['contacts_choose_key'] = 'domains_' . $caller . '_' . $function; |
| 35 | 36 |
$_SESSION['contacts_choose_redirect'] = '../domains/choose'; |
| 36 | 37 |
redirect('../contacts/choose');
|
| 37 | 38 |
} else {
|
| 38 | 39 |
unset($_SESSION['contacts_choose_key']); |
| 39 | 40 |
unset($_SESSION['contacts_choose_header']); |
| 41 |
+ unset($_SESSION['contacts_choose_domainname']); |
|
| 40 | 42 |
unset($_SESSION['contacts_choose_redirect']); |
| 41 | 43 |
$backto = $_SESSION['domains_choose_redirect']; |
| 42 | 44 |
unset($_SESSION['domains_choose_redirect']); |
| ... | ... |
@@ -107,7 +107,7 @@ output('<p>Legen Sie hier einen neuen Inhaber für diese Domain fest.</p>');
|
| 107 | 107 |
if ($_SESSION['domains_domainreg_owner'] === null) {
|
| 108 | 108 |
$kundenkontakte = get_kundenkontakte(); |
| 109 | 109 |
$customer = get_contact($kundenkontakte['kunde']); |
| 110 |
- if (possible_domainholder($customer)) {
|
|
| 110 |
+ if (possible_domainholder($customer, $dom->fqdn)) {
|
|
| 111 | 111 |
$_SESSION['domains_domainreg_owner'] = $kundenkontakte['kunde']; |
| 112 | 112 |
} else {
|
| 113 | 113 |
warning('Der Stammkontakt dieses Kundenkontos enthält nicht alle Daten, die als Domaininhaber ausgefüllt sein müssen. Wählen Sie daher bitte einen anderen Kontakt aus.');
|
| ... | ... |
@@ -79,7 +79,12 @@ $recipient = $customer['email']; |
| 79 | 79 |
if ($debugmode) {
|
| 80 | 80 |
$recipient = config('adminmail');
|
| 81 | 81 |
} |
| 82 |
+if (!$debugmode) {
|
|
| 83 |
+ // Keine Mail im Debug-Mode versenden |
|
| 82 | 84 |
send_mail($customer['email'], 'Domainregistrierung ' . $dom->fqdn, $msg); |
| 85 |
+} else {
|
|
| 86 |
+ warning("Im Debug-Modus wurde KEINE Bestätigungsmail versendet!");
|
|
| 87 |
+} |
|
| 83 | 88 |
|
| 84 | 89 |
api_register_domain($dom->fqdn, $authinfo); |
| 85 | 90 |
|
| ... | ... |
@@ -123,6 +123,10 @@ function api_register_domain($domainname, $authinfo = null) |
| 123 | 123 |
upload_contact($admin_c); |
| 124 | 124 |
$admin_c = get_contact($dom['admin_c']); |
| 125 | 125 |
} |
| 126 |
+ if (!possible_domainholder($owner, $domainname)) {
|
|
| 127 |
+ system_failure("Der Domain-Inhaber-Kontakt scheint nicht qualifiziert zu sein für diese Domainendung. Bitte wenden Sie sich an den Support.");
|
|
| 128 |
+ } |
|
| 129 |
+ |
|
| 126 | 130 |
$owner = $owner['nic_id']; |
| 127 | 131 |
$admin_c = $admin_c['nic_id']; |
| 128 | 132 |
|
| 129 | 133 |