mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Merge pull request #3491 from luchua-bc/java-insecure-smtp-ssl
Java: CWE-297 insecure JavaMail SSL configuration
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
|
||||
<overview>
|
||||
<p>JavaMail is commonly used in Java applications to send emails. There are popular third-party libraries like Apache Commons Email which are built on JavaMail and facilitate integration. Authenticated mail sessions require user credentials and mail sessions can require SSL/TLS authentication. It is a common security vulnerability that host-specific certificate data is not validated or is incorrectly validated. Failing to validate the certificate makes the SSL session susceptible to a man-in-the-middle attack.</p>
|
||||
<p>This query checks whether SSL certificate is validated when username/password is sent in authenticator and when SSL is enabled.</p>
|
||||
<p>The query has code for both plain JavaMail invocation and mailing through Apache SimpleMail to make it more comprehensive.</p>
|
||||
</overview>
|
||||
|
||||
<recommendation>
|
||||
<p>Validate SSL certificate when sensitive information is sent in email communications.</p>
|
||||
</recommendation>
|
||||
|
||||
<example>
|
||||
<p>The following two examples show two ways of configuring secure emails through JavaMail or Apache SimpleMail. In the 'BAD' case,
|
||||
credentials are sent in an SSL session without certificate validation. In the 'GOOD' case, the certificate is validated.</p>
|
||||
<sample src="JavaMail.java" />
|
||||
<sample src="SimpleMail.java" />
|
||||
</example>
|
||||
|
||||
<references>
|
||||
<li>
|
||||
<a href="https://cwe.mitre.org/data/definitions/297.html">CWE-297</a>
|
||||
<a href="https://issues.apache.org/jira/browse/LOG4J2-2819">Add support for specifying an SSL configuration for SmtpAppender (CVE-2020-9488)</a>
|
||||
<a href="https://rules.sonarsource.com/java/tag/owasp/RSPEC-4499">SMTP SSL connection should check server identity</a>
|
||||
</li>
|
||||
</references>
|
||||
</qhelp>
|
||||
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* @id java/insecure-smtp-ssl
|
||||
* @name Insecure JavaMail SSL Configuration
|
||||
* @description Java application configured to use authenticated mail session over SSL does not validate the SSL certificate to properly ensure that it is actually associated with that host.
|
||||
* @kind problem
|
||||
* @tags security
|
||||
* external/cwe-297
|
||||
*/
|
||||
|
||||
import java
|
||||
|
||||
/**
|
||||
* The method to set Java properties
|
||||
*/
|
||||
class SetPropertyMethod extends Method {
|
||||
SetPropertyMethod() {
|
||||
this.hasName("setProperty") and
|
||||
this.getDeclaringType().hasQualifiedName("java.util", "Properties")
|
||||
or
|
||||
this.hasName("put") and
|
||||
this.getDeclaringType().getASourceSupertype*().hasQualifiedName("java.util", "Dictionary")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The insecure way to set Java properties in mail sessions.
|
||||
* 1. Set the mail.smtp.auth property to provide the SMTP Transport with a username and password when connecting to the SMTP server or
|
||||
* set the mail.smtp.ssl.socketFactory/mail.smtp.ssl.socketFactory.class property to create an SMTP SSL socket.
|
||||
* 2. No mail.smtp.ssl.checkserveridentity property is enabled.
|
||||
*/
|
||||
predicate isInsecureMailPropertyConfig(VarAccess propertiesVarAccess) {
|
||||
exists(MethodAccess ma |
|
||||
ma.getMethod() instanceof SetPropertyMethod and
|
||||
ma.getQualifier() = propertiesVarAccess.getVariable().getAnAccess() and
|
||||
(
|
||||
getStringValue(ma.getArgument(0)).matches("%.auth%") and //mail.smtp.auth
|
||||
getStringValue(ma.getArgument(1)) = "true"
|
||||
or
|
||||
getStringValue(ma.getArgument(0)).matches("%.socketFactory%") //mail.smtp.socketFactory or mail.smtp.socketFactory.class
|
||||
)
|
||||
) and
|
||||
not exists(MethodAccess ma |
|
||||
ma.getMethod() instanceof SetPropertyMethod and
|
||||
ma.getQualifier() = propertiesVarAccess.getVariable().getAnAccess() and
|
||||
(
|
||||
getStringValue(ma.getArgument(0)).matches("%.ssl.checkserveridentity%") and //mail.smtp.ssl.checkserveridentity
|
||||
getStringValue(ma.getArgument(1)) = "true"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to get string value of an argument
|
||||
*/
|
||||
string getStringValue(Expr expr) {
|
||||
result = expr.(CompileTimeConstantExpr).getStringValue()
|
||||
or
|
||||
result = getStringValue(expr.(AddExpr).getLeftOperand())
|
||||
or
|
||||
result = getStringValue(expr.(AddExpr).getRightOperand())
|
||||
}
|
||||
|
||||
/**
|
||||
* The JavaMail session class `javax.mail.Session`
|
||||
*/
|
||||
class MailSession extends RefType {
|
||||
MailSession() { this.hasQualifiedName("javax.mail", "Session") }
|
||||
}
|
||||
|
||||
/**
|
||||
* The class of Apache SimpleMail
|
||||
*/
|
||||
class SimpleMail extends RefType {
|
||||
SimpleMail() { this.hasQualifiedName("org.apache.commons.mail", "SimpleEmail") }
|
||||
}
|
||||
|
||||
/**
|
||||
* Has TLS/SSL enabled with SimpleMail
|
||||
*/
|
||||
predicate enableTLSWithSimpleMail(MethodAccess ma) {
|
||||
ma.getMethod().hasName("setSSLOnConnect") and
|
||||
ma.getArgument(0).(BooleanLiteral).getBooleanValue() = true
|
||||
}
|
||||
|
||||
/**
|
||||
* Has no certificate check
|
||||
*/
|
||||
predicate hasNoCertCheckWithSimpleMail(VarAccess va) {
|
||||
not exists(MethodAccess ma |
|
||||
ma.getQualifier() = va.getVariable().getAnAccess() and
|
||||
ma.getMethod().hasName("setSSLCheckServerIdentity") and
|
||||
ma.getArgument(0).(BooleanLiteral).getBooleanValue() = true
|
||||
)
|
||||
}
|
||||
|
||||
from MethodAccess ma
|
||||
where
|
||||
ma.getMethod().getDeclaringType() instanceof MailSession and
|
||||
ma.getMethod().getName() = "getInstance" and
|
||||
isInsecureMailPropertyConfig(ma.getArgument(0))
|
||||
or
|
||||
enableTLSWithSimpleMail(ma) and hasNoCertCheckWithSimpleMail(ma.getQualifier())
|
||||
select ma, "Java mailing has insecure SSL configuration"
|
||||
43
java/ql/src/experimental/Security/CWE/CWE-297/JavaMail.java
Normal file
43
java/ql/src/experimental/Security/CWE/CWE-297/JavaMail.java
Normal file
@@ -0,0 +1,43 @@
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.activation.DataSource;
|
||||
import javax.mail.Authenticator;
|
||||
import javax.mail.Message;
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.PasswordAuthentication;
|
||||
import javax.mail.Session;
|
||||
|
||||
import org.apache.logging.log4j.util.PropertiesUtil;
|
||||
|
||||
class JavaMail {
|
||||
public static void main(String[] args) {
|
||||
// BAD: Don't have server certificate check
|
||||
{
|
||||
final Properties properties = PropertiesUtil.getSystemProperties();
|
||||
properties.put("mail.transport.protocol", "protocol");
|
||||
properties.put("mail.smtp.host", "hostname");
|
||||
properties.put("mail.smtp.socketFactory.class", "classname");
|
||||
|
||||
final Authenticator authenticator = buildAuthenticator("username", "password");
|
||||
if (null != authenticator) {
|
||||
properties.put("mail.smtp.auth", "true");
|
||||
}
|
||||
final Session session = Session.getInstance(properties, authenticator);
|
||||
}
|
||||
|
||||
// GOOD: Have server certificate check
|
||||
{
|
||||
final Properties properties = PropertiesUtil.getSystemProperties();
|
||||
properties.put("mail.transport.protocol", "protocol");
|
||||
properties.put("mail.smtp.host", "hostname");
|
||||
properties.put("mail.smtp.socketFactory.class", "classname");
|
||||
|
||||
final Authenticator authenticator = buildAuthenticator("username", "password");
|
||||
if (null != authenticator) {
|
||||
properties.put("mail.smtp.auth", "true");
|
||||
properties.put("mail.smtp.ssl.checkserveridentity", "true");
|
||||
}
|
||||
final Session session = Session.getInstance(properties, authenticator);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import org.apache.commons.mail.DefaultAuthenticator;
|
||||
import org.apache.commons.mail.Email;
|
||||
import org.apache.commons.mail.EmailException;
|
||||
import org.apache.commons.mail.SimpleEmail;
|
||||
|
||||
class SimpleMail {
|
||||
public static void main(String[] args) throws EmailException {
|
||||
// BAD: Don't have setSSLCheckServerIdentity set or set as false
|
||||
{
|
||||
Email email = new SimpleEmail();
|
||||
email.setHostName("hostName");
|
||||
email.setSmtpPort(25);
|
||||
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
|
||||
email.setSSLOnConnect(true);
|
||||
|
||||
//email.setSSLCheckServerIdentity(false);
|
||||
email.setFrom("fromAddress");
|
||||
email.setSubject("subject");
|
||||
email.setMsg("body");
|
||||
email.addTo("toAddress");
|
||||
email.send();
|
||||
}
|
||||
|
||||
// GOOD: Have setSSLCheckServerIdentity set to true
|
||||
{
|
||||
Email email = new SimpleEmail();
|
||||
email.setHostName("hostName");
|
||||
email.setSmtpPort(25);
|
||||
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
|
||||
email.setSSLOnConnect(true);
|
||||
|
||||
email.setSSLCheckServerIdentity(true);
|
||||
email.setFrom("fromAddress");
|
||||
email.setSubject("subject");
|
||||
email.setMsg("body");
|
||||
email.addTo("toAddress");
|
||||
email.send();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
| InsecureJavaMail.java:29:27:29:72 | getInstance(...) | Java mailing has insecure SSL configuration |
|
||||
| InsecureJavaMail.java:37:3:37:29 | setSSLOnConnect(...) | Java mailing has insecure SSL configuration |
|
||||
@@ -0,0 +1,45 @@
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.mail.Authenticator;
|
||||
import javax.mail.PasswordAuthentication;
|
||||
import javax.mail.Session;
|
||||
|
||||
import org.apache.commons.mail.DefaultAuthenticator;
|
||||
import org.apache.commons.mail.Email;
|
||||
import org.apache.commons.mail.SimpleEmail;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
class InsecureJavaMail {
|
||||
public void testJavaMail() {
|
||||
final Properties properties = new Properties();
|
||||
properties.put("mail.transport.protocol", "protocol");
|
||||
properties.put("mail.smtp.host", "hostname");
|
||||
properties.put("mail.smtp.socketFactory.class", "classname");
|
||||
|
||||
final javax.mail.Authenticator authenticator = new javax.mail.Authenticator() {
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication("username", "password");
|
||||
}
|
||||
};
|
||||
if (null != authenticator) {
|
||||
properties.put("mail.smtp.auth", "true");
|
||||
// properties.put("mail.smtp.ssl.checkserveridentity", "true");
|
||||
}
|
||||
final Session session = Session.getInstance(properties, authenticator);
|
||||
}
|
||||
|
||||
public void testSimpleMail() {
|
||||
Email email = new SimpleEmail();
|
||||
email.setHostName("config.hostName");
|
||||
email.setSmtpPort(25);
|
||||
email.setAuthenticator(new DefaultAuthenticator("config.username", "config.password"));
|
||||
email.setSSLOnConnect(true);
|
||||
// email.setSSLCheckServerIdentity(true);
|
||||
email.setFrom("fromAddress");
|
||||
email.setSubject("subject");
|
||||
email.setMsg("body");
|
||||
email.addTo("toAddress");
|
||||
email.send();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
experimental/Security/CWE/CWE-297/InsecureJavaMail.ql
|
||||
@@ -0,0 +1 @@
|
||||
// semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/apache-commons-email-1.6.0:${testdir}/../../../../stubs/javamail-api-1.6.2
|
||||
202
java/ql/test/stubs/apache-commons-email-1.6.0/LICENSE.txt
Normal file
202
java/ql/test/stubs/apache-commons-email-1.6.0/LICENSE.txt
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) 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. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed 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.
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* 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.commons.mail;
|
||||
|
||||
import javax.mail.Authenticator;
|
||||
import javax.mail.PasswordAuthentication;
|
||||
|
||||
/**
|
||||
* This is a very simple authentication object that can be used for any
|
||||
* transport needing basic userName and password type authentication.
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public class DefaultAuthenticator extends Authenticator
|
||||
{
|
||||
/** Stores the login information for authentication. */
|
||||
private final PasswordAuthentication authentication;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*
|
||||
* @param userName user name to use when authentication is requested
|
||||
* @param password password to use when authentication is requested
|
||||
* @since 1.0
|
||||
*/
|
||||
public DefaultAuthenticator(final String userName, final String password)
|
||||
{
|
||||
this.authentication = new PasswordAuthentication(userName, password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the authentication object that will be used to login to the mail
|
||||
* server.
|
||||
*
|
||||
* @return A {@code PasswordAuthentication} object containing the
|
||||
* login information.
|
||||
* @since 1.0
|
||||
*/
|
||||
@Override
|
||||
protected PasswordAuthentication getPasswordAuthentication()
|
||||
{
|
||||
return this.authentication;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,805 @@
|
||||
/*
|
||||
* 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.commons.mail;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.mail.Authenticator;
|
||||
|
||||
/**
|
||||
* The base class for all email messages. This class sets the sender's email
|
||||
* & name, receiver's email & name, subject, and the sent date.
|
||||
* <p>
|
||||
* Subclasses are responsible for setting the message body.
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public abstract class Email {
|
||||
/**
|
||||
* Sets the userName and password if authentication is needed. If this method is
|
||||
* not used, no authentication will be performed.
|
||||
* <p>
|
||||
* This method will create a new instance of {@code DefaultAuthenticator} using
|
||||
* the supplied parameters.
|
||||
*
|
||||
* @param userName User name for the SMTP server
|
||||
* @param password password for the SMTP server
|
||||
* @see DefaultAuthenticator
|
||||
* @see #setAuthenticator
|
||||
* @since 1.0
|
||||
*/
|
||||
public void setAuthentication(final String userName, final String password) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@code Authenticator} to be used when authentication is requested
|
||||
* from the mail server.
|
||||
* <p>
|
||||
* This method should be used when your outgoing mail server requires
|
||||
* authentication. Your mail server must also support RFC2554.
|
||||
*
|
||||
* @param newAuthenticator the {@code Authenticator} object.
|
||||
* @see Authenticator
|
||||
* @since 1.0
|
||||
*/
|
||||
public void setAuthenticator(final Authenticator newAuthenticator) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the hostname of the outgoing mail server.
|
||||
*
|
||||
* @param aHostName aHostName
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.0
|
||||
*/
|
||||
public void setHostName(final String aHostName) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set or disable the STARTTLS encryption. Please see EMAIL-105 for the reasons
|
||||
* of deprecation.
|
||||
*
|
||||
* @deprecated since 1.3, use setStartTLSEnabled() instead
|
||||
* @param withTLS true if STARTTLS requested, false otherwise
|
||||
* @since 1.1
|
||||
*/
|
||||
@Deprecated
|
||||
public void setTLS(final boolean withTLS) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set or disable the STARTTLS encryption.
|
||||
*
|
||||
* @param startTlsEnabled true if STARTTLS requested, false otherwise
|
||||
* @return An Email.
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email setStartTLSEnabled(final boolean startTlsEnabled) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set or disable the required STARTTLS encryption.
|
||||
* <p>
|
||||
* Defaults to {@link #smtpPort}; can be overridden by using
|
||||
* {@link #setSmtpPort(int)}
|
||||
*
|
||||
* @param startTlsRequired true if STARTTLS requested, false otherwise
|
||||
* @return An Email.
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email setStartTLSRequired(final boolean startTlsRequired) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the non-SSL port number of the outgoing mail server.
|
||||
*
|
||||
* @param aPortNumber aPortNumber
|
||||
* @throws IllegalArgumentException if the port number is < 1
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.0
|
||||
* @see #setSslSmtpPort(String)
|
||||
*/
|
||||
public void setSmtpPort(final int aPortNumber) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the FROM field of the email to use the specified address. The email
|
||||
* address will also be used as the personal name. The name will be encoded by
|
||||
* the charset of {@link #setCharset(java.lang.String) setCharset()}. If it is
|
||||
* not set, it will be encoded using the Java platform's default charset
|
||||
* (UTF-16) if it contains non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email setFrom(final String email) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the FROM field of the email to use the specified address and the
|
||||
* specified personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email setFrom(final String email, final String name) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the FROM field of the email to use the specified address, personal name,
|
||||
* and charset encoding for the name.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @param charset The charset to encode the name with.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address or charset.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Email setFrom(final String email, final String name, final String charset) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a recipient TO to the email. The email address will also be used as the
|
||||
* personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addTo(final String email) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a list of TO recipients to the email. The email addresses will also be
|
||||
* used as the personal names. The names will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param emails A String array.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email addTo(final String... emails) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a recipient TO to the email using the specified address and the specified
|
||||
* personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addTo(final String email, final String name) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a recipient TO to the email using the specified address, personal name,
|
||||
* and charset encoding for the name.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @param charset The charset to encode the name with.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address or charset.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Email addTo(final String email, final String name, final String charset) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a recipient CC to the email. The email address will also be used as the
|
||||
* personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addCc(final String email) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an array of CC recipients to the email. The email addresses will also be
|
||||
* used as the personal name. The names will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param emails A String array.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email addCc(final String... emails) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a recipient CC to the email using the specified address and the specified
|
||||
* personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addCc(final String email, final String name) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a recipient CC to the email using the specified address, personal name,
|
||||
* and charset encoding for the name.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @param charset The charset to encode the name with.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address or charset.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Email addCc(final String email, final String name, final String charset) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a blind BCC recipient to the email. The email address will also be used
|
||||
* as the personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addBcc(final String email) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an array of blind BCC recipients to the email. The email addresses will
|
||||
* also be used as the personal name. The names will be encoded by the charset
|
||||
* of {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it
|
||||
* will be encoded using the Java platform's default charset (UTF-16) if it
|
||||
* contains non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param emails A String array.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email addBcc(final String... emails) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a blind BCC recipient to the email using the specified address and the
|
||||
* specified personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addBcc(final String email, final String name) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a blind BCC recipient to the email using the specified address, personal
|
||||
* name, and charset encoding for the name.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @param charset The charset to encode the name with.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address
|
||||
* @since 1.1
|
||||
*/
|
||||
public Email addBcc(final String email, final String name, final String charset) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a reply to address to the email. The email address will also be used as
|
||||
* the personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addReplyTo(final String email) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a reply to address to the email using the specified address and the
|
||||
* specified personal name. The name will be encoded by the charset of
|
||||
* {@link #setCharset(java.lang.String) setCharset()}. If it is not set, it will
|
||||
* be encoded using the Java platform's default charset (UTF-16) if it contains
|
||||
* non-ASCII characters; otherwise, it is used as is.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email addReplyTo(final String email, final String name) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a reply to address to the email using the specified address, personal
|
||||
* name, and charset encoding for the name.
|
||||
*
|
||||
* @param email A String.
|
||||
* @param name A String.
|
||||
* @param charset The charset to encode the name with.
|
||||
* @return An Email.
|
||||
* @throws EmailException Indicates an invalid email address or charset.
|
||||
* @since 1.1
|
||||
*/
|
||||
public Email addReplyTo(final String email, final String name, final String charset) throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to specify the mail headers. Example:
|
||||
*
|
||||
* X-Mailer: Sendmail, X-Priority: 1( highest ) or 2( high ) 3( normal ) 4( low
|
||||
* ) and 5( lowest ) Disposition-Notification-To: user@domain.net
|
||||
*
|
||||
* @param map A Map.
|
||||
* @throws IllegalArgumentException if either of the provided header / value is
|
||||
* null or empty
|
||||
* @since 1.0
|
||||
*/
|
||||
public void setHeaders(final Map<String, String> map) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a header ( name, value ) to the headers Map.
|
||||
*
|
||||
* @param name A String with the name.
|
||||
* @param value A String with the value.
|
||||
* @since 1.0
|
||||
* @throws IllegalArgumentException if either {@code name} or {@code value} is
|
||||
* null or empty
|
||||
*/
|
||||
public void addHeader(final String name, final String value) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the specified header.
|
||||
*
|
||||
* @param header A string with the header.
|
||||
* @return The value of the header, or null if no such header.
|
||||
* @since 1.5
|
||||
*/
|
||||
public String getHeader(final String header) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all headers on an Email.
|
||||
*
|
||||
* @return a Map of all headers.
|
||||
* @since 1.5
|
||||
*/
|
||||
public Map<String, String> getHeaders() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the email subject. Replaces end-of-line characters with spaces.
|
||||
*
|
||||
* @param aSubject A String.
|
||||
* @return An Email.
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email setSubject(final String aSubject) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the "bounce address" of this email.
|
||||
*
|
||||
* @return the bounce address as string
|
||||
* @since 1.4
|
||||
*/
|
||||
public String getBounceAddress() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the "bounce address" - the address to which undeliverable messages will
|
||||
* be returned. If this value is never set, then the message will be sent to the
|
||||
* address specified with the System property "mail.smtp.from", or if that value
|
||||
* is not set, then to the "from" address.
|
||||
*
|
||||
* @param email A String.
|
||||
* @return An Email.
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.0
|
||||
*/
|
||||
public Email setBounceAddress(final String email) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the content of the mail. It should be overridden by the subclasses.
|
||||
*
|
||||
* @param msg A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException generic exception.
|
||||
* @since 1.0
|
||||
*/
|
||||
public abstract Email setMsg(String msg) throws EmailException;
|
||||
|
||||
/**
|
||||
* Does the work of actually building the MimeMessage. Please note that a user
|
||||
* rarely calls this method directly and only if he/she is interested in the
|
||||
* sending the underlying MimeMessage without commons-email.
|
||||
*
|
||||
* @throws IllegalStateException if the MimeMessage was already built
|
||||
* @throws EmailException if there was an error.
|
||||
* @since 1.0
|
||||
*/
|
||||
public void buildMimeMessage() throws EmailException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the previously created MimeMessage to the SMTP server.
|
||||
*
|
||||
* @return the message id of the underlying MimeMessage
|
||||
* @throws IllegalArgumentException if the MimeMessage has not been created
|
||||
* @throws EmailException the sending failed
|
||||
*/
|
||||
public String sendMimeMessage() throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the email. Internally we build a MimeMessage which is afterwards sent
|
||||
* to the SMTP server.
|
||||
*
|
||||
* @return the message id of the underlying MimeMessage
|
||||
* @throws IllegalStateException if the MimeMessage was already built, ie
|
||||
* {@link #buildMimeMessage()} was already called
|
||||
* @throws EmailException the sending failed
|
||||
*/
|
||||
public String send() throws EmailException {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the sent date for the email. The sent date will default to the current
|
||||
* date if not explicitly set.
|
||||
*
|
||||
* @param date Date to use as the sent date on the email
|
||||
* @since 1.0
|
||||
*/
|
||||
public void setSentDate(final Date date) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the sent date for the email.
|
||||
*
|
||||
* @return date to be used as the sent date for the email
|
||||
* @since 1.0
|
||||
*/
|
||||
public Date getSentDate() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the subject of the email.
|
||||
*
|
||||
* @return email subject
|
||||
*/
|
||||
public String getSubject() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the host name of the SMTP server,
|
||||
*
|
||||
* @return host name
|
||||
*/
|
||||
public String getHostName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the listening port of the SMTP server.
|
||||
*
|
||||
* @return smtp port
|
||||
*/
|
||||
public String getSmtpPort() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether the client is configured to require STARTTLS.
|
||||
*
|
||||
* @return true if using STARTTLS for authentication, false otherwise
|
||||
* @since 1.3
|
||||
*/
|
||||
public boolean isStartTLSRequired() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether the client is configured to try to enable STARTTLS.
|
||||
*
|
||||
* @return true if using STARTTLS for authentication, false otherwise
|
||||
* @since 1.3
|
||||
*/
|
||||
public boolean isStartTLSEnabled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether the client is configured to try to enable STARTTLS. See
|
||||
* EMAIL-105 for reason of deprecation.
|
||||
*
|
||||
* @deprecated since 1.3, use isStartTLSEnabled() instead
|
||||
* @return true if using STARTTLS for authentication, false otherwise
|
||||
* @since 1.1
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean isTLS() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set details regarding "pop3 before smtp" authentication.
|
||||
*
|
||||
* @param newPopBeforeSmtp Whether or not to log into pop3 server before sending
|
||||
* mail.
|
||||
* @param newPopHost The pop3 host to use.
|
||||
* @param newPopUsername The pop3 username.
|
||||
* @param newPopPassword The pop3 password.
|
||||
* @since 1.0
|
||||
*/
|
||||
public void setPopBeforeSmtp(final boolean newPopBeforeSmtp, final String newPopHost, final String newPopUsername,
|
||||
final String newPopPassword) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether SSL/TLS encryption for the transport is currently enabled
|
||||
* (SMTPS/POPS). See EMAIL-105 for reason of deprecation.
|
||||
*
|
||||
* @deprecated since 1.3, use isSSLOnConnect() instead
|
||||
* @return true if SSL enabled for the transport
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean isSSL() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether SSL/TLS encryption for the transport is currently enabled
|
||||
* (SMTPS/POPS).
|
||||
*
|
||||
* @return true if SSL enabled for the transport
|
||||
* @since 1.3
|
||||
*/
|
||||
public boolean isSSLOnConnect() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether SSL/TLS encryption should be enabled for the SMTP transport upon
|
||||
* connection (SMTPS/POPS). See EMAIL-105 for reason of deprecation.
|
||||
*
|
||||
* @deprecated since 1.3, use setSSLOnConnect() instead
|
||||
* @param ssl whether to enable the SSL transport
|
||||
*/
|
||||
@Deprecated
|
||||
public void setSSL(final boolean ssl) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether SSL/TLS encryption should be enabled for the SMTP transport upon
|
||||
* connection (SMTPS/POPS). Takes precedence over
|
||||
* {@link #setStartTLSRequired(boolean)}
|
||||
* <p>
|
||||
* Defaults to {@link #sslSmtpPort}; can be overridden by using
|
||||
* {@link #setSslSmtpPort(String)}
|
||||
*
|
||||
* @param ssl whether to enable the SSL transport
|
||||
* @return An Email.
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email setSSLOnConnect(final boolean ssl) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the server identity checked as specified by RFC 2595
|
||||
*
|
||||
* @return true if the server identity is checked
|
||||
* @since 1.3
|
||||
*/
|
||||
public boolean isSSLCheckServerIdentity() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether the server identity is checked as specified by RFC 2595
|
||||
*
|
||||
* @param sslCheckServerIdentity whether to enable server identity check
|
||||
* @return An Email.
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.3
|
||||
*/
|
||||
public Email setSSLCheckServerIdentity(final boolean sslCheckServerIdentity) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current SSL port used by the SMTP transport.
|
||||
*
|
||||
* @return the current SSL port used by the SMTP transport
|
||||
*/
|
||||
public String getSslSmtpPort() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the SSL port to use for the SMTP transport. Defaults to the standard
|
||||
* port, 465.
|
||||
*
|
||||
* @param sslSmtpPort the SSL port to use for the SMTP transport
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @see #setSmtpPort(int)
|
||||
*/
|
||||
public void setSslSmtpPort(final String sslSmtpPort) {
|
||||
}
|
||||
|
||||
/**
|
||||
* If partial sending of email enabled.
|
||||
*
|
||||
* @return true if sending partial email is enabled
|
||||
* @since 1.3.2
|
||||
*/
|
||||
public boolean isSendPartial() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether the email is partially send in case of invalid addresses.
|
||||
* <p>
|
||||
* In case the mail server rejects an address as invalid, the call to
|
||||
* {@link #send()} may throw a {@link javax.mail.SendFailedException}, even if
|
||||
* partial send mode is enabled (emails to valid addresses will be transmitted).
|
||||
* In case the email server does not reject invalid addresses immediately, but
|
||||
* return a bounce message, no exception will be thrown by the {@link #send()}
|
||||
* method.
|
||||
*
|
||||
* @param sendPartial whether to enable partial send mode
|
||||
* @return An Email.
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.3.2
|
||||
*/
|
||||
public Email setSendPartial(final boolean sendPartial) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the socket connection timeout value in milliseconds.
|
||||
*
|
||||
* @return the timeout in milliseconds.
|
||||
* @since 1.2
|
||||
*/
|
||||
public int getSocketConnectionTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the socket connection timeout value in milliseconds. Default is a 60
|
||||
* second timeout.
|
||||
*
|
||||
* @param socketConnectionTimeout the connection timeout
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.2
|
||||
*/
|
||||
public void setSocketConnectionTimeout(final int socketConnectionTimeout) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the socket I/O timeout value in milliseconds.
|
||||
*
|
||||
* @return the socket I/O timeout
|
||||
* @since 1.2
|
||||
*/
|
||||
public int getSocketTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the socket I/O timeout value in milliseconds. Default is 60 second
|
||||
* timeout.
|
||||
*
|
||||
* @param socketTimeout the socket I/O timeout
|
||||
* @throws IllegalStateException if the mail session is already initialized
|
||||
* @since 1.2
|
||||
*/
|
||||
public void setSocketTimeout(final int socketTimeout) {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* 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.commons.mail;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
/**
|
||||
* Exception thrown when a checked error occurs in commons-email.
|
||||
* <p>
|
||||
* Adapted from FunctorException in Commons Collections.
|
||||
* <p>
|
||||
* Emulation support for nested exceptions has been removed in
|
||||
* {@code Email 1.3}, supported by JDK ≥ 1.4.
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public class EmailException extends Exception {
|
||||
/**
|
||||
* Constructs a new {@code EmailException} with no detail message.
|
||||
*/
|
||||
public EmailException() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code EmailException} with specified detail message.
|
||||
*
|
||||
* @param msg the error message.
|
||||
*/
|
||||
public EmailException(final String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code EmailException} with specified nested
|
||||
* {@code Throwable} root cause.
|
||||
*
|
||||
* @param rootCause the exception or error that caused this exception to be
|
||||
* thrown.
|
||||
*/
|
||||
public EmailException(final Throwable rootCause) {
|
||||
super(rootCause);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code EmailException} with specified detail message and
|
||||
* nested {@code Throwable} root cause.
|
||||
*
|
||||
* @param msg the error message.
|
||||
* @param rootCause the exception or error that caused this exception to be
|
||||
* thrown.
|
||||
*/
|
||||
public EmailException(final String msg, final Throwable rootCause) {
|
||||
super(msg, rootCause);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the stack trace of this exception to the standard error stream.
|
||||
*/
|
||||
@Override
|
||||
public void printStackTrace() {
|
||||
printStackTrace(System.err);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the stack trace of this exception to the specified stream.
|
||||
*
|
||||
* @param out the {@code PrintStream} to use for output
|
||||
*/
|
||||
@Override
|
||||
public void printStackTrace(final PrintStream out) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the stack trace of this exception to the specified writer.
|
||||
*
|
||||
* @param out the {@code PrintWriter} to use for output
|
||||
*/
|
||||
@Override
|
||||
public void printStackTrace(final PrintWriter out) {
|
||||
synchronized (out) {
|
||||
super.printStackTrace(out);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* 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.commons.mail;
|
||||
|
||||
/**
|
||||
* This class is used to send simple internet email messages without
|
||||
* attachments.
|
||||
*
|
||||
* @since 1.0
|
||||
*/
|
||||
public class SimpleEmail extends Email
|
||||
{
|
||||
/**
|
||||
* Set the content of the mail.
|
||||
*
|
||||
* @param msg A String.
|
||||
* @return An Email.
|
||||
* @throws EmailException see javax.mail.internet.MimeBodyPart
|
||||
* for definitions
|
||||
* @since 1.0
|
||||
*/
|
||||
@Override
|
||||
public Email setMsg(final String msg) throws EmailException
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
759
java/ql/test/stubs/javamail-api-1.6.2/LICENSE.txt
Normal file
759
java/ql/test/stubs/javamail-api-1.6.2/LICENSE.txt
Normal file
@@ -0,0 +1,759 @@
|
||||
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
|
||||
|
||||
1. Definitions.
|
||||
|
||||
1.1. "Contributor" means each individual or entity that creates or
|
||||
contributes to the creation of Modifications.
|
||||
|
||||
1.2. "Contributor Version" means the combination of the Original
|
||||
Software, prior Modifications used by a Contributor (if any), and
|
||||
the Modifications made by that particular Contributor.
|
||||
|
||||
1.3. "Covered Software" means (a) the Original Software, or (b)
|
||||
Modifications, or (c) the combination of files containing Original
|
||||
Software with files containing Modifications, in each case including
|
||||
portions thereof.
|
||||
|
||||
1.4. "Executable" means the Covered Software in any form other than
|
||||
Source Code.
|
||||
|
||||
1.5. "Initial Developer" means the individual or entity that first
|
||||
makes Original Software available under this License.
|
||||
|
||||
1.6. "Larger Work" means a work which combines Covered Software or
|
||||
portions thereof with code not governed by the terms of this License.
|
||||
|
||||
1.7. "License" means this document.
|
||||
|
||||
1.8. "Licensable" means having the right to grant, to the maximum
|
||||
extent possible, whether at the time of the initial grant or
|
||||
subsequently acquired, any and all of the rights conveyed herein.
|
||||
|
||||
1.9. "Modifications" means the Source Code and Executable form of
|
||||
any of the following:
|
||||
|
||||
A. Any file that results from an addition to, deletion from or
|
||||
modification of the contents of a file containing Original Software
|
||||
or previous Modifications;
|
||||
|
||||
B. Any new file that contains any part of the Original Software or
|
||||
previous Modification; or
|
||||
|
||||
C. Any new file that is contributed or otherwise made available
|
||||
under the terms of this License.
|
||||
|
||||
1.10. "Original Software" means the Source Code and Executable form
|
||||
of computer software code that is originally released under this
|
||||
License.
|
||||
|
||||
1.11. "Patent Claims" means any patent claim(s), now owned or
|
||||
hereafter acquired, including without limitation, method, process,
|
||||
and apparatus claims, in any patent Licensable by grantor.
|
||||
|
||||
1.12. "Source Code" means (a) the common form of computer software
|
||||
code in which modifications are made and (b) associated
|
||||
documentation included in or with such code.
|
||||
|
||||
1.13. "You" (or "Your") means an individual or a legal entity
|
||||
exercising rights under, and complying with all of the terms of,
|
||||
this License. For legal entities, "You" includes any entity which
|
||||
controls, is controlled by, or is under common control with You. For
|
||||
purposes of this definition, "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or beneficial
|
||||
ownership of such entity.
|
||||
|
||||
2. License Grants.
|
||||
|
||||
2.1. The Initial Developer Grant.
|
||||
|
||||
Conditioned upon Your compliance with Section 3.1 below and subject
|
||||
to third party intellectual property claims, the Initial Developer
|
||||
hereby grants You a world-wide, royalty-free, non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or
|
||||
trademark) Licensable by Initial Developer, to use, reproduce,
|
||||
modify, display, perform, sublicense and distribute the Original
|
||||
Software (or portions thereof), with or without Modifications,
|
||||
and/or as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims infringed by the making, using or selling of
|
||||
Original Software, to make, have made, use, practice, sell, and
|
||||
offer for sale, and/or otherwise dispose of the Original Software
|
||||
(or portions thereof).
|
||||
|
||||
(c) The licenses granted in Sections 2.1(a) and (b) are effective on
|
||||
the date Initial Developer first distributes or otherwise makes the
|
||||
Original Software available to a third party under the terms of this
|
||||
License.
|
||||
|
||||
(d) Notwithstanding Section 2.1(b) above, no patent license is
|
||||
granted: (1) for code that You delete from the Original Software, or
|
||||
(2) for infringements caused by: (i) the modification of the
|
||||
Original Software, or (ii) the combination of the Original Software
|
||||
with other software or devices.
|
||||
|
||||
2.2. Contributor Grant.
|
||||
|
||||
Conditioned upon Your compliance with Section 3.1 below and subject
|
||||
to third party intellectual property claims, each Contributor hereby
|
||||
grants You a world-wide, royalty-free, non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or
|
||||
trademark) Licensable by Contributor to use, reproduce, modify,
|
||||
display, perform, sublicense and distribute the Modifications
|
||||
created by such Contributor (or portions thereof), either on an
|
||||
unmodified basis, with other Modifications, as Covered Software
|
||||
and/or as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims infringed by the making, using, or selling
|
||||
of Modifications made by that Contributor either alone and/or in
|
||||
combination with its Contributor Version (or portions of such
|
||||
combination), to make, use, sell, offer for sale, have made, and/or
|
||||
otherwise dispose of: (1) Modifications made by that Contributor (or
|
||||
portions thereof); and (2) the combination of Modifications made by
|
||||
that Contributor with its Contributor Version (or portions of such
|
||||
combination).
|
||||
|
||||
(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective
|
||||
on the date Contributor first distributes or otherwise makes the
|
||||
Modifications available to a third party.
|
||||
|
||||
(d) Notwithstanding Section 2.2(b) above, no patent license is
|
||||
granted: (1) for any code that Contributor has deleted from the
|
||||
Contributor Version; (2) for infringements caused by: (i) third
|
||||
party modifications of Contributor Version, or (ii) the combination
|
||||
of Modifications made by that Contributor with other software
|
||||
(except as part of the Contributor Version) or other devices; or (3)
|
||||
under Patent Claims infringed by Covered Software in the absence of
|
||||
Modifications made by that Contributor.
|
||||
|
||||
3. Distribution Obligations.
|
||||
|
||||
3.1. Availability of Source Code.
|
||||
|
||||
Any Covered Software that You distribute or otherwise make available
|
||||
in Executable form must also be made available in Source Code form
|
||||
and that Source Code form must be distributed only under the terms
|
||||
of this License. You must include a copy of this License with every
|
||||
copy of the Source Code form of the Covered Software You distribute
|
||||
or otherwise make available. You must inform recipients of any such
|
||||
Covered Software in Executable form as to how they can obtain such
|
||||
Covered Software in Source Code form in a reasonable manner on or
|
||||
through a medium customarily used for software exchange.
|
||||
|
||||
3.2. Modifications.
|
||||
|
||||
The Modifications that You create or to which You contribute are
|
||||
governed by the terms of this License. You represent that You
|
||||
believe Your Modifications are Your original creation(s) and/or You
|
||||
have sufficient rights to grant the rights conveyed by this License.
|
||||
|
||||
3.3. Required Notices.
|
||||
|
||||
You must include a notice in each of Your Modifications that
|
||||
identifies You as the Contributor of the Modification. You may not
|
||||
remove or alter any copyright, patent or trademark notices contained
|
||||
within the Covered Software, or any notices of licensing or any
|
||||
descriptive text giving attribution to any Contributor or the
|
||||
Initial Developer.
|
||||
|
||||
3.4. Application of Additional Terms.
|
||||
|
||||
You may not offer or impose any terms on any Covered Software in
|
||||
Source Code form that alters or restricts the applicable version of
|
||||
this License or the recipients' rights hereunder. You may choose to
|
||||
offer, and to charge a fee for, warranty, support, indemnity or
|
||||
liability obligations to one or more recipients of Covered Software.
|
||||
However, you may do so only on Your own behalf, and not on behalf of
|
||||
the Initial Developer or any Contributor. You must make it
|
||||
absolutely clear that any such warranty, support, indemnity or
|
||||
liability obligation is offered by You alone, and You hereby agree
|
||||
to indemnify the Initial Developer and every Contributor for any
|
||||
liability incurred by the Initial Developer or such Contributor as a
|
||||
result of warranty, support, indemnity or liability terms You offer.
|
||||
|
||||
3.5. Distribution of Executable Versions.
|
||||
|
||||
You may distribute the Executable form of the Covered Software under
|
||||
the terms of this License or under the terms of a license of Your
|
||||
choice, which may contain terms different from this License,
|
||||
provided that You are in compliance with the terms of this License
|
||||
and that the license for the Executable form does not attempt to
|
||||
limit or alter the recipient's rights in the Source Code form from
|
||||
the rights set forth in this License. If You distribute the Covered
|
||||
Software in Executable form under a different license, You must make
|
||||
it absolutely clear that any terms which differ from this License
|
||||
are offered by You alone, not by the Initial Developer or
|
||||
Contributor. You hereby agree to indemnify the Initial Developer and
|
||||
every Contributor for any liability incurred by the Initial
|
||||
Developer or such Contributor as a result of any such terms You offer.
|
||||
|
||||
3.6. Larger Works.
|
||||
|
||||
You may create a Larger Work by combining Covered Software with
|
||||
other code not governed by the terms of this License and distribute
|
||||
the Larger Work as a single product. In such a case, You must make
|
||||
sure the requirements of this License are fulfilled for the Covered
|
||||
Software.
|
||||
|
||||
4. Versions of the License.
|
||||
|
||||
4.1. New Versions.
|
||||
|
||||
Oracle is the initial license steward and may publish revised and/or
|
||||
new versions of this License from time to time. Each version will be
|
||||
given a distinguishing version number. Except as provided in Section
|
||||
4.3, no one other than the license steward has the right to modify
|
||||
this License.
|
||||
|
||||
4.2. Effect of New Versions.
|
||||
|
||||
You may always continue to use, distribute or otherwise make the
|
||||
Covered Software available under the terms of the version of the
|
||||
License under which You originally received the Covered Software. If
|
||||
the Initial Developer includes a notice in the Original Software
|
||||
prohibiting it from being distributed or otherwise made available
|
||||
under any subsequent version of the License, You must distribute and
|
||||
make the Covered Software available under the terms of the version
|
||||
of the License under which You originally received the Covered
|
||||
Software. Otherwise, You may also choose to use, distribute or
|
||||
otherwise make the Covered Software available under the terms of any
|
||||
subsequent version of the License published by the license steward.
|
||||
|
||||
4.3. Modified Versions.
|
||||
|
||||
When You are an Initial Developer and You want to create a new
|
||||
license for Your Original Software, You may create and use a
|
||||
modified version of this License if You: (a) rename the license and
|
||||
remove any references to the name of the license steward (except to
|
||||
note that the license differs from this License); and (b) otherwise
|
||||
make it clear that the license contains terms which differ from this
|
||||
License.
|
||||
|
||||
5. DISCLAIMER OF WARRANTY.
|
||||
|
||||
COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
||||
INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE
|
||||
IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR
|
||||
NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
|
||||
THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE
|
||||
DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
|
||||
OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
|
||||
ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS
|
||||
AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
|
||||
6. TERMINATION.
|
||||
|
||||
6.1. This License and the rights granted hereunder will terminate
|
||||
automatically if You fail to comply with terms herein and fail to
|
||||
cure such breach within 30 days of becoming aware of the breach.
|
||||
Provisions which, by their nature, must remain in effect beyond the
|
||||
termination of this License shall survive.
|
||||
|
||||
6.2. If You assert a patent infringement claim (excluding
|
||||
declaratory judgment actions) against Initial Developer or a
|
||||
Contributor (the Initial Developer or Contributor against whom You
|
||||
assert such claim is referred to as "Participant") alleging that the
|
||||
Participant Software (meaning the Contributor Version where the
|
||||
Participant is a Contributor or the Original Software where the
|
||||
Participant is the Initial Developer) directly or indirectly
|
||||
infringes any patent, then any and all rights granted directly or
|
||||
indirectly to You by such Participant, the Initial Developer (if the
|
||||
Initial Developer is not the Participant) and all Contributors under
|
||||
Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice
|
||||
from Participant terminate prospectively and automatically at the
|
||||
expiration of such 60 day notice period, unless if within such 60
|
||||
day period You withdraw Your claim with respect to the Participant
|
||||
Software against such Participant either unilaterally or pursuant to
|
||||
a written agreement with Participant.
|
||||
|
||||
6.3. If You assert a patent infringement claim against Participant
|
||||
alleging that the Participant Software directly or indirectly
|
||||
infringes any patent where such claim is resolved (such as by
|
||||
license or settlement) prior to the initiation of patent
|
||||
infringement litigation, then the reasonable value of the licenses
|
||||
granted by such Participant under Sections 2.1 or 2.2 shall be taken
|
||||
into account in determining the amount or value of any payment or
|
||||
license.
|
||||
|
||||
6.4. In the event of termination under Sections 6.1 or 6.2 above,
|
||||
all end user licenses that have been validly granted by You or any
|
||||
distributor hereunder prior to termination (excluding licenses
|
||||
granted to You by any distributor) shall survive termination.
|
||||
|
||||
7. LIMITATION OF LIABILITY.
|
||||
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
||||
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
|
||||
INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
|
||||
COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE
|
||||
TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
|
||||
CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
|
||||
LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER
|
||||
FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
|
||||
LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT
|
||||
APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH
|
||||
PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH
|
||||
LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
|
||||
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
|
||||
AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
8. U.S. GOVERNMENT END USERS.
|
||||
|
||||
The Covered Software is a "commercial item," as that term is defined
|
||||
in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
|
||||
software" (as that term is defined at 48 C.F.R. <20>
|
||||
252.227-7014(a)(1)) and "commercial computer software documentation"
|
||||
as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent
|
||||
with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4
|
||||
(June 1995), all U.S. Government End Users acquire Covered Software
|
||||
with only those rights set forth herein. This U.S. Government Rights
|
||||
clause is in lieu of, and supersedes, any other FAR, DFAR, or other
|
||||
clause or provision that addresses Government rights in computer
|
||||
software under this License.
|
||||
|
||||
9. MISCELLANEOUS.
|
||||
|
||||
This License represents the complete agreement concerning subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. This License shall be governed by
|
||||
the law of the jurisdiction specified in a notice contained within
|
||||
the Original Software (except to the extent applicable law, if any,
|
||||
provides otherwise), excluding such jurisdiction's conflict-of-law
|
||||
provisions. Any litigation relating to this License shall be subject
|
||||
to the jurisdiction of the courts located in the jurisdiction and
|
||||
venue specified in a notice contained within the Original Software,
|
||||
with the losing party responsible for costs, including, without
|
||||
limitation, court costs and reasonable attorneys' fees and expenses.
|
||||
The application of the United Nations Convention on Contracts for
|
||||
the International Sale of Goods is expressly excluded. Any law or
|
||||
regulation which provides that the language of a contract shall be
|
||||
construed against the drafter shall not apply to this License. You
|
||||
agree that You alone are responsible for compliance with the United
|
||||
States export administration regulations (and the export control
|
||||
laws and regulation of any other countries) when You use, distribute
|
||||
or otherwise make available any Covered Software.
|
||||
|
||||
10. RESPONSIBILITY FOR CLAIMS.
|
||||
|
||||
As between Initial Developer and the Contributors, each party is
|
||||
responsible for claims and damages arising, directly or indirectly,
|
||||
out of its utilization of rights under this License and You agree to
|
||||
work with Initial Developer and Contributors to distribute such
|
||||
responsibility on an equitable basis. Nothing herein is intended or
|
||||
shall be deemed to constitute any admission of liability.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION
|
||||
LICENSE (CDDL)
|
||||
|
||||
The code released under the CDDL shall be governed by the laws of the
|
||||
State of California (excluding conflict-of-law provisions). Any
|
||||
litigation relating to this License shall be subject to the jurisdiction
|
||||
of the Federal Courts of the Northern District of California and the
|
||||
state courts of the State of California, with venue lying in Santa Clara
|
||||
County, California.
|
||||
|
||||
|
||||
|
||||
The GNU General Public License (GPL) Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor
|
||||
Boston, MA 02110-1335
|
||||
USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your freedom to
|
||||
share and change it. By contrast, the GNU General Public License is
|
||||
intended to guarantee your freedom to share and change free software--to
|
||||
make sure the software is free for all its users. This General Public
|
||||
License applies to most of the Free Software Foundation's software and
|
||||
to any other program whose authors commit to using it. (Some other Free
|
||||
Software Foundation software is covered by the GNU Library General
|
||||
Public License instead.) You can apply it to your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price.
|
||||
Our General Public Licenses are designed to make sure that you have the
|
||||
freedom to distribute copies of free software (and charge for this
|
||||
service if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid anyone
|
||||
to deny you these rights or to ask you to surrender the rights. These
|
||||
restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that you have.
|
||||
You must make sure that they, too, receive or can get the source code.
|
||||
And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software patents.
|
||||
We wish to avoid the danger that redistributors of a free program will
|
||||
individually obtain patent licenses, in effect making the program
|
||||
proprietary. To prevent this, we have made it clear that any patent must
|
||||
be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains a
|
||||
notice placed by the copyright holder saying it may be distributed under
|
||||
the terms of this General Public License. The "Program", below, refers
|
||||
to any such program or work, and a "work based on the Program" means
|
||||
either the Program or any derivative work under copyright law: that is
|
||||
to say, a work containing the Program or a portion of it, either
|
||||
verbatim or with modifications and/or translated into another language.
|
||||
(Hereinafter, translation is included without limitation in the term
|
||||
"modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of running
|
||||
the Program is not restricted, and the output from the Program is
|
||||
covered only if its contents constitute a work based on the Program
|
||||
(independent of having been made by running the Program). Whether that
|
||||
is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's source
|
||||
code as you receive it, in any medium, provided that you conspicuously
|
||||
and appropriately publish on each copy an appropriate copyright notice
|
||||
and disclaimer of warranty; keep intact all the notices that refer to
|
||||
this License and to the absence of any warranty; and give any other
|
||||
recipients of the Program a copy of this License along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion of
|
||||
it, thus forming a work based on the Program, and copy and distribute
|
||||
such modifications or work under the terms of Section 1 above, provided
|
||||
that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any part
|
||||
thereof, to be licensed as a whole at no charge to all third parties
|
||||
under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a notice
|
||||
that there is no warranty (or else, saying that you provide a
|
||||
warranty) and that users may redistribute the program under these
|
||||
conditions, and telling the user how to view a copy of this License.
|
||||
(Exception: if the Program itself is interactive but does not
|
||||
normally print such an announcement, your work based on the Program
|
||||
is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program, and
|
||||
can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based on
|
||||
the Program, the distribution of the whole must be on the terms of this
|
||||
License, whose permissions for other licensees extend to the entire
|
||||
whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of a
|
||||
storage or distribution medium does not bring the other work under the
|
||||
scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections 1
|
||||
and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your cost
|
||||
of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer to
|
||||
distribute corresponding source code. (This alternative is allowed
|
||||
only for noncommercial distribution and only if you received the
|
||||
program in object code or executable form with such an offer, in
|
||||
accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source code
|
||||
means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to control
|
||||
compilation and installation of the executable. However, as a special
|
||||
exception, the source code distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies the
|
||||
executable.
|
||||
|
||||
If distribution of executable or object code is made by offering access
|
||||
to copy from a designated place, then offering equivalent access to copy
|
||||
the source code from the same place counts as distribution of the source
|
||||
code, even though third parties are not compelled to copy the source
|
||||
along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt otherwise
|
||||
to copy, modify, sublicense or distribute the Program is void, and will
|
||||
automatically terminate your rights under this License. However, parties
|
||||
who have received copies, or rights, from you under this License will
|
||||
not have their licenses terminated so long as such parties remain in
|
||||
full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and all
|
||||
its terms and conditions for copying, distributing or modifying the
|
||||
Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further restrictions
|
||||
on the recipients' exercise of the rights granted herein. You are not
|
||||
responsible for enforcing compliance by third parties to this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot distribute
|
||||
so as to satisfy simultaneously your obligations under this License and
|
||||
any other pertinent obligations, then as a consequence you may not
|
||||
distribute the Program at all. For example, if a patent license would
|
||||
not permit royalty-free redistribution of the Program by all those who
|
||||
receive copies directly or indirectly through you, then the only way you
|
||||
could satisfy both it and this License would be to refrain entirely from
|
||||
distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is implemented
|
||||
by public license practices. Many people have made generous
|
||||
contributions to the wide range of software distributed through that
|
||||
system in reliance on consistent application of that system; it is up to
|
||||
the author/donor to decide if he or she is willing to distribute
|
||||
software through any other system and a licensee cannot impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to be
|
||||
a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License may
|
||||
add an explicit geographical distribution limitation excluding those
|
||||
countries, so that distribution is permitted only in or among countries
|
||||
not thus excluded. In such case, this License incorporates the
|
||||
limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new
|
||||
versions of the General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Program does not specify a version
|
||||
number of this License, you may choose any version ever published by the
|
||||
Free Software Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the
|
||||
author to ask for permission. For software which is copyrighted by the
|
||||
Free Software Foundation, write to the Free Software Foundation; we
|
||||
sometimes make exceptions for this. Our decision will be guided by the
|
||||
two goals of preserving the free status of all derivatives of our free
|
||||
software and of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND,
|
||||
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
||||
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
|
||||
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
|
||||
NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
|
||||
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
||||
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
|
||||
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
|
||||
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
|
||||
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
|
||||
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to
|
||||
attach them to the start of each source file to most effectively convey
|
||||
the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
One line to give the program's name and a brief idea of what it does.
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type
|
||||
`show w'. This is free software, and you are welcome to redistribute
|
||||
it under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the
|
||||
appropriate parts of the General Public License. Of course, the commands
|
||||
you use may be called something other than `show w' and `show c'; they
|
||||
could even be mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
program `Gnomovision' (which makes passes at compilers) written by
|
||||
James Hacker.
|
||||
|
||||
signature of Ty Coon, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications
|
||||
with the library. If this is what you want to do, use the GNU Library
|
||||
General Public License instead of this License.
|
||||
|
||||
#
|
||||
|
||||
Certain source files distributed by Oracle America, Inc. and/or its
|
||||
affiliates are subject to the following clarification and special
|
||||
exception to the GPLv2, based on the GNU Project exception for its
|
||||
Classpath libraries, known as the GNU Classpath Exception, but only
|
||||
where Oracle has expressly included in the particular source file's
|
||||
header the words "Oracle designates this particular file as subject to
|
||||
the "Classpath" exception as provided by Oracle in the LICENSE file
|
||||
that accompanied this code."
|
||||
|
||||
You should also note that Oracle includes multiple, independent
|
||||
programs in this software package. Some of those programs are provided
|
||||
under licenses deemed incompatible with the GPLv2 by the Free Software
|
||||
Foundation and others. For example, the package includes programs
|
||||
licensed under the Apache License, Version 2.0. Such programs are
|
||||
licensed to you under their original licenses.
|
||||
|
||||
Oracle facilitates your further distribution of this package by adding
|
||||
the Classpath Exception to the necessary parts of its GPLv2 code, which
|
||||
permits you to use that code in combination with other independent
|
||||
modules not licensed under the GPLv2. However, note that this would
|
||||
not permit you to commingle code under an incompatible license with
|
||||
Oracle's GPLv2 licensed code by, for example, cutting and pasting such
|
||||
code into a file also containing Oracle's GPLv2 licensed code and then
|
||||
distributing the result. Additionally, if you were to remove the
|
||||
Classpath Exception from any of the files to which it applies and
|
||||
distribute the result, you would likely be required to license some or
|
||||
all of the other code in that distribution under the GPLv2 as well, and
|
||||
since the GPLv2 is incompatible with the license terms of some items
|
||||
included in the distribution by Oracle, removing the Classpath
|
||||
Exception could therefore effectively compromise your ability to
|
||||
further distribute the package.
|
||||
|
||||
Proceed with caution and we recommend that you obtain the advice of a
|
||||
lawyer skilled in open source matters before removing the Classpath
|
||||
Exception or making modifications to this package which may
|
||||
subsequently be redistributed and/or involve the use of third party
|
||||
software.
|
||||
|
||||
CLASSPATH EXCEPTION
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License version 2 cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from or
|
||||
based on this library. If you modify this library, you may extend this
|
||||
exception to your version of the library, but you are not obligated to
|
||||
do so. If you do not wish to do so, delete this exception statement
|
||||
from your version.
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||
*
|
||||
* Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* The contents of this file are subject to the terms of either the GNU
|
||||
* General Public License Version 2 only ("GPL") or the Common Development
|
||||
* and Distribution License("CDDL") (collectively, the "License"). You
|
||||
* may not use this file except in compliance with the License. You can
|
||||
* obtain a copy of the License at
|
||||
* https://oss.oracle.com/licenses/CDDL+GPL-1.1
|
||||
* or LICENSE.txt. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* When distributing the software, include this License Header Notice in each
|
||||
* file and include the License file at LICENSE.txt.
|
||||
*
|
||||
* GPL Classpath Exception:
|
||||
* Oracle designates this particular file as subject to the "Classpath"
|
||||
* exception as provided by Oracle in the GPL Version 2 section of the License
|
||||
* file that accompanied this code.
|
||||
*
|
||||
* Modifications:
|
||||
* If applicable, add the following below the License Header, with the fields
|
||||
* enclosed by brackets [] replaced by your own identifying information:
|
||||
* "Portions Copyright [year] [name of copyright owner]"
|
||||
*
|
||||
* Contributor(s):
|
||||
* If you wish your version of this file to be governed by only the CDDL or
|
||||
* only the GPL Version 2, indicate your decision by adding "[Contributor]
|
||||
* elects to include this software in this distribution under the [CDDL or GPL
|
||||
* Version 2] license." If you don't indicate a single choice of license, a
|
||||
* recipient has the option to distribute your version of this file under
|
||||
* either the CDDL, the GPL Version 2 or to extend the choice of license to
|
||||
* its licensees as provided above. However, if you add GPL Version 2 code
|
||||
* and therefore, elected the GPL Version 2 license, then the option applies
|
||||
* only if the new code is made subject to such option by the copyright
|
||||
* holder.
|
||||
*/
|
||||
|
||||
package javax.mail;
|
||||
|
||||
import java.net.InetAddress;
|
||||
|
||||
/**
|
||||
* The class Authenticator represents an object that knows how to obtain
|
||||
* authentication for a network connection. Usually, it will do this by
|
||||
* prompting the user for information.
|
||||
* <p>
|
||||
* Applications use this class by creating a subclass, and registering an
|
||||
* instance of that subclass with the session when it is created. When
|
||||
* authentication is required, the system will invoke a method on the subclass
|
||||
* (like getPasswordAuthentication). The subclass's method can query about the
|
||||
* authentication being requested with a number of inherited methods
|
||||
* (getRequestingXXX()), and form an appropriate message for the user.
|
||||
* <p>
|
||||
* All methods that request authentication have a default implementation that
|
||||
* fails.
|
||||
*
|
||||
* @see java.net.Authenticator
|
||||
* @see javax.mail.Session#getInstance(java.util.Properties,
|
||||
* javax.mail.Authenticator)
|
||||
* @see javax.mail.Session#getDefaultInstance(java.util.Properties,
|
||||
* javax.mail.Authenticator)
|
||||
* @see javax.mail.Session#requestPasswordAuthentication
|
||||
* @see javax.mail.PasswordAuthentication
|
||||
*
|
||||
* @author Bill Foote
|
||||
* @author Bill Shannon
|
||||
*/
|
||||
|
||||
// There are no abstract methods, but to be useful the user must
|
||||
// subclass.
|
||||
public abstract class Authenticator {
|
||||
|
||||
/**
|
||||
* Ask the authenticator for a password.
|
||||
* <p>
|
||||
*
|
||||
* @param addr The InetAddress of the site requesting authorization, or null
|
||||
* if not known.
|
||||
* @param port the port for the requested connection
|
||||
* @param protocol The protocol that's requesting the connection (@see
|
||||
* java.net.Authenticator.getProtocol())
|
||||
* @param prompt A prompt string for the user
|
||||
*
|
||||
* @return The username/password, or null if one can't be gotten.
|
||||
*/
|
||||
final synchronized PasswordAuthentication requestPasswordAuthentication(InetAddress addr, int port, String protocol,
|
||||
String prompt, String defaultUserName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the InetAddress of the site requesting authorization, or null if it's
|
||||
* not available.
|
||||
*/
|
||||
protected final InetAddress getRequestingSite() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the port for the requested connection
|
||||
*/
|
||||
protected final int getRequestingPort() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Give the protocol that's requesting the connection. Often this will be based
|
||||
* on a URLName.
|
||||
*
|
||||
* @return the protcol
|
||||
*
|
||||
* @see javax.mail.URLName#getProtocol
|
||||
*/
|
||||
protected final String getRequestingProtocol() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the prompt string given by the requestor
|
||||
*/
|
||||
protected final String getRequestingPrompt() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the default user name given by the requestor
|
||||
*/
|
||||
protected final String getDefaultUserName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when password authentication is needed. Subclasses should override the
|
||||
* default implementation, which returns null.
|
||||
* <p>
|
||||
*
|
||||
* Note that if this method uses a dialog to prompt the user for this
|
||||
* information, the dialog needs to block until the user supplies the
|
||||
* information. This method can not simply return after showing the dialog.
|
||||
*
|
||||
* @return The PasswordAuthentication collected from the user, or null if none
|
||||
* is provided.
|
||||
*/
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||
*
|
||||
* Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* The contents of this file are subject to the terms of either the GNU
|
||||
* General Public License Version 2 only ("GPL") or the Common Development
|
||||
* and Distribution License("CDDL") (collectively, the "License"). You
|
||||
* may not use this file except in compliance with the License. You can
|
||||
* obtain a copy of the License at
|
||||
* https://oss.oracle.com/licenses/CDDL+GPL-1.1
|
||||
* or LICENSE.txt. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* When distributing the software, include this License Header Notice in each
|
||||
* file and include the License file at LICENSE.txt.
|
||||
*
|
||||
* GPL Classpath Exception:
|
||||
* Oracle designates this particular file as subject to the "Classpath"
|
||||
* exception as provided by Oracle in the GPL Version 2 section of the License
|
||||
* file that accompanied this code.
|
||||
*
|
||||
* Modifications:
|
||||
* If applicable, add the following below the License Header, with the fields
|
||||
* enclosed by brackets [] replaced by your own identifying information:
|
||||
* "Portions Copyright [year] [name of copyright owner]"
|
||||
*
|
||||
* Contributor(s):
|
||||
* If you wish your version of this file to be governed by only the CDDL or
|
||||
* only the GPL Version 2, indicate your decision by adding "[Contributor]
|
||||
* elects to include this software in this distribution under the [CDDL or GPL
|
||||
* Version 2] license." If you don't indicate a single choice of license, a
|
||||
* recipient has the option to distribute your version of this file under
|
||||
* either the CDDL, the GPL Version 2 or to extend the choice of license to
|
||||
* its licensees as provided above. However, if you add GPL Version 2 code
|
||||
* and therefore, elected the GPL Version 2 license, then the option applies
|
||||
* only if the new code is made subject to such option by the copyright
|
||||
* holder.
|
||||
*/
|
||||
|
||||
package javax.mail;
|
||||
|
||||
/**
|
||||
* The class PasswordAuthentication is a data holder that is used by
|
||||
* Authenticator. It is simply a repository for a user name and a password.
|
||||
*
|
||||
* @see java.net.PasswordAuthentication
|
||||
* @see javax.mail.Authenticator
|
||||
* @see javax.mail.Authenticator#getPasswordAuthentication()
|
||||
*
|
||||
* @author Bill Foote
|
||||
*/
|
||||
|
||||
public final class PasswordAuthentication {
|
||||
/**
|
||||
* Initialize a new PasswordAuthentication
|
||||
*
|
||||
* @param userName the user name
|
||||
* @param password The user's password
|
||||
*/
|
||||
public PasswordAuthentication(String userName, String password) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the user name
|
||||
*/
|
||||
public String getUserName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the password
|
||||
*/
|
||||
public String getPassword() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
325
java/ql/test/stubs/javamail-api-1.6.2/javax/mail/Session.java
Normal file
325
java/ql/test/stubs/javamail-api-1.6.2/javax/mail/Session.java
Normal file
@@ -0,0 +1,325 @@
|
||||
/*
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
|
||||
*
|
||||
* Copyright (c) 1997-2018 Oracle and/or its affiliates. All rights reserved.
|
||||
*
|
||||
* The contents of this file are subject to the terms of either the GNU
|
||||
* General Public License Version 2 only ("GPL") or the Common Development
|
||||
* and Distribution License("CDDL") (collectively, the "License"). You
|
||||
* may not use this file except in compliance with the License. You can
|
||||
* obtain a copy of the License at
|
||||
* https://oss.oracle.com/licenses/CDDL+GPL-1.1
|
||||
* or LICENSE.txt. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* When distributing the software, include this License Header Notice in each
|
||||
* file and include the License file at LICENSE.txt.
|
||||
*
|
||||
* GPL Classpath Exception:
|
||||
* Oracle designates this particular file as subject to the "Classpath"
|
||||
* exception as provided by Oracle in the GPL Version 2 section of the License
|
||||
* file that accompanied this code.
|
||||
*
|
||||
* Modifications:
|
||||
* If applicable, add the following below the License Header, with the fields
|
||||
* enclosed by brackets [] replaced by your own identifying information:
|
||||
* "Portions Copyright [year] [name of copyright owner]"
|
||||
*
|
||||
* Contributor(s):
|
||||
* If you wish your version of this file to be governed by only the CDDL or
|
||||
* only the GPL Version 2, indicate your decision by adding "[Contributor]
|
||||
* elects to include this software in this distribution under the [CDDL or GPL
|
||||
* Version 2] license." If you don't indicate a single choice of license, a
|
||||
* recipient has the option to distribute your version of this file under
|
||||
* either the CDDL, the GPL Version 2 or to extend the choice of license to
|
||||
* its licensees as provided above. However, if you add GPL Version 2 code
|
||||
* and therefore, elected the GPL Version 2 license, then the option applies
|
||||
* only if the new code is made subject to such option by the copyright
|
||||
* holder.
|
||||
*/
|
||||
|
||||
package javax.mail;
|
||||
|
||||
import java.lang.reflect.*;
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.security.*;
|
||||
import java.util.Collections;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.ServiceLoader;
|
||||
import java.util.logging.Level;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* The Session class represents a mail session and is not subclassed. It
|
||||
* collects together properties and defaults used by the mail API's. A single
|
||||
* default session can be shared by multiple applications on the desktop.
|
||||
* Unshared sessions can also be created.
|
||||
* <p>
|
||||
*
|
||||
* The Session class provides access to the protocol providers that implement
|
||||
* the <code>Store</code>, <code>Transport</code>, and related classes. The
|
||||
* protocol providers are configured using the following files:
|
||||
* <ul>
|
||||
* <li><code>javamail.providers</code> and
|
||||
* <code>javamail.default.providers</code></li>
|
||||
* <li><code>javamail.address.map</code> and
|
||||
* <code>javamail.default.address.map</code></li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* Each <code>javamail.</code><i>X</i> resource file is searched for using three
|
||||
* methods in the following order:
|
||||
* <ol>
|
||||
* <li><code><i>java.home</i>/<i>conf</i>/javamail.</code><i>X</i></li>
|
||||
* <li><code>META-INF/javamail.</code><i>X</i></li>
|
||||
* <li><code>META-INF/javamail.default.</code><i>X</i></li>
|
||||
* </ol>
|
||||
* <p>
|
||||
* (Where <i>java.home</i> is the value of the "java.home" System property and
|
||||
* <i>conf</i> is the directory named "conf" if it exists, otherwise the
|
||||
* directory named "lib"; the "conf" directory was introduced in JDK 1.9.)
|
||||
* <p>
|
||||
* The first method allows the user to include their own version of the resource
|
||||
* file by placing it in the <i>conf</i> directory where the
|
||||
* <code>java.home</code> property points. The second method allows an
|
||||
* application that uses the JavaMail APIs to include their own resource files
|
||||
* in their application's or jar file's <code>META-INF</code> directory. The
|
||||
* <code>javamail.default.</code><i>X</i> default files are part of the JavaMail
|
||||
* <code>mail.jar</code> file and should not be supplied by users.
|
||||
* <p>
|
||||
*
|
||||
* File location depends upon how the <code>ClassLoader</code> method
|
||||
* <code>getResource</code> is implemented. Usually, the
|
||||
* <code>getResource</code> method searches through CLASSPATH until it finds the
|
||||
* requested file and then stops.
|
||||
* <p>
|
||||
*
|
||||
* The ordering of entries in the resource files matters. If multiple entries
|
||||
* exist, the first entries take precedence over the later entries. For example,
|
||||
* the first IMAP provider found will be set as the default IMAP implementation
|
||||
* until explicitly changed by the application. The user- or system-supplied
|
||||
* resource files augment, they do not override, the default files included with
|
||||
* the JavaMail APIs. This means that all entries in all files loaded will be
|
||||
* available.
|
||||
* <p>
|
||||
*
|
||||
* <b><code>javamail.providers</code></b> and
|
||||
* <b><code>javamail.default.providers</code></b>
|
||||
* <p>
|
||||
*
|
||||
* These resource files specify the stores and transports that are available on
|
||||
* the system, allowing an application to "discover" what store and transport
|
||||
* implementations are available. The protocol implementations are listed one
|
||||
* per line. The file format defines four attributes that describe a protocol
|
||||
* implementation. Each attribute is an "="-separated name-value pair with the
|
||||
* name in lowercase. Each name-value pair is semi-colon (";") separated. The
|
||||
* following names are defined.
|
||||
*
|
||||
* <table border=1>
|
||||
* <caption> Attribute Names in Providers Files </caption>
|
||||
* <tr>
|
||||
* <th>Name</th>
|
||||
* <th>Description</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>protocol</td>
|
||||
* <td>Name assigned to protocol. For example, <code>smtp</code> for
|
||||
* Transport.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>type</td>
|
||||
* <td>Valid entries are <code>store</code> and <code>transport</code>.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>class</td>
|
||||
* <td>Class name that implements this protocol.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>vendor</td>
|
||||
* <td>Optional string identifying the vendor.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>version</td>
|
||||
* <td>Optional string identifying the version.</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
* <p>
|
||||
*
|
||||
* Here's an example of <code>META-INF/javamail.default.providers</code> file
|
||||
* contents:
|
||||
*
|
||||
* <pre>
|
||||
* protocol=imap; type=store; class=com.sun.mail.imap.IMAPStore; vendor=Oracle;
|
||||
* protocol=smtp; type=transport; class=com.sun.mail.smtp.SMTPTransport; vendor=Oracle;
|
||||
* </pre>
|
||||
* <p>
|
||||
*
|
||||
* The current implementation also supports configuring providers using the Java
|
||||
* SE {@link java.util.ServiceLoader ServiceLoader} mechanism. When creating
|
||||
* your own provider, create a {@link Provider} subclass, for example:
|
||||
*
|
||||
* <pre>
|
||||
* package com.example;
|
||||
*
|
||||
* import javax.mail.Provider;
|
||||
*
|
||||
* public class MyProvider extends Provider {
|
||||
* public MyProvider() {
|
||||
* super(Provider.Type.STORE, "myprot", MyStore.class.getName(), "Example", null);
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* Then include a file named <code>META-INF/services/javax.mail.Provider</code>
|
||||
* in your jar file that lists the name of your Provider class:
|
||||
*
|
||||
* <pre>
|
||||
* com.example.MyProvider
|
||||
* </pre>
|
||||
* <p>
|
||||
*
|
||||
* <b><code>javamail.address.map</code></b> and
|
||||
* <b><code>javamail.default.address.map</code></b>
|
||||
* <p>
|
||||
*
|
||||
* These resource files map transport address types to the transport protocol.
|
||||
* The <code>getType</code> method of <code>javax.mail.Address</code> returns
|
||||
* the address type. The <code>javamail.address.map</code> file maps the
|
||||
* transport type to the protocol. The file format is a series of name-value
|
||||
* pairs. Each key name should correspond to an address type that is currently
|
||||
* installed on the system; there should also be an entry for each
|
||||
* <code>javax.mail.Address</code> implementation that is present if it is to be
|
||||
* used. For example, the <code>javax.mail.internet.InternetAddress</code>
|
||||
* method <code>getType</code> returns "rfc822". Each referenced protocol should
|
||||
* be installed on the system. For the case of <code>news</code>, below, the
|
||||
* client should install a Transport provider supporting the nntp protocol.
|
||||
* <p>
|
||||
*
|
||||
* Here are the typical contents of a <code>javamail.address.map</code> file:
|
||||
*
|
||||
* <pre>
|
||||
* rfc822=smtp
|
||||
* news=nntp
|
||||
* </pre>
|
||||
*
|
||||
* @author John Mani
|
||||
* @author Bill Shannon
|
||||
* @author Max Spivak
|
||||
*/
|
||||
|
||||
public final class Session {
|
||||
/**
|
||||
* Get a new Session object.
|
||||
*
|
||||
* @param props Properties object that hold relevant properties.<br>
|
||||
* It is expected that the client supplies values for the
|
||||
* properties listed in Appendix A of the JavaMail spec
|
||||
* (particularly mail.store.protocol,
|
||||
* mail.transport.protocol, mail.host, mail.user, and
|
||||
* mail.from) as the defaults are unlikely to work in all
|
||||
* cases.
|
||||
* @param authenticator Authenticator object used to call back to the
|
||||
* application when a user name and password is needed.
|
||||
* @return a new Session object
|
||||
* @see javax.mail.Authenticator
|
||||
*/
|
||||
public static Session getInstance(Properties props, Authenticator authenticator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new Session object.
|
||||
*
|
||||
* @param props Properties object that hold relevant properties.<br>
|
||||
* It is expected that the client supplies values for the
|
||||
* properties listed in Appendix A of the JavaMail spec
|
||||
* (particularly mail.store.protocol, mail.transport.protocol,
|
||||
* mail.host, mail.user, and mail.from) as the defaults are
|
||||
* unlikely to work in all cases.
|
||||
* @return a new Session object
|
||||
* @since JavaMail 1.2
|
||||
*/
|
||||
public static Session getInstance(Properties props) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default Session object. If a default has not yet been setup, a new
|
||||
* Session object is created and installed as the default.
|
||||
* <p>
|
||||
*
|
||||
* Since the default session is potentially available to all code executing in
|
||||
* the same Java virtual machine, and the session can contain security sensitive
|
||||
* information such as user names and passwords, access to the default session
|
||||
* is restricted. The Authenticator object, which must be created by the caller,
|
||||
* is used indirectly to check access permission. The Authenticator object
|
||||
* passed in when the session is created is compared with the Authenticator
|
||||
* object passed in to subsequent requests to get the default session. If both
|
||||
* objects are the same, or are from the same ClassLoader, the request is
|
||||
* allowed. Otherwise, it is denied.
|
||||
* <p>
|
||||
*
|
||||
* Note that if the Authenticator object used to create the session is null,
|
||||
* anyone can get the default session by passing in null.
|
||||
* <p>
|
||||
*
|
||||
* Note also that the Properties object is used only the first time this method
|
||||
* is called, when a new Session object is created. Subsequent calls return the
|
||||
* Session object that was created by the first call, and ignore the passed
|
||||
* Properties object. Use the <code>getInstance</code> method to get a new
|
||||
* Session object every time the method is called.
|
||||
* <p>
|
||||
*
|
||||
* Additional security Permission objects may be used to control access to the
|
||||
* default session.
|
||||
* <p>
|
||||
*
|
||||
* In the current implementation, if a SecurityManager is set, the caller must
|
||||
* have the <code>RuntimePermission("setFactory")</code> permission.
|
||||
*
|
||||
* @param props Properties object. Used only if a new Session object is
|
||||
* created.<br>
|
||||
* It is expected that the client supplies values for the
|
||||
* properties listed in Appendix A of the JavaMail spec
|
||||
* (particularly mail.store.protocol,
|
||||
* mail.transport.protocol, mail.host, mail.user, and
|
||||
* mail.from) as the defaults are unlikely to work in all
|
||||
* cases.
|
||||
* @param authenticator Authenticator object. Used only if a new Session object
|
||||
* is created. Otherwise, it must match the Authenticator
|
||||
* used to create the Session.
|
||||
* @return the default Session object
|
||||
*/
|
||||
public static synchronized Session getDefaultInstance(Properties props, Authenticator authenticator) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the default Session object. If a default has not yet been setup, a new
|
||||
* Session object is created and installed as the default.
|
||||
* <p>
|
||||
*
|
||||
* Note that a default session created with no Authenticator is available to all
|
||||
* code executing in the same Java virtual machine, and the session can contain
|
||||
* security sensitive information such as user names and passwords.
|
||||
*
|
||||
* @param props Properties object. Used only if a new Session object is
|
||||
* created.<br>
|
||||
* It is expected that the client supplies values for the
|
||||
* properties listed in Appendix A of the JavaMail spec
|
||||
* (particularly mail.store.protocol, mail.transport.protocol,
|
||||
* mail.host, mail.user, and mail.from) as the defaults are
|
||||
* unlikely to work in all cases.
|
||||
* @return the default Session object
|
||||
* @since JavaMail 1.2
|
||||
*/
|
||||
public static Session getDefaultInstance(Properties props) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user