Lasse die API bestimmen was bei einer Domain die Endung ist und ob der Domainname gültig ist
Bernd Wurst

Bernd Wurst commited on 2018-02-20 11:35:38
Zeige 5 geänderte Dateien mit 26 Einfügungen und 25 Löschungen.

... ...
@@ -83,6 +83,9 @@ function redirect($target)
83 83
   if (! $debugmode) {
84 84
     header("Location: {$target}");
85 85
   } else {
86
+      if ($target == '') {
87
+          $target = $_SERVER['REQUEST_URI'];
88
+      }
86 89
       if (strpos($target, '?') === false) {
87 90
         print 'REDIRECT: '.internal_link($target, $target);
88 91
       } else {
... ...
@@ -51,13 +51,13 @@ if (isset($_REQUEST['domain'])) {
51 51
     if ($avail['status'] == 'available') {
52 52
         output('<p class="domain-available">Die Domain '.filter_input_general($_REQUEST['domain']).' ist verfügbar!</p>');
53 53
         # Neue Domain eintragen
54
-        $data = get_domain_offer($_REQUEST['domain']);
54
+        $data = get_domain_offer($avail['domainSuffix']);
55 55
         if (!$data) {
56 56
             redirect('');
57 57
         }
58 58
         $form = '<p>Folgende Konditionen gelten bei Registrierung der Domain im nächsten Schritt:</p>
59 59
             <table>
60
-            <tr><td>Domainname:</td><td><strong>'.$data['domainname'].'</strong></td></tr>
60
+            <tr><td>Domainname:</td><td><strong>'.filter_input_general($_REQUEST['domain']).'</strong></td></tr>
61 61
             <tr><td>Jahresgebühr:</td><td style="text-align: right;">'.$data['gebuehr'].' €</td></tr>';
62 62
         if ($data['setup']) {
63 63
             $form .= '<tr><td>Setup-Gebühr (einmalig):</td><td style="text-align: right;">'.$data['setup'].' €</td></tr>';
... ...
@@ -76,7 +76,7 @@ if (isset($_REQUEST['domain'])) {
76 76
         if ($avail['status'] == 'registered' && $avail['transferMethod'] != 'authInfo') {
77 77
             output('<p>Diese Domainendung kann nicht automatisiert übertragen werden. Bitte wenden Sie sich an den Support.</p>');
78 78
         } else {
79
-            $data = get_domain_offer($_REQUEST['domain']);
79
+            $data = get_domain_offer($avail['domainSuffix']);
80 80
 
81 81
             if (! $data) {
82 82
                 // Die Include-Datei setzt eine passende Warning-Nachricht
... ...
@@ -85,7 +85,7 @@ if (isset($_REQUEST['domain'])) {
85 85
 
86 86
                 $form = '<p>Folgende Konditionen gelten beim Transfer der Domain im nächsten Schritt:</p>
87 87
                     <table>
88
-                    <tr><td>Domainname:</td><td><strong>'.$data['domainname'].'</strong></td></tr>
88
+                    <tr><td>Domainname:</td><td><strong>'.filter_input_general($avail['domainNameUnicode']).'</strong></td></tr>
89 89
                     <tr><td>Jahresgebühr:</td><td style="text-align: right;">'.$data['gebuehr'].' €</td></tr>';
90 90
                 if ($data['setup']) {
91 91
                     $form .= '<tr><td>Setup-Gebühr (einmalig):</td><td style="text-align: right;">'.$data['setup'].' €</td></tr>';
... ...
@@ -93,7 +93,7 @@ if (isset($_REQUEST['domain'])) {
93 93
                 $form .='</table>';
94 94
 
95 95
 
96
-                $form .= '<p><input type="hidden" name="domain" value="'.filter_input_general($_REQUEST['domain']).'">
96
+                $form .= '<p><input type="hidden" name="domain" value="'.filter_input_general($avail['domainNameUnicode']).'">
97 97
                     <input type="submit" name="submit" value="Ich möchte diese Domain zu '.config('company_name').' umziehen"></p>';
98 98
 
99 99
                 output(html_form('domains_transferin', 'domainreg', '', $form));
... ...
@@ -160,7 +160,7 @@ if ($dom->mailserver_lock == 1 && $dom->status != 'prereg') {
160 160
     if ($TXT == $dom->secret) {
161 161
         unset_mailserver_lock($dom);
162 162
         success_msg("Die Domain {$dom->fqdn} wurde erfolgreich bestätigt und kann nun in vollem Umfang verwendet werden.");
163
-        redirect("domains");
163
+        redirect("");
164 164
     }
165 165
 
166 166
     if ($dom->dns == 1 || have_module('dns')) {
... ...
@@ -60,13 +60,18 @@ if (!$dom) {
60 60
     system_failure("Keine Domain");
61 61
 }
62 62
 
63
-$pricedata = get_domain_offer($dom->fqdn);
63
+$avail = api_domain_available($dom->fqdn);
64
+$tld = $avail['extension'];
65
+if ($tld != $dom->tld) {
66
+    system_failure("Fehler in den Daten! Bitte Support informieren");
67
+}
68
+
69
+$pricedata = get_domain_offer($tld);
64 70
 if (!$pricedata) {
65 71
     redirect('adddomain');
66 72
 }
67 73
 $mode=NULL;
68 74
 
69
-$avail = api_domain_available($dom->fqdn);
70 75
 if ($avail['status'] == 'available') {
71 76
     set_domain_prereg($dom->id);
72 77
     $mode = 'reg';
... ...
@@ -233,18 +233,12 @@ function change_user($domain, $uid)
233 233
 }
234 234
 
235 235
 
236
-function get_domain_offer($domainname) 
236
+function get_domain_offer($tld) 
237 237
 {
238
-  $domainname = filter_input_hostname($domainname);
239
-  $domainname = preg_replace('/^www\./', '', $domainname);
240
-
241
-  $basename = preg_replace('/([^\.]+)\..*$/', '\1', $domainname);
242
-  DEBUG('Found Basename: '.$basename);
243
-  $tld = preg_replace('/^[^\.]*\./', '', $domainname);
244
-  DEBUG('Found TLD: '.$tld);
238
+  $tld = filter_input_hostname($tld);
245 239
   $cid = (int) $_SESSION['customerinfo']['customerno'];
246 240
 
247
-  $data = array("domainname" => $domainname, "basename" => $basename, "tld" => $tld);
241
+  $data = array("tld" => $tld);
248 242
 
249 243
   $result = db_query("SELECT tld, gebuehr, setup FROM misc.domainpreise_kunde WHERE kunde=:cid AND tld=:tld AND ruecksprache='N'", array(":cid" => $cid, ":tld" => $tld));
250 244
   if ($result->rowCount() != 1) {
... ...
@@ -286,15 +280,14 @@ function insert_domain_external($domain, $dns = false, $mail = true)
286 280
 {
287 281
     $cid = (int) $_SESSION['customerinfo']['customerno'];
288 282
     $uid = (int) $_SESSION['userinfo']['uid'];
289
-    if (strpos($domain, ' ') !== false) {
290
-        system_failure("Ungültige Zeichen im Domainname");
291
-    }
292
-    $parts = explode('.', $domain);
293
-    if (count($parts) !== 2) {
294
-        system_failure("Ungültiger Domainname");
283
+    require_once("domainapi.php");
284
+    $info = api_domain_available($domain);
285
+    if (in_array($info['status'], array('nameContainsForbiddenCharacter', 'suffixDoesNotExist'))) {
286
+        system_failure("Diese Domain scheint ungültig zu sein!");
295 287
     }
296
-    $domainname = $parts[0];
297
-    $tld = $parts[1];
288
+    $tld = $info['domainSuffix'];
289
+    $domainname = str_replace(".$tld", "", $info['domainNameUnicode']);
290
+    
298 291
     db_query("INSERT INTO kundendaten.domains (status, kunde, useraccount, domainname, tld, billing, provider, dns, mail, mailserver_lock) VALUES 
299 292
         ('external', ?, ?, ?, ?, 'external', 'other', 0, ?, 1)", array($cid, $uid, $domainname, $tld, ($mail ? 'auto' : 'none')));
300 293
     $id = db_insert_id();
301 294