From 4545a3714db60a5a84a7310ae54082d88109c77b Mon Sep 17 00:00:00 2001 From: Bjoern Sikora Date: Fri, 24 Jul 2009 09:35:56 +0200 Subject: [PATCH] Initial commit on project bpdyndnsd. --- CMakeLists.txt | 22 +++ COPYING | 340 +++++++++++++++++++++++++++++++++++++++++++ Doxyfile | 323 ++++++++++++++++++++++++++++++++++++++++ README | 30 ++++ bin/bpdyndnsd | Bin 0 -> 87219 bytes bpdyndnsd.kdevelop | 225 ++++++++++++++++++++++++++++ bpdyndnsd.kdevelop.filelist | 11 ++ bpdyndnsd.kdevelop.pcs | Bin 0 -> 24393 bytes bpdyndnsd.kdevses | 62 ++++++++ src/config.cpp | 111 ++++++++++++++ src/config.h | 50 +++++++ src/dhs.cpp | 31 ++++ src/dhs.h | 37 +++++ src/main.cpp | 59 ++++++++ src/ods.cpp | 31 ++++ src/ods.h | 37 +++++ src/service.cpp | 22 +++ src/service.h | 32 ++++ src/updater.cpp | 49 ++++++ src/updater.h | 35 +++++ 20 files changed, 1507 insertions(+), 0 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 COPYING create mode 100644 Doxyfile create mode 100644 README create mode 100755 bin/bpdyndnsd create mode 100644 bpdyndnsd.kdevelop create mode 100644 bpdyndnsd.kdevelop.filelist create mode 100644 bpdyndnsd.kdevelop.pcs create mode 100644 bpdyndnsd.kdevses create mode 100644 src/config.cpp create mode 100644 src/config.h create mode 100644 src/dhs.cpp create mode 100644 src/dhs.h create mode 100644 src/main.cpp create mode 100644 src/ods.cpp create mode 100644 src/ods.h create mode 100644 src/service.cpp create mode 100644 src/service.h create mode 100644 src/updater.cpp create mode 100644 src/updater.h diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e20c49f --- /dev/null +++ b/CMakeLists.txt @@ -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 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. + + 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.) + +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. + + 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. + + 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 + + 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. + + + Copyright (C) + + 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. + + , 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 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 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 index 0000000000000000000000000000000000000000..f60b730c349c5a067fbb005660a457a30aa51883 GIT binary patch literal 87219 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 literal 0 HcmV?d00001 diff --git a/bpdyndnsd.kdevelop b/bpdyndnsd.kdevelop new file mode 100644 index 0000000..4ac180d --- /dev/null +++ b/bpdyndnsd.kdevelop @@ -0,0 +1,225 @@ + + + + Bjoern Sikora + bjoern.sikora@intra2net.com + 0.1 + KDevCustomProject + C++ + + . + false + + C + + bpdyndnsd + + + + + + /home/bjoern/bpdyndnsd + + /home/bjoern/bpdyndnsd/bin/bpdyndnsd + custom + /home/bjoern/bpdyndnsd + + false + true + + + /home/bjoern/bpdyndnsd + false + false + false + + + make + /home/bjoern/bpdyndnsd + + + false + 1 + false + /usr/bin/gmake + default + + + + + + 0 + + + + + CMakeFiles + CMakeFiles/CompilerIdC + CMakeFiles/CompilerIdC/CMakeCCompilerId.c + CMakeFiles/CompilerIdCXX + CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp + Makefile + + + *.java + *.h + *.H + *.hh + *.hxx + *.hpp + *.c + *.C + *.cc + *.cpp + *.c++ + *.cxx + Makefile + CMakeLists.txt + + + 0 + + + + default + + + + + + + + + + + + + + + html/ + html/ + + + + + + + + + + .h + .cpp + + + + + true + true + true + false + true + true + true + 250 + 400 + 250 + false + 0 + true + true + false + std=_GLIBCXX_STD;__gnu_cxx=std + true + false + false + false + false + true + true + false + .; + + + + false + 3 + 3 + /usr/lib64/qt-3.3 + EmbeddedKDevDesigner + /usr/lib64/qt-3.3/bin/qmake + /usr/lib64/qt-3.3/bin/designer + + + + + set + m_,_ + theValue + true + true + + + false + true + Vertical + + + + + + + + + + true + false + + + *.o,*.lo,CVS,*~,cmake* + true + + + + bpdyndnsd + bpdyndnsd + Bpdyndnsd + BPDYNDNSD + Bjoern Sikora + bjoern.sikora@intra2net.com + GPL + COPYING + 0.1 + 2009 + /home/bjoern/bpdyndnsd + + + + + + + + + true + false + false + false + + + false + true + 10 + + + + + + + + + + + + /home/bjoern/bpdyndnsd/tags + + + diff --git a/bpdyndnsd.kdevelop.filelist b/bpdyndnsd.kdevelop.filelist new file mode 100644 index 0000000..da4a586 --- /dev/null +++ b/bpdyndnsd.kdevelop.filelist @@ -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 index 0000000000000000000000000000000000000000..9deef6367f7373b20482d7d4ab5770cf1ba87126 GIT binary patch literal 24393 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 literal 0 HcmV?d00001 diff --git a/bpdyndnsd.kdevses b/bpdyndnsd.kdevses new file mode 100644 index 0000000..c157584 --- /dev/null +++ b/bpdyndnsd.kdevses @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/config.cpp b/src/config.cpp new file mode 100644 index 0000000..8f021f9 --- /dev/null +++ b/src/config.cpp @@ -0,0 +1,111 @@ +// +// C++ Implementation: config +// +// Description: +// +// +// Author: Bjoern Sikora , (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(),"Set the service protocol type.") + ("host,h",po::value(),"Set the hostname to update.") + ("login,l",po::value(),"Set the login.") + ("password,p",po::value(),"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 host = vm["host"].as(); + string login = vm["login"].as(); + string password = vm["password"].as(); + + //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 Config::get_services() +{ + return this->services; +} diff --git a/src/config.h b/src/config.h new file mode 100644 index 0000000..1758d9f --- /dev/null +++ b/src/config.h @@ -0,0 +1,50 @@ +// +// C++ Interface: config +// +// Description: +// +// +// Author: Bjoern Sikora , (C) 2009 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef CONFIG_H +#define CONFIG_H + +#include +#include +#include + +#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 services; + +public: + Config(); + + ~Config(); + + int parse_cmd_line(int, char **); + + void load_config_file(string); + + void print_usage(); + + void print_version(string); + + list get_services(); +}; + +#endif diff --git a/src/dhs.cpp b/src/dhs.cpp new file mode 100644 index 0000000..b526cbd --- /dev/null +++ b/src/dhs.cpp @@ -0,0 +1,31 @@ +// +// C++ Implementation: dhs +// +// Description: +// +// +// Author: Bjoern Sikora , (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 index 0000000..2552902 --- /dev/null +++ b/src/dhs.h @@ -0,0 +1,37 @@ +// +// C++ Interface: dhs +// +// Description: +// +// +// Author: Bjoern Sikora , (C) 2009 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef DHS_H +#define DHS_H + +#include +#include "service.h" + +using namespace std; + +/** + @author Bjoern Sikora +*/ +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 index 0000000..450b785 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,59 @@ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#define VERSION 0 +#define REVISION 1 +#define RELEASE 0 + +#include +#include +#include + +#include + +#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 index 0000000..86b2dbd --- /dev/null +++ b/src/ods.cpp @@ -0,0 +1,31 @@ +// +// C++ Implementation: ods +// +// Description: +// +// +// Author: Bjoern Sikora , (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 index 0000000..d4f54db --- /dev/null +++ b/src/ods.h @@ -0,0 +1,37 @@ +// +// C++ Interface: ods +// +// Description: +// +// +// Author: Bjoern Sikora , (C) 2009 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef ODS_H +#define ODS_H + +#include +#include "service.h" + +using namespace std; + +/** + @author Bjoern Sikora +*/ +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 index 0000000..fe4bba1 --- /dev/null +++ b/src/service.cpp @@ -0,0 +1,22 @@ +// +// C++ Implementation: service +// +// Description: +// +// +// Author: Bjoern Sikora , (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 index 0000000..c3374a7 --- /dev/null +++ b/src/service.h @@ -0,0 +1,32 @@ +// +// C++ Interface: service +// +// Description: +// +// +// Author: Bjoern Sikora , (C) 2009 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef SERVICE_H +#define SERVICE_H + +#include + +using namespace std; + +/** + @author Bjoern Sikora +*/ +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 index 0000000..c092743 --- /dev/null +++ b/src/updater.cpp @@ -0,0 +1,49 @@ +// +// C++ Implementation: updater +// +// Description: +// +// +// Author: Bjoern Sikora , (C) 2009 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#include "updater.h" + +#include + +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 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 index 0000000..6d3bd41 --- /dev/null +++ b/src/updater.h @@ -0,0 +1,35 @@ +// +// C++ Interface: updater +// +// Description: +// +// +// Author: Bjoern Sikora , (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 -- 1.7.1