Skip to content

Commit

Permalink
release 0.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
infothrill committed Feb 15, 2015
2 parents 8f8785a + fbad420 commit 4876e79
Show file tree
Hide file tree
Showing 93 changed files with 2,364 additions and 1,189 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Expand Up @@ -33,3 +33,12 @@ coverage.xml
.project
.settings/
.pydevproject

# virtualenv
env/

#python fubar
MANIFEST

# automation
packaging/.vagrant
25 changes: 16 additions & 9 deletions .travis.yml
@@ -1,11 +1,18 @@
language: python
python:
- "2.6"
- "2.7"
- "3.2"
- "3.3"
install:
- "python setup.py install"
- "pip install coveralls --use-mirrors"
script: "coverage run --source=dyndnsc setup.py test"
after_success: "coveralls"
- "2.6"
- "2.7"
- "3.2"
- "3.3"
- "3.4"
- "pypy"
install:
- "make init"
- "make install"
script:
- "make coverage"
after_success:
- "make coveralls"
matrix:
allow_failures:
- python: pypy
2 changes: 1 addition & 1 deletion AUTHORS
@@ -1,3 +1,3 @@
Paul Kremer
Alex (alexm888): IPDetector_Command
Thomas Waldmann: nsupdate.info support
Thomas Waldmann: nsupdate.info support, random hacks
21 changes: 20 additions & 1 deletion CHANGELOG.rst
Expand Up @@ -3,6 +3,25 @@
Release history
---------------

0.4.0 (February 15th 2015)
++++++++++++++++++++++++++

- changed (**INCOMPATIBLE**): command line arguments have been drastically adapted
to fit different update protocols and detectors
- added: config file support
- added: running against multiple update services in one go using config file
- improved: for python < 3.2, install more dependencies to get SNI support
- improved: the DNS resolution automatically resolves using the same address
family (ipv4/A or ipv6/AAAA or any) as the detector configured
- improved: it is now possible to specify arbitrary service URLs for the
different updater protocols.
- fixed: naming conventions
- fixed: http connection robustness (i.e. catch more errors and handle them as
being transient)
- changed: dependency on netifaces was removed, but if installed, the
functionality remains in place
- a bunch of pep8, docstring and documntation updates

0.3.4 (January 3rd 2014)
++++++++++++++++++++++++
- added: initial support for dnsimple.com through
Expand Down Expand Up @@ -73,4 +92,4 @@ Release history

0.1.1 (September 2008)
++++++++++++++++++++++
- Focus: initial public release
- Focus: initial public release
2 changes: 1 addition & 1 deletion LICENSE
@@ -1,4 +1,4 @@
Copyright (c) 2008-2013 Paul Kremer
Copyright (c) 2008-2015 Paul Kremer

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
3 changes: 3 additions & 0 deletions MANIFEST.in
@@ -1,3 +1,6 @@
include AUTHORS
include *.rst
include LICENSE
include example.ini
recursive-include docs *
recursive-include dyndnsc/resources *
39 changes: 39 additions & 0 deletions Makefile
@@ -0,0 +1,39 @@
.PHONY: init test coverage install publish docs-init docs clean

init:
pip install -r requirements.txt

test:
python setup.py test

coverage:
coverage run --source=dyndnsc setup.py test

coveralls:
pip install coveralls
coveralls

install:
python setup.py install

publish:
python setup.py register
python setup.py sdist upload
python setup.py bdist_wheel upload


docs-init:
pip install -r docs/requirements.txt

docs:
cd docs && make html
@echo "\033[95m\n\nBuild successful! View the docs homepage at docs/_build/html/index.html.\n\033[0m"

clean:
@echo "Cleaning up distutils stuff"
rm -rf build
rm -rf dist
rm -rf *.egg
rm -rf *.egg-info
@echo "Cleaning up byte compiled python stuff"
find . -type f -regex ".*\.py[co]$$" -delete
85 changes: 28 additions & 57 deletions README.rst
@@ -1,90 +1,61 @@
Dyndnsc - dynamic dns update client
===================================

.. image:: https://travis-ci.org/infothrill/python-dyndnsc.png
.. image:: https://travis-ci.org/infothrill/python-dyndnsc.svg?branch=develop
:target: https://travis-ci.org/infothrill/python-dyndnsc

.. image:: https://coveralls.io/repos/infothrill/python-dyndnsc/badge.png
:target: https://coveralls.io/r/infothrill/python-dyndnsc
.. image:: https://pypip.in/d/dyndnsc/badge.png
:target: https://pypi.python.org/pypi/dyndnsc

.. image:: https://coveralls.io/repos/infothrill/python-dyndnsc/badge.png?branch=develop
:target: https://coveralls.io/r/infothrill/python-dyndnsc?branch=develop

.. image:: https://badge.fury.io/py/dyndnsc.png
:target: http://badge.fury.io/py/dyndnsc

.. image:: https://requires.io/github/infothrill/python-dyndnsc/requirements.png?branch=develop
:target: https://requires.io/github/infothrill/python-dyndnsc/requirements/?branch=develop
:alt: Requirements Status

*dyndnsc* is both a script to be used directly as well as a re-usable and
hopefully extensible python package for doing updates over http to dynamic
dns services. This package currently focuses on supporting http based update
protocols.


*Dyndnsc* is both a script to be used directly as well as a re-usable and
hopefully extensible python package for sending updates to dynamic
dns (ddns, dyndns) services. It is compatible with ipv4 as well as
ipv6. It ships with support for a bunch of different services and it has an
extensible configuration format that allows using foreign, but compatible
services. *Dyndnsc* ships many different IP detection mechanisms, support
for configuring multiple services in one place and it has a daemon mode for
running unattended. It has a plugin architecture for supporting notification
services like Growl or OS X Notification center.

Examples
========

Basic example that should fit most peoples needs:

.. code-block:: bash
$ dyndnsc --hostname test.dyndns.com --userid bob --password=fub4r
Are you using `Miredo <http://www.remlab.net/miredo/>`_ and want to assign
a hostname dynamically to your ipv6 tunnel?

.. code-block:: bash

$ dyndnsc --hostname test.dyndns.com --userid bob --method=teredo
Quickstart / Documentation
==========================
See the Quickstart section of the http://dyndnsc.readthedocs.org/


Compatible protocols
====================
* `dnsimple <http://developer.dnsimple.com/>`_
* `dyndns2 <http://dyn.com/support/developers/api/>`_
* `freedns.afraid.org <http://freedns.afraid.org/>`_

Feel free to send pull requests to add more.

Compatible services
===================
This list is incomplete, since there are for example a lot of dyndns2 compatible
services out there, but we are not keeping a full list here. Also, due to
current limitations in Dyndnsc (`#4 <https://github.com/infothrill/python-dyndnsc/issues/4>`_)
it is not yet possible to use an arbitrary service with a compatible protocol
(yet).

* `dnsimple.com <http://dnsimple.com/>`_
* `dyn.com <http://dyn.com/>`_
* `freedns.afraid.org <http://freedns.afraid.org/>`_
* `no-ip <https://www.no-ip.com/>`_
* `nsupdate.info <https://nsupdate.info/>`_

Installation
============

.. code-block:: bash
$ # from pypi:
$ pip install dyndnsc
or, if you want to work using the source tarball:

.. code-block:: bash
$ # from downloaded source:
$ python setup.py install
$ # directly from github:
$ pip install https://github.com/infothrill/python-dyndnsc/zipball/develop
Requirements
============
* Python 2.6, 2.7, 3.2 or 3.3+
* Python 2.6, 2.7 or 3.2+


Documentation
=============

Documentation is available at http://dyndnsc.readthedocs.org/.

Status
======
*dyndnsc* is currently still in alpha stage, which means that any interface can
*Dyndnsc* is currently still in alpha stage, which means that any interface can
still change at any time. For this to change, it shall be sufficient to have
documented use of this package which will necessitate stability (i.e.
community process).
18 changes: 0 additions & 18 deletions docs/community/faq.rst

This file was deleted.

8 changes: 5 additions & 3 deletions docs/conf.py
Expand Up @@ -42,16 +42,18 @@

# General information about the project.
project = u'dyndnsc'
copyright = u'2013, Paul Kremer'
copyright = u'2013-2015, Paul Kremer'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#

import dyndnsc
# The short X.Y version.
version = '0.3.4dev'
version = dyndnsc.__version__
# The full version, including alpha/beta/rc tags.
release = '0.3.3'
release = version

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
33 changes: 33 additions & 0 deletions docs/dev/contrib.rst
@@ -0,0 +1,33 @@
Contributing
============

Basic method to contribute a change
-----------------------------------

Dyndnsc is under active development, and contributions are more than welcome!

#. Check for open issues or open a fresh issue to start a discussion around a bug
on the `issue tracker <https://github.com/infothrill/python-dyndnsc/issues>`_.
#. Fork `the repository <https://github.com/infothrill/python-dyndnsc>`_ and start making your
changes to a new branch.
#. Write a test which shows that the bug was fixed.
#. Send a pull request and bug the maintainer until it gets merged and published. :)
Make sure to add yourself to `AUTHORS <https://github.com/infothrill/python-dyndnsc/blob/master/AUTHORS>`_.


Idioms to keep in mind
----------------------

* keep amount of external dependencies low, i.e. if it can be done using the
standard library, do it using the standard library
* do not prefer specific operating systems, i.e. even if we love Linux, we
shall not make other suffer from our personal choice
* write unittests

Also, keep these :pep:`20` idioms in mind:

#. Beautiful is better than ugly.
#. Explicit is better than implicit.
#. Simple is better than complex.
#. Complex is better than complicated.
#. Readability counts.
39 changes: 0 additions & 39 deletions docs/dev/todo.rst

This file was deleted.

0 comments on commit 4876e79

Please sign in to comment.