Package tigase.vhosts
Class VHostManager
- java.lang.Object
-
- tigase.server.BasicComponent
-
- tigase.server.AbstractComponentRegistrator<VHostListener>
-
- tigase.vhosts.VHostManager
-
- All Implemented Interfaces:
ClusteredComponentIfc
,Configurable
,XMPPService
,ConfigurationChangedAware
,Initializable
,RegistrarBean
,ComponentRegistrator
,ServerComponent
,StatisticsContainer
,StatisticsContainerIfc
,VHostListener
,VHostManagerIfc
@Bean(name="vhost-man", parent=Kernel.class, active=true, exportable=true) @ConfigType({DefaultMode,SessionManagerMode,ConnectionManagersMode,ComponentMode}) public class VHostManager extends AbstractComponentRegistrator<VHostListener> implements VHostManagerIfc, StatisticsContainer, RegistrarBean
Describe class VHostManager here.
Created: Fri Nov 21 14:28:20 2008- Author:
- Artur Hefczyc
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
VHostManager.DefVHostRepositoryBean
-
Nested classes/interfaces inherited from class tigase.server.BasicComponent
BasicComponent.ServerInfoVHostItemExtension
-
-
Field Summary
Fields Modifier and Type Field Description protected VHostComponentRepository
repo
-
Fields inherited from class tigase.server.AbstractComponentRegistrator
components
-
Fields inherited from class tigase.server.BasicComponent
admins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManager
-
Fields inherited from interface tigase.conf.Configurable
ADMINS_PROP_KEY, AMP_CLASS_NAME, AMP_CLUST_CLASS_NAME, AUTH_DOMAIN_POOL_CLASS, AUTH_REPO_DOMAINS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_POOL_CLASS, AUTH_REPO_URL_PROP_KEY, BOSH_CLUST_COMP_CLASS_NAME, BOSH_COMP_CLASS_NAME, C2S_CLUST_COMP_CLASS_NAME, C2S_COMP_CLASS_NAME, CL_COMP_CLASS_NAME, CLUSTER_CONECT, CLUSTER_CONTR_CLASS_NAME, CLUSTER_LISTEN, CLUSTER_MODE, CLUSTER_NODES, CLUSTER_NODES_PROP_KEY, COMP_PROT_CLASS_NAME, COMPONENT_ID_PROP_KEY, DEF_AMP_NAME, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_COMP_PROT_NAME, DEF_EVENTBUS_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DEF_WS2S_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_URL_PROP_VAL, DRUPALWP_REPO_CLASS_PROP_VAL, DUMMY_REPO_CLASS_PROP_VAL, EVENTBUS_CLASS_NAME, EXT_COMP_CLASS_NAME, GEN_ADMINS, GEN_AUTH_DB, GEN_AUTH_DB_URI, GEN_COMP_CLASS, GEN_COMP_NAME, GEN_CONF, GEN_CONFIG, GEN_CONFIG_ALL, GEN_CONFIG_COMP, GEN_CONFIG_CS, GEN_CONFIG_DEF, GEN_CONFIG_SM, GEN_DEBUG, GEN_DEBUG_PACKAGES, GEN_EXT_COMP, GEN_MAX_QUEUE_SIZE, GEN_SCRIPT_DIR, GEN_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_USER_DB_URI_PROP_KEY, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITOR_CLASS_NAME, MONITOR_CLUST_CLASS_NAME, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, PGSQL_REPO_CLASS_PROP_VAL, PGSQL_REPO_URL_PROP_VAL, ROUTER_COMP_CLASS_NAME, S2S_CLUST_COMP_CLASS_NAME, S2S_COMP_CLASS_NAME, SHARED_AUTH_REPO_PARAMS_PROP_KEY, SHARED_AUTH_REPO_PROP_KEY, SHARED_USER_REPO_PARAMS_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUST_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, STANZA_WHITE_CHAR_ACK, STANZA_XMPP_ACK, STATS_CLASS_NAME, STRINGPREP_PROCESSOR, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_DOMAIN_POOL_CLASS, USER_REPO_DOMAINS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_CLASS, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, VHOST_MAN_CLUST_CLASS_NAME, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACK
-
Fields inherited from interface tigase.disco.XMPPService
CMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS
-
-
Constructor Summary
Constructors Constructor Description VHostManager()
Creates a newVHostManager
instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addComponentDomain(java.lang.String domain)
Adds a component domain to the collection of local component domains.void
componentAdded(VHostListener component)
Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internalcomponents
collection.void
componentRemoved(VHostListener component)
Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internalcomponents
collection.java.lang.String
generateSecret()
java.util.List<JID>
getAllVHosts()
Method returns a list of all hosted VHosts.ComponentRepository<VHostItem>
getComponentRepository()
ServerComponent[]
getComponentsForLocalDomain(java.lang.String domain)
The method returns an array with server components which can process packets for a given local domain.ServerComponent[]
getComponentsForNonLocalDomain(java.lang.String domain)
The method returns an array of server components which can process packets sent to non-local domain.BareJID
getDefVHostItem()
MethodgetDefVHostItem
returns a default VHost for the installation.java.lang.String
getDiscoCategoryType()
Method returns component category type used for service discovery responses.java.lang.String
getDiscoDescription()
Method returns description used for service discovery responses.void
getStatistics(StatisticsList list)
VHostItem
getVHostItem(java.lang.String domain)
Returns an object with all domain properties for given domain.VHostItem
getVHostItemDomainOrComponent(java.lang.String domain)
Returns an object with all domain properties for a given domain or base domain if passed domain is name of subdomain used by component.void
initBindings(javax.script.Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts loaded by the servervoid
initializeRepository()
boolean
isAnonymousEnabled(java.lang.String domain)
This method checks whether anonymous login is enabled for a given domain.boolean
isCorrectType(ServerComponent component)
Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class.boolean
isLocalDomain(java.lang.String domain)
This method checks whether given domain is server by this server instance.boolean
isLocalDomainOrComponent(java.lang.String domain)
Method check if domains is locally hosted as a vhost or a component of a vhost.void
register(Kernel kernel)
Method called when bean is being registered allowing developer to programatically register other beans.void
removeComponentDomain(java.lang.String domain)
Removes a domain previously registered by a component.void
setName(java.lang.String name)
Method used to assign component name (localpart of the component)void
unregister(Kernel kernel)
Method called while bean is being unregistered.-
Methods inherited from class tigase.server.AbstractComponentRegistrator
addComponent, deleteComponent, getComponent, newPacketId, release
-
Methods inherited from class tigase.server.BasicComponent
beanConfigurationChanged, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, everyHour, everyMinute, everySecond, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getServiceEntityCaps, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, initialize, isAdmin, isInitializationComplete, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processPacket, processScriptCommand, reloadScripts, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setCompId, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntity
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface tigase.server.ServerComponent
getComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release
-
Methods inherited from interface tigase.stats.StatisticsContainerIfc
getName
-
-
-
-
Field Detail
-
repo
@Inject protected VHostComponentRepository repo
-
-
Method Detail
-
addComponentDomain
public void addComponentDomain(java.lang.String domain)
Description copied from interface:VHostManagerIfc
Adds a component domain to the collection of local component domains. This is mainly needed/used by an external components connecting to the server and binding hostnames. Normally the s2s component have no way of knowing about this new and temporary domains handled by the server and would refuse all connections for these domains. Adding them to a collection of component domains allows the s2s to detect them and accept connection for them.- Specified by:
addComponentDomain
in interfaceVHostManagerIfc
- Overrides:
addComponentDomain
in classBasicComponent
- Parameters:
domain
- is a component domain name added to the collection.
-
componentAdded
public void componentAdded(VHostListener component)
Description copied from class:AbstractComponentRegistrator
Method provides a callback mechanism signaling that a new component implementing special interface has been added to the internalcomponents
collection.- Specified by:
componentAdded
in classAbstractComponentRegistrator<VHostListener>
- Parameters:
component
- is a reference to the component just added to the collection.
-
componentRemoved
public void componentRemoved(VHostListener component)
Description copied from class:AbstractComponentRegistrator
Method provides a callback mechanism signaling that a component implementing special interface has been removed from the internalcomponents
collection.- Specified by:
componentRemoved
in classAbstractComponentRegistrator<VHostListener>
- Parameters:
component
- is a reference to the component removed from the collection.
-
initBindings
public void initBindings(javax.script.Bindings binds)
Description copied from class:BasicComponent
Initialize a mapping of key/value pairs which can be used in scripts loaded by the server- Overrides:
initBindings
in classBasicComponent
- Parameters:
binds
- A mapping of key/value pairs, all of whose keys are Strings.
-
removeComponentDomain
public void removeComponentDomain(java.lang.String domain)
Description copied from interface:VHostManagerIfc
Removes a domain previously registered by a component. It should not be normally used.- Specified by:
removeComponentDomain
in interfaceVHostManagerIfc
- Overrides:
removeComponentDomain
in classBasicComponent
- Parameters:
domain
- is a component domain name being removed from the collection.
-
register
public void register(Kernel kernel)
Description copied from interface:RegistrarBean
Method called when bean is being registered allowing developer to programatically register other beans.- Specified by:
register
in interfaceRegistrarBean
- Parameters:
kernel
- - instance from local scope
-
unregister
public void unregister(Kernel kernel)
Description copied from interface:RegistrarBean
Method called while bean is being unregistered.- Specified by:
unregister
in interfaceRegistrarBean
- Parameters:
kernel
- - instance from local scope
-
getAllVHosts
public java.util.List<JID> getAllVHosts()
Description copied from interface:VHostManagerIfc
Method returns a list of all hosted VHosts.- Specified by:
getAllVHosts
in interfaceVHostManagerIfc
-
getComponentsForLocalDomain
public ServerComponent[] getComponentsForLocalDomain(java.lang.String domain)
Description copied from interface:VHostManagerIfc
The method returns an array with server components which can process packets for a given local domain. If the domain is not localnull
is returned. The given domain may also consist of: component nameServerComponent.getName()
plus any local domain but only if the component returnstrue
from method call:VHostListener.handlesNameSubdomains()
- Specified by:
getComponentsForLocalDomain
in interfaceVHostManagerIfc
- Parameters:
domain
- is aString
with a domain name to check. It may by just a local domain or string created with component name and localdomain.- Returns:
- an array with ServerComponents which can handle packets for a given domain or
null
if no component found for a given domain.
-
getComponentsForNonLocalDomain
public ServerComponent[] getComponentsForNonLocalDomain(java.lang.String domain)
Description copied from interface:VHostManagerIfc
The method returns an array of server components which can process packets sent to non-local domain. Most commonly there is only one such component: server-2-server connections manager. It is possible however there might be more such components. All of them will get the packet for processing.- Specified by:
getComponentsForNonLocalDomain
in interfaceVHostManagerIfc
- Parameters:
domain
- is aString
with a domain to check. At the moment this parameter is ignored. In the future it will be possible to assign a specific component for any non-local domain.- Returns:
- an array with ServerComponents which can handle packets to non-local domains.
-
getDefVHostItem
public BareJID getDefVHostItem()
Description copied from interface:VHostManagerIfc
MethodgetDefVHostItem
returns a default VHost for the installation. In most cases this is the first VHost defined in the server configuration.- Specified by:
getDefVHostItem
in interfaceVHostManagerIfc
- Overrides:
getDefVHostItem
in classBasicComponent
- Returns:
- a
BareJID
value of the default VHost for the installation.
-
getDiscoCategoryType
public java.lang.String getDiscoCategoryType()
Description copied from class:BasicComponent
Method returns component category type used for service discovery responses.- Overrides:
getDiscoCategoryType
in classBasicComponent
- Returns:
- category type of a component
-
getDiscoDescription
public java.lang.String getDiscoDescription()
Description copied from class:BasicComponent
Method returns description used for service discovery responses.- Overrides:
getDiscoDescription
in classBasicComponent
- Returns:
- description of a component
-
getStatistics
public void getStatistics(StatisticsList list)
- Specified by:
getStatistics
in interfaceStatisticsContainerIfc
- Overrides:
getStatistics
in classBasicComponent
-
getVHostItem
public VHostItem getVHostItem(java.lang.String domain)
Description copied from interface:VHostManagerIfc
Returns an object with all domain properties for given domain.- Specified by:
getVHostItem
in interfaceVHostManagerIfc
- Overrides:
getVHostItem
in classBasicComponent
- Parameters:
domain
- is a domain name- Returns:
- a VHostItem object with all domain properties.
-
getVHostItemDomainOrComponent
public VHostItem getVHostItemDomainOrComponent(java.lang.String domain)
Description copied from interface:VHostManagerIfc
Returns an object with all domain properties for a given domain or base domain if passed domain is name of subdomain used by component.- Specified by:
getVHostItemDomainOrComponent
in interfaceVHostManagerIfc
- Parameters:
domain
- is a domain name- Returns:
- a VHostItem object with all domain properties.
-
isAnonymousEnabled
public boolean isAnonymousEnabled(java.lang.String domain)
Description copied from interface:VHostManagerIfc
This method checks whether anonymous login is enabled for a given domain. That is it checks whether this domains is local and anonymousEnabled parameter for this domain is set to true.- Specified by:
isAnonymousEnabled
in interfaceVHostManagerIfc
- Parameters:
domain
- is a String with domain name to check.- Returns:
- a boolean value indicating whether given domain is enabled for anonymous logins or not.
-
isCorrectType
public boolean isCorrectType(ServerComponent component)
Description copied from class:AbstractComponentRegistrator
Method checks whether the component provides as method parameter is correct type that is implements special interface or extends special class. Result of the method determines whether the component can be added to the internalcomponents
collection.- Specified by:
isCorrectType
in classAbstractComponentRegistrator<VHostListener>
- Parameters:
component
- is a reference to the component being checked.- Returns:
- a
boolean
value oftrue
if the component is of a correct type andfalse
otherwise.
-
isLocalDomain
public boolean isLocalDomain(java.lang.String domain)
Description copied from interface:VHostManagerIfc
This method checks whether given domain is server by this server instance. That is if this domain is local to this server installation. It doesn't check however whether the domain is disabled or enabled. It only checks if tthe list of local domains contains this virtual host.- Specified by:
isLocalDomain
in interfaceVHostManagerIfc
- Overrides:
isLocalDomain
in classBasicComponent
- Parameters:
domain
- is a String with domain name to check.- Returns:
- a boolean value indicating whether given domain is local or not.
-
isLocalDomainOrComponent
public boolean isLocalDomainOrComponent(java.lang.String domain)
Description copied from interface:VHostManagerIfc
Method check if domains is locally hosted as a vhost or a component of a vhost.- Specified by:
isLocalDomainOrComponent
in interfaceVHostManagerIfc
- Overrides:
isLocalDomainOrComponent
in classBasicComponent
- Returns:
- true - if domain is locally hosted as a vhost of a component of a vhost.
-
setName
public void setName(java.lang.String name)
Description copied from interface:ServerComponent
Method used to assign component name (localpart of the component)- Specified by:
setName
in interfaceServerComponent
- Overrides:
setName
in classBasicComponent
- Parameters:
name
- to be assigned
-
initializeRepository
public void initializeRepository() throws TigaseDBException
- Throws:
TigaseDBException
-
generateSecret
public java.lang.String generateSecret()
-
getComponentRepository
public ComponentRepository<VHostItem> getComponentRepository()
-
-