index.php

changeset 0
472198dc918e
equal deleted inserted replaced
-1:000000000000 0:472198dc918e
1 <?php
2
3 require_once('recaptchalib.php');
4 require_once('config.php');
5
6 if(!array_key_exists('backend', $config))
7 die("Please specify a backend in config.php!");
8
9 if($config['debug'])
10 include('backend_'.$config['backend'].'.php');
11 else
12 @include('backend_'.$config['backend'].'.php');
13
14 if(class_exists("RegistrationBackend"))
15 {
16 $registration_backend = new RegistrationBackend();
17 }
18 else
19 {
20 echo('Failed to initialize backend "'.$config['backend'].'": ');
21
22 if(!$config['debug'])
23 echo('enable debug in the config for more info.');
24 else
25 include('backend_'.$config['backend'].'.php');
26 die();
27 }
28
29 header( 'Content-type: text/html; charset=utf-8' );
30
31 ?>
32 <html>
33 <head>
34 <link rel='stylesheet' href='themes/<?php echo $config['theme']; ?>/style.css' />
35 </head>
36 <body>
37
38 <?php @include('themes/'.$config['theme'].'/header.php'); ?>
39
40 <div id="box">
41
42 <?php
43 if (!$_POST["submit"])
44 {
45 ?>
46
47 <h2>Register a <?php echo ucfirst($config['host']); ?> account</h2>
48 <p>Use the form below to create an account.</p>
49 <form method="post">
50 <table>
51 <tr><td class="label">Username:</td><td><input type="text" class="edit username" name="username" size="10" />@<?php echo $config['host']; ?></td></tr>
52 <tr><td class="label">Password:</td><td><input type="password" class="edit" name="password" size="15"/></td></tr>
53 <tr><td class="label">Re-type password:</td><td><input type="password" class="edit" name="password2" size="15"/></td></tr>
54 <tr><td colspan="2" style="text-align:center; margin-left:auto; margin-right:auto;" align="center">
55 <center>
56 <div id="captcha">
57 <?php echo recaptcha_get_html($config['recaptchaPublicKey'], null, !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'); ?>
58 </div>
59 </center>
60 </td></tr>
61 <tr><td colspan="2" style="text-align:center;">
62 <input type="submit" name="submit" value="Register" />
63 </td></tr>
64 </form>
65
66 <?php
67 }
68 else
69 {
70 // Process submission
71 $resp = recaptcha_check_answer ($config['recaptchaPrivateKey'],
72 $_SERVER["REMOTE_ADDR"],
73 $_POST["recaptcha_challenge_field"],
74 $_POST["recaptcha_response_field"]);
75 if ($resp->is_valid)
76 {
77 $registration_backend->init($config);
78 $user = $_POST['username'];
79 $pass = $_POST['password'];
80 $pass2 = $_POST['password2'];
81
82 $ok = true;
83
84 if (!$user)
85 {
86 echo '<p>Sorry, you didn\'t tell us which username you want! Please <a href="./">go back</a> and try again.</p>';
87 $ok = false;
88 }
89
90 if($pass !== $pass2)
91 {
92 echo '<p>The two passwords you typed are not the same, please <a href="./">go back</a> and try more carefully! :-)</p>';
93 $ok = false;
94 }
95
96 if($ok)
97 {
98 if(!mb_check_encoding($user, 'UTF-8') || !mb_check_encoding($pass, 'UTF-8'))
99 {
100 echo '<p>Sorry, your browser sent an invalid form entry. Try removing special characters from your username/password.</p>';
101 echo '<p>Alternatively please try a different browser and re-submit <a href="./">the form</a>.</p>';
102 $ok = false;
103 }
104 else
105 {
106 $user = mb_strtolower($user, 'UTF-8');
107 }
108 }
109
110 // Check that username is valid for a JID
111 if ($ok && strlen($user) > 255)
112 {
113 echo '<p>Sorry, the username you entered is waaaaay too long. <a href="./">Please try</a> something shorter!</p>';
114 $ok = false;
115 }
116
117 if ($ok)
118 {
119 if (strcspn($user, "\"&'/:<>@".chr(127)) !== strlen($user))
120 {
121 echo '<p>Sorry, that username contains invalid characters (such as &, <, >, / etc.). Please remove them and <a href="./">try again</a>.</p>';
122 echo strcspn($user, "\"&'/:<>@".chr(127))." vs ".strlen($user);
123 $ok = false;
124 }
125 else if (strpos($user, chr(255).chr(254)) || strpos($user, chr(255.255)))
126 {
127 echo '<p>Sorry, that username contains invalid characters. Please remove them and <a href="./">try again</a>.</p>';
128 $ok = false;
129 }
130 else
131 {
132 $charfreq = array_keys(count_chars($user, 1));
133 if (min($charfreq) <= 32)
134 {
135 echo '<p>Sorry, that username contains invalid characters. For example you cannot use spaces in a username. Please <a href="./">go back</a>, remove them, and try again.</p>';
136 $ok = false;
137 }
138 }
139
140 }
141
142 if ($ok && (strlen($pass) < 6))
143 {
144 echo '<p>Your password isn\'t long enough. It needs to be at least 6 characters long, to make sure that it can\'t be easily guessed. <a href="./">Go back</a> and try again.</p>';
145 $ok = false;
146 }
147
148 if ($ok)
149 {
150 $backend_message = $registration_backend->validate($user, $pass);
151 if($backend_message)
152 {
153 echo "<p>".htmlentities($backend_message)." Please <a href='./'>go back</a> and try again.</p>";
154 $ok = false;
155 }
156 }
157
158 // Check that username does not already exist
159 if ($ok)
160 {
161 if($registration_backend->exists($user))
162 {
163 echo '<p>A user with that name already exists, please <a href="./">go back</a> and choose a different username.</p>';
164 $ok = false;
165 }
166 }
167
168 if ($ok)
169 {
170 $result = $registration_backend->create($user, $pass);
171 if ($result)
172 {
173 echo '<p>You successfully registered the Jabber ID<br/><b>'.$_POST["username"].'@'.$config['host'].'</b></p>';
174 echo "<div style='text-align:left;'>";
175 echo "<p>If you haven't already, now is a good time to ";
176 echo "<a href='http://www.jabber.org/index.php/download-a-client/'>download a client</a> which you can ";
177 echo 'use to log into your new account.</p>';
178 echo '<p>Wondering what you can do with your new <a href="'.$config['website'].'">'.$config['host'].'</a> account? ';
179 echo 'Here are some services at which you can use your Jabber ID:</p>';
180 echo '<ul>';
181 echo '<li><a href="http://identi.ca/">identi.ca</a> - Open microblogging service</li>';
182 echo '<li><a href="http://speeqe.com/">Speeqe</a> - Web-based Jabber chatrooms</li>';
183 echo '</ul>';
184 echo '<p><b>Did you know?</b> <a href="http://www.google.com/talk/">Google Talk</a> is one of the many other ';
185 echo '<a href="http://xmpp.org/services/">Jabber-compatible services</a>, which ';
186 echo 'means you can add your Gmail and Google Apps friends directly to your '.ucfirst($config['host']).' contact list!</p>';
187 echo '</div>';
188 }
189 else
190 echo '<p>There was a problem creating your account. If the problem persists, please <a href="http://speeqe.com/room/jabber@conference.jabber.org/">contact us</a>.</p>';
191 }
192 $registration_backend->close();
193 }
194 else
195 {
196 echo '<p>Sorry, the CAPTCHA text you entered was incorrect, please <a href="./">go back</a> and try again.</p>';
197 if($config['debug'])
198 echo '('.$resp->error.')';
199 }
200 }
201 ?>
202
203 </div>
204 <?php @include('themes/'.$config['theme'].'/footer.php'); ?>
205 </body>
206 </html>

mercurial