37d1ca3d38ba77cce480f6bddcedfbf45f7282eb
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

1) <?php
2) /*
3) This file belongs to the Webinterface of schokokeks.org Hosting
4) 
5) Written 2008-2018 by schokokeks.org Hosting, namely
6)   Bernd Wurst <bernd@schokokeks.org>
7)   Hanno Böck <hanno@schokokeks.org>
8) 
9) To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
10) 
11) You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see 
12) http://creativecommons.org/publicdomain/zero/1.0/
13) 
14) Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
15) */
16) 
17) require_once('inc/debug.php');
18) require_once('inc/icons.php');
19) 
20) require_once('class/domain.php');
21) require_once('domains.php');
22) 
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

23) require_role(array(ROLE_CUSTOMER, ROLE_SYSTEMUSER));
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

24) 
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

25) $dom = NULL;
26) if (isset($_REQUEST['id'])) {
27)     $dom = new Domain( (int) $_REQUEST['id']);
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

28)     $_SESSION['domains_detail_domainname'] = $dom->fqdn;
29) } elseif (isset($_SESSION['domains_detail_domainname'])) {
30)     $dom = new Domain($_SESSION['domains_detail_domainname']);
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

31) } else {
32)     system_failure("Keine Domain angegeben");
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

33) }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

34) if (!$dom) {
35)     system_failure("Keine Domain gewählt!");
36) }
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

37) if (have_role(ROLE_CUSTOMER)) {
38)     $dom->ensure_customerdomain();
39) } else {
40)     $dom->ensure_userdomain();
41) }
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

42) 
43) title("Domain {$dom->fqdn}");
44) $section = 'domains_domains';
45) 
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

46) // Block zuständiger Useraccount
47) 
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

48) $is_current_user = true;
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

49) $useraccounts = list_useraccounts();
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

50) if (have_role(ROLE_CUSTOMER) && count($useraccounts) > 1) {
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

51)     if ($dom->useraccount != $_SESSION['userinfo']['uid']) {
52)         $is_current_user = false;
53)     }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

54)     // Mehrere User vorhanden
55)     $options = array();
56)     foreach ($useraccounts as $u) {
57)         $options[$u['uid']] = $u['username'];
58)     }
59)     if (!array_key_exists($dom->useraccount, $options)) {
60)         $options[$dom->useraccount] = $dom->useraccount;
61)     }
62)     output('<h4>Zuständiges Benutzerkonto</h4>');
63)     $form = '<p>Diese Domain nutzen im Benutzerkonto '.html_select('domainuser', $options, $dom->useraccount).' <input type="submit" name="submit" value="Änderung speichern"></p>';
64)     output(html_form('update-user', 'update', 'action=chguser&id='.$dom->id, $form));
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

65) }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

66) 
67) 
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

68) // Block Nutzung
69) 
70) if ($is_current_user) {
71)     $used = false;
72)     output("<h4>Aktuelle Nutzung dieser Domain</h4>");
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

73)     output('<div class="tile-container">');
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

74)     if (have_module('dns') && $dom->dns == 1 && dns_in_use($dom->id)) {
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

75)         output("<div class=\"tile usage\"><p><strong>".internal_link('../dns/dns_domain', "DNS-Server", 'dom='.$dom->id)."</strong></p><p>Manuelle DNS-Records vorhanden.</p></div>");
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

76)         $used = true;
77)     }
78)     if (have_module('email') && mail_in_use($dom->id)) {
Bernd Wurst Zeige Mail-Deeplink korrekt...

Bernd Wurst authored 6 years ago

79)         $vmail = count_vmail($dom->id);
80)         if ($vmail > 0) {
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

81)             output("<div class=\"tile\"><p><strong>".internal_link('../email/vmail', "E-Mail", 'filter='.$dom->fqdn)."</strong></p><p><strong>{$vmail}</strong> E-Mail-Postfächer unter dieser Domain</p></div>");
Bernd Wurst Zeige Mail-Deeplink korrekt...

Bernd Wurst authored 6 years ago

82)         } else {
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

83)             output("<div class=\"tile\"><p><strong>".internal_link('../email/imap', "E-Mail")."</strong></p><p>Manuelle Mail-Konfiguration ist aktiv</p></div>");
Bernd Wurst Zeige Mail-Deeplink korrekt...

Bernd Wurst authored 6 years ago

84)         }
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

85)         $used = true;
86)     }
87)     if (have_module('mailman') && mailman_subdomains($dom->id)) {
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

88)         output("<div class=\"tile\"><p><strong>".internal_link('../mailman/lists', "Mailinglisten")."</strong></p><p>Diese Domain wird für Mailinglisten verwendet</p></div>");
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

89)         $used = true;
90)     }
91)     if (have_module('vhosts') && web_in_use($dom->id)) {
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

92)         output("<div class=\"tile\"><p><strong>".internal_link('../vhosts/vhosts', "Websites", 'filter='.$dom->fqdn)."</strong></p><p>Es gibt Website-Einstellungen für diese Domain</p></div>");
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

93)         $used = true;
94)     }
95)     if (have_module('jabber') && $dom->jabber == 1) {
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

96)         output("<div class=\"tile\"><p><strong>".internal_link('../jabber/accounts', "Jabber/XMPP")."</strong></p><p>Diese Domain wird für Jabber verwendet</p></div>");
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

97)         $used = true;
98)     }
99)     if (! $used) {
100)         output('<p><em>Aktuell wird diese Domain nicht verwendet!</em></p>');
101)     }
Bernd Wurst Deeplinks als Flex-Tiles

Bernd Wurst authored 6 years ago

102)     output('</div>');
Bernd Wurst Domain-Nutzung mit Deeplink...

Bernd Wurst authored 6 years ago

103) }
104) 
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

105) // Block Domain-Inhaber 
106) 
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

107) if (have_role(ROLE_CUSTOMER) && config('http.net-apikey') && $dom->provider == 'terions' && ($dom->cancel_date === NULL || $dom->cancel_date > date('Y-m-d'))) {
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

108)     use_module('contacts');
109)     require_once('contacts.php');
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

110)     require_once('domainapi.php');
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

111) 
112)     output('<h4>Inhaberwechsel der Domain</h4>');
113)     output('<p>Legen Sie hier einen neuen Inhaber für diese Domain fest.</p>');
114) 
115)     if (isset($_REQUEST['id'])) {
116)         api_download_domain($_REQUEST['id']);
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

117)         $_SESSION['domains_detail_domainname'] = $dom->fqdn;
118)         $_SESSION['domains_detail_owner'] = $dom->owner;
119)         $_SESSION['domains_detail_admin_c'] = $dom->admin_c;
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

120)     }
121)     if (!update_possible($dom->id)) {
122)         warning("Diese Domain verwendet eine unübliche Endung. Daher kann der Inhaber nicht auf diesem Weg verändert werden. Bitte kontaktieren Sie den Support.");
123)     } else {
124) 
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

125)         if ($_SESSION['domains_detail_admin_c'] == $dom->admin_c && 
126)                 $_SESSION['domains_detail_owner'] != $dom->owner && 
127)                 (!isset($_SESSION['domains_detail_detach']) || $_SESSION['domains_detail_detach'] == 0)) {
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

128)             // Wenn der Owner geändert wurde, der Admin aber nicht und das detach-Flag 
129)             // nicht gesetzt ist, dann wird der Admin gleich dem Owner gesetzt
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

130)             $_SESSION['domains_detail_admin_c'] = $_SESSION['domains_detail_owner'];
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

131)         }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

132) 
133)         if (isset($_GET['admin_c']) && $_GET['admin_c'] == 'none') {
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

134)             $_SESSION['domains_detail_admin_c'] = $_SESSION['domains_detail_owner'];
135)             unset($_SESSION['domains_detail_detach']);
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

136)         }
137) 
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

138)         $owner = get_contact($_SESSION['domains_detail_owner']);
139)         $admin_c = get_contact($_SESSION['domains_detail_admin_c']);
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

140)         $function = 'Inhaber';
141)         if ($owner['id'] == $admin_c['id']) {
142)             $function .= ' und Verwalter';
143)         }
144)         $cssclass = '';
145)         if ($owner['id'] != $dom->owner) {
146)             $cssclass = 'modified';
147)         }
148)         output('<p><strong>'.$function.':</strong></p>'.display_contact($owner, '', $cssclass));
149)         addnew('choose', 'Neuen Inhaber wählen', "type=owner");
150)         if ($owner['id'] != $admin_c['id']) {
151)             $cssclass = '';
152)             if ($admin_c['id'] != $dom->admin_c) {
153)                 $cssclass = 'modified';
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

154)             }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

155)             output('<p><strong>Verwalter:</strong></p>'.display_contact($admin_c, '', $cssclass));
156)             addnew('choose', 'Neuen Verwalter wählen', "type=admin_c");
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

157)             output('<p class="delete">'.internal_link('', 'Keinen separaten Verwalter festlegen', 'admin_c=none').'</p>');
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

158)         } else {
159)             addnew('choose', 'Einen separaten Verwalter wählen', "type=admin_c&detach=1");
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

160)         }
161) 
162) 
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

163)         if ($owner['id'] != $dom->owner || $admin_c['id'] != $dom->admin_c) {
164)             if (isset($_GET['error']) && $_GET['error'] == '1') {
165)                 input_error('Sie müssen der Übertragung explizit zustimmen!');
166)             }
167)             $form = '<p>Es sind Änderungen vorgenommen worden, die noch nicht gespeichert wurden</p>';
168)             $form .= '<p><input type="checkbox" name="accept" value="1" id="accept"><label for="accept"> Ich bestätige, dass ich die nachfolgenden Hinweise zur Kenntnis genommen habe.</p>
169)                 <p>Mit Speichern dieser Änderungen führen Sie möglicherweise einen Inhaberwechsel bei der Domain '.$dom->fqdn.' aus. Inhaberwechsel sind bei einigen Domainendungen (z.B. com/net/org) zustimmungspflichtig vom alten und vom neuen Inhaber. Die Registrierungsstelle kann nach eigenem Ermessen diese Zustimmung per separater E-Mail einfordern. Wird diese Zustimmung nicht oder verspätet erteilt, kann eine Domain gesperrt werden. Dieser Vorgang wird nicht von '.config('company_name').' kontrolliert.</p>
170)                 <p>Sie sind ferner darüber informiert, dass die Adresse des Domaininhabers öffentlich abrufbar ist.</p>';
171)             $form .= '<p><input type="submit" name="sumbit" value="Änderungen speichern und Domaininhaber ändern"></p>';
172)             output(html_form('domains_update', 'update', "action=ownerchange&id=".$dom->id, $form));
173)         } 
Bernd Wurst Ermögliche das Ändern eines...

Bernd Wurst authored 6 years ago

174)     }
175) }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

176) 
177) // Block Externe Domain umziehen
178) 
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

179) if (have_role(ROLE_CUSTOMER) && config('http.net-apikey')) {
180)     if ($dom->status == 'prereg') {
181)         output('<h4>Domain-Registrierung abschließen</h4>
182)                 <p>'.internal_link('domainreg', 'Domain registrieren', "domain={$dom->fqdn}").'</p>');
183)     } elseif ($dom->status == 'pretransfer') {
184)         output('<h4>Domain zu '.config('company_name').' umziehen</h4>
185)                 <p>'.internal_link('domainreg', 'Umzugsautrag (ggf. nochmals) erteilen', "domain={$dom->fqdn}").'</p>');
186)     } elseif ($dom->provider != 'terions') {
187)         output('<h4>Domain zu '.config('company_name').' umziehen</h4>
188)                 <p>'.internal_link('domainreg', 'Domain-Transfer starten', "domain={$dom->fqdn}").'</p>');
189)     }
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

190) }
191) 
Bernd Wurst Transfer-Freigabe und Kündi...

Bernd Wurst authored 6 years ago

192) // Block Domain löschen/kündigen
193) 
194) $domain_in_use = mailman_subdomains($dom->id) || mail_in_use($dom->id) || web_in_use($dom->id) || $dom->jabber == 1;
195) if (!$domain_in_use && ($dom->status == 'prereg' || $dom->status == 'pretransfer' || $dom->status == 'transferfailed' || $dom->status == 'external')) {
196)     output('<h4>Domain wieder entfernen</h4>');
197)     output('<p class="delete">'.internal_link('save', 'Die Domain '.$dom->fqdn.' entfernen', 'action=delete&domain='.$dom->id).'</p>');
Bernd Wurst Biete kein Domain-Managemen...

Bernd Wurst authored 6 years ago

198) } elseif (have_role(ROLE_CUSTOMER) && config('http.net-apikey') && $dom->provider == 'terions' && (!$dom->cancel_date || ($dom->cancel_date > date('Y-m-d')))) {
Bernd Wurst Blende Aktionen aus, wenn d...

Bernd Wurst authored 6 years ago

199)     require_once('domainapi.php');
Bernd Wurst Transfer-Freigabe und Kündi...

Bernd Wurst authored 6 years ago

200)     output('<h4>Domain kündigen</h4>');
201)     $info = api_download_domain($dom->id);
202)     if ($info['authInfo']) {
203)         output('<p>Das Auth-Info für diese Domain lautet: <strong>'.$info['authInfo'].'</strong></p>');
204)         output('<p>Wenden Sie sich an den Support, wenn Sie den Domainumzug wieder sperren möchten.</p>');
205)     } else {
206)         output('<p>Hier können Sie die Domain zum Umzug freigeben.</p>');
207)         $form = '<p><input type="hidden" name="domain" value="'.$dom->id.'"><input type="submit" name="submit" value="Die Domain '.$dom->fqdn.' zum Umzug freigeben"></p>';
208)         output(html_form('domains_transfer', 'save', 'action=transfer', $form));
209)     }
210)     output('<p>Die aktuelle Laufzeit der Domain dauert noch bis '.$info['currentContractPeriodEnd'].'</p>');
211)     if ($info['deletionDate']) {
212)         output('<p>Es liegt aktuell eine Kündigung vor auf <strong>'.$info['deletionDate'].'</strong></p><p>Um die Kündigung aufzuheben, wenden Sie sich bitte an den Support.</p>');
213)     } else {
Bernd Wurst Hinweis auf automatische Ve...

Bernd Wurst authored 6 years ago

214)         output('<p>Die Laufzeit wird automatisch um ein weiteres Jahr verlängert, sofern Sie keine Kündigung auslösen.</p>');
Bernd Wurst Transfer-Freigabe und Kündi...

Bernd Wurst authored 6 years ago

215)         output('<p class="delete">'.internal_link('save', 'Die Domain '.$dom->fqdn.' kündigen', 'action=cancel&domain='.$dom->id).'</p>');
216)     }
217) }
218) 
219) 
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

220) // Block Domain bestätigen
221) 
Bernd Wurst Erste Vorbereitungen für Do...

Bernd Wurst authored 6 years ago

222) if ($dom->mailserver_lock == 1 && $dom->status != 'prereg') {
Bernd Wurst Alle Domain-Details auf ein...

Bernd Wurst authored 6 years ago

223)     if (has_own_ns($dom->domainname, $dom->tld)) {
224)         unset_mailserver_lock($dom);
225)         success_msg("Die Domain {$dom->fqdn} wurde erfolgreich bestätigt und kann nun in vollem Umfang verwendet werden.");
226)         redirect("");
227)     }
228)     output('<h3>Mailserver-Sperre aktiv</h3>
229)             <p>Bisher ist für diese Domain die Nutzung als Mail-Domain eingeschränkt, da wir noch keine Gewissheit haben, ob Sie der rechtmäßige Nutzer der Domain sind. Eine Domain, die für E-Mail-Aktivität genutzt werden soll, muss entweder die DNS-Server von '.config('company_name').' verwenden oder die Inhaberschaft muss durch einen passend gesetzten DNS-Record nachgewiesen werden. Nachfolgend werden die Möglichkeiten im Detail vorgestellt.</p>');
230)     if (!$dom->secret) {
231)         create_domain_secret($dom);
232)     }
233) 
234)     $TXT = get_txt_record('_schokokeks', $dom->domainname, $dom->tld);
235)     if ($TXT == $dom->secret) {
236)         unset_mailserver_lock($dom);
237)         success_msg("Die Domain {$dom->fqdn} wurde erfolgreich bestätigt und kann nun in vollem Umfang verwendet werden.");
Bernd Wurst Lasse die API bestimmen was...

Bernd Wurst authored 6 years ago

238)         redirect("");