From a347ebf87b509d54b3fd2aac33f202920b59a4b6 Mon Sep 17 00:00:00 2001 From: Andre F de Miranda Date: Tue, 9 Aug 2016 22:08:26 +1000 Subject: [PATCH] NIFI-2380 - Introduce ExtractTNEFAttachment - A processor to extract attachments embedded within a Transport Neutral Encapsulation Format (TNEF) attachment (i.e. winmail.dat) --- nifi-assembly/LICENSE | 54 ++- nifi-assembly/NOTICE | 25 ++ .../src/main/resources/META-INF/LICENSE | 343 ++++++++++++++++++ .../src/main/resources/META-INF/NOTICE | 29 +- .../nifi-email-processors/pom.xml | 5 + .../email/ExtractTNEFAttachments.java | 205 +++++++++++ .../org.apache.nifi.processor.Processor | 1 + .../email/TestExtractTNEFAttachments.java | 105 ++++++ .../src/test/resources/winmail-simple.dat | Bin 0 -> 4915 bytes .../resources/winmail-with-attachment.dat | Bin 0 -> 22257 bytes .../resources/winmail-with-attachments.dat | Bin 0 -> 94272 bytes 11 files changed, 764 insertions(+), 3 deletions(-) create mode 100644 nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/ExtractTNEFAttachments.java create mode 100644 nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/java/org/apache/nifi/processors/email/TestExtractTNEFAttachments.java create mode 100644 nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-simple.dat create mode 100644 nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-with-attachment.dat create mode 100644 nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-with-attachments.dat diff --git a/nifi-assembly/LICENSE b/nifi-assembly/LICENSE index 67e52f4146..529a97ea66 100644 --- a/nifi-assembly/LICENSE +++ b/nifi-assembly/LICENSE @@ -1488,6 +1488,58 @@ This project bundles 'Jython' which is available under a Python Software Foundat NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +This project bundles 'Office Open XML schemas' (ooxml-schemas-1.*.jar) + + The Office Open XML schema definitions used by Apache POI are + a part of the Office Open XML ECMA Specification (ECMA-376, [1]). + As defined in section 9.4 of the ECMA bylaws [2], this specification + is available to all interested parties without restriction: + + 9.4 All documents when approved shall be made available to + all interested parties without restriction. + + Furthermore, both Microsoft and Adobe have granted patent licenses + to this work [3,4,5]. + + [1] http://www.ecma-international.org/publications/standards/Ecma-376.htm + [2] http://www.ecma-international.org/memento/Ecmabylaws.htm + [3] http://www.microsoft.com/openspecifications/en/us/programs/osp/default.aspx + [4] http://www.ecma-international.org/publications/files/ECMA-ST/Ecma%20PATENT/ + Patent%20statements%20ok/ECMA-376%20Edition%202%20Microsoft%20Patent%20Declaration.pdf + [5] http://www.ecma-international.org/publications/files/ECMA-ST/Ecma%20PATENT/ + Patent%20statements%20ok/ECMA-376%20Adobe%20Patent%20Declaration.pdf + +This project bundles 'CurvesAPI' which is available under a BSD license. + + Copyright (c) 2005, Graph Builder + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + -Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + -Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + -Neither the name of Graph Builder nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + This project bundles 'metrics-datadog' which is available under a BSD license. @@ -1729,4 +1781,4 @@ This product bundles 'jbzip2' which is available under an MIT license. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. \ No newline at end of file + THE SOFTWARE. diff --git a/nifi-assembly/NOTICE b/nifi-assembly/NOTICE index 9d548857f7..79fcead55a 100644 --- a/nifi-assembly/NOTICE +++ b/nifi-assembly/NOTICE @@ -63,6 +63,30 @@ The following binary components are provided under the Apache Software License v The following NOTICE information applies: Copyright (c) 2010-2013 Coda Hale, Yammer.com + (ASLv2) Apache POI + The following NOTICE information applies: + + This product contains parts that were originally based on software from BEA. + Copyright (c) 2000-2003, BEA Systems, . + + This product contains W3C XML Schema documents. Copyright 2001-2003 (c) + World Wide Web Consortium (Massachusetts Institute of Technology, European + Research Consortium for Informatics and Mathematics, Keio University) + + This product contains the Piccolo XML Parser for Java + (http://piccolo.sourceforge.net/). Copyright 2002 Yuval Oren. + + This product contains the chunks_parse_cmds.tbl file from the vsdump program. + Copyright (C) 2006-2007 Valek Filippov (frob@df.ru) + + This product contains parts of the eID Applet project + (http://eid-applet.googlecode.com). Copyright (c) 2009-2014 + FedICT (federal ICT department of Belgium), e-Contract.be BVBA (https://www.e-contract.be), + Bart Hanssens from FedICT + + CurvesAIP is BSD-licensed software (https://github.com/virtuald/curvesapi/) + Copyright (c) 2005, Graph Builder + (ASLv2) Jasypt The following NOTICE information applies: Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org) @@ -1117,6 +1141,7 @@ The following binary components are provided under the Eclipse Public License 1. (EPL 1.0) Eclipse Link (org.eclipse.persistence:eclipselink:2.5.2 - http://www.eclipse.org/eclipselink/) (EPL 1.0) Common Service Data Objects (org.eclipse.persistence:commonj.sdo:2.1.1 - http://www.eclipse.org/eclipselink/) (EPL 1.0) Java Persistence API (org.eclipse.persistence:javax.persistence:2.1.0 - http://www.eclipse.org/eclipselink/) + (EPL 1.0) JaCoCo Java Code Coverage Library ( org.jacoco ) http://www.eclemma.org/jacoco ***************** Mozilla Public License v2.0 diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/LICENSE b/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/LICENSE index d645695673..2fdcf40e6f 100644 --- a/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/LICENSE +++ b/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/LICENSE @@ -200,3 +200,346 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + + + nifi-email-bundle includes subcomponents with separate copyright notices and + license terms. Your use of these subcomponents is subject to the terms + and conditions of the following licenses: + + + Office Open XML schemas + + The Office Open XML schema definitions used by Apache POI are + a part of the Office Open XML ECMA Specification (ECMA-376, [1]). + As defined in section 9.4 of the ECMA bylaws [2], this specification + is available to all interested parties without restriction: + + 9.4 All documents when approved shall be made available to + all interested parties without restriction. + + Furthermore, both Microsoft and Adobe have granted patent licenses + to this work [3,4,5]. + + [1] http://www.ecma-international.org/publications/standards/Ecma-376.htm + [2] http://www.ecma-international.org/memento/Ecmabylaws.htm + [3] http://www.microsoft.com/openspecifications/en/us/programs/osp/default.aspx + [4] http://www.ecma-international.org/publications/files/ECMA-ST/Ecma%20PATENT/ + Patent%20statements%20ok/ECMA-376%20Edition%202%20Microsoft%20Patent%20Declaration.pdf + [5] http://www.ecma-international.org/publications/files/ECMA-ST/Ecma%20PATENT/ + Patent%20statements%20ok/ECMA-376%20Adobe%20Patent%20Declaration.pdf + + + Bouncy Castle library + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + + JaCoCo + + Eclipse Public License - v 1.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC + LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM + CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + + a) in the case of the initial Contributor, the initial code and documentation + distributed under this Agreement, and + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from and are + distributed by that particular Contributor. A Contribution 'originates' from + a Contributor if it was added to the Program by such Contributor itself or + anyone acting on such Contributor's behalf. Contributions do not include + additions to the Program which: (i) are separate modules of software + distributed in conjunction with the Program under their own license agreement, + and (ii) are not derivative works of the Program. + + "Contributor" means any person or entity that distributes the Program. + + "Licensed Patents" mean patent claims licensable by a Contributor which are + necessarily infringed by the use or sale of its Contribution alone or when + combined with the Program. + + "Program" means the Contributions distributed in accordance with this Agreement. + + "Recipient" means anyone who receives the Program under this Agreement, + including all Contributors. + + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free copyright license to + reproduce, prepare derivative works of, publicly display, publicly + perform, distribute and sublicense the Contribution of such Contributor, + if any, and such derivative works, in source code and object code form. + b) Subject to the terms of this Agreement, each Contributor hereby grants + Recipient a non-exclusive, worldwide, royalty-free patent license under + Licensed Patents to make, use, sell, offer to sell, import and otherwise + transfer the Contribution of such Contributor, if any, in source code + and object code form. This patent license shall apply to the combination + of the Contribution and the Program if, at the time the Contribution is + added by the Contributor, such addition of the Contribution causes such + combination to be covered by the Licensed Patents. The patent license + shall not apply to any other combinations which include the Contribution. + No hardware per se is licensed hereunder. + c) Recipient understands that although each Contributor grants the licenses + to its Contributions set forth herein, no assurances are provided by any + Contributor that the Program does not infringe the patent or other + intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other + entity based on infringement of intellectual property rights or + otherwise. As a condition to exercising the rights and licenses granted + hereunder, each Recipient hereby assumes sole responsibility to secure + any other intellectual property rights needed, if any. For example, if + a third party patent license is required to allow Recipient to distribute + the Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + d) Each Contributor represents that to its knowledge it has sufficient + copyright rights in its Contribution, if any, to grant the copyright + license set forth in this Agreement. + + 3. REQUIREMENTS + + A Contributor may choose to distribute the Program in object code form under + its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + b) its license agreement: + i) effectively disclaims on behalf of all Contributors all warranties and + conditions, express and implied, including warranties or conditions of + title and non-infringement, and implied warranties or conditions of + merchantability and fitness for a particular purpose; + ii) effectively excludes on behalf of all Contributors all liability for + damages, including direct, indirect, special, incidental and + consequential damages, such as lost profits; + iii) states that any provisions which differ from this Agreement are + offered by that Contributor alone and not by any other party; and + iv) states that source code for the Program is available from such + Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software exchange. + + When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + b) a copy of this Agreement must be included with each copy of the Program. + Contributors may not remove or alter any copyright notices contained + within the Program. + + Each Contributor must identify itself as the originator of its Contribution, + if any, in a manner that reasonably allows subsequent Recipients to identify + the originator of the Contribution. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities with + respect to end users, business partners and the like. While this license is + intended to facilitate the commercial use of the Program, the Contributor + who includes the Program in a commercial product offering should do so in a + manner which does not create potential liability for other Contributors. + Therefore, if a Contributor includes the Program in a commercial product + offering, such Contributor ("Commercial Contributor") hereby agrees to + defend and indemnify every other Contributor ("Indemnified Contributor") + against any losses, damages and costs (collectively "Losses") arising from + claims, lawsuits and other legal actions brought by a third party against + the Indemnified Contributor to the extent caused by the acts or omissions + of such Commercial Contributor in connection with its distribution of the + Program in a commercial product offering. The obligations in this section + do not apply to any claims or Losses relating to any actual or alleged + intellectual property infringement. In order to qualify, an Indemnified + Contributor must: a) promptly notify the Commercial Contributor in writing + of such claim, and b) allow the Commercial Contributor to control, and + cooperate with the Commercial Contributor in, the defense and any related + settlement negotiations. The Indemnified Contributor may participate in any + such claim at its own expense. + + For example, a Contributor might include the Program in a commercial product + offering, Product X. That Contributor is then a Commercial Contributor. If + that Commercial Contributor then makes performance claims, or offers + warranties related to Product X, those performance claims and warranties are + such Commercial Contributor's responsibility alone. Under this section, the + Commercial Contributor would have to defend claims against the other + Contributors related to those performance claims and warranties, and if a + court requires any other Contributor to pay any damages as a result, the + Commercial Contributor must pay those damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON + AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER + EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR + CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A + PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the + appropriateness of using and distributing the Program and assumes all risks + associated with its exercise of rights under this Agreement , including but + not limited to the risks and costs of program errors, compliance with + applicable laws, damage to or loss of data, programs or equipment, and + unavailability or interruption of operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY + CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION + LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE + EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY + OF SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of the + remainder of the terms of this Agreement, and without further action by the + parties hereto, such provision shall be reformed to the minimum extent + necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Program itself + (excluding combinations of the Program with other software or hardware) + infringes such Recipient's patent(s), then such Recipient's rights granted + under Section 2(b) shall terminate as of the date such litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it fails to + comply with any of the material terms or conditions of this Agreement and + does not cure such failure in a reasonable period of time after becoming + aware of such noncompliance. If all Recipient's rights under this Agreement + terminate, Recipient agrees to cease use and distribution of the Program as + soon as reasonably practicable. However, Recipient's obligations under this + Agreement and any licenses granted by Recipient relating to the Program + shall continue and survive. + + Everyone is permitted to copy and distribute copies of this Agreement, but + in order to avoid inconsistency the Agreement is copyrighted and may only + be modified in the following manner. The Agreement Steward reserves the + right to publish new versions (including revisions) of this Agreement from + time to time. No one other than the Agreement Steward has the right to + modify this Agreement. The Eclipse Foundation is the initial Agreement + Steward. The Eclipse Foundation may assign the responsibility to serve as + the Agreement Steward to a suitable separate entity. Each new version of + the Agreement will be given a distinguishing version number. The Program + (including Contributions) may always be distributed subject to the version + of the Agreement under which it was received. In addition, after a new + version of the Agreement is published, Contributor may elect to distribute + the Program (including its Contributions) under the new version. Except as + expressly stated in Sections 2(a) and 2(b) above, Recipient receives no + rights or licenses to the intellectual property of any Contributor under + this Agreement, whether expressly, by implication, estoppel or otherwise. + All rights in the Program not expressly granted under this Agreement are + reserved. + + This Agreement is governed by the laws of the State of New York and the + intellectual property laws of the United States of America. No party to this + Agreement will bring a legal action under this Agreement more than one year + after the cause of action arose. Each party waives its rights to a jury + trial in any resulting litigation. + + Hamcrest library + + BSD License + + Copyright (c) 2000-2006, www.hamcrest.org + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. Redistributions in binary + form must reproduce the above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or other materials + provided with the distribution. + + Neither the name of Hamcrest nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + CurvesAPI / Curves API + + BSD License + + Copyright (c) 2005, Graph Builder + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + -Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + -Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + -Neither the name of Graph Builder nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SLF4J library + + Copyright (c) 2004-2013 QOS.ch + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/NOTICE index dc462ceb12..fed1ef366a 100644 --- a/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/NOTICE +++ b/nifi-nar-bundles/nifi-email-bundle/nifi-email-nar/src/main/resources/META-INF/NOTICE @@ -18,7 +18,32 @@ The following binary components are provided under the Apache Software License v (ASLv2) SubEthaSMTP - A SMTP mail server The following NOTICE information applies: Spring Framework - Copyright 2006-2007 + Copyright 2006-2007 + + (ASLv2) Apache POI + The following NOTICE information applies: + + This product contains parts that were originally based on software from BEA. + Copyright (c) 2000-2003, BEA Systems, . + + This product contains W3C XML Schema documents. Copyright 2001-2003 (c) + World Wide Web Consortium (Massachusetts Institute of Technology, European + Research Consortium for Informatics and Mathematics, Keio University) + + This product contains the Piccolo XML Parser for Java + (http://piccolo.sourceforge.net/). Copyright 2002 Yuval Oren. + + This product contains the chunks_parse_cmds.tbl file from the vsdump program. + Copyright (C) 2006-2007 Valek Filippov (frob@df.ru) + + This product contains parts of the eID Applet project + (http://eid-applet.googlecode.com). Copyright (c) 2009-2014 + FedICT (federal ICT department of Belgium), e-Contract.be BVBA (https://www.e-contract.be), + Bart Hanssens from FedICT + + CurvesAIP is BSD-licensed software ( https://github.com/virtuald/curvesapi/) + Copyright (c) 2005, Graph Builder + ************************ Common Development and Distribution License 1.1 @@ -34,4 +59,4 @@ Common Development and Distribution License 1.0 The following binary components are provided under the Common Development and Distribution License 1.0. See project link for details. - (CDDL 1.0) JavaBeans Activation Framework (JAF) (javax.activation:activation:jar:1.1 - http://java.sun.com/products/javabeans/jaf/index.jsp) + (CDDL 1.0) JavaBeans Activation Framework (JAF) (javax.activation:activation:jar:1.1 - http://java.sun.com/products/javabeans/jaf/index.jsp) \ No newline at end of file diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/pom.xml b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/pom.xml index 43181fde14..f10acfc783 100644 --- a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/pom.xml +++ b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/pom.xml @@ -68,6 +68,11 @@ commons-logging 1.2 + + org.apache.poi + poi-scratchpad + 3.14 + org.apache.nifi nifi-ssl-context-service diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/ExtractTNEFAttachments.java b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/ExtractTNEFAttachments.java new file mode 100644 index 0000000000..a87c62d7d0 --- /dev/null +++ b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/ExtractTNEFAttachments.java @@ -0,0 +1,205 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.processors.email; + +import org.apache.commons.lang3.StringUtils; +import org.apache.nifi.annotation.behavior.EventDriven; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.InputRequirement.Requirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.behavior.WritesAttribute; +import org.apache.nifi.annotation.behavior.WritesAttributes; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.flowfile.attributes.CoreAttributes; +import org.apache.nifi.logging.ComponentLog; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.FlowFileHandlingException; +import org.apache.nifi.processor.io.InputStreamCallback; +import org.apache.nifi.processor.io.OutputStreamCallback; +import org.apache.nifi.stream.io.BufferedInputStream; +import org.apache.poi.hmef.Attachment; +import org.apache.poi.hmef.HMEFMessage; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + + +@SupportsBatching +@EventDriven +@SideEffectFree +@Tags({"split", "email"}) +@InputRequirement(Requirement.INPUT_REQUIRED) +@CapabilityDescription("Extract attachments from a mime formatted email file, splitting them into individual flowfiles.") +@WritesAttributes({ + @WritesAttribute(attribute = "filename ", description = "The filename of the attachment"), + @WritesAttribute(attribute = "email.tnef.attachment.parent.filename ", description = "The filename of the parent FlowFile"), + @WritesAttribute(attribute = "email.tnef.attachment.parent.uuid", description = "The UUID of the original FlowFile.")}) + +public class ExtractTNEFAttachments extends AbstractProcessor { + public static final String ATTACHMENT_ORIGINAL_FILENAME = "email.tnef.attachment.parent.filename"; + public static final String ATTACHMENT_ORIGINAL_UUID = "email.tnef.attachment.parent.uuid"; + + public static final Relationship REL_ATTACHMENTS = new Relationship.Builder() + .name("attachments") + .description("Each individual attachment will be routed to the attachments relationship") + .build(); + public static final Relationship REL_ORIGINAL = new Relationship.Builder() + .name("original") + .description("Each original flowfile (i.e. before extraction) will be routed to the original relationship") + .build(); + public static final Relationship REL_FAILURE = new Relationship.Builder() + .name("failure") + .description("Each individual flowfile that could not be parsed will be routed to the failure relationship") + .build(); + + private final static Set RELATIONSHIPS; + private final static List DESCRIPTORS; + + + static { + final Set _relationships = new HashSet<>(); + _relationships.add(REL_ATTACHMENTS); + _relationships.add(REL_ORIGINAL); + _relationships.add(REL_FAILURE); + RELATIONSHIPS = Collections.unmodifiableSet(_relationships); + + final List _descriptors = new ArrayList<>(); + DESCRIPTORS = Collections.unmodifiableList(_descriptors); + } + + @Override + public void onTrigger(final ProcessContext context, final ProcessSession session) { + final ComponentLog logger = getLogger(); + final FlowFile originalFlowFile = session.get(); + if (originalFlowFile == null) { + return; + } + final List attachmentsList = new ArrayList<>(); + final List invalidFlowFilesList = new ArrayList<>(); + final List originalFlowFilesList = new ArrayList<>(); + + session.read(originalFlowFile, new InputStreamCallback() { + @Override + public void process(final InputStream rawIn) throws IOException { + try (final InputStream in = new BufferedInputStream(rawIn)) { + Properties props = new Properties(); + + HMEFMessage hmefMessage = null; + + // This will trigger an exception in case content is not a TNEF. + hmefMessage = new HMEFMessage(in); + + // Add otiginal flowfile (may revert later on in case of errors) // + originalFlowFilesList.add(originalFlowFile); + + if (hmefMessage != null) { + // Attachments isn empty, proceeding. + if (!hmefMessage.getAttachments().isEmpty()) { + final String originalFlowFileName = originalFlowFile.getAttribute(CoreAttributes.FILENAME.key()); + try { + for (final Attachment attachment : hmefMessage.getAttachments()) { + FlowFile split = session.create(originalFlowFile); + final Map attributes = new HashMap<>(); + if (StringUtils.isNotBlank(attachment.getLongFilename())) { + attributes.put(CoreAttributes.FILENAME.key(), attachment.getFilename()); + } + + String parentUuid = originalFlowFile.getAttribute(CoreAttributes.UUID.key()); + attributes.put(ATTACHMENT_ORIGINAL_UUID, parentUuid); + attributes.put(ATTACHMENT_ORIGINAL_FILENAME, originalFlowFileName); + + // TODO: Extract Mime Type (HMEF doesn't seem to be able to get this info. + + split = session.append(split, new OutputStreamCallback() { + @Override + public void process(OutputStream out) throws IOException { + out.write(attachment.getContents()); + } + }); + split = session.putAllAttributes(split, attributes); + attachmentsList.add(split); + } + } catch (FlowFileHandlingException e) { + // Something went wrong + // Removing splits that may have been created + session.remove(attachmentsList); + // Removing the original flow from its list + originalFlowFilesList.remove(originalFlowFile); + logger.error("Flowfile {} triggered error {} while processing message removing generated FlowFiles from sessions", new Object[]{originalFlowFile, e}); + invalidFlowFilesList.add(originalFlowFile); + } + } + } + } catch (Exception e) { + // Another error hit... + // Removing the original flow from its list + originalFlowFilesList.remove(originalFlowFile); + logger.error("Could not parse the flowfile {} as an email, treating as failure", new Object[]{originalFlowFile, e}); + // Message is invalid or triggered an error during parsing + invalidFlowFilesList.add(originalFlowFile); + } + } + }); + + session.transfer(attachmentsList, REL_ATTACHMENTS); + + // As per above code, originalFlowfile may be routed to invalid or + // original depending on RFC2822 compliance. + session.transfer(invalidFlowFilesList, REL_FAILURE); + session.transfer(originalFlowFilesList, REL_ORIGINAL); + + // check if attachments have been extracted + if (attachmentsList.size() != 0) { + if (attachmentsList.size() > 10) { + // If more than 10, summarise log + logger.info("Split {} into {} files", new Object[]{originalFlowFile, attachmentsList.size()}); + } else { + // Otherwise be more verbose and list each individual split + logger.info("Split {} into {} files: {}", new Object[]{originalFlowFile, attachmentsList.size(), attachmentsList}); + } + } + } + + @Override + public Set getRelationships() { + return this.RELATIONSHIPS; + } + + @Override + public final List getSupportedPropertyDescriptors() { + return DESCRIPTORS; + } + + +} + diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor index c6bf6d8ab6..42187852c2 100644 --- a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor +++ b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/resources/META-INF/services/org.apache.nifi.processor.Processor @@ -12,6 +12,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +org.apache.nifi.processors.email.ExtractTNEFAttachments org.apache.nifi.processors.email.ExtractEmailAttachments org.apache.nifi.processors.email.ExtractEmailHeaders org.apache.nifi.processors.email.ListenSMTP diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/java/org/apache/nifi/processors/email/TestExtractTNEFAttachments.java b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/java/org/apache/nifi/processors/email/TestExtractTNEFAttachments.java new file mode 100644 index 0000000000..57ace41821 --- /dev/null +++ b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/java/org/apache/nifi/processors/email/TestExtractTNEFAttachments.java @@ -0,0 +1,105 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.nifi.processors.email; + +import org.apache.nifi.util.MockFlowFile; +import org.apache.nifi.util.TestRunner; +import org.apache.nifi.util.TestRunners; +import org.junit.Assert; +import org.junit.Test; + +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + + +public class TestExtractTNEFAttachments { + + @Test + public void testValidTNEFWithoutAttachment() throws Exception { + final TestRunner runner = TestRunners.newTestRunner(new ExtractTNEFAttachments()); + + + runner.enqueue(Paths.get("src/test/resources/winmail-simple.dat")); + runner.run(); + + runner.assertTransferCount(ExtractEmailAttachments.REL_ORIGINAL, 1); + runner.assertTransferCount(ExtractEmailAttachments.REL_FAILURE, 0); + runner.assertTransferCount(ExtractEmailAttachments.REL_ATTACHMENTS, 0); + // Have a look at the attachments... + final List splits = runner.getFlowFilesForRelationship(ExtractEmailAttachments.REL_ATTACHMENTS); + Assert.assertTrue(splits.size() == 0); + } + + @Test + public void testValidTNEFWithMultipleAttachments() throws Exception { + Random rnd = new Random() ; + final TestRunner runner = TestRunners.newTestRunner(new ExtractTNEFAttachments()); + + runner.enqueue(Paths.get("src/test/resources/winmail-with-attachments.dat")); + runner.run(); + + runner.assertTransferCount(ExtractEmailAttachments.REL_ORIGINAL, 1); + runner.assertTransferCount(ExtractEmailAttachments.REL_FAILURE, 0); + runner.assertTransferCount(ExtractEmailAttachments.REL_ATTACHMENTS, 2); + // Have a look at the attachments... + final List splits = runner.getFlowFilesForRelationship(ExtractTNEFAttachments.REL_ATTACHMENTS); + + List filenames = new ArrayList<>(); + for (int a = 0 ; a < splits.size() ; a++ ) { + filenames.add(splits.get(a).getAttribute("filename").toString()); + } + + Assert.assertTrue(filenames.containsAll(Arrays.asList("nifiDrop.svg", "MINIFI~1.PNG"))); + } + + @Test + public void testValidTNEFWithAttachment() throws Exception { + Random rnd = new Random() ; + final TestRunner runner = TestRunners.newTestRunner(new ExtractTNEFAttachments()); + + runner.enqueue(Paths.get("src/test/resources/winmail-with-attachment.dat")); + runner.run(); + + runner.assertTransferCount(ExtractEmailAttachments.REL_ORIGINAL, 1); + runner.assertTransferCount(ExtractEmailAttachments.REL_FAILURE, 0); + runner.assertTransferCount(ExtractEmailAttachments.REL_ATTACHMENTS, 1); + // Have a look at the attachments... + final List splits = runner.getFlowFilesForRelationship(ExtractTNEFAttachments.REL_ATTACHMENTS); + + List filenames = new ArrayList<>(); + for (int a = 0 ; a < splits.size() ; a++ ) { + filenames.add(splits.get(a).getAttribute("filename").toString()); + } + + Assert.assertTrue(filenames.containsAll(Arrays.asList("nifiDrop.svg"))); + } + + @Test + public void testInvalidTNEF() throws Exception { + final TestRunner runner = TestRunners.newTestRunner(new ExtractTNEFAttachments()); + runner.enqueue("test test test chocolate".getBytes()); + runner.run(); + + runner.assertTransferCount(ExtractEmailAttachments.REL_ORIGINAL, 0); + runner.assertTransferCount(ExtractEmailAttachments.REL_FAILURE, 1); + runner.assertTransferCount(ExtractEmailAttachments.REL_ATTACHMENTS, 0); + } +} \ No newline at end of file diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-simple.dat b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-simple.dat new file mode 100644 index 0000000000000000000000000000000000000000..7f61beeaa7afe7ef7623a58259e11b0f669ddb15 GIT binary patch literal 4915 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 literal 0 HcmV?d00001 diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-with-attachment.dat b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-with-attachment.dat new file mode 100644 index 0000000000000000000000000000000000000000..42cbec334b1df0143b096acf4c68f8e6e2e55068 GIT binary patch literal 22257 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 literal 0 HcmV?d00001 diff --git a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-with-attachments.dat b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/test/resources/winmail-with-attachments.dat new file mode 100644 index 0000000000000000000000000000000000000000..ec547211feb8878f775682a2daa89fd1cdb522a8 GIT binary patch literal 94272 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 literal 0 HcmV?d00001