From c96003b34c218ebd5354332367105dbc75a71c80 Mon Sep 17 00:00:00 2001 From: Trevor Batley Date: Sat, 7 Sep 2024 20:59:16 +1000 Subject: [PATCH] initial commit of file from CVS for smeserver-radicale on Sat Sep 7 20:59:16 AEST 2024 --- .gitignore | 4 + Makefile | 21 ++ README.md | 17 +- additional/CHANGELOG.git | 67 ++++ additional/COPYING | 340 ++++++++++++++++++ additional/README.md | 2 + additional/smeserver-radicale.spec | 84 +++++ contriborbase | 1 + createlinks | 55 +++ .../configuration/defaults/radicale/TCPPort | 1 + .../db/configuration/defaults/radicale/access | 1 + .../db/configuration/defaults/radicale/debug | 1 + .../db/configuration/defaults/radicale/status | 1 + .../db/configuration/defaults/radicale/type | 1 + .../events/actions/radicale-pip-upgrade | 19 + .../templates/etc/hosts.allow/radicale | 4 + .../templates/etc/radicale/config/10base | 24 ++ .../templates/etc/radicale/config/20daemon | 7 + .../templates/etc/radicale/config/30crt | 8 + .../templates/etc/radicale/config/40key | 5 + .../etc/radicale/config/50miscelanious | 165 +++++++++ .../templates/etc/radicale/logging/10base | 23 ++ .../e-smith/templates/etc/services/40radicale | 7 + root/usr/lib/systemd/system/radicale.service | 14 + root/usr/lib/tmpfiles.d/radicale.conf | 1 + smeserver-radicale.spec | 100 ++++++ 26 files changed, 971 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 additional/CHANGELOG.git create mode 100644 additional/COPYING create mode 100644 additional/README.md create mode 100644 additional/smeserver-radicale.spec create mode 100644 contriborbase create mode 100644 createlinks create mode 100644 root/etc/e-smith/db/configuration/defaults/radicale/TCPPort create mode 100644 root/etc/e-smith/db/configuration/defaults/radicale/access create mode 100644 root/etc/e-smith/db/configuration/defaults/radicale/debug create mode 100644 root/etc/e-smith/db/configuration/defaults/radicale/status create mode 100644 root/etc/e-smith/db/configuration/defaults/radicale/type create mode 100644 root/etc/e-smith/events/actions/radicale-pip-upgrade create mode 100644 root/etc/e-smith/templates/etc/hosts.allow/radicale create mode 100644 root/etc/e-smith/templates/etc/radicale/config/10base create mode 100644 root/etc/e-smith/templates/etc/radicale/config/20daemon create mode 100644 root/etc/e-smith/templates/etc/radicale/config/30crt create mode 100644 root/etc/e-smith/templates/etc/radicale/config/40key create mode 100644 root/etc/e-smith/templates/etc/radicale/config/50miscelanious create mode 100644 root/etc/e-smith/templates/etc/radicale/logging/10base create mode 100644 root/etc/e-smith/templates/etc/services/40radicale create mode 100644 root/usr/lib/systemd/system/radicale.service create mode 100644 root/usr/lib/tmpfiles.d/radicale.conf create mode 100644 smeserver-radicale.spec 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..e3ec5dd --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +# Makefile for source rpm: smeserver-radicale +# $Id: Makefile,v 1.1 2022/08/04 04:18:53 jpp Exp $ +NAME := smeserver-radicale +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 fbff759..48f9245 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,16 @@ -# smeserver-radicale +# smeserver-radicale -SMEServer Koozali developed git repo for smeserver-radicale smecontribs \ No newline at end of file +SMEServer Koozali developed git repo for smeserver-radicale smecontribs + +## Wiki +
https://wiki.koozali.org/Radicale +
https://wiki.koozali.org/Radicale_(carddav/caldav) + +## Bugzilla +Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-radicale&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..9028e06 --- /dev/null +++ b/additional/CHANGELOG.git @@ -0,0 +1,67 @@ +commit 3992d286ede8ce669ef3aa61c8adc9ba6572c792 +Author: Stephane de Labrusse +Date: Sun Oct 18 11:35:12 2015 +0200 + + * Sun Oct 18 2015 stephane de labrusse 0.0.3-3 + - change path and permissions to collections + +commit b0b30557cbd8eb1e0c169ce60c41964c87c22d1f +Author: Stephane de Labrusse +Date: Sun Oct 18 11:29:33 2015 +0200 + + * Sun Oct 18 2015 stephane de labrusse 0.0.3-3 + - change path and permissions to collections + +commit 7f6885acbcd3b9feb1ccbfc81bf82a1fe12a1385 +Author: Stephane de Labrusse +Date: Sat Oct 17 09:27:20 2015 +0200 + + * Sat Oct 17 2015 stephane de labrusse 0.0.3-2 + - /etc/rc.d/init.d/masq & /etc/services are expanding on radicale-update + +commit 4c63bbef09ad50005f5948c785986cffb79a0075 +Author: Stephane de Labrusse +Date: Mon Oct 5 00:03:20 2015 +0200 + + * Sun Oct 4 2015 stephane de labrusse 0.0.3-1 + - specific ssl certificate is used + - the user/group radicale run the init script + - hosts.allow is used now + +commit b8a5f1251cf34c71d4660ec940099787e7a969eb +Author: Stephane de Labrusse +Date: Sun Oct 4 23:45:27 2015 +0200 + + * Sun Oct 4 2015 stephane de labrusse 0.0.2-1 + - specific ssl certificate is used + - the user/group radicale run the init script + - hosts.allow is used now + +commit 112ed74a64d9e7efda1d2b239c9f800983ab848d +Author: Stephane de Labrusse +Date: Sun Oct 4 23:40:37 2015 +0200 + + * Sun Oct 4 2015 stephane de labrusse 0.0.2-1 + - specific ssl certificate is used + - the user/group radicale run the init script + - hosts.allow is used now + +commit 5eb05dcfdb4dea95f067b4a314347731e26ae1b3 +Author: Stephane de Labrusse +Date: Sat Oct 3 00:16:29 2015 +0200 + + * Thu Oct 1 2015 stephane de labrusse 0.0.1-3 + - First release to sme9 + +commit 0e4a4a3365f4e7bf707513e8efdcdc4671aa11ab +Author: Stephane de Labrusse +Date: Thu Oct 1 22:47:26 2015 +0200 + + * Thu Oct 1 2015 stephane de labrusse 0.0.1-3 + - First release to sme9 + +commit 590469c85c7d32a62418ead9cd9b98cefaa79a1a +Author: Stephane de Labrusse +Date: Thu Oct 1 21:30:28 2015 +0200 + + Initial commit diff --git a/additional/COPYING b/additional/COPYING new file mode 100644 index 0000000..196760e --- /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/README.md b/additional/README.md new file mode 100644 index 0000000..667b3b4 --- /dev/null +++ b/additional/README.md @@ -0,0 +1,2 @@ +# smeserver-radicale +a rpm for a smeserver contrib diff --git a/additional/smeserver-radicale.spec b/additional/smeserver-radicale.spec new file mode 100644 index 0000000..3f46186 --- /dev/null +++ b/additional/smeserver-radicale.spec @@ -0,0 +1,84 @@ +%define name smeserver-radicale +%define version 0.0.3 +%define release 3 + +Summary: smserver rpm to setup radicale, a carddav and caldav client +Name: %{name} +Version: %{version} +Release: %{release}%{?dist} +Source: %{name}-%{version}.tar.gz +License: GNU GPL version 2 +URL: http://www.contribs.org +Group: SMEserver/addon +BuildRoot: %{_tmppath}/%{name}-buildroot +Prefix: %{_prefix} +BuildArchitectures: noarch +BuildRequires: e-smith-devtools +Requires: e-smith-release >= 9.0 +Requires: python-pip +AutoReqProv: no + +%description +smserver rpm to setup the roundcube IMAP mail client. + +%changelog +* Sun Oct 18 2015 stephane de labrusse 0.0.3-3 +- change path and permissions to collections + +* Sat Oct 17 2015 stephane de labrusse 0.0.3-2 +- /etc/rc.d/init.d/masq & /etc/services are expanding on radicale-update + +* Sun Oct 4 2015 stephane de labrusse 0.0.3-1 +- specific ssl certificate is used +- the user/group radicale run the init script +- hosts.allow is used now + +* Thu Oct 1 2015 stephane de labrusse 0.0.1-3 +- First release to sme9 +- Thanks to JM LE CORGUILLE for the code and idea. + +%prep +%setup + + +%build +perl createlinks +%{__mkdir_p} root/home/e-smith/files/radicale/collections +%{__mkdir_p} root/etc/radicale/ +%{__mkdir_p} root/var/log/radicale +%{__mkdir_p} root/var/run/radicale + +%install +rm -rf $RPM_BUILD_ROOT +(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT) +rm -f %{name}-%{version}-filelist +/sbin/e-smith/genfilelist \ + --dir /etc/radicale/ 'attr(0755,root,root)' \ + --dir /home/e-smith/files/radicale 'attr(0750,radicale,radicale)' \ + --dir /home/e-smith/files/radicale/collections 'attr(0750,radicale,radicale)' \ + --dir /var/log/radicale 'attr(0755,radicale,radicale)' \ + --file /var/log/radicale/radicale.log 'attr(0755,radicale,radicale)' \ + --dir /var/run/radicale 'attr(0755,radicale,radicale)' \ +$RPM_BUILD_ROOT > %{name}-%{version}-filelist +echo "%doc COPYING" >> %{name}-%{version}-filelist + +%clean +cd .. +rm -rf %{name}-%{version} + +%pre + +/sbin/e-smith/create-system-user radicale 1948 "Radicale server" /home/e-smith/files/.radicale/ /bin/bash + +#echo "### Radicale Installation" +#pip install --upgrade pip radicale >/dev/null 2>&1 + +%preun + +%post +chkconfig --add radicale + +%postun + +%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..64969f4 --- /dev/null +++ b/createlinks @@ -0,0 +1,55 @@ +#!/usr/bin/perl -w + +use esmith::Build::CreateLinks qw(:all); + +#expand specific roundcube template +for my $event (qw( + bootstrap-console-save + radicale-update + console-save + )) +{ + templates2events("/etc/radicale/logging", $event); + templates2events("/etc/radicale/config", $event); +} + +#restart specific services to avoid to reboot after the installation +for my $event (qw( + radicale-update + console-save + )) +{ + safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/radicale"); + event_link("radicale-pip-upgrade", $event, "10"); + +} + +#only with radicale-update + + templates2events("/etc/hosts.allow", 'radicale-update'); + templates2events("/etc/rc.d/init.d/masq", 'radicale-update'); + templates2events("/etc/services", 'radicale-update'); + safe_symlink("adjust", "root/etc/e-smith/events/radicale-update/services2adjust/masq"); + +my $pkg= "smeserver-radicale"; +my $event = "${pkg}-update"; + +event_actions($event, qw( + radicale-pip-upgrade 10 + systemd-default 88 + systemd-reload 89 +)); + +event_templates($event, qw( + /etc/radicale/logging + /etc/radicale/config + /etc/hosts.allow + /etc/rc.d/init.d/masq + /etc/services +)); + +event_services($event, qw( + radicale restart + masq adjust +)); + diff --git a/root/etc/e-smith/db/configuration/defaults/radicale/TCPPort b/root/etc/e-smith/db/configuration/defaults/radicale/TCPPort new file mode 100644 index 0000000..e0a36c8 --- /dev/null +++ b/root/etc/e-smith/db/configuration/defaults/radicale/TCPPort @@ -0,0 +1 @@ +5232 diff --git a/root/etc/e-smith/db/configuration/defaults/radicale/access b/root/etc/e-smith/db/configuration/defaults/radicale/access new file mode 100644 index 0000000..a48cf0d --- /dev/null +++ b/root/etc/e-smith/db/configuration/defaults/radicale/access @@ -0,0 +1 @@ +public diff --git a/root/etc/e-smith/db/configuration/defaults/radicale/debug b/root/etc/e-smith/db/configuration/defaults/radicale/debug new file mode 100644 index 0000000..bc59c12 --- /dev/null +++ b/root/etc/e-smith/db/configuration/defaults/radicale/debug @@ -0,0 +1 @@ +False diff --git a/root/etc/e-smith/db/configuration/defaults/radicale/status b/root/etc/e-smith/db/configuration/defaults/radicale/status new file mode 100644 index 0000000..86981e6 --- /dev/null +++ b/root/etc/e-smith/db/configuration/defaults/radicale/status @@ -0,0 +1 @@ +enabled diff --git a/root/etc/e-smith/db/configuration/defaults/radicale/type b/root/etc/e-smith/db/configuration/defaults/radicale/type new file mode 100644 index 0000000..24e1098 --- /dev/null +++ b/root/etc/e-smith/db/configuration/defaults/radicale/type @@ -0,0 +1 @@ +service diff --git a/root/etc/e-smith/events/actions/radicale-pip-upgrade b/root/etc/e-smith/events/actions/radicale-pip-upgrade new file mode 100644 index 0000000..76ff434 --- /dev/null +++ b/root/etc/e-smith/events/actions/radicale-pip-upgrade @@ -0,0 +1,19 @@ +#!/usr/bin/perl +use strict; +use warnings; +use esmith::ConfigDB; + +my $db = esmith::ConfigDB->open_ro; + +if (( ! -f '/home/e-smith/files/radicale/radicale.cert' ) && ( ! -f '/home/e-smith/files/radicale/radicale.key')) + { + my $rad_name = $db->get_value('SystemName') || "server"; + my $rad_domain = $db->get_value('DomainName') || 'myexample.com'; + + system ("openssl req -new -sha256 -newkey rsa:4096 -days 3650 -nodes -x509 -subj /O=Radicale/CN=$rad_name.$rad_domain -keyout /home/e-smith/files/radicale/radicale.key -out /home/e-smith/files/radicale/radicale.crt") == 0 + || die "impossible to create the ssl certificate"; + system ('chown radicale:radicale /home/e-smith/files/radicale/radicale.*'); + system ('chmod 400 /home/e-smith/files/radicale/radicale.*'); + } + +system ('/usr/bin/pip3.6 install --upgrade pip radicale==1.1.7'); diff --git a/root/etc/e-smith/templates/etc/hosts.allow/radicale b/root/etc/e-smith/templates/etc/hosts.allow/radicale new file mode 100644 index 0000000..1bd3945 --- /dev/null +++ b/root/etc/e-smith/templates/etc/hosts.allow/radicale @@ -0,0 +1,4 @@ +{ + $DB->hosts_allow_spec('radicale','radicale'); +} + diff --git a/root/etc/e-smith/templates/etc/radicale/config/10base b/root/etc/e-smith/templates/etc/radicale/config/10base new file mode 100644 index 0000000..bd1156c --- /dev/null +++ b/root/etc/e-smith/templates/etc/radicale/config/10base @@ -0,0 +1,24 @@ +# -*- mode: conf -*- +# vim:ft=cfg + +# Config file for Radicale - A simple calendar server +# +# Place it into /etc/radicale/config (global) +# or ~/.config/radicale/config (user) +# +# The current values are the default ones + + +[server] + +# CalDAV server hostnames separated by a comma +# IPv4 syntax: address:port +# IPv6 syntax: [address]:port +# For example: 0.0.0.0:9999, [::]:9999 +# IPv6 adresses are configured to only allow IPv6 connections +#hosts = 0.0.0.0:5232 +{ + my $rad_ports = $radicale{TCPPort} || 5232; + my $rad_ip = $LocalIP || 127.0.0.1; + $OUT .= "hosts = $rad_ip:$rad_ports\n"; +} diff --git a/root/etc/e-smith/templates/etc/radicale/config/20daemon b/root/etc/e-smith/templates/etc/radicale/config/20daemon new file mode 100644 index 0000000..a190c61 --- /dev/null +++ b/root/etc/e-smith/templates/etc/radicale/config/20daemon @@ -0,0 +1,7 @@ +# Daemon flag +#daemon = False +daemon = True + +# File storing the PID in daemon mode +#pid = +pid = /run/radicale/radicale.pid diff --git a/root/etc/e-smith/templates/etc/radicale/config/30crt b/root/etc/e-smith/templates/etc/radicale/config/30crt new file mode 100644 index 0000000..7721ebc --- /dev/null +++ b/root/etc/e-smith/templates/etc/radicale/config/30crt @@ -0,0 +1,8 @@ +# SSL flag, enable HTTPS protocol +#ssl = False +ssl = True + +# SSL certificate path +#certificate = /etc/apache2/ssl/server.crt + +certificate = /home/e-smith/files/radicale/radicale.crt diff --git a/root/etc/e-smith/templates/etc/radicale/config/40key b/root/etc/e-smith/templates/etc/radicale/config/40key new file mode 100644 index 0000000..2b80530 --- /dev/null +++ b/root/etc/e-smith/templates/etc/radicale/config/40key @@ -0,0 +1,5 @@ +# SSL private key +#key = /etc/apache2/ssl/server.key + +key = /home/e-smith/files/radicale/radicale.key + diff --git a/root/etc/e-smith/templates/etc/radicale/config/50miscelanious b/root/etc/e-smith/templates/etc/radicale/config/50miscelanious new file mode 100644 index 0000000..2aca35a --- /dev/null +++ b/root/etc/e-smith/templates/etc/radicale/config/50miscelanious @@ -0,0 +1,165 @@ +# SSL Protocol used. See python's ssl module for available values +#protocol = PROTOCOL_SSLv23 + +# Ciphers available. See python's ssl module for available ciphers +#ciphers = + +# Reverse DNS to resolve client address in logs +#dns_lookup = True +dns_lookup = True + +# Root URL of Radicale (starting and ending with a slash) +#base_prefix = / + +# Possibility to allow URLs cleaned by a HTTP server, without the base_prefix +#can_skip_base_prefix = False + +# Message displayed in the client when a password is needed +#realm = Radicale - Password Required + + +[encoding] + +# Encoding for responding requests +request = utf-8 + +# Encoding for storing local collections +stock = utf-8 + + +[well-known] + +# Path where /.well-known/caldav/ is redirected +#caldav = '/%(user)s/caldav/' + +# Path where /.well-known/carddav/ is redirected +#carddav = '/%(user)s/carddav/' + + +[auth] + +# Authentication method +# Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom +#type = None +type = IMAP + +# Custom authentication handler +# custom_handler = + +# Htpasswd filename +#htpasswd_filename = /etc/radicale/users + +# Htpasswd encryption method +# Value: plain | sha1 | ssha | crypt +#htpasswd_encryption = crypt + +# LDAP server URL, with protocol and port +#ldap_url = ldap://localhost:389/ + +# LDAP base path +#ldap_base = ou=users,dc=example,dc=com + +# LDAP login attribute +#ldap_attribute = uid + +# LDAP filter string +# placed as X in a query of the form (&(...)X) +# example: (objectCategory=Person)(objectClass=User)(memberOf=cn=calenderusers,ou=users,dc=example,dc=org) +# leave empty if no additional filter is needed +#ldap_filter = + +# LDAP dn for initial login, used if LDAP server does not allow anonymous searches +# Leave empty if searches are anonymous +#ldap_binddn = + +# LDAP password for initial login, used with ldap_binddn +#ldap_password = + +# LDAP scope of the search +#ldap_scope = OneLevel + +# IMAP Configuration +#imap_hostname = localhost +#imap_port = 143 +#imap_ssl = False +imap_hostname = localhost +imap_port = {$imaps{'TCPPort'} || '993'} +imap_ssl = True + +# PAM group user should be member of +#pam_group_membership = + +# Path to the Courier Authdaemon socket +#courier_socket = + +# HTTP authentication request URL endpoint +#http_url = +# POST parameter to use for username +#http_user_parameter = +# POST parameter to use for password +#http_password_parameter = + + +[git] + +# Git default options +#committer = Radicale + + +[rights] + +# Rights backend +# Value: None | authenticated | owner_only | owner_write | from_file | custom +#type = None +type = owner_write + +# Custom rights handler +# custom_handler = + +# File for rights management from_file +#file = ~/.config/radicale/rights + + +[storage] + +# Storage backend +# ------- +# WARNING: ONLY "filesystem" IS DOCUMENTED AND TESTED, +# OTHER BACKENDS ARE NOT READY FOR PRODUCTION. +# ------- +# Value: filesystem | multifilesystem | database | custom +#type = filesystem + +# Custom storage handler +#custom_handler = + +# Folder for storing local collections, created if not present +#filesystem_folder = ~/.config/radicale/collections +filesystem_folder = /home/e-smith/files/radicale/collections + +# Database URL for SQLAlchemy +# dialect+driver://user:password@host/dbname[?key=value..] +# For example: sqlite:///var/db/radicale.db, postgresql://user:password@localhost/radicale +# See http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#sqlalchemy.create_engine +#database_url = + + +[logging] + +# Logging configuration file +# If no config is given, simple information is printed on the standard output +# For more information about the syntax of the configuration file, see: +# http://docs.python.org/library/logging.config.html +#config = /etc/radicale/logging +config = /etc/radicale/logging +# Set the default logging level to debug +debug = {$radicale{'debug'} || 'False'} +# Store all environment variables (including those set in the shell) +#full_environment = False + + +[headers] + +# Additional HTTP headers +#Access-Control-Allow-Origin = *#imap_hostname = localhost + diff --git a/root/etc/e-smith/templates/etc/radicale/logging/10base b/root/etc/e-smith/templates/etc/radicale/logging/10base new file mode 100644 index 0000000..a005169 --- /dev/null +++ b/root/etc/e-smith/templates/etc/radicale/logging/10base @@ -0,0 +1,23 @@ +[loggers] +keys=root +level=NOTSET + +[logger_root] +handlers=file + +[formatters] +keys=simple + +[formatter_simple] +format=%(asctime)s - %(name)s - %(levelname)s - %(message)s + +[handlers] +keys=file + +[handler_file] +class=handlers.TimedRotatingFileHandler +interval=midnight +backupCount=5 +formatter=simple +level=ERROR +args=('/var/log/radicale/radicale.log',) diff --git a/root/etc/e-smith/templates/etc/services/40radicale b/root/etc/e-smith/templates/etc/services/40radicale new file mode 100644 index 0000000..49386cb --- /dev/null +++ b/root/etc/e-smith/templates/etc/services/40radicale @@ -0,0 +1,7 @@ +{ +my $port = $radicale{TCPPort} || '5232'; +$OUT .= << "EOF"; +#Radicale +radicale $port/tcp +EOF +} diff --git a/root/usr/lib/systemd/system/radicale.service b/root/usr/lib/systemd/system/radicale.service new file mode 100644 index 0000000..9fc5d47 --- /dev/null +++ b/root/usr/lib/systemd/system/radicale.service @@ -0,0 +1,14 @@ +[Unit] +Description=radicale +After=syslog.target network-online.target + +[Service] +ExecStartPre=-/usr/sbin/e-smith/service-status radicale +ExecStart=/usr/local/bin/radicale -C /etc/radicale/config +PIDFile=/run/radicale/radicale.pid +Type=simple +User=radicale +PermissionsStartOnly=true + +[Install] +WantedBy=sme-server.target diff --git a/root/usr/lib/tmpfiles.d/radicale.conf b/root/usr/lib/tmpfiles.d/radicale.conf new file mode 100644 index 0000000..355fd46 --- /dev/null +++ b/root/usr/lib/tmpfiles.d/radicale.conf @@ -0,0 +1 @@ +d /run/radicale 0755 radicale radicale diff --git a/smeserver-radicale.spec b/smeserver-radicale.spec new file mode 100644 index 0000000..2c31f90 --- /dev/null +++ b/smeserver-radicale.spec @@ -0,0 +1,100 @@ +%define name smeserver-radicale +%define version 0.0.3 +%define release 6 + +Summary: smserver rpm to setup radicale, a carddav and caldav client +Name: %{name} +Version: %{version} +Release: %{release}%{?dist} +Source: %{name}-%{version}.tar.xz + +License: GNU GPL version 2 +URL: http://www.contribs.org +Group: SMEserver/addon +BuildRoot: %{_tmppath}/%{name}-buildroot +Prefix: %{_prefix} +BuildArchitectures: noarch +BuildRequires: e-smith-devtools +Requires: e-smith-release >= 10.0 +Requires: python36-pip +AutoReqProv: no + +%description +smserver rpm to setup the roundcube IMAP mail client. + +%changelog +* Sat Sep 07 2024 cvs2git.sh aka Brian Read 0.0.3-6.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. + +* Thu Sep 08 2022 Jean-Philippe Pialasse 0.0.3-5.sme +- fix post scriptlet failing [SME: 12167] + +* Thu Aug 04 2022 Jean-Philippe Pialasse 0.0.3-4.sme +- import to SME10 +- python 3.6 + +* Sun Oct 18 2015 stephane de labrusse 0.0.3-3 +- change path and permissions to collections + +* Sat Oct 17 2015 stephane de labrusse 0.0.3-2 +- /etc/rc.d/init.d/masq & /etc/services are expanding on radicale-update + +* Sun Oct 4 2015 stephane de labrusse 0.0.3-1 +- specific ssl certificate is used +- the user/group radicale run the init script +- hosts.allow is used now + +* Thu Oct 1 2015 stephane de labrusse 0.0.1-3 +- First release to sme9 +- Thanks to JM LE CORGUILLE for the code and idea. + +%prep +%setup + +rm -rf root/etc/rc.d + +%build +perl createlinks +%{__mkdir_p} root/home/e-smith/files/radicale/collections +%{__mkdir_p} root/etc/radicale/ +%{__mkdir_p} root/var/log/radicale +%{__mkdir_p} root/run/radicale + +%install +rm -rf $RPM_BUILD_ROOT +(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT) +rm -f %{name}-%{version}-filelist +/sbin/e-smith/genfilelist \ + --dir /etc/radicale/ 'attr(0755,root,root)' \ + --dir /home/e-smith/files/radicale 'attr(0750,radicale,radicale)' \ + --dir /home/e-smith/files/radicale/collections 'attr(0750,radicale,radicale)' \ + --dir /var/log/radicale 'attr(0755,radicale,radicale)' \ + --file /var/log/radicale/radicale.log 'attr(0755,radicale,radicale)' \ + --dir /run/radicale 'attr(0755,radicale,radicale)' \ +$RPM_BUILD_ROOT > %{name}-%{version}-filelist +echo "%doc COPYING" >> %{name}-%{version}-filelist + +%clean +cd .. +rm -rf %{name}-%{version} + +%pre + +/sbin/e-smith/create-system-user radicale 1948 "Radicale server" /home/e-smith/files/.radicale/ /bin/bash +mkdir -p /home/e-smith/files/.radicale +chown radicale:radicale /home/e-smith/files/.radicale +#echo "### Radicale Installation" +#pip install --upgrade pip radicale >/dev/null 2>&1 + +%preun + +%post + +%postun + +%files -f %{name}-%{version}-filelist +%defattr(-,root,root)