diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cbb3a13
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+*.rpm
+*.log
+*spec-20*
+*.tar.gz
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..bedf44f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,21 @@
+# Makefile for source rpm: smeserver-ddclient
+# $Id: Makefile,v 1.1 2020/05/08 08:56:26 brianr Exp $
+NAME := smeserver-ddclient
+SPECFILE = $(firstword $(wildcard *.spec))
+
+define find-makefile-common
+for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
+endef
+
+MAKEFILE_COMMON := $(shell $(find-makefile-common))
+
+ifeq ($(MAKEFILE_COMMON),)
+# attept a checkout
+define checkout-makefile-common
+test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
+endef
+
+MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
+endif
+
+include $(MAKEFILE_COMMON)
diff --git a/README.md b/README.md
index fd7c9d7..c2d0d28 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,16 @@
-# smeserver-ddclient
+# smeserver-ddclient
-SMEServer Koozali developed git repo for smeserver-ddclient smecontribs
\ No newline at end of file
+SMEServer Koozali developed git repo for smeserver-ddclient smecontribs
+
+## Wiki
+
https://wiki.koozali.org/Ddclient
+
https://wiki.koozali.org/Ddclient-help
+
+## Bugzilla
+Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-ddclient&product=SME%20Contribs&query_format=advanced&limit=0&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=CONFIRMED)
+
+## Description
+
+
*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.*
+*Once it has been checked, then this comment will be deleted*
+
diff --git a/additional/CHANGELOG.git b/additional/CHANGELOG.git
new file mode 100644
index 0000000..7877a66
--- /dev/null
+++ b/additional/CHANGELOG.git
@@ -0,0 +1,84 @@
+commit 93889b252f2b1e3ff0fe3f8c5461d6638846e472
+Author: Stephane de Labrusse
+Date: Fri Aug 29 15:47:37 2014 +0200
+
+ added ssl
+
+commit 80788ffca76392187530211d3a22b2551a89fe4c
+Author: Stephane de Labrusse
+Date: Fri Aug 29 15:45:46 2014 +0200
+
+ added ssl
+
+commit e99eb33b7090184ba0677ef29a71a610dbb57d52
+Author: Stephane de Labrusse
+Date: Wed Aug 27 00:13:16 2014 +0200
+
+ add a db to set the deamon update
+
+commit be331f8e59372bd05c6a9a044af6e76199376973
+Author: Stephane de Labrusse
+Date: Tue Aug 26 23:48:49 2014 +0200
+
+ add a db to set the deamon update
+
+commit 5bdb0cb1023b08f8a0b3ee5ee39727ad7de30637
+Author: Stephane de Labrusse
+Date: Tue Aug 26 23:44:51 2014 +0200
+
+ add a db to set the deamon update
+
+commit 3ef0ed2d0c1f8217e6dbea0c0f7fc2a8469096d2
+Author: Stephane de Labrusse
+Date: Tue Aug 26 22:06:11 2014 +0200
+
+ namecheap
+
+commit f06ff2755bb40e4579f2c1b2f65d353ab5f2403f
+Author: Stephane de Labrusse
+Date: Mon Aug 25 08:51:10 2014 +0200
+
+ added the namecheap protocol
+
+commit a3b351e8d825c176fca6492c2b39752452c4881d
+Author: Stephane de Labrusse
+Date: Mon Aug 25 08:48:50 2014 +0200
+
+ added the namecheap protocol
+
+commit da1df58146515be7e641d228adeb6cf1c4a6d22f
+Author: Stephane de Labrusse
+Date: Mon Aug 25 08:41:50 2014 +0200
+
+ added the namecheap protocol
+
+commit 245958e7341d4094bc6892bc5d65d0bd2e56f396
+Author: Stephane de Labrusse
+Date: Mon Aug 25 08:32:25 2014 +0200
+
+ added the namecheap protocol
+
+commit 1e7e4c4bdbd2d95b2912696d2633ca13477460ea
+Author: Stephane de Labrusse
+Date: Mon Aug 25 08:31:34 2014 +0200
+
+ added the namecheap protocol
+
+commit 895e5ad856d5ba05c99e669ea8058ae9c12eece9
+Author: Stephane de Labrusse
+Date: Mon Aug 25 08:30:45 2014 +0200
+
+ added the namecheap protocol
+
+commit 775931461d6d330c6b7408ff087f57c226f3b39e
+Author: Stephane de Labrusse
+Date: Sat Jun 21 14:17:00 2014 +0200
+
+ * Tue Jun 10 2014 stephane de Labrusse - 1.2.0-1.sme
+ - Initial release to sme9contribs
+
+commit 9bc41511091499a36eadfe5bf225163525597363
+Author: Stephane de Labrusse
+Date: Sat Jun 21 14:09:46 2014 +0200
+
+ Initial commit
diff --git a/additional/COPYING b/additional/COPYING
new file mode 100644
index 0000000..eeb586b
--- /dev/null
+++ b/additional/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) 19yy
+
+ 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) 19yy 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/additional/LICENSE b/additional/LICENSE
new file mode 100644
index 0000000..22fbe5d
--- /dev/null
+++ b/additional/LICENSE
@@ -0,0 +1,339 @@
+GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ 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.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General
+Public License instead of this License.
\ No newline at end of file
diff --git a/additional/README.md b/additional/README.md
new file mode 100644
index 0000000..b1f2c60
--- /dev/null
+++ b/additional/README.md
@@ -0,0 +1,4 @@
+smeserver-ddclient
+==================
+
+A contrib to simplify the setting of dynamic IP service providers
diff --git a/additional/debugfiles.list b/additional/debugfiles.list
new file mode 100644
index 0000000..e69de29
diff --git a/additional/debugsources.list b/additional/debugsources.list
new file mode 100644
index 0000000..e69de29
diff --git a/additional/smeserver-ddclient.spec b/additional/smeserver-ddclient.spec
new file mode 100644
index 0000000..79dde57
--- /dev/null
+++ b/additional/smeserver-ddclient.spec
@@ -0,0 +1,165 @@
+# $Id: smeserver-ddclient.spec,v 1.8 2013/12/31 07:04:47 unnilennium Exp $
+# Authority: dungog
+# Name: Stephen Noble
+
+%define name smeserver-ddclient
+%define version 1.2.1
+%define release 1
+
+Summary: ddclient panel for SME Server
+Name: %{name}
+Version: %{version}
+Release: %{release}%{?dist}
+License: GNU GPL version 2
+Group: SMEserver/addon
+Source: %{name}-%{version}.tar.gz
+BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
+BuildRequires: e-smith-devtools
+Obsoletes: sme7-ddclient
+BuildArchitectures: noarch
+Requires: e-smith-release >= 9.0
+Requires: ddclient >= 3.8.1
+Requires: e-smith-formmagick
+AutoReqProv: no
+
+%changelog
+* Mon Aug 25 2014 stephane de Labrusse - 1.2.1-1.sme
+- Added the Namecheap protocol [SME:8538]
+- Added a db DeamonUpdate
+- Added force ssl
+
+* Tue Jun 10 2014 stephane de Labrusse - 1.2.0-1.sme
+- Initial release to sme9contribs
+
+* Mon Dec 30 2013 JP Pialasse 1.0.0-30.sme
+- fix db extras need to migrate [SME: 6494]
+- added misisng prop login
+
+* Tue Dec 3 2013 JP Pialasse 1.0.0-28.sme
+- patch fix for translation
+
+* Tue Nov 26 2013 stephane de Labrusse 1.0.0-27.sme
+- 5 more dynamic dns services (DtDNS, Loopia, dnspark.com, OVH DynHost,Noip ,changeip) [SME:8019]
+
+* Mon Jul 25 2013 stephane de Labrusse 1.0.0-26.sme
+- modify the path of template ddclient.conf [SME: 8018]
+
+* Sun Jul 14 2013 JP Pialasse 1.0.0-24.sme
+- apply locale 2013-07-14 patch
+
+* Sun Mar 06 2011 SME Translation Server 1.0.0-23.sme
+- apply locale 2011-03-06 patch
+
+* Sun May 23 2010 SME Translation Server 1.0.0-22.sme
+- apply locale 2010-05-23 patch
+
+* Tue Mar 02 2010 SME Translation Server 1.0.0-21.sme
+- apply locale 2010-03-02 patch
+
+* Tue Oct 27 2009 SME Translation Server 1.0.0-20.sme
+- apply locale 2009-10-27 patch
+
+* Wed Oct 21 2009 SME Translation Server 1.0.0-19.sme
+- apply locale 2009-10-21 patch
+
+* Thu Oct 8 2009 Filippo Carletti 1.0.0-18.sme
+- Merged dyndns db into domains db
+- Template and cgi cleanup
+- Fixed template expansion in events
+
+* Mon Aug 24 2009 SME Translation Server 1.0.0-17.sme
+- apply locale 2009-08-24 patch
+
+* Mon Apr 27 2009 SME Translation Server 1.0.0-16.sme
+- apply locale 2009-04-27 patch
+
+* Tue Mar 03 2009 SME Translation Server
+- apply locale 2009-03-03 patch
+
+* Sun Mar 1 2009 Jonathan Martens 1.0.0-14
+- Apply 1 Mar 2009 locale patch [SME: 5018]
+
+* Sat Jan 31 2009 Jonathan Martens 1.0.0-13
+- Apply 31 Jan 2009 locale patch [SME: 4951]
+
+* Thu Jan 1 2009 Jonathan Martens 1.0.0-12
+- Apply 1 Jan 2009 locale patch [SME: 4900]
+
+* Sun Nov 30 2008 Jonathan Martens 1.0.0-11
+- Apply 30 Nov 2008 locale patch
+
+* Wed Nov 5 2008 Jonathan Martens 1.0.0-10
+- Apply 5 Nov 2008 locale patch
+
+* Tue Oct 14 2008 Jonathan Martens 1.0.0-9
+- Apply 14 Oct 2008 locale patch
+
+* Tue Jul 1 2008 Jonathan Martens 1.0.0-8
+- Apply 1 July 2008 locale patch
+
+* Wed Jun 25 2008 Jonathan Martens 1.0.0-7
+- Apply 25 Jun 2008 locale patch
+
+* Thu May 21 2008 Jonathan Martens 1.0.0-6
+- Apply 21 May 2008 locale patch
+
+* Mon May 5 2008 Jonathan Martens 1.0.0-5
+- Apply 5 May 2008 locale patch
+
+* Sat Apr 26 2008 Jonathan Martens 1.0.0-4
+- Added 26 April 2008 locale patch
+- Add common tags to e-smith-formmagick's general
+
+* Wed Apr 23 2008 Jonathan Martens 1.0.0-3
+- Added 23 April 2008 locale patch
+- Removed version number from spec file
+
+* Wed Apr 23 2008 Stephen Noble 1.0.0-2
+- prepare for import to smecontribs
+- links moved to createlinks
+- en lexicon split from function
+- fr and de lexicons removed, add back in pootle
+
+* Sat Jan 20 2007 Paul Floor
+- ver 1.0 rel 1: split into smeserver-ddclient and ddclient
+- removed heartbeat
+
+* Sun Nov 12 2006 Filali-Ansary Vincent
+- ver 3.7 rel 1: change for the new ddclient client
+
+* Sat Aug 19 2006 Filali-Ansary Vincent
+- rel 8: change checkip.sjc.dyndns.org by checkip.dyndns.org
+
+* Mon Aug 7 2006 Filali-Ansary Vincent
+- rel 7: repair the custom eurodyndns options on ddclient.conf.
+
+* Mon Jul 31 2006 Filali-Ansary Vincent
+- rel 6: repair the custom dyndns options on ddclient.conf.
+
+* Fri Jun 30 2006 Filali-Ansary Vincent
+- rel 5: change checkip.dyndns.org by checkip.sjc.dyndns.org
+
+* Tue May 09 2006 Filali-Ansary Vincent
+- initial release
+
+%description
+ddclient panel and config files for SME9.
+
+%prep
+%setup
+
+%build
+perl createlinks
+
+%install
+rm -rf $RPM_BUILD_ROOT
+(cd root ; find . -depth -print | cpio -ldump $RPM_BUILD_ROOT)
+rm -f %{name}-%{version}-filelist
+/sbin/e-smith/genfilelist $RPM_BUILD_ROOT > %{name}-%{version}-filelist
+echo "%doc COPYING" >> %{name}-%{version}-filelist
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f %{name}-%{version}-filelist
+%defattr(-,root,root)
diff --git a/contriborbase b/contriborbase
new file mode 100644
index 0000000..9b7fd51
--- /dev/null
+++ b/contriborbase
@@ -0,0 +1 @@
+contribs10
diff --git a/createlinks b/createlinks
new file mode 100644
index 0000000..721b78c
--- /dev/null
+++ b/createlinks
@@ -0,0 +1,61 @@
+#! /usr/bin/perl -w
+
+use esmith::Build::CreateLinks qw(:all);
+
+panel_link("ddclient", 'manager');
+
+# our event specific for updating with yum without reboot
+$event = "smeserver-ddclient-update";
+
+foreach my $file (qw(
+ /etc/systemd/system-preset/49-koozali.preset
+ /etc/ddclient/ddclient.conf
+ /etc/ppp/ip-up.local
+ /usr/lib/systemd/system/ddclient.service.d/50koozali.conf
+ ))
+{
+ templates2events( $file, $event );
+}
+
+
+#action needed in case we have a systemd unit
+event_link("systemd-default", $event, "10");
+event_link("systemd-reload", $event, "50");
+
+#action specific to this package
+#event_link("conf-timezone", $event, "30");
+
+
+#services we need to restart
+safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/ddclient");
+
+
+#service_link_enhanced("ddclient", "S65", "7");
+
+
+$event = 'domain-create';
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/ddclient");
+ templates2events("/etc/ddclient/ddclient.conf", $event);
+
+$event = 'domain-delete';
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/ddclient");
+ templates2events("/etc/ddclient/ddclient.conf", $event);
+
+$event = 'domain-modify';
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/ddclient");
+ templates2events("/etc/ddclient/ddclient.conf", $event);
+
+$event = 'bootstrap-console-save';
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/ddclient");
+ templates2events("/etc/ddclient/ddclient.conf", $event);
+
+$event = 'console-save';
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/ddclient");
+ templates2events("/etc/ddclient/ddclient.conf", $event);
+
+#$event = 'post-upgrade';
+# templates2events("/etc/ddclient/ddclient.conf", $event);
+# templates2events("/etc/ppp/ip-up.local", $event);
+
+# and create an empty cache
+# safe_touch("/var/cache/ddclient/ddclient.cache")
diff --git a/root/etc/ddclient/ddclient.conf b/root/etc/ddclient/ddclient.conf
new file mode 100644
index 0000000..f29d0a4
--- /dev/null
+++ b/root/etc/ddclient/ddclient.conf
@@ -0,0 +1,290 @@
+######################################################################
+##
+## Define default global variables with lines like:
+## var=value [, var=value]*
+## These values will be used for each following host unless overridden
+## with a local variable definition.
+##
+## Define local variables for one or more hosts with:
+## var=value [, var=value]* host.and.domain[,host2.and.domain...]
+##
+## Lines can be continued on the following line by ending the line
+## with a \
+##
+##
+## Warning: not all supported routers or dynamic DNS services
+## are mentioned here.
+##
+## AND THIS FILE IS OUT OF DATE - IN PARTICULAR THE USE OF "use" and "web" is deprecated!
+## (bjr Nov2023)
+######################################################################
+daemon=300 # check every 300 seconds
+syslog=yes # log update msgs to syslog
+#mail=root # mail all msgs to root
+mail-failure=root # mail failed update msgs to root
+pid=/var/run/ddclient/ddclient.pid # record PID in file.
+ssl=yes # use ssl-support. Works with
+ # ssl-library
+# postscript=script # run script after updating. The
+ # new IP is added as argument.
+#
+#use=watchguard-soho, fw=192.168.111.1:80 # via Watchguard's SOHO FW
+#use=netopia-r910, fw=192.168.111.1:80 # via Netopia R910 FW
+#use=smc-barricade, fw=192.168.123.254:80 # via SMC's Barricade FW
+#use=netgear-rt3xx, fw=192.168.0.1:80 # via Netgear's internet FW
+#use=linksys, fw=192.168.1.1:80 # via Linksys's internet FW
+#use=maxgate-ugate3x00, fw=192.168.0.1:80 # via MaxGate's UGATE-3x00 FW
+#use=elsa-lancom-dsl10, fw=10.0.0.254:80 # via ELSA LanCom DSL/10 DSL Router
+#use=elsa-lancom-dsl10-ch01, fw=10.0.0.254:80 # via ELSA LanCom DSL/10 DSL Router
+#use=elsa-lancom-dsl10-ch02, fw=10.0.0.254:80 # via ELSA LanCom DSL/10 DSL Router
+#use=alcatel-stp, fw=10.0.0.138:80 # via Alcatel Speed Touch Pro
+#use=xsense-aero, fw=192.168.1.1:80 # via Xsense Aero Router
+#use=allnet-1298, fw=192.168.1.1:80 # via AllNet 1298 DSL Router
+#use=3com-oc-remote812, fw=192.168.0.254:80 # via 3com OfficeConnect Remote 812
+#use=e-tech, fw=192.168.1.1:80 # via E-tech Router
+#use=cayman-3220h, fw=192.168.0.1:1080 # via Cayman 3220-H DSL Router
+#
+#fw-login=admin, fw-password=XXXXXX # FW login and password
+#
+## To obtain an IP address from FW status page (using fw-login, fw-password)
+#use=fw, fw=192.168.1.254/status.htm, fw-skip='IP Address' # found after IP Address
+#
+## To obtain an IP address from Web status page (using the proxy if defined)
+## by default, checkip.dyndns.org is used if you use the dyndns protocol.
+## Using use=web is enough to get it working.
+## WARNING: set deamon at least to 600 seconds if you use checkip or you could
+## get banned from their service.
+#use=web, web=checkip.dyndns.org/, web-skip='IP Address' # found after IP Address
+#
+#use=ip, ip=127.0.0.1 # via static IP's
+#use=if, if=eth0 # via interfaces
+#use=web # via web
+#
+#protocol=dyndns2 # default protocol
+#proxy=fasthttp.sympatico.ca:80 # default proxy
+#server=members.dyndns.org # default server
+#server=members.dyndns.org:8245 # default server (bypassing proxies)
+
+#login=your-login # default login
+#password=test # default password
+#mx=mx.for.your.host # default MX
+#backupmx=yes|no # host is primary MX?
+#wildcard=yes|no # add wildcard CNAME?
+
+##
+## dyndns.org dynamic addresses
+##
+## (supports variables: wildcard,mx,backupmx)
+##
+# server=members.dyndns.org, \
+# protocol=dyndns2 \
+# your-dynamic-host.dyndns.org
+
+##
+## dyndns.org static addresses
+##
+## (supports variables: wildcard,mx,backupmx)
+##
+# static=yes, \
+# server=members.dyndns.org, \
+# protocol=dyndns2 \
+# your-static-host.dyndns.org
+
+##
+##
+## dyndns.org custom addresses
+##
+## (supports variables: wildcard,mx,backupmx)
+##
+# custom=yes, \
+# server=members.dyndns.org, \
+# protocol=dyndns2 \
+# your-domain.top-level,your-other-domain.top-level
+
+##
+## ZoneEdit (zoneedit.com)
+##
+# server=dynamic.zoneedit.com, \
+# protocol=zoneedit1, \
+# login=your-zoneedit-login, \
+# password=your-zoneedit-password \
+# your.any.domain,your-2nd.any.dom
+
+##
+## EasyDNS (easydns.com)
+##
+# server=members.easydns.com, \
+# protocol=easydns, \
+# login=your-easydns-login, \
+# password=your-easydns-password \
+# your.any.domain,your-2nd.any.domain
+
+##
+## Hammernode (hn.org) dynamic addresses
+##
+# server=dup.hn.org, \
+# protocol=hammernode1, \
+# login=your-hn-login, \
+# password=your-hn-password \
+# your-hn-host.hn.org,your-2nd-hn-host.hn.org
+
+##
+## dslreports.com dynamic-host monitoring
+##
+# server=members.dslreports.com \
+# protocol=dslreports1, \
+# login=dslreports-login, \
+# password=dslreports-password \
+# dslreports-unique-id
+
+##
+## OrgDNS.org account-configuration
+##
+# use=web, web=members.orgdns.org/nic/ip
+# server=www.orgdns.org \
+# protocol=dyndns2 \
+# login=yourLoginName \
+# password=yourPassword \
+# yourSubdomain.orgdns.org
+
+##
+## dnspark.com
+## (supports variables: mx, mxpri)
+##
+# use=web, web=ipdetect.dnspark.com, web-skip='Current Address:'
+# protocol=dnspark, \
+# server=www.dnspark.com, \
+# your-host.dnspark.com
+
+##
+## NameCheap (namecheap.com)
+##
+# protocol=namecheap, \
+# server=dynamicdns.park-your-domain.com, \
+# login=my-namecheap.com-login, \
+# password=my-namecheap.com-password \
+# fully.qualified.host
+
+##
+## NearlyFreeSpeech.NET (nearlyfreespeech.net)
+##
+# protocol = nfsn, \
+# login=member-login, \
+# password=api-key, \
+# zone=example.com \
+# example.com,subdomain.example.com
+
+##
+##
+## Loopia (loopia.se)
+##
+# use=web
+# web=loopia
+# protocol=dyndns2
+# server=dns.loopia.se
+# script=/XDynDNSServer/XDynDNS.php
+# login=my-loopia.se-login
+# password=my-loopia.se-password
+# my.domain.tld,other.domain.tld
+
+##
+##
+## ChangeIP (changeip.com)
+##
+## single host update
+# protocol=changeip, \
+# login=my-my-changeip.com-login, \
+# password=my-changeip.com-password \
+# myhost.changeip.org
+
+##
+## DtDNS (www.dtdns.com)
+##
+# protocol=dtdns,
+# server=www.dtdns.com,
+# client=ddclient,
+# password=my-dtdns.com-password
+# myhost.dtdns.net, otherhost.dtdns.net
+
+##
+## CloudFlare (www.cloudflare.com)
+##
+#protocol=cloudflare, \
+#zone=domain.tld, \
+#ttl=1, \
+#login=your-login-email, \
+#password=APIKey \
+#domain.tld,my.domain.tld
+
+##
+## Google Domains (www.google.com/domains)
+##
+# protocol=googledomains,
+# login=my-auto-generated-username,
+# password=my-auto-generated-password
+# my.domain.tld, otherhost.domain.tld
+
+##
+## Duckdns (http://www.duckdns.org/)
+##
+#
+# password=my-auto-generated-password
+# protocol=duckdns hostwithoutduckdnsorg
+
+##
+## Freemyip (http://freemyip.com/)
+##
+#
+# protocol=freemyip,
+# password=my-token
+# myhost
+
+##
+## MyOnlinePortal (http://myonlineportal.net)
+##
+# protocol=dyndns2
+# ssl=yes
+# # ipv6=yes # optional
+# use=web, web=myonlineportal.net/checkip
+# # use=if, if=eth0 # alternative to use=web
+# # if-skip=Scope:Link # alternative to use=web
+# login=your-myonlineportal-username
+# password=your-myonlineportal-password
+# domain.myonlineportal.net
+
+##
+## nsupdate.info IPV4(https://www.nsupdate.info)
+##
+#protocol=dyndns2
+#use=web, web=http://ipv4.nsupdate.info/myip
+#server=ipv4.nsupdate.info
+#login=domain.nsupdate.info
+#password='123'
+#domain.nsupdate.info
+
+##
+## nsupdate.info IPV6 (https://www.nsupdate.info)
+## ddclient releases <= 3.8.1 do not support IPv6
+##
+#protocol=dyndns2
+#usev6=if, if=eth0
+#server=ipv6.nsupdate.info
+#login=domain.nsupdate.info
+#password='123'
+#domain.nsupdate.info
+
+##
+## Yandex.Mail for Domain (domain.yandex.com)
+##
+# protocol=yandex, \
+# login=domain.tld, \
+# password=yandex-pdd-token \
+# my.domain.tld,other.domain.tld \
+
+## DNS Made Easy (https://dnsmadeeasy.com)
+##
+# protocol=dnsmadeeasy,
+# login=your-account-email-address
+# password=your-generated-password
+# your-numeric-record-id-1,your-numeric-record-id-2,...
+
diff --git a/root/etc/e-smith/db/configuration/defaults/ddclient/DeamonUpdate b/root/etc/e-smith/db/configuration/defaults/ddclient/DeamonUpdate
new file mode 100644
index 0000000..2921a15
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/ddclient/DeamonUpdate
@@ -0,0 +1 @@
+360
diff --git a/root/etc/e-smith/db/configuration/defaults/ddclient/SSL b/root/etc/e-smith/db/configuration/defaults/ddclient/SSL
new file mode 100644
index 0000000..7cfab5b
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/ddclient/SSL
@@ -0,0 +1 @@
+yes
diff --git a/root/etc/e-smith/db/configuration/defaults/ddclient/status b/root/etc/e-smith/db/configuration/defaults/ddclient/status
new file mode 100644
index 0000000..86981e6
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/ddclient/status
@@ -0,0 +1 @@
+enabled
diff --git a/root/etc/e-smith/db/configuration/defaults/ddclient/syslog b/root/etc/e-smith/db/configuration/defaults/ddclient/syslog
new file mode 100644
index 0000000..26ed6c9
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/ddclient/syslog
@@ -0,0 +1 @@
+enabled
\ No newline at end of file
diff --git a/root/etc/e-smith/db/configuration/defaults/ddclient/type b/root/etc/e-smith/db/configuration/defaults/ddclient/type
new file mode 100644
index 0000000..24e1098
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/ddclient/type
@@ -0,0 +1 @@
+service
diff --git a/root/etc/e-smith/db/configuration/defaults/ddclient/urlcheckip b/root/etc/e-smith/db/configuration/defaults/ddclient/urlcheckip
new file mode 100644
index 0000000..14874f4
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/ddclient/urlcheckip
@@ -0,0 +1 @@
+checkip.dyndns.org
diff --git a/root/etc/e-smith/db/domains/migrate/80ddclient b/root/etc/e-smith/db/domains/migrate/80ddclient
new file mode 100644
index 0000000..f675d1a
--- /dev/null
+++ b/root/etc/e-smith/db/domains/migrate/80ddclient
@@ -0,0 +1,64 @@
+{
+my $filename = '/home/e-smith/db/extras';
+return 0
+unless (-e $filename);
+
+
+use esmith::ConfigDB;
+
+##use db domain or die if doesn't exist
+my $domaindb = esmith::ConfigDB->open('/home/e-smith/db/domains');
+
+##use db extras or die if doesn't exist
+my $edb = esmith::ConfigDB->open($filename);
+
+ if (defined $edb)
+ {
+ foreach my $extradomain ($edb->get_all_by_prop(type=>'ddhost'))
+ {
+ my $currentdom = $extradomain->key;
+ my $descddhost = $edb->get_prop("$currentdom", "desc") || "ddhost migrated domain";
+ my $dnsddhost = $edb->get_prop("$currentdom", "dns");
+ my $mxddhost = $edb->get_prop("$currentdom", "mx");
+ my $passwordddhost = $edb->get_prop("$currentdom", "password");
+ my $login = $edb->get_prop("$currentdom", "login");
+
+ $domaindb->new_record( "$currentdom" );
+ $domaindb->set_value( "$currentdom" , "domain" );
+ $domaindb->set_prop( "$currentdom" , "Description" , "$descddhost" );
+ $domaindb->set_prop( "$currentdom" , "dns" , "$dnsddhost" ) if defined $dnsddhost;
+ $domaindb->set_prop( "$currentdom" , "mx" , "$mxddhost") if defined $mxddhost;
+ $domaindb->set_prop( "$currentdom" , "password" , "$passwordddhost" ) if defined $passwordddhost;
+ $domaindb->set_prop( "$currentdom" , "login" , "$login" ) if defined $login;
+ # followings set defaults values as a domain pointing to Primary ibay
+ # as even if they are not configured they will point there !
+ # Nameservers are defined as internet, as they are dynamic domains,
+ # if admin wants to point as a localhost, he just has to do it in the manager
+ $domaindb->set_prop( "$currentdom" , "SystemPrimaryDomain" , "no" );
+ $domaindb->set_prop( "$currentdom" , "Removable" , "yes" );
+ $domaindb->set_prop( "$currentdom" , "Nameservers" , "internet" );
+ $domaindb->set_prop( "$currentdom" , "Content" , "Primary" );
+ }
+
+ foreach my $extradomain ($edb->get_all_by_prop(type=>'domain'))
+
+ {
+ my $currentdom = $extradomain->key;
+ # commented as we rather keep description already in domain
+ #my $descdomain = $edb->get_prop("$currentdom", "desc");
+ my $dnsdomain = $edb->get_prop("$currentdom", "dns");
+ my $mxdomain = $edb->get_prop("$currentdom", "mx");
+ my $passworddomain = $edb->get_prop("$currentdom", "password");
+ my $login = $edb->get_prop("$currentdom", "login");
+
+ #$domaindb->set_prop( "$currentdom" , "desc", "$descdomain" );
+ $domaindb->set_prop( "$currentdom" , "dns" , "$dnsdomain" ) if defined $dnsdomain;
+ $domaindb->set_prop( "$currentdom" , "mx" , "$mxdomain" ) if defined $mxdomain;
+ $domaindb->set_prop( "$currentdom" , "password" , "$passworddomain" ) if defined $passworddomain;
+ $domaindb->set_prop( "$currentdom" , "login" , "$login" ) if defined $login;
+ }
+
+system ("/bin/mv $filename /home/e-smith/db/extras-migrated");
+
+ }
+}
diff --git a/root/etc/e-smith/locale/bg/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/bg/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..b97bd56
--- /dev/null
+++ b/root/etc/e-smith/locale/bg/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Създаване, премахване и промяна на публикация на виртуални домейни
+
+
+ FORM_DESCRIPTION
+ виртуален домейн за публикуване в мрежата.
+
+
+ NO_VIRTUAL_DOMAINS
+ Няма виртуални домейни в системата.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Текущ списък на виртуални домейни
+
+
+ PUBLICATION
+ публикуване
+
+
+ PRIMARY_SITE
+ основен сайт
+
+
+ CONTENT
+ {$content} инфо слот
+
+
+ CREATE_TITLE
+ Създай нова публикация на виртуален домейн
+
+
+ SERVERS_LABEL
+ къде да публикувам
+
+
+ MX
+ запис MX
+
+
+ NAME_LABEL
+ име за публикуването
+
+
+ PASSWORD_LABEL
+ парола за публикуването
+
+
+ CONTENT_FIELD_DESCRIPTION
+ За уеб сайт можете да изберете основния уеб сайт или всеки инфо слот за съдържание.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Грешка: неочакван или липсващ символ в името на домейна {$domainName}. Името на домейна трябва да съдържа една или повече букви, цифри, точки и знаци минус. Новия домейна не бе създаден.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Грешка: неочакван или липсващ символ в описанието на домейна {$domainName}. Новия домейна не бе създаден.
+
+
+ DOMAIN_IN_USE_ERROR
+ Грешка: домейнът {$domainName} вече се ползва. Новия домейна не бе създаден.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Грешка: домейнът {$domainName} е резервиран за предоставяне на сигурен уеб сървър за виртуален домейн {$key}. Не беше създаден нов домейн.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Грешка: домейнът {$domainName} е вашият системен домейн. Не можете да имате виртуален домейн със същото име. Не беше създаден нов домейн.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Грешка: домейнът {$domainName} е резервиран за предоставяне на сигурен уеб сървър за системния домейн {$systemDomain}. Не беше създаден нов домейн.
+
+
+ SUCCESSFULLY_CREATED
+ Успешно публикуване на домейн {$domainName} на {$dns}.
+
+
+ MODIFY_TITLE
+ Промяна на виртуален домейн
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Грешка: Домейн {$domainName} не съществува.
+
+
+ SUCCESSFULLY_MODIFIED
+ Успешно променена публикация на {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Премахване на публикация на виртуален домейн
+
+
+ REMOVE_DESCRIPTION
+ Ще премахнете публикация на домейн {$domain} ({$domainDesc}) на {$dns}.
Сигурни ли сте че искате да премахнете тази публикация на домейна?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Грешка: вътрешна грешка при премахване на публикация на {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Успешно изтрита публикация на of {$domain} от {$dns}.
+
+
+ DYNDNS1
+ динамични адреси от dyndns.org
+
+
+ DYNDNS2
+ статични адреси от dyndns.org
+
+
+ DYNDNS3
+ потребителски адреси от dyndns.org
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Динамични адреси от Hammernode (hn.org)
+
+
+ DSLREPORTS
+ Наблюдение на динамични хостове от dslreports.com
+
+
+ EURODYNDNS
+ динамични адреси от eurodyndns.org
+
+
+ DTDNS
+ Динамични адреси от DtDNS (www.dtdns.com)
+
+
+ LOOPIA
+ Динамични адреси от Loopia (loopia.se)
+
+
+ DNSPARK
+ Динамични адреси от Dnspark (dnspark.com)
+
+
+ DYNHOST
+ Динамични адреси от DynHost (ovh.com)
+
+
+ NOIP
+ Динамични адреси от NoIP (noip.com)
+
+
+ CHANGEIP
+ Динамични адреси от ChangeIP (changeip.com)
+
+
+ NAMECHEAP
+ Динамични адреси от NAMECHEAP (namecheap.com)
+
+
+ SPDNS
+ динамични адреси от SPDNS (spdns.de)
+
+
+ CUSTOMDNS
+ Потребителски доставчик на динамичен DNS
+
+
+ CUSTOMDNS_LABEL
+ Потребителски адрес на сървъра
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Потребителски протокол за ddclient
+
+
+ CUSTOM_DESCRIPTION
+ Можете да използвате потребителски доставчик на динамичен DNS, ако вашият не е в публикувания списък. Моля, попълнете потребителските полета с съответните стойности
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Грешка: неочакван или липсващ символ в името на потребителския сървър на домейна {$domainName}. Адресът на сървъра трябва да съдържа една или повече букви, цифри, точки и знаци минус. Промяната не е приложена.
+
+
+ ddclient
+ Динамичен клиент
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Грешка: този домейн "{$domainName}" вече съществува. Моля, изберете друг.
+
+
+ FREE_FORM_DESCRIPTION
+ Тук можете да създадете всякакво име на домейн за да го публикувате чрез мрежата.
+
+
+ RETRIEVE_SSL
+ SSL актуализация
+
+
+ RETRIEVE_DEAMONUPDATE
+ Актуализация на Deamon (в секунди)
+
+
+ RETRIEVE_URLCHECKIP
+ URL за външен IP адрес
+
+
+ APPLY
+ Запис
+
+
+ DOMAIN_NAME_LABEL
+ Име на домейн
+
+
+ DESCRIPTION_LABEL
+ Описание на домейна
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Успешно променихте настройките за получаване на IP.
+
+
+ RETRIEVE_METHOD
+ Метод за получаване на нов IP адрес:
+
+
+ RETRIEVE_IF
+ Локален интерфейс за вземане на нов IP адрес, ако сте избрали метод по интерфейс
+
+
+ RETRIEVE_CMD
+ Команда за изпълнение за вземане на IP адрес, ако сте избрали метод чрез команда
+
+
+ SME external Interface
+ Външен интерфейс на SME
+
+
+ SME configuration DB
+ БД с конфигурация на SME
+
+
+ web
+ Web заявка
+
+
+ Interface
+ IP от интерфейс
+
+
+ IP
+ Ръчни настройки на IP адрес
+
+
+ Command
+ Команда за изпълнение
+
+
+ RETRIEVE_IP
+ IP адрес за ръчно форсиране
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/da/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/da/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..9613e4b
--- /dev/null
+++ b/root/etc/e-smith/locale/da/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Oprette, fjerne eller ændre på offentliggørelsen af virtuelle domæner
+
+
+ FORM_DESCRIPTION
+ virtuelt domæne til offentliggørelse på nettet.
+
+
+ NO_VIRTUAL_DOMAINS
+ Der er ikke nogen virtuelle domæner på serveren.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Aktuel liste over virtuelle domæner
+
+
+ PUBLICATION
+ offentliggørelse
+
+
+ PRIMARY_SITE
+ primært websted
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Oprette en ny offentliggørelse af et virtuelt domæne
+
+
+ SERVERS_LABEL
+ placering af offentliggørelsen
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login til offentliggørelsen
+
+
+ PASSWORD_LABEL
+ adgangskode til offentliggørelsen
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Som kilde for websideindholdet kan du vælge enten serverens primære webside eller en i-bay.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Fejl: uventede eller manglende tegn i domænenavn {$domainName}. Domænenavnet skal indeholde et eller flere bogstaver, tal, punktum eller bindestreger. Domænet blev ikke oprettet.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Fejl: uventede eller manglende tegn i domænebeskrivelsen {$domainDesc}. Domænet blev ikke oprettet.
+
+
+ DOMAIN_IN_USE_ERROR
+ Fejl: domænenavn {$domainName} er allerede i brug. Domænet blev ikke oprettet.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Fejl: Domænenavn {$domainName} er reserveret til sikker webserver for det virtuelle domænenavn {$key}. Domænet blev ikke oprettet.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Fejl: Domænet {$domainName} er dit systems domænenavn. Du kan ikke have et virtuelt domæne med det samme navn. Domænet blev ikke oprettet.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Fejl: Domænenavn {$domainName} er reserveret til sikker webserver for dit systems domænenavn {$systemDomain}. Domænet blev ikke oprettet.
+
+
+ SUCCESSFULLY_CREATED
+ Domænenavnet {$domainName} er offentligtgjort på {$dns}.
+
+
+ MODIFY_TITLE
+ Rediger virtuelt domæne
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Fejl: {$domainName} findes ikke.
+
+
+ SUCCESSFULLY_MODIFIED
+ Ændrede offentliggørelsen af {$domainName} på {$dns}.
+
+
+ REMOVE_TITLE
+ Fjerne offentliggørelsen af virtuelt domæner
+
+
+ REMOVE_DESCRIPTION
+ Du er ved at fjerne offentliggørelsen af domænet {$domain} ({$domainDesc}) på {$dns}. Er du sikker på, at du vil fjerne offentliggørelsen af dette domæne?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Fejl: intern fejl under fjernelse af offentliggørelsen for {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Slettede offentliggørelsen af {$domain} på {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamiske adresser
+
+
+ DYNDNS2
+ dyndns.org statiske adresser
+
+
+ DYNDNS3
+ dyndns.org valgte adresser
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamiske adresser
+
+
+ DSLREPORTS
+ dslreports.com dynamisk værtsovervågning
+
+
+ EURODYNDNS
+ eurodyndns.org dynamiske adresser
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamiske adresser
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamiske adresser
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamiske adresser
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamiske adresser
+
+
+ NOIP
+ NoIP (noip.com) dynamiske adresser
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamiske adresser
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamiske adresser
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamiske adresser
+
+
+ CUSTOMDNS
+ Selvvalgt Dynamisk DNS service
+
+
+ CUSTOMDNS_LABEL
+ Selvvalgt server adresse
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Selvvalgt ddclient Protokol
+
+
+ CUSTOM_DESCRIPTION
+ Du kan bruge en selvvalgt dynamisk dns udbyder hvis din ikke er på den publicerede liste. Udfyld de relavante felter med de nødvendige indstillinger
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Fejl: uventede eller manglende tegn i selvvalgt server adresse for domænet {$domainName}. Domænenavnet skal indeholde et eller flere bogstaver, tal, punktum eller bindestreger. Domænet blev ikke oprettet.
+
+
+ ddclient
+ Dynamiske klienter
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Fejl: domænenavn: "{$domainName}" er allerede i brug. Vælg venligst et andet..
+
+
+ FREE_FORM_DESCRIPTION
+ Her kan oprettes ethvert domæne til offentliggørelse over nettet.
+
+
+ RETRIEVE_SSL
+ SSL opdatér
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon opdatér (sekunder)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for den eksterne IP
+
+
+ APPLY
+ Gem
+
+
+ DOMAIN_NAME_LABEL
+ Domænenavn
+
+
+ DESCRIPTION_LABEL
+ Domæne beskrivelse
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Redigering af modtage IP opsætning er gennemført med succes.
+
+
+ RETRIEVE_METHOD
+ Metode til at få ny IP:
+
+
+ RETRIEVE_IF
+ Lokal brugergrænseflade til at få ny IP, hvis lokal brugergrænseflade er valgt
+
+
+ RETRIEVE_CMD
+ Kommando til at få IP, hvis kommando metode er valgt
+
+
+ SME external Interface
+ SME ekstern grænseflade
+
+
+ SME configuration DB
+ SME konfiguration af DB
+
+
+ web
+ Web forespørgsel
+
+
+ Interface
+ IP fra grænseflade
+
+
+ IP
+ Manuel IP konfiguration
+
+
+ Command
+ Kommando til eksekvering
+
+
+ RETRIEVE_IP
+ IP for manuel opdatering
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/de/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/de/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..779d028
--- /dev/null
+++ b/root/etc/e-smith/locale/de/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Erstellen, Löschen und Ändern der Einstellungen zur Veröffentlichung virtueller Domänen
+
+
+ FORM_DESCRIPTION
+ virtuelle Domäne im Internet veröffentlichen.
+
+
+ NO_VIRTUAL_DOMAINS
+ Keine virtuellen Domänen im System vorhanden.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Aktuelle Liste der virtuellen Domänen
+
+
+ PUBLICATION
+ Veröffentlichung
+
+
+ PRIMARY_SITE
+ Primäre Seite
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Neue virtuelle Domäne im Internet veröffentlichen
+
+
+ SERVERS_LABEL
+ Auswahl DNS-Providerdienst
+
+
+ MX
+ MX schreiben
+
+
+ NAME_LABEL
+ Login zum Veröffentlichen
+
+
+ PASSWORD_LABEL
+ Kennwort
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Für die Webseite können Sie entweder die primäre Seite oder ein i-bay als Inhalt auswählen.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ FEHLER: Ungültiges oder fehlendes Zeichen im Domänen-Namen {$domainName}. Der Domänen-Name darf nur Buchstaben, Nummern, Punkte oder Bindestriche enthalten. Neue Domäne wurde nicht erstellt.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ FEHLER: Ungültiges oder fehlendes Zeichen in der Domänenbeschreibung {$domainDesc}. Neue Domäne wurde nicht erstellt.
+
+
+ DOMAIN_IN_USE_ERROR
+ FEHLER: Domäne {$domainName} ist bereits vorhanden. Neue Domäne wurde nicht erstellt.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Fehler: Der Domänen-Name {$domainName} ist reserviert, um einen sicheren Webserver für die virtuelle Domäne {$key} bereitzustellen. Die neue Domäne wurde nicht angelegt.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Fehler: Der Domänen-Name {$domainName} ist der Domänen-Name des Systems. Eine virtuelle Domain darf nicht den identischen Namen wie den Domänen-Namen des Systems haben. Die neue Domäne wurde nicht angelegt.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Fehler: Der Domäne-Name {$domainName} ist reserviert, um einen sicheren Webserver für Ihren Domänen-Namen des Systems {$key} bereitzustellen. Die neue Domäne wurde nicht angelegt.
+
+
+ SUCCESSFULLY_CREATED
+ Die Domäne {$domainName} wurde erfolgreich bei {$dns} veröffentlicht.
+
+
+ MODIFY_TITLE
+ Virtuelle Domäne ändern
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ FEHLER: {$domainName} ist keine existierende Domäne.
+
+
+ SUCCESSFULLY_MODIFIED
+ Die Domäne {$domainName} wurde erfolgreich bei {$dns} veröffentlicht.
+
+
+ REMOVE_TITLE
+ Löschen der veröffentlichten virtuellen Domäne
+
+
+ REMOVE_DESCRIPTION
+ Soll die bei {$dns} veröffentlichte Domäne {$domain} ({$domainDesc}) gelöscht werden ? Sind Sie sicher ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Fehler: Interner Fehler beim Löschen der veröffentlichten Domain {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Die Domain {$domain} wurde erfolgreich bei {$dns} gelöscht.
+
+
+ DYNDNS1
+ dyndns.org Dynamische Adressen
+
+
+ DYNDNS2
+ dyndns.org Statische Adressen
+
+
+ DYNDNS3
+ dyndns.org Spezielle Adressen
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) Dynamische Adressen
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org Dynamische Adressen
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) Dynamische Adressen
+
+
+ LOOPIA
+ Loopia (loopia.se) Dynamische Adressen
+
+
+ DNSPARK
+ Dnspark (dnspark.com) Dynamische Adressen
+
+
+ DYNHOST
+ DynHost (ovh.com) Dynamische Adressen
+
+
+ NOIP
+ NoIP (noip.com) Dynamische Adressen
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) Dynamische Adressen
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) Dynamische Adressen
+
+
+ SPDNS
+ SPDNS (spdns.de) Dynamische Adressen
+
+
+ CUSTOMDNS
+ Benutzerdefinierter Anbieter von dynamischem DNS
+
+
+ CUSTOMDNS_LABEL
+ Benutzerdefinierte Server-Adresse
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Benutzerdefiniertes ddclient-Protokoll
+
+
+ CUSTOM_DESCRIPTION
+ Falls Ihr Dynamic-DNS-Anbieter nicht in der Auflistung auftaucht, können Sie einen benutzerdefinierten Anbieter verwenden. Bitte füllen Sie die entsprechenden Felder aus
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ FEHLER: Ungültiges oder fehlendes Zeichen im benutzerdefinierten Domänen-Namen {$domainName}. Der Domänen-Name darf nur Buchstaben, Nummern, Punkte oder Bindestriche enthalten. Änderung wurde nicht aktiviert.
+
+
+ ddclient
+ Dynamische Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ FEHLER: die Domäne "{$domainName}" ist bereits vorhanden. Bitte wählen Sie einen anderen Domänen-Namen.
+
+
+ FREE_FORM_DESCRIPTION
+ Hier können sie einen beliebigen Domainnamen erzeugen, der im Netz übertragen werden soll.
+
+
+ RETRIEVE_SSL
+ SSL Update
+
+
+ RETRIEVE_DEAMONUPDATE
+ Aktualisierung durch Dämon (in Sekunden)
+
+
+ RETRIEVE_URLCHECKIP
+ URL für die externe IP
+
+
+ APPLY
+ Speichern
+
+
+ DOMAIN_NAME_LABEL
+ Domänen-Name
+
+
+ DESCRIPTION_LABEL
+ Domänen Beschreibung
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Sie haben die IP-Abrufoptionen erfolgreich geändert.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Konfiguration mit externem Ethernet-Adapter
+
+
+ SME configuration DB
+ Konfiguration des Dienstes
+
+
+ web
+ Anfrage
+
+
+ Interface
+ Oberfläche
+
+
+ IP
+ NFS-Ibay-Einstellungen verwalten
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/el/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/el/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..0e6d4ee
--- /dev/null
+++ b/root/etc/e-smith/locale/el/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ πρωτεύων τόπος
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Ως περιεχόμενο ιστοτόπου, μπορείτε να επιλέξετε τον πρωτεύοντα ιστότοπο ή οποιοδήποτε i-bay.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Σφάλμα: μη-αναμενόμενοι ή ελλείποντες χαρακτήρες στην ονομασία τομέα {$domainName}. Η ονομασία τομέα πρέπει να περιλαμβάνει ένα ή περισσότερα γράμματα, αριθμούς, τελείες και παύλες. Δεν δημιουργήθηκε νέος τομέας.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Σφάλμα: μη-αναμενόμενοι ή ελλείποντες χαρακτήρες στην περιγραφή του τομέα {$domainDesc}. Δεν δημιουργήθηκε νέος τομέας.
+
+
+ DOMAIN_IN_USE_ERROR
+ Σφάλμα: ο τομέας {$domainName} χρησιμοποιείται ήδη. Δεν δημιουργήθηκε νέος τομέας.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Σφάλμα: Ο {$domainName} δεν είναι υφιστάμενος τομέας.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Custom Dynamic DNS Provider
+
+
+ CUSTOMDNS_LABEL
+ Custom server Address
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Σφάλμα: μη-αναμενόμενοι ή ελλείποντες χαρακτήρες στην ονομασία τομέα {$domainName}. Η ονομασία τομέα πρέπει να περιλαμβάνει ένα ή περισσότερα γράμματα, αριθμούς, τελείες και παύλες. Δεν δημιουργήθηκε νέος τομέας.
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Σφάλμα: ο τομέας {$domainName} χρησιμοποιείται ήδη. Δεν δημιουργήθηκε νέος τομέας.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Ενημέρωση
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Αποθήκευση
+
+
+ DOMAIN_NAME_LABEL
+ Όνομα τομέα
+
+
+ DESCRIPTION_LABEL
+ Περιγραφή
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Επιτυχής τροποποίηση Η/Υ.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ SME external interface
+
+
+ SME configuration DB
+ Ρύθμιση παραμέτρων συστήματος
+
+
+ web
+ Διακομιστής Web
+
+
+ Interface
+ IP from interface
+
+
+ IP
+ Ρυθμίσεις ηλεκτρονικής αλληλογραφίας
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..a86a5d1
--- /dev/null
+++ b/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,352 @@
+
+
+ FORM_TITLE
+
+ Create, remove or change the publication of virtual domains
+
+
+
+ FORM_DESCRIPTION
+
+ virtual domain for publication on the net.
+
+
+
+ NO_VIRTUAL_DOMAINS
+
+ There are no virtual domains in the system.
+
+
+
+ CURRENT_LIST_OF_DOMAINS
+
+ Current list of virtual domains
+
+
+
+ PUBLICATION
+
+ publication
+
+
+
+ PRIMARY_SITE
+
+ primary site
+
+
+
+ CONTENT
+
+ {$content} i-bay
+
+
+
+ CREATE_TITLE
+
+ Create a new publication virtual domain
+
+
+
+ SERVERS_LABEL
+
+ where to publish
+
+
+
+ MX
+
+ record MX
+
+
+
+ NAME_LABEL
+
+ login to publish
+
+
+
+ PASSWORD_LABEL
+
+ password to publish
+
+
+
+ CONTENT_FIELD_DESCRIPTION
+
+ For the web site, you may choose your primary web site or any i-bay as the content.
+
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+
+ Error: unexpected or missing characters in domain name
+ {$domainName}. The domain name should contain one or more
+ letters, numbers, periods and minus signs. Did not create new
+ domain.
+
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+
+ Error: unexpected or missing characters in domain description
+ {$domainDesc}. Did not create new domain.
+
+
+
+ DOMAIN_IN_USE_ERROR
+
+ Error: domain {$domainName} is already in use. Did not create new domain.
+
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+
+ Error: domain {$domainName} is reserved to provide a secured
+ webserver for the virtual domain {$key}. Did not create new domain.
+
+
+
+ SYSTEM_DOMAIN_ERROR
+
+ Error: domain {$domainName} is your system domain name. You
+ cannot have a virtual domain with the same name. Did not create new domain.
+
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+
+ Error: domain {$domainName} is reserved to provide a secured
+ webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+
+ SUCCESSFULLY_CREATED
+
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+
+ MODIFY_TITLE
+
+ Modify virtual domain
+
+
+
+ NONEXISTENT_DOMAIN_ERROR
+
+ Error: {$domainName} is not an existing domain.
+
+
+
+ SUCCESSFULLY_MODIFIED
+
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+
+ REMOVE_TITLE
+
+ Remove publication of virtual domain
+
+
+
+ REMOVE_DESCRIPTION
+
+
+ You are about to remove the publication of domain {$domain}
+ ({$domainDesc}) on {$dns}.
+
+
+ Are you sure you wish to remove this domain's publication ?
+
+ ]]>
+
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+
+ SUCCESSFULLY_DELETED
+
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Custom Dynamic DNS Provider
+
+
+ CUSTOMDNS_LABEL
+ Custom server Address
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+
+ Error: unexpected or missing characters in custom server address field of domain
+ {$domainName}. The server address should contain one or more
+ letters, numbers, periods and minus signs. Did not apply the change.
+
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Error: this domain:"{$domainName}" already exists. Please chose another.
+
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ SSL update
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Save
+
+
+ DOMAIN_NAME_LABEL
+ Domain Name
+
+
+ DESCRIPTION_LABEL
+ Domain description
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ You have successfully modified the retrieve IP options.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ SME external interface
+
+
+ SME configuration DB
+ SME configuration DB
+
+
+ web
+ Web query
+
+
+ Interface
+ IP from interface
+
+
+ IP
+ Manual IP setting
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/es/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/es/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..96ffaf8
--- /dev/null
+++ b/root/etc/e-smith/locale/es/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Crear, eliminar o cambiar la publicación de los dominios virtuales
+
+
+ FORM_DESCRIPTION
+ dominio virtual para publicación en la red.
+
+
+ NO_VIRTUAL_DOMAINS
+ No hay dominios virtuales en el sistema.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Lista actual de los dominios virtuales
+
+
+ PUBLICATION
+ publicación
+
+
+ PRIMARY_SITE
+ sitio primario
+
+
+ CONTENT
+ i-bay {$content}
+
+
+ CREATE_TITLE
+ Crear una nueva publicación de dominio virtual
+
+
+ SERVERS_LABEL
+ donde se publicará
+
+
+ MX
+ registro MX
+
+
+ NAME_LABEL
+ sesión para publicar
+
+
+ PASSWORD_LABEL
+ contraseña para publicar
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Para el sitio web, usted puede escoger el sitio web primario o cualquier i-bay como contenido.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Error: caracteres erróneos o faltantes en el nombre del dominio {$domainName}. El nombre del dominio debe contener una o más letras, números, puntos y signos menos. No es posible crear el nuevo dominio.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Error: caracteres erróneos o faltantes en la descripción del dominio {$domainDesc}. No se creó el nuevo dominio.
+
+
+ DOMAIN_IN_USE_ERROR
+ Error: el dominio {$domainName} ya está en uso. No se creó el nuevo dominio.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: el dominio {$domainName} esta reservado para proporcionar un servidor web seguro para el dominio virtual {$key}. No es posible crear el nuevo dominio.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: el dominio {$domainName} es su nombre de dominio del sistema. Usted no puede tener un dominio virtual con el mismo nombre. No es posible crear el nuevo dominio.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: el dominio {$domainName} esta reservado para proporcionar un servidor web seguro para el nombre de dominio de su sistema {$systemDomain}. No es posible crear el nuevo dominio.
+
+
+ SUCCESSFULLY_CREATED
+ Publicación correcta del dominio {$domainName} en {$dns}.
+
+
+ MODIFY_TITLE
+ Modificar dominio virtual
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Error: {$domainName} no es un dominio existente.
+
+
+ SUCCESSFULLY_MODIFIED
+ Modificada correctamente la publicación de {$domainName} en {$dns}.
+
+
+ REMOVE_TITLE
+ Eliminar publicación de dominio virtual
+
+
+ REMOVE_DESCRIPTION
+ Usted está a punto de eliminar la publicación del dominio {$domain} ({$domainDesc}) en {$dns}. ¿ Está realmente seguro de eliminar la publicación de este dominio ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: fallo interno mientras se eliminaba la publicación de {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Eliminación correcta de la publicación de {$domain} en {$dns}.
+
+
+ DYNDNS1
+ dyndns.org direcciones dinámicas
+
+
+ DYNDNS2
+ dyndns.org direcciones estáticas
+
+
+ DYNDNS3
+ dyndns.org direcciones personalizadas
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) direcciones dinámicas
+
+
+ DSLREPORTS
+ dslreports.com monitorización host-dinámico
+
+
+ EURODYNDNS
+ eurodyndns.org direcciones dinámicas
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) direcciones dinámicas
+
+
+ LOOPIA
+ Loopia (loopia.se) direcciones dinámicas
+
+
+ DNSPARK
+ Dnspark (dnspark.com) direcciones dinámicas
+
+
+ DYNHOST
+ DynHost (ovh.com) direcciones dinámicas
+
+
+ NOIP
+ NoIP (noip.com) direcciones dinámicas
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) direcciones dinámicas
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) direcciones dinámicas
+
+
+ SPDNS
+ SPDNS (spdns.de) direcciones dinámicas
+
+
+ CUSTOMDNS
+ servicio DynDNS personalizado
+
+
+ CUSTOMDNS_LABEL
+ Dirección de servidor DNS corporativo
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Error: caracteres erróneos o faltantes en el nombre del dominio {$domainName}. El nombre del dominio debe contener una o más letras, números, puntos y signos menos. No es posible crear el nuevo dominio.
+
+
+ ddclient
+ Clientes Dinámicos
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Error: el dominio {$domainName} ya está en uso. No se creó el nuevo dominio.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ actualizar
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Guardar
+
+
+ DOMAIN_NAME_LABEL
+ Nombre del dominio
+
+
+ DESCRIPTION_LABEL
+ descripción
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Repositorio modificado correctamente.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Configuración de Interfaz Externa
+
+
+ SME configuration DB
+ Revisar configuración
+
+
+ web
+ consulta
+
+
+ Interface
+ interfaz
+
+
+ IP
+ Ajustes del E-mail
+
+
+ Command
+ Línea de órdenes
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/et/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/et/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..b98e55b
--- /dev/null
+++ b/root/etc/e-smith/locale/et/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ primary site
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ For the web site, you may choose your primary web site or any i-bay as the content.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain name {$domainName}. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain description {$domainDesc}. Did not create new domain.
+
+
+ DOMAIN_IN_USE_ERROR
+ Error: domain {$domainName} is already in use. Did not create new domain.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Error: {$domainName} is not an existing domain.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ kohandatud DynDNS teenus
+
+
+ CUSTOMDNS_LABEL
+ Asutuse DNS serveri aadress
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Viga: unexpected or missing characters in domain name {$DomainName}. Domeeni nimi saab koosneda ühes või rohkematest tähtedest, numbritest, periods and minus signs. uut domeeni ei loodud.
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ See kasutajanimi on juba võetud. Vali mõni teine.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Uuenda
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Salvesta
+
+
+ DOMAIN_NAME_LABEL
+ Domeeni nimi
+
+
+ DESCRIPTION_LABEL
+ Kirjeldus
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Repositoorium edukalt muudetud.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Välimine seadistus
+
+
+ SME configuration DB
+ Vaata serveri seadeid
+
+
+ web
+ Weebi server
+
+
+ Interface
+ Liides
+
+
+ IP
+ E-posti seaded
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..95e2360
--- /dev/null
+++ b/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Créer, effacer ou modifier la publication des domaines virtuels
+
+
+ FORM_DESCRIPTION
+ Domaines virtuels pour la publication sur le net.
+
+
+ NO_VIRTUAL_DOMAINS
+ il n'y a aucun domaines virtuels dans le système.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Liste courante des domaines virtuels
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ site primaire
+
+
+ CONTENT
+ {$content} baie d'information
+
+
+ CREATE_TITLE
+ Création d'une nouvelle publication d'un domaine virtuel
+
+
+ SERVERS_LABEL
+ où publier
+
+
+ MX
+ enregistrement MX
+
+
+ NAME_LABEL
+ Nom d'utilisateur
+
+
+ PASSWORD_LABEL
+ Mot de passe
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Pour le site Internet, vous pouvez choisir votre site primaire ou n'importe quelle ibaie comme contenu.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Erreur : caractère manquant ou inattendu dans le nom de domaine {$domainName}. Le nom de domaine doit contenir une ou plusieurs lettres, chiffres, points et tirets. Le nouveau domaine n'a pas été créé.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Erreur : caractère manquant ou inattendu dans la description du domaine : {$domainDesc}. Le nouveau domaine n'a pas été créé.
+
+
+ DOMAIN_IN_USE_ERROR
+ Erreur : le domaine {$domainName} est déjà utilisé. Le nouveau domaine n'a pas été créé.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Erreur : domaine {$domainName} est le nom de domaine de votre système. Impossible d'avoir un domaine virtuel avec le même nom. Domaine non créé.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Erreur : domaine {$domainName} réservé pour un serveur Web sécurisé pour le nom de domaine de votre système {$systemDomain}. Domaine non créé.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Domaine virtuel {$domainName} créé avec succès. Votre serveur Web redémarre. Les liens de cette page seront désactivés jusqu'à la fin du redémarrage du serveur Web.
+
+
+ SUCCESSFULLY_CREATED
+ Publication correcte du domaine {$domainName} sur {$dns}.
+
+
+ MODIFY_TITLE
+ Modifier le domaine virtuel
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Erreur : domaine {$domainName} inexistant.
+
+
+ SUCCESSFULLY_MODIFIED
+ Modification avec succès de la publication de {$domainName} sur {$dns}.
+
+
+ REMOVE_TITLE
+ Enlever la publication du domaine virtuel
+
+
+ REMOVE_DESCRIPTION
+ Vous êtes sur le point de supprimer la publication du domaine virtuel {$domain} ({$domainDesc}). Voulez-vous vraiment supprimer ce domaine?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Erreur : problème interne lors de la suppression de la publication de {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Suppression avec succès de {$domain} sur {$dns}.
+
+
+ DYNDNS1
+ dyndns.org adresse dynamique
+
+
+ DYNDNS2
+ dyndns.org adresse statique
+
+
+ DYNDNS3
+ dyndns.org adresse personalisée
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) adresse dynamique
+
+
+ DSLREPORTS
+ moniteur d’hôtes dynamique dslreports.com
+
+
+ EURODYNDNS
+ eurodyndns.org adresses dynamiques
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) adresse dynamique
+
+
+ LOOPIA
+ Hammernode (hn.org) adresse dynamique
+
+
+ DNSPARK
+ Dnspark (dnspark.com) adresse dynamique
+
+
+ DYNHOST
+ DynHost (ovh.com) adresse dynamique
+
+
+ NOIP
+ NoIP (noip.com) adresse dynamique
+
+
+ CHANGEIP
+ ChangeIP (noip.com) adresse dynamique
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) adresse dynamique
+
+
+ SPDNS
+ SPDNS (spdns.de) adresse dynamique
+
+
+ CUSTOMDNS
+ Service de DNS dynamique personnalisé
+
+
+ CUSTOMDNS_LABEL
+ Adresse personnalisé du serveur de mise à jour
+
+
+ CUSTOM_PROTOCOL_LABEL
+ protocole personnalisé de ddclient
+
+
+ CUSTOM_DESCRIPTION
+ Vous pouvez utilisez un fournisseur de DNS dynamique personnalisé si le vôtre ne figure pas dans la liste publiée. Prière de remplir les champs personnalisés avec les paramètres appropriés.
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Erreur : caractère manquant ou inattendu dans le nom de domaine {$domainName}. L'adresse du serveur doit contenir une ou plusieurs lettres, chiffres, points et tirets. Le changement n'a pas été enregistré.
+
+
+ ddclient
+ Clients dynamiques
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Erreur : ce domaine "{$domainName}" est déjà utilisé. Veuillez en choisir un autre.
+
+
+ FREE_FORM_DESCRIPTION
+ Ici, vous pouvez créer un nom de domaine à publier sur internet.
+
+
+ RETRIEVE_SSL
+ Mise à jour par SSL
+
+
+ RETRIEVE_DEAMONUPDATE
+ Mise à jour du service (secondes)
+
+
+ RETRIEVE_URLCHECKIP
+ Url pour trouver l'IP externe
+
+
+ APPLY
+ Enregistrer
+
+
+ DOMAIN_NAME_LABEL
+ Nom de Domaine
+
+
+ DESCRIPTION_LABEL
+ Description du domaine
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Les paramètres de ddclient ont été modifiés avec succès
+
+
+ RETRIEVE_METHOD
+ Méthode pour récupérer le changement d'IP :
+
+
+ RETRIEVE_IF
+ Interface pour récupérer la nouvelle IP, si le mode interface est utilisé
+
+
+ RETRIEVE_CMD
+ Commande à exécuter pour récurer l'IP, si le mode commande est utilisé
+
+
+ SME external Interface
+ Interface externe SME
+
+
+ SME configuration DB
+ DB configuration de SME
+
+
+ web
+ Requête à une page Internet
+
+
+ Interface
+ IP d'une interface
+
+
+ IP
+ Forcer manuellement une IP
+
+
+ Command
+ Commande à exécuter
+
+
+ RETRIEVE_IP
+ IP forcée manuellement
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/he/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/he/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..fee8e6e
--- /dev/null
+++ b/root/etc/e-smith/locale/he/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ primary site
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ For the web site, you may choose your primary web site or any i-bay as the content.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain name {$domainName}. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain description {$domainDesc}. Did not create new domain.
+
+
+ DOMAIN_IN_USE_ERROR
+ Error: domain {$domainName} is already in use. Did not create new domain.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Error: {$domainName} is not an existing domain.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Custom Dynamic DNS Provider
+
+
+ CUSTOMDNS_LABEL
+ כתובת שרת DNS
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Error: unexpected or missing characters in custom server address field of domain {$domainName}. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Error: this domain:"{$domainName}" already exists. Please chose another.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ עדכון
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ שמור
+
+
+ DOMAIN_NAME_LABEL
+ Domain Name
+
+
+ DESCRIPTION_LABEL
+ תיאור
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ You have successfully modified the retrieve IP options.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ SME external interface
+
+
+ SME configuration DB
+ קונפיגורציה
+
+
+ web
+ Web query
+
+
+ Interface
+ ממשק
+
+
+ IP
+ Manual IP setting
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/hu/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/hu/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..f02131c
--- /dev/null
+++ b/root/etc/e-smith/locale/hu/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ elsődleges webhely
+
+
+ CONTENT
+ {$content} Adattár
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ A weboldalhoz kiválaszthatja az elsődleges webhelyet, vagy bármely adattárat.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Hiba: Helytelen vagy hiányzó karakterek vannak a {$domainName} domén névben. A domén név egy vagy több betűt, számokat, pontokat és kötőjeleket tartalmazhat. A domén nem jött létre.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Hiba: Helytelen vagy hiányzó karakterek vannak a {$domainDesc} domén leírásában. A domén nem jött létre.
+
+
+ DOMAIN_IN_USE_ERROR
+ Hiba: a {$domainName} domén név már használatban van. A domén nem jött létre.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Hiba: A {$domainName} nem létező domén név.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ egyéb DynDNS szolgáltatás
+
+
+ CUSTOMDNS_LABEL
+ Másik DNS szerver címe
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Hiba: Helytelen vagy hiányzó karakterek vannak a {$domainName} domén névben. A domén név egy vagy több betűt, számokat, pontokat és kötőjeleket tartalmazhat. A domén nem jött létre.
+
+
+ ddclient
+ Levelező kliens
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Hiba: a {$domainName} domén név már használatban van. A domén nem jött létre.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Frissítés
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Mentés
+
+
+ DOMAIN_NAME_LABEL
+ Domén név
+
+
+ DESCRIPTION_LABEL
+ Leírás
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Kiszolgáló módosítása sikeres.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Külső hálózati csatoló konfigurálása
+
+
+ SME configuration DB
+ Konfiguráció
+
+
+ web
+ Web szerver
+
+
+ Interface
+ Felület
+
+
+ IP
+ E-mail beállítások
+
+
+ Command
+ Parancssor
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/id/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/id/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..dce3a37
--- /dev/null
+++ b/root/etc/e-smith/locale/id/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ Situs primary
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Untuk situs web anda dapat memilih situs primary atau i-bay manapun sebagai konten.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Error: terdapat karakter yang tidak dibolehkan atau hilang dalam nama domain {$domainName}. Nama domain hanya boleh terdiri dari satu atau lebih huruf, angka, titik dan tanda minus. Gagal membuat domain baru.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Error: terdapat karakter yang tidak dibolehkan atau hilang dalam deskripsi domain {$domainDesc}. . Gagal membuat domain baru.
+
+
+ DOMAIN_IN_USE_ERROR
+ Error: domain {$domainName} sudah digunakan. Gagal membuat domain baru.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Error: {$domainName} tidak ada.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ pengganti layanan DynDNS
+
+
+ CUSTOMDNS_LABEL
+ Alamat server DNS perusahaan
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Error: terdapat karakter yang tidak dibolehkan atau hilang dalam nama domain {$domainName}. Nama domain hanya boleh terdiri dari satu atau lebih huruf, angka, titik dan tanda minus. Gagal membuat domain baru.
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Error: domain {$domainName} sudah digunakan. Gagal membuat domain baru.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Update
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Simpan
+
+
+ DOMAIN_NAME_LABEL
+ Nama domain
+
+
+ DESCRIPTION_LABEL
+ Gambaran
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Berhasil mengubah host.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Konfigurasi Antarmuka Eksternal
+
+
+ SME configuration DB
+ Mengaktifkan perubahan konfigurasi
+
+
+ web
+ Server Web
+
+
+ Interface
+ IP from interface
+
+
+ IP
+ Pengaturan email
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/it/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/it/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..e98dc51
--- /dev/null
+++ b/root/etc/e-smith/locale/it/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Crea, cancella o modifica la pubblicazione per i domini virtuali
+
+
+ FORM_DESCRIPTION
+ dominio virtuale da pubblicare in rete
+
+
+ NO_VIRTUAL_DOMAINS
+ Non ci sono domini virtuali nel sistema.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Lista corrente dei domini virtuali
+
+
+ PUBLICATION
+ pubblicazione
+
+
+ PRIMARY_SITE
+ Sito principale
+
+
+ CONTENT
+ I-bay per {$content}
+
+
+ CREATE_TITLE
+ Crea una nuova pubblicazione per un dominio virtuale
+
+
+ SERVERS_LABEL
+ destinazione
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login
+
+
+ PASSWORD_LABEL
+ password
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Per il sito web, è possibile selezionare il sito principale o qualsiasi i-bay.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Errore: carattere inaspettato o mancante nel nome di dominio {$domainName}. Il nome può contenere uno o più lettere, numeri, punti e segni meno (trattino). Dominio non creato.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Errore: carattere inaspettato o mancante nella descrizione {$domainDesc}. Dominio non creato.
+
+
+ DOMAIN_IN_USE_ERROR
+ Errore: dominio {$domainName} già in uso. Dominio non creato.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Errore: Il dominio {$domainName} è riservato per fornire un webserver sicuro per il dominio virtuale {$key}. Il nuovo dominio non è stato creato.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Errore: il dominio {$domainName} è il tuo dominio principale. Non è possibile avere un dominio virtuale con lo stesso nome. Nuovo dominio non creato.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Errore: Il dominio {$domainName} è riservato per fornire un webserver sicuro per il dominio di sistema {$systemDomain}. Il nuovo dominio non è stato creato.
+
+
+ SUCCESSFULLY_CREATED
+ Pubblicazione del dominio {$domainName} su {$dns} avvenuta con successo.
+
+
+ MODIFY_TITLE
+ Modifica il dominio virtuale
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Errore: {$domainName} non è un dominio esistente.
+
+
+ SUCCESSFULLY_MODIFIED
+ Modifica della pubblicazione di {$domainName} su {$dns} avvenuta con successo
+
+
+ REMOVE_TITLE
+ Elimina la pubblicazione del dominio virtuale
+
+
+ REMOVE_DESCRIPTION
+ Stai per eliminare la pubblicazione del dominio {$domain} ({$domainDesc}) su {$dns}. Sei sicuro di volerla eliminare?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Errore: problema interno durante la rimozione della pubblicazione per il dominio {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Eliminazione della pubblicazione di {$domain} su {$dns} avvenuta con successo.
+
+
+ DYNDNS1
+ Indirizzi dinamici su dyndns.org
+
+
+ DYNDNS2
+ Indirizzi statici su dyndns.org
+
+
+ DYNDNS3
+ Indirizzi custom su dyndns.org
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Indirizzi dinamici su Hammernode (hn.org)
+
+
+ DSLREPORTS
+ Controllo host dinamico su dslreports.com
+
+
+ EURODYNDNS
+ Indirizzi dinamici su eurodyndns.org
+
+
+ DTDNS
+ Indirizzi dinamici DtDNS (www.dtdns.com)
+
+
+ LOOPIA
+ Indirizzi dinamici Hammernode (hn.org)
+
+
+ DNSPARK
+ Indirizzi dinamici Dnspark (dnspark.com)
+
+
+ DYNHOST
+ Indirizzi dinamici DynHost (ovh.com)
+
+
+ NOIP
+ Indirizzi dinamici NoIp (noip.com)
+
+
+ CHANGEIP
+ Indirizzi dinamici ChangeIp (changeip.com)
+
+
+ NAMECHEAP
+ Indirizzi dinamici NAMECHEAP (namecheap.com)
+
+
+ SPDNS
+ Indirizzi dinamici SPDNS (spdns.de)
+
+
+ CUSTOMDNS
+ Servizio di DNS dinamico personalizzato
+
+
+ CUSTOMDNS_LABEL
+ Indirizzo personalizzato server
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Protocollo ddclient personalizzato
+
+
+ CUSTOM_DESCRIPTION
+ Si può utilizzare un servizio di DNS dinamico personalizzato se non presente nella lista. Inserire i parametri appropriati nei campi personalizzati.
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Errore: carattere inaspettato o mancante nel campo personalizzato del nome di dominio {$domainName}. Il nome può contenere uno o più lettere, numeri, punti e segni meno (trattino). Modifiche non salvate.
+
+
+ ddclient
+ Client dinamici
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Errore: dominio {$domainName} già in uso. Sceglierne un altro.
+
+
+ FREE_FORM_DESCRIPTION
+ Qui si può inserire qualunque nome di dominio da pubblicare in rete.
+
+
+ RETRIEVE_SSL
+ Aggiornamento SSL
+
+
+ RETRIEVE_DEAMONUPDATE
+ Aggiornamento del daemon (secondi)
+
+
+ RETRIEVE_URLCHECKIP
+ Url per IP esterno
+
+
+ APPLY
+ Salva
+
+
+ DOMAIN_NAME_LABEL
+ Nome dominio
+
+
+ DESCRIPTION_LABEL
+ Descrizione dominio
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Modifica delle opzioni dell'ottenimento IP avvenuta con successo.
+
+
+ RETRIEVE_METHOD
+ Metodo di ottenimento dell'IP:
+
+
+ RETRIEVE_IF
+ Interfaccia locale per ottenere l'IP se selezionato il metodo "interfaccia"
+
+
+ RETRIEVE_CMD
+ Comando da eseguire per ottenere l'IP se selezionato il metodo "comando"
+
+
+ SME external Interface
+ Interfaccia esterna SME
+
+
+ SME configuration DB
+ Configurazione DB SME
+
+
+ web
+ Ricerca Web
+
+
+ Interface
+ IP dall'interfaccia
+
+
+ IP
+ Impostazione manuale IP
+
+
+ Command
+ Comando da eseguire
+
+
+ RETRIEVE_IP
+ IP da forzare manualmente
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/ja/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/ja/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..309541d
--- /dev/null
+++ b/root/etc/e-smith/locale/ja/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ primary site
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ For the web site, you may choose your primary web site or any i-bay as the content.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain name {$domainName}. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain description {$domainDesc}. Did not create new domain.
+
+
+ DOMAIN_IN_USE_ERROR
+ Error: domain {$domainName} is already in use. Did not create new domain.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Error: {$domainName} is not an existing domain.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Custom Dynamic DNS Provider
+
+
+ CUSTOMDNS_LABEL
+ Custom server Address
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Error: unexpected or missing characters in custom server address field of domain {$domainName}. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.
+
+
+ ddclient
+ メールクライアント
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ このユーザ名は既に使用されています。別の名前にしてください。
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ 更新
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ 保存
+
+
+ DOMAIN_NAME_LABEL
+ ドメイン
+
+
+ DESCRIPTION_LABEL
+ 説明
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ You have successfully modified the retrieve IP options.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ ユーザ・インターフェイス
+
+
+ SME configuration DB
+ 設定
+
+
+ web
+ Web query
+
+
+ Interface
+ インターフェイス
+
+
+ IP
+ 全般設定
+
+
+ Command
+ コマンドライン
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/nb/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/nb/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..0f910e9
--- /dev/null
+++ b/root/etc/e-smith/locale/nb/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Opprette, fjerne eller endre på publisering av virtuelle domener
+
+
+ FORM_DESCRIPTION
+ Virtuelt domene for publisering på nettet.
+
+
+ NO_VIRTUAL_DOMAINS
+ Det er ingen virtuelle domener på serveren.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Aktuell liste over virtuelle domener
+
+
+ PUBLICATION
+ Publisering
+
+
+ PRIMARY_SITE
+ hoved nettsted
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Opprette en ny publisering av et virtuelt domene
+
+
+ SERVERS_LABEL
+ Plassering av publisering
+
+
+ MX
+ Record MX
+
+
+ NAME_LABEL
+ Login for publisering
+
+
+ PASSWORD_LABEL
+ Passord for publisering
+
+
+ CONTENT_FIELD_DESCRIPTION
+ For nettstedet kan du velge å bruke hovedsiden eller en annen i-bay som innhold.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Feil: uventede eller manglende tegn i domenenavnet {$domainName}. Domenenavnet skal inneholde en eller flere bokstaver, tall, punktum, og minustegn. Domenet er ikke opprettet.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Feil: uventede eller manglene tegn i domenebeskrivelsen {$domainDesc}. Domenet er ikke opprettet.
+
+
+ DOMAIN_IN_USE_ERROR
+ Feil: domenet {$domainName} er allerede i bruk. Domenet er ikke opprettet.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Feil: domene {$domainName} er reservert til en sikker webserver for det virtuelle domene navn {$key}. Domenet ble ikke opprettet.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Feil: domenet {$domainName} er ditt systems domene navn. Du kan ikke ha et virtuelt domene med det samme navnet. Domenet ble ikke opprettet.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Feil: Domenenavn {$domainName} er reservert til ett sikkert nettsted for dit systems domenenavn {$systemDomain}. Domenet blev ikke opprettet.
+
+
+ SUCCESSFULLY_CREATED
+ Domene navnet {$domainName} er publisert på {$dns}.
+
+
+ MODIFY_TITLE
+ Redigert virtuelt domene
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Feil: {$domainName} eksisterer ikke.
+
+
+ SUCCESSFULLY_MODIFIED
+ Suksess med oppdateringen av {$domainName} på {$dns}.
+
+
+ REMOVE_TITLE
+ Fjerne publisering av virtuelt domene
+
+
+ REMOVE_DESCRIPTION
+ Du er i ferd med å fjerne publiseringen av domene {$domain} ({$domainDesc}) på {$dns}. Er du sikker på at du vil fjerne publiseringen av dette domenet?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Feil: intern feil under fjerning av publisering av {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Suksess med fjerning av publisering av {$domain} på {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamiske adresser
+
+
+ DYNDNS2
+ dyndns.org statiske adresser
+
+
+ DYNDNS3
+ dyndns.org valgte adresser
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamiske adresser
+
+
+ DSLREPORTS
+ dslreports.com dynamisk vertsovervåkning
+
+
+ EURODYNDNS
+ eurodyndns.org dynamiske adresser
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamiske adresser
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamiske adresser
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamiske adresser
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamiske adresser
+
+
+ NOIP
+ NoIP (noip.com) dynamiske adresser
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamiske adresser
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamiske adresser
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamiske adresser
+
+
+ CUSTOMDNS
+ Selvvalgt DynDNS service
+
+
+ CUSTOMDNS_LABEL
+ Selvvalgt DNS-server-adresse
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Selvvalgt ddclient Protokol
+
+
+ CUSTOM_DESCRIPTION
+ Du kan bruke en selvvalgt dynamisk dns tilbyder hvis din ikke er på den publiserte lista. Fyll ut de relevante felter med de nødvendige innstillinger
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Feil: uventede eller manglende tegn i domenenavnet {$domainName}. Domenenavnet skal inneholde en eller flere bokstaver, tall, punktum, og minustegn. Domenet er ikke opprettet.
+
+
+ ddclient
+ Dynamiske klienter
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Feil: domenet "{$domainName}" er allerede i bruk. Domenet er ikke opprettet.
+
+
+ FREE_FORM_DESCRIPTION
+ Her kan du opprette ethvert domene til publisering på nettet.
+
+
+ RETRIEVE_SSL
+ SSL oppdater
+
+
+ RETRIEVE_DEAMONUPDATE
+ Demon oppdateringsfrekvens (sekunder)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for den eksterne IP
+
+
+ APPLY
+ Lagre
+
+
+ DOMAIN_NAME_LABEL
+ Domenenavn
+
+
+ DESCRIPTION_LABEL
+ Domene navn beskrivelse
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Redigering av mottatt IP er gjennomført med suksess.
+
+
+ RETRIEVE_METHOD
+ Metode for å motta ny IP:
+
+
+ RETRIEVE_IF
+ Lokalt grensesnitt for å hente ny IP, dersom grensesnitt metode er selektert
+
+
+ RETRIEVE_CMD
+ Kommando for å hente IP, dersom kommando metode er angitt
+
+
+ SME external Interface
+ SME eksternt grensesnitt
+
+
+ SME configuration DB
+ SME konfigurasjons DB
+
+
+ web
+ Web forespørsmål
+
+
+ Interface
+ IP fra grensesnitt
+
+
+ IP
+ Manuell IP konfigurasjon
+
+
+ Command
+ Kommando for eksekvering
+
+
+ RETRIEVE_IP
+ IP for manuell oppdatering
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/nl/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/nl/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..0b8797e
--- /dev/null
+++ b/root/etc/e-smith/locale/nl/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Aanmaken, verwijderen of wijzigen van de virtuele domein publicaties
+
+
+ FORM_DESCRIPTION
+ virtueel domein voor publicatie op het net.
+
+
+ NO_VIRTUAL_DOMAINS
+ Er zijn geen virtuele domeinen op dit systeem.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Huidige lijst van virtuele domeinen
+
+
+ PUBLICATION
+ publicatie
+
+
+ PRIMARY_SITE
+ primaire site
+
+
+ CONTENT
+ {$content} informatie-baai
+
+
+ CREATE_TITLE
+ Nieuw virtueel domein publicatie aanmaken
+
+
+ SERVERS_LABEL
+ Waar te publiceren
+
+
+ MX
+ MX record
+
+
+ NAME_LABEL
+ login om te publiceren
+
+
+ PASSWORD_LABEL
+ wachtwoord om te publiceren
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Voor de website, mag u uw primaire website als inhoud kiezen of een van de informatie-baaien.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Fout: Onverwachte of missende tekens in domeinnaam {$domainName}. De domeinnaam moet uit een of meer letters, cijfers, punten of koppeltekens bestaan. Het nieuw domein is niet toegevoegd.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Fout: Onverwachte of missende tekens in de domein beschrijving {$domainDesc}. Het nieuw domein is niet toegevoegd.
+
+
+ DOMAIN_IN_USE_ERROR
+ Fout: domein {$domainName} is reeds in gebruik. Het nieuw domein is niet toegevoegd.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Fout: domein {$domainName} is gereserveerd voor een beveiligde webserver voor virtueel domein {$key}. Het nieuw domein is niet toegevoegd.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Fout: domein {$domainName} is uw systeem domeinnaam. U kunt geen virtueel domein hebben met dezelfde naam. Het nieuw domein is niet toegevoegd.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Fout: domein {$domainName} is gereserveerd voor een beveiligde webserver voor uw systeem domeinnaam {$systemDomain}. Het nieuw domein is niet toegevoegd.
+
+
+ SUCCESSFULLY_CREATED
+ Domein {$domainName} is met succes gepubliceerd op {$dns}.
+
+
+ MODIFY_TITLE
+ Virtueel domein wijzigen
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Fout: {$domainName} is geen bestaand domein.
+
+
+ SUCCESSFULLY_MODIFIED
+ Publicatie van domein {$domainName} is met succes gewijzigd op {$dns}.
+
+
+ REMOVE_TITLE
+ Publicatie van virtueel domein verwijderen
+
+
+ REMOVE_DESCRIPTION
+ U staat op het punt om de publicatie van domein {$domain} ({$domainDesc}) op {$dns} te verwijderen. Bent u zeker dat u deze domein publicatie wilt verwijderen ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Fout: interne fout bij het verwijderen van de publicatie van {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Publicatie van {$domain} is met succes verwijderd uit {dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamische adressen
+
+
+ DYNDNS2
+ dyndns.org statische adressen
+
+
+ DYNDNS3
+ dyndns.org aangepaste adressen
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamische adressen
+
+
+ DSLREPORTS
+ dslreports.com dynamische-host monitoren
+
+
+ EURODYNDNS
+ eurodyndns.org dynamische adressen
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamische adressen
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamische adressen
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamische adressen
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamische adressen
+
+
+ NOIP
+ NoIP (noip.com) dynamische adressen
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamische adressen
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamische adressen
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamische adressen
+
+
+ CUSTOMDNS
+ Aangepaste dynamische DNS aanbieder
+
+
+ CUSTOMDNS_LABEL
+ Aangepaste server adres
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Aangepaste ddclient protocol
+
+
+ CUSTOM_DESCRIPTION
+ U kunt een aangepaste dynamische DNS provider gebruiken als de jouwe niet in de gepubliceerde lijst staat. Vul de aangepaste velden met de juiste instellingen.
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Fout: Onverwachte of missende tekens in de aangepaste server naam veld van domein {$domainName}. Het server adres moet uit een of meer letters, cijfers, punten of koppeltekens bestaan. De verandering was niet geaccepteerd.
+
+
+ ddclient
+ Dynamische Agenten
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Fout: Het domein {$domainName} is reeds in gebruik. Kies een andere naam.
+
+
+ FREE_FORM_DESCRIPTION
+ Hier kunt u een domeinnaam creëren om te publiceren over het net.
+
+
+ RETRIEVE_SSL
+ SSL aanpassen
+
+
+ RETRIEVE_DEAMONUPDATE
+ Aanpassen in achtergrond (seconden)
+
+
+ RETRIEVE_URLCHECKIP
+ URL voor het externe IP
+
+
+ APPLY
+ Opslaan
+
+
+ DOMAIN_NAME_LABEL
+ Domeinnaam
+
+
+ DESCRIPTION_LABEL
+ Domein beschrijving
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ U heeft de opgehaalde IP opties gewijzigd.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Externe Interface Configuratie
+
+
+ SME configuration DB
+ Configuratie van de dienst
+
+
+ web
+ Webserver
+
+
+ Interface
+ Koppeling
+
+
+ IP
+ Beheer NFS informatie-baai instellingen,
+
+
+ Command
+ Opdrachtregel
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/pl/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/pl/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..e3e5a5a
--- /dev/null
+++ b/root/etc/e-smith/locale/pl/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ strona główna
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Jako treść strony internetowej możesz wybrać główną witrynę internetową lub dowolną witrynę i-bay.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Błąd: niedozwolone lub brakujące znaki w nazwie domeny {$domainName}. Nazwa domeny powinna zawierać jedną lub więcej liter, cyfr, kropek i myślników. Nie utworzono nowej domeny.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Błąd: niedozwolone lub brakujące znaki w opisie domeny {$domainDesc}. Nie utworzono nowej domeny.
+
+
+ DOMAIN_IN_USE_ERROR
+ Błąd: domena {$domainName} jest już używana. Nie utworzono nowej domeny.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Błąd: Domena {$domainName} nie istnieje.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Custom Dynamic DNS Provider
+
+
+ CUSTOMDNS_LABEL
+ Custom server Address
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Error: unexpected or missing characters in custom server address field of domain {$domainName}. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.
+
+
+ ddclient
+ Klient pocztowy
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Podana nazwa użytkownika jest już zajęta. Proszę wybrać inną.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Aktualizuj
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Zapisz
+
+
+ DOMAIN_NAME_LABEL
+ Domena
+
+
+ DESCRIPTION_LABEL
+ Opis
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ You have successfully modified the retrieve IP options.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Witryna użytkownika
+
+
+ SME configuration DB
+ Konfiguracja
+
+
+ web
+ Serwer WWW
+
+
+ Interface
+ Interfejs
+
+
+ IP
+ Ogólne ustawienia
+
+
+ Command
+ Wiersz poleceń
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/pt-br/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/pt-br/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..a0346b9
--- /dev/null
+++ b/root/etc/e-smith/locale/pt-br/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Criar, remover ou mudar a publicação de domínios virtuais
+
+
+ FORM_DESCRIPTION
+ domínio virtual para publicação na internet.
+
+
+ NO_VIRTUAL_DOMAINS
+ Não há domínios virtuais no sistema.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Lista atual de domínios virtuais
+
+
+ PUBLICATION
+ publicação
+
+
+ PRIMARY_SITE
+ site primário
+
+
+ CONTENT
+ compartilhamento {$content}
+
+
+ CREATE_TITLE
+ Criar a publicação de um novo domínio virtual
+
+
+ SERVERS_LABEL
+ onde publicar
+
+
+ MX
+ registro MX
+
+
+ NAME_LABEL
+ login para publicar
+
+
+ PASSWORD_LABEL
+ senha para publicar
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Para o web site, você pode escolher o web site primário ou qualquer compartilhamento como conteúdo.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Erro: caracter inesperado ou faltando no nome de domínio {$domainName}. O nome do domínio deve conter uma ou mais letras, números, pontos e sinal de menos. Novo domínio não criado.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Erro: caracter inesperado ou faltando na descrição do domínio {$domainDesc}. Não foi criado o novo domínio.
+
+
+ DOMAIN_IN_USE_ERROR
+ Erro: domínio {$domainName} já está em uso. Novo domínio não criado.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Erro: domínio {$domainName} é reservado para prover um servidor web seguro para o domínio virtual {$key}. Novo domínio não criado.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Erro: domínio {$domainName} é seu nome de sistema do domínio. Você não pode criar um domínio virtual com o mesmo nome. Novo domínio não criado.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Erro: domínio {$domainName} é reservado para prover um servidor web seguro para seu domínio de sistema {$systemDomain}. Novo domínio não criado.
+
+
+ SUCCESSFULLY_CREATED
+ Publicação do domínio {$domainName} em {$dns} ocorreu com sucesso.
+
+
+ MODIFY_TITLE
+ Modificar domínios virtuais
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Erro: {$domainName} não é um domínio existente.
+
+
+ SUCCESSFULLY_MODIFIED
+ Modificação da publicação do domínio {$domainName} em {$dns} ocorreu com sucesso.
+
+
+ REMOVE_TITLE
+ Remover publicação de domínios virtuais
+
+
+ REMOVE_DESCRIPTION
+ Você está prestes a remover a publicação do domínio {$domain} ({$domainDesc}) de {$dns}. Você está certo de que deseja remover a publicação deste domínio ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Erro: falha interna enquanto removendo a publicação de {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Remoção da publicação do domínio {$domainName} em {$dns} ocorreu com sucesso.
+
+
+ DYNDNS1
+ endereço dinâmico no dyndns.org
+
+
+ DYNDNS2
+ endereço estático no dyndns.org
+
+
+ DYNDNS3
+ endereço customizado no dyndns.org
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ monitoramento de host dynamico dslreports.com
+
+
+ EURODYNDNS
+ endereço dinâmico eurodyndns.org
+
+
+ DTDNS
+ endereço dinâmico no DtDNS (www.dtdns.com)
+
+
+ LOOPIA
+ endereços dinamicos no Hammernode (hn.org)
+
+
+ DNSPARK
+ endereços dinâmicos no Dnspark (dnspark.com)
+
+
+ DYNHOST
+ endereços dinâmicos no DynHost (ovh.com)
+
+
+ NOIP
+ endereços dinamicos no NoIP (noip.com)
+
+
+ CHANGEIP
+ endereços dinamicos no ChangeIP (changeip.com)
+
+
+ NAMECHEAP
+ endereços dinâmicos no NAMECHEAP (namecheap.com)
+
+
+ SPDNS
+ endereço dinâmico no SPDNS (spdns.de)
+
+
+ CUSTOMDNS
+ Provedor DynDNS dinamico customizado
+
+
+ CUSTOMDNS_LABEL
+ Endereço do servidor customizado
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Protocolo ddclient customizado
+
+
+ CUSTOM_DESCRIPTION
+ Você pode usar um provedor de DNS dinamico customizado se o que deseja não estiver na lista publicada. Por favor preencha os campos customizados com os parametros apropriados
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Erro: caracter inesperado ou faltando no campo endereço do domínio {$domainName}. O endereço do servidor deve conter uma ou mais letras, números, pontos e sinal de menos. Não foi efetivada a mudança.
+
+
+ ddclient
+ Clientes Dinâmicos
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Erro: este domínio "{$domainName}" já existe. Por favor escolha outro.
+
+
+ FREE_FORM_DESCRIPTION
+ Aqui voce pode criar qualquer nome de domínio para publicar na internet.
+
+
+ RETRIEVE_SSL
+ atualização SSL
+
+
+ RETRIEVE_DEAMONUPDATE
+ Atualização do daemon (segundos)
+
+
+ RETRIEVE_URLCHECKIP
+ URL do IP externo
+
+
+ APPLY
+ Salvar
+
+
+ DOMAIN_NAME_LABEL
+ Nome do domínio
+
+
+ DESCRIPTION_LABEL
+ Descrição do domínio
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Você alterou com sucesso as opção de recuperação de IP.
+
+
+ RETRIEVE_METHOD
+ Modo para receber novo IP:
+
+
+ RETRIEVE_IF
+ Interface local para receber novo IP, se for selecionado o método interface
+
+
+ RETRIEVE_CMD
+ Comando a executar para receber novo IP, se for selecionado o método comando
+
+
+ SME external Interface
+ Interface Externa do SME
+
+
+ SME configuration DB
+ BD de Configuração do SME
+
+
+ web
+ query web
+
+
+ Interface
+ IP da Interface
+
+
+ IP
+ configuração manual do IP
+
+
+ Command
+ Comando a ser executado
+
+
+ RETRIEVE_IP
+ IP para forçar manualmente
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/pt/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/pt/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..69561d0
--- /dev/null
+++ b/root/etc/e-smith/locale/pt/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Criar, remover ou mudar a publicação de domínios virtuais
+
+
+ FORM_DESCRIPTION
+ domínio virtual para publicação na internet.
+
+
+ NO_VIRTUAL_DOMAINS
+ Não há domínios virtuais no sistema.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Lista atual de domínios virtuais
+
+
+ PUBLICATION
+ publicação
+
+
+ PRIMARY_SITE
+ site primário
+
+
+ CONTENT
+ compartilhamento {$content}
+
+
+ CREATE_TITLE
+ Criar a publicação de um novo domínio virtual
+
+
+ SERVERS_LABEL
+ onde publicar
+
+
+ MX
+ registro MX
+
+
+ NAME_LABEL
+ login para publicar
+
+
+ PASSWORD_LABEL
+ senha para publicar
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Para o web site, você pode escolher o web site primário ou qualquer compartilhamento como conteúdo.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Erro: caracter inesperado ou faltando no nome de domínio {$domainName}. O nome do domínio deve conter uma ou mais letras, números, pontos e sinal de menos. Não criou novo domínio.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Erro: caracter inesperado ou faltando na descrição do domínio {$domainDesc}. Não criou novo domínio.
+
+
+ DOMAIN_IN_USE_ERROR
+ Erro: domínio {$domainName} já está em uso. Não criou novo domínio.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Erro: domínio {$domainName} é reservado para prover um servidor web seguro para o domínio virtual {$key}. Não foi criado o novo domínio.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Erro: domínio {$domainName} é seu nome de sistema do domínio. Você não pode criar um domínio virtual com o mesmo nome. Não foi criado o novo domínio.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Erro: domínio {$domainName} é reservado para prover um webserver segura para seu domínio de sistema {$systemDomain}. Não foi criado o novo domínio.
+
+
+ SUCCESSFULLY_CREATED
+ Publicação do domínio {$domainName} em {$dns} ocorreu com sucesso.
+
+
+ MODIFY_TITLE
+ Modificar domínios virtuais
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Erro: {$domainName} não é um domínio existente.
+
+
+ SUCCESSFULLY_MODIFIED
+ Modificação da publicação do domínio {$domainName} em {$dns} ocorreu com sucesso.
+
+
+ REMOVE_TITLE
+ Remover publicação de domínios virtuais
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Erro: falha interna enquanto removendo a publicação de {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Remoção da publicação do domínio {$domainName} em {$dns} ocorreu com sucesso.
+
+
+ DYNDNS1
+ endereço dinâmico no dyndns.org
+
+
+ DYNDNS2
+ endereço estático no dyndns.org
+
+
+ DYNDNS3
+ endereço customizado no dyndns.org
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ monitoramento de host dynamico dslreports.com
+
+
+ EURODYNDNS
+ endereço dinâmico eurodyndns.org
+
+
+ DTDNS
+ endereço dinâmico no dyndns.org
+
+
+ LOOPIA
+ Hammernode (hn.org) dynamic addresses
+
+
+ DNSPARK
+ endereço dinâmico no dyndns.org
+
+
+ DYNHOST
+ endereço dinâmico no dyndns.org
+
+
+ NOIP
+ Hammernode (hn.org) dynamic addresses
+
+
+ CHANGEIP
+ Hammernode (hn.org) dynamic addresses
+
+
+ NAMECHEAP
+ Hammernode (hn.org) dynamic addresses
+
+
+ SPDNS
+ endereço dinâmico no dyndns.org
+
+
+ CUSTOMDNS
+ serviço DynDNS customizado
+
+
+ CUSTOMDNS_LABEL
+ Endereço do servidor DNS corporativo
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Erro: caracter inesperado ou faltando no nome de domínio {$domainName}. O nome do domínio deve conter uma ou mais letras, números, pontos e sinal de menos. Não criou novo domínio.
+
+
+ ddclient
+ Clientes Dinâmicos
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Erro: domínio {$domainName} já está em uso. Não criou novo domínio.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Atualizar
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Salvar
+
+
+ DOMAIN_NAME_LABEL
+ Nome do domínio
+
+
+ DESCRIPTION_LABEL
+ Descrição
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Repositório modificado com sucesso.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Configuração da Interface Externa
+
+
+ SME configuration DB
+ Ativar as mudanças de configuração
+
+
+ web
+ Servidor web
+
+
+ Interface
+ Interface
+
+
+ IP
+ Configurações de e-mail
+
+
+ Command
+ Linha de Comando
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/ro/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/ro/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..a8d6073
--- /dev/null
+++ b/root/etc/e-smith/locale/ro/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ primary site
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ For the web site, you may choose your primary web site or any i-bay as the content.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain name {$domainName}. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Error: unexpected or missing characters in domain description {$domainDesc}. Did not create new domain.
+
+
+ DOMAIN_IN_USE_ERROR
+ Error: domain {$domainName} is already in use. Did not create new domain.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Error: {$domainName} is not an existing domain.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ serviciu DynDNS particularizat
+
+
+ CUSTOMDNS_LABEL
+ Custom server Address
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Error: unexpected or missing characters in custom server address field of domain {$domainName}. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Acest nume de utilizator este deja folosit. Vă să alegeți altul.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Actualizează
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Salvează
+
+
+ DOMAIN_NAME_LABEL
+ Numele de domeniu de bază
+
+
+ DESCRIPTION_LABEL
+ Descriere
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Repository modificat cu succes.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Configurare interfață externă
+
+
+ SME configuration DB
+ Configurare
+
+
+ web
+ server Web
+
+
+ Interface
+ Interfată
+
+
+ IP
+ Manual IP setting
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/ru/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/ru/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..d1f76b5
--- /dev/null
+++ b/root/etc/e-smith/locale/ru/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ основной сайт
+
+
+ CONTENT
+ {$content} и-раздел
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Для веб-сайта вы можете выбрать свой основной веб-сайт или любой и-блок, в качестве содержимого.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Ошибка: неожиданные или недостающие символы в имени домена {$domainName}. Имя домена может содержать одну или более букв, цифр, точек и знаков минус. Новый домен не создать.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Ошибка: неожиданные или недостающие символы в описании домена {$domainDesc}. Новый домен не создать.
+
+
+ DOMAIN_IN_USE_ERROR
+ Ошибка: домен {$domainName} уже используется. Новый домен не создать.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Ошибка: Домен {$domainName} не существует.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ пользовательский DynDNS сервис
+
+
+ CUSTOMDNS_LABEL
+ Адрес корпоративного сервера DNS
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Ошибка: неожиданные или недостающие символы в имени домена {$domainName}. Имя домена может содержать одну или более букв, цифр, точек и знаков минус. Новый домен не создать.
+
+
+ ddclient
+ Динамический
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Ошибка: домен {$domainName} уже используется. Новый домен не создать.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ CRL обновления URL
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Сохранить
+
+
+ DOMAIN_NAME_LABEL
+ Имя домена
+
+
+ DESCRIPTION_LABEL
+ Описание
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Репозиторий успешно изменён.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Конфигурация внешнего интерфейса
+
+
+ SME configuration DB
+ Конфигурация службы
+
+
+ web
+ Веб-сервер
+
+
+ Interface
+ Интерфейс
+
+
+ IP
+ Настройки почты
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/sl/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/sl/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..1b32864
--- /dev/null
+++ b/root/etc/e-smith/locale/sl/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ primarna spletna stran
+
+
+ CONTENT
+ {$content} i-lista
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Za spletno stran te domene lahko izberete primarno ali vsebino katerega koli informacijskega lista.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Napaka: v domeni {$domainName} so nepricakovani ali manjakjoci znaki. Domena lahko vsebuje eno ali vec crk, stevilk, pik ali minus znakov. Nova domena ni bila dodana.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Napaka: v polju opisa domene {$domainDesc} so nepricakovani ali manjkajoci znaki. Nova domena ni bila dodana.
+
+
+ DOMAIN_IN_USE_ERROR
+ Napaka: domena {$domainName} je ze uporabljena. Nova domena ni bila dodana.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Napaka: {$domainName} ni obstojeca domena.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Izberite dinamično DNS storitev
+
+
+ CUSTOMDNS_LABEL
+ IP naslov DNS strežnika v podjetju
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Napaka: v domeni {$domainName} so nepricakovani ali manjakjoci znaki. Domena lahko vsebuje eno ali vec crk, stevilk, pik ali minus znakov. Nova domena ni bila dodana.
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Napaka: domena {$domainName} je ze uporabljena. Nova domena ni bila dodana.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ Posodobi
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Shrani
+
+
+ DOMAIN_NAME_LABEL
+ Ime domene
+
+
+ DESCRIPTION_LABEL
+ Opis
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Ime racunalnika je bilo uspesno posodobljeno.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Konfiguracija zunanjega mrežnega vmesnika
+
+
+ SME configuration DB
+ Konfiguracija
+
+
+ web
+ Spletni streznik
+
+
+ Interface
+ IP from interface
+
+
+ IP
+ E-posta
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/sv/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/sv/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..1f02213
--- /dev/null
+++ b/root/etc/e-smith/locale/sv/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Skapa, radera eller ändra publiceringen av viruella domäner
+
+
+ FORM_DESCRIPTION
+ virtuell domän för publicering på Internet.
+
+
+ NO_VIRTUAL_DOMAINS
+ Det finns inga virtuella domäner på systemet.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Uppdaterad lista över viruella domäner
+
+
+ PUBLICATION
+ publicering
+
+
+ PRIMARY_SITE
+ primär plats
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Skapa en ny publicering av en viruell domän
+
+
+ SERVERS_LABEL
+ var den publiceras
+
+
+ MX
+ MX post
+
+
+ NAME_LABEL
+ inloggning för publicering
+
+
+ PASSWORD_LABEL
+ lösenord för publicering
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Som webbplats kan du välja den primära webbplatsen eller valfri i-bay för innehåll.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Fel: Ogiltigt eller saknat tecken i domännamnet {$domainName}. Domännamnet måste innehålla en eller flera bokstäver, siffror, punkter eller minustecken. Skapade inte en ny domän.
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Fel: Ogiltigt eller saknat tecken i domänbeskrivningen {$domainDesc}. Skapade inte en ny domän.
+
+
+ DOMAIN_IN_USE_ERROR
+ Fel: Domänen {$domainName} används redan. Skapade inte en ny domän.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Fel: Domänen {$domainName} är reserverad för att ge en säker webbserver för den virtuella domänen {$key}. Skapade inte en ny domän.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Fel: Domänen {$domainName} är ditt systems domännamn. Du kan inte ha en virtuell domän med samma namn. Skapade inte en ny domän.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Fel: Domänen {$domainName} är reserverad för att ge en säker webbserver för ditt systems domännamn {$systemDomain}. Skapade inte en ny domän.
+
+
+ SUCCESSFULLY_CREATED
+ Publicerade domän {$domainName} på {$dns}.
+
+
+ MODIFY_TITLE
+ Ändra viruell domän
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Fel: {$domainName} är inte en existerande domän.
+
+
+ SUCCESSFULLY_MODIFIED
+ Ändrade publicerad {$domainName} på {$dns}.
+
+
+ REMOVE_TITLE
+ Ta bort publicering av viruell domän
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Fel: Internt fel vid bortagning av publiceringen av {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Raderade publiceringen av {$domain} på{$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamisk adress
+
+
+ DYNDNS2
+ dyndns.org statisk adress
+
+
+ DYNDNS3
+ dyndns.org egen adress
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamisk adress
+
+
+ DSLREPORTS
+ dslreports.com dynamisk-värdkontroll
+
+
+ EURODYNDNS
+ eurodyndns.org dynamisk adress
+
+
+ DTDNS
+ dyndns.org dynamisk adress
+
+
+ LOOPIA
+ Hammernode (hn.org) dynamisk adress
+
+
+ DNSPARK
+ dyndns.org dynamisk adress
+
+
+ DYNHOST
+ dyndns.org dynamisk adress
+
+
+ NOIP
+ Hammernode (hn.org) dynamisk adress
+
+
+ CHANGEIP
+ Hammernode (hn.org) dynamisk adress
+
+
+ NAMECHEAP
+ Hammernode (hn.org) dynamisk adress
+
+
+ SPDNS
+ dyndns.org dynamisk adress
+
+
+ CUSTOMDNS
+ alternativ DynDNS service
+
+
+ CUSTOMDNS_LABEL
+ Om du har en annan DNS server i ditt nät, ange den här
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Fel: Ogiltigt eller saknat tecken i domännamnet {$domainName}. Domännamnet måste innehålla en eller flera bokstäver, siffror, punkter eller minustecken. Skapade inte en ny domän.
+
+
+ ddclient
+ Dynamiska klienter
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Fel: Domänen {$domainName} används redan. Skapade inte en ny domän.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ CRL uppdatering URL
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Spara
+
+
+ DOMAIN_NAME_LABEL
+ Domännamn
+
+
+ DESCRIPTION_LABEL
+ Beskrivning
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Enhetsbokstäverna ändrade
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Extern interfacekonfiguration
+
+
+ SME configuration DB
+ Tjänstekonfiguration
+
+
+ web
+ Webb-server
+
+
+ Interface
+ Interface
+
+
+ IP
+ E-postinställningar
+
+
+ Command
+ Kommandorad
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/th/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/th/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..619c51c
--- /dev/null
+++ b/root/etc/e-smith/locale/th/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ ไซต์หลัก
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ สำหรับเว็บไซต์ คุณอาจเลือกเว็บไซต์หลักของคุณ หรือ i-bay อื่นๆ
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ ผิดพลาด: ชื่อโดเมน {$domainName} ไม่ถูกต้องตามหลักการตั้งชื่อโดเมน ชื่อโดเมนต้องยาวอย่างน้อยหนึ่งตัว และต้องเป็นตัวอักษร, ตัวเลข, จุด และ ครื่องหมายลบเท่านั้น โดเมนใหม่ไม่ถูกสร้าง
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ ผิดพลาด: รายละเอียดของโดเมน {$domainDesc} ไม่ถูกต้อง โดเมนใหม่ไม่ถูกสร้าง
+
+
+ DOMAIN_IN_USE_ERROR
+ ผิดพลาด: ชื่อโดเมน {$domainName} ถูกใช้ไปแล้ว โดเมนใหม่ไม่ถูกสร้าง
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ ข้อผิดพลาด: ไม่มีโดเมน {$domainName}
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ Custom Dynamic DNS Provider
+
+
+ CUSTOMDNS_LABEL
+ Custom server Address
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ ผิดพลาด: ชื่อโดเมน {$domainName} ไม่ถูกต้องตามหลักการตั้งชื่อโดเมน ชื่อโดเมนต้องยาวอย่างน้อยหนึ่งตัว และต้องเป็นตัวอักษร, ตัวเลข, จุด และ ครื่องหมายลบเท่านั้น โดเมนใหม่ไม่ถูกสร้าง
+
+
+ ddclient
+ โปรแกรมอ่านจดหมาย
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ ผิดพลาด: ชื่อโดเมน {$domainName} ถูกใช้ไปแล้ว โดเมนใหม่ไม่ถูกสร้าง
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ บันทึกการแก้ไข
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ บันทึก
+
+
+ DOMAIN_NAME_LABEL
+ ชื่อโดเมน
+
+
+ DESCRIPTION_LABEL
+ รายละเอียด
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ แก้ไขโฮสต์เสร็จแล้ว
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ SME external interface
+
+
+ SME configuration DB
+ การตั้งค่าของระบบ
+
+
+ web
+ เว็บเซิร์ฟเวอร์
+
+
+ Interface
+ อินเทอร์เฟซ
+
+
+ IP
+ ตั้งค่าอีเมล์
+
+
+ Command
+ คำสั่ง
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/tr/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/tr/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..801a793
--- /dev/null
+++ b/root/etc/e-smith/locale/tr/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ Create, remove or change the publication of virtual domains
+
+
+ FORM_DESCRIPTION
+ virtual domain for publication on the net.
+
+
+ NO_VIRTUAL_DOMAINS
+ There are no virtual domains in the system.
+
+
+ CURRENT_LIST_OF_DOMAINS
+ Current list of virtual domains
+
+
+ PUBLICATION
+ publication
+
+
+ PRIMARY_SITE
+ birincil site
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ Create a new publication virtual domain
+
+
+ SERVERS_LABEL
+ where to publish
+
+
+ MX
+ record MX
+
+
+ NAME_LABEL
+ login to publish
+
+
+ PASSWORD_LABEL
+ password to publish
+
+
+ CONTENT_FIELD_DESCRIPTION
+ Web sitesi için birincil sitenizi veya herhangi bir i-bay içerik olarak seçebilirsiniz.
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ Hata: {$domainName} alan adı geçersiz karakter içriyor. Alanı adı bir veya daha fazla harf, rakam, nokta ve eksi işaretleri içermelidir
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ Hata: {$domainDesc} alan adı açıklamasi geçersiz karakter içriyor. Yeni alan adı olşturulamadı.
+
+
+ DOMAIN_IN_USE_ERROR
+ Hata: alan adı {$domainName} zaten kullanımda. Yeni alan adı olşturulamadı.
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for the virtual domain {$key}. Did not create new domain.
+
+
+ SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ Error: domain {$domainName} is reserved to provide a secured webserver for your system domain name {$systemDomain}. Did not create new domain.
+
+
+ SUCCESSFULLY_CREATED
+ Successfully publication domain {$domainName} on {$dns}.
+
+
+ MODIFY_TITLE
+ Modify virtual domain
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ Hata: {$domainName} mevcut bir alan değildir.
+
+
+ SUCCESSFULLY_MODIFIED
+ Successfully modified the publication {$domainName} on {$dns}.
+
+
+ REMOVE_TITLE
+ Remove publication of virtual domain
+
+
+ REMOVE_DESCRIPTION
+ You are about to remove the publication of domain {$domain} ({$domainDesc}) on {$dns}. Are you sure you wish to remove this domain's publication ?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ Error: internal failure while removing publictaion of {$domain}.
+
+
+ SUCCESSFULLY_DELETED
+ Successfully deleted publication of {$domain} on {$dns}.
+
+
+ DYNDNS1
+ dyndns.org dynamic addresses
+
+
+ DYNDNS2
+ dyndns.org static addresses
+
+
+ DYNDNS3
+ dyndns.org custom addresses
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) dynamic addresses
+
+
+ DSLREPORTS
+ dslreports.com dynamic-host monitoring
+
+
+ EURODYNDNS
+ eurodyndns.org dynamic adresses
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) dynamic adresses
+
+
+ LOOPIA
+ Loopia (loopia.se) dynamic adresses
+
+
+ DNSPARK
+ Dnspark (dnspark.com) dynamic adresses
+
+
+ DYNHOST
+ DynHost (ovh.com) dynamic adresses
+
+
+ NOIP
+ NoIP (noip.com) dynamic adresses
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) dynamic adresses
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) dynamic adresses
+
+
+ SPDNS
+ SPDNS (spdns.de) dynamic adresses
+
+
+ CUSTOMDNS
+ özel DynDNS servisi
+
+
+ CUSTOMDNS_LABEL
+ Kurumsal DNS sunucu adresi
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ Hata: {$domainName} alan adı geçersiz karakter içriyor. Alanı adı bir veya daha fazla harf, rakam, nokta ve eksi işaretleri içermelidir
+
+
+ ddclient
+ Dynamic Clients
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ Hata: alan adı {$domainName} zaten kullanımda. Yeni alan adı olşturulamadı.
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ güncelle
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ Kaydet
+
+
+ DOMAIN_NAME_LABEL
+ Alan adı
+
+
+ DESCRIPTION_LABEL
+ açıklama
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ Host başarıyla değiştirildi.
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ Harici Arabirim Yapılandırması
+
+
+ SME configuration DB
+ yapılandırma
+
+
+ web
+ sorgu/sorgula
+
+
+ Interface
+ ara yüz
+
+
+ IP
+ E-posta ayarları
+
+
+ Command
+ Command to execute
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/zh-cn/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/zh-cn/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..51edbd7
--- /dev/null
+++ b/root/etc/e-smith/locale/zh-cn/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ 创建、移除或更改虚拟域的发布
+
+
+ FORM_DESCRIPTION
+ 发布在网络上的虚拟域
+
+
+ NO_VIRTUAL_DOMAINS
+ 系统上没有虚拟域。
+
+
+ CURRENT_LIST_OF_DOMAINS
+ 当前虚拟域列表
+
+
+ PUBLICATION
+ 发布
+
+
+ PRIMARY_SITE
+ 主站点
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ 发布新的虚拟域
+
+
+ SERVERS_LABEL
+ 发布到哪里
+
+
+ MX
+ 记录 MX
+
+
+ NAME_LABEL
+ 登陆发布
+
+
+ PASSWORD_LABEL
+ 发布密码
+
+
+ CONTENT_FIELD_DESCRIPTION
+ 对于web站点,您可以选择您的主站点或者i-bay作为网站的内容。
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ 错误:在domain名称{$domainName}中缺少必要的字符。此domain名称应该包含一个或者多个字母、数字、句点和分隔号。未能创建新domain。
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ 错误:在domain名称{$domainDesc}中缺少必要的字符。未能创建新域。
+
+
+ DOMAIN_IN_USE_ERROR
+ 错误:domain {$domainName} 已在使用中。未能创建新域。
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ 错误:域 {$domainName} 被预留为虚拟域{$key}提供安全的web服务器。未能创建新域。
+
+
+ SYSTEM_DOMAIN_ERROR
+ 错误:域名 {$domainName} 是本机使用的域名。您不能创建一个与主机域名相同的虚拟域名。未能创建新域!
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ 错误: 域 {$domainName} 被预留为系统域名{$systemDomain}提供安全的web服务器。未能创建新域。
+
+
+ SUCCESSFULLY_CREATED
+ 已在{$dns}上发布域名 {$domainName} 。
+
+
+ MODIFY_TITLE
+ 修改虚拟域
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ 错误: {$domainName} 已经存在。
+
+
+ SUCCESSFULLY_MODIFIED
+ 成功地在{$dns}上修改已发布的域名{$domainName} 。
+
+
+ REMOVE_TITLE
+ 移除虚拟域的发布
+
+
+ REMOVE_DESCRIPTION
+ 即将在 {$dns} 上移除域 {$domain} ({$domainDesc}) 的发布。 是否真的移除这个域的发布?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ 错误:移除域名{$domain}时发生内部错误。
+
+
+ SUCCESSFULLY_DELETED
+ 已在{$dns}上删除域名 {$domain} 的发布。
+
+
+ DYNDNS1
+ dyndns.org 动态地址
+
+
+ DYNDNS2
+ dyndns.org 静态地址
+
+
+ DYNDNS3
+ dyndns.org 定制的地址
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) 动态地址
+
+
+ DSLREPORTS
+ dslreports.com 动态主机监视
+
+
+ EURODYNDNS
+ eurodyndns.org 动态地址
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) 动态地址
+
+
+ LOOPIA
+ Loopia (loopia.se) 动态地址
+
+
+ DNSPARK
+ Dnspark (dnspark.com) 动态地址
+
+
+ DYNHOST
+ DynHost (ovh.com) 动态地址
+
+
+ NOIP
+ NoIP (noip.com) 动态地址
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) 动态地址
+
+
+ NAMECHEAP
+ NoIP (noip.com) 动态地址
+
+
+ SPDNS
+ DtDNS (www.dtdns.com) 动态地址
+
+
+ CUSTOMDNS
+ 自定义动态DNS服务
+
+
+ CUSTOMDNS_LABEL
+ 公共DNS服务器地址
+
+
+ CUSTOM_PROTOCOL_LABEL
+ Custom ddclient Protocol
+
+
+ CUSTOM_DESCRIPTION
+ You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ 错误:在domain名称{$domainName}中缺少必要的字符。此domain名称应该包含一个或者多个字母、数字、句点和分隔号。未能创建新domain。
+
+
+ ddclient
+ 动态客户端
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ 错误:domain {$domainName} 已在使用中。未能创建新域。
+
+
+ FREE_FORM_DESCRIPTION
+ Here you can create any domain name to publish over the net.
+
+
+ RETRIEVE_SSL
+ 更新
+
+
+ RETRIEVE_DEAMONUPDATE
+ Deamon update (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url for the external IP
+
+
+ APPLY
+ 保存
+
+
+ DOMAIN_NAME_LABEL
+ 域名
+
+
+ DESCRIPTION_LABEL
+ 描述
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ 驱动器编号已经修改
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ 外网配置
+
+
+ SME configuration DB
+ 服务配置
+
+
+ web
+ Web服务器
+
+
+ Interface
+ 接口
+
+
+ IP
+ 电子邮件设置
+
+
+ Command
+ 命令行
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/locale/zh-tw/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/locale/zh-tw/etc/e-smith/web/functions/ddclient
new file mode 100644
index 0000000..67ade6b
--- /dev/null
+++ b/root/etc/e-smith/locale/zh-tw/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,278 @@
+
+
+ FORM_TITLE
+ 建立、移除或改變虛擬網域的發佈
+
+
+ FORM_DESCRIPTION
+ 發佈在網路上的虛擬網域。
+
+
+ NO_VIRTUAL_DOMAINS
+ 系統上沒有虛擬網域。
+
+
+ CURRENT_LIST_OF_DOMAINS
+ 現有虛擬網域列表
+
+
+ PUBLICATION
+ 發佈
+
+
+ PRIMARY_SITE
+ 主站台
+
+
+ CONTENT
+ {$content} i-bay
+
+
+ CREATE_TITLE
+ 發佈新的虛擬網域
+
+
+ SERVERS_LABEL
+ 發佈到哪裡
+
+
+ MX
+ 記錄 MX
+
+
+ NAME_LABEL
+ 登入發佈
+
+
+ PASSWORD_LABEL
+ 密碼發佈
+
+
+ CONTENT_FIELD_DESCRIPTION
+ 對於網站而言,您能選擇您的主要站台或任何 i-bay 以作為內容。
+
+
+ DOMAIN_NAME_VALIDATION_ERROR
+ 錯誤: 在網域名稱 {$domainName} 中含未知或缺少字元。網域名稱應該包含單一或多於一個的字元、數字、句號與減號。無法建立新網域。
+
+
+ DOMAIN_DESCRIPTION_VALIDATION_ERROR
+ 錯誤: 在網域描述 {$domainDesc} 中含未知或缺少字元。無法建立新網域。
+
+
+ DOMAIN_IN_USE_ERROR
+ 錯誤: 網域名稱 {$domainName} 正在使用中。無法建立新網域。
+
+
+ RESERVED_SECURE_DOMAIN_ERROR
+ 錯誤:網域 {$domainName} 被保留為虛擬網域{$key}所提供的安全web伺服器。無法建立新網域。
+
+
+ SYSTEM_DOMAIN_ERROR
+ 錯誤:網域 {$domainName} 是本機使用的網域名稱。您不能使用相同名稱的虛擬網域。無法建立新網域!
+
+
+ RESERVED_SECURE_SYSTEM_DOMAIN_ERROR
+ 錯誤:網域 {$domainName} 被保留為您系統網域名稱{$systemDomain}所提供的安全web伺服器。無法建立新網域。
+
+
+ SUCCESSFULLY_CREATED
+ 成功發佈{$domain}在{$dns}上。
+
+
+ MODIFY_TITLE
+ 修正虛擬網域
+
+
+ NONEXISTENT_DOMAIN_ERROR
+ 錯誤: {$domainName}並非既有網域。
+
+
+ SUCCESSFULLY_MODIFIED
+ 成功修正{$domain}在{$dns}上的發佈。
+
+
+ REMOVE_TITLE
+ 移除虛擬網域的發佈
+
+
+ REMOVE_DESCRIPTION
+ 您即將移除網域{$domain} ({$domainDesc})在{$dns}上的發佈。 您確定真的要移除此網域的發佈?
]]>
+
+
+ ERROR_WHILE_REMOVING_DOMAIN
+ 錯誤:移除{$domain}的發佈時發生內部錯誤。
+
+
+ SUCCESSFULLY_DELETED
+ 成功刪除{$domain}在{$dns}上的發佈。
+
+
+ DYNDNS1
+ dyndns.org 動態位址
+
+
+ DYNDNS2
+ dyndns.org 靜態位址
+
+
+ DYNDNS3
+ dyndns.org 客製位址
+
+
+ ZONEDIT
+ ZoneEdit (zoneedit.com)
+
+
+ EASYDNS
+ EasyDNS (easydns.com)
+
+
+ HAMMER
+ Hammernode (hn.org) 動態位址
+
+
+ DSLREPORTS
+ dslreports.com 動態主機監視
+
+
+ EURODYNDNS
+ eurodyndns.org 動態位址
+
+
+ DTDNS
+ DtDNS (www.dtdns.com) 動態位址
+
+
+ LOOPIA
+ Loopia (loopia.se) 動態位址
+
+
+ DNSPARK
+ Dnspark (dnspark.com) 動態位址
+
+
+ DYNHOST
+ DynHost (ovh.com) 動態位址
+
+
+ NOIP
+ NoIP (noip.com) 動態位址
+
+
+ CHANGEIP
+ ChangeIP (changeip.com) 動態位址
+
+
+ NAMECHEAP
+ NAMECHEAP (namecheap.com) 動態位址
+
+
+ SPDNS
+ SPDNS (spdns.de) 動態位址
+
+
+ CUSTOMDNS
+ 自訂動態 DNS 供應商
+
+
+ CUSTOMDNS_LABEL
+ 自訂伺服器位址
+
+
+ CUSTOM_PROTOCOL_LABEL
+ 自訂 ddclient 協定
+
+
+ CUSTOM_DESCRIPTION
+ 倘若您的動態 DNS 供應商不在名單中,您可使用自訂動態 DNS 供應商。請將適當的設定填入自訂區域。
+
+
+ CUSTOMDNS_VALIDATION_ERROR
+ 錯誤: 在自訂伺服器網址欄的網域名稱 {$domainName} 中含未知或缺少字元。伺服器網址應該包含單一或多於一個的字元、數字、句號與減號。無法套用改變。
+
+
+ ddclient
+ 動態客戶端
+
+
+ DOMAIN_NAME_ALREADY_EXIST
+ 錯誤:此網域 {$domainName} 已存在。請另選其他。
+
+
+ FREE_FORM_DESCRIPTION
+ 此處您可建立任何網域名稱透過網路來發布。
+
+
+ RETRIEVE_SSL
+ SSL 更新
+
+
+ RETRIEVE_DEAMONUPDATE
+ 常駐程式更新 (seconds)
+
+
+ RETRIEVE_URLCHECKIP
+ Url 外部 IP 網址
+
+
+ APPLY
+ 儲存
+
+
+ DOMAIN_NAME_LABEL
+ 網域名稱
+
+
+ DESCRIPTION_LABEL
+ 網域簡介
+
+
+ SUCCESSFULLY_MODIFIED_RETRIEVE_IP
+ 您已成功修正 IP 相關選項。
+
+
+ RETRIEVE_METHOD
+ Method to retrieve new IP:
+
+
+ RETRIEVE_IF
+ Local interface to get new IP, if selected interface method
+
+
+ RETRIEVE_CMD
+ Comand to execute to get IP, if selected comand method
+
+
+ SME external Interface
+ 用戶介面
+
+
+ SME configuration DB
+ 服務設定
+
+
+ web
+ 網頁伺服器
+
+
+ Interface
+ 介面
+
+
+ IP
+ 管理NFS Ibay設定
+
+
+ Command
+ 指令列
+
+
+ RETRIEVE_IP
+ IP to manually force
+
+
+
+
+
+
diff --git a/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf b/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf
new file mode 100644
index 0000000..804bdcf
--- /dev/null
+++ b/root/etc/e-smith/templates.metadata/etc/ddclient/ddclient.conf
@@ -0,0 +1,3 @@
+UID="ddclient"
+GID="ddclient"
+PERMS=0600
diff --git a/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers b/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers
new file mode 100644
index 0000000..3576d9c
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/10Headers
@@ -0,0 +1,72 @@
+ {
+ my $deamonupdate = ${ddclient}{DeamonUpdate} || '360';
+ if ($deamonupdate <= 360) {$deamonupdate = 360;} # Confuses ddclient runs if less than 5 minutes
+ my $ssl = ${ddclient}{SSL} || 'yes';
+ $OUT .= qq(
+daemon=$deamonupdate # check every $deamonupdate seconds
+syslog=yes # log update msgs to syslog
+pid=/var/run/ddclient.pid # record PID in file.
+ssl=$ssl # Set SSL
+);
+
+
+ my $mailSuccess = $ddclient{'mailSuccess'}||'admin';
+
+ if (($mailSuccess eq 'none') || ($mailSuccess eq '' )) {
+ $mailSuccess = "";
+ }
+
+ my $mailFailure = $ddclient{'mailFailure'}||'admin';
+
+ if (($mailFailure eq 'none') || ($mailFailure eq '')) {
+ $mailFailure = "";
+ }
+
+ $OUT .= "\n";
+ $OUT .= "mail=$mailSuccess\n"; # mail update msgs to admin
+ $OUT .= "mail-failure=$mailFailure\n";
+
+ my $method = $ddclient{'method'}||'web';
+
+# my $webskip = $ddclient{'webskip'}||'IP Address:'; #No longer supported for v3.11.1
+# my $cmdskip = $ddclient{'cmdskip'}||''; #No longer supported for v3.11.1
+# my $ifskip = $ddclient{'ifskip'}||''; #No longer supported for v3.11.1
+
+ my $Extinterface = $ddclient{'Extinterface'}|| $ExternalInterface{'Name'}|| '';
+ my $cmd = $ddclient{'cmd'} || '/sbin/e-smith/db configuration getprop ExternalInterface IPAddress';
+ my $ForceIP = $ddclient{'ForceIP'} || $ExternalInterface{'IPAddress'} || $ExternalIP || '';
+ $OUT .= "\n";
+ if ( $method eq 'smeIF' ) {
+ # we use SME db to get the external interface NAME : ppp0, eth1, tap0...
+ $Extinterface = $ExternalInterface{'Name'} ||$Extinterface;
+ $OUT .="usev4=ifv4, ifv4=$Extinterface\n";
+ } elsif ( $method eq 'smeCMD') {
+ # we choose to just get the value from configuration DB
+ $OUT .="usev4=cmdv4, cmdv4='/sbin/e-smith/db configuration getprop ExternalInterface IPAddress'\n";
+ } elsif ( $method eq 'web') {
+ # old good way, we get the value from an external web page. best if we are not gateway
+ $OUT .="usev4=webv4, webv4=$ddclient{'urlcheckip'} \n"; #Do not add / as may be web service id, not url
+ } elsif ( $method eq 'if') {
+ # we have a specific configuration and can not trust sme to get the interface correctly
+ $OUT .="usev4=ifv4, ifv4=$Extinterface\n"; #if-skip no longer required / deprecated
+ } elsif ( $method eq 'ip') {
+ # we want to force manually
+ $OUT.="usev4=ipv4, ipv4=$ForceIP \n";
+ } elsif ( $method eq 'cmdv4') {
+ $OUT .="usev4=cmdv4, cmdv4='$cmd'\n";
+ } else {
+ # fw method
+ my $fwaddress = $ddclient{'fwaddress'}||'';
+ my $fwdevice = $ddclient{'Extinterface'}||'';
+ my $fwlogin = $ddclient{'fwlogin'}||'';
+ my $fwpassword = $ddclient{'fwpassword'}||'';
+ my $fwskip = $ddclient{'fwskip'}||'';
+ $OUT .= "usev4=$fwdevice, fwv4=$fwaddress";
+ $OUT .= ", fw-login=$fwlogin " if ( $fwlogin ne '' );
+ $OUT .= ", fw-password=$fwpassword " if ( $fwpassword ne '' );
+ $OUT .= ", fwv4-skip='$fwskip' " if ( $fwskip ne '' );
+ $OUT .= "\n";
+ }
+
+ }
+
diff --git a/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration b/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration
new file mode 100644
index 0000000..735565b
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/ddclient/ddclient.conf/20Declaration
@@ -0,0 +1,124 @@
+{
+ use esmith::DomainsDB;
+
+ $OUT='';
+
+ my $ddb = esmith::DomainsDB->open_ro();
+
+ my $edb;
+
+ $edb = esmith::ConfigDB->open('/home/e-smith/db/ddclient')
+ or $edb = esmith::ConfigDB->create('/home/e-smith/db/ddclient');
+
+ #------------------------------------------------------------
+ # Look up domains and domain descriptions
+ #------------------------------------------------------------
+
+
+ my %DDNS = (
+ DYNDNS1=> dyndns2,
+ DYNDNS2=>dyndns2,
+ DYNDNS3=>dyndns2,
+ ZONEDIT=>zoneedit1,
+ EASYDNS=>easydns,
+ HAMMER=>hammernode1,
+ DSLREPORTS=>dslreports1,
+ EURODYNDNS=>namecheap,
+ DTDNS=>dtdns,
+ LOOPIA=>dyndns2,
+ DNSPARK=>dyndns2,
+ DYNHOST=>dyndns2,
+ NOIP=>noip,
+ CHANGEIP=>dyndns2,
+ NAMECHEAP=>namecheap,
+ SPDNS=>dyndns2,
+ );
+ my %DDSERV= (
+ DYNDNS1=> 'members.dyndns.org',
+ DYNDNS2=>'members.dyndns.org',
+ DYNDNS3=>'members.dyndns.org',
+ ZONEDIT=>'dynamic.zoneedit.com',
+ EASYDNS=>'members.easydns.com',
+ HAMMER=>'dup.hn.org',
+ DSLREPORTS=>'members.dslreports.com',
+ EURODYNDNS=>'eurodyndns.org',
+ DTDNS=>'www.dtdns.com',
+ LOOPIA=>'dns.loopia.se',
+ DNSPARK=>'www.dnspark.com',
+ DYNHOST=>'www.ovh.com',
+ NOIP=>'dynupdate.no-ip.com',
+ CHANGEIP=>'nic.changeip.com',
+ NAMECHEAP=>'dynamicdns.park-your-domain.com',
+ SPDNS=>'update.spdyn.de',
+ );
+
+ for my $edom ( $ddb->domains , $edb->get_all_by_prop(type=>'ddhost') )
+ {
+ {
+
+ my $dns = $edom->prop('dns') || '';
+ next if ($dns eq '');
+
+ $dns =~ tr/a-z/A-Z/;
+ my $login = $edom->prop('login');
+ my $password = $edom->prop('password');
+ my $customdns = $edom->prop('customdns') || '';
+ my $customprotocol = $edom->prop('customprotocol') || '';
+
+ my $pubserv="";
+ $pubserv= $DDSERV{$dns} if exists $DDSERV{$dns}; #not needed for v3.11.1 => yes it is
+ $pubserv= $customdns if( $dns eq 'CUSTOMDNS' );
+ # Not sure if wee need these either!
+ my $static=$edom->prop('static') || '';
+ my $custom=$edom->prop('custom') || '';
+ my $wildcard=$edom->prop('wildcard') || '';
+ my $backupmx=$edom->prop('backupmx') || '';
+
+ my $mx=$edom->prop('mx') || '';
+ my $protocol=$dns;
+ $protocol = $DDNS{$dns} if exists $DDNS{$dns};
+ my $explain='## '.$edom->prop('dns').' dynamic address';
+
+ if($dns ne '')
+ {
+ $OUT .="##\n";
+ $OUT .=$explain."\n";
+ $OUT .="##\n";
+ $OUT .="server=".$pubserv.", \\\n"; # not needed for v3.11.1; is needed
+ $OUT .="protocol=".$protocol.", \\\n";
+ #if( $dns eq 'DTDNS' ) {
+ #$OUT .="client=ddclient, \\\n";
+ #}
+ #if( $dns eq 'LOOPIA' ) {
+ #$OUT .="use=web, \\\n";
+ #$OUT .="web=loopia, \\\n";
+ #$OUT .="script=/XDynDNSServer/XDynDNS.php, \\\n";
+ #}
+ if($static ne '') {
+ $OUT .="static=".$static.", \\\n";
+ }
+
+ if($wildcard ne '') {
+ $OUT .="wildcard=".$wildcard.", \\\n";
+ }
+
+ if($custom ne '') {
+ $OUT .="custom=".$custom.", \\\n";
+ }
+
+ if ($mx ne '') {
+ $OUT .="mx=".$mx.", \\\n";
+ }
+
+ $OUT .="login=".$login.", \\\n";
+ $OUT .="password=".$password." \\\n";
+ $OUT .= ( $dns ne 'NAMECHEAP' )? $edom->key."\n" : "@.".$edom->key()."\n";
+ $OUT .="##\n";
+ $OUT .="##\n";
+ $OUT .="\n";
+ }
+ }
+ }
+}
+
+
diff --git a/root/etc/e-smith/templates/etc/ppp/ip-up.local/45ddclient b/root/etc/e-smith/templates/etc/ppp/ip-up.local/45ddclient
new file mode 100644
index 0000000..fa7fdca
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/ppp/ip-up.local/45ddclient
@@ -0,0 +1,13 @@
+
+# [ -x /etc/ppp/ddclient_ip-up.local ] && /etc/ppp/ddclient_ip-up.local "$@"
+# [ -x /etc/rc.d/init.d/ddclient ] && /etc/rc.d/init.d/ddclient restart
+{
+#$debug = (($ddclient{'debug'} eq 'enabled') ? "debug" : "nodebug");
+#$verbose = (($ddclient{'verbose'} eq 'enabled') ? "verbose" : "noverbose");
+#$quiet = (($ddclient{'quiet'} eq 'enabled') ? "quiet" : "noquiet");
+#$syslog = (($ddclient{'syslog'} eq "enabled") ? "syslog" : "nosyslog");
+$OUT= "/usr/bin/systemctl reload-or-restart ddclient" if ( ($ddclient{status}||"disabled") eq "enabled" );
+#$OUT .= "\/usr\/sbin\/ddclient -file \/etc\/ddclient\/ddclient.conf -$debug -$verbose -$quiet -$syslog -pid \/var\/run\/ddclient\/ddclient.pid";
+$OUT .= "\n";
+}
+
diff --git a/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service b/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service
new file mode 100644
index 0000000..2096e8d
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/20Service
@@ -0,0 +1,18 @@
+{
+$debug = (($ddclient{'debug'} eq 'enabled') ? "debug" : "nodebug");
+$verbose = (($ddclient{'verbose'} eq 'enabled') ? "verbose" : "noverbose");
+$quiet = (($ddclient{'quiet'} eq 'disabled') ? "noquiet" : "quiet");
+$syslog = (($ddclient{'syslog'} eq "enabled") ? "syslog" : "nosyslog");
+$OUT .= "\n";
+$OUT .= "[Service]\n";
+$OUT .= "User=ddclient\n";
+$OUT .= "Group=ddclient\n";
+$OUT .= "Type=forking\n";
+$OUT .= "EnvironmentFile=-\/etc\/sysconfig\/ddclient\n";
+$OUT .= "ExecReload=/usr/bin/kill -HUP \$MAINPID\n";
+$OUT .= "ExecStartPre=\n";
+$OUT .= "ExecStartPre=\/bin\/touch \/var\/cache\/ddclient\/ddclient.cache\n";
+$OUT .= "ExecStart=\n";
+$OUT .= "ExecStart=\/usr\/sbin\/ddclient -file \/etc\/ddclient\/ddclient.conf -$debug -$verbose -$quiet -$syslog -pid \/var\/run\/ddclient\/ddclient.pid";
+$OUT .= "\n";
+}
diff --git a/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/30Install b/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/30Install
new file mode 100644
index 0000000..aa4f147
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/lib/systemd/system/ddclient.service.d/50koozali.conf/30Install
@@ -0,0 +1,2 @@
+[Install]
+WantedBy=sme-server.target
diff --git a/root/etc/e-smith/web/functions/ddclient b/root/etc/e-smith/web/functions/ddclient
new file mode 100755
index 0000000..e006492
--- /dev/null
+++ b/root/etc/e-smith/web/functions/ddclient
@@ -0,0 +1,1416 @@
+#!/usr/bin/perl -wT
+
+#----------------------------------------------------------------------
+# heading : Configuration
+# description : ddclient
+# navigation : 3000 3400
+#----------------------------------------------------------------------
+#----------------------------------------------------------------------
+# copyright (C) 2002 Mitel Networks Corporation
+#
+# 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
+#
+# Technical support for this program is available from Mitel Networks
+# Please visit our web site www.mitel.com/sme/ for details.
+#----------------------------------------------------------------------
+
+#package esmith;
+
+use strict;
+use CGI ':all';
+use CGI::Carp qw(fatalsToBrowser);
+use esmith::FormMagick;
+
+my $fm = esmith::FormMagick->new();
+$fm->parse_xml();
+
+use esmith::cgi;
+use esmith::util;
+use esmith::ConfigDB;
+use esmith::AccountsDB;
+
+sub showInitial ($$);
+sub genContentMenu ($$);
+sub createDomain ($);
+sub performCreateDomain ($);
+sub modifyDomain ($);
+sub performModifyDomain ($);
+sub deleteDomain ($);
+sub performDeleteDomain ($);
+sub ddcreateDomain ($);
+sub ddperformCreateDomain ($);
+sub ddmodifyDomain ($);
+sub ddperformModifyDomain ($);
+sub dddeleteDomain ($);
+sub ddperformDeleteDomain ($);
+sub genServer ($$);
+
+sub genRetrieve($$);
+sub genRetrieveMethod($$);
+sub performRetrieve($);
+
+#######################################################################
+BEGIN
+{
+ # Clear PATH and related environment variables so that calls to
+ # external programs do not cause results to be tainted. See
+ # "perlsec" manual page for details.
+
+ $ENV {'PATH'} = '';
+ $ENV {'SHELL'} = '/bin/bash';
+ delete $ENV {'ENV'};
+}
+
+esmith::util::setRealToEffective ();
+
+$CGI::POST_MAX=1024 * 100; # max 100K posts
+$CGI::DISABLE_UPLOADS = 1; # no uploads
+
+my $conf = esmith::ConfigDB->open() or die "Unable to open configuration db";
+tie my %conf, 'esmith::config', '/home/e-smith/db/configuration';
+if ( ! %conf) {
+ tie %conf, 'esmith::config', '/home/e-smith/configuration';
+}
+
+my $domaindb = esmith::ConfigDB->open('/home/e-smith/db/domains')
+ or die "Unable to open domains db";
+my $edb;
+
+$edb = esmith::ConfigDB->open('/home/e-smith/db/ddclient')
+ or $edb = esmith::ConfigDB->create('/home/e-smith/db/ddclient');
+#------------------------------------------------------------
+# examine state parameter and display the appropriate form
+#------------------------------------------------------------
+
+my $q = new CGI;
+
+if (! grep (/^state$/, $q->param))
+{
+ showInitial ($q, '');
+}
+
+elsif ($q->param ('state') eq "create")
+{
+ createDomain ($q);
+}
+
+elsif ($q->param ('state') eq "performCreate")
+{
+ performCreateDomain ($q);
+}
+
+elsif ($q->param ('state') eq "modify")
+{
+ modifyDomain ($q);
+}
+
+elsif ($q->param ('state') eq "performModify")
+{
+ performModifyDomain ($q);
+}
+
+elsif ($q->param ('state') eq "delete")
+{
+ deleteDomain ($q);
+}
+
+elsif ($q->param ('state') eq "performDelete")
+{
+ performDeleteDomain ($q);
+}
+
+elsif ($q->param ('state') eq "ddcreate") {
+ ddcreateDomain ($q);
+}
+elsif ($q->param ('state') eq "ddperformCreate") {
+ ddperformCreateDomain ($q);
+}
+elsif ($q->param ('state') eq "ddmodify") {
+ ddmodifyDomain ($q);
+}
+elsif ($q->param ('state') eq "ddperformModify") {
+ ddperformModifyDomain ($q);
+}
+elsif ($q->param ('state') eq "dddelete") {
+ dddeleteDomain ($q);
+}
+elsif ($q->param ('state') eq "ddperformDelete") {
+ ddperformDeleteDomain ($q);
+}
+
+elsif ($q->param ('state') eq "performRetrieve") {
+ performRetrieve($q);
+}
+
+else
+{
+ esmith::cgi::genStateError ($q, \%conf);
+}
+
+exit (0);
+
+#------------------------------------------------------------
+# subroutine to display initial form
+#------------------------------------------------------------
+sub get_dns_labels {
+ #
+ # dns service names from ddclient
+ #
+ # Better here would be to extract this list from the ddclient package.
+ my $Labels = (
+ [
+ 'CUSTOMDNS' ,
+ 'DYNDNS1' ,
+ 'DYNDNS2' ,
+ 'DYNDNS3' ,
+ 'ZONEDIT' ,
+ 'EASYDNS' ,
+ 'HAMMER' ,
+ 'DSLREPORTS' ,
+ 'EURODYNDNS' ,
+ 'DTDNS' ,
+ 'LOOPIA' ,
+ 'DNSPARK' ,
+ 'DYNHOST' ,
+ 'NOIP' ,
+ 'CHANGEIP' ,
+ 'NAMECHEAP' ,
+ 'SPDNS' ,
+ 'SITELUTIONS',
+ 'FREEDNS',
+ 'NSUPDATE',
+ 'CLOUDFLARE',
+ 'GOOGLEDOMAINS',
+ 'DUCKDNS',
+ 'FREEMYIP',
+ 'WOIMA',
+ 'YANDEX',
+ 'DNSMADEEASY',
+ 'DONDOMINIO',
+ 'NFSN',
+ 'OVH',
+ 'CLOUDNS'
+ ]
+ );
+ return $Labels;
+}
+
+
+sub genServer ($$)
+{
+ my ($q, $curSetting) = @_;
+
+ if ((! defined $curSetting) || ($curSetting eq ''))
+ {
+ $curSetting = 'dyndns1';
+ }
+
+ my $Labels = get_dns_labels();
+ # Create translated description for them
+ my %LabelDescriptions;
+ foreach my $lab (@$Labels){
+ $LabelDescriptions{$lab}= $fm->localise($lab);
+ };
+ return esmith::cgi::genCell ($q, $q->popup_menu (-name => 'dns',
+ -values => $Labels,
+ -default => $curSetting,
+ -labels => \%LabelDescriptions));
+}
+
+
+
+#------------------------------------------------------------
+sub genRetrieve($$) {
+ my ($q, $curSetting) = @_;
+
+ if ((! defined $curSetting) || ($curSetting eq ''))
+ {
+ $curSetting = 'yes';
+ }
+
+ my %Labels = (
+ 'yes' => $fm->localise('yes'),
+ 'no' => $fm->localise('no'),
+ );
+
+ return esmith::cgi::genCell ($q, $q->popup_menu (-name => 'retrievessl',
+ -values => [
+ 'yes','no'
+ ],
+ -default => $curSetting,
+ -labels => \%Labels));
+}
+#------------------------------------------------------------
+sub genRetrieveMethod($$) {
+ my ($q, $curSetting) = @_;
+
+ if ((! defined $curSetting) || ($curSetting eq ''))
+ {
+ $curSetting = 'web';
+ }
+
+ my %Labels = (
+ 'smeIF' => $fm->localise('SME external interface'),
+ 'smeCMD' => $fm->localise('SME configuration DB'),
+ 'web' => $fm->localise('web'),
+ 'if' => $fm->localise('Interface'),
+ 'ip' => $fm->localise('IP'),
+ 'cmd' => $fm->localise('Command'),
+ );
+
+ return esmith::cgi::genCell ($q, $q->popup_menu (-name => 'retrievemethod',
+ -values => [
+ 'smeIF','smeCMD','web','if','ip','cmd'
+ ],
+ -default => $curSetting,
+ -labels => \%Labels));
+}
+#------------------------------------------------------------
+#
+sub showInitial ($$)
+{
+ my ($q, $msg) = @_;
+
+ #------------------------------------------------------------
+ # If there's a message, we just finished an operation so show the
+ # status report. If no message, this is a new list of domains.
+ #------------------------------------------------------------
+
+ if ($msg eq '')
+ {
+ esmith::cgi::genHeaderNonCacheable ($q, \%conf, $fm->localise('FORM_TITLE'));
+ }
+ else
+ {
+ esmith::cgi::genHeaderNonCacheable ($q, \%conf, $fm->localise('OPERATION_STATUS_REPORT'));
+ print $q->p ($msg);
+ print $q->hr;
+ }
+
+ print $q->p ($fm->localise('FORM_DESCRIPTION'));
+
+ #------------------------------------------------------------
+ # get the ip retrieve method
+ #------------------------------------------------------------
+ my $ddretrieve=$conf->get('ddclient');
+ my $ExtIF=$conf->get('ExternalInterface');
+ my $DeamonUpdate=$ddretrieve->prop('DeamonUpdate')|| '300';
+ my $urlcheckip=$ddretrieve->prop('urlcheckip')|| 'checkip.dyndns.org';
+ my $ssl=$ddretrieve->prop('SSL')|| 'yes';
+ my $method=$ddretrieve->prop('method')||'web';
+ my $Extinterface=$ddretrieve->prop('Extinterface')||'';
+ my $cmd=$ddretrieve->prop('cmd')||'';
+ my $forceIP=$ddretrieve->prop('ForceIP')||'';
+
+ print $q->startform (-method => 'POST',
+ -action => $q->url (-absolute => 1));
+
+ print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
+ $q->Tr (esmith::cgi::genCell($q,
+ $fm->localise('RETRIEVE_SSL').":", 'sme-noborders-label' ),
+ genRetrieve($q,$ssl)),
+# esmith::cgi::genWidgetRow ($q, $fm->localise('RETRIEVE_SSL')),
+# $q->popup_menu (-name => 'SSL',
+# -values => ['yes', 'no'],
+# -default => $ssl),
+# -labels => \%status)) ,
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_DEAMONUPDATE'),
+ "retrievedeamonupdate",$DeamonUpdate)),
+ $q->Tr (esmith::cgi::genCell ($q,$fm->localise('RETRIEVE_METHOD').":", 'sme-noborders-label' ),
+ genRetrieveMethod($q,$method)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_IF'),
+ "retrieveinterface",$Extinterface)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_CMD'),
+ "retrievecmd",$cmd)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_IP'),
+ "retrieveip",$forceIP)),
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('RETRIEVE_URLCHECKIP'),
+ "retrieveurlcheckip",$urlcheckip)),
+ esmith::cgi::genButtonRow ( $q,
+ $q->submit (-name => 'action',
+ -value => $fm->localise('APPLY')))
+ );
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'performRetrieve');
+
+ print $q->endform;
+ print $q->hr;
+
+ #------------------------------------------------------------
+ # Look up domains and domain descriptions
+ #------------------------------------------------------------
+
+ my $key;
+ my @virtualDomains = ();
+ foreach my $domain ($domaindb->get_all_by_prop(type=>'domain'))
+ {
+ $key = $domain->key;
+ push (@virtualDomains, $key);
+ }
+
+ print $q->p ($fm->localise('FORM_DESCRIPTION'));
+
+ my $numDomains = @virtualDomains;
+ if ($numDomains == 0)
+ {
+ print $q->p ($q->b ($fm->localise('NO_VIRTUAL_DOMAINS')));
+ }
+ else
+ {
+ print $q->p ($q->b ($fm->localise('CURRENT_LIST_OF_DOMAINS')));
+
+ print $q->table ({border => 1, cellspacing => 1, cellpadding => 4});
+
+ print $q->Tr (esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('DOMAIN'))),
+ esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('DESCRIPTION'))),
+ esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('CONTENT', ))),
+ esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('PUBLICATION', ))),
+ $q->td (' '),
+ $q->td (' '));
+
+ my $domain;
+ foreach $domain (sort @virtualDomains)
+ {
+ my %properties = $domaindb->get($domain)->props;
+
+ my $test=$domaindb->get($domain) || '';
+
+ my %extraprops;
+ if($test ne '')
+ {
+ %extraprops = $domaindb->get($domain)->props;
+ }
+
+ my $content;
+ if ($properties{'Content'} eq 'wwwpublic')
+ {
+ $content = $fm->localise('PRIMARY_SITE');
+ }
+ else
+ {
+ $content = $fm->localise('CONTENT',
+ {content => $properties{'Content'}});
+ }
+
+ my $public;
+ if ($test eq '')
+ {
+ print $q->Tr (esmith::cgi::genSmallCell ($q, $domain),
+ esmith::cgi::genSmallCell ($q, $properties{'Description'}),
+ esmith::cgi::genSmallCell ($q, $content),
+ esmith::cgi::genSmallCell ($q, ' '),
+ esmith::cgi::genSmallCell ($q, ' '),
+ esmith::cgi::genSmallCell ($q,
+ $q->a ({href => $q->url (-absolute => 1)
+ . "?state=create&domain="
+ . $domain}, $fm->localise('CREATE', ))),
+ esmith::cgi::genSmallCell ($q, ' ')
+ );
+ }
+ else
+ {
+ print $q->Tr (esmith::cgi::genSmallCell ($q, $domain),
+ esmith::cgi::genSmallCell ($q, $properties{'Description'}),
+ esmith::cgi::genSmallCell ($q, $content),
+ esmith::cgi::genSmallCell ($q, $fm->localise($extraprops{'dns'})),
+ esmith::cgi::genSmallCell ($q,
+ $q->a ({href => $q->url (-absolute => 1)
+ . "?state=modify&domain="
+ . $domain}, $fm->localise('MODIFY', ))),
+ esmith::cgi::genSmallCell ($q,
+ $q->a ({href => $q->url (-absolute => 1)
+ . "?state=delete&domain="
+ . $domain}, $fm->localise('DELETE', )))
+ );
+ }
+
+ }
+
+ print '';
+ }
+ print $q->hr;
+#########################################################################################################################################
+# now the free form part
+#
+ my @FreeDomains = ();
+ foreach my $domain ($edb->get_all_by_prop(type=>'ddhost'))
+ {
+ my $key = $domain->key;
+ push (@FreeDomains, $key);
+ }
+
+ print $q->p ($fm->localise('FREE_FORM_DESCRIPTION'));
+
+ $numDomains = @FreeDomains;
+
+ print $q->p ($q->b ($fm->localise('CURRENT_LIST_OF_DOMAINS')));
+
+ print $q->table ({border => 1, cellspacing => 1, cellpadding => 4});
+
+ print $q->Tr (esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('DOMAIN'))),
+ esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('DESCRIPTION'))),
+ esmith::cgi::genSmallCell ($q, $q->b ($fm->localise('PUBLICATION'))),
+ $q->td (' '),
+ $q->td (' ')
+ );
+
+ if ( $numDomains > 0 ) {
+ foreach my $domain (sort @FreeDomains) {
+ my $vals = $edb->get($domain);
+ my $content = $vals->prop('desc');
+ my $publish = $fm->localise($vals->prop('dns'));
+ print $q->Tr (esmith::cgi::genSmallCell ($q, $domain),
+ esmith::cgi::genSmallCell ($q, $content),
+ esmith::cgi::genSmallCell ($q, $publish),
+ esmith::cgi::genSmallCell ($q,
+ $q->a ({href => $q->url (-absolute => 1)
+ . "?state=ddmodify&domain="
+ . $domain}, $fm->localise('MODIFY', ))),
+ esmith::cgi::genSmallCell ($q,
+ $q->a ({href => $q->url (-absolute => 1)
+ . "?state=dddelete&domain="
+ . $domain}, $fm->localise('DELETE', )))
+ );
+ }
+ }
+
+ print $q->Tr (($q->td(' ')),
+ ($q->td(' ')),
+ ($q->td(' ')),
+ ($q->td(' ')),
+ esmith::cgi::genSmallCell ($q,
+ $q->a ({href => $q->url (-absolute => 1)
+ . "?state=ddcreate"}, $fm->localise('CREATE', )))
+ );
+ print '';
+
+ esmith::cgi::genFooter ($q);
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub genContentMenu ($$)
+{
+ my ($q, $currentSetting) = @_;
+
+ if ((! defined $currentSetting) || ($currentSetting eq ''))
+ {
+ $currentSetting = 'wwwpublic'; # this chooses the primary web site
+ }
+
+ my $acctdb = esmith::AccountsDB->open();
+
+ my %labels = ();
+ my @values = ();
+
+ foreach my $ibay ($acctdb->get_all_by_prop(type=>'ibay'))
+ {
+ my $key = $ibay->key;
+ my %properties = $ibay->props;
+ $labels {$key} = $properties {'Name'};
+ }
+
+ @values = sort (keys %labels);
+
+ $labels {'wwwpublic'} = $fm->localise('PRIMARY_SITE');
+ unshift @values, 'wwwpublic';
+
+ return esmith::cgi::genCell ($q, $q->popup_menu (-name => 'domainContent',
+ -values => \@values,
+ -default => $currentSetting,
+ -labels => \%labels));
+}
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+sub performRetrieve($) {
+ my ($q) = @_;
+ my $deamonupdate =$q->param('retrievedeamonupdate');
+ my $urlcheckip =$q->param('retrieveurlcheckip');
+ my $ssl = $q->param('retrievessl');
+ my $retrievemethod = $q->param('retrievemethod');
+ my $retrieveinterface = $q->param('retrieveinterface');
+ my $retrievecmd = $q->param('retrievecmd');
+ my $retrieveip = $q->param('retrieveip');
+
+ my $ddclient=$conf->get('ddclient');
+ $ddclient->set_prop('urlcheckip' => $urlcheckip);
+ $ddclient->set_prop('DeamonUpdate' => $deamonupdate);
+ $ddclient->set_prop('SSL' => $ssl);
+ $ddclient->set_prop('method' => $retrievemethod);
+ $ddclient->set_prop('Extinterface' => $retrieveinterface );
+ $ddclient->set_prop('cmd' => $retrievecmd);
+ $ddclient->set_prop('ForceIP' => $retrieveip);
+
+ $domaindb->reload();
+
+ system ("/sbin/e-smith/signal-event", "smeserver-ddclient-update");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_MODIFIED_RETRIEVE_IP'));
+}
+
+#------------------------------------------------------------
+sub createDomain ($)
+{
+ my ($q) = @_;
+ my $domain=$q->param('domain');
+
+ esmith::cgi::genHeaderNonCacheable
+ ($q, \%conf, $fm->localise('CREATE_TITLE'));
+
+ my %properties = $domaindb->get($domain)->props;
+
+ my $test=$domaindb->get($domain) || '';
+
+ my %extraprops;
+ if($test ne '')
+ {
+ %extraprops = $domaindb->get($domain)->props;
+ }
+
+ my $content;
+ if ($properties{'Content'} eq 'wwwpublic')
+ {
+ $content = $fm->localise('PRIMARY_SITE');
+ }
+ else
+ {
+ $content = $fm->localise('CONTENT',
+ {content => $properties{'Content'}});
+ }
+
+
+ print $q->startform (-method => 'POST',
+ -action => $q->url (-absolute => 1));
+
+ print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
+
+ $q->Tr (esmith::cgi::genCell ($q,$fm->localise('DOMAIN_NAME')),
+ esmith::cgi::genCell ($q,$q->b($domain))),
+
+ $q->Tr (esmith::cgi::genCell($q,$fm->localise('DESCRIPTION_BRIEF')),
+ esmith::cgi::genCell($q,$properties{'Description'})),
+
+ $q->Tr (esmith::cgi::genCell ($q,$fm->localise('CONTENT')),
+ esmith::cgi::genCell ($q, $q->b($content))),
+
+ $q->Tr (esmith::cgi::genCell ($q, $fm->localise('SERVERS_LABEL')),
+ genServer($q, $extraprops{'dns'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('NAME_LABEL'),
+ "login","")),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('PASSWORD_LABEL'),
+ "password","")),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('MX'),
+ "mx","")),
+
+ esmith::cgi::genButtonRow ( $q,
+ $q->submit (-name => 'action',
+ -value => $fm->localise('CREATE'))));
+
+ print $q->hidden (-name => 'domainName',
+ -override => 1,
+ -default => $domain);
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'performCreate');
+
+ print $q->endform;
+
+ esmith::cgi::genFooter ($q);
+ return;
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub performCreateDomain ($)
+{
+ my ($q) = @_;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $q->param ('domainName');
+ if ($domainName =~ /^([a-zA-Z0-9\-\.]+)$/)
+ {
+ $domainName = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('DOMAIN_NAME_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+
+ my $domainLogin = $q->param ('login');
+ if ($domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/)
+ {
+ $domainLogin = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('DOMAIN_LOGIN_VALIDATION_ERROR',
+ {domainLogin => $domainLogin}));
+ return;
+ }
+
+ my $domainPassword = $q->param ('password');
+ if ($domainPassword =~ /^(.*)$/)
+ {
+ $domainPassword = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('DOMAIN_PASSWORD_VALIDATION_ERROR',
+ {domainPassword => $domainPassword}));
+ return;
+ }
+
+ my $domainMX = $q->param ('mx');
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+ my $dns = $q->param ('dns');
+
+ my %properties = ();
+ $properties{'type'} = 'domain';
+ $properties{'dns'} = $dns;
+ $properties{'login'} = $domainLogin;
+ $properties{'password'} = $domainPassword;
+ $properties{'mx'} = $domainMX;
+
+ $domaindb->new_record($domainName, \%properties);
+
+ system ("/sbin/e-smith/signal-event", "domain-create");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_CREATED',
+ {domainName => $domainName,dns => $fm->localise($dns) }));
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub modifyDomain ($)
+{
+ my ($q) = @_;
+
+ esmith::cgi::genHeaderNonCacheable ($q, \%conf,
+ $fm->localise('MODIFY_TITLE'));
+
+ print $q->startform (-method => 'POST', -action => $q->url (-absolute => 1));
+
+ my $domain = $q->param ('domain');
+ my $value = $domaindb->get($domain);
+ my $evalue = $domaindb->get($domain);
+
+ if ($value)
+ {
+ my %properties = $value->props;
+ my %eprops = $evalue->props;
+ my $content;
+ if ($properties{'Content'} eq 'wwwpublic')
+ {
+ $content = $fm->localise('PRIMARY_SITE');
+ }
+ else
+ {
+ $content = $fm->localise('CONTENT',
+ {content => $properties{'Content'}});
+ }
+
+ print $q->h3 ($fm->localise('CUSTOM_DESCRIPTION'));
+ print $q->p;
+
+ print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
+ $q->Tr (esmith::cgi::genCell ($q,
+ $fm->localise('DOMAIN_NAME')),
+ esmith::cgi::genCell ($q, $domain)),
+
+ $q->Tr (esmith::cgi::genCell ($q,
+ $fm->localise('DESCRIPTION_BRIEF')),
+ esmith::cgi::genCell ($q, $properties {'Description'})),
+
+ $q->Tr (esmith::cgi::genCell ($q,
+ $fm->localise('CONTENT')),
+ esmith::cgi::genCell ($q, $content)),
+
+ $q->Tr (esmith::cgi::genCell ($q, $fm->localise('SERVERS_LABEL')),
+ genServer($q, $eprops{'dns'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('CUSTOMDNS_LABEL'),
+ "customdns",
+ $eprops{'customdns'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('CUSTOM_PROTOCOL_LABEL'),
+ "customprotocol",
+ $eprops{'customprotocol'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('NAME_LABEL'),
+ "login",
+ $eprops{'login'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('PASSWORD_LABEL'),
+ "password",
+ $eprops{'password'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('MX'),
+ "mx",$eprops{'mx'})),
+
+ esmith::cgi::genButtonRow ($q,
+ $q->submit (-name => 'action',
+ -value => $fm->localise('MODIFY'))));
+
+ print $q->hidden (-name => 'domainName',
+ -override => 1,
+ -default => $domain);
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'performModify');
+
+ }
+
+ print $q->endform;
+ esmith::cgi::genFooter ($q);
+ return;
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub performModifyDomain ($)
+{
+ my ($q) = @_;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $q->param ('domainName');
+ if ($domainName =~ /^([a-zA-Z0-9\-\.]+)$/)
+ {
+ $domainName = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('DOMAIN_NAME_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+
+ my $domainLogin = $q->param ('login');
+ if ($domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/)
+ {
+ $domainLogin = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('DOMAIN_LOGIN_VALIDATION_ERROR',
+ {domainLogin => $domainLogin}));
+ return;
+ }
+
+ my $domainPassword = $q->param ('password');
+ if ($domainPassword =~ /^(.*)$/)
+ {
+ $domainPassword = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('DOMAIN_PASSWORD_VALIDATION_ERROR',
+ {domainPassword => $domainPassword}));
+ return;
+ }
+
+ my $domainMX = $q->param ('mx');
+ my $customDNS = $q->param('customdns');
+ my $customPROTOCOL = $q->param('customprotocol');
+
+ my $dns = $q->param ('dns');
+ if ($dns eq 'CUSTOMDNS')
+ {
+ if ($customDNS =~ /^([a-zA-Z0-9\-\.]+)$/)
+ {
+ $customDNS = $1;
+ }
+ else
+
+ {
+ showInitial ($q, $fm->localise('CUSTOMDNS_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+ }
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+# my $dns = $q->param ('dns');
+
+ my $dom=$domaindb->get($domainName);
+
+ $dom->set_prop('dns' => $dns);
+ $dom->set_prop('login' => $domainLogin);
+ $dom->set_prop('password' => $domainPassword);
+ $dom->set_prop('mx' => $domainMX);
+ $dom->set_prop('customdns' => $customDNS);
+ $dom->set_prop('customprotocol' => $customPROTOCOL);
+
+ $domaindb->reload();
+
+ system ("/sbin/e-smith/signal-event", "domain-modify");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_MODIFIED',
+ {domainName => $domainName,dns => $fm->localise($dns)}));
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub deleteDomain ($)
+{
+ my ($q) = @_;
+
+ esmith::cgi::genHeaderNonCacheable ($q, \%conf, $fm->localise('REMOVE_TITLE'));
+
+ print $q->startform (-method => 'POST', -action => $q->url (-absolute => 1));
+
+ my $domain = $q->param ('domain');
+ my $value = $domaindb->get($domain);
+ my $evalue = $domaindb->get($domain);
+
+ if ($value)
+ {
+ my %properties = $value->props;
+ my $type = $properties{'type'};
+ my $domainDesc = $properties{'Description'};
+ my %eprops = $evalue->props;
+ my $dns=$fm->localise($eprops{'dns'});
+
+ print $q->p($fm->localise('REMOVE_DESCRIPTION',
+ {domain => $domain,
+ domainDesc => $domainDesc,
+ dns => $dns } ));
+
+ print $q->submit (-name => 'action', -value => $fm->localise('REMOVE'));
+ print $q->hidden (-name => 'domain', -override => 1, -default => $domain);
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'performDelete');
+ }
+
+ print $q->endform;
+ esmith::cgi::genFooter ($q);
+ return;
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub performDeleteDomain ($)
+{
+ my ($q) = @_;
+
+ #------------------------------------------------------------
+ # Attempt to delete domain
+ #------------------------------------------------------------
+
+ my $domain = $q->param ('domain');
+
+ if ($domain =~ /^([a-zA-Z0-9\-\.]+)$/)
+ {
+ $domain = $1;
+ }
+ else
+ {
+ showInitial ($q, $fm->localise('ERROR_WHILE_REMOVING_DOMAIN',
+ {domain => $domain}));
+ return;
+ }
+
+ my $value = $domaindb->get($domain);
+ unless ($value)
+ {
+ showInitial ($q, $fm->localise('NONEXISTENT_DOMAIN_ERROR',
+ {domainName => $domain}));
+ return;
+ }
+
+ my %properties = $value->props;
+ my $type = $properties{'type'};
+ if ($type ne 'domain')
+ {
+ showInitial ($q, $fm->localise('NONEXISTENT_DOMAIN_ERROR',
+ {domainName => $domain}));
+ return;
+ }
+
+ my $evalue = $domaindb->get($domain);
+ my %props = $evalue->props;
+ my $dns = $fm->localise($props{'dns'});
+
+ $evalue->set_prop('dns' => '');
+ $evalue->set_prop('login' => '');
+ $evalue->set_prop('password' => '');
+ $evalue->set_prop('customdns' => '');
+ $evalue->set_prop('customprotocol' => '');
+
+ $domaindb->reload();
+
+ system ("/sbin/e-smith/signal-event", "domain-delete");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_DELETED',
+ {domain => $domain, dns => $dns}));
+}
+
+#######################################################################
+# create a free publish
+#
+sub ddcreateDomain ($)
+{
+ my ($q) = @_;
+
+ esmith::cgi::genHeaderNonCacheable
+ ($q, \%conf, $fm->localise('CREATE_TITLE'));
+
+ print $q->startform (-method => 'POST',
+ -action => $q->url (-absolute => 1));
+ print $q->h3 ($fm->localise('CUSTOM_DESCRIPTION'));
+ print $q->p;
+ print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('DOMAIN_NAME_LABEL'),
+ "domainName","")),
+
+ $q->Tr (esmith::cgi::genNameValueRow($q,$fm->localise('DESCRIPTION_LABEL'),
+ "desc","")),
+
+ $q->Tr (esmith::cgi::genCell ($q, $fm->localise('SERVERS_LABEL')),
+ genServer($q, '')),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('CUSTOMDNS_LABEL'),
+ "customdns",'')),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('CUSTOM_PROTOCOL_LABEL'),
+ "customprotocol",'')),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('NAME_LABEL'),
+ "login","")),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('PASSWORD_LABEL'),
+ "password","")),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('MX'),
+ "mx","")),
+
+ esmith::cgi::genButtonRow ( $q,
+ $q->submit (-name => 'action',
+ -value => $fm->localise('CREATE'))));
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'ddperformCreate');
+
+ print $q->endform;
+
+ esmith::cgi::genFooter ($q);
+ return;
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub ddperformCreateDomain ($)
+{
+ my ($q) = @_;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $q->param ('domainName');
+ if ($domainName =~ /^([a-zA-Z0-9\-\.]+)$/) {
+ $domainName = $1;
+ } else {
+ showInitial ($q, $fm->localise('DOMAIN_NAME_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+###############################################
+ foreach my $domain ($domaindb->get_all_by_prop(type=>'domain'))
+ {
+ my $key = $domain->key;
+ if ( $key eq $domainName ) {
+ showInitial ($q, $fm->localise('DOMAIN_NAME_ALREADY_EXIST',
+ {domainName => $domainName}));
+ return;
+ }
+ }
+
+ foreach my $domain ($edb->get_all_by_prop(type=>'ddhost'))
+ {
+ my $key = $domain->key;
+ if ( $key eq $domainName ) {
+ showInitial ($q, $fm->localise('DOMAIN_NAME_ALREADY_EXIST',
+ {domainName => $domainName}));
+ return;
+ }
+ }
+
+#############################################
+
+ my $domainDesc = $q->param ('desc');
+ my $domainLogin = $q->param ('login');
+ if ($domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/) {
+ $domainLogin = $1;
+ } else {
+ showInitial ($q, $fm->localise('DOMAIN_LOGIN_VALIDATION_ERROR',
+ {domainLogin => $domainLogin}));
+ return;
+ }
+
+ my $domainPassword = $q->param ('password');
+ if ($domainPassword =~ /^(.*)$/) {
+ $domainPassword = $1;
+ } else {
+ showInitial ($q, $fm->localise('DOMAIN_PASSWORD_VALIDATION_ERROR',
+ {domainPassword => $domainPassword}));
+ return;
+ }
+
+ my $domainMX = $q->param ('mx');
+##Custom dns retrieve
+ my $customDNS = $q->param('customdns');
+ my $customPROTOCOL = $q->param('customprotocol');
+
+ my $dns = $q->param ('dns');
+ if ($dns eq 'CUSTOMDNS')
+ {
+ if ($customDNS =~ /^([a-zA-Z0-9\-\.]+)$/)
+ {
+ $customDNS = $1;
+ }
+ else
+
+ {
+ showInitial ($q, $fm->localise('CUSTOMDNS_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+ }
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+# my $dns = $q->param ('dns');
+
+ my %properties = ();
+ $properties{'type'} = 'ddhost';
+ $properties{'dns'} = $dns;
+ $properties{'login'} = $domainLogin;
+ $properties{'password'} = $domainPassword;
+ $properties{'mx'} = $domainMX;
+ $properties{'desc'} = $domainDesc;
+ $properties{'customdns'} = $customDNS;
+ $properties{'customprotocol'} = $customPROTOCOL;
+ $edb->new_record($domainName, \%properties);
+
+ system ("/sbin/e-smith/signal-event", "domain-create");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_CREATED',
+ {domainName => $domainName,dns => $fm->localise($dns) }));
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub ddmodifyDomain ($)
+{
+ my ($q) = @_;
+
+ esmith::cgi::genHeaderNonCacheable ($q, \%conf,
+ $fm->localise('MODIFY_TITLE'));
+
+ print $q->startform (-method => 'POST', -action => $q->url (-absolute => 1));
+
+ my $domain = $q->param ('domain');
+ my $evalue = $edb->get($domain);
+
+ if (defined $evalue)
+ {
+ my %eprops = $evalue->props;
+
+ print $q->h3 ($fm->localise('CUSTOM_DESCRIPTION'));
+ print $q->p;
+
+ print $q->table ({border => 0, cellspacing => 0, cellpadding => 4},
+ $q->Tr (esmith::cgi::genCell ($q, $fm->localise('DOMAIN_NAME_LABEL')),
+ esmith::cgi::genCell ($q, $domain)),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q, $fm->localise('DESCRIPTION_LABEL'),
+ "desc",
+ $eprops{'desc'})),
+
+ $q->Tr (esmith::cgi::genCell ($q, $fm->localise('SERVERS_LABEL')),
+ genServer($q, $eprops{'dns'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('CUSTOMDNS_LABEL'),
+ "customdns",
+ $eprops{'customdns'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('CUSTOM_PROTOCOL_LABEL'),
+ "customprotocol",
+ $eprops{'customprotocol'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('NAME_LABEL'),
+ "login",
+ $eprops{'login'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('PASSWORD_LABEL'),
+ "password",
+ $eprops{'password'})),
+
+ $q->Tr (esmith::cgi::genNameValueRow ($q,$fm->localise('MX'),
+ "mx",$eprops{'mx'})),
+
+ esmith::cgi::genButtonRow ($q,
+ $q->submit (-name => 'action',
+ -value => $fm->localise('MODIFY')))
+ );
+
+ print $q->hidden (-name => 'domainName',
+ -override => 1,
+ -default => $domain);
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'ddperformModify');
+
+ } else {
+ showInitial ($q, $fm->localise('ERROR_ON_EXTRA_DATABASE',
+ {domainName => $domain }));
+ return;
+ }
+
+ print $q->endform;
+ esmith::cgi::genFooter ($q);
+ return;
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub ddperformModifyDomain ($)
+{
+ my ($q) = @_;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $q->param ('domainName');
+ if ($domainName =~ /^([a-zA-Z0-9\-\.]+)$/) {
+ $domainName = $1;
+ } else {
+ showInitial ($q, $fm->localise('DOMAIN_NAME_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+
+ my $domainLogin = $q->param ('login');
+ if ($domainLogin =~ /^([\-\'\w][\-\'\w\s\.\@]*)$/) {
+ $domainLogin = $1;
+ } else {
+ showInitial ($q, $fm->localise('DOMAIN_LOGIN_VALIDATION_ERROR',
+ {domainLogin => $domainLogin}));
+ return;
+ }
+
+ my $domainPassword = $q->param ('password');
+ if ($domainPassword =~ /^(.*)$/) {
+ $domainPassword = $1;
+ } else {
+ showInitial ($q, $fm->localise('DOMAIN_PASSWORD_VALIDATION_ERROR',
+ {domainPassword => $domainPassword}));
+ return;
+ }
+
+ my $domainMX = $q->param ('mx');
+ my $desc = $q->param ('desc');
+ my $customDNS = $q->param('customdns');
+ my $customPROTOCOL = $q->param('customprotocol');
+
+ my $dns = $q->param ('dns');
+
+ if ($dns eq 'CUSTOMDNS')
+ {
+ if ($customDNS =~ /^([a-zA-Z0-9\-\.]+)$/)
+ {
+ $customDNS = $1;
+ }
+ else
+
+ {
+ showInitial ($q, $fm->localise('CUSTOMDNS_VALIDATION_ERROR',
+ {domainName => $domainName}));
+ return;
+ }
+ }
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+# my $dns = $q->param ('dns');
+
+ my $dom=$edb->get($domainName);
+
+ $dom->set_prop('desc' => $desc);
+ $dom->set_prop('dns' => $dns);
+ $dom->set_prop('login' => $domainLogin);
+ $dom->set_prop('password' => $domainPassword);
+ $dom->set_prop('mx' => $domainMX);
+ $dom->set_prop('customdns' => $customDNS);
+ $dom->set_prop('customprotocol' => $customPROTOCOL);
+
+ $edb->reload();
+
+ system ("/sbin/e-smith/signal-event", "domain-modify");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_MODIFIED',
+ {domainName => $domainName,dns => $fm->localise($dns)}));
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub dddeleteDomain ($)
+{
+ my ($q) = @_;
+
+ esmith::cgi::genHeaderNonCacheable ($q, \%conf, $fm->localise('REMOVE_TITLE'));
+
+ print $q->startform (-method => 'POST', -action => $q->url (-absolute => 1));
+
+ my $domain = $q->param ('domain');
+ my $evalue = $edb->get($domain);
+
+ if (defined $evalue)
+ {
+ my %eprops = $evalue->props;
+ my $domainDesc = $eprops{'desc'};
+ my $dns = $fm->localise($eprops{'dns'});
+
+ print $q->p($fm->localise('REMOVE_DESCRIPTION',
+ {domain => $domain,
+ domainDesc => $domainDesc,
+ dns => $dns } ));
+
+ print $q->submit (-name => 'action', -value => $fm->localise('REMOVE'));
+ print $q->hidden (-name => 'domain', -override => 1, -default => $domain);
+
+ print $q->hidden (-name => 'state',
+ -override => 1,
+ -default => 'ddperformDelete');
+ } else {
+ showInitial ($q, $fm->localise('ERROR_ON_EXTRA_DATABASE',
+ {domainName => $domain }));
+ return;
+ }
+
+ print $q->endform;
+ esmith::cgi::genFooter ($q);
+ return;
+}
+
+#------------------------------------------------------------
+#
+#------------------------------------------------------------
+
+sub ddperformDeleteDomain ($)
+{
+ my ($q) = @_;
+
+ #------------------------------------------------------------
+ # Attempt to delete domain
+ #------------------------------------------------------------
+
+ my $domain = $q->param ('domain');
+
+ if ($domain =~ /^([a-zA-Z0-9\-\.]+)$/) {
+ $domain = $1;
+ } else {
+ showInitial ($q, $fm->localise('ERROR_WHILE_REMOVING_DOMAIN',
+ {domain => $domain}));
+ return;
+ }
+
+ my $evalue = $edb->get($domain);
+ unless ($evalue)
+ {
+ showInitial ($q, $fm->localise('NONEXISTENT_DOMAIN_ERROR',
+ {domainName => $domain}));
+ return;
+ }
+
+ my %properties = $evalue->props;
+ my $type = $properties{'type'};
+ my $dns = $fm->localise($properties{'dns'});
+
+ if ($type ne 'ddhost')
+ {
+ showInitial ($q, $fm->localise('NONEXISTENT_DOMAIN_ERROR',
+ {domainName => $domain}));
+ return;
+ }
+
+# $evalue = $edb->get($domain);
+ $evalue->delete;
+ $edb->reload();
+
+ system ("/sbin/e-smith/signal-event", "domain-delete");
+
+ showInitial ($q, $fm->localise('SUCCESSFULLY_DELETED',
+ {domain => $domain, dns => $dns}));
+}
+
+#######################################################################
+
+__DATA__
+
diff --git a/root/etc/ppp/ddclient_ip-up.local b/root/etc/ppp/ddclient_ip-up.local
new file mode 100755
index 0000000..d55e5e5
--- /dev/null
+++ b/root/etc/ppp/ddclient_ip-up.local
@@ -0,0 +1,40 @@
+#!/bin/sh
+######################################################################
+## $Header: /home/paul/src/ddclient/RCS/sample-etc_ppp_ip-up.local,v 3.6 2002/11/03 20:20:16 root Exp $
+######################################################################
+##
+## On my host, pppd invokes this script with args:
+## /etc/ppp/ip-up.local ppp0 /dev/pts/1 115200 192.168.2.1 192.168.2.3
+##
+## From the manual page for my pppd, these aguments are:
+## scriptname interface-name tty-device speed local-IP-address remote-IP-address ipparam
+##
+## Some people have reported that their pppd returns their
+## local-IP-address as $3. If that's also the case for you,
+## you may need to change the $4 below to $3. This may not
+## be necessary if you pppd also passes the local-ip-address
+## in the environment as either PPP_LOCAL or IPLOCAL.
+##
+######################################################################
+PATH=/usr/sbin:${PATH}
+IP=
+IP=${IP:-$PPP_LOCAL}
+IP=${IP:-$IPLOCAL}
+IP=${IP:-$4}
+
+## update the DNS server unless the IP address is a private address
+## that may be used as a internal LAN address (or PPtP tunnel).
+
+logger -t ddclient $0 $*
+case "$IP" in
+10.*) ;;
+172.1[6-9].* | 172.2[0-9].* | 172.3[0-1].*) ;;
+192.168.*) ;;
+"") logger -t ddclient No local IP given so cannot update
+ ;;
+*) (
+ sleep 5
+ ddclient -daemon=0 -syslog -use=web -if=$1 >/dev/null 2>&1
+ ) &
+ ;;
+esac
diff --git a/root/usr/lib/systemd/system/ddclient.service.d/50koozali.conf b/root/usr/lib/systemd/system/ddclient.service.d/50koozali.conf
new file mode 100644
index 0000000..891f655
--- /dev/null
+++ b/root/usr/lib/systemd/system/ddclient.service.d/50koozali.conf
@@ -0,0 +1,5 @@
+
+[Service]
+
+ExecStart=
+ExecStart=/usr/sbin/ddclient -file /etc/ddclient/ddclient.conf -debug -verbose -quiet -syslog
diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm
new file mode 100644
index 0000000..30fab82
--- /dev/null
+++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Ddclient.pm
@@ -0,0 +1,1015 @@
+package SrvMngr::Controller::Ddclient;
+
+#----------------------------------------------------------------------
+# heading : Network
+# description : Dynamic Clients
+# navigation : 6000 450
+#
+# name : ddclient, method : get, url : /ddclient, ctlact : Ddclient#main
+# name : ddclient3, method : post, url : /ddclient3, ctlact : Ddclient#do_updateparams
+# name : ddclient1, method : get, url : /ddclient1, ctlact : Ddclient#do_summary_domain
+# name : ddclient2, method : get, url : /ddclient2, ctlact : Ddclient#do_summary_custom
+# name : ddclient4, method : post, url : /ddclient4, ctlact : Ddclient#do_delete_domain
+# name : ddclient5, method : get, url : /ddclient5, ctlact : Ddclient#do_update_domain
+# name : ddclient6, method : get, url : /ddclient6, ctlact : Ddclient#do_create_custom
+# name : ddclient7, method : post, url : /ddclient7, ctlact : Ddclient#do_create_custom_actual
+# name : ddclient8, method : post, url : /ddclient8, ctlact : Ddclient#do_update_domain
+#
+# routes : end
+#
+# Documentation: https://wiki.contribs.org/Ddclient
+#
+#----------------------------------------------------------------------
+#
+# ddclient 3.9.1 Supportted services
+#
+#DynDNS.com - See http://www.dyndns.com for details on obtaining a free account.
+#Hammernode - See http://www.hn.org for details on obtaining a free account.
+#Zoneedit - See http://www.zoneedit.com for details.
+#EasyDNS - See http://www.easydns.com for details.
+#NameCheap - See http://www.namecheap.com for details
+#DslReports - See http://www.dslreports.com for details
+#Sitelutions - See http://www.sitelutions.com for details
+#Loopia - See http://www.loopia.se for details
+#Noip - See http://www.noip.com/ for details
+#Freedns - See http://freedns.afraid.org/ for details
+#ChangeIP - See http://www.changeip.com/ for details
+#dtdns - See http://www.dtdns.com/ for details
+#nsupdate - See nsupdate(1) and ddns-confgen(8) for details
+#CloudFlare - See https://www.cloudflare.com/ for details
+#Google - See http://www.google.com/domains for details
+#Duckdns - See https://duckdns.org/ for details
+#Freemyip - See https://freemyip.com for details
+#woima.fi - See https://woima.fi/ for details
+#Yandex - See https://domain.yandex.com/ for details
+#DNS Made Easy - See https://dnsmadeeasy.com/ for details
+#DonDominio - See https://www.dondominio.com for details
+#NearlyFreeSpeech.net - See https://www.nearlyfreespeech.net/services/dns for details
+#OVH - See https://www.ovh.com for details
+#ClouDNS - See https://www.cloudns.net
+
+# ddclient 3.11.1 Supported Services
+# 1984:https://kb.1984hosting.com/doku.php?id=freedns
+# changeip: https://changeip.com
+# cloudflare: https://cloudflare.com
+# cloudns: https://cloudns.com
+# digitalocean: https://digitalocean.com
+# dinahosting: https://dinahosting.com
+# dnsexit: https://dnsexit.com/
+# dnsmadeeasy: https://dnsmadeeasy.com
+# domeneshop: https://domeneshop.com
+# dondominio: https://dondominio.com
+# dslreports: https://www.dslreports.com/
+# duckdns: https://duckdns.com
+# dyndns1:https://account.dyn.com/
+# dyndns2: https://account.dyn.com/
+# easydns: https://easydns.com
+# enom: https://enom.com
+# freedns: http://freedns.com
+# freemyip: https://freemyip.com
+# gandi: https://gandi.com
+# godaddy: https://godaddy.com
+# googledomains: https://googledomains.com
+# hetzner: https://hetzner.com
+# infomaniak: https://infomaniak.com
+# keysystems: https://keysystems.com
+# mythicdyn: https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns
+# namecheap: https://namecheap.com
+# nfsn: http://nfsn.com
+# njalla: https://njalla.com
+# noip: https://noip.com
+# nsupdate: http://nsupdate.com
+# ovh: https://ovh.com
+# porkbun: https://porkbun.com
+# regfishde: Cannot find link for this one
+# sitelutions: https://sitelutions.com
+# woima: http://woima.com
+# yandex: https://yandex.com
+# zoneedit: https://www.zoneedit.com/dynamic-dns/
+
+use strict;
+use warnings;
+use Mojo::Base 'Mojolicious::Controller';
+
+use constant FALSE => 0;
+use constant TRUE => 1;
+
+use Locale::gettext;
+use SrvMngr::I18N;
+use SrvMngr qw(theme_list init_session);
+
+use Data::Dumper;
+use esmith::util;
+use esmith::HostsDB;
+use esmith::AccountsDB;
+
+our $db = esmith::ConfigDB->open();
+our $adb = esmith::AccountsDB->open();
+
+our $domaindb = esmith::ConfigDB->open('/home/e-smith/db/domains')
+ or die "Unable to open domains db";
+our $edb;
+$edb = esmith::ConfigDB->open('/home/e-smith/db/ddclient')
+ or $edb = esmith::ConfigDB->create('/home/e-smith/db/ddclient');
+
+my %ddc_datas = ();
+
+sub get_devices_names {
+ #
+ # Router/Firewall devices from which it can get ip address
+ #
+ my $devices = ( [
+ [ '2Wire 1701HG Gateway' => '2wire' ],
+ [ '3com 3c886a 56k Lan Modem' => '3com-3c886a' ],
+ [ '3com OfficeConnect Remote 812' => '3com-oc-remote812' ],
+ [ 'Alcatel Speed Touch 510' => 'alcatel-510' ],
+ [ 'Alcatel/Thomson SpeedTouch 530' => 'alcatel-530' ],
+ [ 'Alcatel Speed Touch Pro' => 'alcatel-stp' ],
+ [ 'Allnet 1298' => 'allnet-1298' ],
+ [ 'Cayman 3220-H DSL' => 'cayman-3220h' ],
+ [ 'D-Link DI-524' => 'dlink-524' ],
+ [ 'D-Link DI-604' => 'dlink-604' ],
+ [ 'dlink-614' => 'D-Link DI-614+' ],
+ [ 'e-tech' => 'E-tech Router' ],
+ [ 'elsa-lancom-dsl10' => 'ELSA LanCom DSL/10 DSL FW' ],
+ [ 'elsa-lancom-dsl10-ch01' => 'ELSA LanCom DSL/10 DSL FW (isdn ch01)' ],
+ [ 'elsa-lancom-dsl10-ch02' => 'ELSA LanCom DSL/10 DSL FW (isdn ch01)' ],
+ [ 'linksys' => 'Linksys FW' ],
+ [ 'linksys-rv042-wan1' => 'Linksys RV042 Dual Homed Router WAN Port 2' ],
+ [ 'linksys-rv042-wan2' => 'Linksys RV042 Dual Homed Router WAN Port 2' ],
+ [ 'linksys-ver2' => 'Linksys FW version 2' ],
+ [ 'linksys-ver3' => 'Linksys FW version 3' ],
+ [ 'linksys-wcg200' => 'Linksys WCG200 FW' ],
+ [ 'linksys-wrt854g' => 'Linksys WRT854G FW' ],
+ [ 'maxgate-ugate3x00' => 'MaxGate UGATE-3x00 FW' ],
+ [ 'netcomm-nb3' => 'NetComm NB3' ],
+ [ 'netgear-dg834g' => 'netgear-dg834g' ],
+ [ 'netgear-rp614' => 'Netgear RP614 FW' ],
+ [ 'netgear-rt3xx' => 'Netgear FW' ],
+ [ 'netgear-wgt624' => 'Netgear WGT624' ],
+ [ 'netgear-wpn824' => 'Netgear WPN824 FW' ],
+ [ 'netopia-r910' => 'Netopia R910 FW' ],
+ [ 'olitec-SX200' => 'olitec-SX200' ],
+ [ 'rtp300' => 'Linksys RTP300' ],
+ [ 'siemens-ss4200' => 'Siemens SpeedStream 4200' ],
+ [ 'sitecom-dc202' => 'Sitecom DC-202 FW' ],
+ [ 'smc-barricade' => 'SMC Barricade FW' ],
+ [ 'smc-barricade-7004vbr' => 'SMC Barricade FW (7004VBR model config)' ],
+ [ 'smc-barricade-7401bra' => 'SMC Barricade 7401BRA FW' ],
+ [ 'smc-barricade-alt' => 'SMC Barricade FW (alternate config)' ],
+ [ 'sohoware-nbg800' => 'SOHOWare BroadGuard NBG800' ],
+ [ 'sveasoft' => 'Sveasoft WRT54G/WRT54GS' ],
+ [ 'thomson-st536v6' => 'Thomson SpeedTouch 536v6' ],
+ [ 'thomson-tg782' => 'Thomson/Technicolor TG782' ],
+ [ 'vigor-2200usb' => 'Vigor 2200 USB' ],
+ [ 'watchguard-edge-x' => 'Watchguard Edge X FW' ],
+ [ 'watchguard-soho' => 'Watchguard SOHO FW' ],
+ [ 'westell-6100' => 'Westell C90-610015-06 DSL Router' ],
+ [ 'xsense-aero' => 'Xsense Aero' ]
+ ] );
+ return $devices;
+
+
+ # Automatic loading of the devices from the ddclient program - I can't get this to pass the results successfully to the template
+ #my $output = `ddclient -list-devices`; # Run ddclient command to get devices output
+ #my @lines;
+ #foreach my $line (split /\n/, $output) {
+ #$line =~ s/\s+//; # Remove leading whitespace
+ #my ($field1, $field2) = split(' ', $line, 2);
+ #push @lines, [$field2, $field1];
+ #}
+ #return \@lines; # Return a reference to the lines array
+}
+
+sub get_web_services_names {
+ #
+ # Web Services from which it can get ip address
+ #
+ my $webservices = ( [
+ [ 'dyndns-http://checkip.dyndns.org/' => 'dyndns' ],
+ [ 'freedns-https://freedns.afraid.org/dynamic/check.php' => 'freedns' ],
+ [ 'googledomains-https://domains.google.com/checkip' => 'googledomains' ],
+ [ 'he-https://checkip.dns.he.net/' => 'he' ],
+ [ 'ip4only.me-https://ip4only.me/api/' => 'ip4only.me' ],
+ [ 'ip6only.me-https://ip6only.me/api/' => 'ip6only.me' ],
+ [ 'ipify-ipv4-https://api.ipify.org/' => 'ipify-ipv4' ],
+ [ 'ipify-ipv6-https://api6.ipify.org/' => 'ipify-ipv6' ],
+ [ 'loopia:-https://dns.loopia.se/checkip/checkip.php' => 'loopia' ],
+ [ 'myonlineportal-https://myonlineportal.net/checkip' => 'myonlineportal' ],
+ [ 'noip-ipv4-http://ip1.dynupdate.no-ip.com/' => 'noip-ipv4' ],
+ [ 'noip-ipv6-http://ip1.dynupdate6.no-ip.com/' => 'noip-ipv6' ],
+ [ 'nsupdate.info-ipv4-https://ipv4.nsupdate.info/myip' => 'nsupdate.info-ipv4' ],
+ [ 'nsupdate.info-ipv6-https://ipv6.nsupdate.info/myip' => 'nsupdate.info-ipv6' ],
+ [ 'zoneedit-https://dynamic.zoneedit.com/checkip.html' => 'zoneedit' ]
+ ] );
+ return $webservices
+
+ #my $output = `ddclient -list-web-services`; # Run ddclient command to get web services output
+ #my @lines;
+ #foreach my $line (split /\n/, $output) {
+ #$line =~ s/\s+//; # Remove leading whitespace
+ #my ($field1, $field2) = split(' ', $line, 2);
+ #push @lines, [$field2, $field1];
+ #}
+ #return \@lines; # Return a reference to the lines array
+}
+
+sub get_dns_labels {
+ #
+ # dns service names
+ # Return array with translated results as well.
+ #
+ # Note that "new" ones willl not have any description / translation, this can be added to /usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient
+ #
+ my $c = shift;
+ my $dnsservices = ( [
+ [ $c->l('1984') => '1984' ],
+ [ $c->l('changeip') => 'changeip' ],
+ [ $c->l('cloudflare') => 'cloudflare' ],
+ [ $c->l('cloudns') => 'cloudns' ],
+ [ $c->l('digitalocean') => 'digitalocean' ],
+ [ $c->l('dinahosting') => 'dinahosting' ],
+ [ $c->l('dnsexit') => 'dnsexit' ],
+ [ $c->l('dnsmadeeasy') => 'dnsmadeeasy' ],
+ [ $c->l('domeneshop') => 'domeneshop' ],
+ [ $c->l('dondominio') => 'dondominio' ],
+ [ $c->l('dslreports') => 'dslreports' ],
+ [ $c->l('duckdns') => 'duckdns' ],
+ [ $c->l('dyndns1') => 'dyndns1' ],
+ [ $c->l('dyndns2') => 'dyndns2' ],
+ [ $c->l('easydns') => 'easydns' ],
+ [ $c->l('enom') => 'enom' ],
+ [ $c->l('freedns') => 'freedns' ],
+ [ $c->l('freemyip') => 'freemyip' ],
+ [ $c->l('gandi') => 'gandi' ],
+ [ $c->l('godaddy') => 'godaddy' ],
+ [ $c->l('googledomains') => 'googledomains' ],
+ [ $c->l('hetzner') => 'hetzner' ],
+ [ $c->l('infomaniak') => 'infomaniak' ],
+ [ $c->l('keysystems') => 'keysystems' ],
+ [ $c->l('mythicdyn') => 'mythicdyn' ],
+ [ $c->l('namecheap') => 'namecheap' ],
+ [ $c->l('nfsn') => 'nfsn' ],
+ [ $c->l('njalla') => 'njalla' ],
+ [ $c->l('noip') => 'noip' ],
+ [ $c->l('nsupdate') => 'nsupdate' ],
+ [ $c->l('ovh') => 'ovh' ],
+ [ $c->l('porkbun') => 'porkbun' ],
+ [ $c->l('regfishde') => 'regfishde' ],
+ [ $c->l('sitelutions') => 'sitelutions' ],
+ [ $c->l('woima') => 'woima' ],
+ [ $c->l('yandex') => 'yandex' ],
+ [ $c->l('zoneedit') => 'zoneedit' ]
+ ] );
+ return $dnsservices;
+
+ #my $output = `ddclient -list-protocols`; # Run ddclient command and capture the output
+ #my @protocols;
+ #foreach my $line (split /\n/, $output) {
+ #my ($protocol) = $line =~ /\s*(\S+)/;
+ #next unless $protocol; # Skip if protocol is empty or contains only whitespace
+ #my $custom_value = "$protocol.$c->l($protocol)"; # Additional column value using $c->l(protocol)
+ #push @protocols, [$custom_value, $protocol];
+ #}
+ #return \@protocols; # Return a reference to the protocols array
+}
+
+sub main {
+ #
+ # Initial page - full summary of parameters etc
+ # Initial para from the Wiki.
+ #
+ my $c = shift;
+ $ddc_datas{"first"} = 'DESCRIPTION';
+ do_display( $c, %ddc_datas );
+}
+
+sub do_display {
+ #
+ # Front Summary page
+ #
+ my $c = shift;
+ $c->app->log->info( $c->log_req );
+
+ my $title = $c->l('FORM_TITLE');
+ my $modul = '';
+ $ddc_datas{trt} = 'LIST';
+ my $trt = "LIST";
+
+ $ddc_datas{"params"} = get_params($c);
+ my @domains = get_domain_table($c);
+ my @FreeDomains = get_custom_table($c);
+
+ my $emptydom = ( scalar @domains == 0 );
+ my $emptycust = ( scalar @FreeDomains == 0 );
+
+ my $Labels = (
+ [
+ [ $c->l('SME external Interface') => "smeIF" ],
+ [ $c->l('SME configuration DB') => 'smeCMD' ],
+ [ $c->l('web') => 'web' ],
+ [ $c->l('Router/Firewall') => 'router' ],
+ [ $c->l('Interface') => 'if' ],
+ [ $c->l('IP') => 'ip' ],
+ [ $c->l('Command') => 'cmdv4' ]
+ ]
+ );
+
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ ddc_datas => \%ddc_datas,
+ domains => \@domains,
+ freedomains => \@FreeDomains,
+ methodlabels => $Labels,
+ dnslabels => get_dns_labels($c),
+ devices => get_devices_names($c),
+ webservices => get_web_services_names($c),
+ emptydom => $emptydom,
+ emptycust => $emptycust
+ );
+ $ddc_datas{'trt'} = $trt;
+ $c->stash( title => $title, modul => $modul, ddc_datas => \%ddc_datas );
+ $c->render( template => 'ddclient' );
+
+}
+
+sub do_updateparams {
+ #
+ # Called to update the parameters relating to the Ip address of the server
+ #
+ my $c = shift;
+ $ddc_datas{"first"} = '';
+ $ddc_datas{"success"} = pushParams($c);
+ do_display($c);
+}
+
+sub do_update_domain {
+ #
+ #Called to update/delete the ddclient for a specific inbuilt domain
+ #
+ my $c = shift;
+ my $title = $c->l("MODIFY_TITLE");
+ my $retmsg;
+ if ( $c->param("Route") eq "ddclient2" ) { #Route is hidden field
+ $retmsg = performModifyCustom($c);
+ }
+ else {
+ $retmsg = performModifyDomain($c);
+ }
+ $ddc_datas{"first"} = '';
+ if ( $retmsg eq "ok" ) {
+ my $dns = $c->param('dns');
+ my $domain = $c->param('domainname');
+ $ddc_datas{"success"} = $c->l( "SUCCESSFULLY_MODIFIED", $domain,
+ $c->l( '' . $dns ) );
+ do_display( $c, %ddc_datas );
+ }
+ else {
+ $ddc_datas{"error"} = $retmsg;
+
+ #Back to input panel to correct error
+ do_summary_domain($c);
+ }
+}
+
+sub do_create_custom {
+ #
+ # Create custom domain
+ #
+ my $c = shift;
+ my $title = $c->l("CREATE_TITLE");
+ my $modul = '';
+ my $trt = "NEW";
+
+ $ddc_datas{trt} = $trt;
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ ddc_datas => \%ddc_datas,
+ dnslabels => get_dns_labels($c),
+ devices => get_devices_names($c),
+ webservices => get_web_services_names($c)
+ );
+ $c->render( template => 'ddclient' );
+}
+
+sub do_create_custom_actual {
+ my $c = shift;
+ $ddc_datas{"first"} = '';
+ my $retmsg = performCreateCustom($c);
+ if ( $retmsg eq "ok" ) {
+ my $dns = $c->param('dns');
+ my $domain = $c->param('domainname');
+ $ddc_datas{"success"} = $c->l( "SUCCESSFULLY_DELETED", $domain,
+ $c->l( '' . $dns ) );
+ do_display( $c, %ddc_datas );
+ }
+ else {
+ $ddc_datas{"error"} = $retmsg;
+
+ #Back to input panel to correct error
+ do_create_custom($c);
+ }
+
+}
+
+sub do_summary_custom {
+ #
+ # Display delete or modify panel for custom domain
+ #
+ my $c = shift;
+ my $title = $c->l("MODIFY_TITLE");
+ my $modul = '';
+ my $trt = $c->param("trt");
+
+ #Extract domain stuff from DB
+ my @results
+ = get_custom_table( $c, $c->param("Domain") ); #Returns just one row
+
+ $ddc_datas{"Domain_details"} = $results[0];
+
+ $ddc_datas{'trt'} = $trt;
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ ddc_datas => \%ddc_datas,
+ dnslabels => get_dns_labels($c),
+ devices => get_devices_names($c),
+ webservices => get_web_services_names($c)
+ );
+ $c->render( template => 'ddclient' );
+}
+
+sub do_summary_domain {
+ #
+ # Display delete or modify panel for inbuilt domain
+ # param trt = MOD or DEL
+ #
+ my $c = shift;
+ my $title = $c->l("MODIFY_TITLE");
+ my $modul = '';
+ my $trt = $c->param("trt");
+
+ #Extract domain stuff from DB
+ my @results
+ = get_domain_table( $c, $c->param("Domain") ); #Returns just one row
+
+ $ddc_datas{"Domain_details"} = $results[0];
+ $ddc_datas{'trt'} = $trt;
+ $c->stash(
+ title => $title,
+ modul => $modul,
+ ddc_datas => \%ddc_datas,
+ dnslabels => get_dns_labels($c),
+ devices => get_devices_names($c),
+ webservices => get_web_services_names($c)
+ );
+ $c->render( template => 'ddclient' );
+}
+
+sub do_delete_domain {
+ #
+ # Actually clearout the inbuilt domain
+ # Return to initial page with message at the top.
+ #
+ my $c = shift;
+ my $route = $c->current_route;
+ my $title = $c->l("REMOVE_TITLE");
+ my $modul = '';
+ my $retmsg = "";
+ my $domain = $c->param("Domain");
+ $ddc_datas{"first"} = '';
+
+ #Delete it and return to front summary panel - depends on route domain or custom
+ if ( $c->param("Route") eq "ddclient2" ) { #Route is hidden field
+ $retmsg = performDeleteCustom( $c, $domain );
+ }
+ else {
+ $retmsg = performDeleteDomain( $c, $domain );
+ }
+
+ if ( $retmsg eq "ok" ) {
+ $ddc_datas{"success"} = $c->l( "SUCCESSFULLY_DELETED", $domain,
+ $c->l( '' . $c->param("dns") ) );
+ }
+ else { $ddc_datas{"error"} = $retmsg; }
+ do_display( $c, %ddc_datas );
+
+}
+
+sub do_delete_custom {
+ #
+ # Actually delete the custom domain
+ # Return to initial page with message at the top.
+ #
+ my $c = shift;
+ my $route = $c->current_route;
+ my $title = $c->l("REMOVE_TITLE");
+ my $modul = '';
+ my $retmsg = "";
+ my $domain = $c->param("Domain");
+ $ddc_datas{"first"} = '';
+
+ #Delete it and return to front summary panel - depends on route domain or custom
+ $retmsg = performDeleteCustom( $c, $domain );
+ if ( $retmsg eq "ok" ) {
+ $ddc_datas{"success"} = $c->l( "SUCCESSFULLY_DELETED", $domain );
+ }
+ else { $ddc_datas{"error"} = $retmsg; }
+ do_display( $c, %ddc_datas );
+
+}
+
+sub get_domain_table {
+ #
+ # Return full table of all domains OR just the details for the specified one
+ #
+ my ( $c, $findDomain ) = @_; #$c and domain to find
+ $findDomain = FALSE if ( scalar(@_) <= 1 );
+ my $key;
+ my @virtualDomains = ();
+ foreach my $domain ( $domaindb->get_all_by_prop( type => 'domain' ) ) {
+ $key = $domain->key;
+ push( @virtualDomains, $key );
+ }
+ my $numDomains = @virtualDomains;
+ if ( $numDomains == 0 ) { return () }
+ else {
+ my $domain;
+ my @virtualDomains2d = ();
+
+ foreach $domain ( sort @virtualDomains ) {
+ my %properties = $domaindb->get($domain)->props;
+ my $test = $domaindb->get($domain) || '';
+ my %extraprops;
+ if ( $test ne '' ) {
+ %extraprops = $domaindb->get($domain)->props;
+ }
+
+ my $content;
+ if ( $properties{'Content'} eq 'wwwpublic' ) {
+ $content = $c->l('PRIMARY_SITE');
+ }
+ else {
+ $content = $c->l( 'CONTENT', $properties{'Content'} );
+ }
+
+ my $public;
+ my %thisrow;
+ if ( $test eq '' ) {
+ %thisrow = (
+ "Domain" => $domain,
+ "Description" => $properties{'Description'},
+ "Content" => $content,
+ "dns" => "",
+ "Publication" => "",
+ "customprotocol" => "",
+ "customdns" => "",
+ "login" => "",
+ "password" => "",
+ "mx" => ""
+ );
+ push( @virtualDomains2d, \%thisrow );
+ }
+ else {
+ %thisrow = (
+ "Domain" => $domain,
+ "Description" => $properties{'Description'},
+ "Content" => $content,
+ "dns" => $extraprops{'dns'},
+ "Publication" => $c->l( '' . $extraprops{'dns'} ),
+ "customprotocol" => $properties{"customprotocol"},
+ "customdns" => $properties{"customdns"},
+ "login" => $properties{"login"},
+ "password" => $properties{"password"},
+ "mx" => $properties{"mx"},
+ );
+ push( @virtualDomains2d, \%thisrow );
+
+ }
+ if ($findDomain) {
+ if ( $domain eq $findDomain ) {
+ @virtualDomains2d = (); #Just return matching one
+ push( @virtualDomains2d, \%thisrow );
+ last;
+ }
+ } #Found the one needed
+ }
+ return @virtualDomains2d; #Return the lot
+ }
+}
+
+sub get_custom_table {
+ #
+ # Return full table of all domains OR just the details for the specified one
+ #
+ my ( $c, $findDomain ) = @_; #$c and domain to find
+ $findDomain = FALSE if ( scalar(@_) <= 1 );
+ my $key;
+ my @FreeDomains = ();
+ foreach my $domain ( $edb->get_all_by_prop( type => 'ddhost' ) ) {
+ $key = $domain->key;
+ push( @FreeDomains, $key );
+ }
+ my $numDomains = @FreeDomains;
+ my @freedomains2d = ();
+ if ( $numDomains > 0 ) {
+ foreach my $domain ( sort @FreeDomains ) {
+ my $vals = $edb->get($domain);
+ my $content = $vals->prop('desc');
+ my $publish = $vals->prop('dns');
+ my %thisrow = (
+ 'Domain' => $domain,
+ "Description" => $content,
+ "dns" => $publish,
+ "Publication" => $c->l( '' . $publish )
+ , #msg ddc prefix for ddclient
+ "customprotocol" => $vals->prop("customprotocol"),
+ "customdns" => $vals->prop("customdns"),
+ "login" => $vals->prop("login"),
+ "password" => $vals->prop("password"),
+ "mx" => $vals->prop("mx"),
+
+ );
+
+ push( @freedomains2d, \%thisrow );
+ if ($findDomain) {
+ if ( $domain eq $findDomain ) {
+ @freedomains2d = (); #Just return matching one
+ push( @freedomains2d, \%thisrow );
+ last;
+ }
+ } #Found the one needed
+
+ }
+ }
+ return @freedomains2d;
+}
+
+sub get_params {
+ my $c = shift;
+ my $ddretrieve = $db->get('ddclient');
+ my $ExtIF = $db->get('ExternalInterface');
+ my $DeamonUpdate = $ddretrieve->prop('DeamonUpdate') || '300';
+ my $urlcheckip = $ddretrieve->prop('urlcheckip') || 'checkip.dyndns.org';
+ my $ssl = $ddretrieve->prop('SSL') || 'yes';
+ my $method = $ddretrieve->prop('method') || 'web';
+ my $Extinterface = $ddretrieve->prop('Extinterface') || '';
+ my $cmd = $ddretrieve->prop('cmd') || '';
+ my $forceIP = $ddretrieve->prop('ForceIP') || '';
+ my $fwlogin = $ddretrieve->prop('fwlogin') || '';
+ my $fwpassword = $ddretrieve->prop('fwpassword') || '';
+ my $res = {
+ "ssl" => $ssl,
+ "DeamonUpdate" => $DeamonUpdate,
+ "method" => $method,
+ "Extinterface" => $Extinterface,
+ "cmd" => $cmd,
+ "ForceIP" => $forceIP,
+ "urlcheckip" => $urlcheckip,
+ "FWlogin" => $fwlogin,
+ "FWpassword" => $fwpassword
+ };
+ return $res;
+}
+
+sub pushParams {
+ my $c = shift;
+ my $retrievedeamonupdate = $c->param('retrievedeamonupdate');
+ my $retrieverouter = $c->param('retrieverouter');
+ my $retrievewebservice = $c->param('retrievewebservice');
+ my $retrieveurlcheckip = $c->param('retrieveurlcheckip');
+ my $retrievessl = $c->param('retrievessl');
+ my $retrievemethod = $c->param('retrievemethod');
+ my $retrieveinterface = $c->param('retrieveinterface');
+ my $retrievecmd = $c->param('retrievecmd');
+ my $retrieveip = $c->param('retrieveip');
+ my $retrievefwlogin = $c->param('retrieverouterlogin');
+ my $retrievefwpassword = $c->param('retrieverouterpassword');
+
+ #print 1 / 0; #Crash
+
+ my $ddclient = $db->get('ddclient');
+ $ddclient->set_prop( 'urlcheckip' => $retrievewebservice || $retrieveurlcheckip );
+ $ddclient->set_prop( 'DeamonUpdate' => $retrievedeamonupdate );
+ $ddclient->set_prop( 'SSL' => $retrievessl );
+ $ddclient->set_prop( 'method' => $retrievemethod );
+ if ($retrievemethod eq 'router') {
+ $ddclient->set_prop( 'Extinterface' => $retrieverouter );
+ } else {
+ $ddclient->set_prop( 'Extinterface' => $retrieveinterface );
+ }
+ $ddclient->set_prop( 'cmd' => $retrievecmd );
+ $ddclient->set_prop( 'ForceIP' => $retrieveip );
+ $ddclient->set_prop( 'fwlogin' => $retrievefwlogin );
+ $ddclient->set_prop( 'fwpassword' => $retrievefwpassword );
+
+ $domaindb->reload();
+
+ system( "/sbin/e-smith/signal-event", "smeserver-ddclient-update" );
+
+ return $c->l('SUCCESSFULLY_MODIFIED_RETRIEVE_IP');
+}
+
+# We seem to be missing a Create Domain here
+# sub performCreateDomain
+
+sub performModifyDomain {
+ my $c = shift;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $c->param('domainName');
+ if ( $domainName =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $domainName = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_NAME_VALIDATION_ERROR', $domainName );
+ }
+
+ my $domainLogin = $c->param('login');
+ if ( $domainLogin =~ /([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
+ $domainLogin = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
+ }
+
+ my $domainPassword = $c->param('password');
+ if ( $domainPassword =~ /(.*)$/ ) {
+ $domainPassword = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_PASSWORD_VALIDATION_ERROR',
+ $domainPassword );
+ }
+
+ my $domainMX = $c->param('mx');
+ my $customDNS = $c->param('customdns');
+ my $customPROTOCOL = $c->param('customprotocol');
+
+ my $dns = $c->param('dns');
+ if ( $dns eq 'CUSTOMDNS' ) {
+ if ( $customDNS =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $customDNS = $1;
+ }
+ else
+
+ {
+ return $c->l( 'CUSTOMDNS_VALIDATION_ERROR', $domainName );
+ }
+ }
+
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+ # my $dns = $c->param ('dns');
+
+ my $dom = $domaindb->get($domainName);
+
+ $dom->set_prop( 'dns' => $dns );
+ $dom->set_prop( 'login' => $domainLogin );
+ $dom->set_prop( 'password' => $domainPassword );
+ $dom->set_prop( 'mx' => $domainMX );
+ $dom->set_prop( 'customdns' => $customDNS );
+ $dom->set_prop( 'customprotocol' => $customPROTOCOL );
+
+ $domaindb->reload();
+
+ system( "/sbin/e-smith/signal-event", "ddclient" );
+ return "ok";
+}
+
+sub performDeleteDomain {
+ my ( $c, $domain ) = @_;
+
+ #------------------------------------------------------------
+ # Attempt to delete domain
+ #------------------------------------------------------------
+
+ if ( $domain =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $domain = $1;
+ }
+ else {
+ return $c->l( 'ERROR_WHILE_REMOVING_DOMAIN', $domain );
+ }
+
+ my $value = $domaindb->get($domain);
+ unless ($value) {
+ return $c->l( 'NONEXISTENT_DOMAIN_ERROR', $domain );
+ }
+
+ my %properties = $value->props;
+ my $type = $properties{'type'};
+ if ( $type ne 'domain' ) {
+ return $c->l( 'NONEXISTENT_DOMAIN_ERROR', $domain );
+ }
+
+ my $evalue = $domaindb->get($domain);
+
+ $evalue->set_prop( 'dns' => '' );
+ $evalue->set_prop( 'login' => '' );
+ $evalue->set_prop( 'password' => '' );
+ $evalue->set_prop( 'customdns' => '' );
+ $evalue->set_prop( 'customprotocol' => '' );
+
+ $domaindb->reload();
+
+ system( "/sbin/e-smith/signal-event", "domain-modify" );
+
+ return "ok";
+}
+
+sub performCreateCustom {
+ my ($c) = shift;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $c->param('domainName');
+ if ( $domainName =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $domainName = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_NAME_VALIDATION_ERROR', $domainName );
+ }
+
+ foreach my $domain ( $edb->get_all_by_prop( type => 'domain' ) ) {
+ my $key = $domain->key;
+ if ( $key eq $domainName ) {
+ return $c->l( 'DOMAIN_NAME_ALREADY_EXIST', $domainName );
+ }
+ }
+
+ foreach my $domain ( $domaindb->get_all_by_prop( type => 'ddhost' ) ) {
+ my $key = $domain->key;
+ if ( $key eq $domainName ) {
+ return $c->l( 'DOMAIN_NAME_ALREADY_EXIST', $domainName );
+ }
+ }
+
+ my $domainDesc = $c->param('desc');
+ my $domainLogin = $c->param('login');
+ if ( $domainLogin =~ /([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
+ $domainLogin = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
+ }
+
+ my $domainPassword = $c->param('password');
+ if ( $domainPassword =~ /(.*)$/ ) {
+ $domainPassword = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_PASSWORD_VALIDATION_ERROR',
+ $domainPassword );
+ }
+
+ my $domainMX = $c->param('mx');
+ my $customDNS = $c->param('customdns');
+ my $customPROTOCOL = $c->param('customprotocol');
+
+ my $dns = $c->param('dns');
+ if ( $dns eq 'CUSTOMDNS' ) {
+ if ( $customDNS =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $customDNS = $1;
+ }
+ else {
+ return $c->l( 'CUSTOMDNS_VALIDATION_ERROR', $domainName );
+ }
+ }
+
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+
+ my %properties = ();
+ $properties{'type'} = 'ddhost';
+ $properties{'dns'} = $dns;
+ $properties{'login'} = $domainLogin;
+ $properties{'password'} = $domainPassword;
+ $properties{'mx'} = $domainMX;
+ $properties{'desc'} = $domainDesc;
+ $properties{'customdns'} = $customDNS;
+ $properties{'customprotocol'} = $customPROTOCOL;
+ $edb->new_record( $domainName, \%properties );
+
+ system( "/sbin/e-smith/signal-event", "domain-create" );
+ return "ok";
+
+}
+
+sub performModifyCustom {
+ my $c = shift;
+
+ #------------------------------------------------------------
+ # Validate parameters and untaint them
+ #------------------------------------------------------------
+
+ my $domainName = $c->param('domainName');
+ if ( $domainName =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $domainName = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_NAME_VALIDATION_ERROR', $domainName );
+ }
+
+ my $domainLogin = $c->param('login');
+ if ( $domainLogin =~ /([\-\'\w][\-\'\w\s\.\@]*)$/ ) {
+ $domainLogin = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_LOGIN_VALIDATION_ERROR', $domainLogin );
+ }
+
+ my $domainPassword = $c->param('password');
+ if ( $domainPassword =~ /(.*)$/ ) {
+ $domainPassword = $1;
+ }
+ else {
+ return $c->l( 'DOMAIN_PASSWORD_VALIDATION_ERROR',
+ $domainPassword );
+ }
+
+ my $domainMX = $c->param('mx');
+ my $customDNS = $c->param('customdns');
+ my $customPROTOCOL = $c->param('customprotocol');
+
+ my $dns = $c->param('dns');
+ if ( $dns eq 'CUSTOMDNS' ) {
+ if ( $customDNS =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $customDNS = $1;
+ }
+ else
+
+ {
+ return $c->l( 'CUSTOMDNS_VALIDATION_ERROR', $domainName );
+ }
+ }
+
+ #------------------------------------------------------------
+ # Looks good. Find out if this domain has been taken
+ # or if the domain is a reserved to provide a secured webserver
+ # for a previous domain
+ #------------------------------------------------------------
+ # my $dns = $c->param ('dns');
+
+ my $dom = $edb->get($domainName);
+
+ $dom->set_prop( 'dns' => $dns );
+ $dom->set_prop( 'login' => $domainLogin );
+ $dom->set_prop( 'password' => $domainPassword );
+ $dom->set_prop( 'mx' => $domainMX );
+ $dom->set_prop( 'customdns' => $customDNS );
+ $dom->set_prop( 'customprotocol' => $customPROTOCOL );
+
+ $domaindb->reload();
+
+ system( "/sbin/e-smith/signal-event", "domain-modify" );
+ return "ok";
+}
+
+sub performDeleteCustom {
+ my ( $c, $domain ) = @_;
+
+ #------------------------------------------------------------
+ # Attempt to delete domain
+ #------------------------------------------------------------
+
+ if ( $domain =~ /([a-zA-Z0-9\-\.]+)$/ ) {
+ $domain = $1;
+ }
+ else {
+ return $c->l( 'ERROR_WHILE_REMOVING_DOMAIN', $domain );
+ }
+
+ my $evalue = $edb->get($domain);
+ unless ($evalue) {
+ return $c->l( 'NONEXISTENT_DOMAIN_ERROR', $domain );
+ }
+
+ my %properties = $evalue->props;
+ my $type = $properties{'type'};
+
+ if ( $type ne 'ddhost' ) {
+ return $c->l( 'NONEXISTENT_DOMAIN_ERROR', $domain );
+
+ }
+
+ $evalue->delete;
+ $edb->reload();
+
+ system( "/sbin/e-smith/signal-event", "domain-delete" );
+ return "ok";
+}
+
+1;
diff --git a/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm b/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm
new file mode 100644
index 0000000..ce65a20
--- /dev/null
+++ b/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Ddclient/en.pm
@@ -0,0 +1,158 @@
+package SrvMngr::I18N::Modules::Ddclient::en;
+use strict;
+use warnings;
+use utf8;
+use Mojo::Base 'SrvMngr::I18N';
+
+use SrvMngr::I18N::Modules::General::en;
+
+my %lexicon = (
+'FORM_TITLE' => 'Create, remove or change the publication of virtual domains',
+'Params_for_IP_Retrieval'=>' Parameters to control how the IP of your server is found:',
+'DESCRIPTION'=> 'Use this contrib when you have a sme server connected to a ISP service using a dynamic IP, and you wish to host multiple domains.
+
ddclient is a client for updating dynamic DNS entries for domains hosted at different DNS providers.
+
Configure your dynamic host domains via the ddclient server manager panel.
+
ddclient can be used on servers configured in server gateway mode or in server only mode.
+SmeServer documentation:https://wiki.contribs.org/Ddclient',
+'FORM_DESCRIPTION' => 'Virtual Domains for publication on the net:',
+'NO_VIRTUAL_DOMAINS' => 'There are no virtual domains in the system.',
+'CURRENT_LIST_OF_DOMAINS' => 'Current list of virtual domains',
+'PUBLICATION' => 'Publication',
+'PRIMARY_SITE' => 'Primary Site',
+'CONTENT' => '[_1] i-bay',
+'CREATE_TITLE' => 'Create a new publication virtual domain',
+'SERVERS_LABEL' => 'Where to publish',
+'MX' => 'record MX',
+'NAME_LABEL' => 'Login to publish',
+'PASSWORD_LABEL' => 'Password to publish',
+'CONTENT_FIELD_DESCRIPTION' => 'For the web site, you may choose your primary web site or any i-bay as the content.',
+'DOMAIN_NAME_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain name [_1]. The domain name should contain one or more letters, numbers, periods and minus signs. Did not create new domain.',
+'DOMAIN_DESCRIPTION_VALIDATION_ERROR' => 'Error: unexpected or missing characters in domain description [_1]. Did not create new domain.',
+'DOMAIN_IN_USE_ERROR' => 'Error: domain [_1] is already in use. Did not create new domain.',
+'DOMAIN_LOGIN_VALIDATION_ERROR'=> 'Domain login must not be blank and only consist of letter, numbers, "." or "@"',
+'RESERVED_SECURE_DOMAIN_ERROR' => 'Error: domain [_1] is reserved to provide a secured webserver for the virtual domain [_2]. Did not create new domain.',
+'SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is your system domain name. You cannot have a virtual domain with the same name. Did not create new domain.',
+'RESERVED_SECURE_SYSTEM_DOMAIN_ERROR' => 'Error: domain [_1] is reserved to provide a secured webserver for your system domain name [_2]. Did not create new domain.',
+'SUCCESSFULLY_CREATED' => 'Successfully publication domain [_1] on [_2].',
+'MODIFY_TITLE' => 'Modify virtual domain',
+'NONEXISTENT_DOMAIN_ERROR' => 'Error: [_1] is not an existing domain.',
+'SUCCESSFULLY_MODIFIED' => 'Successfully modified the publication [_1] on [_2].',
+'REMOVE_TITLE' => 'Remove publication of virtual domain',
+'REMOVE_DESCRIPTION' => 'You are about to remove the publication of domain [_1] ([_2]) on [_3].
+
+
+Are you sure you wish to remove this domain\'s publication ?
+
+',
+'ERROR_WHILE_REMOVING_DOMAIN' => 'Error: internal failure while removing publication of [_1].',
+'SUCCESSFULLY_DELETED' => 'Successfully deleted publication of [_1] on [_2].',
+
+# Service descriptions
+'DYNDNS1' => 'dyndns.org dynamic addresses',
+'DYNDNS2' => 'dyndns.org static addresses',
+'DYNDNS3' => 'dyndns.org custom addresses',
+'ZONEDIT' => 'ZoneEdit (zoneedit.com)',
+'EASYDNS' => 'EasyDNS (easydns.com)',
+'HAMMER' => 'Hammernode (hn.org) dynamic addresses',
+'DSLREPORTS' => 'dslreports.com dynamic-host monitoring',
+'EURODYNDNS' => 'eurodyndns.org dynamic addresses',
+'DTDNS' => 'DtDNS (www.dtdns.com) dynamic addresses',
+'LOOPIA' => 'Loopia (loopia.se) dynamic addresses',
+'DNSPARK' => ' Dnspark (dnspark.com) dynamic addresses',
+'DYNHOST' => ' DynHost (ovh.com) dynamic addresses',
+'NOIP' => ' NoIP (noip.com) dynamic addresses',
+'CHANGEIP' => ' ChangeIP (changeip.com) dynamic addresses',
+'NAMECHEAP' => ' NAMECHEAP (namecheap.com) dynamic addresses',
+'SPDNS' => ' SPDNS (spdns.de) dynamic addresses',
+'SITELUTIONS'=>'SITELUTIONS sitelutions.com dynamic addresses',
+'FREEDNS'=>'FREEDNS freedns.afraid.org for details',
+'NSUPDATE'=>'NSUPDATE See nsupdate(1) and ddns-confgen(8) for details ',
+'CLOUDFLARE'=>'CLOUDFLARE www.cloudflare.com/ for details',
+'GOOGLEDOMAINS'=>'GOOGLEDOMAINS www.google.com/domains for details',
+'DUCKDNS'=>'DUCKDNS duckdns.org for details',
+'FREEMYIP'=>'FREEMYIP freemyip.com for details',
+'WOIMA'=>'WOIMA woima.fi for details',
+'YANDEX'=>'YANDEX domain.yandex.com for details',
+'DNSMADEEASY'=>'DNSMADEEASY dnsmadeeasy.com for details',
+'DONDOMINIO'=>'DONDOMINIO www.dondominio.com for details',
+'NEARLYFREESPEECH'=>'NFSN www.nearlyfreespeech.net/services/dns for details',
+'OVH'=>'OVH www.ovh.com for details',
+'CLOUDNS'=>'CLOUDNS www.cloudns.net',
+# End of Service descriptions
+
+# v3.11.x Service descriptions:
+"1984" => "1984-https://kb.1984hosting.com/doku.php?id=freedns",
+"changeip" => "changeip-https://changeip.com",
+"cloudflare" => "cloudflare-https://cloudflare.com",
+"cloudns" => "cloudns-https://cloudns.com",
+"digitalocean" => "digitalocean-https://digitalocean.com",
+"dinahosting" => "dinahosting-https://dinahosting.com",
+"dnsexit" => "dnsexit-https://dnsexit.com/",
+"dnsmadeeasy" => "dnsmadeeasy-https://dnsmadeeasy.com",
+"domeneshop" => "domeneshop-https://domeneshop.com",
+"dondominio" => "dondominio-https://dondominio.com",
+"dslreports" => "dslreports-https://www.dslreports.com/",
+"duckdns" => "duckdns-https://duckdns.com",
+"dyndns1" => "dyndns1-https://account.dyn.com/",
+"dyndns2" => "dyndns2-https://account.dyn.com/",
+"easydns" => "easydns-https://easydns.com",
+"enom" => "enom-https://enom.com",
+"freedns" => "freedns-http://freedns.com",
+"freemyip" => "freemyip-https://freemyip.com",
+"gandi" => "gandi-https://gandi.com",
+"godaddy" => "godaddy-https://godaddy.com",
+"googledomains" => "googledomains-https://googledomains.com",
+"hetzner" => "hetzner-https://hetzner.com",
+"infomaniak" => "infomaniak-https://infomaniak.com",
+"keysystems" => "keysystems-https://keysystems.com",
+"mythicdyn" => "mythicdyn-https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns",
+"namecheap" => "namecheap-https://namecheap.com",
+"nfsn" => "nfsn-http://nfsn.com",
+"njalla" => "njalla-https://njalla.com",
+"noip" => "noip-https://noip.com",
+"nsupdate" => "nsupdate-http://nsupdate.com",
+"ovh" => "ovh-https://ovh.com",
+"porkbun" => "porkbun-https://porkbun.com",
+"regfishde" => "regfishde-regfishde",
+"sitelutions" => "sitelutions-https://sitelutions.com",
+"woima" => "woima-http://woima.com",
+"yandex" => "yandex-https://yandex.com",
+"zoneedit" => "zoneedit-https://www.zoneedit.com/dynamic-dns/",
+# end of v3.11.x Service descriptions:
+
+'MODIFY_DESCRIPTION' => "You can modify the Dynamic DNS Service that you use and change the username and password",
+'CREATE_DESCRIPTION' => "You can create a domain to use for the Dynamic DNS Service that you use and set or change the username and password",
+'CUSTOMDNS' => 'Custom Dynamic DNS Provider',
+'CUSTOMDNS_LABEL' => 'Custom server Address',
+'CUSTOM_PROTOCOL_LABEL' => 'Custom ddclient Protocol',
+'CUSTOM_DESCRIPTION' => 'You can use a custom dynamic dns provider if yours is not in the published list. Please fill the custom fields with the appropriate settings',
+'CUSTOMDNS_VALIDATION_ERROR' => 'Error: unexpected or missing characters in custom server address field of domain [_1]. The server address should contain one or more letters, numbers, periods and minus signs. Did not apply the change.',
+'ddclient' =>'Dynamic Clients',
+'DOMAIN_NAME_ALREADY_EXIST' => 'Error: this domain:"[_1]" already exists. Please chose another.',
+'FREE_FORM_DESCRIPTION' => 'Here you can create any domain name to publish over the net:',
+'RETRIEVE_SSL' => 'SSL update',
+'RETRIEVE_DEAMONUPDATE' => 'Deamon update (seconds)',
+'RETRIEVE_URLCHECKIP' => 'Url for the external IP',
+'APPLY' => 'Save',
+'DOMAIN_NAME_LABEL' => 'Domain Name',
+'DESCRIPTION_LABEL' => 'Domain description',
+'SUCCESSFULLY_MODIFIED_RETRIEVE_IP' => 'You have successfully modified the retrieve IP options.',
+'RETRIEVE_METHOD' => 'Method to retrieve new IP:',
+'RETRIEVE_IF' => 'Local interface to get new IP',
+'RETRIEVE_CMD' => 'Command to execute to get IP',
+'SME external Interface' => 'SME external interface',
+'SME configuration DB' => 'SME configuration DB',
+'web' => 'Web query',
+'Interface' => 'IP from interface',
+'IP' => 'Manual IP setting',
+'Command' => 'Command to execute',
+'RETRIEVE_IP' => 'IP to manually force'
+);
+
+our %Lexicon = (
+ %{ SrvMngr::I18N::Modules::General::en::Lexicon },
+ %lexicon
+);
+
+
+1;
diff --git a/root/usr/share/smanager/themes/default/templates/ddclient.html.ep b/root/usr/share/smanager/themes/default/templates/ddclient.html.ep
new file mode 100644
index 0000000..1f57805
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/ddclient.html.ep
@@ -0,0 +1,48 @@
+% layout 'default', title => "Sme server 2 - Dynamic Clients", share_dir => './';
+
+% content_for 'module' => begin
+
+
+ % if ($config->{debug} == 1) {
+
+ %= dumper $c->current_route
+
+ % }
+
+
<%=$title%>
+ %= $modul
+
+ %if ($ddc_datas->{first}) {
+
+ %=$c->render_to_string(inline =>$c->l($ddc_datas->{first}))
+
+
+ %} elsif ($ddc_datas->{success}) {
+
+
Operation Status Report
+ %= $c->l($ddc_datas->{success});
+
+
+
+ %} elsif ($ddc_datas->{error}) {
+
+
Operation Status Report - error
+ %= $c->l($ddc_datas->{error});
+
+
+ %}
+
+ % if ($ddc_datas->{trt} eq 'NEW') {
+ %= include 'partials/_ddc_create_cust'
+ %} elsif ($ddc_datas->{trt} eq 'DEL') {
+ %= include 'partials/_ddc_del'
+ %} elsif ($ddc_datas->{trt} eq 'MOD') {
+ %= include 'partials/_ddc_modify_domain'
+ %} else { #LIST
+ %= include 'partials/_ddc_paramlist'
+ %= include 'partials/_ddc_domainlist'
+ %= include 'partials/_ddc_customlist'
+ %}
+
+
+%end
diff --git a/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep b/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep
new file mode 100644
index 0000000..edb5a08
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/partials/_ddc_create_cust.html.ep
@@ -0,0 +1,65 @@
+
+
+ %= l 'CREATE_DESCRIPTION'
+
+ % my $btn = l('APPLY');
+ %= form_for '/ddclient7' => (method => 'POST') => begin
+
+ %=l 'DOMAIN_NAME_LABEL'
+
+ %=text_field 'domainName'
+
+
+ %=l 'DESCRIPTION_LABEL'
+
+ %=text_field 'desc'
+
+
+ %=l 'SERVERS_LABEL'
+
+ %=select_field dns=>$dnslabels
+
+
+
+ %=l 'NAME_LABEL'
+
+ %=text_field 'login'
+
+
+ %=l 'PASSWORD_LABEL'
+
+ %=password_field 'password',id=>"ddcPass"
+ %=label_for show=>"Show"
+ %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
+ %= javascript begin
+ function showPass() {
+ var x = document.getElementById("ddcPass");
+ if (x.type === "password") {
+ x.type = "text";
+ } else {
+ x.type = "password";
+ }
+ }
+ % end
+
+
+ %=l 'MX'
+
+ %=text_field 'mx'
+
+ %= submit_button "$btn", class => 'action'
+ % end
+
+
+
diff --git a/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep b/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep
new file mode 100644
index 0000000..3af6f51
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/partials/_ddc_customlist.html.ep
@@ -0,0 +1,50 @@
+
+
+ %= l 'FREE_FORM_DESCRIPTION'
+
+
+ %= form_for '/ddclient' => (method => 'POST') => begin
+
+
+
+
+ %=l 'DOMAIN_NAME_LABEL'
+ |
+
+ %=l 'DESCRIPTION_LABEL'
+ |
+
+ %=l 'PUBLICATION'
+ |
+
+ %=l 'ACTION'
+ |
+
+ %if (!$emptycust){
+ % foreach my $freeDomain (@$freedomains) {
+
+ %= t td => (class => 'sme-border') => $freeDomain->{"Domain"}
+ %= t td => (class => 'sme-border') => $freeDomain->{"Description"}
+ %= t td => (class => 'sme-border') => $freeDomain->{"Publication"}
+
+ <%=l 'MODIFY'%>
+ |
+ <%=l 'REMOVE'%>
+ |
+
+
+ %}
+ %}
+ |
+ |
+ |
+ |
+
+ <%=l 'CREATE'%>
+ |
+
+
+
+
+ % end
+
diff --git a/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep b/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep
new file mode 100644
index 0000000..d6698f0
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/partials/_ddc_del.html.ep
@@ -0,0 +1,14 @@
+
+ % my $btn = l('REMOVE');
+ %= form_for '/ddclient4' => (method => 'POST') => begin
+
+ %= $c->render_to_string(inline =>l("REMOVE_DESCRIPTION",$ddc_datas->{"Domain_details"}->{"Domain"},$ddc_datas->{"Domain_details"}->{"Description"},$c->l($ddc_datas->{"Domain_details"}->{"Publication"})))
+
+ % param Domain=>$ddc_datas->{"Domain_details"}->{"Domain"};
+ %= hidden_field Domain=>$ddc_datas->{"Domain_details"}->{"Domain"}
+ %= hidden_field Route=>$c->current_route
+ %= hidden_field dns=>$ddc_datas->{"Domain_details"}->{"dns"}
+ %= hidden_field trt=>"DEL"
+ %= submit_button "$btn", class => 'action'
+ % end
+
diff --git a/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep b/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep
new file mode 100644
index 0000000..060d3b2
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/partials/_ddc_domainlist.html.ep
@@ -0,0 +1,52 @@
+
+
+ %= l 'FORM_DESCRIPTION'
+
+ %= form_for '/ddclient' => (method => 'POST') => begin
+
+ % if ($emptydom){
+
+ %=l 'NO_VIRTUAL_DomainS'
+
+ % } else {
+
+
+
+ %=l 'DOMAIN_NAME_LABEL'
+ |
+
+ %=l 'DESCRIPTION_LABEL'
+ |
+
+ %=l('CONTENT',"")
+ |
+
+ %=l 'PUBLICATION'
+ |
+
+
+ %=l 'ACTION'
+ |
+
+
+ % foreach my $Domain (@$domains) {
+
+ %= t td => (class => 'sme-border') => $Domain->{"Domain"}
+ %= t td => (class => 'sme-border') => $Domain->{"Description"}
+ %= t td => (class => 'sme-border') => $Domain->{"Content"}
+ %= t td => (class => 'sme-border') => $Domain->{"Publication"}
+
+ "><%=l 'MODIFY'%>
+ |
+ % if ($Domain->{"Publication"} ne ""){
+
+ "><%=l 'REMOVE'%>
+ |
+ % }
+
+ %}
+
+
+ %}
+ % end
+
diff --git a/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep b/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep
new file mode 100644
index 0000000..6ff74a2
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/partials/_ddc_modify_domain.html.ep
@@ -0,0 +1,108 @@
+
+
+
+ %= l 'MODIFY_DESCRIPTION'
+
+ % my $btn = l('APPLY');
+ %= form_for '/ddclient8' => (method => 'POST') => begin
+
+ %=l 'DOMAIN_NAME_LABEL'
+
+ %= hidden_field domainName => $ddc_datas->{"Domain_details"}->{"Domain"}
+ %= $ddc_datas->{"Domain_details"}->{"Domain"}
+
+
+
+ %=l 'DESCRIPTION_LABEL'
+
+ %= $ddc_datas->{"Domain_details"}->{"Description"}
+
+
+ % if ($ddc_datas->{"Domain_details"}->{"Content"} ne ""){
+
+ %= $ddc_datas->{"Domain_details"}->{"Content"}
+
+ %= $ddc_datas->{"Domain_details"}->{"Content"}
+
+ % }
+
+
+ %=l 'SERVERS_LABEL'
+
+ % param dns=>$ddc_datas->{"Domain_details"}->{"dns"};
+ %=select_field dns=>$dnslabels,id=>"dns",onchange=>"SelectInput()",onload=>"SelectInput()"
+ %= javascript begin
+ function SelectInput() {
+ var method = document.querySelector("#dns");
+ const types=['custom'];
+ types.forEach((type)=>{
+ var service = document.querySelector(`.${type}`);
+ if (service != null) {
+ if (method.value == type) {
+ service.style.display = 'block';
+ } else {
+ service.style.display = 'none';
+ }
+ }
+ })
+ }
+ %end
+
+
+ %# Dependant on the custom choice from above
+
+
+ %=l 'CUSTOMDNS_LABEL'
+
+ % param customdns=>$ddc_datas->{"Domain_details"}->{"customdns"};
+ %=text_field 'customdns'
+
+
+ %=l 'CUSTOM_PROTOCOL_LABEL'
+
+ % param customprotocol=>$ddc_datas->{"Domain_details"}->{"customprotocol"};
+ %=text_field 'customprotocol'
+
+
+
+
+ %=l 'NAME_LABEL'
+
+ % param login=>$ddc_datas->{"Domain_details"}->{"login"};
+ %=text_field 'login'
+
+
+ %=l 'PASSWORD_LABEL'
+
+ % param password=>$ddc_datas->{"Domain_details"}->{"password"};
+ %=password_field 'password',id=>"ddcPass",value=>$ddc_datas->{"Domain_details"}->{"password"}
+ %=label_for show=>"Show"
+ %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
+ %= javascript begin
+ function showPass() {
+ var x = document.getElementById("ddcPass");
+ if (x.type === "password") {
+ x.type = "text";
+ } else {
+ x.type = "password";
+ }
+ }
+ % end
+
+
+ %=l 'MX'
+
+ % param mx=>$ddc_datas->{"Domain_details"}->{"mx"};
+ %=text_field 'mx'
+
+ %= hidden_field trt=>"MOD"
+ %= hidden_field Route=>$c->current_route
+ %= submit_button "$btn", class => 'action'
+ % end
+
+
+
diff --git a/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep b/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep
new file mode 100644
index 0000000..d6d43ec
--- /dev/null
+++ b/root/usr/share/smanager/themes/default/templates/partials/_ddc_paramlist.html.ep
@@ -0,0 +1,136 @@
+
+
+
+ %= l 'Params_for_IP_Retrieval'
+
+ % my $btn = l('APPLY');
+ %= form_for '/ddclient3' => (method => 'POST') => begin
+
+ %=l 'RETRIEVE_SSL'
+
+ % param retrievessl=>$ddc_datas->{"params"}->{"ssl"} unless param 'retrievessl';
+ %=select_field retrievessl=>[['Yes'=>'yes'],['No'=>'no']]
+
+
+ %=l 'RETRIEVE_DEAMONUPDATE'
+
+ % param retrievedeamonupdate=>$ddc_datas->{"params"}->{"DeamonUpdate"};
+ %=number_field 'retrievedeamonupdate',min=>0
+
+
+ %=l 'RETRIEVE_METHOD'
+
+ % param retrievemethod=>$ddc_datas->{"params"}->{"method"} unless param 'retrievemethod';
+ %=select_field retrievemethod=>$methodlabels,id=>"retrievemethod",onchange=>"SelectInput()"
+ %= javascript begin
+ function SelectInput() {
+ var method = document.querySelector("#retrievemethod");
+ const types=['smeIF','smeCMD','web','router','if','ip','cmdv4','custom'];
+ types.forEach((type)=>{
+ var service = document.querySelector(`.${type}`);
+ if (service != null) {
+ if (method.value == type) {
+ service.style.display = 'block';
+ } else {
+ service.style.display = 'none';
+ }
+ }
+ })
+ }
+ % end
+
+ %#
+ %# From here the one that is shown depends on the choice above
+ %#
+ %# Only if "router" is chosen
+
+
+ %=l 'Router type'
+
+ % param retrieverouter=>$ddc_datas->{"params"}->{"Extinterface"} unless param 'retrieverouter';
+ %=select_field retrieverouter=>$devices
+
+ %# Need login and password for router
+
+ %=l 'Router login'
+
+ % param retrieverouterlogin=>$ddc_datas->{"params"}->{"FWLogin"} unless param 'retrieverouter';
+ %=text_field 'retrieverouterlogin'
+
+
+ %=l 'Router password'
+
+ % param retrieverouterpassword=>$ddc_datas->{"params"}->{"FWPassword"} unless param 'retrieverouterpassword';
+ %=password_field 'retrieverouterpassword', id=>'ddcPass'
+ %=label_for show=>"Show"
+ %=check_box show=>1,onclick=>"showPass()",style=>"vertical-align:middle;"
+ %= javascript begin
+ function showPass() {
+ var x = document.getElementById("ddcPass");
+ if (x.type === "password") {
+ x.type = "text";
+ } else {
+ x.type = "password";
+ }
+ }
+ % end
+
+
+
+ %# Only if "web" is chosen"
+
+
+ %=l 'Web service'
+
+ % param retrievewebservice=>$ddc_datas->{"params"}->{"urlcheckip"} unless param 'retrievewebservice';
+ %=select_field retrievewebservice=>$webservices
+
+
+
+ %# Only if "Interface" is chosen
+
+
+ %=l 'RETRIEVE_IF'
+
+ % param retrieveinterface=>$ddc_datas->{"params"}->{"Extinterface"} unless param 'retrieveinterface';
+ %=text_field 'retrieveinterface'
+
+
+
+ %# Only if "cmd" is chosen
+
+
+ %=l 'RETRIEVE_CMD'
+
+ % param retrievecmd=>$ddc_datas->{"params"}->{"cmdv4"} unless param 'retrievecmd';
+ %=text_field 'retrievecmd'
+
+
+
+ %# Only if "ip" is chosen
+
+
+ %=l 'RETRIEVE_IP'
+
+ % param retrieveip=>$ddc_datas->{"params"}->{"ForceIP"} unless param 'retrieveip';
+ %=text_field 'retrieveip'
+
+
+
+ %# Only if "custom web service"
+
+
+ %=l 'RETRIEVE_URLCHECKIP'
+
+ % param retrieveurlcheckip=>$ddc_datas->{"params"}->{"urlcheckip"} unless param 'retrieveurlcheckip';
+ %=text_field 'retrieveurlcheckip'
+
+
+
+ %= submit_button "$btn", class => 'action'
+ % end
+
diff --git a/smeserver-ddclient.spec b/smeserver-ddclient.spec
new file mode 100644
index 0000000..f1d8438
--- /dev/null
+++ b/smeserver-ddclient.spec
@@ -0,0 +1,344 @@
+# $Id: smeserver-ddclient.spec,v 1.41 2024/09/04 09:35:26 terryfage Exp $
+# Authority: dungog
+# Name: Stephen Noble
+
+%define name smeserver-ddclient
+%define version 1.3.0
+%define release 35
+
+Summary: ddclient panel for SME Server
+Name: %{name}
+Version: %{version}
+Release: %{release}%{?dist}
+License: GNU GPL version 2
+Group: SMEserver/addon
+Source: %{name}-%{version}.tar.xz
+
+BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
+BuildRequires: e-smith-devtools
+Obsoletes: sme7-ddclient
+BuildArchitectures: noarch
+Requires: e-smith-release >= 10.0
+#Requires: smeserver-manager >= 0.1.0-24
+Requires: ddclient >= 3.11.1
+Requires: e-smith-formmagick
+AutoReqProv: no
+
+%changelog
+* Sat Sep 07 2024 cvs2git.sh aka Brian Read 1.3.0-35.sme
+- Roll up patches and move to git repo [SME: 12338]
+
+* Sat Sep 07 2024 BogusDateBot
+- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
+ by assuming the date is correct and changing the weekday.
+
+* Wed Sep 04 2024 Terry Fage 1.3.0-34.sme
+- Update locale 2024-09-04.patch
+
+* Wed May 08 2024 Brian Read 1.3.0-33.sme
+- change command on ppoe up to use systemd [SME: 12676 ]
+- Add console-save and bootrap-console-save to expand template take out post-upgrade [SME: 12675 ]
+
+* Thu Apr 11 2024 John Crisp 1.3.0-32.sme
+- update NameCheap [SME: 12598]
+
+* Sun Apr 07 2024 Jean-Philippe Pialasse 1.3.0-31.sme
+- add fix for namecheap to last patch [SME: 12598]
+
+* Sun Apr 07 2024 Brian Read 1.3.0-30.sme
+- Merge template files for Virtual and free form domains and fix incompatibility with 3.11.2 [SME: 12598]
+- Localist free form table [SME: 12600]
+
+* Fri Mar 01 2024 Brian Read 1.3.0-29.sme
+- Edit Menu entry to conform to new arrangements [SME: 12493]
+
+* Fri Nov 10 2023 Brian Read 1.3.0-28.sme
+- Update template for deprecated commands and v3.11.1 ddclient [SME: 12427]
+- Update SM2 code to show all new protocols etc
+
+* Wed Nov 08 2023 Brian Read 1.3.0-27.sme
+- Alter require to greater than or equal to 3.11.1 [SME: 12425]
+
+* Mon Feb 13 2023 Brian Read 1.3.0-26.sme
+- Remove 3.10 as a requirement in spec
+
+* Wed Jan 25 2023 Brian Read 1.3.0-25.sme
+- Remove the ddc_ from the front of the (translateble) messages [SME: 12217]
+- Update Template files for changes in conf format and contents for 3.10.0
+
+* Fri Nov 11 2022 Jean-Philippe Pialasse 1.3.0-24.sme
+- Update locale 2022-11-11 patch
+
+* Sun Feb 20 2022 Brian Read 1.3.0-23.sme
+- Add-DB-entries-for-success-and-failure-notification [SME: 11874]
+
+* Fri Feb 04 2022 John Crisp 1.3.0-22.sme
+- Fix incorrect zoneedit endpoint [SME:11860]
+
+* Mon Jan 17 2022 Brian Read 1.3.0-21.sme
+- Make-intial-call-to-ddclient-honour-db-entries [SME: 11849]
+
+* Wed Jan 12 2022 John Crisp 1.3.0-20
+- Fix unit file, add config entries [SME: 11847]
+
+* Mon Dec 20 2021 Brian Read 1.3.0-19.sme
+- Fix-typo-in-description-paragraph [SME: 11812]
+
+* Fri Dec 03 2021 Brian Read 1.3.0-18.sme
+- Add in class to Div id=module declaration in ep file [SME: 11794]
+
+* Thu Nov 11 2021 Brian Read 1.3.0-17.sme
+- Set default urlcheckip back to the dyndns.org service [SME: 11752]
+
+* Wed Sep 08 2021 Terry Fage 1.3.0-16.sme
+- Update locale 2021-09-08.patch
+
+* Tue Aug 31 2021 John Crisp 1.3.0-15.sme
+- Fix events in ddclient SM2 library [SME:11667]
+
+* Tue Aug 31 2021 John Crisp 1.3.0-14.sme
+- Fix events in ddclient web script [SME:11667]
+- Add service link in domain-create
+
+* Mon Aug 23 2021 Terry Fage 1.3.0-13.sme
+- Update locale 2021-08-23.patch
+
+* Sun Aug 22 2021 Terry Fage 1.3.0-12.sme
+- Update locale 2021-08-21.patch
+
+* Thu Aug 05 2021 John Crisp 1.3.0-11.sme
+- Fix ddclient.conf perms and wrong link in post-upgrade [SME: 11667]
+
+* Sat Jul 24 2021 Brian Read 1.3.0-10.sme
+- Replace default checkip.dyndns.org with bot.whatismyipaddress.com [SME: 11656]
+
+* Fri Mar 12 2021 Brian Read 1.3.0-9.sme
+- Update code in ip-up.local for systemd [SME: 11450]
+
+* Fri Mar 05 2021 Brian Read 1.3.0-8.sme
+- Correct ExecStart in Service file [SME: 11370]
+
+* Fri Mar 05 2021 Brian Read 1.3.0-7.sme
+- Update list of services in SM1 [SME: 11414]
+- Add in Wantedby in service file dropin
+
+* Sun Jan 10 2021 Brian Read 1.3.0-6.sme
+- Update Createlinks according to bug:10959 [SME: 11320]
+
+* Wed Dec 02 2020 Brian Read 1.3.0-5.sme
+- Update spec file to take out requires smeserver-manager [SME: 10942]
+
+* Wed Jul 22 2020 Brian Read 1.3.0-4.sme
+- fix [SME:10942]
+
+* Tue Jun 30 2020 Brian Read 1.3.0-3.sme
+- Add in extra services from ddclient 3.9.1 [SME:10942 ]
+
+* Mon Jun 29 2020 Brian Read 1.3.0-2.sme
+- Sort out startup with systemd [SME:10942]
+
+* Sun Jun 28 2020 Brian Read 1.3.0-1.sme
+- Roll up all patches for SME10 [SME:10942]
+
+* Thu Jun 11 2020 Brian Read 1.2.1-17.sme
+- Update-for-Apache-Mod-Proxy-based-server2 [SME:10942 ]
+
+* Mon Jun 08 2020 Brian Read 1.2.1-16.sme
+- Add Server Manager2 panels for SME10 [SME:10942 ]
+
+* Tue Dec 31 2019 Brian Read 1.2.1-15.sme
+- allow @ in username in server manager panel - needed for Noip service [SME: 10796]
+
+* Sat Dec 07 2019 SME Translation Server 1.2.1-14.sme
+- apply locale 2019-12-07 patch
+
+* Sun Apr 07 2019 Jean-Philipe Pialasse 1.2.1-13.sme
+- fix missing new line [SME: 10765]
+ thank you to Eric Serafin for reporting.
+
+* Sat Jan 19 2019 Jean-Philipe Pialasse 1.2.1-12.sme
+- fix spdns migrate to spdyn.de [SME: 10593]
+- add new way to detect new ip [SME: 9450]
+
+* Sat Dec 02 2017 SME Translation Server 1.2.1-9.sme
+- apply locale 2017-12-02 patch
+
+* Wed Mar 09 2016 JP Pialasse 1.2.1-8.sme
+- apply locale 2016-03-09 patch
+
+* Sat Sep 12 2015 stephane de labrusse - 1.2.1-7.sme
+- Added smeserver-ddclient-1.2.1-locale-2015-09-12.patch
+
+* Sat Jul 11 2015 stephane de labrusse - 1.2.1-6.sme
+- Added locale smeserver-ddclient-1.2.1-locale-2015-07-11.patch
+
+* Fri Jul 10 2015 stephane de labrusse - 1.2.1-5.sme
+- added spdns.de [SME: 8975]
+- added custom fields for dns providers [SME: 8961]
+- added custom fields for free domains and panel options to ddclient [SME: 8983]
+
+* Wed Jul 1 2015 stephane de Labrusse - 1.2.1-3.sme
+- add locale smeserver-ddclient-1.2.1-locale-2015-07-01.patch
+- add translation missing Namecheap_translation.patch [SME: 8964]
+
+* Tue Jun 16 2015 stephane de Labrusse - 1.2.1-2.sme
+- first import to sme9contribs
+
+* Mon Aug 25 2014 stephane de Labrusse - 1.2.1-1.sme
+- Added the Namecheap protocol [SME:8538]
+- Added a db DeamonUpdate
+- Added force ssl
+
+* Tue Jun 10 2014 stephane de Labrusse - 1.2.0-1.sme
+- Initial release to sme9contribs
+
+* Mon Dec 30 2013 JP Pialasse 1.0.0-30.sme
+- fix db extras need to migrate [SME: 6494]
+- added misisng prop login
+
+* Tue Dec 3 2013 JP Pialasse 1.0.0-28.sme
+- patch fix for translation
+
+* Tue Nov 26 2013 stephane de Labrusse 1.0.0-27.sme
+- 5 more dynamic dns services (DtDNS, Loopia, dnspark.com, OVH DynHost,Noip ,changeip) [SME:8019]
+
+* Thu Jul 25 2013 stephane de Labrusse 1.0.0-26.sme
+- modify the path of template ddclient.conf [SME: 8018]
+
+* Sun Jul 14 2013 JP Pialasse 1.0.0-24.sme
+- apply locale 2013-07-14 patch
+
+* Sun Mar 06 2011 SME Translation Server 1.0.0-23.sme
+- apply locale 2011-03-06 patch
+
+* Sun May 23 2010 SME Translation Server 1.0.0-22.sme
+- apply locale 2010-05-23 patch
+
+* Tue Mar 02 2010 SME Translation Server 1.0.0-21.sme
+- apply locale 2010-03-02 patch
+
+* Tue Oct 27 2009 SME Translation Server 1.0.0-20.sme
+- apply locale 2009-10-27 patch
+
+* Wed Oct 21 2009 SME Translation Server 1.0.0-19.sme
+- apply locale 2009-10-21 patch
+
+* Thu Oct 8 2009 Filippo Carletti 1.0.0-18.sme
+- Merged dyndns db into domains db
+- Template and cgi cleanup
+- Fixed template expansion in events
+
+* Mon Aug 24 2009 SME Translation Server 1.0.0-17.sme
+- apply locale 2009-08-24 patch
+
+* Mon Apr 27 2009 SME Translation Server 1.0.0-16.sme
+- apply locale 2009-04-27 patch
+
+* Tue Mar 03 2009 SME Translation Server
+- apply locale 2009-03-03 patch
+
+* Sun Mar 1 2009 Jonathan Martens 1.0.0-14
+- Apply 1 Mar 2009 locale patch [SME: 5018]
+
+* Sat Jan 31 2009 Jonathan Martens 1.0.0-13
+- Apply 31 Jan 2009 locale patch [SME: 4951]
+
+* Thu Jan 1 2009 Jonathan Martens 1.0.0-12
+- Apply 1 Jan 2009 locale patch [SME: 4900]
+
+* Sun Nov 30 2008 Jonathan Martens 1.0.0-11
+- Apply 30 Nov 2008 locale patch
+
+* Wed Nov 5 2008 Jonathan Martens 1.0.0-10
+- Apply 5 Nov 2008 locale patch
+
+* Tue Oct 14 2008 Jonathan Martens 1.0.0-9
+- Apply 14 Oct 2008 locale patch
+
+* Tue Jul 1 2008 Jonathan Martens 1.0.0-8
+- Apply 1 July 2008 locale patch
+
+* Wed Jun 25 2008 Jonathan Martens 1.0.0-7
+- Apply 25 Jun 2008 locale patch
+
+* Wed May 21 2008 Jonathan Martens 1.0.0-6
+- Apply 21 May 2008 locale patch
+
+* Mon May 5 2008 Jonathan Martens 1.0.0-5
+- Apply 5 May 2008 locale patch
+
+* Sat Apr 26 2008 Jonathan Martens 1.0.0-4
+- Added 26 April 2008 locale patch
+- Add common tags to e-smith-formmagick's general
+
+* Wed Apr 23 2008 Jonathan Martens 1.0.0-3
+- Added 23 April 2008 locale patch
+- Removed version number from spec file
+
+* Wed Apr 23 2008 Stephen Noble 1.0.0-2
+- prepare for import to smecontribs
+- links moved to createlinks
+- en lexicon split from function
+- fr and de lexicons removed, add back in pootle
+
+* Sat Jan 20 2007 Paul Floor
+- ver 1.0 rel 1: split into smeserver-ddclient and ddclient
+- removed heartbeat
+
+* Sun Nov 12 2006 Filali-Ansary Vincent
+- ver 3.7 rel 1: change for the new ddclient client
+
+* Sat Aug 19 2006 Filali-Ansary Vincent
+- rel 8: change checkip.sjc.dyndns.org by checkip.dyndns.org
+
+* Mon Aug 7 2006 Filali-Ansary Vincent
+- rel 7: repair the custom eurodyndns options on ddclient.conf.
+
+* Mon Jul 31 2006 Filali-Ansary Vincent
+- rel 6: repair the custom dyndns options on ddclient.conf.
+
+* Fri Jun 30 2006 Filali-Ansary Vincent
+- rel 5: change checkip.dyndns.org by checkip.sjc.dyndns.org
+
+* Tue May 09 2006 Filali-Ansary Vincent
+- initial release
+
+%description
+ddclient panel and config files for SMEServer V10.
+
+%prep
+%setup
+
+%build
+perl createlinks
+
+%install
+rm -rf $RPM_BUILD_ROOT
+(cd root ; find . -depth -print | cpio -ldump $RPM_BUILD_ROOT)
+rm -f %{name}-%{version}-filelist
+/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
+> %{name}-%{version}-filelist
+echo "%doc COPYING" >> %{name}-%{version}-filelist
+
+# --dir /etc/ddclient 'attr(0600,ddclient,ddclient)' \
+# --dir /var/cache/ddclient 'attr(0600,ddclient,ddclient)' \
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+#systemctl enable ddclient
+#systemctl start ddclient
+#/sbin/e-smith/signal-event smanager-refresh
+#systemctl restart smanager
+
+if (systemctl list-unit-files |grep smanager) then
+ echo "Smanager restart in spec file"
+ /sbin/e-smith/signal-event smanager-refresh;
+fi
+true
+
+
+%files -f %{name}-%{version}-filelist
+%defattr(-,root,root)
+