Hello community, here is the log from the commit of package yast2-mail checked in at Fri Jul 25 12:58:49 CEST 2008. -------- --- yast2-mail/yast2-mail.changes 2008-06-27 16:22:50.000000000 +0200 +++ /mounts/work_src_done/STABLE/yast2-mail/yast2-mail.changes 2008-07-25 06:35:58.363348000 +0200 @@ -1,0 +2,5 @@ +Thu Jul 24 12:34:45 CEST 2008 - varkoly@suse.de + +- API changes in yast2-users and yast2-ldap + +------------------------------------------------------------------- @@ -4 +9 @@ -- openldap do not contains /etc/openldap anymore +- openldap do not contains /etc/openldap anymore Old: ---- yast2-mail-2.16.6.tar.bz2 New: ---- yast2-mail-2.16.7.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-mail.spec ++++++ --- /var/tmp/diff_new_pack.FZ3900/_old 2008-07-25 12:58:41.000000000 +0200 +++ /var/tmp/diff_new_pack.FZ3900/_new 2008-07-25 12:58:41.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package yast2-mail (Version 2.16.6) +# spec file for package yast2-mail (Version 2.16.7) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -12,12 +12,12 @@ Name: yast2-mail -Version: 2.16.6 -Release: 5 +Version: 2.16.7 +Release: 1 License: GPL v2 or later Group: System/YaST BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source0: yast2-mail-2.16.6.tar.bz2 +Source0: yast2-mail-2.16.7.tar.bz2 Prefix: /usr BuildRequires: perl-XML-Writer update-desktop-files yast2-devtools yast2-testsuite BuildRequires: yast2-ldap-server yast2-network yast2-perl-bindings yast2-users @@ -68,7 +68,7 @@ Peter Varkoly <varkoly@novell.com> %prep -%setup -n yast2-mail-2.16.6 +%setup -n yast2-mail-2.16.7 %build %{prefix}/bin/y2tool y2autoconf @@ -161,8 +161,9 @@ /usr/share/YaST2/modules/UsersPluginMail.pm %dir /usr/share/YaST2/clients /usr/share/YaST2/clients/users* - %changelog +* Thu Jul 24 2008 varkoly@suse.de +- API changes in yast2-users and yast2-ldap * Fri Jun 27 2008 varkoly@suse.de - openldap do not contains /etc/openldap anymore * Thu Jun 05 2008 varkoly@suse.de ++++++ yast2-mail-2.16.6.tar.bz2 -> yast2-mail-2.16.7.tar.bz2 ++++++ ++++ 11428 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/configure.in new/yast2-mail-2.16.7/configure.in --- old/yast2-mail-2.16.6/configure.in 2007-11-22 10:47:28.000000000 +0100 +++ new/yast2-mail-2.16.7/configure.in 2008-07-24 12:51:25.000000000 +0200 @@ -1,9 +1,9 @@ dnl configure.in for yast2-mail dnl -dnl -- This file is generated by y2autoconf 2.15.9 - DO NOT EDIT! -- +dnl -- This file is generated by y2autoconf 2.16.7 - DO NOT EDIT! -- dnl (edit configure.in.in instead) -AC_INIT(yast2-mail, 2.15.23, http://bugs.opensuse.org/, yast2-mail) +AC_INIT(yast2-mail, 2.16.7, http://bugs.opensuse.org/, yast2-mail) dnl Check for presence of file 'RPMNAME' AC_CONFIG_SRCDIR([RPMNAME]) @@ -14,10 +14,11 @@ AC_PREFIX_DEFAULT(/usr) -AM_INIT_AUTOMAKE(tar-ustar) dnl searches for some needed programs +dnl long filenames; we use GNU Make extensions and that's ok +AM_INIT_AUTOMAKE(tar-ustar -Wno-portability) dnl Important YaST2 variables -VERSION="2.15.23" +VERSION="2.16.7" RPMNAME="yast2-mail" MAINTAINER="Peter Varkoly <varkoly@novell.com>" @@ -107,7 +108,7 @@ dnl no need for AC_ARG_VAR AC_PATH_PROG(XGETTEXT, xgettext) if test -z "$XGETTEXT" ; then - AC_MSG_ERROR(xgettext is missing; please install gettext-devel.) + AC_MSG_ERROR(xgettext is missing; please install gettext-tools.) fi Y2DEVTOOLS_PREFIX=`pkg-config --print-errors --variable=prefix yast2-devtools` diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/COPYRIGHT.english new/yast2-mail-2.16.7/COPYRIGHT.english --- old/yast2-mail-2.16.6/COPYRIGHT.english 2008-06-05 14:38:32.000000000 +0200 +++ new/yast2-mail-2.16.7/COPYRIGHT.english 1970-01-01 01:00:00.000000000 +0100 @@ -1,340 +0,0 @@ - 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. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/Makefile.am new/yast2-mail-2.16.7/Makefile.am --- old/yast2-mail-2.16.6/Makefile.am 2007-11-22 10:47:28.000000000 +0100 +++ new/yast2-mail-2.16.7/Makefile.am 2008-07-24 12:51:25.000000000 +0200 @@ -23,13 +23,14 @@ ALL_PACKAGES = $(DEVTOOLS_DIR)/admin/all-packages LEGALESE_DIR = $(if $(HAS_YAST_LICENSE),$(DEVTOOLS_DIR)/admin/copyright/yast,$(DEVTOOLS_DIR)/admin/copyright/gpl) -COPYRIGHT_files_gpl = README COPYING COPYRIGHT.english +COPYRIGHT_files_gpl = README COPYING COPYRIGHT_files_yast = YAST_LICENSE README COPYING COPYRIGHT.english \ COPYRIGHT.french COPYRIGHT.german COPYRIGHT.spanish extra_COPYRIGHT_files = $(if $(HAS_YAST_LICENSE), $(COPYRIGHT_files_yast), $(COPYRIGHT_files_gpl)) +# less strict; prefer bzip2 AUTOMAKE_OPTIONS = foreign dist-bzip2 no-dist-gzip # where devtools instal m4 snippets # argh, executed literally diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/src/mail-server_complex.ycp new/yast2-mail-2.16.7/src/mail-server_complex.ycp --- old/yast2-mail-2.16.6/src/mail-server_complex.ycp 2008-05-05 22:59:13.000000000 +0200 +++ new/yast2-mail-2.16.7/src/mail-server_complex.ycp 2008-06-17 11:32:33.000000000 +0200 @@ -54,7 +54,7 @@ /* Progress stage 2/3 */ _("Choose LDAP and CA settings"), /* Progress stage 3/3 */ - _("Configure LDAP server and CA managemant") + _("Configure LDAP server and CA management") ], [ /* Progress stage 0/7 */ _("Reading packages..."), @@ -63,7 +63,7 @@ /* Progress stage 2/3 */ _("Choosing LDAP and CA settings..."), /* Progress stage 3/3 */ - _("Configuring LDAP server and CA managemant..."), + _("Configuring LDAP server and CA management..."), /* Progress finished */ _("Finished") ] diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/src/mail-server_dialogs.ycp new/yast2-mail-2.16.7/src/mail-server_dialogs.ycp --- old/yast2-mail-2.16.6/src/mail-server_dialogs.ycp 2008-05-26 19:14:48.000000000 +0200 +++ new/yast2-mail-2.16.7/src/mail-server_dialogs.ycp 2008-06-17 11:32:20.000000000 +0200 @@ -104,7 +104,7 @@ } if( ca_mgm ) - { // Now we setup the ca managemant + { // Now we setup the ca management args = add(args, "ca_mgm"); } Progress::NextStage(); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/src/MailServer.ycp new/yast2-mail-2.16.7/src/MailServer.ycp --- old/yast2-mail-2.16.6/src/MailServer.ycp 2008-05-26 19:14:48.000000000 +0200 +++ new/yast2-mail-2.16.7/src/MailServer.ycp 2008-07-23 16:26:30.000000000 +0200 @@ -184,17 +184,17 @@ /* looking if a mail domain exist */ map searchmap = $[ "base_dn" : LDAPSettings["base_config_dn"]:"", - "filter" : "objectclass=suseDnsConfiguration", + "filter" : "objectClass=suseDnsConfiguration", "attrs" : ["suseDefaultBase"], "not_found_ok": false, "scope" : 2 ]; list modulesDns = (list)SCR::Read (.ldap.search, searchmap); - string dns_base = (string)modulesDns[0,"susedefaultbase",0]:""; + string dns_base = (string)modulesDns[0,"suseDefaultBase",0]:""; searchmap = $[ "base_dn" : dns_base, - "filter" : "(&(objectclass=dNSZone)(relativeDomainName=@))", + "filter" : "(&(objectClass=dNSZone)(relativeDomainName=@))", "not_found_ok" : false, "map" : true, "scope" : 2 @@ -209,7 +209,7 @@ } boolean is_main_domain = false; foreach(string dn, map domain, (map<string,map>) domains, ``{ - if(domain["susemaildomaintype",0]:"" == "main" ) + if(domain["suseMailDomainType",0]:"" == "main" ) { is_main_domain = true; break; @@ -230,7 +230,7 @@ || substring (((list)domain["zonename"]:[])[0]:"", size (((list)domain["zonename"]:[])[0]:"") - size (".in-addr.arpa")) != ".in-addr.arpa") { - domain["objectclass"] = add(domain["objectclass"]:[], "suseMailDomain"); + domain["objectClass"] = add(domain["objectClass"]:[], "suseMailDomain"); domain["suseMailDomainType"] = ["main"]; domain["suseMailDomainMasquerading"] = ["yes"]; lastDomain = domain; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/src/mail.ycp new/yast2-mail-2.16.7/src/mail.ycp --- old/yast2-mail-2.16.6/src/mail.ycp 2008-05-20 18:10:54.000000000 +0200 +++ new/yast2-mail-2.16.7/src/mail.ycp 2008-06-25 12:32:14.000000000 +0200 @@ -12,7 +12,7 @@ * Martin Vidner <mvidner@suse.cz> * Peter Varkoly <varkoly@novell.com> * - * $Id: mail.ycp 47723 2008-05-20 16:08:22Z varkoly $ + * $Id: mail.ycp 48523 2008-06-25 10:29:36Z varkoly $ * * Main file for mail configuration. Uses all other files. * @@ -52,8 +52,8 @@ // Translators: start dialog help, part 2 of 4 _("<P>This module will configure and start Postfix and, if necessary, the Cyrus IMAP server.</P>")+ // Translators: start dialog help, part 3 of 4 - _("<p><b>Warning:</b><p> -Most home users can use the build-in + _("<P><B>Warning:</B></P> +<P>Most home users can use the build-in features of their email application to send and receive e-mail. They do not need this module.</P> ")+ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/src/YaPI/MailServer.pm new/yast2-mail-2.16.7/src/YaPI/MailServer.pm --- old/yast2-mail-2.16.6/src/YaPI/MailServer.pm 2008-06-05 12:46:37.000000000 +0200 +++ new/yast2-mail-2.16.7/src/YaPI/MailServer.pm 2008-07-23 16:26:30.000000000 +0200 @@ -37,6 +37,7 @@ use POSIX; # Needed for setlocale() use Data::Dumper; +use Net::IMAP; textdomain("mail"); our %TYPEINFO; @@ -55,6 +56,11 @@ my $proposal_valid = 0; ## + # Some global variables for cyrus-imapd +my $imapadm = "cyrus"; +my $imaphost = "localhost"; + +## # Write only, used during autoinstallation. # Don't run services and SuSEconfig, it's all done at one place. # @@ -457,7 +463,7 @@ my %SearchMap = ( 'base_dn' => $ldapMap->{'mail_config_dn'}, - 'filter' => "ObjectClass=suseCanonicalTable", + 'filter' => "objectClass=suseCanonicalTable", 'scope' => 2, 'map' => 1, 'attributes' => ['tableKey', @@ -474,9 +480,9 @@ foreach my $dn (keys %{$ret}) { my $Canonical = {}; - $Canonical->{'key'} = $ret->{$dn}->{'tablekey'}->[0]; - $Canonical->{'value'} = $ret->{$dn}->{'tablevalue'}->[0]; - $Canonical->{'type'} = $ret->{$dn}->{'valuetype'}->[0]; + $Canonical->{'key'} = $ret->{$dn}->{'tableKey'}->[0]; + $Canonical->{'value'} = $ret->{$dn}->{'tableValue'}->[0]; + $Canonical->{'type'} = $ret->{$dn}->{'valueType'}->[0]; if( defined $ret->{$dn}->{'description'}->[0] ) { $Canonical->{'description'} = $ret->{$dn}->{'description'}->[0]; @@ -659,7 +665,7 @@ my %SearchMap = ( 'base_dn' => $ldapMap->{'mail_config_dn'}, - 'filter' => "ObjectClass=suseMailTransport", + 'filter' => "objectClass=suseMailTransport", 'scope' => 2, 'map' => 1, 'attributes' => ['suseMailTransportDestination', @@ -674,14 +680,14 @@ foreach my $dn (keys %{$ret}) { my $Transport = {}; - $Transport->{'Destination'} = $ret->{$dn}->{'susemailtransportdestination'}->[0]; - if( $ret->{$dn}->{'susemailtransportnexthop'}->[0] =~ /:/) + $Transport->{'Destination'} = $ret->{$dn}->{'suseMailTransportDestination'}->[0]; + if( $ret->{$dn}->{'suseMailTransportNexthop'}->[0] =~ /:/) { - ($Transport->{'Transport'},$Transport->{'Nexthop'}) = split /:/,$ret->{$dn}->{'susemailtransportnexthop'}->[0]; + ($Transport->{'Transport'},$Transport->{'Nexthop'}) = split /:/,$ret->{$dn}->{'suseMailTransportNexthop'}->[0]; } else { - $Transport->{'Nexthop'} = $ret->{$dn}->{'susemailtransportnexthop'}->[0]; + $Transport->{'Nexthop'} = $ret->{$dn}->{'suseMailTransportNexthop'}->[0]; } push @{$MailTransports{'Transports'}}, $Transport; if( $Transport->{'Nexthop'} =~ /\[(.*)\]/ ) @@ -722,8 +728,8 @@ # filling up our array foreach my $dn (keys %{$ret}) { - my $TLSMode = $ret->{$dn}->{'susetlspersitemode'}->[0] || "NONE"; - my $TLSSite = $ret->{$dn}->{'susetlspersitepeer'}->[0] ; + my $TLSMode = $ret->{$dn}->{'suseTLSPerSiteMode'}->[0] || "NONE"; + my $TLSSite = $ret->{$dn}->{'suseTLSPerSitePeer'}->[0] ; $MailTransports{'TLSSites'}->{$TLSSite} = $TLSMode; } @@ -814,10 +820,10 @@ # Search hash to find all the Transport Objects my %SearchMap = ( 'base_dn' => $ldapMap->{'mail_config_dn'}, - 'filter' => "objectclass=susemailtransport", + 'filter' => "objectClass=suseMailTransport", 'map' => 1, 'scope' => 2, - 'attrs' => ['susemailtransportdestination' ] + 'attrs' => ['suseMailTransportDestination' ] ); my $ret = SCR->Read('.ldap.search',\%SearchMap); @@ -926,7 +932,7 @@ # Search hash to find all the TLSSites Objects %SearchMap = ( 'base_dn' => $ldapMap->{'mail_config_dn'}, - 'filter' => "objectclass=suseTLSPerSiteContainer", + 'filter' => "objectClass=suseTLSPerSiteContainer", 'map' => 1, 'scope' => 2, 'attrs' => [] @@ -1041,7 +1047,8 @@ 'BasicProtection' => 'hard', 'RBLList' => [], 'AccessList' => [], - 'VirusScanning' => 1 + 'VirusScanning' => 1, + 'SpamLearning' => 1 ); AccessList is a pointer to an array of %AccessEntry hashes. @@ -1086,7 +1093,8 @@ 'BasicProtection' => 'hard', 'RBLList' => [], 'AccessList' => [], - 'VirusScanning' => YaST::YCP::Boolean(0) + 'VirusScanning' => YaST::YCP::Boolean(0), + 'SpamLearning' => YaST::YCP::Boolean(0) ); # Make LDAP Connection @@ -1144,8 +1152,8 @@ foreach my $entry (@{$ret}) { my $AccessEntry = {}; - $AccessEntry->{'MailClient'} = $entry->{'susemailclient'}->[0]; - $AccessEntry->{'MailAction'} = $entry->{'susemailaction'}->[0]; + $AccessEntry->{'MailClient'} = $entry->{'suseMailClient'}->[0]; + $AccessEntry->{'MailAction'} = $entry->{'suseMailAction'}->[0]; push @{$MailPrevention{'AccessList'}}, $AccessEntry; } @@ -1163,6 +1171,19 @@ $MailPrevention{'VirusScanning'} = YaST::YCP::Boolean(1); } } + # make IMAP connection + my $imap = new Net::IMAP($imaphost, Debug => 0); + if( $imap ) + { + $ret = $imap->login($imapadm, $AdminPassword); + if($$ret{Status} eq "ok") { + $ret = $imap->select('NEWSPAM'); + if( $ret->{Status} eq 'ok' ) + { + $MailPrevention{'SpamLearning'} = YaST::YCP::Boolean(1); + } + } + } return \%MailPrevention; } @@ -1276,7 +1297,7 @@ #Now we have a look on the access table my %SearchMap = ( 'base_dn' => $ldapMap->{'mail_config_dn'}, - 'filter' => "ObjectClass=suseMailAccess", + 'filter' => "objectClass=suseMailAccess", 'scope' => 2, 'map' => 1 ); @@ -1391,6 +1412,24 @@ SCR->Write('.mail.postfix.main',undef); SCR->Write('.mail.postfix.mastercf',undef); + # make IMAP connection + my $imap = new Net::IMAP($imaphost, Debug => 0); + if( $imap ) + { + my $ret = $imap->login($imapadm, $AdminPassword); + if($$ret{Status} eq "ok") + { + if( $MailPrevention->{'SpamLearning'} ) + { + $ret = $imap->create('NewSpam'); + $ret = $imap->create('NoSpam'); + $ret = $imap->setacl('NewSpam', $imapadm, "lrswipkxtea"); + $ret = $imap->setacl('NoSpam', $imapadm, "lrswipkxtea"); + $ret = $imap->setacl('NewSpam', 'anyone', "lrswi"); + $ret = $imap->setacl('NoSpam', 'anyone', "lsi"); + } + } + } return 1; } @@ -2084,11 +2123,11 @@ foreach(@{$ret}) { my $domain = {}; - if( $_->{'zonename'}->[0] !~ /in-addr.arpa$/i) + if( $_->{'zoneName'}->[0] !~ /in-addr.arpa$/i) { - $domain->{'Name'} = $_->{'zonename'}->[0]; - $domain->{'Type'} = $_->{'susemaildomaintype'}->[0] || 'none'; - $domain->{'Masquerading'} = $_->{'susemaildomainmasquerading'}->[0] || 'yes'; + $domain->{'Name'} = $_->{'zoneName'}->[0]; + $domain->{'Type'} = $_->{'suseMailDomainType'}->[0] || 'none'; + $domain->{'Masquerading'} = $_->{'suseMailDomainMasquerading'}->[0] || 'yes'; push @{$MailLocalDomains{'Domains'}}, $domain; } } @@ -2139,15 +2178,15 @@ my $DN = "zoneName=$name,$ldapMap->{'dns_config_dn'}"; my $retVal = SCR->Read('.ldap.search',{ "base_dn" => $DN, - "filter" => '(objectclass=dNSZone)', + "filter" => '(objectClass=dNSZone)', "scope" => 0, "not_found_ok" => 0 } ); - if( defined $retVal && defined $retVal->[0] && defined $retVal->[0]->{'objectclass'}) + if( defined $retVal && defined $retVal->[0] && defined $retVal->[0]->{'objectClass'}) { my $found = 0; - foreach my $ojc ( @{$retVal->[0]->{'objectclass'}} ) + foreach my $ojc ( @{$retVal->[0]->{'objectClass'}} ) { if($ojc =~ /^suseMailDomain$/i) { $found = 1; @@ -2156,9 +2195,9 @@ } if($found && $type eq 'none') { - # delete objectclass + # delete objectClass - $Domains->{$DN}->{'objectclass'} = ['dNSZone']; + $Domains->{$DN}->{'objectClass'} = ['dNSZone']; $Domains->{$DN}->{'suseMailDomainType'} = []; $Domains->{$DN}->{'suseMailDomainMasquerading'} = []; @@ -2180,7 +2219,7 @@ { # modify - $Domains->{$DN}->{'objectclass'} = ['dNSZone','suseMailDomain']; + $Domains->{$DN}->{'objectClass'} = ['dNSZone','suseMailDomain']; $Domains->{$DN}->{'zoneName'} = $name; $Domains->{$DN}->{'suseMailDomainType'} = $type; $Domains->{$DN}->{'suseMailDomainMasquerading'} = $masquerading; @@ -2312,7 +2351,7 @@ # read mail configuration data $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseMailConfiguration)', + "filter" => '(objectClass=suseMailConfiguration)', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'suseDefaultBase' ] @@ -2326,7 +2365,7 @@ } if(@$ldapret > 0) { - $ldapMap->{'mail_config_dn'} = $ldapret->[0]->{'susedefaultbase'}->[0]; + $ldapMap->{'mail_config_dn'} = $ldapret->[0]->{'suseDefaultBase'}->[0]; } else { @@ -2366,7 +2405,7 @@ # check whether ou=Mailserver tree exists $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'ldap_domain'}, - "filter" => '(&(ou=Mailserver)(objectclass=organizationalUnit))', + "filter" => '(&(ou=Mailserver)(objectClass=organizationalUnit))', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'ou' ] @@ -2408,7 +2447,7 @@ # check whether mail plugin is already in the pluginlist $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseUserTemplate)', + "filter" => '(objectClass=suseUserTemplate)', "scope" => 2, "not_found_ok" => 1 }); @@ -2423,9 +2462,9 @@ { # my $foundplugin = 0; - if( defined $ldapret->[0]->{'suseplugin'} ) + if( defined $ldapret->[0]->{'susePlugin'} ) { - foreach my $sp ( @{$ldapret->[0]->{'suseplugin'}} ) + foreach my $sp ( @{$ldapret->[0]->{'susePlugin'}} ) { $foundplugin = 1 if lc($sp) eq "userspluginmail"; } @@ -2440,7 +2479,7 @@ description => $ldapERR->{'code'}." : ".$ldapERR->{'msg'}); } my $dn = "cn=userTemplate,".$ldapMap->{'base_config_dn'}; - my $pluginlist = $ldapret->[0]->{'suseplugin'}; + my $pluginlist = $ldapret->[0]->{'susePlugin'}; push @$pluginlist, 'UsersPluginMail'; if( ! SCR->Write('.ldap.modify', { "dn" => $dn }, @@ -2464,7 +2503,7 @@ # now we search user base $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseUserConfiguration)', + "filter" => '(objectClass=suseUserConfiguration)', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'suseDefaultBase' ] @@ -2478,12 +2517,12 @@ } if(@$ldapret > 0) { - $ldapMap->{'user_config_dn'} = $ldapret->[0]->{'susedefaultbase'}->[0]; + $ldapMap->{'user_config_dn'} = $ldapret->[0]->{'suseDefaultBase'}->[0]; } # now we search group base $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseGroupConfiguration)', + "filter" => '(objectClass=suseGroupConfiguration)', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'suseDefaultBase' ] @@ -2497,12 +2536,12 @@ } if(@$ldapret > 0) { - $ldapMap->{'group_config_dn'} = $ldapret->[0]->{'susedefaultbase'}->[0]; + $ldapMap->{'group_config_dn'} = $ldapret->[0]->{'suseDefaultBase'}->[0]; } # now we search DNS base $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseDNSConfiguration)', + "filter" => '(objectClass=suseDNSConfiguration)', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'suseDefaultBase' ] @@ -2515,7 +2554,7 @@ code => "LDAP_SEARCH_FAILED"); } if(@$ldapret > 0) { - $ldapMap->{'dns_config_dn'} = $ldapret->[0]->{'susedefaultbase'}->[0]; + $ldapMap->{'dns_config_dn'} = $ldapret->[0]->{'suseDefaultBase'}->[0]; } else { @@ -2876,19 +2915,19 @@ my $changes = 0; my %query_filter = ( - 'transport_maps' => '(&(objectclass=suseMailTransport)(suseMailTransportDestination=%s))', - 'smtp_tls_per_site' => '(&(objectclass=suseMailTransport)(suseMailTransportDestination=%s))', - 'access' => '(&(objectclass=suseMailAccess)(suseMailClient=%s))', - 'local_recipient_maps'=> '(&(objectclass=suseMailRecipient)(|(suseMailAcceptAddress=%s)(uid=%s)))', - 'alias_maps' => '(&(objectclass=suseMailRecipient)(cn=%s))', - 'alias_maps_member' => '(&(objectclass=suseMailRecipient)(cn=%s)(suseDeliveryToMember=yes))', - 'mynetworks' => '(&(objectclass=suseMailMyNetworks)(suseMailClient=%s))', - 'masquerade_domains' => '(&(objectclass=suseMailDomain)(zoneName=%s)(suseMailDomainMasquerading=yes))', - 'mydestination' => '(&(objectclass=suseMailDomain)(zoneName=%s)(relativeDomainName=@)(!(suseMailDomainType=virtual)))', - 'virtual_alias_maps' => '(&(objectclass=suseMailDomain)(zoneName=%s)(relativeDomainName=@)(suseMailDomainType=virtual))', - 'canonical_maps' => '(&(objectclass=suseCanonicalTable)(tableKey=%s)(valueType=both))', - 'recipient_canonical_maps' => '(&(objectclass=suseCanonicalTable)(tableKey=%s)(valueType=recipient))', - 'sender_canonical_maps' => '(&(objectclass=suseCanonicalTable)(tableKey=%s)(valueType=sender))' + 'transport_maps' => '(&(objectClass=suseMailTransport)(suseMailTransportDestination=%s))', + 'smtp_tls_per_site' => '(&(objectClass=suseMailTransport)(suseMailTransportDestination=%s))', + 'access' => '(&(objectClass=suseMailAccess)(suseMailClient=%s))', + 'local_recipient_maps'=> '(&(objectClass=suseMailRecipient)(|(suseMailAcceptAddress=%s)(uid=%s)))', + 'alias_maps' => '(&(objectClass=suseMailRecipient)(cn=%s))', + 'alias_maps_member' => '(&(objectClass=suseMailRecipient)(cn=%s)(suseDeliveryToMember=yes))', + 'mynetworks' => '(&(objectClass=suseMailMyNetworks)(suseMailClient=%s))', + 'masquerade_domains' => '(&(objectClass=suseMailDomain)(zoneName=%s)(suseMailDomainMasquerading=yes))', + 'mydestination' => '(&(objectClass=suseMailDomain)(zoneName=%s)(relativeDomainName=@)(!(suseMailDomainType=virtual)))', + 'virtual_alias_maps' => '(&(objectClass=suseMailDomain)(zoneName=%s)(relativeDomainName=@)(suseMailDomainType=virtual))', + 'canonical_maps' => '(&(objectClass=suseCanonicalTable)(tableKey=%s)(valueType=both))', + 'recipient_canonical_maps' => '(&(objectClass=suseCanonicalTable)(tableKey=%s)(valueType=recipient))', + 'sender_canonical_maps' => '(&(objectClass=suseCanonicalTable)(tableKey=%s)(valueType=sender))' ); my %result_attribute = ( 'transport_maps' => 'suseMailTransportNexthop', diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/users-plugin/users_plugin_mail_groups.ycp new/yast2-mail-2.16.7/users-plugin/users_plugin_mail_groups.ycp --- old/yast2-mail-2.16.6/users-plugin/users_plugin_mail_groups.ycp 2007-07-18 15:41:20.000000000 +0200 +++ new/yast2-mail-2.16.7/users-plugin/users_plugin_mail_groups.ycp 2008-07-23 16:26:30.000000000 +0200 @@ -145,17 +145,17 @@ list<term> result = []; integer i = 0; - if( is(data["susemailforwardaddress"]:(any)"", string) - && size (data["susemailforwardaddress"]:"") > 0 ) + if( is(data["suseMailForwardAaddress"]:(any)"", string) + && size (data["suseMailForwardAaddress"]:"") > 0 ) { result = [`item (`id (i), - data["susemailforwardaddress"]:"")]; + data["suseMailForwardAaddress"]:"")]; // transforming to list - data["susemailforwardaddress"] = [data["susemailforwardaddress"]:""]; + data["suseMailForwardAaddress"] = [data["suseMailForwardAaddress"]:""]; } - else if ( is(data["susemailforwardaddress"]:(any)[], list) ) + else if ( is(data["suseMailForwardAaddress"]:(any)[], list) ) { - foreach (string element, data["susemailforwardaddress"]:[], ``{ + foreach (string element, data["suseMailForwardAaddress"]:[], ``{ result = add (result, `item (`id (i), element)); i = i + 1; }); @@ -169,16 +169,16 @@ string what = config["what"]:"user"; string action = data["what"]:""; - if( data["susemailcommand"]:"" != "" ) { + if( data["suseMailCommand"]:"" != "" ) { sharedfolder = true; } - if( data["susedeliverytomember"]:"no" == "yes" ) { + if( data["suseDeliveryToMember"]:"no" == "yes" ) { deliverytomember = true; sharedfolder = false; } map<string, any> tmp_data = $[]; - list<string> object_class = (list<string>)sort (data["objectclass"]:[]); + list<string> object_class = (list<string>)sort (data["objectClass"]:[]); // if this plugin wasn't present in default plugin set, we have to call // BeforeAdd/BeforeEdit e.g. to get object class! @@ -188,8 +188,8 @@ data = UsersPluginMail::AddBefore (config, data); else if (action == "edit_user" || action == "edit_group") data = UsersPluginMail::EditBefore (config, data); - object_class = (list<string>)sort (data["objectclass"]:[]); - tmp_data["objectclass"] = object_class; + object_class = (list<string>)sort (data["objectClass"]:[]); + tmp_data["objectClass"] = object_class; } // helptext 1/3 @@ -233,10 +233,10 @@ term imap = `VBox(); term shared = `VBox(); - integer intimapquota = -1; - if (haskey (data, "imapquota") && data["imapquota"]:"10000" != nil) + integer intimapQuota = -1; + if (haskey (data, "imapQuota") && data["imapQuota"]:"10000" != nil) { - intimapquota = tointeger ((string) data["imapquota"]:"-1" ); + intimapQuota = tointeger ((string) data["imapQuota"]:"-1" ); } shared = `Frame ( _("Delivery of group Mails"), `VBox( @@ -253,12 +253,12 @@ imap = `Frame ( _("IMAP Quota"), `VBox( `Left(`CheckBox( `id(`sharedfolder), `opt(`notify), _("Enable Shared Folder"), sharedfolder)), - `Left(`CheckBox( `id(`enableImpapquota ), `opt(`notify), _("Enable IMAP Quota"), intimapquota >= 0)), + `Left(`CheckBox( `id(`enableImpapquota ), `opt(`notify), _("Enable IMAP Quota"), intimapQuota >= 0)), `HBox( - `IntField (`id(`imapquota), _("in kByte"), 1, 10000000, intimapquota >= 0 ? intimapquota : 10000), + `IntField (`id(`imapQuota), _("in kByte"), 1, 10000000, intimapQuota >= 0 ? intimapQuota : 10000), `HStretch() ), - `Left(`Label(sformat (_("IMAP quota already in use: %1 kByte"), data["imapquotaused"]:"0" != nil ? data["imapquotaused"]:"0":"0"))) + `Left(`Label(sformat (_("IMAP quota already in use: %1 kByte"), data["imapQuotaused"]:"0" != nil ? data["imapQuotaused"]:"0":"0"))) ) ); } @@ -311,17 +311,17 @@ UI::ChangeWidget(`id(`sharedfolder), `Enabled, true); if( sharedfolder ) { UI::ChangeWidget(`id(`enableImpapquota), `Enabled, true ); - UI::ChangeWidget(`id(`imapquota), `Enabled, enableImpapquota); + UI::ChangeWidget(`id(`imapQuota), `Enabled, enableImpapquota); } else { UI::ChangeWidget(`id(`enableImpapquota), `Enabled, false ); - UI::ChangeWidget(`id(`imapquota), `Enabled, false ); + UI::ChangeWidget(`id(`imapQuota), `Enabled, false ); } } else { // If there is no cyrus, we have only delivery to member deliverytomember = true; UI::ChangeWidget(`id(`deliverytomember), `Value, deliverytomember); UI::ChangeWidget(`id(`enableImpapquota), `Enabled, false ); - UI::ChangeWidget(`id(`imapquota), `Enabled, false ); + UI::ChangeWidget(`id(`imapQuota), `Enabled, false ); } ret = UI::UserInput(); @@ -334,13 +334,13 @@ { if (check_mail_address (emailName)) { - if (contains (data["susemailforwardaddress"]:[], emailName)) + if (contains (data["suseMailForwardAaddress"]:[], emailName)) { Popup::Error(_("Entry already exists.")); } else { - data["susemailforwardaddress"] = add (data["susemailforwardaddress"]:[], + data["suseMailForwardAaddress"] = add (data["suseMailForwardAaddress"]:[], emailName); UI::ChangeWidget(`id(`table), `Items, getEMAILList ()); UI::ChangeWidget(`id(`id_emailname), `Value, ""); @@ -355,41 +355,41 @@ if (ret == `deleteEmail) { integer id = (integer) UI::QueryWidget (`id (`table), `CurrentItem); - data["susemailforwardaddress"] = remove (data["susemailforwardaddress"]:[], + data["suseMailForwardAaddress"] = remove (data["suseMailForwardAaddress"]:[], id); UI::ChangeWidget(`id(`table), `Items, getEMAILList ()); } if (ret == `editEmail) { integer id = (integer) UI::QueryWidget (`id (`table), `CurrentItem); - string oldEMAIL = (string)((list) data["susemailforwardaddress"]:[])[id]:""; + string oldEMAIL = (string)((list) data["suseMailForwardAaddress"]:[])[id]:""; string newEMAIL = editEMAIL (oldEMAIL); - if (contains (data["susemailforwardaddress"]:[], newEMAIL)) + if (contains (data["suseMailForwardAaddress"]:[], newEMAIL)) { Popup::Error(_("Entry already exists.")); } else { - data["susemailforwardaddress"] = remove (data["susemailforwardaddress"]:[], id); - data["susemailforwardaddress"] = add (data["susemailforwardaddress"]:[], newEMAIL); + data["suseMailForwardAaddress"] = remove (data["suseMailForwardAaddress"]:[], id); + data["suseMailForwardAaddress"] = add (data["suseMailForwardAaddress"]:[], newEMAIL); } UI::ChangeWidget(`id(`table), `Items, getEMAILList ()); } if ( ret == `next ) { if((boolean) UI::QueryWidget (`id (`deliverytomember), `Value)){ - data["susedeliverytomember"] = "yes"; + data["suseDeliveryToMember"] = "yes"; } else { - data["susedeliverytomember"] = "no"; + data["suseDeliveryToMember"] = "no"; } // We put it everytime into the LDAP, and the ldap filter control if it is visible - data["susemailcommand"] = "\"|/usr/bin/formail -I \\\"From \\\" |/usr/lib/cyrus/bin/deliver -r "+data["cn"]:""+" -a cyrus -m "+data["cn"]:""+"\""; + data["suseMailCommand"] = "\"|/usr/bin/formail -I \\\"From \\\" |/usr/lib/cyrus/bin/deliver -r "+data["cn"]:""+" -a cyrus -m "+data["cn"]:""+"\""; // if( (boolean) UI::QueryWidget (`id (`sharedfolder), `Value)) { -// data["susemailcommand"] = "\"|/usr/bin/formail -I \\\"From \\\" |/usr/lib/cyrus/bin/deliver -r "+data["cn"]:""+" -a cyrus -m "+data["cn"]:""+"\""; +// data["suseMailCommand"] = "\"|/usr/bin/formail -I \\\"From \\\" |/usr/lib/cyrus/bin/deliver -r "+data["cn"]:""+" -a cyrus -m "+data["cn"]:""+"\""; // } else { -// if( data["susemailcommand"]:"" != "" ) { -// data = remove (data, "susemailcommand"); +// if( data["suseMailCommand"]:"" != "" ) { +// data = remove (data, "suseMailCommand"); // } // } string err = UsersPluginMail::Check ( config, (map<string,any>) union (data, tmp_data)); @@ -407,20 +407,20 @@ data["plugins"] = add (data["plugins"]:[], "UsersPluginMail"); } - if( size(data["susemailforwardaddress"]:[]) == 1 ) { - data["susemailforwardaddress"] = ((list)data["susemailforwardaddress"]:[])[0]:""; - } else if( size(data["susemailforwardaddress"]:[]) == 0 ) { - remove(data,"susemailforwardaddress"); + if( size(data["suseMailForwardAaddress"]:[]) == 1 ) { + data["suseMailForwardAaddress"] = ((list)data["suseMailForwardAaddress"]:[])[0]:""; + } else if( size(data["suseMailForwardAaddress"]:[]) == 0 ) { + remove(data,"suseMailForwardAaddress"); } if(data["localdeliverytype"]:"local" == "cyrus" ) { if ((boolean) UI::QueryWidget(`id(`enableImpapquota), `Value)) { - data["imapquota"] = (integer) UI::QueryWidget(`id(`imapquota), `Value); + data["imapQuota"] = (integer) UI::QueryWidget(`id(`imapQuota), `Value); } else { - data["imapquota"] = -1; + data["imapQuota"] = -1; } } if (data["what"]:"" == "edit_user") diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/users-plugin/UsersPluginMail.pm new/yast2-mail-2.16.7/users-plugin/UsersPluginMail.pm --- old/yast2-mail-2.16.6/users-plugin/UsersPluginMail.pm 2008-05-28 14:13:29.000000000 +0200 +++ new/yast2-mail-2.16.7/users-plugin/UsersPluginMail.pm 2008-07-23 16:26:30.000000000 +0200 @@ -170,7 +170,7 @@ my $data = shift; y2internal ("PluginPresent Mail called"); - if ( grep /^suseMailRecipient$/i, @{$data->{'objectclass'}} ) { + if ( grep /^suseMailRecipient$/i, @{$data->{'objectClass'}} ) { y2milestone( "MailPlugin: Plugin Present"); return 1; } else { @@ -194,8 +194,8 @@ # attribute conversion my @required_attrs = (); my @object_classes = (); - if (defined $data->{"objectclass"} && ref ($data->{"objectclass"}) eq "ARRAY") { - @object_classes = @{$data->{"objectclass"}}; + if (defined $data->{"objectClass"} && ref ($data->{"objectClass"}) eq "ARRAY") { + @object_classes = @{$data->{"objectClass"}}; } # get the attributes required for entry's object classes @@ -269,7 +269,7 @@ $data->{'localdeliverytype'} = $MailLocalDelivery->{'Type'}; if($data->{'localdeliverytype'} eq 'cyrus' ) { #setting default quota - $data->{'suseimapquota'} = $ldapret->[0]->{'suseimapdefaultquota'}->[0]; + $data->{'suseImapQuota'} = $ldapret->[0]->{'suseImapDefaultQuota'}->[0]; } # looking for the main mail domain and returns @@ -292,15 +292,15 @@ if( grep /^UsersPluginMail$/, @{$data->{'plugins_to_remove'}} ) { my @updated_oc; - foreach my $oc ( @{$data->{'objectclass'}} ) { - if ( lc($oc) ne "susemailrecipient" ) { + foreach my $oc ( @{$data->{'objectClass'}} ) { + if ( lc($oc) ne "suseMailRecipient" ) { push @updated_oc, $oc; } } - delete( $data->{'suseimapquota'}); + delete( $data->{'suseImapQuota'}); delete( $data->{'imapquotaused'}); - $data->{'objectclass'} = \@updated_oc; + $data->{'objectClass'} = \@updated_oc; y2debug ("Removed Mail plugin"); y2debug ( Data::Dumper->Dump( [ $data ] ) ); return $data; @@ -325,7 +325,7 @@ # Only change objectclasses if they are already present (sometimes EditBefore # is called with an empty $data hash) - if ( $data->{'objectclass'} ) { + if ( $data->{'objectClass'} ) { $data = update_object_classes ($config, $data); my $ldapret = get_LDAP_Config(); @@ -357,7 +357,7 @@ y2internal ("Edit Mail called"); y2debug(Dumper($data)); - if ( ! $data->{'suseimapquota'} ) { + if ( ! $data->{'suseImapQuota'} ) { my $tmp_data = cond_IMAP_OP($config, $data, "getquota"); if( $tmp_data ) { $data = $tmp_data; @@ -366,15 +366,15 @@ # Has the plugin been removed? if( grep /^UsersPluginMail$/, @{$data->{'plugins_to_remove'}} ) { my @updated_oc; - foreach my $oc ( @{$data->{'objectclass'}} ) { - if ( lc($oc) ne "susemailrecipient" ) { + foreach my $oc ( @{$data->{'objectClass'}} ) { + if ( lc($oc) ne "suseMailRecipient" ) { push @updated_oc, $oc; } } - delete( $data->{'suseimapquota'}); + delete( $data->{'suseImapQuota'}); delete( $data->{'imapquotaused'}); - $data->{'objectclass'} = \@updated_oc; + $data->{'objectClass'} = \@updated_oc; y2milestone ("Removed Mail plugin"); y2debug ( Data::Dumper->Dump( [ $data ] ) ); @@ -484,7 +484,7 @@ elsif ( ($data->{'what'} =~ /^edit_/ ) && $self->PluginPresent($config, $data) ) { # create Folder if plugin has been added - if ( ! grep /^suseMailRecipient$/i, @{$data->{'org_user'}->{'objectclass'}} ) { + if ( ! grep /^suseMailRecipient$/i, @{$data->{'org_user'}->{'objectClass'}} ) { y2milestone("creating INBOX"); cond_IMAP_OP($config, $data, "add") if $action eq "edited"; return; @@ -520,9 +520,9 @@ # define the object class for new user/groupa my @orig_object_class = (); - if (defined $data->{"objectclass"} && ref $data->{"objectclass"} eq "ARRAY") + if (defined $data->{"objectClass"} && ref $data->{"objectClass"} eq "ARRAY") { - @orig_object_class = @{$data->{"objectclass"}}; + @orig_object_class = @{$data->{"objectClass"}}; } foreach my $oc (@default_object_class) { if (!contains (\@orig_object_class, $oc, 1)) { @@ -530,7 +530,7 @@ } } - $data->{"objectclass"} = \@orig_object_class; + $data->{"objectClass"} = \@orig_object_class; return $data; } @@ -539,8 +539,8 @@ my $config = shift; my $data = shift; - if( ! contains( $data->{objectclass}, "susemailrecipient", 1) ) { - push @{$data->{'objectclass'}}, "susemailrecipient"; + if( ! contains( $data->{objectClass}, "suseMailRecipient", 1) ) { + push @{$data->{'objectClass'}}, "suseMailRecipient"; } if( $config->{'what'} eq 'group' ) { @@ -553,19 +553,19 @@ return $data; } my $mailaddress = $data->{'uid'}."\@".$data->{mainmaildomain}; - if( defined $data->{susemailacceptaddress} ) { - if( ref($data->{susemailacceptaddress}) eq "ARRAY" && - ! contains( $data->{susemailacceptaddress}, $mailaddress, 1) ) { - push @{$data->{'susemailacceptaddress'}}, $mailaddress; - } elsif ( ref($data->{susemailacceptaddress}) ne "ARRAY" && - $data->{susemailacceptaddress} ne $mailaddress ) { - my $tmp = $data->{'susemailacceptaddress'}; - $data->{'susemailacceptaddress'} = []; - push @{$data->{'susemailacceptaddress'}}, $tmp; - push @{$data->{'susemailacceptaddress'}}, $mailaddress; + if( defined $data->{suseMailAcceptAddress} ) { + if( ref($data->{suseMailAcceptAddress}) eq "ARRAY" && + ! contains( $data->{suseMailAcceptAddress}, $mailaddress, 1) ) { + push @{$data->{'suseMailAcceptAddress'}}, $mailaddress; + } elsif ( ref($data->{suseMailAcceptAddress}) ne "ARRAY" && + $data->{suseMailAcceptAddress} ne $mailaddress ) { + my $tmp = $data->{'suseMailAcceptAddress'}; + $data->{'suseMailAcceptAddress'} = []; + push @{$data->{'suseMailAcceptAddress'}}, $tmp; + push @{$data->{'suseMailAcceptAddress'}}, $mailaddress; } } else { - $data->{susemailacceptaddress} = $mailaddress; + $data->{suseMailAcceptAddress} = $mailaddress; } return $data; @@ -577,7 +577,7 @@ # Read mail specific ldapconfig object my $ldapret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseMailConfiguration)', + "filter" => '(objectClass=suseMailConfiguration)', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'suseImapServer', 'suseImapAdmin', 'suseImapDefaultQuota' ] @@ -598,7 +598,7 @@ # read dns configuration data my $ret = SCR->Read(".ldap.search", { "base_dn" => $ldapMap->{'base_config_dn'}, - "filter" => '(objectclass=suseDnsConfiguration)', + "filter" => '(objectClass=suseDnsConfiguration)', "scope" => 2, "not_found_ok" => 1, "attrs" => [ 'suseDefaultBase' ] @@ -609,7 +609,7 @@ return undef; } if(@$ret > 0) { - $ldapMap->{'dns_config_dn'} = $ret->[0]->{'susedefaultbase'}->[0]; + $ldapMap->{'dns_config_dn'} = $ret->[0]->{'suseDefaultBase'}->[0]; } else { my $ldapERR = SCR->Read(".ldap.error"); $error = "DNS Setup Error: ".$ldapERR->{'code'}." : ".$ldapERR->{'msg'}; @@ -641,7 +641,7 @@ $error = "There are defined more then one main mail domain. Please fix it!"; return undef; } else { - $domain = $ret->[0]->{'zonename'}->[0]; + $domain = $ret->[0]->{'zoneName'}->[0]; } $data->{'mainmaildomain'} = $domain; return $data; @@ -663,13 +663,13 @@ my $ldapret = get_LDAP_Config(); if(@$ldapret > 0) { - $imapadm = $ldapret->[0]->{'suseimapadmin'}->[0]; - $imaphost = $ldapret->[0]->{'suseimapserver'}->[0]; - #$imapquota = $ldapret->[0]->{'suseimapdefaultquota'}->[0]; + $imapadm = $ldapret->[0]->{'suseImapAdmin'}->[0]; + $imaphost = $ldapret->[0]->{'suseImapServer'}->[0]; + #$imapquota = $ldapret->[0]->{'suseImapDefaultQuota'}->[0]; } - if ( $data->{'suseimapquota'} ) { - $imapquota = $data->{'suseimapquota'}; + if ( $data->{'suseImapQuota'} ) { + $imapquota = $data->{'suseImapQuota'}; } # we need to ensure, that imapadmpw == rootdnpw! @@ -909,8 +909,8 @@ $proxy_imap->logout(); } } else { - if( defined $data->{'suseimapquota'} && $data->{'suseimapquota'} > 0 ) { - $ret = $imap->setquota($fname, ("STORAGE", $data->{'suseimapquota'} ) ); + if( defined $data->{'suseImapQuota'} && $data->{'suseImapQuota'} > 0 ) { + $ret = $imap->setquota($fname, ("STORAGE", $data->{'suseImapQuota'} ) ); if($$ret{Status} ne "ok") { y2internal("setquota failed: Serverresponse:$$ret{Status} => $$ret{Text}\n"); $error = "setquota failed: Serverresponse:$$ret{Status} => $$ret{Text}"; @@ -933,7 +933,7 @@ my $self = shift; my $resp = shift; - $data->{'suseimapquota'} = $resp->limit("STORAGE"); + $data->{'suseImapQuota'} = $resp->limit("STORAGE"); $data->{'imapquotaused'} = $resp->usage("STORAGE"); }; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/users-plugin/users_plugin_mail.ycp new/yast2-mail-2.16.7/users-plugin/users_plugin_mail.ycp --- old/yast2-mail-2.16.6/users-plugin/users_plugin_mail.ycp 2008-05-26 19:14:48.000000000 +0200 +++ new/yast2-mail-2.16.7/users-plugin/users_plugin_mail.ycp 2008-07-23 16:26:30.000000000 +0200 @@ -143,17 +143,17 @@ list<term> result = []; integer i = 0; - if( is(data["susemailacceptaddress"]:(any)"", string) - && size (data["susemailacceptaddress"]:"") > 0 ) + if( is(data["suseMailAcceptAddress"]:(any)"", string) + && size (data["suseMailAcceptAddress"]:"") > 0 ) { result = [`item (`id (i), - data["susemailacceptaddress"]:"")]; + data["suseMailAcceptAddress"]:"")]; // transforming to list - data["susemailacceptaddress"] = [data["susemailacceptaddress"]:""]; + data["suseMailAcceptAddress"] = [data["suseMailAcceptAddress"]:""]; } - else if ( is(data["susemailacceptaddress"]:(any)[], list) ) + else if ( is(data["suseMailAcceptAddress"]:(any)[], list) ) { - foreach (string element, data["susemailacceptaddress"]:[], ``{ + foreach (string element, data["suseMailAcceptAddress"]:[], ``{ result = add (result, `item (`id (i), element)); i = i + 1; }); @@ -182,7 +182,7 @@ string action = data["what"]:""; map<string, any> tmp_data = $[]; - list<string> object_class = (list<string>)sort (data["objectclass"]:[]); + list<string> object_class = (list<string>)sort (data["objectClass"]:[]); // if this plugin wasn't present in default plugin set, we have to call // BeforeAdd/BeforeEdit e.g. to get object class! @@ -192,8 +192,8 @@ data = UsersPluginMail::AddBefore (config, data); else if (action == "edit_user" || action == "edit_group") data = UsersPluginMail::EditBefore (config, data); - object_class = (list<string>)sort (data["objectclass"]:[]); - tmp_data["objectclass"] = object_class; + object_class = (list<string>)sort (data["objectClass"]:[]); + tmp_data["objectClass"] = object_class; } // helptext 1/3 @@ -243,10 +243,10 @@ term imap = `VBox(); integer intimapquota = -1; - if (haskey (data, "suseimapquota") - && data["suseimapquota"]:"10000" != nil) + if (haskey (data, "suseImapQuota") + && data["suseImapQuota"]:"10000" != nil) { - intimapquota = tointeger ((string) data["suseimapquota"]:"10000" ); + intimapquota = tointeger ((string) data["suseImapQuota"]:"10000" ); } if(data["localdeliverytype"]:"local" == "cyrus" ) { @@ -306,13 +306,13 @@ { if (check_mail_address (emailName)) { - if (contains (data["susemailacceptaddress"]:[], emailName)) + if (contains (data["suseMailAcceptAddress"]:[], emailName)) { Popup::Error(_("Entry already exists.")); } else { - data["susemailacceptaddress"] = add (data["susemailacceptaddress"]:[], + data["suseMailAcceptAddress"] = add (data["suseMailAcceptAddress"]:[], emailName); UI::ChangeWidget(`id(`table), `Items, getEMAILList ()); UI::ChangeWidget(`id(`id_emailname), `Value, ""); @@ -327,25 +327,25 @@ if (ret == `deleteEmail) { integer id = (integer) UI::QueryWidget (`id (`table), `CurrentItem); - data["susemailacceptaddress"] = remove (data["susemailacceptaddress"]:[], + data["suseMailAcceptAddress"] = remove (data["suseMailAcceptAddress"]:[], id); UI::ChangeWidget(`id(`table), `Items, getEMAILList ()); } if (ret == `editEmail) { integer id = (integer) UI::QueryWidget (`id (`table), `CurrentItem); - string oldEMAIL = (string)((list) data["susemailacceptaddress"]:[])[id]:""; + string oldEMAIL = (string)((list) data["suseMailAcceptAddress"]:[])[id]:""; string newEMAIL = editEMAIL (oldEMAIL); - if (contains (data["susemailacceptaddress"]:[], newEMAIL)) + if (contains (data["suseMailAcceptAddress"]:[], newEMAIL)) { Popup::Error(_("Entry already exists.")); } else { - data["susemailacceptaddress"] = remove (data["susemailacceptaddress"]:[], + data["suseMailAcceptAddress"] = remove (data["suseMailAcceptAddress"]:[], id); - data["susemailacceptaddress"] = add (data["susemailacceptaddress"]:[], + data["suseMailAcceptAddress"] = add (data["suseMailAcceptAddress"]:[], newEMAIL); } UI::ChangeWidget(`id(`table), `Items, getEMAILList ()); @@ -370,20 +370,20 @@ data["plugins"] = add (data["plugins"]:[], "UsersPluginMail"); } - if( size(data["susemailacceptaddress"]:[]) == 1 ) { - data["susemailacceptaddress"] = ((list)data["susemailacceptaddress"]:[])[0]:""; - } else if( size(data["susemailacceptaddress"]:[]) == 0 ) { - remove(data,"susemailacceptaddress"); + if( size(data["suseMailAcceptAddress"]:[]) == 1 ) { + data["suseMailAcceptAddress"] = ((list)data["suseMailAcceptAddress"]:[])[0]:""; + } else if( size(data["suseMailAcceptAddress"]:[]) == 0 ) { + remove(data,"suseMailAcceptAddress"); } if(data["localdeliverytype"]:"local" == "cyrus" ) { if ((boolean) UI::QueryWidget(`id(`enableImpapquota), `Value)) { - data["suseimapquota"] = (integer) UI::QueryWidget(`id(`imapquota), `Value); + data["suseImapQuota"] = (integer) UI::QueryWidget(`id(`imapquota), `Value); } else { - data["suseimapquota"] = -1; + data["suseImapQuota"] = -1; } } if (data["what"]:"" == "edit_user") diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-mail-2.16.6/VERSION new/yast2-mail-2.16.7/VERSION --- old/yast2-mail-2.16.6/VERSION 2008-06-05 14:36:21.000000000 +0200 +++ new/yast2-mail-2.16.7/VERSION 2008-07-24 12:35:26.000000000 +0200 @@ -1 +1 @@ -2.16.6 +2.16.7 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de