Initial commit on project bpdyndnsd.
authorBjoern Sikora <bjoern.sikora@intra2net.com>
Fri, 24 Jul 2009 07:35:56 +0000 (09:35 +0200)
committerBjoern Sikora <bjoern.sikora@intra2net.com>
Fri, 24 Jul 2009 07:35:56 +0000 (09:35 +0200)
20 files changed:
CMakeLists.txt [new file with mode: 0644]
COPYING [new file with mode: 0644]
Doxyfile [new file with mode: 0644]
README [new file with mode: 0644]
bin/bpdyndnsd [new file with mode: 0755]
bpdyndnsd.kdevelop [new file with mode: 0644]
bpdyndnsd.kdevelop.filelist [new file with mode: 0644]
bpdyndnsd.kdevelop.pcs [new file with mode: 0644]
bpdyndnsd.kdevses [new file with mode: 0644]
src/config.cpp [new file with mode: 0644]
src/config.h [new file with mode: 0644]
src/dhs.cpp [new file with mode: 0644]
src/dhs.h [new file with mode: 0644]
src/main.cpp [new file with mode: 0644]
src/ods.cpp [new file with mode: 0644]
src/ods.h [new file with mode: 0644]
src/service.cpp [new file with mode: 0644]
src/service.h [new file with mode: 0644]
src/updater.cpp [new file with mode: 0644]
src/updater.h [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..e20c49f
--- /dev/null
@@ -0,0 +1,22 @@
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+PROJECT(bpdyndnsd)
+
+# if you don't want the full compiler output, remove the following line
+SET(CMAKE_VERBOSE_MAKEFILE ON)
+
+# add definitions, compiler switches, etc.
+ADD_DEFINITIONS(-Wall -O2)
+
+# list all source files here
+ADD_EXECUTABLE(bin/bpdyndnsd src/main.cpp)
+
+# find boost_program_options and link to bpdyndnsd
+FIND_LIBRARY( BOOST_PROGRAM_OPTIONS libboost_program_options.so )
+IF(BOOST_PROGRAM_OPTIONS)
+    MESSAGE(STATUS "Found boost/program_options as ${BOOST_PROGRAM_OPTIONS}")
+    TARGET_LINK_LIBRARIES(bin/bpdyndnsd ${BOOST_PROGRAM_OPTIONS})
+ELSE(BOOST_PROGRAM_OPTIONS)
+    MESSAGE(FATAL_ERROR "Could not find boost/program_options")
+ENDIF(BOOST_PROGRAM_OPTIONS)
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..5b6e7c6
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Doxyfile b/Doxyfile
new file mode 100644 (file)
index 0000000..be37b42
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,323 @@
+# Doxyfile 1.5.7.1-KDevelop
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           = bpdyndnsd
+PROJECT_NUMBER         = $VERSION$
+OUTPUT_DIRECTORY       = 
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = YES
+STRIP_FROM_PATH        = /home/bjoern/Documents/
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+QT_AUTOBRIEF           = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+OPTIMIZE_FOR_FORTRAN   = NO
+OPTIMIZE_OUTPUT_VHDL   = NO
+EXTENSION_MAPPING      = 
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+SIP_SUPPORT            = NO
+IDL_PROPERTY_SUPPORT   = YES
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+TYPEDEF_HIDES_STRUCT   = NO
+SYMBOL_CACHE_SIZE      = 0
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = NO
+EXTRACT_ANON_NSPACES   = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_GROUP_NAMES       = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+SHOW_FILES             = YES
+SHOW_NAMESPACES        = YES
+FILE_VERSION_FILTER    = 
+LAYOUT_FILE            = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = /home/bjoern/bpdyndnsd
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl \
+                         *.C \
+                         *.CC \
+                         *.C++ \
+                         *.II \
+                         *.I++ \
+                         *.H \
+                         *.HH \
+                         *.H++ \
+                         *.CS \
+                         *.PHP \
+                         *.PHP3 \
+                         *.M \
+                         *.MM \
+                         *.PY \
+                         *.F90 \
+                         *.F \
+                         *.VHD \
+                         *.VHDL \
+                         *.C \
+                         *.H \
+                         *.tlh \
+                         *.diff \
+                         *.patch \
+                         *.moc \
+                         *.xpm \
+                         *.dox
+RECURSIVE              = yes
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = *
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = NO
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+HTML_DYNAMIC_SECTIONS  = NO
+GENERATE_DOCSET        = NO
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+CHM_INDEX_ENCODING     = 
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+GENERATE_QHP           = NO
+QCH_FILE               = 
+QHP_NAMESPACE          = 
+QHP_VIRTUAL_FOLDER     = doc
+QHP_CUSTOM_FILTER_NAME = 
+QHP_CUST_FILTER_ATTRS  = 
+QHP_SECT_FILTER_ATTRS  = 
+QHG_LOCATION           = 
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NONE
+TREEVIEW_WIDTH         = 250
+FORMULA_FONTSIZE       = 10
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = yes
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = bpdyndnsd.tag
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+MSCGEN_PATH            = 
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+DOT_FONTNAME           = FreeSans
+DOT_FONTSIZE           = 10
+DOT_FONTPATH           = 
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+CALLER_GRAPH           = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+DOT_GRAPH_MAX_NODES    = 50
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..1a96a1e
--- /dev/null
+++ b/README
@@ -0,0 +1,30 @@
+-----------------------------------------------
+Simple C++ Hello World template based on cmake
+QStart
+Author: Anne-Marie Mahfouf
+Date: 2006-12-06
+-----------------------------------------------
+
+This README file explains you basic things for starting with
+this application template.
+
+-----------------------------------------------
+* REQUIREMENTS *
+- Qt version might be 3.3.4 or 3.3.5
+-  kdelibs 3.5 and kdelibs headers 3.5 (devel package) in order to build this template.
+- cmake (http://www.cmake.org/) version 2.1 or 2.2 in your PATH
+-----------------------------------------------
+
+-----------------------------------------------
+* Building and running *
+- cmake will run after the template is loaded provided cmake is in your PATH. If not, you will see an error message in the terminal
+and you will need to install cmake in your PATH.
+- In the Build menu in KDevelop, click on Build Project (or use the F8 shortcut) in order to build your project.
+- Run your project using the Build menu -> Execute Program. Note that default makes your program run in KDevelop integrated terminal. You can run your program in an external terminal by changing the project options (Project -> Project Options -> Run options and check at the bottom "Start in external terminal")
+-----------------------------------------------
+
+-----------------------------------------------
+* Useful link *
+
+CMake Documentation: http://www.cmake.org/HTML/Documentation.html
+
diff --git a/bin/bpdyndnsd b/bin/bpdyndnsd
new file mode 100755 (executable)
index 0000000..f60b730
Binary files /dev/null and b/bin/bpdyndnsd differ
diff --git a/bpdyndnsd.kdevelop b/bpdyndnsd.kdevelop
new file mode 100644 (file)
index 0000000..4ac180d
--- /dev/null
@@ -0,0 +1,225 @@
+<?xml version = '1.0'?>
+<kdevelop>
+  <general>
+    <author>Bjoern Sikora</author>
+    <email>bjoern.sikora@intra2net.com</email>
+    <version>0.1</version>
+    <projectmanagement>KDevCustomProject</projectmanagement>
+    <primarylanguage>C++</primarylanguage>
+    <ignoreparts/>
+    <projectdirectory>.</projectdirectory>
+    <absoluteprojectpath>false</absoluteprojectpath>
+    <secondaryLanguages>
+      <language>C</language>
+    </secondaryLanguages>
+    <projectname>bpdyndnsd</projectname>
+    <description/>
+    <defaultencoding/>
+    <versioncontrol/>
+  </general>
+  <kdevcustomproject>
+    <filelistdirectory>/home/bjoern/bpdyndnsd</filelistdirectory>
+    <run>
+      <mainprogram>/home/bjoern/bpdyndnsd/bin/bpdyndnsd</mainprogram>
+      <directoryradio>custom</directoryradio>
+      <customdirectory>/home/bjoern/bpdyndnsd</customdirectory>
+      <programargs/>
+      <terminal>false</terminal>
+      <autocompile>true</autocompile>
+      <envvars/>
+      <globaldebugarguments/>
+      <globalcwd>/home/bjoern/bpdyndnsd</globalcwd>
+      <useglobalprogram>false</useglobalprogram>
+      <autoinstall>false</autoinstall>
+      <autokdesu>false</autokdesu>
+    </run>
+    <build>
+      <buildtool>make</buildtool>
+      <builddir>/home/bjoern/bpdyndnsd</builddir>
+    </build>
+    <make>
+      <abortonerror>false</abortonerror>
+      <numberofjobs>1</numberofjobs>
+      <dontact>false</dontact>
+      <makebin>/usr/bin/gmake </makebin>
+      <selectedenvironment>default</selectedenvironment>
+      <environments>
+        <default>
+          <envvar value="1" name="VERBOSE" />
+        </default>
+      </environments>
+      <prio>0</prio>
+      <defaulttarget/>
+      <makeoptions/>
+    </make>
+    <blacklist>
+      <path>CMakeFiles</path>
+      <path>CMakeFiles/CompilerIdC</path>
+      <path>CMakeFiles/CompilerIdC/CMakeCCompilerId.c</path>
+      <path>CMakeFiles/CompilerIdCXX</path>
+      <path>CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp</path>
+      <path>Makefile</path>
+    </blacklist>
+    <filetypes>
+      <filetype>*.java</filetype>
+      <filetype>*.h</filetype>
+      <filetype>*.H</filetype>
+      <filetype>*.hh</filetype>
+      <filetype>*.hxx</filetype>
+      <filetype>*.hpp</filetype>
+      <filetype>*.c</filetype>
+      <filetype>*.C</filetype>
+      <filetype>*.cc</filetype>
+      <filetype>*.cpp</filetype>
+      <filetype>*.c++</filetype>
+      <filetype>*.cxx</filetype>
+      <filetype>Makefile</filetype>
+      <filetype>CMakeLists.txt</filetype>
+    </filetypes>
+    <other>
+      <prio>0</prio>
+      <otherbin/>
+      <defaulttarget/>
+      <otheroptions/>
+      <selectedenvironment>default</selectedenvironment>
+      <environments>
+        <default/>
+      </environments>
+    </other>
+  </kdevcustomproject>
+  <kdevfilecreate>
+    <filetypes/>
+    <useglobaltypes>
+      <type ext="cpp" />
+      <type ext="h" />
+    </useglobaltypes>
+  </kdevfilecreate>
+  <kdevdoctreeview>
+    <projectdoc>
+      <userdocDir>html/</userdocDir>
+      <apidocDir>html/</apidocDir>
+    </projectdoc>
+    <ignoreqt_xml/>
+    <ignoredoxygen/>
+    <ignorekdocs/>
+    <ignoretocs/>
+    <ignoredevhelp/>
+  </kdevdoctreeview>
+  <cppsupportpart>
+    <filetemplates>
+      <interfacesuffix>.h</interfacesuffix>
+      <implementationsuffix>.cpp</implementationsuffix>
+    </filetemplates>
+  </cppsupportpart>
+  <kdevcppsupport>
+    <codecompletion>
+      <includeGlobalFunctions>true</includeGlobalFunctions>
+      <includeTypes>true</includeTypes>
+      <includeEnums>true</includeEnums>
+      <includeTypedefs>false</includeTypedefs>
+      <automaticCodeCompletion>true</automaticCodeCompletion>
+      <automaticArgumentsHint>true</automaticArgumentsHint>
+      <automaticHeaderCompletion>true</automaticHeaderCompletion>
+      <codeCompletionDelay>250</codeCompletionDelay>
+      <argumentsHintDelay>400</argumentsHintDelay>
+      <headerCompletionDelay>250</headerCompletionDelay>
+      <showOnlyAccessibleItems>false</showOnlyAccessibleItems>
+      <completionBoxItemOrder>0</completionBoxItemOrder>
+      <howEvaluationContextMenu>true</howEvaluationContextMenu>
+      <showCommentWithArgumentHint>true</showCommentWithArgumentHint>
+      <statusBarTypeEvaluation>false</statusBarTypeEvaluation>
+      <namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
+      <processPrimaryTypes>true</processPrimaryTypes>
+      <processFunctionArguments>false</processFunctionArguments>
+      <preProcessAllHeaders>false</preProcessAllHeaders>
+      <parseMissingHeadersExperimental>false</parseMissingHeadersExperimental>
+      <resolveIncludePathsUsingMakeExperimental>false</resolveIncludePathsUsingMakeExperimental>
+      <alwaysParseInBackground>true</alwaysParseInBackground>
+      <usePermanentCaching>true</usePermanentCaching>
+      <alwaysIncludeNamespaces>false</alwaysIncludeNamespaces>
+      <includePaths>.;</includePaths>
+    </codecompletion>
+    <references/>
+    <qt>
+      <used>false</used>
+      <version>3</version>
+      <includestyle>3</includestyle>
+      <root>/usr/lib64/qt-3.3</root>
+      <designerintegration>EmbeddedKDevDesigner</designerintegration>
+      <qmake>/usr/lib64/qt-3.3/bin/qmake</qmake>
+      <designer>/usr/lib64/qt-3.3/bin/designer</designer>
+      <designerpluginpaths/>
+    </qt>
+    <creategettersetter>
+      <prefixGet/>
+      <prefixSet>set</prefixSet>
+      <prefixVariable>m_,_</prefixVariable>
+      <parameterName>theValue</parameterName>
+      <inlineGet>true</inlineGet>
+      <inlineSet>true</inlineSet>
+    </creategettersetter>
+    <splitheadersource>
+      <enabled>false</enabled>
+      <synchronize>true</synchronize>
+      <orientation>Vertical</orientation>
+    </splitheadersource>
+  </kdevcppsupport>
+  <kdevfileview>
+    <groups>
+      <group pattern="CMakeLists.txt;*.cmake;" name="CMake" />
+      <group pattern="*.h;*.hxx;*.hpp" name="Header" />
+      <group pattern="*.c" name="C Sources" />
+      <group pattern="*.cpp;*.C;*.cxx;*.cc" name="C++ Sources" />
+      <group pattern="*.ui" name="Qt Designer files" />
+      <hidenonprojectfiles>true</hidenonprojectfiles>
+      <hidenonlocation>false</hidenonlocation>
+    </groups>
+    <tree>
+      <hidepatterns>*.o,*.lo,CVS,*~,cmake*</hidepatterns>
+      <hidenonprojectfiles>true</hidenonprojectfiles>
+    </tree>
+  </kdevfileview>
+  <substmap>
+    <APPNAME>bpdyndnsd</APPNAME>
+    <APPNAMELC>bpdyndnsd</APPNAMELC>
+    <APPNAMESC>Bpdyndnsd</APPNAMESC>
+    <APPNAMEUC>BPDYNDNSD</APPNAMEUC>
+    <AUTHOR>Bjoern Sikora</AUTHOR>
+    <EMAIL>bjoern.sikora@intra2net.com</EMAIL>
+    <LICENSE>GPL</LICENSE>
+    <LICENSEFILE>COPYING</LICENSEFILE>
+    <VERSION>0.1</VERSION>
+    <YEAR>2009</YEAR>
+    <dest>/home/bjoern/bpdyndnsd</dest>
+  </substmap>
+  <kdevdebugger>
+    <general>
+      <gdbpath/>
+      <dbgshell/>
+      <configGdbScript/>
+      <runShellScript/>
+      <runGdbScript/>
+      <breakonloadinglibs>true</breakonloadinglibs>
+      <separatetty>false</separatetty>
+      <floatingtoolbar>false</floatingtoolbar>
+      <raiseGDBOnStart>false</raiseGDBOnStart>
+    </general>
+    <display>
+      <staticmembers>false</staticmembers>
+      <demanglenames>true</demanglenames>
+      <outputradix>10</outputradix>
+    </display>
+  </kdevdebugger>
+  <kdevdocumentation>
+    <projectdoc>
+      <docsystem/>
+      <docurl/>
+      <usermanualurl/>
+    </projectdoc>
+  </kdevdocumentation>
+  <ctagspart>
+    <customArguments/>
+    <customTagfilePath>/home/bjoern/bpdyndnsd/tags</customTagfilePath>
+    <activeTagsFiles/>
+  </ctagspart>
+</kdevelop>
diff --git a/bpdyndnsd.kdevelop.filelist b/bpdyndnsd.kdevelop.filelist
new file mode 100644 (file)
index 0000000..da4a586
--- /dev/null
@@ -0,0 +1,11 @@
+# KDevelop Custom Project File List
+.
+./dhs.cpp
+./dhs.h
+./ods.cpp
+./ods.h
+./service.cpp
+./service.h
+CMakeLists.txt
+src
+src/main.cpp
diff --git a/bpdyndnsd.kdevelop.pcs b/bpdyndnsd.kdevelop.pcs
new file mode 100644 (file)
index 0000000..9deef63
Binary files /dev/null and b/bpdyndnsd.kdevelop.pcs differ
diff --git a/bpdyndnsd.kdevses b/bpdyndnsd.kdevses
new file mode 100644 (file)
index 0000000..c157584
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version = '1.0' encoding = 'UTF-8'?>
+<!DOCTYPE KDevPrjSession>
+<KDevPrjSession>
+ <DocsAndViews NumberOfDocuments="11" >
+  <Doc0 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/main.cpp" >
+   <View0 Encoding="" line="13" Type="Source" />
+  </Doc0>
+  <Doc1 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/updater.cpp" >
+   <View0 Encoding="" line="46" Type="Source" />
+  </Doc1>
+  <Doc2 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/updater.h" >
+   <View0 Encoding="" line="31" Type="Source" />
+  </Doc2>
+  <Doc3 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/config.cpp" >
+   <View0 Encoding="" line="109" Type="Source" />
+  </Doc3>
+  <Doc4 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/config.h" >
+   <View0 Encoding="" line="46" Type="Source" />
+  </Doc4>
+  <Doc5 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/service.cpp" >
+   <View0 Encoding="" line="0" Type="Source" />
+  </Doc5>
+  <Doc6 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/service.h" >
+   <View0 Encoding="" line="27" Type="Source" />
+  </Doc6>
+  <Doc7 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/dhs.cpp" >
+   <View0 Encoding="" line="31" Type="Source" />
+  </Doc7>
+  <Doc8 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/dhs.h" >
+   <View0 Encoding="" line="24" Type="Source" />
+  </Doc8>
+  <Doc9 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/ods.cpp" >
+   <View0 Encoding="" line="20" Type="Source" />
+  </Doc9>
+  <Doc10 NumberOfViews="1" URL="file:///home/bjoern/bpdyndnsd/src/ods.h" >
+   <View0 Encoding="" line="22" Type="Source" />
+  </Doc10>
+ </DocsAndViews>
+ <pluginList>
+  <kdevdebugger>
+   <breakpointList/>
+   <showInternalCommands value="0" />
+  </kdevdebugger>
+  <kdevastyle>
+   <Extensions ext="*.cpp *.h *.hpp,*.c *.h,*.cxx *.hxx,*.c++ *.h++,*.cc *.hh,*.C *.H,*.diff ,*.inl,*.java,*.moc,*.patch,*.tlh,*.xpm" />
+   <AStyle IndentPreprocessors="0" FillCount="4" PadParenthesesOut="1" IndentNamespaces="1" IndentLabels="1" Fill="Tabs" MaxStatement="40" Brackets="Break" MinConditional="-1" IndentBrackets="0" PadParenthesesUn="1" BlockBreak="0" KeepStatements="1" KeepBlocks="1" BlockIfElse="0" IndentSwitches="1" PadOperators="0" FStyle="UserDefined" IndentCases="0" FillEmptyLines="0" BracketsCloseHeaders="0" BlockBreakAll="0" PadParenthesesIn="1" IndentClasses="1" IndentBlocks="0" FillForce="0" />
+  </kdevastyle>
+  <kdevbookmarks>
+   <bookmarks>
+    <bookmark url="/home/bjoern/bpdyndnsd/src/updater.cpp" >
+     <mark line="45" />
+    </bookmark>
+   </bookmarks>
+  </kdevbookmarks>
+  <kdevvalgrind>
+   <executable path="" params="" />
+   <valgrind path="" params="" />
+   <calltree path="" params="" />
+   <kcachegrind path="" />
+  </kdevvalgrind>
+ </pluginList>
+</KDevPrjSession>
diff --git a/src/config.cpp b/src/config.cpp
new file mode 100644 (file)
index 0000000..8f021f9
--- /dev/null
@@ -0,0 +1,111 @@
+//
+// C++ Implementation: config
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "config.h"
+
+Config::Config()
+{
+    // define valid command line parameters
+    opt_desc_cmd = new po::options_description("Command line options");
+
+    opt_desc_cmd->add_options()
+        ("help,?","Show help.")
+        ("version,v","Show version.")
+        ("protocol,q",po::value<string>(),"Set the service protocol type.")
+        ("host,h",po::value<string>(),"Set the hostname to update.")
+        ("login,l",po::value<string>(),"Set the login.")
+        ("password,p",po::value<string>(),"Set the password.")
+    ;
+
+    // define valid config file parameters
+    opt_desc_conf = new po::options_description("Config file options");
+
+    opt_desc_conf->add_options()
+        ("help,?","Show help.")
+        ("version,v","Show version.")
+    ;
+}
+
+Config::~Config()
+{
+    delete opt_desc_cmd;
+    delete opt_desc_conf;
+}
+
+int Config::parse_cmd_line(int argc, char *argv[])
+{
+    try
+    {
+        po::variables_map vm;
+        po::store(po::parse_command_line(argc, argv, *opt_desc_cmd), vm);
+        po::notify(vm);
+
+        if(vm.count("help"))
+            return 1;
+        else if(vm.count("version"))
+            return 2;
+
+        if(vm.count("protocol") && vm.count("host") && vm.count("login") && vm.count("password"))
+        {
+            // get the cmd parameter values for protocol host login and password
+            string protocol = vm["protocol"].as<string>();
+            string host = vm["host"].as<string>();
+            string login = vm["login"].as<string>();
+            string password = vm["password"].as<string>();
+
+            //TODO: convert all options to lowercase
+
+            // create Service object
+            if(protocol == "dhs")
+            {
+                Service * service = new DHS(host,login,password);
+                this->services.push_back(service);
+            }
+            else if(protocol == "ods")
+            {
+                Service * service = new ODS(host,login,password);
+                this->services.push_back(service);
+            }
+        }
+        else
+        {
+            cout << "Not all needed options set!\n" << endl;
+            return 1;
+        }
+    }
+    catch(boost::program_options::unknown_option e)
+    {
+        cout << "Unknown option set." << endl;
+        return 1;
+    }
+    return 0;
+}
+
+void Config::print_usage()
+{
+    cout << "Usage: bpdyndnsd [Command line options]" << "\n" << endl;
+    cout << *opt_desc_cmd << endl;
+}
+
+void Config::print_version(string version)
+{
+    cout << "Bullet proof dynamic dns daemon.\nbpdyndnsd " << version << endl;
+}
+
+void Config::load_config_file(string filename)
+{
+
+}
+
+list<Service*> Config::get_services()
+{
+    return this->services;
+}
diff --git a/src/config.h b/src/config.h
new file mode 100644 (file)
index 0000000..1758d9f
--- /dev/null
@@ -0,0 +1,50 @@
+//
+// C++ Interface: config
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include <boost/program_options.hpp>
+#include <string>
+#include <iostream>
+
+#include "service.h"
+
+#include "dhs.h"
+#include "ods.h"
+
+namespace po = boost::program_options;
+using namespace std;
+
+class Config{
+private:
+    po::options_description *opt_desc_cmd;
+    po::options_description *opt_desc_conf;
+
+    list<Service*> services;
+
+public:
+    Config();
+
+    ~Config();
+
+    int parse_cmd_line(int, char **);
+
+    void load_config_file(string);
+
+    void print_usage();
+
+    void print_version(string);
+
+    list<Service*> get_services();
+};
+
+#endif
diff --git a/src/dhs.cpp b/src/dhs.cpp
new file mode 100644 (file)
index 0000000..b526cbd
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// C++ Implementation: dhs
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "dhs.h"
+
+DHS::DHS(string hostname, string login, string password)
+{
+    this->hostname = hostname;
+    this->login = login;
+    this->password = password;
+}
+
+DHS::~DHS()
+{
+}
+
+void DHS::update(string)
+{
+    cout << "Running Update for Service DHS" << endl;
+    cout << "Hostname: " << this->hostname << endl;
+    cout << "Login: " << this->login << endl;
+    cout << "Password: " << this->password << endl;
+}
diff --git a/src/dhs.h b/src/dhs.h
new file mode 100644 (file)
index 0000000..2552902
--- /dev/null
+++ b/src/dhs.h
@@ -0,0 +1,37 @@
+//
+// C++ Interface: dhs
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef DHS_H
+#define DHS_H
+
+#include <string>
+#include "service.h"
+
+using namespace std;
+
+/**
+       @author Bjoern Sikora <bjoern.sikora@intra2net.com>
+*/
+class DHS : public Service {
+private:
+    string hostname;
+    string login;
+    string password;
+
+public:
+    DHS(string,string,string);
+
+    ~DHS();
+
+    void update(string);
+};
+
+#endif
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644 (file)
index 0000000..450b785
--- /dev/null
@@ -0,0 +1,59 @@
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#define VERSION     0
+#define REVISION    1
+#define RELEASE     0
+
+#include <iostream>
+#include <list>
+#include <string>
+
+#include <boost/foreach.hpp>
+
+#include "updater.cpp"
+#include "config.cpp"
+
+#include "service.cpp"
+
+#include "dhs.cpp"
+#include "ods.cpp"
+
+using namespace std;
+
+/**
+ * @brief the main part.
+ * @param argc number of arguments
+ * @param argv command line arguments
+ * @return exit code for the process.
+ */
+int main(int argc, char *argv[])
+{
+    // initialize Config class
+    Config * config = new Config;
+    int ret_val = config->parse_cmd_line(argc,argv);
+    if(ret_val == 1)
+    {
+        config->print_usage();
+        return 0;
+    }
+    else if(ret_val == 2)
+    {
+        ostringstream version_string;
+        version_string << VERSION << "." << REVISION << "." << RELEASE;
+        config->print_version(version_string.str());
+        return 0;
+    }
+
+    // initialize Updater
+
+    Updater * updater = new Updater(config);
+
+    updater->update_services();
+
+    cout << "Hello World" << endl;
+
+    return 0;
+}
diff --git a/src/ods.cpp b/src/ods.cpp
new file mode 100644 (file)
index 0000000..86b2dbd
--- /dev/null
@@ -0,0 +1,31 @@
+//
+// C++ Implementation: ods
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "ods.h"
+
+ODS::ODS(string hostname, string login, string password)
+{
+    this->hostname = hostname;
+    this->login = login;
+    this->password = password;
+}
+
+ODS::~ODS()
+{
+}
+
+void ODS::update(string)
+{
+    cout << "Running Update for Service ODS" << endl;
+    cout << "Hostname: " << this->hostname << endl;
+    cout << "Login: " << this->login << endl;
+    cout << "Password: " << this->password << endl;
+}
diff --git a/src/ods.h b/src/ods.h
new file mode 100644 (file)
index 0000000..d4f54db
--- /dev/null
+++ b/src/ods.h
@@ -0,0 +1,37 @@
+//
+// C++ Interface: ods
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef ODS_H
+#define ODS_H
+
+#include <string>
+#include "service.h"
+
+using namespace std;
+
+/**
+       @author Bjoern Sikora <bjoern.sikora@intra2net.com>
+*/
+class ODS : public Service {
+private:
+    string hostname;
+    string login;
+    string password;
+
+public:
+    ODS(string,string,string);
+
+    ~ODS();
+
+    void update(string);
+};
+
+#endif
diff --git a/src/service.cpp b/src/service.cpp
new file mode 100644 (file)
index 0000000..fe4bba1
--- /dev/null
@@ -0,0 +1,22 @@
+//
+// C++ Implementation: service
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "service.h"
+
+Service::Service()
+{
+}
+
+Service::~Service()
+{
+}
+
+
diff --git a/src/service.h b/src/service.h
new file mode 100644 (file)
index 0000000..c3374a7
--- /dev/null
@@ -0,0 +1,32 @@
+//
+// C++ Interface: service
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef SERVICE_H
+#define SERVICE_H
+
+#include <string>
+
+using namespace std;
+
+/**
+       @author Bjoern Sikora <bjoern.sikora@intra2net.com>
+*/
+class Service{
+public:
+    Service();
+
+    ~Service();
+
+    virtual void update(string)=0;
+
+};
+
+#endif
diff --git a/src/updater.cpp b/src/updater.cpp
new file mode 100644 (file)
index 0000000..c092743
--- /dev/null
@@ -0,0 +1,49 @@
+//
+// C++ Implementation: updater
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "updater.h"
+
+#include <boost/foreach.hpp>
+
+Updater::Updater()
+{
+}
+
+Updater::Updater(Config* conf)
+{
+    this->conf = conf;
+}
+
+Updater::~Updater()
+{
+}
+
+void Updater::set_config(Config* conf)
+{
+    this->conf = conf;
+}
+
+Config* Updater::get_config()
+{
+    return this->conf;
+}
+
+void Updater::update_services()
+{
+    list<Service*> services = this->conf->get_services();
+
+    string ip = "192.168.1.1";
+
+    BOOST_FOREACH( Service * service, services )
+    {
+        service->update(ip);
+    }
+}
\ No newline at end of file
diff --git a/src/updater.h b/src/updater.h
new file mode 100644 (file)
index 0000000..6d3bd41
--- /dev/null
@@ -0,0 +1,35 @@
+//
+// C++ Interface: updater
+//
+// Description: 
+//
+//
+// Author: Bjoern Sikora <bjoern.sikora@intra2net.com>, (C) 2009
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef UPDATER_H
+#define UPDATER_H
+
+#include "config.h"
+
+class Updater{
+private:
+    Config* conf;
+
+public:
+    Updater();
+
+    Updater(Config*);
+
+    ~Updater();
+
+    void set_config(Config*);
+
+    Config* get_config();
+
+    void update_services();
+};
+
+#endif