[GH-ISSUE #338] traceback in update_ns, non-ascii ns update secret #265

Closed
opened 2026-02-26 09:37:05 +03:00 by kerem · 1 comment
Owner

Originally created by @ThomasWaldmann on GitHub (Apr 19, 2018).
Original GitHub issue: https://github.com/nsupdate-info/nsupdate.info/issues/338

Originally assigned to: @ThomasWaldmann on GitHub.

similar to #319:

Internal Server Error: /domain/1481/
Traceback (most recent call last):
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 34, in _wrapper
    return bound_func(*args, **kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 30, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "/srv/nsupdate.info/repo/nsupdate/main/views.py", line 469, in dispatch
    return super(DomainView, self).dispatch(*args, **kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 89, in dispatch
    return handler(request, *args, **kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 272, in post
    return super(BaseUpdateView, self).post(request, *args, **kwargs)
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 214, in post
    if form.is_valid():
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 184, in is_valid
    return self.is_bound and not self.errors
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 176, in errors
    self.full_clean()
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 393, in full_clean
    self._clean_form()
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 417, in _clean_form
    cleaned_data = self.clean()
  File "/srv/nsupdate.info/repo/nsupdate/main/forms.py", line 71, in clean
    check_domain(self.instance.name)
  File "/srv/nsupdate.info/repo/nsupdate/main/dnstools.py", line 117, in check_domain
    add(fqdn, socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff))))
  File "/srv/nsupdate.info/repo/nsupdate/main/dnstools.py", line 155, in add
    update_ns(fqdn, rdtype, ipaddr, action=action, ttl=ttl)
  File "/srv/nsupdate.info/repo/nsupdate/main/dnstools.py", line 335, in update_ns
    keyring=dns.tsigkeyring.from_text({keyname: key}),
  File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/dns/tsigkeyring.py", line 33, in from_text
    secret = base64.decodestring(maybe_encode(textring[keytext]))
  File "/usr/lib/python2.7/base64.py", line 321, in decodestring
    return binascii.a2b_base64(s)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

Request repr(): 
<WSGIRequest
path:/domain/1481/,
GET:<QueryDict: {}>,
POST:<QueryDict: {u'available': [u'on'], u'nameserver_update_algorithm': [u'HMAC_MD5'], u'comment': [u''], u'csrfmiddlewaretoken': [u'9...6'], u'nameserver_ip': [u'35.169.39.140'], u'nameserver_update_secret': [u'\u035f...'], u'nameserver2_ip': [u'23.21.218.13']}>,
COOKIES:{'csrftoken': '9...6',
 'sessionid': '7...h'},
META:{'CONTENT_LENGTH': '247',
 'CONTENT_TYPE': 'application/x-www-form-urlencoded',
 u'CSRF_COOKIE': u'9VEcwYHrbOOSmyGjxj6sTGk8a88zGrs6',
 'DOCUMENT_ROOT': '/srv/nsupdate.info/htdocs',
 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
 'HTTP_CONNECTION': 'close',
 'HTTP_CONTENT_LENGTH': '247',
 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded',
 'HTTP_COOKIE': 'sessionid=7...h; csrftoken=9...6',
 'HTTP_DNT': '1',
 'HTTP_HOST': 'www.nsupdate.info',
 'HTTP_REFERER': 'https://www.nsupdate.info/domain/1481/',
 'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',
 'HTTP_X_FORWARDED_FOR': '92.206.53.2',
 'HTTP_X_FORWARDED_PROTO': 'https',
 'HTTP_X_REAL_IP': '92.206.53.2',
 'PATH_INFO': u'/domain/1481/',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '92.206.53.2',
 'REMOTE_PORT': '',
 'REQUEST_METHOD': 'POST',
 'REQUEST_URI': '/domain/1481/',
 u'SCRIPT_NAME': u'',
 'SERVER_NAME': 'www.nsupdate.info',
 'SERVER_PORT': '80',
 'SERVER_PROTOCOL': 'HTTP/1.0',
 }>
Originally created by @ThomasWaldmann on GitHub (Apr 19, 2018). Original GitHub issue: https://github.com/nsupdate-info/nsupdate.info/issues/338 Originally assigned to: @ThomasWaldmann on GitHub. similar to #319: ``` Internal Server Error: /domain/1481/ Traceback (most recent call last): File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 34, in _wrapper return bound_func(*args, **kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view return view_func(request, *args, **kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 30, in bound_func return func.__get__(self, type(self))(*args2, **kwargs2) File "/srv/nsupdate.info/repo/nsupdate/main/views.py", line 469, in dispatch return super(DomainView, self).dispatch(*args, **kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 89, in dispatch return handler(request, *args, **kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 272, in post return super(BaseUpdateView, self).post(request, *args, **kwargs) File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 214, in post if form.is_valid(): File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 184, in is_valid return self.is_bound and not self.errors File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 176, in errors self.full_clean() File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 393, in full_clean self._clean_form() File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/django/forms/forms.py", line 417, in _clean_form cleaned_data = self.clean() File "/srv/nsupdate.info/repo/nsupdate/main/forms.py", line 71, in clean check_domain(self.instance.name) File "/srv/nsupdate.info/repo/nsupdate/main/dnstools.py", line 117, in check_domain add(fqdn, socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))) File "/srv/nsupdate.info/repo/nsupdate/main/dnstools.py", line 155, in add update_ns(fqdn, rdtype, ipaddr, action=action, ttl=ttl) File "/srv/nsupdate.info/repo/nsupdate/main/dnstools.py", line 335, in update_ns keyring=dns.tsigkeyring.from_text({keyname: key}), File "/srv/nsupdate.info/env/local/lib/python2.7/site-packages/dns/tsigkeyring.py", line 33, in from_text secret = base64.decodestring(maybe_encode(textring[keytext])) File "/usr/lib/python2.7/base64.py", line 321, in decodestring return binascii.a2b_base64(s) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) Request repr(): <WSGIRequest path:/domain/1481/, GET:<QueryDict: {}>, POST:<QueryDict: {u'available': [u'on'], u'nameserver_update_algorithm': [u'HMAC_MD5'], u'comment': [u''], u'csrfmiddlewaretoken': [u'9...6'], u'nameserver_ip': [u'35.169.39.140'], u'nameserver_update_secret': [u'\u035f...'], u'nameserver2_ip': [u'23.21.218.13']}>, COOKIES:{'csrftoken': '9...6', 'sessionid': '7...h'}, META:{'CONTENT_LENGTH': '247', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', u'CSRF_COOKIE': u'9VEcwYHrbOOSmyGjxj6sTGk8a88zGrs6', 'DOCUMENT_ROOT': '/srv/nsupdate.info/htdocs', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, br', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5', 'HTTP_CONNECTION': 'close', 'HTTP_CONTENT_LENGTH': '247', 'HTTP_CONTENT_TYPE': 'application/x-www-form-urlencoded', 'HTTP_COOKIE': 'sessionid=7...h; csrftoken=9...6', 'HTTP_DNT': '1', 'HTTP_HOST': 'www.nsupdate.info', 'HTTP_REFERER': 'https://www.nsupdate.info/domain/1481/', 'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0', 'HTTP_X_FORWARDED_FOR': '92.206.53.2', 'HTTP_X_FORWARDED_PROTO': 'https', 'HTTP_X_REAL_IP': '92.206.53.2', 'PATH_INFO': u'/domain/1481/', 'QUERY_STRING': '', 'REMOTE_ADDR': '92.206.53.2', 'REMOTE_PORT': '', 'REQUEST_METHOD': 'POST', 'REQUEST_URI': '/domain/1481/', u'SCRIPT_NAME': u'', 'SERVER_NAME': 'www.nsupdate.info', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', }> ```
kerem closed this issue 2026-02-26 09:37:05 +03:00
Author
Owner

@ThomasWaldmann commented on GitHub (Apr 25, 2018):

class CreateDomainForm(forms.ModelForm):
    def clean_nameserver_update_secret(self):

In CreateDomainForm, we have validation for the nameserver update secret, but in EditDomainForm we have not. Shouldn't it have the same clean_... method?

<!-- gh-comment-id:384459858 --> @ThomasWaldmann commented on GitHub (Apr 25, 2018): ``` class CreateDomainForm(forms.ModelForm): def clean_nameserver_update_secret(self): ``` In CreateDomainForm, we have validation for the nameserver update secret, but in EditDomainForm we have not. Shouldn't it have the same clean_... method?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/nsupdate.info-nsupdate-info#265
No description provided.