<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 03:18:26 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MAGNOLIA-540] Replacing default multipart filter implementation (problematic com.oreilly.servlet package license terms)</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-540</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;The WAR file download contains Jason Hunter&apos;s com.oreilly.servlet package in the WEB-INF/lib directory. Its license terms (see &lt;a href=&quot;http://servlets.com/cos/license.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://servlets.com/cos/license.html&lt;/a&gt;) are problematic I fear.&lt;/p&gt;

&lt;p&gt;Especially items 5 and 6 are currently violated:&lt;/p&gt;

&lt;p&gt;&quot;5. The distribution includes copyright notice as follows: &quot;The source code, object code, and documentation in the com.oreilly.servlet package is copyright and owned by Jason Hunter.&quot; in the documentation and/or other materials provided with the distribution.&lt;/p&gt;

&lt;p&gt;6. You reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.&quot;&lt;/p&gt;

&lt;p&gt;Both &quot;license.txt&quot; and &quot;release notes.txt&quot; contained in the WAR file download do not mention anything demanded by the terms cited above.&lt;/p&gt;

&lt;p&gt;A problematic second point is the license for commercial usage and redistribution as every developer must own a copy of Jason&apos;s book or negotiate a seperate license.&lt;/p&gt;

&lt;p&gt;Jakarta Commons FileUpload (&lt;a href=&quot;http://jakarta.apache.org/commons/fileupload/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://jakarta.apache.org/commons/fileupload/&lt;/a&gt;) is a possible replacement at least for some functionality.&lt;/p&gt;</description>
                <environment></environment>
        <key id="11020">MAGNOLIA-540</key>
            <summary>Replacing default multipart filter implementation (problematic com.oreilly.servlet package license terms)</summary>
                <type id="3" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10898&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="8">Outdated</resolution>
                                        <assignee username="fgiust">Fabrizio Giustina</assignee>
                                    <reporter username="abrenk">Andreas Brenk</reporter>
                        <labels>
                    </labels>
                <created>Tue, 6 Sep 2005 09:57:33 +0200</created>
                <updated>Wed, 26 Jun 2019 11:39:27 +0200</updated>
                            <resolved>Mon, 25 Nov 2013 15:29:17 +0100</resolved>
                                    <version>2.1 Final</version>
                                                    <component>core</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                                                            <comments>
                            <comment id="11258" author="kraft" created="Thu, 8 Sep 2005 21:26:30 +0200"  >&lt;p&gt;Andreas, thanks for pointing this out - for us it was not problematic because we own a copy of the book &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;Do you have time to check if the alternatives would suffice, and provide a patch? &lt;br/&gt;
Thanks, Boris&lt;/p&gt;</comment>
                            <comment id="11260" author="abrenk" created="Fri, 9 Sep 2005 11:11:16 +0200"  >&lt;p&gt;Okay, I replaced the MultipartRequestFilter with a new implementation using commons-fileupload.&lt;/p&gt;

&lt;p&gt;You have to remove the dependency on cos and a one on commons-fileupload to project.xml:&lt;/p&gt;

&lt;p&gt;        &amp;lt;dependency&amp;gt;&lt;br/&gt;
            &amp;lt;groupId&amp;gt;commons-fileupload&amp;lt;/groupId&amp;gt;&lt;br/&gt;
            &amp;lt;artifactId&amp;gt;commons-fileupload&amp;lt;/artifactId&amp;gt;&lt;br/&gt;
            &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br/&gt;
            &amp;lt;type&amp;gt;jar&amp;lt;/type&amp;gt;&lt;br/&gt;
            &amp;lt;url&amp;gt;&lt;a href=&quot;http://jakarta.apache.org/commons/fileupload/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://jakarta.apache.org/commons/fileupload/&lt;/a&gt;&amp;lt;/url&amp;gt;&lt;br/&gt;
            &amp;lt;properties&amp;gt;&lt;br/&gt;
                &amp;lt;war.bundle&amp;gt;true&amp;lt;/war.bundle&amp;gt;&lt;br/&gt;
            &amp;lt;/properties&amp;gt;&lt;br/&gt;
        &amp;lt;/dependency&amp;gt;&lt;/p&gt;

&lt;p&gt;Warning: I haven&apos;t tested the new code, yet. I&apos;m currently using the WAR distribution and have to complete my Magnolia build environment first...&lt;/p&gt;</comment>
                            <comment id="11265" author="fgiust" created="Mon, 12 Sep 2005 11:54:05 +0200"  >&lt;p&gt;Just a comment: I already tried replacing cos with commons-fileupload months ago, during the dependencies cleanup work, but my implementation failed in 2 points:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;UTF8 support was not working properly (well, the UTF8 transition was not completed yet, so probably there were other problems kicking in)&lt;/li&gt;
	&lt;li&gt;handling of multi-values parameter (I can&apos;t really remember well the issue I had, but just be sure to test this properly)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;said that, I&apos;m all for migrating to commons-fileupload and I will try to help with the implementation: we could start adding the dependency and committing a new multipart filter along with the existing one for tests (leaving the old one configured by default while testing the new one)... I&apos;ll do that&lt;/p&gt;</comment>
                            <comment id="11266" author="abrenk" created="Mon, 12 Sep 2005 12:02:45 +0200"  >&lt;p&gt;A first go at a JUnit test case.&lt;/p&gt;</comment>
                            <comment id="11267" author="abrenk" created="Mon, 12 Sep 2005 12:15:44 +0200"  >&lt;p&gt;I forgot: the test case uses commons-httpclient 3.0-rc3. So you have to update the dependency.&lt;/p&gt;

&lt;p&gt;Multi-value properties are not yet tested, feel free to enhance the test case.&lt;/p&gt;

&lt;p&gt;The problem you had with multi-value properties probably was that commons-fileupload&apos;s FileItem only has access methods for single-value String parameters. You have to get the multi-value ones from the ServletRequest yourself.&lt;/p&gt;

&lt;p&gt;Regarding UTF-8: The test case uses the UTF-8 encoded log4j.xml from src/test-resources for its multipart request without problems. But maybe this isn&apos;t comprehensive enough.&lt;/p&gt;</comment>
                            <comment id="11290" author="fgiust" created="Sat, 24 Sep 2005 13:39:13 +0200"  >&lt;p&gt;The new filter is now in svn, but it still can&apos;t replace the COS based one because it actually doesn&apos;t support multi-value parameters.&lt;br/&gt;
The test case has been ehanced with multivalue and utf8 parameters (the problem was in encoding of parameters, not files) and it tests both (cos and commons file upload) filters... when everything will work using the new filter we will replace the old one and remove the oreilly dependency.&lt;/p&gt;</comment>
                            <comment id="11962" author="pbracher" created="Wed, 17 May 2006 13:55:04 +0200"  >&lt;p&gt;We should fix this in the 3.0 relese&lt;/p&gt;</comment>
                            <comment id="12092" author="pbracher" created="Tue, 13 Jun 2006 11:24:58 +0200"  >&lt;p&gt;postponed again&lt;/p&gt;</comment>
                            <comment id="14740" author="fgiust" created="Wed, 26 Sep 2007 15:58:45 +0200"  >&lt;p&gt;Setting release version and moving to an higher priority, cos license terms could be problematic and this issue is here from too much time...&lt;/p&gt;

&lt;p&gt;After my recent fixes the new commons-fileupload implementation looks good, and someway also better than the cos based one (there is an additional request wrapper which makes easier to deal with multipart forms).&lt;/p&gt;

&lt;p&gt;I&apos;d like to see this becoming the default in 3.1-m4, by renaming the old cos filter to CosMultipartRequestFilter and CommonsFileUploadMultipartRequestFilter to MultipartRequestFilter. If no issues are found in this milestone we can easily drop the cos dependency (along with the filter implementation) for the first RC.&lt;/p&gt;</comment>
                            <comment id="14741" author="scharles" created="Wed, 26 Sep 2007 16:05:40 +0200"  >&lt;p&gt;that&apos;s great, but just wanted to let you guys know that magnolia has a permission to redistribute cos library without any restrictions.&lt;br/&gt;
We attain this license sometime last year.&lt;/p&gt;</comment>
                            <comment id="14743" author="fgiust" created="Sun, 30 Sep 2007 23:00:34 +0200"  >&lt;p&gt;&amp;gt; that&apos;s great, but just wanted to let you guys know that magnolia has a permission to redistribute cos library without any restrictions.&lt;br/&gt;
&amp;gt; We attain this license sometime last year.&lt;/p&gt;

&lt;p&gt;well, that&apos;s great (unfortunately looks like nobody was aware of that), but anyway switching to commons-fileupload is probably still an improvement.&lt;br/&gt;
I don&apos;t know if the granted license of cos is compatible with *gpl (may be) and if it has been granted only for the redistribution of magnolia it will still be a problem for anybody who develops anything based on magnolia (is the &quot;unlimited use without buying the book&quot; transitive?).&lt;/p&gt;

&lt;p&gt;Anyway we now have the alternative implementation with commons-fileupload fully working, and commons-fileupload is apache2, it couldn&apos;t be better.&lt;br/&gt;
The switch of the default implementation has been committed to svn, note that it should not cause any problem on upgrades since I did an &quot;hard&quot; switch, renaming the commons-fileupload implementation with the same name of the previous cos-based one) &lt;/p&gt;</comment>
                            <comment id="14954" author="gjoseph" created="Fri, 2 Nov 2007 13:50:37 +0100"  >&lt;p&gt;I&apos;m sorry but I&apos;m going to have to reopen this. At least temporarily, I&apos;ll switch back the default to the CosMultipartRequestFilter (not renaming classes). &lt;/p&gt;

&lt;p&gt;The problem is that with the commons-upload-based implementation, request parameters are lost. I haven&apos;t examined the problem deeply, and it might be that it&apos;s only because in my case, they were part of the query string (ie params in the URLs were lost, but the file was uploaded properly) I&apos;m not sure that&apos;s spec compliant (having both url and post params) but in the case of a file upload through the fck editor, it breaks everything and we can&apos;t afford that just now.&lt;/p&gt;

&lt;p&gt;Another problem (which I&apos;ll try to fix now) is that the (commons-upload) MultipartRequestFilter is swallowing all exceptions that happen down the filter chain, which is just plain wrong (I&apos;ll fix that). Maybe we could introduce an AbstractMRF, because in the end all those filters (should) do is wrap the request and pass it on. This would ensure consistent behavior betweem the two.&lt;/p&gt;</comment>
                            <comment id="14959" author="fgiust" created="Fri, 2 Nov 2007 17:45:26 +0100"  >&lt;p&gt;&amp;gt; The problem is that with the commons-upload-based implementation, request parameters are lost. &lt;/p&gt;

&lt;p&gt;mh, not sure if mixing query string with a multipart form parameters could be a standard behavior, but if request.getParameter() actually returns query string parameters also in case of multiparts this can be easily fixed in the commons-fileupload filter (just adding to the parameters from the query string to the ones in the multipart form).&lt;/p&gt;</comment>
                            <comment id="15096" author="fgiust" created="Fri, 16 Nov 2007 20:34:39 +0100"  >&lt;p&gt;Gr&#233;gory, can you explain exactly how to reproduce the problem you saw? Can we put together a testcase for it?&lt;/p&gt;</comment>
                            <comment id="15097" author="gjoseph" created="Fri, 16 Nov 2007 20:39:18 +0100"  >&lt;p&gt;Hmm, right now I don&apos;t remember exactly &lt;b&gt;which one&lt;/b&gt;, but I had the issue with &lt;b&gt;some&lt;/b&gt; dialog. I don&apos;t think it even had any upload, but it&apos;s &amp;lt;form&amp;gt; action parameter add URL parameters, and its method was POST. The URLs parameters were lost along the way.&lt;/p&gt;

&lt;p&gt;I&apos;ll try to reproduce... after the weekend &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/wink.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="17751" author="had" created="Thu, 4 Sep 2008 07:22:57 +0200"  >&lt;p&gt;Since we have license to redistribute, it is not system critical and we have some time to solve all the issues with commons-fileupload before making the switch.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10160">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                                        </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="13558">MAGNOLIA-1811</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="14312">MAGNOLIA-2103</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="10290" name="MultipartRequestFilter.java" size="5874" author="abrenk" created="Fri, 9 Sep 2005 11:11:16 +0200"/>
                            <attachment id="10295" name="MultipartRequestFilterTest.java" size="4863" author="abrenk" created="Mon, 12 Sep 2005 12:02:45 +0200"/>
                    </attachments>
                <subtasks>
                            <subtask id="14077">MAGNOLIA-2033</subtask>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>andreasbrenk.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 8 Sep 2005 21:26:30 +0200</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>false</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>slutz</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            15 years, 25 weeks, 3 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>16.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>abrenk</customfieldvalue>
            <customfieldvalue>kraft</customfieldvalue>
            <customfieldvalue>fgiust</customfieldvalue>
            <customfieldvalue>had</customfieldvalue>
            <customfieldvalue>gjoseph</customfieldvalue>
            <customfieldvalue>pbracher</customfieldvalue>
            <customfieldvalue>scharles</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i013in:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6452</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14167" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoR</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>