Package tigase.vhosts

Class VHostItemImpl

All Implemented Interfaces:
Comparable<VHostItem>, RepositoryItem, VHostItem

public class VHostItemImpl extends RepositoryItemAbstract implements VHostItem
Objects of this class represent virtual host with all hosts configuration settings. In most cases simple domain name string is not enough to deal with the virtual host. VHost can be enabled/disabled. Can be available to selected server components only and so on. Therefore every time there is a detailed information needed for a vhost this classed must be used.
This class has it's own XML representation which can be used for creating an instance of the class or can be exported to the XML form for permanent storage:
<vhost hostname="vhost.something.com" enabled="true" anon="true" register="true" max-users="99999999999L"> <comps/> <other/>
From the init.property file it is also possible to set additional parameters for the vhost. By default everything is enabled and max accounts set to unlimited. In the example below we configure 2 domains: devel.tigase.org and test.tigase.org. For the first domain there are no additional settings, hence the domain has everything on by default, whereas the second has everything switched off and max user accounts set to 100.
 --virt-hosts = devel.tigase.org,test.tigase.org:-anon:-register:max-users=100
 

It also possible to set forwarding for the domain:
 --virt-hosts = test.tigase.org:pres-forw=lpart@domain/res:mess-forw=lpart@domain/res
 

Please note, forwarding address set this way cannot contain any of characters: [,:=] The order features are set for domain is unimportant.
Created: 22 Nov 2008
Author:
Artur Hefczyc
  • Field Details

  • Constructor Details

    • VHostItemImpl

      public VHostItemImpl()
    • VHostItemImpl

      public VHostItemImpl(Element elem)
      The constructor creates the VHostItem instance from a given XML element. Please refer to the class documentation for more details of the XML element.
      Parameters:
      elem - is an Element object with virtual domain settings.
    • VHostItemImpl

      public VHostItemImpl(JID vhost)
      The constructor creates the VHostItem instance for a given domain name with default values for all other parameters. By the default all domain parameters are set to true.
      Parameters:
      vhost - is a String value with a domain name.
    • VHostItemImpl

      public VHostItemImpl(String vhost) throws TigaseStringprepException
      The constructor creates the VHostItem instance for a given domain name with default values for all other parameters. By the default all domain parameters are set to true.
      Parameters:
      vhost - is a String value with a domain name.
      Throws:
      TigaseStringprepException - if the provided string causes stringprep processing errors.
  • Method Details

    • registerData

      @Deprecated public static void registerData(List<VHostItemImpl.DataType> types)
      Deprecated.
    • isDefault

      protected boolean isDefault()
    • setExtensionManager

      protected void setExtensionManager(VHostItemExtensionManager extensionManager)
    • addCommandFields

      public void addCommandFields(Packet packet)
      Description copied from interface: RepositoryItem
      The method is used for handling ad-hoc commands. The 'empty' ad-hoc command packet is provided and the Item should fill it with fields for the user.
      Specified by:
      addCommandFields in interface RepositoryItem
      Overrides:
      addCommandFields in class RepositoryItemAbstract
      Parameters:
      packet - with empty ad-hoc command to fill with fields
    • equals

      public boolean equals(Object v)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • initFromCommand

      public void initFromCommand(Packet packet)
      Description copied from interface: RepositoryItem
      The method used for handling ad-hoc commands. After a user fills all given field the ad-hoc command packet is passed back to the item to initialize it with data. Similar method to initFromElement(), but the data source is different.
      Specified by:
      initFromCommand in interface RepositoryItem
      Overrides:
      initFromCommand in class RepositoryItemAbstract
      Parameters:
      packet - with ad-hoc command filled by the user.
    • initFromElement

      public void initFromElement(Element elem)
      Description copied from interface: RepositoryItem
      The item can be also initialized from a more complex repositories: XML repository or SQL database. In such a case more complex representation is prefered, possibly carrying more information about the item. The method is called to initialize the item with a data parsed from an XML representation of the repository.
      Specified by:
      initFromElement in interface RepositoryItem
      Overrides:
      initFromElement in class RepositoryItemAbstract
      Parameters:
      elem - XML Element with all the item initialization data.
    • initExtension

      protected VHostItemExtension initExtension(VHostItemExtension extension)
    • setKey

      public void setKey(String key)
      Specified by:
      setKey in interface VHostItem
      Specified by:
      setKey in class RepositoryItemAbstract
    • initFromPropertyString

      public void initFromPropertyString(String propString)
      Description copied from interface: RepositoryItem
      The item can be initialized based on the data loaded from a configuration file. In such a case the item representation is usually very simplified as a list of parameters separated by a marker. Please note, usually each item is separated from another with a comma, therefore do not use a comma in the item property string. Double collon is commonly used alternative.
      Specified by:
      initFromPropertyString in interface RepositoryItem
      Parameters:
      propString - is a property string to initialize the RepositoryItem.
    • toElement

      public Element toElement()
      Description copied from interface: RepositoryItem
      Item data can be stored in a more complex form than a simple property string. The XML Element can contain much more detailed information about the element than the simplified form and is used to store the repository item in more advanced repositories then just property file. XML repository or SQL database can keep many records for repository item with as much detailed information as needed.
      Specified by:
      toElement in interface RepositoryItem
      Overrides:
      toElement in class RepositoryItemAbstract
      Returns:
      an XML Element with all the item initialization data.
    • toPropertyString

      public String toPropertyString()
      Description copied from interface: RepositoryItem
      The item can be initialized based on the data loaded from a configuration file. In such a case the item representation is usually very simplified as a list of parameters separated by a marker. Please note, usually each item is separated from another with a comma, therefore do not use a comma in the item property string. Double collon is commonly used alternative.
      Specified by:
      toPropertyString in interface RepositoryItem
      Returns:
      a property string representing the repository item in a simplified form.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      protected static StringBuilder toString(VHostItem item)
    • getComps

      public String[] getComps()
      Returns an array with the server components names which should process packets sent to this domain or null (default) if there is no specific component assigned to this domain.
      Specified by:
      getComps in interface VHostItem
      Returns:
      a String[] object with server component names.
    • setComps

      public void setComps(String[] comps)
      Sets an array with the server component names by which packets to this domain can be processed. Every local domain will be handled by VHostListener which returns true for handlesLocalDomains() method call and by all components set via this method.
      Parameters:
      comps - is an String[] array with server component names.
    • getC2SPortsAllowed

      public int[] getC2SPortsAllowed()
      Returns an array with ports on which C2S connections for this VHosts are allowed.
      Specified by:
      getC2SPortsAllowed in interface VHostItem
      Returns:
      a int[] object with allowed C2S ports.
    • setC2SPortsAllowed

      public void setC2SPortsAllowed(int[] ports)
    • getData

      @Deprecated public <T> T getData(String key)
      Deprecated.
      Specified by:
      getData in interface VHostItem
    • getDomainFilter

      public DomainFilterPolicy getDomainFilter()
      Specified by:
      getDomainFilter in interface VHostItem
    • setDomainFilter

      public void setDomainFilter(DomainFilterPolicy domainFilter)
      This method allow configure DomainFilterPolicy to be applied during packet filtering.
      Parameters:
      domainFilter - name of the DomainFilterPolicy to be applied
    • getDomainFilterDomains

      public String[] getDomainFilterDomains()
      Specified by:
      getDomainFilterDomains in interface VHostItem
    • setDomainFilterDomains

      public void setDomainFilterDomains(String[] domainFilterDomains)
      This method allow specify list of domains that will be used for packet filtering when DomainFilteringPolicy is set to either LIST or BLACKLIST.
      Parameters:
      domainFilterDomains - array of domains to be applied during filtering
    • getElemName

      public String getElemName()
      Specified by:
      getElemName in class RepositoryItemAbstract
    • getExtension

      public <T extends VHostItemExtension> T getExtension(Class<T> clazz)
      Specified by:
      getExtension in interface VHostItem
    • getExtensions

      public <T extends VHostItemExtension> Set<T> getExtensions()
      Specified by:
      getExtensions in interface VHostItem
    • getExtensionClasses

      public Set<Class<? extends VHostItemExtension>> getExtensionClasses()
      Specified by:
      getExtensionClasses in interface VHostItem
    • getKey

      public String getKey()
      Description copied from interface: RepositoryItem
      Returns a unique key for the item in the repository. All items are stored in a memory cache which is a Map. And the key returned by this method is the item identifier in the Map.
      Specified by:
      getKey in interface RepositoryItem
      Returns:
      an Item key.
    • getMaxUsersNumber

      public Long getMaxUsersNumber()
      Specified by:
      getMaxUsersNumber in interface VHostItem
    • setMaxUsersNumber

      public void setMaxUsersNumber(long maxUsersNumber)
    • getMessageForward

      public JID getMessageForward()
      Specified by:
      getMessageForward in interface VHostItem
    • setMessageForward

      public void setMessageForward(JID messageForward)
    • getMessageForwardAddress

      public JID getMessageForwardAddress()
      Specified by:
      getMessageForwardAddress in interface VHostItem
    • getOtherDomainParams

      public String getOtherDomainParams()
      This method allows to access the virtual domain other configuration parameters. This is future feature API and it is not used right now. It allows to access configuration parameters which are not specified at the time of API definition.
      Specified by:
      getOtherDomainParams in interface VHostItem
      Returns:
      a String value with domain extra parameters.
    • setOtherDomainParams

      public void setOtherDomainParams(String otherParams)
      This method allows to set extra configuration parameters for the virtual domain. This is future feature API and it is not used right now. It allows to access configuration parameters which are not specified at the time of API definition.
      Parameters:
      otherParams - is a String value with domain extra parameters.
    • getPresenceForward

      public JID getPresenceForward()
      Specified by:
      getPresenceForward in interface VHostItem
    • setPresenceForward

      public void setPresenceForward(JID presenceForward)
    • getPresenceForwardAddress

      public JID getPresenceForwardAddress()
      Specified by:
      getPresenceForwardAddress in interface VHostItem
    • getS2sSecret

      public String getS2sSecret()
      Specified by:
      getS2sSecret in interface VHostItem
    • setS2sSecret

      public void setS2sSecret(String s2sSecret)
    • getTrustedJIDs

      public Set<String> getTrustedJIDs()
      Specified by:
      getTrustedJIDs in interface VHostItem
    • getVhost

      public JID getVhost()
      Specified by:
      getVhost in interface VHostItem
    • isAnonymousEnabled

      public boolean isAnonymousEnabled()
      Specified by:
      isAnonymousEnabled in interface VHostItem
    • setAnonymousEnabled

      public void setAnonymousEnabled(boolean value)
    • isData

      @Deprecated public boolean isData(String key)
      Deprecated.
      Specified by:
      isData in interface VHostItem
    • isEnabled

      public boolean isEnabled()
      Specified by:
      isEnabled in interface VHostItem
    • setEnabled

      public void setEnabled(boolean value)
    • isRegisterEnabled

      public boolean isRegisterEnabled()
      Specified by:
      isRegisterEnabled in interface VHostItem
    • setRegisterEnabled

      public void setRegisterEnabled(boolean value)
    • isTlsRequired

      public boolean isTlsRequired()
      Specified by:
      isTlsRequired in interface VHostItem
    • setTlsRequired

      public void setTlsRequired(boolean value)
    • setData

      public void setData(String key, Object value)
    • parseDataValue

      public void parseDataValue(String key, String valueStr)
    • setVHost

      public void setVHost(String vhost) throws TigaseStringprepException
      Throws:
      TigaseStringprepException
    • setVHost

      public void setVHost(JID vhost)
    • getSaslAllowedMechanisms

      public String[] getSaslAllowedMechanisms()
      Specified by:
      getSaslAllowedMechanisms in interface VHostItem
    • setSaslAllowedMechanisms

      public void setSaslAllowedMechanisms(String[] saslAllowedMechanisms)
    • initializeFromDefaults

      protected void initializeFromDefaults(VHostItemDefaults vhostDefaults)