mirror of
https://github.com/apache/nifi.git
synced 2025-02-06 01:58:32 +00:00
NIFI-2380 - Introduce ExtractTNEFAttachment - A processor to extract
attachments embedded within a Transport Neutral Encapsulation Format (TNEF) attachment (i.e. winmail.dat)
This commit is contained in:
parent
4d1bcc808f
commit
a347ebf87b
@ -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.
|
||||
THE SOFTWARE.
|
||||
|
@ -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, <http://www.bea.com/>.
|
||||
|
||||
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
|
||||
|
@ -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.
|
||||
|
@ -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, <http://www.bea.com/>.
|
||||
|
||||
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)
|
@ -68,6 +68,11 @@
|
||||
<artifactId>commons-logging</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-scratchpad</artifactId>
|
||||
<version>3.14</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nifi-ssl-context-service</artifactId>
|
||||
|
@ -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<Relationship> RELATIONSHIPS;
|
||||
private final static List<PropertyDescriptor> DESCRIPTORS;
|
||||
|
||||
|
||||
static {
|
||||
final Set<Relationship> _relationships = new HashSet<>();
|
||||
_relationships.add(REL_ATTACHMENTS);
|
||||
_relationships.add(REL_ORIGINAL);
|
||||
_relationships.add(REL_FAILURE);
|
||||
RELATIONSHIPS = Collections.unmodifiableSet(_relationships);
|
||||
|
||||
final List<PropertyDescriptor> _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<FlowFile> attachmentsList = new ArrayList<>();
|
||||
final List<FlowFile> invalidFlowFilesList = new ArrayList<>();
|
||||
final List<FlowFile> 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<String, String> 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<Relationship> getRelationships() {
|
||||
return this.RELATIONSHIPS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final List<PropertyDescriptor> getSupportedPropertyDescriptors() {
|
||||
return DESCRIPTORS;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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<MockFlowFile> 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<MockFlowFile> splits = runner.getFlowFilesForRelationship(ExtractTNEFAttachments.REL_ATTACHMENTS);
|
||||
|
||||
List<String> 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<MockFlowFile> splits = runner.getFlowFilesForRelationship(ExtractTNEFAttachments.REL_ATTACHMENTS);
|
||||
|
||||
List<String> 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);
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user