Commit efa38c3d authored by Guus der Kinderen's avatar Guus der Kinderen

Merge pull request #416 from igniterealtime/refactor-connectionmanagement

Refactor connectionmanagement
parents c34759e0 e8829c01
...@@ -142,9 +142,6 @@ ...@@ -142,9 +142,6 @@
<taskdef name="propertymerge" classname="org.jugbb.ant.propertymerge.PropertyMergeTask"> <taskdef name="propertymerge" classname="org.jugbb.ant.propertymerge.PropertyMergeTask">
<classpath refid="ant.dependencies" /> <classpath refid="ant.dependencies" />
</taskdef> </taskdef>
<typedef name="srcinc" classname="com.jivesoftware.tools.selector.IncludeSourceSelector" >
<classpath refid="ant.dependencies" />
</typedef>
<!-- ======================================================================================= --> <!-- ======================================================================================= -->
<!-- PATHs / PATTERNSETs / FILTERSETs --> <!-- PATHs / PATTERNSETs / FILTERSETs -->
...@@ -914,7 +911,6 @@ ...@@ -914,7 +911,6 @@
<copy todir="${release.src.out.dir}/src"> <copy todir="${release.src.out.dir}/src">
<fileset dir="${src.dir}"> <fileset dir="${src.dir}">
<include name="**/*.java" /> <include name="**/*.java" />
<srcinc />
</fileset> </fileset>
<filterset> <filterset>
<filter token="DATE" value="${builddate}"/> <filter token="DATE" value="${builddate}"/>
...@@ -1320,11 +1316,7 @@ ...@@ -1320,11 +1316,7 @@
<!-- copy the source we want to compile --> <!-- copy the source we want to compile -->
<copy todir="@{pluginlib}/source"> <copy todir="@{pluginlib}/source">
<fileset dir="@{pluginsrc}/@{plugin}/src/java" includes="**/*.java" > <fileset dir="@{pluginsrc}/@{plugin}/src/java" includes="**/*.java" />
<not>
<srcinc />
</not>
</fileset>
<filterset> <filterset>
<filter token="DATE" value="${buildJavaDate}"/> <filter token="DATE" value="${buildJavaDate}"/>
</filterset> </filterset>
...@@ -1357,7 +1349,6 @@ ...@@ -1357,7 +1349,6 @@
</fileset> </fileset>
</jar> </jar>
<!-- Clean-up our source files for the "srcinc" files -->
<delete dir="@{pluginlib}/classes" /> <delete dir="@{pluginlib}/classes" />
<delete dir="@{pluginlib}/source" /> <delete dir="@{pluginlib}/source" />
......
...@@ -56,6 +56,15 @@ ...@@ -56,6 +56,15 @@
</filter> </filter>
</appender> </appender>
<appender name="all-out" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${openfireHome}/logs/all.log" />
<param name="MaxFileSize" value="1024KB"/>
<param name="MaxBackupIndex" value="5"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy.MM.dd HH:mm:ss} %-5p [%t]: %c - %m%n" />
</layout>
</appender>
<!-- OF-506: Jetty INFO messages are generally not useful. Ignore them by default. --> <!-- OF-506: Jetty INFO messages are generally not useful. Ignore them by default. -->
<logger name="org.eclipse.jetty"> <logger name="org.eclipse.jetty">
<level value="warn" /> <level value="warn" />
...@@ -63,6 +72,7 @@ ...@@ -63,6 +72,7 @@
<root> <root>
<level value="info" /> <level value="info" />
<appender-ref ref="all-out" />
<appender-ref ref="debug-out" /> <appender-ref ref="debug-out" />
<appender-ref ref="info-out" /> <appender-ref ref="info-out" />
<appender-ref ref="warn-out" /> <appender-ref ref="warn-out" />
......
...@@ -3,9 +3,9 @@ Name | Version ...@@ -3,9 +3,9 @@ Name | Version
ant.jar | Jetty 6.1.0 (1.6.5) | Apache 2.0 ant.jar | Jetty 6.1.0 (1.6.5) | Apache 2.0
ant-contrib.jar | 1.0b1 | Apache 2.0 ant-contrib.jar | 1.0b1 | Apache 2.0
ant-subdirtask.jar | Revision 1.4 (CVS) | ant-subdirtask.jar | Revision 1.4 (CVS) |
bcpg-jdk15on.jar | 1.51 | See http://www.bouncycastle.org/licence.html bcpg-jdk15on.jar | 1.53 | See http://www.bouncycastle.org/licence.html
bcpkix-jdk15on.jar | 1.51 | See http://www.bouncycastle.org/licence.html bcpkix-jdk15on.jar | 1.53 | See http://www.bouncycastle.org/licence.html
bcprov-jdk15on.jar | 1.51 | See http://www.bouncycastle.org/licence.html bcprov-jdk15on.jar | 1.53 | See http://www.bouncycastle.org/licence.html
cglib.jar | 2.1.3 (JMock 2.1.0) | cglib.jar | 2.1.3 (JMock 2.1.0) |
commons-lang.jar | 2.3 | Apache 2.0 commons-lang.jar | 2.3 | Apache 2.0
commons-logging.jar | Jetty 5.1.10 | Apache 2.0 commons-logging.jar | Jetty 5.1.10 | Apache 2.0
......
...@@ -114,6 +114,19 @@ if [ ! -x "$JAVACMD" ] ; then ...@@ -114,6 +114,19 @@ if [ ! -x "$JAVACMD" ] ; then
exit 1 exit 1
fi fi
for arguments in "$@"
do
case $arguments in
-debug)
JAVACMD="$JAVACMD -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
;;
*)
# unknown option
;;
esac
done
if [ -z "$LOCALCLASSPATH" ] ; then if [ -z "$LOCALCLASSPATH" ] ; then
LOCALCLASSPATH=$OPENFIRE_LIB/startup.jar LOCALCLASSPATH=$OPENFIRE_LIB/startup.jar
else else
......
...@@ -28,7 +28,8 @@ ...@@ -28,7 +28,8 @@
<module interface="org.jivesoftware.openfire.OfflineMessageStrategy" implementation="org.jivesoftware.openfire.OfflineMessageStrategy" /> <module interface="org.jivesoftware.openfire.OfflineMessageStrategy" implementation="org.jivesoftware.openfire.OfflineMessageStrategy" />
<module interface="org.jivesoftware.openfire.OfflineMessageStore" implementation="org.jivesoftware.openfire.OfflineMessageStore" /> <module interface="org.jivesoftware.openfire.OfflineMessageStore" implementation="org.jivesoftware.openfire.OfflineMessageStore" />
<module interface="org.jivesoftware.openfire.vcard.VCardManager" implementation="org.jivesoftware.openfire.vcard.VCardManager" /> <module interface="org.jivesoftware.openfire.vcard.VCardManager" implementation="org.jivesoftware.openfire.vcard.VCardManager" />
<module interface="org.jivesoftware.openfire.keystore.CertificateStoreManager" implementation="org.jivesoftware.openfire.keystore.CertificateStoreManager" />
<!-- Standard Modules --> <!-- Standard Modules -->
<module interface="org.jivesoftware.openfire.handler.IQBindHandler" implementation="org.jivesoftware.openfire.handler.IQBindHandler" /> <module interface="org.jivesoftware.openfire.handler.IQBindHandler" implementation="org.jivesoftware.openfire.handler.IQBindHandler" />
<module interface="org.jivesoftware.openfire.handler.IQSessionEstablishmentHandler" implementation="org.jivesoftware.openfire.handler.IQSessionEstablishmentHandler" /> <module interface="org.jivesoftware.openfire.handler.IQSessionEstablishmentHandler" implementation="org.jivesoftware.openfire.handler.IQSessionEstablishmentHandler" />
......
...@@ -2242,18 +2242,19 @@ ports.port=Port ...@@ -2242,18 +2242,19 @@ ports.port=Port
ports.type=Typ ports.type=Typ
ports.description=Popis ports.description=Popis
ports.all_ports=V\u0161echny adresy ports.all_ports=V\u0161echny adresy
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Klient-server ports.client_to_server=Klient-server
ports.client_to_server.desc=Standardn\u00ed port pro p\u0159ipojen\u00ed klient\u016f k serveru. Spojen\u00ed mohou, ale nemus\u00ed b\u00fdt \ ports.client_to_server.desc=Standardn\u00ed port pro p\u0159ipojen\u00ed klient\u016f k serveru.
\u0161ifrov\u00e1na. M\u016f\u017eete zm\u011bnit {0}nastaven\u00ed zabezpe\u010den\u00ed{1} pro tento port. ports.client_to_server.desc_old_ssl=Port pou\u017e\u00edvan\u00fd klienty pro p\u0159ipojen\u00ed k serveru pou\u017eit\u00edm star\u00e9ho SSL zp\u016fsobu.
ports.client_to_server.desc_old_ssl=Port pou\u017e\u00edvan\u00fd klienty pro p\u0159ipojen\u00ed k serveru pou\u017eit\u00edm star\u00e9ho SSL zp\u016fsobu. \
Star\u00fd zp\u016fsob SSL nen\u00ed standardn\u00edm XMPP zp\u016fsobem a bude v budoucnu zru\u0161en. M\u016f\u017eete zm\u011bnit \
{0}nastaven\u00ed zabezpe\u010den\u00ed{1} pro tento port.
ports.server_to_server=Server-server ports.server_to_server=Server-server
ports.server_to_server.desc=Port pou\u017e\u00edvan\u00fd {0}vzd\u00e1len\u00fdmi servery{1} pro p\u0159ipojen\u00ed k tomuto serveru. ports.server_to_server.desc=Port pou\u017e\u00edvan\u00fd vzd\u00e1len\u00fdmi servery pro p\u0159ipojen\u00ed k tomuto serveru.
ports.connection_manager=Spr\u00e1vce p\u0159ipojen\u00ed ports.connection_manager=Spr\u00e1vce p\u0159ipojen\u00ed
ports.connection_manager.desc=Port pou\u017e\u00edvan\u00fd {0}spr\u00e1vci p\u0159ipojen\u00ed{1} pro p\u0159ipojen\u00ed k serveru. ports.connection_manager.desc=Port pou\u017e\u00edvan\u00fd spr\u00e1vci p\u0159ipojen\u00ed pro p\u0159ipojen\u00ed k serveru.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=Extern\u00ed komponenty ports.external_components=Extern\u00ed komponenty
ports.external_components.desc=Port pou\u017e\u00edvan\u00fd {0}extern\u00edmi komponentami{1} pro p\u0159ipojen\u00ed k serveru. ports.external_components.desc=Port pou\u017e\u00edvan\u00fd extern\u00edmi komponentami pro p\u0159ipojen\u00ed k serveru.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Administr\u00e1torsk\u00e1 konzole ports.admin_console=Administr\u00e1torsk\u00e1 konzole
ports.admin_console.desc_unsecured=Port pou\u017e\u00edvan\u00fd pro nezabezpe\u010den\u00fd p\u0159\u00edstup k administr\u00e1torsk\u00e9 konzoli. ports.admin_console.desc_unsecured=Port pou\u017e\u00edvan\u00fd pro nezabezpe\u010den\u00fd p\u0159\u00edstup k administr\u00e1torsk\u00e9 konzoli.
ports.admin_console.desc_secured=Port pou\u017e\u00edvan\u00fd pro zabezpe\u010den\u00fd p\u0159\u00edstup k administr\u00e1torsk\u00e9 konzoli. ports.admin_console.desc_secured=Port pou\u017e\u00edvan\u00fd pro zabezpe\u010den\u00fd p\u0159\u00edstup k administr\u00e1torsk\u00e9 konzoli.
...@@ -2323,16 +2324,18 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file: ...@@ -2323,16 +2324,18 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file:
ssl.import.certificate.keystore.certificate=Content of Certificate file: ssl.import.certificate.keystore.certificate=Content of Certificate file:
ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key. ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key.
ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import. ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.keystore.error.import=There was an error one importing private key and signed certificate. ssl.import.certificate.keystore.error.import=There was an error while trying to import the private key and signed certificate.
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
...@@ -2130,18 +2130,19 @@ ports.port=Port ...@@ -2130,18 +2130,19 @@ ports.port=Port
ports.type=Type ports.type=Type
ports.description=Description ports.description=Description
ports.all_ports=All addresses ports.all_ports=All addresses
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Client to server ports.client_to_server=Client to server
ports.client_to_server.desc=The standard port for clients to connect to the server. Connections may or may not be \ ports.client_to_server.desc=The standard port for clients to connect to the server.
encrypted. You can update the {0}security settings{1} for this port. ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL/TLS method.
ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL method. \
The old SSL method is not an XMPP standard method and will be deprecated in the future. You can update the \
{0}security settings{1} for this port.
ports.server_to_server=Server to Server ports.server_to_server=Server to Server
ports.server_to_server.desc=The port used for {0}remote servers{1} to connect to this server. ports.server_to_server.desc=The port used for remote servers to connect to this server.
ports.connection_manager=Connection Manager ports.connection_manager=Connection Manager
ports.connection_manager.desc=The port used for {0}connection managers{1} to connect to the server. ports.connection_manager.desc=The port used for connection managers to connect to the server.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=External Components ports.external_components=External Components
ports.external_components.desc=The port used for {0}external components{1} to connect to the server. ports.external_components.desc=The port used for external components to connect to the server.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Admin Console ports.admin_console=Admin Console
ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access. ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access.
ports.admin_console.desc_secured=The port used for secured Admin Console access. ports.admin_console.desc_secured=The port used for secured Admin Console access.
...@@ -2287,15 +2288,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file: ...@@ -2287,15 +2288,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file:
ssl.import.certificate.keystore.certificate=Content of Certificate file: ssl.import.certificate.keystore.certificate=Content of Certificate file:
ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key. ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key.
ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import. ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.keystore.error.import=There was an error one importing private key and signed certificate. ssl.import.certificate.keystore.error.import=There was an error while trying to import the private key and signed certificate.
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
This diff is collapsed.
...@@ -2219,18 +2219,19 @@ ports.port=Puerto ...@@ -2219,18 +2219,19 @@ ports.port=Puerto
ports.type=Tipo ports.type=Tipo
ports.description=Descripci\u00f3n ports.description=Descripci\u00f3n
ports.all_ports=Todas direcciones ports.all_ports=Todas direcciones
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Cliente-Servidor ports.client_to_server=Cliente-Servidor
ports.client_to_server.desc=El puerto estandar utilizado por clientes para conectarse al servidor. Conexiones pueden \ ports.client_to_server.desc=El puerto estandar utilizado por clientes para conectarse al servidor.
o no estar encriptadas. Puede modificar la {0}configuraci\u00f3n{1} para este puerto. ports.client_to_server.desc_old_ssl=El puerto utilizado por clientes para conectarse al servidor usando el viejo m\u00e9todo de SSL.
ports.client_to_server.desc_old_ssl=El puerto utilizado por clientes para conectarse al servidor usando el viejo \
m\u00e9todo de SSL. El m\u00e9todo de SSL no es un m\u00e9todo estandar y ser\u00e1 removido en el futuro. Puede \
modificar la {0}configuraci\u00f3n{1} para este puerto
ports.server_to_server=Servidor-Servidor ports.server_to_server=Servidor-Servidor
ports.server_to_server.desc=Puerto utilizado por {0}servidores remotos{1} para conectarse al servidor. ports.server_to_server.desc=Puerto utilizado por servidores remotos para conectarse al servidor.
ports.connection_manager=Administrador de Conexiones ports.connection_manager=Administrador de Conexiones
ports.connection_manager.desc=Puerto utilizado por {0}administradores de conexiones{1} para conectarse al servidor. ports.connection_manager.desc=Puerto utilizado por administradores de conexiones para conectarse al servidor.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=Componentes externos ports.external_components=Componentes externos
ports.external_components.desc=Puerto utilizado por {0}componentes externos{1} para conectarse al servidor. ports.external_components.desc=Puerto utilizado por componentes externos para conectarse al servidor.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Consola de Administraci\u00f3n ports.admin_console=Consola de Administraci\u00f3n
ports.admin_console.desc_unsecured=Puerto utilizado para conexiones inseguras a la consola de administraci\u00f3n. ports.admin_console.desc_unsecured=Puerto utilizado para conexiones inseguras a la consola de administraci\u00f3n.
ports.admin_console.desc_secured=Puerto utilizado para conexiones seguras a la consola de administraci\u00f3n. ports.admin_console.desc_secured=Puerto utilizado para conexiones seguras a la consola de administraci\u00f3n.
...@@ -2334,14 +2335,15 @@ ssl.import.certificate.keystore.error.import=Un error ha ocurrido al intentar im ...@@ -2334,14 +2335,15 @@ ssl.import.certificate.keystore.error.import=Un error ha ocurrido al intentar im
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=El tipo no se ha especificado (o no se reconoce) ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Por favor indique un alias para este certificado. ssl.import.certificate.truststore.error.connection-type=El tipo no se ha especificado (o no se reconoce)
ssl.import.certificate.keystore.error.alias-exists=Ya existe un certificado con este alias. Por favor indique un alias \ ssl.import.certificate.truststore.error.alias-missing=Por favor indique un alias para este certificado.
ssl.import.certificate.truststore.error.alias-exists=Ya existe un certificado con este alias. Por favor indique un alias \
diferente, o elimine el certificado existente. diferente, o elimine el certificado existente.
ssl.import.certificate.keystore.c2s-intro=Use el siguiente formulario para importar un certificado de confianza para ser usado \ ssl.import.certificate.truststore.error.certificate=Especifique el contenido del certificado a importar.
al verificar certificados durante la comunicaci\u00f3n de cliente a servidor. ssl.import.certificate.truststore.error.import=Un error ha ocurrido al intentar importar un certificado firmado.
ssl.import.certificate.keystore.s2s-intro=Use el siguiente formulario para importar un certificado de confianza para ser usado \ ssl.import.certificate.keystore.intro=Use el siguiente formulario para importar un certificado de confianza para ser usado \
al verificar certificados durante la comunicaci\u00f3n de servidor a servidor. al verificar certificados durante la comunicaci\u00f3n.
sidebar.user-roster=Lista de Contactos sidebar.user-roster=Lista de Contactos
sidebar.user-roster.descr=Haga clic para ver la lista de contactos de usuarios sidebar.user-roster.descr=Haga clic para ver la lista de contactos de usuarios
......
...@@ -1797,18 +1797,19 @@ ports.port=Port ...@@ -1797,18 +1797,19 @@ ports.port=Port
ports.type=Type ports.type=Type
ports.description=Description ports.description=Description
ports.all_ports=All addresses ports.all_ports=All addresses
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Client to server ports.client_to_server=Client to server
ports.client_to_server.desc=The standard port for clients to connect to the server. Connections may or may not be \ ports.client_to_server.desc=The standard port for clients to connect to the server.
encrypted. You can update the {0}security settings{1} for this port. ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL/TLS method.
ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL method. \
The old SSL method is not an XMPP standard method and will be deprecated in the future. You can update the \
{0}security settings{1} for this port.
ports.server_to_server=Server to Server ports.server_to_server=Server to Server
ports.server_to_server.desc=The port used for {0}remote servers{1} to connect to this server. ports.server_to_server.desc=The port used for remote servers to connect to this server.
ports.connection_manager=Connection Manager ports.connection_manager=Connection Manager
ports.connection_manager.desc=The port used for {0}connection managers{1} to connect to the server. ports.connection_manager.desc=The port used for connection managers to connect to the server.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=External Components ports.external_components=External Components
ports.external_components.desc=The port used for {0}external components{1} to connect to the server. ports.external_components.desc=The port used for external components to connect to the server.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Admin Console ports.admin_console=Admin Console
ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access. ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access.
ports.admin_console.desc_secured=The port used for secured Admin Console access. ports.admin_console.desc_secured=The port used for secured Admin Console access.
...@@ -1899,15 +1900,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file: ...@@ -1899,15 +1900,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file:
ssl.import.certificate.keystore.certificate=Content of Certificate file: ssl.import.certificate.keystore.certificate=Content of Certificate file:
ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key. ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key.
ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import. ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.keystore.error.import=There was an error one importing private key and signed certificate. ssl.import.certificate.keystore.error.import=There was an error while trying to import the private key and signed certificate.
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
...@@ -2224,18 +2224,19 @@ ports.port=\u30dd\u30fc\u30c8 ...@@ -2224,18 +2224,19 @@ ports.port=\u30dd\u30fc\u30c8
ports.type=\u30bf\u30a4\u30d7 ports.type=\u30bf\u30a4\u30d7
ports.description=\u8a73\u7d30 ports.description=\u8a73\u7d30
ports.all_ports=\u5168\u90e8\u306e\u30a2\u30c9\u30ec\u30b9 ports.all_ports=\u5168\u90e8\u306e\u30a2\u30c9\u30ec\u30b9
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30b5\u30fc\u30d0\u30fc ports.client_to_server=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30b5\u30fc\u30d0\u30fc
ports.client_to_server.desc=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30b5\u30fc\u30d0\u3078\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u6a19\u6e96\u30dd\u30fc\u30c8\u3067\u3059\u3002\u63a5\u7d9a\u306f\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3057\u3001\ ports.client_to_server.desc=The standard port for clients to connect to the server.
\u3055\u308c\u3066\u3044\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u30dd\u30fc\u30c8\u306b\u5bfe\u3059\u308b{0}\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a{1}\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL/TLS method.
ports.client_to_server.desc_old_ssl=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u5bfe\u3057\u3066\u53e4\u3044SSL\u63a5\u7d9a\u65b9\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002\
\u65e7\u5f0f\u306eSSL\u63a5\u7d9a\u65b9\u6cd5\u306fXMPP\u6a19\u6e96\u306e\u65b9\u6cd5\u3067\u306f\u306a\u304f\u3001\u307e\u305f\u5c06\u6765\u7684\u306b\u306f\u4f7f\u7528\u3092\u975e\u63a8\u5968\u3055\u308c\u308b\u3067\u3057\u3087\u3046\u3002\
\u3053\u306e\u30dd\u30fc\u30c8\u306b\u5bfe\u3059\u308b{0}\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a{1}\u3092\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044\u3002
ports.server_to_server=\u30b5\u30fc\u30d0\u30fc\u9593\u63a5\u7d9a ports.server_to_server=\u30b5\u30fc\u30d0\u30fc\u9593\u63a5\u7d9a
ports.server_to_server.desc=\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b{0}\u30ea\u30e2\u30fc\u30c8\u30b5\u30fc\u30d0\u30fc{1}\u306b\u4f7f\u7528\u3055\u308c\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002 ports.server_to_server.desc=\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u30ea\u30e2\u30fc\u30c8\u30b5\u30fc\u30d0\u30fc\u306b\u4f7f\u7528\u3055\u308c\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002
ports.connection_manager=\u63a5\u7d9a\u30de\u30cd\u30fc\u30b8\u30e3 ports.connection_manager=\u63a5\u7d9a\u30de\u30cd\u30fc\u30b8\u30e3
ports.connection_manager.desc=\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e{0}\u63a5\u7d9a\u30de\u30cd\u30fc\u30b8\u30e3{1}\u304c\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002 ports.connection_manager.desc=\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u63a5\u7d9a\u30de\u30cd\u30fc\u30b8\u30e3\u304c\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=\u5916\u90e8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8 ports.external_components=\u5916\u90e8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8
ports.external_components.desc=\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b{0}\u5916\u90e8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8{1}\u304c\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002 ports.external_components.desc=\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u5916\u90e8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb ports.admin_console=\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb
ports.admin_console.desc_unsecured=\u30bb\u30ad\u30e5\u30a2\u30fc\u3067\u306a\u3044\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u30a2\u30af\u30bb\u30b9\u306e\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002 ports.admin_console.desc_unsecured=\u30bb\u30ad\u30e5\u30a2\u30fc\u3067\u306a\u3044\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u30a2\u30af\u30bb\u30b9\u306e\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002
ports.admin_console.desc_secured=\u30bb\u30ad\u30e5\u30a2\u30fc\u306a\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u30a2\u30af\u30bb\u30b9\u306e\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002 ports.admin_console.desc_secured=\u30bb\u30ad\u30e5\u30a2\u30fc\u306a\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb\u30a2\u30af\u30bb\u30b9\u306e\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u3067\u3059\u3002
...@@ -2302,11 +2303,13 @@ ssl.import.certificate.keystore.error.import=\u79d8\u5bc6\u30ad\u30fc\u3068\u7f7 ...@@ -2302,11 +2303,13 @@ ssl.import.certificate.keystore.error.import=\u79d8\u5bc6\u30ad\u30fc\u3068\u7f7
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
...@@ -2126,22 +2126,23 @@ profile-settings.ldap_mapping_info=LDAP Settings ...@@ -2126,22 +2126,23 @@ profile-settings.ldap_mapping_info=LDAP Settings
# Ports section/page # Ports section/page
ports.interface=Interface ports.interface=Interface
ports.port=Port ports.port=Poort
ports.type=Type ports.type=Type
ports.description=Description ports.description=Omschrijving
ports.all_ports=All addresses ports.all_ports=Alle addressen
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Client to server ports.client_to_server=Client to server
ports.client_to_server.desc=The standard port for clients to connect to the server. Connections may or may not be \ ports.client_to_server.desc=The standard port for clients to connect to the server.
encrypted. You can update the {0}security settings{1} for this port. ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL/TLS method.
ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL method. \
The old SSL method is not an XMPP standard method and will be deprecated in the future. You can update the \
{0}security settings{1} for this port.
ports.server_to_server=Server to Server ports.server_to_server=Server to Server
ports.server_to_server.desc=The port used for {0}remote servers{1} to connect to this server. ports.server_to_server.desc=The port used for remote servers to connect to this server.
ports.connection_manager=Connection Manager ports.connection_manager=Connection Manager
ports.connection_manager.desc=The port used for {0}connection managers{1} to connect to the server. ports.connection_manager.desc=The port used for connection managers to connect to the server.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=External Components ports.external_components=External Components
ports.external_components.desc=The port used for {0}external components{1} to connect to the server. ports.external_components.desc=The port used for external components to connect to the server.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Admin Console ports.admin_console=Admin Console
ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access. ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access.
ports.admin_console.desc_secured=The port used for secured Admin Console access. ports.admin_console.desc_secured=The port used for secured Admin Console access.
...@@ -2283,15 +2284,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file: ...@@ -2283,15 +2284,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file:
ssl.import.certificate.keystore.certificate=Content of Certificate file: ssl.import.certificate.keystore.certificate=Content of Certificate file:
ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key. ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key.
ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import. ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.keystore.error.import=There was an error one importing private key and signed certificate. ssl.import.certificate.keystore.error.import=There was an error while trying to import the private key and signed certificate.
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
...@@ -2111,18 +2111,19 @@ ports.port=Port ...@@ -2111,18 +2111,19 @@ ports.port=Port
ports.type=Type ports.type=Type
ports.description=Description ports.description=Description
ports.all_ports=All addresses ports.all_ports=All addresses
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Client to server ports.client_to_server=Client to server
ports.client_to_server.desc=The standard port for clients to connect to the server. Connections may or may not be \ ports.client_to_server.desc=The standard port for clients to connect to the server.
encrypted. You can update the {0}security settings{1} for this port. ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL/TLS method.
ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL method. \
The old SSL method is not an XMPP standard method and will be deprecated in the future. You can update the \
{0}security settings{1} for this port.
ports.server_to_server=Server to Server ports.server_to_server=Server to Server
ports.server_to_server.desc=The port used for {0}remote servers{1} to connect to this server. ports.server_to_server.desc=The port used for remote servers to connect to this server.
ports.connection_manager=Connection Manager ports.connection_manager=Connection Manager
ports.connection_manager.desc=The port used for {0}connection managers{1} to connect to the server. ports.connection_manager.desc=The port used for connection managers to connect to the server.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=External Components ports.external_components=External Components
ports.external_components.desc=The port used for {0}external components{1} to connect to the server. ports.external_components.desc=The port used for external components to connect to the server.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Admin Console ports.admin_console=Admin Console
ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access. ports.admin_console.desc_unsecured=The port used for unsecured Admin Console access.
ports.admin_console.desc_secured=The port used for secured Admin Console access. ports.admin_console.desc_secured=The port used for secured Admin Console access.
...@@ -2258,15 +2259,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file: ...@@ -2258,15 +2259,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file:
ssl.import.certificate.keystore.certificate=Content of Certificate file: ssl.import.certificate.keystore.certificate=Content of Certificate file:
ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key. ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key.
ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import. ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.keystore.error.import=There was an error one importing private key and signed certificate. ssl.import.certificate.keystore.error.import=There was an error while trying to import the private key and signed certificate.
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
...@@ -2210,18 +2210,19 @@ ports.port=Porta ...@@ -2210,18 +2210,19 @@ ports.port=Porta
ports.type=Tipo ports.type=Tipo
ports.description=Descri\u00e7\u00e3o ports.description=Descri\u00e7\u00e3o
ports.all_ports=Todos Endere\u00e7os ports.all_ports=Todos Endere\u00e7os
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Cliente-Servidor ports.client_to_server=Cliente-Servidor
ports.client_to_server.desc=Porta padr\u00e3o para conex\u00e3o ao servidor. Conex\u00f5es podem ou n\u00e3o serem encriptadas.\ ports.client_to_server.desc=Porta padr\u00e3o para conex\u00e3o ao servidor. Conex\u00f5es podem ou n\u00e3o serem encriptadas.
Voc� pode alterar as {0}configura\u00e7\u00f5es de seguran\u00e7a{1} para esta porta. ports.client_to_server.desc_old_ssl=A Porta utilizadas pelos clientes para se conectarem utilizando o antigo SSL.
ports.client_to_server.desc_old_ssl=A Porta utilizadas pelos clientes para se conectarem utilizando o antigo SSL. \
O antigo SSL n\u00e3o \u00e9 padr\u00e3o XMPP e cair\u00e1 em desuso. Voc\u00ea pode atualizar as \
{0}configura��es de seguran�a{1} para esta porta.
ports.server_to_server=Servidor-Servidor ports.server_to_server=Servidor-Servidor
ports.server_to_server.desc=A Porta utilizada por {0}servidores remotos{1} para connectarem-se a este servidor. ports.server_to_server.desc=A Porta utilizada por servidores remotos para connectarem-se a este servidor.
ports.connection_manager=Gerenciador de Conex\u00f5es ports.connection_manager=Gerenciador de Conex\u00f5es
ports.connection_manager.desc=A Porta utilizada para {0}Gerenciadores de Conex\u00e3o{1} se conectarem a este servidor. ports.connection_manager.desc=A Porta utilizada para Gerenciadores de Conex\u00e3o se conectarem a este servidor.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=Componentes Externos ports.external_components=Componentes Externos
ports.external_components.desc=A Porta utilizada para {0}componentes externos{1} para conectarem-se a este servidor. ports.external_components.desc=A Porta utilizada para componentes externos para conectarem-se a este servidor.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Console Administrativo ports.admin_console=Console Administrativo
ports.admin_console.desc_unsecured=Porta utilizada para conex\u00e3o insegura ao Console Administrativo. ports.admin_console.desc_unsecured=Porta utilizada para conex\u00e3o insegura ao Console Administrativo.
ports.admin_console.desc_secured=Porta utilizada para conex\u00e3o segura ao Console Administrativo. ports.admin_console.desc_secured=Porta utilizada para conex\u00e3o segura ao Console Administrativo.
...@@ -2290,15 +2291,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file: ...@@ -2290,15 +2291,17 @@ ssl.import.certificate.keystore.private-key=Content of Private Key file:
ssl.import.certificate.keystore.certificate=Content of Certificate file: ssl.import.certificate.keystore.certificate=Content of Certificate file:
ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key. ssl.import.certificate.keystore.error.private-key=Please specify the content of the private key.
ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import. ssl.import.certificate.keystore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.keystore.error.import=There was an error one importing private key and signed certificate. ssl.import.certificate.keystore.error.import=There was an error while trying to import the private key and signed certificate.
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
This diff is collapsed.
This diff is collapsed.
...@@ -2157,15 +2157,19 @@ ports.port=Port ...@@ -2157,15 +2157,19 @@ ports.port=Port
ports.type=Typ ports.type=Typ
ports.description=Popis ports.description=Popis
ports.all_ports=V\u0161etky adresy ports.all_ports=V\u0161etky adresy
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=Klient-server ports.client_to_server=Klient-server
ports.client_to_server.desc=\u0160tandardn\u00fd port, na ktor\u00fd sa klienti prip\u00e1jaj\u00fa k serveru. Spojenia m\u00f4\u017eu a nemusia by\u0165 \u0161ifrovan\u00e9. M\u00f4\u017eete aktualizova\u0165 {0}bezpe\u010dnostn\u00e9 nastavenia{1} tohto portu. ports.client_to_server.desc=\u0160tandardn\u00fd port, na ktor\u00fd sa klienti prip\u00e1jaj\u00fa k serveru.
ports.client_to_server.desc_old_ssl=Port, ktor\u00fd klienti pou\u017e\u00edvaj\u00fa na pripojenie k serveru pomocou SSL. Star\u00fd sp\u00f4sob pripojenia pomocou SSL nie je \u0161tandardn\u00fd pre XMPP a v bud\u00facnosti bude odstr\u00e1nen\u00fd. M\u00f4\u017eete aktualizova\u0165 {0}bezpe\u010dnostn\u00e9 nastavenia{1} pre tento port. ports.client_to_server.desc_old_ssl=Port, ktor\u00fd klienti pou\u017e\u00edvaj\u00fa na pripojenie k serveru pomocou SSL.
ports.server_to_server=Server-server ports.server_to_server=Server-server
ports.server_to_server.desc=Port, ktor\u00fd {0}Vzdialen\u00e9 servery{1} pou\u017e\u00edvaj\u00fa na pripojenie k tomuto serveru. ports.server_to_server.desc=Port, ktor\u00fd Vzdialen\u00e9 servery pou\u017e\u00edvaj\u00fa na pripojenie k tomuto serveru.
ports.connection_manager=Spr\u00e1vca spojen\u00ed ports.connection_manager=Spr\u00e1vca spojen\u00ed
ports.connection_manager.desc=Port, ktor\u00fd {0}Spr\u00e1vcovia spojenia{1} pou\u017e\u00edvaj\u00fa na pripojenie k tomuto serveru. ports.connection_manager.desc=Port, ktor\u00fd Spr\u00e1vcovia spojenia pou\u017e\u00edvaj\u00fa na pripojenie k tomuto serveru.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=Vonkaj\u0161ie komponenty ports.external_components=Vonkaj\u0161ie komponenty
ports.external_components.desc=Port, ktor\u00fd {0}Extern\u00e9 komponenty{1} pou\u017e\u00edvaj\u00fa na pripojenie k tomuto serveru. ports.external_components.desc=Port, ktor\u00fd Extern\u00e9 komponenty pou\u017e\u00edvaj\u00fa na pripojenie k tomuto serveru.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=Konzola spr\u00e1vcu ports.admin_console=Konzola spr\u00e1vcu
ports.admin_console.desc_unsecured=Tento port sa pou\u017e\u00edva na nezabezpe\u010den\u00fd pr\u00edstup ku Konzole spr\u00e1vcu. ports.admin_console.desc_unsecured=Tento port sa pou\u017e\u00edva na nezabezpe\u010den\u00fd pr\u00edstup ku Konzole spr\u00e1vcu.
ports.admin_console.desc_secured=Tento port sa pou\u017e\u00edva na zabezpe\u010den\u00fd pr\u00edstup ku Konzole spr\u00e1vcu. ports.admin_console.desc_secured=Tento port sa pou\u017e\u00edva na zabezpe\u010den\u00fd pr\u00edstup ku Konzole spr\u00e1vcu.
...@@ -2224,11 +2228,13 @@ ssl.import.certificate.keystore.error.import=Pri importovan\u00ed priv\u00e1tneh ...@@ -2224,11 +2228,13 @@ ssl.import.certificate.keystore.error.import=Pri importovan\u00ed priv\u00e1tneh
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
...@@ -2110,15 +2110,19 @@ ports.port=\u7aef\u53e3 ...@@ -2110,15 +2110,19 @@ ports.port=\u7aef\u53e3
ports.type=\u7c7b\u578b ports.type=\u7c7b\u578b
ports.description=\u63cf\u8ff0 ports.description=\u63cf\u8ff0
ports.all_ports=\u6240\u6709\u7684\u5730\u5740 ports.all_ports=\u6240\u6709\u7684\u5730\u5740
ports.plaintext.desc=On this port plain-text connections are established, which, depending on configurable {0}security settings{1}, can (or must) be upgraded to encrypted connections.
ports.legacymode.desc=Connections established on this port are established using a pre-encrypted connection. This type of connectivity is commonly referred to as the "old-style" or "legacy" method of establishing encrypted connections. Configuration details can be modified in the {0}security settings{1}.
ports.client_to_server=\u5ba2\u6237\u7aef\u5230\u670d\u52a1\u5668 ports.client_to_server=\u5ba2\u6237\u7aef\u5230\u670d\u52a1\u5668
ports.client_to_server.desc=\u5ba2\u6237\u7aef\u4f7f\u7528\u6807\u51c6\u7aef\u53e3\u8fde\u63a5\u5230\u670d\u52a1\u5668\uff0c\u8fde\u63a5\u53ef\u80fd\u6ca1\u6709\u52a0\u5bc6\uff0c\u60a8\u53ef\u4ee5\u66f4\u65b0{0}\u5b89\u5168\u8bbe\u7f6e{1} \u4e3a\u8fd9\u4e2a\u7aef\u53e3 ports.client_to_server.desc=The standard port for clients to connect to the server.
ports.client_to_server.desc_old_ssl=\u5ba2\u6237\u7aef\u4f7f\u7528\u65e7\u7684SSL\u65b9\u6cd5\u8fde\u63a5\u5230\u670d\u52a1\u5668\u7684\u7aef\u53e3\u3002\u65e7\u7684SSL\u65b9\u6cd5\u4e0d\u662f\u4e00\u4e2aXMPP\u6807\u51c6\u65b9\u6cd5\uff0c\u5728\u4e0d\u4e45\u5c06\u4e0d\u88ab\u652f\u6301\uff0c\u60a8\u53ef\u4ee5\u66f4\u65b0{0}\u5b89\u5168\u8bbe\u7f6e{1} \u4e3a\u8fd9\u4e2a\u7aef\u53e3 ports.client_to_server.desc_old_ssl=The port used for clients to connect to the server using the old SSL/TLS method.
ports.server_to_server=\u670d\u52a1\u5668\u5230\u670d\u52a1\u5668 ports.server_to_server=\u670d\u52a1\u5668\u5230\u670d\u52a1\u5668
ports.server_to_server.desc=\u7aef\u53e3\u4f7f\u7528 {0}\u8fdc\u7a0b\u670d\u52a1\u5668{1} \u8fde\u63a5\u5230\u8fd9\u53f0\u670d\u52a1\u5668. ports.server_to_server.desc=\u7aef\u53e3\u4f7f\u7528\u8fdc\u7a0b\u670d\u52a1\u5668\u8fde\u63a5\u5230\u8fd9\u53f0\u670d\u52a1\u5668.
ports.connection_manager=\u8fde\u63a5\u7ba1\u7406 ports.connection_manager=\u8fde\u63a5\u7ba1\u7406
ports.connection_manager.desc=\u7aef\u53e3\u4f7f\u7528 {0}\u8fde\u63a5\u7ba1\u7406\u5668{1} \u8fde\u63a5\u5230\u8fd9\u53f0\u670d\u52a1\u5668. ports.connection_manager.desc=\u7aef\u53e3\u4f7f\u7528\u8fde\u63a5\u7ba1\u7406\u5668\u8fde\u63a5\u5230\u8fd9\u53f0\u670d\u52a1\u5668.
ports.connection_manager.desc_old_ssl=The port used for connection managers to the server using the old SSL/TLS method.
ports.external_components=\u5916\u90e8\u7ec4\u4ef6 ports.external_components=\u5916\u90e8\u7ec4\u4ef6
ports.external_components.desc=\u7aef\u53e3\u4f7f\u7528 {0}\u5916\u90e8\u7ec4\u4ef6{1} \u8fde\u63a5\u5230\u8fd9\u53f0\u670d\u52a1\u5668. ports.external_components.desc=\u7aef\u53e3\u4f7f\u7528\u5916\u90e8\u7ec4\u4ef6\u8fde\u63a5\u5230\u8fd9\u53f0\u670d\u52a1\u5668.
ports.external_components.desc_old_ssl=The port used for external components to the server using the old SSL/TLS method.
ports.admin_console=\u7ba1\u7406\u63a7\u5236\u53f0 ports.admin_console=\u7ba1\u7406\u63a7\u5236\u53f0
ports.admin_console.desc_unsecured=\u7aef\u53e3\u4f7f\u7528\u4e0d\u5b89\u5168\u7684\u7ba1\u7406\u63a7\u5236\u53f0\u8bbf\u95ee. ports.admin_console.desc_unsecured=\u7aef\u53e3\u4f7f\u7528\u4e0d\u5b89\u5168\u7684\u7ba1\u7406\u63a7\u5236\u53f0\u8bbf\u95ee.
ports.admin_console.desc_secured=\u7aef\u53e3\u4f7f\u7528\u5b89\u5168\u7684\u7ba1\u7406\u63a7\u5236\u53f0\u8bbf\u95ee. ports.admin_console.desc_secured=\u7aef\u53e3\u4f7f\u7528\u5b89\u5168\u7684\u7ba1\u7406\u63a7\u5236\u53f0\u8bbf\u95ee.
...@@ -2186,11 +2190,13 @@ ssl.import.certificate.keystore.error.import=There was an error one importing pr ...@@ -2186,11 +2190,13 @@ ssl.import.certificate.keystore.error.import=There was an error one importing pr
# Import truststore certificate page # Import truststore certificate page
ssl.import.certificate.keystore.error.type=Type has not been specified (or is unrecognized). ssl.import.certificate.truststore.boxtitle=Import CA Certificate
ssl.import.certificate.keystore.error.alias-missing=Please provide an alias for this certificate. ssl.import.certificate.truststore.error.connection-type=Connection Type has not been specified (or is unrecognized).
ssl.import.certificate.keystore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate. ssl.import.certificate.truststore.error.alias-missing=Please provide an alias for this certificate.
ssl.import.certificate.keystore.c2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during client-to-server communication. ssl.import.certificate.truststore.error.alias-exists=A certificate is already stored using this alias. Please provide a different alias, or remove the existing certificate.
ssl.import.certificate.keystore.s2s-intro=Use the form below to import a certificate that represents a trusted party, to be used when verifying certificates during server-to-server communication. ssl.import.certificate.truststore.error.certificate=Please specify the content of the certificate to import.
ssl.import.certificate.truststore.error.import=There was an error while trying to import the certificate.
ssl.import.certificate.truststore.intro=Use the form below to import a certificate that represents a trusted party that can be used when verifying peer certificates while establishing encrypted communication.
# Room Occupants Page # Room Occupants Page
......
package org.jivesoftware.admin;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;
public class InfoboxTag extends BodyTagSupport {
private String type; // success, error, warning
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public int doEndTag() throws JspException {
String body = "<div class=\"jive-"+type+"\">\n" +
" <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n" +
" <tbody>\n" +
" <tr><td class=\"jive-icon\"><img src=\"images/"+type+"-16x16.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"\"/></td>\n" +
" <td class=\"jive-icon-label\">\n" +
bodyContent.getString() +
" </td></tr>\n" +
" </tbody>\n" +
" </table>\n" +
"</div><br>\n";
try {
pageContext.getOut().write( body );
}
catch (IOException ioe) {
throw new JspException(ioe.getMessage());
}
return super.doEndTag();
}
}
...@@ -26,6 +26,7 @@ import java.security.cert.Certificate; ...@@ -26,6 +26,7 @@ import java.security.cert.Certificate;
import org.jivesoftware.openfire.auth.UnauthorizedException; import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.session.LocalSession; import org.jivesoftware.openfire.session.LocalSession;
import org.jivesoftware.openfire.spi.ConnectionConfiguration;
import org.xmpp.packet.Packet; import org.xmpp.packet.Packet;
/** /**
...@@ -339,9 +340,26 @@ public interface Connection extends Closeable { ...@@ -339,9 +340,26 @@ public interface Connection extends Closeable {
* otherwise a {@link org.jivesoftware.openfire.net.ServerTrustManager} will be used. * otherwise a {@link org.jivesoftware.openfire.net.ServerTrustManager} will be used.
* @param authentication policy to use for authenticating the remote peer. * @param authentication policy to use for authenticating the remote peer.
* @throws Exception if an error occured while securing the connection. * @throws Exception if an error occured while securing the connection.
* @deprecated Use {@link #startTLS(boolean)} instead.
*/ */
@Deprecated
void startTLS(boolean clientMode, String remoteServer, ClientAuth authentication) throws Exception; void startTLS(boolean clientMode, String remoteServer, ClientAuth authentication) throws Exception;
/**
* Secures the plain connection by negotiating TLS with the other peer. In a server-2-server
* connection the server requesting the TLS negotiation will be the client and the other server
* will be the server during the TLS negotiation. Therefore, the server requesting the TLS
* negotiation must pass <code>true</code> in the <tt>clientMode</tt> parameter and the server
* receiving the TLS request must pass <code>false</code> in the <tt>clientMode</tt> parameter.<p>
*
* In the case of client-2-server the XMPP server must pass <code>false</code> in the
* <tt>clientMode</tt> parameter since it will behave as the server in the TLS negotiation.
*
* @param clientMode boolean indicating if this entity is a client or a server in the TLS negotiation.
* @throws Exception if an error occured while securing the connection.
*/
void startTLS(boolean clientMode) throws Exception;
/** /**
* Adds the compression filter to the connection but only filter incoming traffic. Do not filter * Adds the compression filter to the connection but only filter incoming traffic. Do not filter
* outgoing traffic since we still need to send an uncompressed stanza to the client indicating * outgoing traffic since we still need to send an uncompressed stanza to the client indicating
...@@ -357,6 +375,15 @@ public interface Connection extends Closeable { ...@@ -357,6 +375,15 @@ public interface Connection extends Closeable {
*/ */
void startCompression(); void startCompression();
/**
* Returns a representation of the desired state for this connection. Note that this is different from the current
* state of the connection. For example, TLS can be required by configuration, but while the connection has yet to
* be fully initialized, the current state might not be TLS-encrypted.
*
* @return The desired configuration for the connection (never null).
*/
ConnectionConfiguration getConfiguration();
/** /**
* Enumeration of possible compression policies required to interact with the server. * Enumeration of possible compression policies required to interact with the server.
*/ */
...@@ -395,7 +422,14 @@ public interface Connection extends Closeable { ...@@ -395,7 +422,14 @@ public interface Connection extends Closeable {
* TLS is not available. Entities that request a TLS negotiation will get a stream * TLS is not available. Entities that request a TLS negotiation will get a stream
* error and their connections will be closed. * error and their connections will be closed.
*/ */
disabled disabled,
/**
* A policy that requires connections to be encrypted immediately (as opposed to the
* 'required' policy, that allows for an initially unencrypted connection to become
* encrypted through StartTLS.
*/
legacyMode
} }
/** /**
......
...@@ -48,15 +48,27 @@ public interface ConnectionManager { ...@@ -48,15 +48,27 @@ public interface ConnectionManager {
* The default XMPP port for external components. * The default XMPP port for external components.
*/ */
final int DEFAULT_COMPONENT_PORT = 5275; final int DEFAULT_COMPONENT_PORT = 5275;
/**
* The XMPP port for external components using SSL traffic.
*/
final int DEFAULT_COMPONENT_SSL_PORT = 5276;
/** /**
* The default XMPP port for server2server communication. * The default XMPP port for server2server communication.
*/ */
final int DEFAULT_SERVER_PORT = 5269; final int DEFAULT_SERVER_PORT = 5269;
/** /**
* The default XMPP port for connection multiplex. * The default XMPP port for connection multiplex.
*/ */
final int DEFAULT_MULTIPLEX_PORT = 5262; final int DEFAULT_MULTIPLEX_PORT = 5262;
/**
* The default XMPP port for connection multiplex.
*/
final int DEFAULT_MULTIPLEX_SSL_PORT = 5263;
/** /**
* Returns an array of the ports managed by this connection manager. * Returns an array of the ports managed by this connection manager.
* *
...@@ -65,21 +77,6 @@ public interface ConnectionManager { ...@@ -65,21 +77,6 @@ public interface ConnectionManager {
*/ */
public Collection<ServerPort> getPorts(); public Collection<ServerPort> getPorts();
/**
* Creates a new socket reader for the new accepted socket to be managed
* by the connection manager.
*
* @param socket the new accepted socket by this manager.
* @param isSecure true if the connection is secure.
* @param serverPort holds information about the port on which the server is listening for
* connections.
* @param useBlockingMode true means that the server will use a thread per connection.
* @return the created socket reader.
* @throws java.io.IOException when there is an error creating the socket reader.
*/
public SocketReader createSocketReader(Socket socket, boolean isSecure, ServerPort serverPort,
boolean useBlockingMode) throws IOException;
/** /**
* Sets if the port listener for unsecured clients will be available or not. When disabled * Sets if the port listener for unsecured clients will be available or not. When disabled
* there won't be a port listener active. Therefore, new clients won't be able to connect to * there won't be a port listener active. Therefore, new clients won't be able to connect to
......
...@@ -30,7 +30,9 @@ import java.util.List; ...@@ -30,7 +30,9 @@ import java.util.List;
* regarding the port while hiding implementation details. * regarding the port while hiding implementation details.
* *
* @author Iain Shigeoka * @author Iain Shigeoka
* @Deprecated
*/ */
@Deprecated
public class ServerPort { public class ServerPort {
private int port; private int port;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -69,6 +69,7 @@ import org.dom4j.DocumentHelper; ...@@ -69,6 +69,7 @@ import org.dom4j.DocumentHelper;
import org.dom4j.Element; import org.dom4j.Element;
import org.dom4j.Node; import org.dom4j.Node;
import org.dom4j.io.XMPPPacketReader; import org.dom4j.io.XMPPPacketReader;
import org.jivesoftware.openfire.ConnectionManager;
import org.jivesoftware.openfire.IQRouter; import org.jivesoftware.openfire.IQRouter;
import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.XMPPServerInfo; import org.jivesoftware.openfire.XMPPServerInfo;
...@@ -86,6 +87,9 @@ import org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl; ...@@ -86,6 +87,9 @@ import org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl;
import org.jivesoftware.openfire.net.MXParser; import org.jivesoftware.openfire.net.MXParser;
import org.jivesoftware.openfire.session.ComponentSession; import org.jivesoftware.openfire.session.ComponentSession;
import org.jivesoftware.openfire.session.LocalClientSession; import org.jivesoftware.openfire.session.LocalClientSession;
import org.jivesoftware.openfire.spi.ConnectionConfiguration;
import org.jivesoftware.openfire.spi.ConnectionManagerImpl;
import org.jivesoftware.openfire.spi.ConnectionType;
import org.jivesoftware.openfire.user.UserNotFoundException; import org.jivesoftware.openfire.user.UserNotFoundException;
import org.jivesoftware.util.AlreadyExistsException; import org.jivesoftware.util.AlreadyExistsException;
import org.jivesoftware.util.CertificateEventListener; import org.jivesoftware.util.CertificateEventListener;
...@@ -778,12 +782,14 @@ public class ClearspaceManager extends BasicModule implements ExternalComponentM ...@@ -778,12 +782,14 @@ public class ClearspaceManager extends BasicModule implements ExternalComponentM
private void updateClearspaceClientSettings() { private void updateClearspaceClientSettings() {
String xmppBoshSslPort = "0"; String xmppBoshSslPort = "0";
String xmppBoshPort = "0"; String xmppBoshPort = "0";
String xmppPort = String.valueOf(XMPPServer.getInstance().getConnectionManager().getClientListenerPort()); final ConnectionManagerImpl connectionManager = ( (ConnectionManagerImpl) XMPPServer.getInstance().getConnectionManager() );
final ConnectionConfiguration configuration = connectionManager.getListener( ConnectionType.SOCKET_C2S, false ).generateConnectionConfiguration();
String xmppPort = String.valueOf( configuration.getPort() );
if (JiveGlobals.getBooleanProperty(HttpBindManager.HTTP_BIND_ENABLED, HttpBindManager.HTTP_BIND_ENABLED_DEFAULT)) { if (JiveGlobals.getBooleanProperty(HttpBindManager.HTTP_BIND_ENABLED, HttpBindManager.HTTP_BIND_ENABLED_DEFAULT)) {
int boshSslPort = HttpBindManager.getInstance().getHttpBindSecurePort(); int boshSslPort = HttpBindManager.getInstance().getHttpBindSecurePort();
int boshPort = HttpBindManager.getInstance().getHttpBindUnsecurePort(); int boshPort = HttpBindManager.getInstance().getHttpBindUnsecurePort();
try { try {
if (HttpBindManager.getInstance().isHttpsBindActive() && LocalClientSession.getTLSPolicy() != org.jivesoftware.openfire.Connection.TLSPolicy.disabled) { if (HttpBindManager.getInstance().isHttpsBindActive() && configuration.getTlsPolicy() != org.jivesoftware.openfire.Connection.TLSPolicy.disabled) {
xmppBoshSslPort = String.valueOf(boshSslPort); xmppBoshSslPort = String.valueOf(boshSslPort);
} }
} }
......
...@@ -35,8 +35,9 @@ import org.apache.commons.httpclient.ConnectTimeoutException; ...@@ -35,8 +35,9 @@ import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.HttpClientError; import org.apache.commons.httpclient.HttpClientError;
import org.apache.commons.httpclient.params.HttpConnectionParams; import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
import org.jivesoftware.openfire.keystore.Purpose; import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.net.SSLConfig; import org.jivesoftware.openfire.keystore.CertificateStoreManager;
import org.jivesoftware.openfire.spi.ConnectionType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -63,19 +64,19 @@ public class SSLProtocolSocketFactory implements SecureProtocolSocketFactory { ...@@ -63,19 +64,19 @@ public class SSLProtocolSocketFactory implements SecureProtocolSocketFactory {
private SSLContext createSSLContext(String host) { private SSLContext createSSLContext(String host) {
try { try {
SSLContext context = SSLContext.getInstance("SSL"); final SSLContext context = SSLContext.getInstance( "TLSv1" );
context.init( context.init(
null, null,
new TrustManager[] { new TrustManager[] {
new ClearspaceX509TrustManager( new ClearspaceX509TrustManager(
host, host,
manager.getProperties(), manager.getProperties(),
SSLConfig.getStore( Purpose.ADMINISTRATIVE_TRUSTSTORE ) ) XMPPServer.getInstance().getCertificateStoreManager().getTrustStore( ConnectionType.SOCKET_S2S ).getStore() )
}, },
null); null);
return context; return context;
} catch (Exception e) { } catch (Exception e) {
Log.error(e.getMessage(), e); Log.error("An exception occurred while trying to create an SSL Context for host: '"+host+"'", e);
throw new HttpClientError(e.toString()); throw new HttpClientError(e.toString());
} }
} }
......
...@@ -46,6 +46,7 @@ import org.jivesoftware.openfire.net.MXParser; ...@@ -46,6 +46,7 @@ import org.jivesoftware.openfire.net.MXParser;
import org.jivesoftware.openfire.net.SASLAuthentication; import org.jivesoftware.openfire.net.SASLAuthentication;
import org.jivesoftware.openfire.net.VirtualConnection; import org.jivesoftware.openfire.net.VirtualConnection;
import org.jivesoftware.openfire.session.LocalClientSession; import org.jivesoftware.openfire.session.LocalClientSession;
import org.jivesoftware.openfire.spi.ConnectionConfiguration;
import org.jivesoftware.util.JiveConstants; import org.jivesoftware.util.JiveConstants;
import org.jivesoftware.util.JiveGlobals; import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.TaskEngine; import org.jivesoftware.util.TaskEngine;
...@@ -1101,6 +1102,7 @@ public class HttpSession extends LocalClientSession { ...@@ -1101,6 +1102,7 @@ public class HttpSession extends LocalClientSession {
public static class HttpVirtualConnection extends VirtualConnection { public static class HttpVirtualConnection extends VirtualConnection {
private InetAddress address; private InetAddress address;
private ConnectionConfiguration configuration;
public HttpVirtualConnection(InetAddress address) { public HttpVirtualConnection(InetAddress address) {
this.address = address; this.address = address;
...@@ -1141,6 +1143,11 @@ public class HttpSession extends LocalClientSession { ...@@ -1141,6 +1143,11 @@ public class HttpSession extends LocalClientSession {
((HttpSession) session).deliver(text); ((HttpSession) session).deliver(text);
} }
@Override
public ConnectionConfiguration getConfiguration() {
return session.getConnection().getConfiguration();
}
@Override @Override
public Certificate[] getPeerCertificates() { public Certificate[] getPeerCertificates() {
return ((HttpSession) session).getPeerCertificates(); return ((HttpSession) session).getPeerCertificates();
......
package org.jivesoftware.openfire.keystore; package org.jivesoftware.openfire.keystore;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.jivesoftware.openfire.net.SSLConfig; import org.jivesoftware.openfire.spi.ConnectionType;
import org.jivesoftware.util.CertificateEventListener;
import org.jivesoftware.util.JiveGlobals; import org.jivesoftware.util.JiveGlobals;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -24,8 +23,8 @@ import java.util.*; ...@@ -24,8 +23,8 @@ import java.util.*;
* *
* A subclass of this class exists for each of the two distinct types of key store. * A subclass of this class exists for each of the two distinct types of key store.
* <ul> * <ul>
* <li>one that is used to provide credentials, an <em>identity store</em>, in {@link IdentityStoreConfig}</li> * <li>one that is used to provide credentials, an <em>identity store</em>, in {@link IdentityStore}</li>
* <li>one that is used to verify credentials, a <em>trust store</em>, in {@link TrustStoreConfig}</li> * <li>one that is used to verify credentials, a <em>trust store</em>, in {@link TrustStore}</li>
* </ul> * </ul>
* *
* Note that in Java terminology, an identity store is commonly referred to as a 'key store', while the same name is * Note that in Java terminology, an identity store is commonly referred to as a 'key store', while the same name is
...@@ -34,9 +33,9 @@ import java.util.*; ...@@ -34,9 +33,9 @@ import java.util.*;
* *
* @author Guus der Kinderen, guus.der.kinderen@gmail.com * @author Guus der Kinderen, guus.der.kinderen@gmail.com
*/ */
public abstract class CertificateStoreConfig public abstract class CertificateStore
{ {
private static final Logger Log = LoggerFactory.getLogger( CertificateStoreConfig.class ); private static final Logger Log = LoggerFactory.getLogger( CertificateStore.class );
protected static final Provider PROVIDER = new BouncyCastleProvider(); protected static final Provider PROVIDER = new BouncyCastleProvider();
...@@ -47,39 +46,41 @@ public abstract class CertificateStoreConfig ...@@ -47,39 +46,41 @@ public abstract class CertificateStoreConfig
} }
protected final KeyStore store; protected final KeyStore store;
protected final char[] password; protected final CertificateStoreConfiguration configuration;
protected final String canonicalPath;
public CertificateStoreConfig( String path, String password, String type, boolean createIfAbsent ) throws CertificateStoreConfigException public CertificateStore( CertificateStoreConfiguration configuration, boolean createIfAbsent ) throws CertificateStoreConfigException
{ {
if (configuration == null)
{
throw new IllegalArgumentException( "Argument 'configuration' cannot be null." );
}
this.configuration = configuration;
try try
{ {
this.canonicalPath = SSLConfig.canonicalize( path ); final File file = configuration.getFile();
final File file = new File( canonicalPath );
if ( createIfAbsent && !file.exists() ) if ( createIfAbsent && !file.exists() )
{ {
try ( final FileOutputStream os = new FileOutputStream( canonicalPath ) ) try ( final FileOutputStream os = new FileOutputStream( file.getPath() ) )
{ {
store = KeyStore.getInstance( type ); store = KeyStore.getInstance( configuration.getType() );
store.load( null, password.toCharArray() ); store.load( null, configuration.getPassword() );
store.store( os, password.toCharArray() ); store.store( os, configuration.getPassword() );
this.password = password.toCharArray();
} }
} }
else else
{ {
try ( final FileInputStream is = new FileInputStream( canonicalPath ) ) try ( final FileInputStream is = new FileInputStream( file ) )
{ {
store = KeyStore.getInstance( type ); store = KeyStore.getInstance( configuration.getType() );
store.load( is, password.toCharArray() ); store.load( is, configuration.getPassword() );
this.password = password.toCharArray();
} }
} }
} }
catch ( IOException | KeyStoreException | NoSuchAlgorithmException | CertificateException ex ) catch ( IOException | KeyStoreException | NoSuchAlgorithmException | CertificateException ex )
{ {
throw new CertificateStoreConfigException( "Unable to load store of type '" + type + "' from location '" + path + "'", ex ); throw new CertificateStoreConfigException( "Unable to load store of type '" + configuration.getType() + "' from file '" + configuration.getFile() + "'", ex );
} }
} }
...@@ -89,13 +90,13 @@ public abstract class CertificateStoreConfig ...@@ -89,13 +90,13 @@ public abstract class CertificateStoreConfig
*/ */
public void reload() throws CertificateStoreConfigException public void reload() throws CertificateStoreConfigException
{ {
try ( final FileInputStream is = new FileInputStream( canonicalPath ) ) try ( final FileInputStream is = new FileInputStream( configuration.getFile() ) )
{ {
store.load( is, password ); store.load( is, configuration.getPassword() );
} }
catch ( IOException | NoSuchAlgorithmException | CertificateException ex ) catch ( IOException | NoSuchAlgorithmException | CertificateException ex )
{ {
throw new CertificateStoreConfigException( "Unable to reload store in location '" + canonicalPath + "'", ex ); throw new CertificateStoreConfigException( "Unable to reload store in '" + configuration.getFile() + "'", ex );
} }
} }
...@@ -105,13 +106,13 @@ public abstract class CertificateStoreConfig ...@@ -105,13 +106,13 @@ public abstract class CertificateStoreConfig
*/ */
public void persist() throws CertificateStoreConfigException public void persist() throws CertificateStoreConfigException
{ {
try ( final FileOutputStream os = new FileOutputStream( canonicalPath ) ) try ( final FileOutputStream os = new FileOutputStream( configuration.getFile() ) )
{ {
store.store( os, password ); store.store( os, configuration.getPassword() );
} }
catch ( NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException ex ) catch ( NoSuchAlgorithmException | KeyStoreException | CertificateException | IOException ex )
{ {
throw new CertificateStoreConfigException( "Unable to save changes to store in location '" + canonicalPath + "'", ex ); throw new CertificateStoreConfigException( "Unable to save changes to store in '" + configuration.getFile() + "'", ex );
} }
} }
...@@ -177,31 +178,13 @@ public abstract class CertificateStoreConfig ...@@ -177,31 +178,13 @@ public abstract class CertificateStoreConfig
// TODO: Notify listeners that a new certificate has been removed. // TODO: Notify listeners that a new certificate has been removed.
} }
public String getType()
{
return store.getType();
}
public KeyStore getStore() public KeyStore getStore()
{ {
return store; return store;
} }
public String getPassword() public CertificateStoreConfiguration getConfiguration()
{
return String.valueOf( password );
}
public String getCanonicalPath()
{
return canonicalPath;
}
public String getPath()
{ {
final Path path = Paths.get( canonicalPath ); return configuration;
final Path home = Paths.get( JiveGlobals.getHomeDirectory() );
final Path corrected = path.startsWith( home ) ? home.relativize( path ) : path;
return corrected.toString();
} }
} }
package org.jivesoftware.openfire.keystore;
import java.io.File;
import java.nio.file.Path;
import java.util.Arrays;
/**
* Certificate stores are configured using a defined set of properties. This is a wrapper class for all of them.
*
* Instances of this class are immutable and safe for use by multiple concurrent threads.
*
* @author Guus der Kinderen, guus.der.kinderen@gmail.com
*/
public class CertificateStoreConfiguration
{
protected final String type;
protected final File file;
protected final char[] password;
/**
* Creates a new instance.
*
* @param type The store type (jks, jceks, pkcs12, etc). Cannot be null or an empty string.
* @param file The file-system based representation of the store (cannot be null).
* @param password the password used to check the integrity of the store, the password used to unlock the store, or null.
*/
public CertificateStoreConfiguration( String type, File file, char[] password )
{
if ( type == null || type.isEmpty() )
{
throw new IllegalArgumentException( "Argument 'type' cannot be null or an empty string." );
}
if ( file == null )
{
throw new IllegalArgumentException( "Argument 'file' cannot be null." );
}
this.type = type;
this.file = file;
this.password = password;
}
public String getType()
{
return type;
}
public File getFile()
{
return file;
}
public char[] getPassword()
{
return password;
}
@Override
public boolean equals( Object o )
{
if ( this == o )
{
return true;
}
if ( !( o instanceof CertificateStoreConfiguration ) )
{
return false;
}
CertificateStoreConfiguration that = (CertificateStoreConfiguration) o;
if ( !type.equals( that.type ) )
{
return false;
}
if ( !file.equals( that.file ) )
{
return false;
}
return Arrays.equals( password, that.password );
}
@Override
public int hashCode()
{
int result = type.hashCode();
result = 31 * result + file.hashCode();
result = 31 * result + ( password != null ? Arrays.hashCode( password ) : 0 );
return result;
}
@Override
public String toString()
{
return "CertificateStoreConfiguration{" +
"type='" + type + '\'' +
", file=" + file +
", password hashcode=" + password.hashCode() + // java.lang.Array.hashCode inherits from Object. As it is a reference, it should be safe to log and useful enough to compare against other passwords.
'}';
}
}
package org.jivesoftware.openfire.keystore;
/**
* Potential intended usages for keystores
*
* @author Guus der Kinderen, guus.der.kinderen@gmail.com
*/
public enum Purpose
{
/**
* Identification of this Openfire instance used by regular socket-based connections.
*/
SOCKETBASED_IDENTITYSTORE( false ),
/**
* Identification of remote servers that you choose to trust, applies to server-to-server federation via regular socket-based connections.
*/
SOCKETBASED_S2S_TRUSTSTORE( true ),
/**
* Identification of clients that you choose to trust, applies to mutual authentication via regular socket-based connections.
*/
SOCKETBASED_C2S_TRUSTSTORE( true ),
/**
* Identification of this Openfire instance used by regular BOSH (HTTP-bind) connections.
*/
BOSHBASED_IDENTITYSTORE( false ),
/**
* Identification of clients that you choose to trust, applies to mutual authentication via BOSH (HTTP-bind) connections.
*/
BOSHBASED_C2S_TRUSTSTORE( true ),
/**
* Identification of this Openfire instance used by connections to administrative services (eg: user providers).
*/
ADMINISTRATIVE_IDENTITYSTORE( false ),
/**
* Identification of remote applications/servers that provide administrative functionality (eg: user providers).
*/
ADMINISTRATIVE_TRUSTSTORE( true ),
/**
* Openfire web-admin console.
*/
WEBADMIN_IDENTITYSTORE( false ),
/**
* Openfire web-admin console.
*/
WEBADMIN_TRUSTSTORE( true );
private final boolean isTrustStore;
Purpose( boolean isTrustStore )
{
this.isTrustStore = isTrustStore;
}
public boolean isIdentityStore()
{
return !isTrustStore;
}
public boolean isTrustStore()
{
return isTrustStore;
}
}
package org.jivesoftware.openfire.keystore; package org.jivesoftware.openfire.keystore;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.jivesoftware.util.CertificateManager; import org.jivesoftware.util.CertificateManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import java.io.IOException; import java.io.IOException;
import java.security.KeyStoreException; import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security;
import java.security.cert.*; import java.security.cert.*;
import java.util.*; import java.util.*;
...@@ -24,146 +20,19 @@ import java.util.*; ...@@ -24,146 +20,19 @@ import java.util.*;
* *
* @author Guus der Kinderen, guus.der.kinderen@gmail.com * @author Guus der Kinderen, guus.der.kinderen@gmail.com
*/ */
public class TrustStoreConfig extends CertificateStoreConfig public class TrustStore extends CertificateStore
{ {
private static final Logger Log = LoggerFactory.getLogger( TrustStoreConfig.class ); private static final Logger Log = LoggerFactory.getLogger( TrustStore.class );
private final TrustManagerFactory trustFactory; public TrustStore( CertificateStoreConfiguration configuration, boolean createIfAbsent ) throws CertificateStoreConfigException
private final CertPathValidator certPathValidator; // not thread safe
private final CertificateFactory certificateFactory; // not thread safe.
public TrustStoreConfig( String path, String password, String type, boolean createIfAbsent ) throws CertificateStoreConfigException
{
super( path, password, type, createIfAbsent );
try
{
certPathValidator = CertPathValidator.getInstance( "PKIX" );
certificateFactory = CertificateFactory.getInstance( "X.509" );
trustFactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() );
trustFactory.init( store );
}
catch ( CertificateException | NoSuchAlgorithmException | KeyStoreException ex )
{
throw new CertificateStoreConfigException( "Unable to load store of type '" + type + "' from location '" + path + "'", ex );
}
}
public TrustManager[] getTrustManagers()
{
return trustFactory.getTrustManagers();
}
/**
* Returns all valid certificates from the store.
*
* @return A collection of certificates (possibly empty, but never null).
*/
protected Set<TrustAnchor> getAllValidTrustAnchors() throws KeyStoreException
{ {
final Set<TrustAnchor> results = new HashSet<>(); super( configuration, createIfAbsent );
for ( X509Certificate certificate : getAllCertificates().values() )
{
try
{
certificate.checkValidity();
}
catch ( CertificateExpiredException | CertificateNotYetValidException e )
{
// Not yet or no longer valid. Don't include in result.
continue;
}
final TrustAnchor trustAnchor = new TrustAnchor( certificate, null );
results.add( trustAnchor );
}
return results;
}
/**
* Validates the provided certificate chain, by verifying (among others):
* <ul>
* <li>The validity of each certificate in the chain</li>
* <li>chain integrity (matching issuer/subject)</li>
* <li>the root of the chain is validated by a trust anchor that is in this store.</li>
* </ul>
*
* @param chain A chain of certificates (cannot be null)
* @return true when the validity of the chain could be verified, otherwise false.
*/
public synchronized boolean canTrust( Collection<X509Certificate> chain )
{
// Input validation
if ( chain == null )
{
throw new IllegalArgumentException( "Argument 'chain' cannot be null." );
}
if (chain.isEmpty() )
{
return false;
}
// For some reason, the default validation fails to iterate over all providers and will fail if the default
// provider does not support the algorithm of the chain. To work around this issue, this code iterates over
// each provider explicitly, returning success when at least one provider validates the chain successfully.
Log.debug( "Iterating over all available security providers in order to validate a certificate chain." );
for (Provider p : Security.getProviders())
{
try
{
final Set<TrustAnchor> trustAnchors = getAllValidTrustAnchors();
final CertPath certPath = getCertPath( chain );
final PKIXParameters parameters = new PKIXParameters( trustAnchors );
parameters.setRevocationEnabled( false ); // TODO: enable revocation list validation.
parameters.setSigProvider( p.getName() ); // Explicitly iterate over each signature provider. See comment above.
certPathValidator.validate( certPath, parameters );
Log.debug( "Provider "+p.getName()+": Able to validate certificate chain." );
return true;
}
catch ( Exception ex )
{
Log.debug( "Provider "+p.getName()+": Unable to validate certificate chain.", ex );
}
}
return false;
}
/**
* Creates a CertPath instance from the provided certificate chain.
*
* This implementation can process unordered input (ordering will by applied).
*
* @param chain A certificate chain (cannot be null or an empty collection).
* @return A CertPath instance (never null).
* @throws CertificateException When no CertPath instance could be created.
*/
protected synchronized CertPath getCertPath( Collection<X509Certificate> chain ) throws CertificateException
{
// Input validation
if ( chain == null || chain.isEmpty() )
{
throw new IllegalArgumentException( "Argument 'chain' cannot be null or empty." );
}
// Note that PKCS#7 does not require a specific order for the certificates in the file - ordering is needed.
final List<X509Certificate> ordered = CertificateManager.order( chain );
return certificateFactory.generateCertPath( ordered );
} }
/** /**
* Imports one certificate as a trust anchor into this store. * Imports one certificate as a trust anchor into this store.
* *
* Note that this method explicitly allows one to add invalid certificates. Other methods in this class might ignore * Note that this method explicitly allows one to add invalid certificates.
* such a certificate ({@link #canTrust(Collection)} being a prime example).
* *
* As this store is intended to contain certificates for "most-trusted" / root Certificate Authorities, this method * As this store is intended to contain certificates for "most-trusted" / root Certificate Authorities, this method
* will fail when the PEM representation contains more than one certificate. * will fail when the PEM representation contains more than one certificate.
...@@ -209,9 +78,12 @@ public class TrustStoreConfig extends CertificateStoreConfig ...@@ -209,9 +78,12 @@ public class TrustStoreConfig extends CertificateStoreConfig
} }
catch ( CertificateException | KeyStoreException | IOException e ) catch ( CertificateException | KeyStoreException | IOException e )
{ {
reload(); // reset state of the store.
throw new CertificateStoreConfigException( "Unable to install a certificate into a trust store.", e ); throw new CertificateStoreConfigException( "Unable to install a certificate into a trust store.", e );
} }
finally
{
reload(); // re-initialize store.
}
// TODO Notify listeners that a new certificate has been added. // TODO Notify listeners that a new certificate has been added.
} }
......
...@@ -24,6 +24,9 @@ import org.dom4j.Element; ...@@ -24,6 +24,9 @@ import org.dom4j.Element;
import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.net.VirtualConnection; import org.jivesoftware.openfire.net.VirtualConnection;
import org.jivesoftware.openfire.session.ConnectionMultiplexerSession; import org.jivesoftware.openfire.session.ConnectionMultiplexerSession;
import org.jivesoftware.openfire.spi.ConnectionConfiguration;
import org.jivesoftware.openfire.spi.ConnectionManagerImpl;
import org.jivesoftware.openfire.spi.ConnectionType;
import org.xmpp.packet.IQ; import org.xmpp.packet.IQ;
import org.xmpp.packet.Packet; import org.xmpp.packet.Packet;
...@@ -114,6 +117,14 @@ public class ClientSessionConnection extends VirtualConnection { ...@@ -114,6 +117,14 @@ public class ClientSessionConnection extends VirtualConnection {
} }
@Override @Override
public ConnectionConfiguration getConfiguration()
{
// Here, a client-to-server configuration is mocked. It is likely not used, as actual connection handling takes
// place at the connection manager.
final ConnectionManagerImpl connectionManager = ((ConnectionManagerImpl) XMPPServer.getInstance().getConnectionManager());
return connectionManager.getListener( ConnectionType.SOCKET_C2S, true ).generateConnectionConfiguration();
}
public byte[] getAddress() throws UnknownHostException { public byte[] getAddress() throws UnknownHostException {
if (hostAddress != null) { if (hostAddress != null) {
return InetAddress.getByName(hostAddress).getAddress(); return InetAddress.getByName(hostAddress).getAddress();
......
...@@ -97,7 +97,7 @@ public class MultiplexerPacketHandler { ...@@ -97,7 +97,7 @@ public class MultiplexerPacketHandler {
sendResultPacket(iq); sendResultPacket(iq);
} }
else { else {
// Send error to CM. The CM should close the new-borned connection // Send error to CM. The CM should close the new-born connection
sendErrorPacket(iq, PacketError.Condition.not_allowed, null); sendErrorPacket(iq, PacketError.Condition.not_allowed, null);
} }
} }
......
...@@ -35,15 +35,16 @@ import org.slf4j.LoggerFactory; ...@@ -35,15 +35,16 @@ import org.slf4j.LoggerFactory;
* Accepts new socket connections and uses a thread for each new connection. * Accepts new socket connections and uses a thread for each new connection.
* *
* @author Gaston Dombiak * @author Gaston Dombiak
* @deprecated Old, pre NIO / MINA code. Should not be used as NIO offers better performance
*/ */
@Deprecated
class BlockingAcceptingMode extends SocketAcceptingMode { class BlockingAcceptingMode extends SocketAcceptingMode {
private static final Logger Log = LoggerFactory.getLogger(BlockingAcceptingMode.class); private static final Logger Log = LoggerFactory.getLogger(BlockingAcceptingMode.class);
protected BlockingAcceptingMode(ConnectionManager connManager, ServerPort serverPort, protected BlockingAcceptingMode(int tcpPort, InetAddress bindInterface) throws IOException {
InetAddress bindInterface) throws IOException { super();
super(connManager, serverPort); serverSocket = new ServerSocket(tcpPort, -1, bindInterface);
serverSocket = new ServerSocket(serverPort.getPort(), -1, bindInterface);
} }
/** /**
...@@ -57,8 +58,8 @@ class BlockingAcceptingMode extends SocketAcceptingMode { ...@@ -57,8 +58,8 @@ class BlockingAcceptingMode extends SocketAcceptingMode {
Socket sock = serverSocket.accept(); Socket sock = serverSocket.accept();
if (sock != null) { if (sock != null) {
Log.debug("Connect " + sock.toString()); Log.debug("Connect " + sock.toString());
SocketReader reader =
connManager.createSocketReader(sock, false, serverPort, true); SocketReader reader = createServerSocketReader( sock, false, true );
Thread thread = new Thread(reader, reader.getName()); Thread thread = new Thread(reader, reader.getName());
thread.setDaemon(true); thread.setDaemon(true);
thread.setPriority(Thread.NORM_PRIORITY); thread.setPriority(Thread.NORM_PRIORITY);
......
...@@ -45,8 +45,13 @@ import org.xmpp.packet.Presence; ...@@ -45,8 +45,13 @@ import org.xmpp.packet.Presence;
*/ */
public class ClientStanzaHandler extends StanzaHandler { public class ClientStanzaHandler extends StanzaHandler {
public ClientStanzaHandler(PacketRouter router, Connection connection) {
super(router, connection);
}
@Deprecated
public ClientStanzaHandler(PacketRouter router, String serverName, Connection connection) { public ClientStanzaHandler(PacketRouter router, String serverName, Connection connection) {
super(router, serverName, connection); super(router, connection);
} }
/** /**
...@@ -110,12 +115,6 @@ public class ClientStanzaHandler extends StanzaHandler { ...@@ -110,12 +115,6 @@ public class ClientStanzaHandler extends StanzaHandler {
@Override @Override
void startTLS() throws Exception { void startTLS() throws Exception {
Connection.ClientAuth policy; connection.startTLS(false);
try {
policy = Connection.ClientAuth.valueOf(JiveGlobals.getProperty(ConnectionSettings.Client.AUTH_PER_CLIENTCERT_POLICY, "disabled"));
} catch (IllegalArgumentException e) {
policy = Connection.ClientAuth.disabled;
}
connection.startTLS(false, null, policy);
} }
} }
...@@ -75,10 +75,6 @@ public class ClientTrustManager implements X509TrustManager { ...@@ -75,10 +75,6 @@ public class ClientTrustManager implements X509TrustManager {
* KeyStore that holds the trusted CA * KeyStore that holds the trusted CA
*/ */
private KeyStore trustStore; private KeyStore trustStore;
/**
* Holds the domain of the remote server we are trying to connect
*/
private String server;
/** /**
* Holds the CRL's to validate certs * Holds the CRL's to validate certs
......
...@@ -46,6 +46,11 @@ public class MultiplexerStanzaHandler extends StanzaHandler { ...@@ -46,6 +46,11 @@ public class MultiplexerStanzaHandler extends StanzaHandler {
*/ */
private MultiplexerPacketHandler packetHandler; private MultiplexerPacketHandler packetHandler;
public MultiplexerStanzaHandler(PacketRouter router, Connection connection) {
super(router, connection);
}
@Deprecated
public MultiplexerStanzaHandler(PacketRouter router, String serverName, Connection connection) { public MultiplexerStanzaHandler(PacketRouter router, String serverName, Connection connection) {
super(router, serverName, connection); super(router, serverName, connection);
} }
...@@ -151,7 +156,6 @@ public class MultiplexerStanzaHandler extends StanzaHandler { ...@@ -151,7 +156,6 @@ public class MultiplexerStanzaHandler extends StanzaHandler {
@Override @Override
void startTLS() throws Exception { void startTLS() throws Exception {
// TODO Finish implementation. We need to get the name of the CM if we want to validate certificates of the CM that requested TLS connection.startTLS(false);
connection.startTLS(false, "IMPLEMENT_ME", Connection.ClientAuth.disabled);
} }
} }
This diff is collapsed.
...@@ -50,6 +50,7 @@ import org.xmpp.packet.StreamError; ...@@ -50,6 +50,7 @@ import org.xmpp.packet.StreamError;
* *
* @author Gaston Dombiak * @author Gaston Dombiak
*/ */
// TODO implement TLS and observe org.jivesoftware.openfire.session.ConnectionSettings.Component.TLS_POLICY
public class LocalComponentSession extends LocalSession implements ComponentSession { public class LocalComponentSession extends LocalSession implements ComponentSession {
private static final Logger Log = LoggerFactory.getLogger(LocalComponentSession.class); private static final Logger Log = LoggerFactory.getLogger(LocalComponentSession.class);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment