From 94a17efb7619275e4800f07b07be2bc9d1e9722f Mon Sep 17 00:00:00 2001 From: w4bremer <> Date: Thu, 25 Sep 2014 18:34:13 +0000 Subject: [PATCH] Synology: Add basic files for spk creation git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@6617 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- CHANGED | 1 + contrib/Synology/INFO | 13 + contrib/Synology/LICENSE | 339 +++++++++++++++++++++ contrib/Synology/PACKAGE_ICON.PNG | Bin 0 -> 25793 bytes contrib/Synology/scripts/fhem.sh | 59 ++++ contrib/Synology/scripts/postinst | 14 + contrib/Synology/scripts/postuninst | 7 + contrib/Synology/scripts/postupgrade | 17 ++ contrib/Synology/scripts/preinst | 2 + contrib/Synology/scripts/preuninst | 2 + contrib/Synology/scripts/preupgrade | 9 + contrib/Synology/scripts/start-stop-status | 32 ++ 12 files changed, 495 insertions(+) create mode 100644 contrib/Synology/INFO create mode 100644 contrib/Synology/LICENSE create mode 100644 contrib/Synology/PACKAGE_ICON.PNG create mode 100755 contrib/Synology/scripts/fhem.sh create mode 100755 contrib/Synology/scripts/postinst create mode 100755 contrib/Synology/scripts/postuninst create mode 100755 contrib/Synology/scripts/postupgrade create mode 100755 contrib/Synology/scripts/preinst create mode 100755 contrib/Synology/scripts/preuninst create mode 100755 contrib/Synology/scripts/preupgrade create mode 100755 contrib/Synology/scripts/start-stop-status diff --git a/CHANGED b/CHANGED index f0f5dccac..c88325920 100644 --- a/CHANGED +++ b/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: Synology DiskStation NAS basic spk file creation - change: 34_NUT: readingFnAttributes added; creation of units deleted; changed attr asReadings to use comma instead of space - bugfix: SYSMON: crash on FritzBox diff --git a/contrib/Synology/INFO b/contrib/Synology/INFO new file mode 100644 index 000000000..7e1c0d78d --- /dev/null +++ b/contrib/Synology/INFO @@ -0,0 +1,13 @@ +package="FHEM" +version="fhem-5.5" +maintainer="Rudolf Koenig" +description="GPLd perl server for house automation." +displayname="FHEM Server" +arch="noarch" +adminport="8083" +adminurl="/fhem" +checkport="yes" +startable="yes" +helpurl="http://www.fhem.de/" +package_icon="PACKAGE_ICON.PNG" +reloadui="yes" diff --git a/contrib/Synology/LICENSE b/contrib/Synology/LICENSE new file mode 100644 index 000000000..d159169d1 --- /dev/null +++ b/contrib/Synology/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. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 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. + + , 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. diff --git a/contrib/Synology/PACKAGE_ICON.PNG b/contrib/Synology/PACKAGE_ICON.PNG new file mode 100644 index 0000000000000000000000000000000000000000..98dfea27b5fd2ba79952c58922641975daa3ca68 GIT binary patch literal 25793 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 LNkvXXu0mjfHb6-* literal 0 HcmV?d00001 diff --git a/contrib/Synology/scripts/fhem.sh b/contrib/Synology/scripts/fhem.sh new file mode 100755 index 000000000..f45f4dbe7 --- /dev/null +++ b/contrib/Synology/scripts/fhem.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# +HOME='/var/packages/FHEM/target' +PERL=/usr/bin/perl +KMOD=/var/packages/usb-driver-kernel +PATH=$HOME:$PERL:$PATH +export PATH + +fhem_BIN=${HOME}/fhem.pl +test -x ${fhem_BIN} || { echo "${fhem_BIN} not installed"; + if [ "$1" = "stop" ]; then exit 0; + else exit 5; fi; } + +# Check for existence of needed config file and read it +fhem_CONFIG=${HOME}/fhem.cfg +test -r ${fhem_CONFIG} || { echo "${fhem_CONFIG} not existing"; + if [ "$1" = "stop" ]; then exit 0; + else exit 6; fi; } + +fhem_LOG=/var/log/fhem-`date +"%Y-%m"`.log + +perl_BIN=`which perl` + +# +case "$1" in + start) + echo "Starting fhem " + if [ -d "${KMOD}" ]; then + if [ ! -f "${KMOD}/enabled" ]; then + ${KMOD}/scripts/start-stop-status start + touch ${KMOD}/enabled && chmod 775 ${KMOD}/enabled + fi + fi + + ${perl_BIN} $fhem_BIN $fhem_CONFIG + ;; + stop) + echo "Shutting down fhem " + ${perl_BIN} $fhem_BIN 7072 shutdown + ;; + restart) + $0 stop + $0 start + ;; + status) + echo -n "Checking for service fhem " + ps|grep fhem.pl + ;; + log) + test -r $fhem_LOG || { echo "$fhem_LOG not existing"; exit 0; } + echo $fhem_LOG + ;; + *) + echo "Usage: $0 {start|stop|status|restart|log}" + exit 1 + ;; +esac +exit 0 diff --git a/contrib/Synology/scripts/postinst b/contrib/Synology/scripts/postinst new file mode 100755 index 000000000..0ac48a36f --- /dev/null +++ b/contrib/Synology/scripts/postinst @@ -0,0 +1,14 @@ +#!/bin/sh +eval $(env | grep "^SYNOPKG_PKGDEST=") +eval $(env | grep "^SYNOPKG_PKGNAME=") +eval $(env | grep "^SYNOPKG_PKGPORT=") +eval $(env | grep "^SYNOPKG_PKGINST_TEMP_DIR=") +eval $(env | grep "^FHEM_DS_IP=") +#ret=`ln -s /var/packages/${SYNOPKG_PKGNAME}/target/app /usr/syno/synoman/webman/3rdparty/${SYNOPKG_PKGNAME}` +#ret=`ln -s /var/packages/${SYNOPKG_PKGNAME}/target /usr/local/${SYNOPKG_PKGNAME}` +# +#ret=`perl -pi -e "s,##ip##,${FHEM_DS_IP}," /var/packages/${SYNOPKG_PKGNAME}/target/app/config` +#ret=`perl -pi -e "s,##adminport##,${SYNOPKG_PKGPORT}," /var/packages/${SYNOPKG_PKGNAME}/target/app/config` +# +ret=`rmdir ${SYNOPKG_PKGINST_TEMP_DIR}` +exit 0 diff --git a/contrib/Synology/scripts/postuninst b/contrib/Synology/scripts/postuninst new file mode 100755 index 000000000..9871b095e --- /dev/null +++ b/contrib/Synology/scripts/postuninst @@ -0,0 +1,7 @@ +#!/bin/sh +eval $(env | grep "^SYNOPKG_PKGDEST=") +eval $(env | grep "^SYNOPKG_PKGNAME=") +ret=`rm -f ${SYNOPKG_PKGDEST}` +ret=`rm -f /var/log/fhem*.log` +ret=`rm -f /var/log/fhem*.save` +exit 0 diff --git a/contrib/Synology/scripts/postupgrade b/contrib/Synology/scripts/postupgrade new file mode 100755 index 000000000..21b469026 --- /dev/null +++ b/contrib/Synology/scripts/postupgrade @@ -0,0 +1,17 @@ +#!/bin/sh + +# after upgrading restore fhem.cfg +CONF=/var/packages/FHEM/target/fhem.cfg +SEARCH=".*attr global verbose.*" +ADDLINE="\ndefine telnetPort telnet 7072 global # our TCP/IP\n" +if [ -e /tmp/${PPID}_fhem.cfg ]; then + /bin/cp -f /tmp/${PPID}_fhem.cfg ${CONF} + /bin/rm -f /tmp/*_fhem.cfg + + grep -q "telnet" ${CONF} || ( + perl -pi -e "s,^attr global port 7072.*$,," ${CONF}; + perl -pi -e "if(/^${SEARCH}$/) { print \"${ADDLINE}\"; }" ${CONF};) + +fi + +exit 0 diff --git a/contrib/Synology/scripts/preinst b/contrib/Synology/scripts/preinst new file mode 100755 index 000000000..039e4d006 --- /dev/null +++ b/contrib/Synology/scripts/preinst @@ -0,0 +1,2 @@ +#!/bin/sh +exit 0 diff --git a/contrib/Synology/scripts/preuninst b/contrib/Synology/scripts/preuninst new file mode 100755 index 000000000..039e4d006 --- /dev/null +++ b/contrib/Synology/scripts/preuninst @@ -0,0 +1,2 @@ +#!/bin/sh +exit 0 diff --git a/contrib/Synology/scripts/preupgrade b/contrib/Synology/scripts/preupgrade new file mode 100755 index 000000000..e327a954d --- /dev/null +++ b/contrib/Synology/scripts/preupgrade @@ -0,0 +1,9 @@ +#!/bin/sh + +# while upgrading backup fhem.cfg +CONF=/var/packages/FHEM/target/fhem.cfg +if [ -e ${CONF} ]; then + /bin/cp -f ${CONF} /tmp/${PPID}_fhem.cfg +fi + +exit 0 diff --git a/contrib/Synology/scripts/start-stop-status b/contrib/Synology/scripts/start-stop-status new file mode 100755 index 000000000..b8f59d275 --- /dev/null +++ b/contrib/Synology/scripts/start-stop-status @@ -0,0 +1,32 @@ +#!/bin/sh +DIR='/var/packages/FHEM/scripts' + +case $1 in + start) + ${DIR}/fhem.sh start + exit 0 + ;; + stop) + ${DIR}/fhem.sh stop + exit 0 + ;; + restart) + ${DIR}/fhem.sh stop + ${DIR}/fhem.sh start + exit 0 + ;; + status) + ${DIR}/fhem.sh status + if [ "$?" = "0" ]; then + exit 0 + else + exit 1 + fi + ;; + log) + ${DIR}/fhem.sh log + exit 0 + ;; +esac + +exit 0