Skip to content

Commit 8ce8513

Browse files
committed
Use reCAPTCHA 2, bump version to 1.16.5
1 parent ef27c22 commit 8ce8513

File tree

7 files changed

+36
-45
lines changed

7 files changed

+36
-45
lines changed

.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ CMBARTER_SHOW_CAPTCHA_ON_REPETITIVE_LOGIN_FAILURE=True
2828
# five unsuccessful attempts to log-in. If you have not altered the
2929
# default behavior, you should obtain your own public/private key pair
3030
# from www.google.com/recaptcha, and put it here:
31-
CMBARTER_RECAPTCHA_PUBLIC_KEY=6Ledx7wSAAAAAICFw8vB-2ghpDjzGogPRi6-3FCr
32-
CMBARTER_RECAPTCHA_PIVATE_KEY=6Ledx7wSAAAAAEskQ7Mbi-oqneHDSFVUkxGitn_y
31+
CMBARTER_RECAPTCHA_PUBLIC_KEY=6Lc902MUAAAAAJL22lcbpY3fvg3j4LSERDDQYe37
32+
CMBARTER_RECAPTCHA_PIVATE_KEY=6Lc902MUAAAAAN--r4vUr8Vr7MU1PF16D9k2Ds9Q
3333

3434
# If a non-empty string is set as registration secret, CMB will
3535
# require a registration key for users to sign up. In this case

CHANGES

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
July 12th, 2018
2+
v1.16.5 -- Use reCAPTCHA 2
3+
14
July 12th, 2017
25
v1.16.4 -- Fixed CSS styling for input tags.
36

INSTALL

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ source code in your */usr/local/share/* directory::
3434

3535
# cd /usr/local/share/
3636
# wget http://sourceforge.net/projects/cmb/files/tarballs/\
37-
cmbarter-1.16.4.tar.gz/download -O cmbarter-1.16.4.tar.gz
37+
cmbarter-1.16.5.tar.gz/download -O cmbarter-1.16.5.tar.gz
3838
...
3939

40-
# tar -xzf cmbarter-1.16.4.tar.gz
41-
# mv cmbarter-1.16.4 cmbarter
40+
# tar -xzf cmbarter-1.16.5.tar.gz
41+
# mv cmbarter-1.16.5 cmbarter
4242

4343
Also, make sure a *Python 2.7* interpreter is installed on your
4444
server.
@@ -300,11 +300,11 @@ Here are the installation steps that you should perform:
300300

301301
$ cd ~
302302
$ wget http://sourceforge.net/projects/cmb/files/tarballs/\
303-
cmbarter-1.16.4.tar.gz/download -O cmbarter-1.16.4.tar.gz
303+
cmbarter-1.16.5.tar.gz/download -O cmbarter-1.16.5.tar.gz
304304
...
305305

306-
$ tar -xzf cmbarter-1.16.4.tar.gz
307-
$ mv cmbarter-1.16.4 cmbarter
306+
$ tar -xzf cmbarter-1.16.5.tar.gz
307+
$ mv cmbarter-1.16.5 cmbarter
308308

309309
3. Restrict access to those source files that may contain sensitive
310310
information::

cmbarter/modules/captcha.py

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import urllib2, urllib
1+
import urllib2, urllib, json
22

3-
API_SSL_SERVER="https://www.google.com/recaptcha/api"
4-
API_SERVER="http://www.google.com/recaptcha/api"
3+
API_SSL_SERVER="https://www.google.com/recaptcha/api.js"
4+
API_SERVER="http://www.google.com/recaptcha/api.js"
55
VERIFY_SERVER="www.google.com"
66

77
class RecaptchaResponse(object):
@@ -18,27 +18,18 @@ def displayhtml (public_key,
1818
use_ssl -- Should the request be sent over ssl?
1919
error -- An error message to display (from RecaptchaResponse.error_code)"""
2020

21-
error_param = ''
22-
if error:
23-
error_param = '&error=%s' % error
24-
2521
if use_ssl:
2622
server = API_SSL_SERVER
2723
else:
2824
server = API_SERVER
2925

30-
return """<script type="text/javascript" src="%(ApiServer)s/challenge?k=%(PublicKey)s%(ErrorParam)s"></script>
31-
32-
<noscript>
33-
<iframe src="%(ApiServer)s/noscript?k=%(PublicKey)s%(ErrorParam)s" height="300" width="500" frameborder="0"></iframe><br />
34-
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
35-
<input type='hidden' name='recaptcha_response_field' value='manual_challenge' />
36-
</noscript>
37-
""" % {
38-
'ApiServer' : server,
39-
'PublicKey' : public_key,
40-
'ErrorParam' : error_param,
41-
}
26+
return """<script src="%(ApiServer)s" async defer></script>
27+
<br>
28+
<div class="g-recaptcha" data-sitekey="%(PublicKey)s"></div>
29+
""" % {
30+
'ApiServer': server,
31+
'PublicKey': public_key,
32+
}
4233

4334

4435
def submit (recaptcha_challenge_field,
@@ -66,14 +57,13 @@ def encode_if_necessary(s):
6657
return s
6758

6859
params = urllib.urlencode ({
69-
'privatekey': encode_if_necessary(private_key),
70-
'remoteip' : encode_if_necessary(remoteip),
71-
'challenge': encode_if_necessary(recaptcha_challenge_field),
60+
'secret': encode_if_necessary(private_key),
7261
'response' : encode_if_necessary(recaptcha_response_field),
62+
'remoteip' : encode_if_necessary(remoteip),
7363
}).encode('ascii')
7464

7565
request = urllib2.Request (
76-
url = "http://%s/recaptcha/api/verify" % VERIFY_SERVER,
66+
url = "https://%s/recaptcha/api/siteverify" % VERIFY_SERVER,
7767
data = params,
7868
headers = {
7969
"Content-type": "application/x-www-form-urlencoded",
@@ -83,12 +73,10 @@ def encode_if_necessary(s):
8373

8474
httpresp = urllib2.urlopen (request)
8575

86-
return_values = httpresp.read ().splitlines ();
87-
httpresp.close();
88-
89-
return_code = return_values [0]
76+
return_object = json.loads(httpresp.read())
77+
httpresp.close()
9078

91-
if (return_code == b"true"):
79+
if (return_object["success"]):
9280
return RecaptchaResponse (is_valid=True)
9381
else:
94-
return RecaptchaResponse (is_valid=False, error_code = return_values[1].decode('utf-8'))
82+
return RecaptchaResponse (is_valid=False, error_code="incorrect-captcha-sol")

cmbarter/users/views.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ def login_captcha(request, tmpl='login_captcha.html'):
152152

153153
if request.method == 'POST':
154154
captcha_response = captcha.submit(
155-
request.POST.get('recaptcha_challenge_field'),
156-
request.POST.get('recaptcha_response_field'),
155+
'g-recaptcha-challenge',
156+
request.POST.get('g-recaptcha-response'),
157157
settings.CMBARTER_RECAPTCHA_PIVATE_KEY,
158158
request.META['REMOTE_ADDR'])
159159
captcha_error = captcha_response.error_code
@@ -315,8 +315,8 @@ def signup(request, tmpl='signup.html'):
315315
if request.method == 'POST':
316316
if settings.CMBARTER_SHOW_CAPTCHA_ON_SIGNUP:
317317
captcha_response = captcha.submit(
318-
request.POST.get('recaptcha_challenge_field'),
319-
request.POST.get('recaptcha_response_field'),
318+
'g-recaptcha-challenge',
319+
request.POST.get('g-recaptcha-response'),
320320
settings.CMBARTER_RECAPTCHA_PIVATE_KEY,
321321
request.META['REMOTE_ADDR'])
322322
captcha_error = captcha_response.error_code

doc/cmb-install.pdf

-18 Bytes
Binary file not shown.

docker-compose.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: '3.1'
22

33
services:
44
web:
5-
image: epandurski/cmbarter:1.16.4-web
5+
image: epandurski/cmbarter:1.16.5-web
66
build:
77
context: .
88
dockerfile: docker/Dockerfile-web
@@ -17,7 +17,7 @@ services:
1717
env_file: .env
1818

1919
db:
20-
image: epandurski/cmbarter:1.16.4-db
20+
image: epandurski/cmbarter:1.16.5-db
2121
build:
2222
context: .
2323
dockerfile: docker/Dockerfile-db
@@ -27,7 +27,7 @@ services:
2727
mode: global
2828

2929
tasks:
30-
image: epandurski/cmbarter:1.16.4-tasks
30+
image: epandurski/cmbarter:1.16.5-tasks
3131
build:
3232
context: .
3333
dockerfile: docker/Dockerfile-tasks
@@ -42,7 +42,7 @@ services:
4242
# /run/secrets/cert.pem and /run/secrets/key.pem. If they are not
4343
# found there, it falls back to a self-signed certificate.
4444

45-
image: epandurski/cmbarter:1.16.4-proxy
45+
image: epandurski/cmbarter:1.16.5-proxy
4646
build:
4747
context: .
4848
dockerfile: docker/Dockerfile-proxy

0 commit comments

Comments
 (0)