Tigase HTTP API官方文档--7.1.2
8.2。Tigase HTTP API
欢迎使用Tigase HTTP API用户指南。HTTP API允许您直接从浏览器使用简单易用的界面来管理,配置,聊天和向Tigase服务器发送命令!我们将指导您完成设置,运行以及HTTP API的某些功能。
8.2.1。要求
HTTP API需要Tigase版本v5.0.3,但我们建议使用最新版本的Tigase,它将为您提供最简单的设置和功能。当前版本的Tigase包含运行API所需的大多数必需文件,但是您将需要再添加一个库:servlet-api-3.1.jar,可在此处获得。将该文件放在/ jars目录中,即可完成所有设置。
请注意,早期版本的Tigase安装程序可能未包含另一个必需文件:javax.servlet-api.jar
该文件包含在归档分发中,并且可以从那里解压缩到/ jars目录。
有关API的较旧版本,请参见Tigase HTTP API Wiki。
8.2.2。设置与配置
满足所有要求后,您需要做的就是将以下行添加到Tigase的init.properties文件中:
--comp-name-3=http --comp-class-3=tigase.http.HttpMessageReceiver
请注意,只要没有其他相同编号的类和名称,编号就不重要。
使用此默认配置,Tigase将尝试在端口8080上启动http服务器并运行默认模块(如RestModule),这将在/ rest路径中为REST API添加上下文。RestModule还将加载位于scripts / rest / xxx目录中的所有常规脚本,并将其绑定到针对/ rest / xxx /路径的适当操作。可以使用多个目录,将xxx视为通配符。
进阶设定
HTTP组件具有多种配置选项,请在此处详细查看
组件属性
请注意,对于提及{compname}的设置,请使用与--comp-name完全相同的文本替换它们,这些文本可以是http,rest或您在init.properties中设置了自定义的内容。
{compname} / http / ports [i] = 8088,8096
设置逗号分隔的端口列表,HTTP服务器在这些端口上侦听连接。默认设置为8080。
{compname} / 2222 / socket = ssl
将您希望HTTP服务器侦听HTTPS连接的端口设置为2222
{compname} /4096/domain=example.com
将4096设置为要侦听HTTPS连接的端口号,并设置要使用的Tigase XMPP服务器证书存储中SSL证书的域名。
{compname} / server-class =
设置用于管理HTTP服务器的类的名称。可以使用以下名称
tigase.http.jetty.JettyStandaloneHttpServer-启动独立的Jetty HTTP Server实例(需要Tigase HTTP API-Jetty HTTP Server)
tigase.http.jetty.JettyOSGiHttpServer-使用可用作OSGi服务的Jetty HTTP Server实例(只能在OSGi环境中使用)(需要Tigase HTTP API-Jetty HTTP Server)
tigase.http.java.JavaStandaloneHttpServer-使用Java JDK提供的HttpServer启动独立的HTTP服务器(可能不适用于每个JDK提供程序的JDK)
{compname} / http / port
/ ports [i]设置的较旧版本仍受支持,但有望逐步淘汰。
{compname} / setup / admin-credentials
设置可以访问Web安装程序设置页面的用户和密码组合。默认情况下,--admins属性中列出的管理员JID被授予访问权限,但是,除了这些JID之外,您还可以指定特定的用户和密码来授予访问权限。
格式为[username:password]因此,例如,http / setup / admin-credentials = admin:password
注意,此信息以纯文本格式存储在init.properties文件中,并且这是一个可选设置。
模组
Tigase HTTP API组件提供了作为模块的功能,可以分别启用或禁用它们以及对其进行配置。可以在组件属性中以以下格式传递的模块通用设置:component_name / module_id / module_setting:
active [B] =值为true / false启用或禁用模块
context-path = HTTP上下文的路径,在该上下文下模块应该可用
vhosts [s] =逗号分隔的虚拟主机列表,应在其下使用该模块。如果未设置此设置,则HTTP模块可用于所有虚拟主机。
考虑到这些想法,让我们看一下HTTP API的可用模块。
休息模块
该模块提供对REST API的支持。通过在init.properties文件中使用以下行来启用它:
http / RestModule / active [B] = true
假设该类的comp-name是http
rest-scripts-dir =
包含处理REST请求的脚本的目录的路径。默认情况下,此目录为scripts / rest
api-keys [s] =
逗号分隔的字符串列表,可以用作键来传递api-key参数以请求执行授权。如果未传递任何内容,则不允许任何请求。要允许任何请求,需要将此属性设置为open_access。
DNS Web服务模块
dns-webservice模块支持使用HTTP协议解析DNS名称。这对于需要将DNS地址解析为特定IP的Web应用程序可能很有用。例如,发现用于连接到XMPP服务器的WebSocket服务的IP和端口。
要激活该模块,请使用以下行;
http/dns-webservice/active[B]=true
假设该类的comp-name是http
8.2.3。HTTP API的使用
要开始使用HTTP API,请将浏览器指向以下URL http://your.server.domain:8080 / ui /,将显示以下图像进行登录。
使用您的管理员级XMPP ID和密码登录。请使用裸露的JID进行登录。
注意:普通用户也可以在此处登录以使用聊天和基本功能,但是他们没有管理员权限,如本指南中所示
8.2.4。浏览器界面演练
聊天室
聊天是您登录后会看到的第一个窗口。由于没有人在谈论名单,因此这里几乎没有显示。如果您有名册,则会显示用户。让我们添加一个用户。单击用户添加图标,然后填写下面的字段。
一旦两个用户都添加并授权了彼此的花名册列表,则用户和组将显示在左侧,而右侧则用于聊天功能。
发现
“发现”选项卡封装了XMPP服务器的服务发现功能,并将提供可用服务的列表。单击该服务将为您提供执行命令,检查设置,MUC房间等的选项。
管理
“管理”选项卡是XMPP服务器的管理和设置工具。您可以在此处更改设置,添加和删除用户,发送服务器范围的通知,编写和执行脚本,甚至一目了然地获取服务器统计信息。
注意:某些设置更改可能是即时的,而其他更改则需要重新启动服务器
统计
“统计信息”选项卡列出了服务器中所有正在运行的组件。
8.2.5。HTTP API脚本
HTTP API组件中的脚本用于处理所有请求。
要向HTTP API组件添加新操作,您需要在Groovy中创建一个脚本,该脚本中具有扩展tigase.http.rest.Handler类的类的实现。脚本的URI将根据脚本在脚本文件夹中的位置创建。例如,如果将带有正则表达式的TestHandler脚本设置为/ test并将其放置在scripts / rest / test中,则将为以下URI / rest / tested / test调用该处理程序。
物产
如果要扩展类,则需要设置以下属性:
正则表达式
正则表达式,用于匹配请求URI和解析URI中嵌入的参数,例如:
/ \ /([[^ @ \ /] +)@([^ @ \ /] +)/
requiredRole
需要具有用户角色才能访问此URI。可用值:null,“用户”,“管理员”。如果requiredRole不为null,则需要身份验证。
isAsync
如果设置为true,则可以等待结果,也许等待IQ节发送结果。
包含闭包的属性
扩展类还应为以下一个或多个属性设置闭包:execGet,execPut,execPost和execDelete,具体取决于您需要支持以下URI的HTTP操作。每个闭包都有动态参数列表。下面是传递给闭包的参数列表,它描述了参数列表如何以及何时更改。
service:Service接口的实现,用于访问数据库或发送/接收XMPP节。
callback:需要调用以返回数据的闭包。仅接受String,byte [],Map类型的一个参数。如果数据是Map类型,则将根据“ Content-Type”标头将其编码为JSON或XML。
user:仅当requiredRole不为null时,将通过。在其他情况下,该参数将不在参数列表中!
content:请求的解析内容。如果request的Content-Length为空,则不在参数列表中。如果Content-Type为XML或JSON类型,则以Map的形式返回。否则它将是HttpServletRequest的实例。
x:传递给回调的其他参数是来自正则表达式匹配URI的组。组不作为列表传递,而是作为下一个参数添加到参数列表中。
如果未设置相应HTTP操作的属性,则组件将返回404 HTTP错误。
8.2.6。REST API和HTTP指南
该组件涵盖REST API以及基本的HTTP组件配置。REST代表REpresentational State Transfer,它是一种无状态通信方法,在我们的案例中,该方法将使用HTTP GET,PUT,POST和DELETE命令的命令传递给Tigase服务器中的资源。尽管REST使用HTTP来接收命令,但是REST本身不适合在浏览器中使用。
设置与配置
Tigase的REST组件在classpath中需要以下内容
servlet-api-3.1.jar
如果您已安装Tigase v7.1.0或更高版本,则说明该jar已安装。如果您使用的是Tigase的旧版本,则可以从此链接下载文件。安装完成后,您还需要在init.properties文件中添加以下几行以启用HTTP组件。
--comp-name-4=http --comp-class-4=tigase.http.HttpMessageReceiver
在此默认配置中,Tigase将尝试在端口8080上启动独立的Jetty HTTP服务器并启动默认模块,包括RestModule,它将在/ rest路径中添加REST API的上下文。RestModule还将加载位于scripts / rest / *目录中的所有Groovy脚本,并将它们绑定到/ rest / *路径的适当操作。
注意:可以在src / scriopts / groovy / tigase / rest /目录中的组件存储库中找到处理HTTP请求的脚本。
组件属性
这是HttpMessageReceiver组件的一些其他属性,可以在init.properties文件中设置。
{compname} / http / ports [i] =-设置逗号分隔的端口列表,HTTP服务器将在这些端口上侦听连接。默认值为8080。
{compname} / ********* / socket = ssl-设置SSL连接的端口,替换 # 使用您选择的端口号。
{compname} / ********* / domain = example.com-这将设置来自Tigase XMPP证书存储区的SSL证书的域名,还将端口设置为 # 侦听HTTPS连接。
{compname} / server-class =-设置用于管理HTTP服务器的类的名称。当前有以下选项:
tigase.http.JettyStandaloneHttpServer-启动独立的Jetty HTTP Server实例(需要Tigase HTTP API-Jetty HTTP Server)
tigase.http.jetty.JettyOSGIHttpServer-使用可作为OSGi服务使用的Jetty HTTP Server实例(只能在OSGi环境中使用)(需要Tigase HTTP API-Jetty HTTP Server)
tigase.http.java.JavaStandaloneHttpServer-使用Java JDK提供的HttpServer启动独立的HTTP服务器(可能不适用于每个JDK提供程序的JDK)。
{compname} / http / threads =-设置可用于HTTP组件的线程数。默认值是4。
{compname} / http / request-timeout =-以毫秒为单位设置线程在非活动连接上关闭的超时时间。默认值为60秒。
模组
Tigase的REST组件带有两个模块,可以分别启用,禁用和配置。组件属性的模块通用设置以以下格式使用:component_name / module_id / module_setting /以下设置可用于两个列出的模块:
active [B]-布尔值true / false,用于启用或禁用模块。
context-path-模块应可用的HTTP上下文路径。
vhosts [s]-逗号分隔的虚拟主机列表,应为其提供模块。如果未配置,则该模块将可用于所有虚拟主机。
休息模块
这是提供对REST API的支持的模块。可用属性:
rest-scripts-dir-如果您不希望使用默认值(脚本/ rest),则可以指定处理REST请求的脚本的路径。
api-keys [s]-逗号分隔的字符串列表,可以用作键来传递api-key参数以请求授权以执行请求。如果未传递任何内容,则不允许任何请求。要允许任何请求,需要使用以下属性设置此属性:
http / rest / api-keys [s] = open_access
您可以将api-keys设置为所需的任何字符串,但是,当您请求HTTP API服务时,所包含的API密钥必须完全匹配。将API密钥保持为ASCII字符以保持兼容性。例如,如果要设置以下API密钥:
http / rest / api-key [s] = a7D2dm3lps138w
对HTTP服务的请求必须以相同的密钥结尾:http:// localhost:8080/rest/adhoc/sess-man@domain.com?api-key = a7D2dm3lps138w
DNS网络服务
该模块使用HTTP协议解析DNS名称。对于需要将DNS地址解析为特定IP的Web应用程序,此特定模块可能很有用。例如,帮助发现用于连接到XMPP服务器的WebSocket服务的IP和端口。
使用范例
以下是使用HTTP API和可用脚本的一些示例。
检索可用的临时命令列表
要检索可用命令列表,REST需要使用以下资源中的GET方法:/rest/adhoc/sess-man@domain.com。这提供了来自sess-man@domain.com资源的可用临时命令列表。可以将其更改为希望从中获取命令的任何裸JID,以便它可以是MUC会议室,监视器组件,或者在这种情况下可以是会话管理器。在服务器运行的情况下,让我们连接到地址http:// localhost:8080 / rest /和以下资源/adhoc/sess-man@domain.com,这将检索sess-man上可用的所有临时命令的列表。@ domain.com。此特定操作通过使用HTTP基本身份验证的身份验证来保护,因此需要有效的凭据。用户凭据在Tigase的用户数据库安装中可用,因此请使用管理员授权帐户的裸JID和密码来进行此活动。结果将是该结果示例下方的类似于IQ节的可用命令的XML格式输出。
<items> <item> <jid>sess-man@domain.com</jid> <node>http://jabber.org/protocol/admin#get-active-users</node> <name>Get list of active users</name> </item> <item> <jid>sess-man@domain.com</jid> <node>del-script</node> <name>Remove command script</name> </item> <item> <jid>sess-man@domain.com</jid> <node>add-script</node> <name>New command script</name> </item> </items>
还可以返回JSON格式的结果。为此,您需要将Content-Type:application / json传递到请求的HTTP标头,或者添加type参数并将其设置为application / json设置。JSON结果的示例如下。
{ "items": [ { "jid": "sess-man@domain.com", "node": "http://jabber.org/protocol/admin#get-active-users", "name": "Get list of active users" }, { "jid": "sess-man@domain.com", "node": "del-script", "name": "Remove command script" }, { "jid": "sess-man@domain.com", "node": "add-script", "name": "New command script" } ] }
同样,这些方法中的任何一种都可以在具有可用临时命令的任何组件上使用。随时进行实验,看看每个组件有哪些可用选项。
执行临时命令
找到要使用的命令后,可以使用HTTP POST方法发送该命令。在此示例中,让我们请求一个活动用户列表,如上一节所述。注意:与前面的示例一样,这些命令需要基本的HTTP身份验证。
以下命令发送到http:// localhost:8080/rest/adhoc/sess-man@domain.com
<command> <node>http://jabber.org/protocol/admin#get-active-users</node> <fields> <item> <var>domainjid</var> <value>domain.com</value> </item> <item> <var>max_items</var> <value>25</value> </item> </fields> </command>
此特定命令需要三个字段<node>,domainjid和max_items。这三个值是命令的节点(在可用命令中返回),要从中返回域结果以及最大结果数。请记住,必须将Content-type:text / xml传递到HTTP标头以获取XML结果。不这样做可能会产生错误或难以理解的结果。该命令的结果将如下所示:
<command> <jid>sess-man@domain.com</jid> <node>http://jabber.org/protocol/admin#get-active-users</node> <fields> <item> <var>Users: 3</var> <label>text-multi</label> <value>admin@domain.com</value> <value>user1@domain.com</value> <value>morbo@domain.com</value> </item> </fields> </command>
可以类似的方式使用JSON发送和接收相似的结果。同样,请确保在标题或默认设置中设置ContentType:application / json。
{ "command" : { "node" : "http://jabber.org/protocol/admin#get-active-users", "fields" : [ { "var" : "domainjid", "value" : "subdomain.domain.com" }, { "var" : "max_items", "value" : "25" } ] } }
结果看起来与XML结果非常相似:
{ "command": { "jid": "sess-man@domain.com", "node": "http://jabber.org/protocol/admin#get-active-users", "fields": [ { "var": "Users: 2", "label": "text-multi", "value": [ "minion1@subdomain.domain.com", "overadmin@subdomain.domain.com" ] } ] } }
发送任何XMPP节
可以使用此API通过在http:// localhost:8080 / rest / stream / api-key = API_KEY上发送HTTP POST请求,并以序列化的XMPP节作为内容来发送XMPP消息或任何其他XMPP节,其中API_KEY是API密钥在init.properties文件中指定。每个请求都需要通过发送有效的管理员JID和密码作为BASIC HTTP授权方法的用户/密码来进行授权。HTTP请求的内容应使用UTF-8编码,并且Content-Type应该设置为application / xml。
处理请求
如果在节中未设置from属性,则HTTP API组件将代替它的JID,但是如果设置了JID,则将保留它。但是,在iq节中,如果未设置from属性,则HTTP响应内容将作为响应发送回。成功的请求将返回HTTP响应代码200。
示例: 这些示例中的任何一个都必须作为HTTP POST请求发送到HTTP API组件的/ rest / stream /?api-key = API_KEY。
将XMPP消息(从set发送到完整的JID)发送到HTTP API组件
<message xmlns="jabber:client" type="chat" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
使用裸JID将XMPP消息与from集发送到HTTP API组件
<message xmlns="jabber:client" type="chat" to="test@example.com"> <body>Example message 1</body> </message>
发送XMPP消息,其from设置为指定的JID到完整的JID
<message xmlns="jabber:client" type="chat" from="sender@example.com" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
通过REST发送消息
您还可以通过REST API向用户和组件发送消息或实际上任何XMPP节。使用HTTP发送XMPP消息或节实现为v7.0.2中捆绑在安装包中的常规脚本。如果要确保当前的安装支持此功能,请在scripts / rest / stream /目录中检查Stream.groovy文件是否存在。
与其他示例一样,请确保init.properties中包含以下行:
http/rest/api-keys[s]=test_key
您也可以选择设置open_access以禁用API密钥参数。
用法
使用HTTP POST方法,可以使用内置的HTTP API发送XMPP节。在本地安装中,可以将请求发送到带有:// serialized XMPP节的内容的http:// localhost:8080 / rest / stream /?api-key = API_KEY,其中API_KEY是HTTP API的API密钥,该密钥在etc / init.properties作为rest / api-key [s]。在我们布置的情况下,它将是test_key。因为XMPP使用XML进行格式化,所以这些请求中的所有内容都必须以UTF-8编码,并且Content-type必须设置为application / xml。让我们看一些例子。
在所有示例中,数据均作为HTTP POST请求发送到/ rest / stream /?api-key = test-key。
将XMPP节与from一起发送到HTTP API组件到裸JID
<message xmlns="jabber:client" type="chat" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
发送此消息后,Groovy脚本会自动添加剩余信息,以下是test@example.com / resource-1 收到的内容。
<message xmlns="jabber:client" type="chat" from:"http@example.com" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
如您所见,HTTP组件自动填充为发送者。
将XMPP节与from一起发送到HTTP API组件到完整的JID
<message xmlns="jabber:client" type="chat" to="test@example.com"> <body>Example message 1</body> </message>
语法和格式相同,接收消息完全相同。
<message xmlns="jabber:client" type="chat" from:"http@example.com" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
将XMPP节与from一起发送到指定的JID
您可以指定在服务器中注册的任何JID来发送节,使用未注册名称的JID将返回错误。
<message xmlns="jabber:client" type="chat" from="sender@example.com" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
最终结果得到了一定程度的定制。
<message xmlns="jabber:client" type="chat" from:"sender@example.com" to="test@example.com/resource-1"> <body>Example message 1</body> </message>
头像检索请求
根据化身的存储方式,可以使用不同的格式,有关每种化身的资源,请参见下文。
/ rest / avatar / user @ domain-返回找到的第一个头像(依次为PEP,VCard4或VCardTemp)
/ rest / avatar / user @ domain / avatar-返回PEP头像
/ rest / avatar / user @ domain / vcard4-从VCard4返回头像
/ rest / avatar / user @ domain / vcard-temp-从VCardTemp返回化身
设置HTTP API隐私规则
HTTP API组件具有允许您指定允许谁使用HTTP API接口的设置,以防止未经授权的用户访问该功能。此功能是通过针对会话管理器组件的Groovy admin临时工具条实现的。作为此方法的结果,将可以使用默认的GTTP API componene功能执行脚本来执行。但是,实际的过滤工作将由DomainFilter插件执行。
添加了新的Rest API以获取JID登录时间
GetUserInfo命令已得到扩展,以获取除标准信息外的用户登录和注销时间。要获取信息,请将POST请求发送到http://xmpp.domain.net:8080/rest/adhoc/sess-man@xmpp.domain.net?api-key=test-api-key,其内容如下:
<command> <node>get-user-info</node> <fields> <item> <var>accountjid</var> <value>user@xmpp.domain.net</value> </item> <item> <var>Show connected resources in table</var> <value>true</value> </item> </fields> </command>
组态
HTTP API隐私scipt将自动加载。DomainFilter是Tigase在启动时加载的默认插件。这意味着运行此程序几乎不需要做。同样,您可以使用init.properties中的以下行定义自定义API密钥以限制访问
http/rest/api-keys[s]=test_key
用法
可以通过使用以下地址向会话管理器发送POST请求来设置隐私规则:http:// localhost:8080/rest/sess-man@domain.com?api-key = test_key
<command> <node>user-domain-perm</node> <fields> <item> <var>jid</var> <value>user@domain.com</value> </item> <item> <var>fiteringPolicy</var> <value>CUSTOM</value> </item> <item> <var>filteringList</var> <value> 1|allow|self; 2|allow|jid|admin@test2.com; 3|allow|jid|pubsub@test.com; 4|deny|all; </value> </item> </fields> </command>
在这里,所有参数都将通过ad-hot命令传递。使用user-domain-perm节点,我们可以将jid添加到CUSTOM过滤器中。这是一个简短的细分:
jid表示将同样应用设置的JID。
filterPolicy-使用CUSTOM类型列表,该列表允许自定义处理规则的多项目列表。
filteringLise-这是一个多项目列表,以分号分隔,其中每一行表示一个规则项,其格式为:+ order_number | policy | UID_type [| UID]:
order_number可以是任何整数,只要没有数字重复即可。
政策可以允许或拒绝。
UID_type是用户ID类型,可以是jid,域或全部。
UID是受影响的用户JID。如果将UID_type设置为all,则将忽略它。
这些临时命令可复制管理指南中“ 基于域的数据包过滤”中的设置。它们也可能会受到init.properties 的--domain-filter-policy属性的影响。
脚本编写
从上述命令可以看到,Tigase使用预定义的脚本来处理HTTP API中的所有请求。尽管现在的列表可能很小,但这确实意味着要使用一些Groovy脚本,您可以创建自己的脚本来解释REST命令并将其发送到服务器!
所有用于此目的的脚本将是扩展tigase.http.rest.Handler类的类的实现。脚本的URI将在scripts文件夹内。例如,如果脚本使用TestHandler并将正则表达式设置为/ test并放置在scripts / rest /内,则将使用以下URI调用处理程序:scripts / rest / test /。
物产
扩展类时,需要设置以下列出的属性。regex ::正则表达式,用于匹配请求URI和解析URI中嵌入的参数,例如:
----- / \ /([[^ @ \ /] +)@([^ @ \ /] +)/ -----
requiredRole
需要具有用户角色才能访问此URI。可用值为null,user和admin。如果requiredRole不为null,则需要对脚本进行身份验证。
isAsync
如果设置为true,则可以等待结果,例如,IQ节到达。
包含闭包的属性
扩展类还应为以下一个或多个属性设置闭包:execGet,execPut,execPost,execDelete,取决于支持以下URI所需的HTTP操作。每个闭包都有一个在运行时生成的动态参数列表。以下是传递给闭包的参数列表,描述了参数列表如何以及何时更改。
服务
服务接口的实现,该服务接口用于访问数据库或发送/接收XMPP节。
打回来
需要调用回调闭包以返回数据。但是,它们仅接受类型为string,byte [],Map的一个参数。如果数据是Map tupe,则将根据Content-Type标头将其编码为JSON或XML。
用户
仅当requiredRole不为null时传递。否则,此参数将不在参数列表中。
内容
解析的请求内容。如果请求的Content-Lengeth为空,则该参数将不在参数列表中。如果Content-Type设置为XML或JSON,则返回结果将为Map,否则将为HttpServletRequest的实例。
X
传递给回调的其他参数是来自与URI相匹配的正则表达式的组。组不作为列表传递,而是添加到参数列表和下一个参数列表中。
如果未设置相应HTTP操作的属性,则组件将返回HTTP 404错误。
示例脚本
让我们看一下安装包中随附的脚本,以更好地了解这些脚本的工作方式。该脚本将获取所有已注册帐户的列表,并根据稍后将要查看的HTML文件输出它们。
import tigase.http.rest.Service import tigase.xmpp.BareJID /** * Class implements ability to retrieve by service administrator list of registered accounts * Handles requests for /rest/users/ * * Example format of content of response: * <users><items><item>user1@domain</item><item>user2@domain</item></items><count>2</count></users> */ class UsersHandler extends tigase.http.rest.Handler { public UsersHandler() { description = [ regex : "/", GET : [ info:'Retrieve list of registered user jids', description: """Request do not require any parameters and returns list of all registered user accounts on this server (for all vhosts). Example response will look like this: \${util.formatData([users:[items:['user1@example.com','user2@example.com','user1@example2.com'],count:3]])} """] ]; regex = /\// requiredRole = "admin" isAsync = false execGet = { Service service, callback, jid -> def users = service.getUserRepository().getUsers() callback([users:[items:users, count:users.size()]]); } } }
如我们所见,这是一个相当短的代码。首先,它调用其余服务(所有REST活动都需要)和BareJID处理程序。接下来,我们扩展自定义类以扩展tigase.http.rest.Handler。我们的作者对代码进行了有益的描述,以更好地描述其操作和预期结果。最后一部分是实际代码,该代码定义了将与查询匹配的内容(在本例中为任何内容),要求管理员执行命令,连接将以结果终止以及将传递什么命令的条件。
此处包含匹配的HTML,它将影响代码的输出。
${ util.include('header', [title:'All users']) } <table style="margin: auto;"> <tr> <th>Avatar</th> <th>User JID</th> </tr> <% result.users.items.each { user -> %> <tr> <td> <img style="max-height: 50px; max-width: 50px;" src="${util.link("/avatar/" + user)}" /> </td> <td> <a href="${util.link("/user/"+user)}">${user}</a> </td> </tr> <% } %> </table> ${ util.include('footer') }
该文件使用GET请求中的用户字段构建表。注意:并非所有脚本都需要匹配的HTML文件,基本请求可能不需要特殊处理。
REST API和PubSub
可在Tigase安装目录的scripts / rest / pubsub目录中找到所有PubSub脚本。本节中的所有示例都是为可在pubsub@example.com上使用的PubSub组件准备的。要在安装中使用这些示例,则需要用pubsub JID替换该JID。
HTTP请求内容中传递的所有参数都需要在XML文档的根目录处用<data />标记包装。返回的结果将包装在XMl文档根目录的<result />标记内。
创建一个节点
HTTP URL:example.com/rest/pubsub/pubsub@example.com/create-node
可用的HTTP方法:
得到
方法返回示例内容,其中包含可以传递给新创建的节点的所有必需和可选参数。
开机自检
命令要求在节点node和pubsub#node_type字段中填充适当的值才能执行。
node字段包含要创建的节点的ID
owner字段可以包含将被视为节点所有者的JID或JIDS。如果此字段为空,则服务器将使用HTTP API组件(rest@example.com)的JID
pubsub#node_type字段应包含以下两种类型之一:
叶节点到将要发布的项目
收集节点到节点将包含其他节点的节点
以下是创建所有者设置为admin@example.com的叶子类型节点的示例。
<data> <node>example</node> <owner>admin@example.com</owner> <pubsub prefix="true"> <node_type>leaf</node_type> </pubsub> </data>
服务器响应:
<result> <Note type="fixed"> <value>Operation successful</value> </Note> </result>
删除节点
HTTP URL:example.com/rest/pubsub/pubsub@example.com/delete-node
可用的HTTP方法:
得到
命令返回示例内容,其中包含可以传递的所有必需参数和操作参数。
开机自检
命令要求填充字段节点,其中node是要删除的节点的ID。
以下是删除ID为example的节点的示例
<data> <node>example</node> </data>
服务器响应
<result> <Note type="fixed"> <value>Operation successful</value> </Note> </result>
订阅节点
HTTP URI:example.com/rest/pubsub/pubsub@example.com/subscribe-node
可用的HTTP方法:
得到
方法返回示例内容,其中包含可能传递的所有必需和可选参数。
开机自检
命令要求填写节点和jid字段。
node也是要订阅的节点的ID。
jid是要订阅该节点的JID或JIDS。
下面是一个在客户端和服务器之间传递的XML信息示例,其中test1@example.com和test2@example.com订阅了示例节点。
<data> <node>example</node> <jids> <value>test1@example.com</value> <value>test2@example.com</value> </jids> </data>
服务器响应:
<result> <Note type="fixed"> <value>Operation successful</value> </Note> </result>
退订节点
HTTP URI:example.com/rest/pubsub/pubsub@example.com/unsubscribe-node
可用的HTTP方法:
得到
方法返回示例内容,其中包含可能传递的所有必需和可选参数。
开机自检
与“订阅节点”部分一样,该命令要求同时填写节点和jid字段。
node是要取消订阅的节点的ID。
jid是要从节点退订的JID或JIDS。
以下是在客户端和服务器之间传递的XML信息的示例,其中test1@example.com和test2@example.com取消订阅示例节点。
<data> <node>example</node> <jids> <value>test@example.com</value> <value>test2@example.com</value> </jids> </data>
服务器响应:
<result> <Note type="fixed"> <value>Operation successful</value> </Note> </result>
将项目发布到节点
HTTP URI:example.com/rest/pubsub/pubsub@example.com/publish-item
可用的HTTP方法:
得到
方法返回示例内容,其中包含可能传递的所有必需和可选参数。
开机自检
命令要求填写节点和输入字段。可用字段:
node字段包含要发布到的节点的ID。
item-id包含要发布条目的ID的字段。
expire-at字段可能包含时间戳,之后不得将其传递给订阅的用户。时间戳记应遵循以下格式:YYYY-MM-DDhh:mm:ss,后缀Z,以24小时格式表示UTC时间。
entry字段应包含多行输入内容,该内容应为项目的有效XML值。
以下是客户端和服务器之间的示例交换,用于将ID为item-1的项目发布到节点example。
<data> <node>example</node> <item-id>item-1</item-id> <expire-at>2015-05-13T16:05:00+02:00</expire-at> <entry> <item-entry> <title>Example 1</title> <content>Example content</content> </item-entry> </entry> </data>
服务器响应:
<result> <Note type="fixed"> <value>Operation successful</value> </Note> </result>
列出可用节点
HTTP URI:example.com/rest/pubsub/pubsub.example.com/list-nodes
可用的HTTP方法
得到
此方法返回作为URI(pubsub.example.com)的一部分传递的域的可用PubSub节点的列表。
以下是客户端和服务器之间用于列出所有节点的示例交换,结果为test,node_54idf40037和node_3ws5lz0037
<result> <title>List of available nodes</title> <nodes label="Nodes" type="text-multi"> <value>test</value> <value>node_54idf40037</value> <value>node_3ws5lz0037</value> </nodes> </result>
列出节点上的已发布项目
HTTP URI:example.com/rest/pubsub/pubsub.example.com/list-items
可用的HTTP方法
得到
方法返回示例内容,其中包含可能传递的所有必需和可选参数。
开机自检
此命令要求填写节点字段。节点字段包含要从中获取已发布项目列表的节点的ID。
下面是客户端和服务器之间的示例交换,要求在示例节点中发布所有项目。
<data> <node>example</node> </data>
服务器响应
<result> <title>List of PubSub node items</title> <node label="Node" type="text-single"> <value>example</value> </node> <items label="Items" type="text-multi"> <value>item-1</value> <value>item-2</value> </items> </result>
项目item-1和item-2是列出的项目。
检索节点上的已发布项目
HTTP URI:example.com/rest/pubsub/pubsub.example.com/retrieve-item
可用的HTTP方法
得到
方法返回示例内容,其中包含可能传递的所有必需和可选参数。
开机自检
命令要求填写字段node和item-id。可用字段:-节点项目发布到的节点。-item-id您要检索的项目的ID。
客户端和服务器之间的通信示例:
<data> <node>example</node> <item-id>item-1</item> </data>
服务器响应:
<result> <title>Retrive PubSub node item</title> <node label="Node" type="text-single"> <value>example</value> </node> <item-id label="Item ID" type="text-single"> <value>item-1</value> </item-id> <item label="Item" type="text-multi"> <value><item expire-at="2015-05-13T14:05:00Z" id="item-1"><item-entry> <title>Example 1</title> <content>Example content</content> </item-entry></item> </value> </item> </result>
在item元素内有一个XML编码元素的节点,将无需任何解码即可检索该元素。
其他示例REST命令和文档
其他示例REST命令以及随附的文档可以在运行Tigase和HTTP组件的任何服务器上的localhost:8080 / rest /中找到。
8.2.7。管理员界面指南
管理员用户界面是基于HTTP的界面,该界面将REST命令发送到服务器以更新配置,更改设置和检索统计信息。
关于REST的注意事项
REST代表REpresentational State Transfer,它是一种无状态通信方法,在我们的案例中,该方法将使用HTTP GET,PUT,POST和DELETE命令的命令传递给Tigase服务器中的资源。尽管REST使用HTTP来接收命令,但是REST本身不适合在浏览器中使用。有关更多信息,请参阅REST API指南。
组态
允许您列出服务器组件及其配置,以及管理服务器组件和插件。
列表服务器/组件配置部分涵盖了所有组件选项,包括basic-conf,并将允许您通过更改字段中的值并单击提交来更改每个设置。默认情况下或--component-name属性定义的所有设置均在下拉菜单中按组件名称列出。
通过管理活动服务器组件,您可以执行此操作,但是您也可以从此界面添加和禁用组件。
您可以在此处列出,添加,编辑和删除组件。- 列表提供所有正在运行的组件的列表,每个组件都有其名称,信息和类。- 添加提供一个接口,用于添加组件的类和名称。您将无法添加无效的组件名称或类。- 编辑使您可以编辑任何正在运行的组件的特定属性。即使将列出没有当前值的选项,您也可以将此列表视为当前组件的设置和选项的完整列表。- 删除提供了一种删除正在运行的组件的方法。
通过管理服务器插件,您可以通过此窗口的“ VIA”复选框打开或关闭插件。请注意,更改是实时进行的。
示例脚本
这是可以运行的脚本示例列表,并为每个组件执行辅助功能。它们本身可能没有特定的值,但是可以在编写自定义脚本时用作参考。获取可用命令列表是一个脚本,该脚本针对服务器上活动的每个组件都存在,并且如其标题所示,它将提供该组件的所有命令的列表。最后,本指南“ 脚本”部分中的两个脚本。通常,在本节中没有太多需要看的东西。
通知事项
本节有一个简单的命令:能够向所有登录用户发送大量消息。此部分可以发送三种类型的消息:- 在大多数客户端中,普通消息将作为弹出窗口显示。- 标题某些客户端会接收标题消息并将其插入MUC或用户之间的聊天,否则它将像普通消息一样创建弹出窗口。- 聊天聊天消息将打开与用户的聊天对话框。
其他
本节包含影响服务器功能的大量选项和设置。
为用户激活日志跟踪器
这使您可以设置日志文件来跟踪特定用户。设置要记录的用户的裸JID或完整JID,以及希望写入日志的文件的名称。除非您提供类似logs / filename的目录,否则文件将被写入根Tigase目录。日志文件将以.0扩展名命名,并将命名为.1,.2,.3,依此类推,因为每个文件默认情况下达到10MB。filename.0将始终是最新的。发出命令后,日志将开始,一旦服务器重新启动,日志将停止。
添加SSL证书
在这里,您可以将PEM文件中的SSL证书添加到特定的虚拟主机。尽管Tigase可以生成自己的自签名证书,但是它将覆盖所有默认证书。证书不能包含密码或加密。确保内容同时包含证书和私钥数据。您还可以选择将证书保存到磁盘,以使更改永久生效。
添加侦听器脚本
本部分允许您为事件总线组件创建自定义函数。如果满足设置条件,这些脚本可使服务器执行某些操作。您可以使用Groovy或EMCAscript编写脚本。请参阅事件总线部分以获取更多详细信息。
添加监控任务
您可以在此处为Groovy或ECMAScript编写脚本以添加以监视任务。这只会将脚本添加到可用脚本中,但是,您将需要在另一个提示下运行它。请注意,这些脚本只能与监视器组件一起使用。
添加监视器计时器任务
本部分允许您使用延迟设置在Groovy中添加监视脚本,这将延迟脚本的启动。
添加新项目-分机
根据是否加载了外部组件,可能会显示出来。这使您可以将其他外部组件添加到正在运行的Tigase实例中。
添加新项目-虚拟主机
这使您可以将新的虚拟主机添加到XMPP服务器。字段细分如下:
域名:新虚拟主机的完整域名。Tigase不会向此域添加任何内容,因此,如果它是example.com的子域,则需要输入sub.domain.com。
启用:域是打开还是关闭。
已启用匿名:允许匿名登录。
带内注册:是否允许用户在登录时注册帐户。
需要TLS:打开流之前,要求登录到虚拟主机进行TLS握手。
S2S机密:由服务器生成的代码,用于区分服务器之间的流量,通常不需要输入自己的代码,但是如果需要输入低级代码,则可以。
域过滤器策略:设置此域的过滤器策略,有关规则的说明,请参阅本节。
域过滤器域:用于限制或控制跨域流量的特定设置。
最大用户数:允许注册到服务器的最大用户数。
允许的C2S,BOSH,Websocket端口:此虚拟主机将检查所有这些服务的端口的逗号分隔列表。
在线状态转发地址:在线状态信息也转发到的特定地址。如果您要使用单个域进行状态处理和处理,这可能会很方便。
邮件转发地址:所有邮件也将发送到的特定地址。如果您只有一台服务器来处理AMP或消息存储,并希望将负载保持在那里,这可能对您很有用。
其他参数:您可能希望传递给服务器的其他设置,请在命令后将此部分视为选项。
所有者:虚拟主机的所有者,也将被视为管理员。
管理员:以逗号分隔的JID列表,这些ID将被视为虚拟主机的管理员。
XEP-0136启用消息存档:是打开还是关闭此功能。
XEP-0136必需的存储方法:如果XEP-0136已打开,则可以限制已保存的消息部分。这对于任何存档都是必需的,如果为null,则可以存储消息的任何部分。
需要客户端证书:客户端是否应提交证书才能登录。
客户端证书CA:客户端证书的证书颁发机构。
XEP-0136保留期限:将设置消息归档天数的整数。
可信JID:将以逗号分隔的JID列表,这些列表将添加到可信列表中,这些JID可以执行命令,编辑设置或其他安全工作,而无需进行安全登录。
XEP-0136保留类型:设置保留期限将使用的数据类型。可以是用户定义的(自定义数字类型),无限制或天数。
XEP-0136-存储MUC消息:是否存储MUC消息以进行归档。默认值为user,它允许用户单独设置此设置,否则tue / false将被覆盖。
启用see-other-host重定向:在具有多个群集的服务器中,此功能将有助于在群集列表出现故障时自动重新填充群集列表,但是,如果未选中此列表,该列表将不会更改,并且可能会尝试将流量发送到停机服务器。
XEP-0136默认存储方法:将存储在归档中的消息的默认部分。
更改用户域间通信权限
在这里,您可以限制用户能够在特定域上进行通信,这类似于使用相同规则集的域过滤策略。有关更多详细信息,请参阅基于域的数据包过滤部分以获取规则详细信息。请注意,可以同时对多个JID进行更改。
连接时间
列出从客户端到服务器的最长和平均连接时间。
创建节点
本部分允许您为pubsub组件创建一个新节点。以下是字段的细分:
要创建的节点:这是将要创建的节点的名称。
所有者JID:将被视为节点所有者的用户JID。
pubsub#node type:设置新节点将成为的节点的类型。选项包括:
叶节点可以发布也可以发布。
集合其他节点的集合。
节点的友好名称:允许使用空格和其他字符将其与其他节点区分开。
是否提供带有事件通知的有效负载:如上所述,是否发布事件。
更改配置时通知订户:默认为false
持久存储项目:是否在节点中物理存储项目。
最多可保留的项目数:限制节点归档中保留的项目数。
节点所属的集合:如果该节点将在集合中,请在此处放置该节点名称。
指定订户模型:选择此节点将使用哪种订户模型。选项包括:
授权 -要求所有订阅必须由节点所有者批准,然后项目才能发布给用户。也只有订户可以检索项目。
开放 -所有用户都可以从节点订阅和检索项目。
在线状态 -通常在即时消息环境中使用。提供一种系统,在该系统下,使用所有者订阅或两者订阅了所有者JID的存在的用户可以订阅该节点并从该节点检索项目。
名册 -在即时消息环境中也使用,名册既订阅了所有者的存在,又被名册放在特定的允许组中的用户可以订阅该节点并从中检索项目。
白名单 -仅允许明确允许的JID订阅和从节点检索项目,此列表由所有者/管理员设置。
指定发布者模型:选择此节点将使用哪种类型的发布者模型。选项包括:
打开 -任何用户都可以发布到该节点。
发布者 -只有列为发布者的用户才可以发布。
订阅者 -只有订阅者可以发布到该节点。
何时发送上次发布的项目:这使您可以决定是否以及何时将节点上的上次发布的项目发送给新订阅的用户。
从不 -不发送最后发布的项目。
on_sub-当用户订阅该节点时,发送最后发布的项目。
on_sub_and_presence-订阅后发送上次发布的项目给用户,并且该用户可用。
允许访问此节点的域:用户可以访问此节点的域的逗号分隔列表。默认情况下为空,并且没有域限制。
是否仅将项目传递给可用用户:如果选择此项,则仅将项目发布给具有可用状态的用户。
订阅者脱机时订阅是否到期:这将使对该节点的所有订阅对于单个会话有效,并且在重新连接后需要重新订阅。
可以应用于有效负载的XSL转换,以生成适当的消息正文元素:由于您需要格式正确的<body>元素,因此可以在此处添加XSL转换,以解决此处需要正确格式化的任何有效负载或额外元素。
XSL转换的URL可以应用于有效负载以生成适当的消息正文元素:这将是XSL转换的URL,例如http://www.w3.org/1999/XSL/Transform。
允许订阅的花名册组:用户将能够订阅的组的列表。如果为空白,则不会施加用户限制。
当所有者更改其订阅或从属状态时通知订阅者:如果所有者更改从属或订阅状态,则节点将发送一条消息。
允许获取每个订户的订户列表:允许订户生成该节点的其他订户列表。
是否按创建日期或更新时间对收集项进行排序:选项包括
byCreationDate-项目将按创建日期(即项目制作时间)进行排序。
byUpdateTime-将按上次更新时间对项目进行排序,即上次编辑/发布/等的时间。
DNS查询
基本的DNS查询表单。
默认配置-Pubsub
在这里,您可以为任何新的pubsub节点设置默认配置。这些更改将在将来的所有节点上进行,但不会影响当前活动的节点。
默认房间配置
该页面允许管理员为服务器上可能建立的任何新MUC房间设置默认配置。
删除监控任务
这将从可用监视脚本列表中除去监视任务。此操作不是永久性的,因为它将在服务器重新启动时恢复为初始设置。
删除节点
提供空间以从服务器中删除节点。它必须是节点的全名,一次只能删除一个节点。
删除所有节点
该页面允许登录的管理员从关联的虚拟主机中删除所有节点。此更改是不可逆的,请确保在提交命令之前阅读并选中该框。
修复用户名册
您可以从此提示修复用户花名册。填写用户的裸露JID以及您希望从名单中添加或删除的名称。这不会编辑用户花名册,而是将客户端花名册与数据库进行比较并修复它们之间的任何错误。
在Tigase群集上修复用户名册
这与“修订用户名册”相同,但是可以适用于可能未登录到本地虚拟主机但已登录到集群服务器的用户。
获取用户名册
顾名思义,这将获得用户的名册并将其显示在屏幕上。您可以使用裸JID或完整JID来获取特定花名册。
获取任何文件
使您能够查看tigase目录中任何文件的内容。默认情况下,您位于根目录中,如果要进入目录,请使用以下格式:logs / tigase.log.0
获取配置文件
如果您不想输入配置文件的位置,则可以使用此提示来显示tigase.conf或init.properties的内容。
获取init.properties文件
将输出当前的init.properties文件,其中包括在当前服务器会话期间进行的任何修改。
获取列表可用命令
对于不同的组件,可能会多次列出该命令,但这将按照本节的建议进行操作,并列出该特定组件的可用命令。
负载测试
在这里,您可以在任何节点上使用pubsub组件运行测试,以测试该节点的功能和正确的设置。
加载错误
将显示服务器在加载和运行中遇到的任何错误。如果您需要解决任何问题,可能会很有用。
新命令脚本
该空间使您可以创建将在关联的组件中运行的新命令脚本。请注意,在超链接标题下,有muc.server.org或pubsub.server.org的列表,请使用它们来确定新命令的运行位置。
OAuth凭证
这样可以为服务器设置新的自定义OAuth凭据,并且用户登录时也可以要求用户使用OAuth令牌。这是您登录的特定主机的设置。如果您登录到xmpp1.domain.com,则不会影响xmpp2.domain.com的设置。
绑定前BOSH用户会话
这允许JID在该用户登录之前与BOSH会话配对,如果您有一个定期通过BOSH登录的用户或一个将定期连接的Web客户端,则可以减少CPU使用。您还可以指定HOLD和WAIT整数,以影响BOSH如何使用关联的JID进行操作。
将项目发布到节点
该窗口不仅可以测试,还可以将项目发布到指定的节点。必须填写所有字段,以避免服务器丢弃格式错误的节。
读取所有节点
在这里,您可以显示所有节点和当前存储节点中的项目。
重建资料库
这将迫使Tigase重建pubsub组件的数据库,这对于在取消订阅后继续获得推送事件的pubsub订阅者可能很有用。
重新加载组件存储库
这将重新加载服务器正在运行的所有虚拟主机。如果在运行时断开连接或断开连接,这可能很有用。
删除项目
这将从服务器中删除正在运行的虚拟主机,系统将显示一个列表供您选择。
删除命令脚本
像新的命令脚本一样,请查看子标题以确定要从中删除脚本的组件。在那里,选择要从服务器中删除的命令。如果选择从磁盘删除,则更改将是永久的。否则,该命令将被删除,直到下一个服务器重新启动。
删除监听器脚本
从列表中选择要删除的侦听器脚本。这只会影响添加到eventbus组件的自定义侦听器脚本。
移开房间
这提供了从MUC组件中删除房间的字段。您可能会建议其他房间,一旦当前房间被移走,该房间将把乘客转移到其他房间。
取回物品
在这里,您可以从PubSub节点检索项目,这可以从pubsub组件模拟get IQ节。-服务名称-pubsub组件的地址。-节点名称-用于从中检索项目的项目节点。-商品ID-您要检索的商品的商品ID。-自-以来的项目-从以下日期开始搜索的UTC时间戳:YYYY-MM-DDTHH:MM:SSZ
S2S不良状态连接
这将列出与其他服务器的任何连接,这些连接被认为是不良的或陈旧的。由于Tigase会根据出现故障的群集服务器自动进行调整,因此这种情况很少出现。如果连接保持不良状态,建议在下一个空间重置这些连接。
S2S重置错误状态连接
这将重置与其他服务器的连接,这些连接被认为是错误的,并已显示在S2S Bad State Connections页面中。
S2S获取CID连接状态
仅供内部开发人员使用。
订阅节点
这为管理员提供了一个手动让JID订阅特定节点的空间。
退订节点
在这里,您可以取消订阅特定节点的用户。用户可以是逗号分隔的列表。
更新项目配置
通常,此条目将显示两个条目,一个条目用于basic-conf,另一个条目用于vhost-man。它们每个都有自己的部分,但是提供了大量的服务器选项。对服务器的更改是实时进行的,并且可能不是永久的。
基本配置
这将提示Tigase安装中当前可用的几乎所有组件设置的列表。它们细分如下:组件/类别或设置/设置例如,如果要更改事件总线组件的管理员,则将选择“事件总线/管理员”。另一个示例可能是,如果您想打开或关闭监视器组件中的任务,比如说disk-checker-task,您会发现“ monitor / disk-checker-task / enabled”。单击提交查询将显示当前状态和设置,以及可能更改的字段。以这种方式完成的大多数更改都将重置为默认值,或在服务器重新启动时按照init.properties文件中的说明进行更改。
虚拟人
系统将为您显示Tigase当前托管的域的列表,您将能够使用此功能一次更改一个域的设置。选择域后,您将可以设置或更改以下设置:
域名:新虚拟主机的完整域名。Tigase不会向此域添加任何内容,因此,如果它是example.com的子域,则需要输入sub.domain.com。
启用:域是打开还是关闭。
已启用匿名:允许匿名登录。
带内注册:是否允许用户在登录时注册帐户。
需要TLS:打开流之前,要求登录到虚拟主机进行TLS握手。
S2S机密:由服务器生成的代码,用于区分服务器之间的流量,通常不需要输入自己的代码,但是如果需要输入低级代码,则可以。
域过滤器策略:设置此域的过滤器策略,有关规则的说明,请参阅本节。
域过滤器域:用于限制或控制跨域流量的特定设置。
最大用户数:允许注册到服务器的最大用户数。
允许的C2S,BOSH,Websocket端口:此虚拟主机将检查所有这些服务的端口的逗号分隔列表。
在线状态转发地址:在线状态信息也转发到的特定地址。如果您要使用单个域进行状态处理和处理,这可能会很方便。
邮件转发地址:所有邮件也将发送到的特定地址。如果您只有一台服务器来处理AMP或消息存储,并希望将负载保持在那里,这可能对您很有用。
其他参数:您可能希望传递给服务器的其他设置,请在命令后将此部分视为选项。
所有者:虚拟主机的所有者,也将被视为管理员。
管理员:以逗号分隔的JID列表,这些ID将被视为虚拟主机的管理员。
XEP-0136启用消息存档:是打开还是关闭此功能。
XEP-0136必需的存储方法:如果XEP-0136已打开,则可以限制已保存的消息部分。这对于任何存档都是必需的,如果为null,则可以存储消息的任何部分。
需要客户端证书:客户端是否应提交证书才能登录。
客户端证书CA:客户端证书颁发机构。
XEP-0136保留期限:将设置消息归档天数的整数。
可信JID:将以逗号分隔的JID列表,这些列表将添加到可信列表中,这些JID可以执行命令,编辑设置或其他安全工作,而无需进行安全登录。
XEP-0136保留类型:设置保留期限将使用的数据类型。可以是用户定义的(自定义数字类型),无限制或天数。
XEP-0136-存储MUC消息:是否存储MUC消息以进行归档。默认值为user,它允许用户单独设置此设置,否则true / false将被覆盖。
启用see-other-host重定向:在具有多个群集的服务器中,此功能将有助于在群集列表出现故障时自动重新填充群集列表,但是,如果未选中此列表,该列表将不会更改,并且可能会尝试将流量发送到停机服务器。
XEP-0136默认存储方法:将存储在归档中的消息的默认部分。
更新用户名册条目
此部分允许管理员编辑单个用户花名册,尽管它提供了修复用户花名册的类似功能,但它是为精确编辑用户花名册而设计的。
名单所有者JID:您要编辑的用户名单的BareJID。
要操作的JID:您要添加/删除/更改的特定BareJID。
逗号分隔的组:您也希望添加JID的组。
操作类型:将执行什么功能?
添加 -添加要操纵的JID到所有者JID的名册和组中。
删除 -从所有者JID的名册和组中删除要操作的JID。
订阅类型:将被发送到服务器,然后将在两个用户之间使用的订阅节的类型。
无 -如果要操纵的所有者或用户都不希望收到状态信息,请选择此选项。
发件人 -名册拥有者将不会从JID接收到要处理的状态信息,但相反的情况将成立。
收件人 -要操纵的JID将不会从名册所有者那里接收到状态信息,但相反的情况将成立。
两者 -两个JID都将接收有关彼此的状态信息。
更新用户名册条目扩展版本
本部分是上一个部分的扩展版本,所有已指定的字段与这些添加的内容相同:
名册所有者名称:如果您想更改/创建一个好记的名字或昵称。不需要
所有者组的逗号分隔:用户要加入/离开的组。不需要
名册项目JID:需要编辑的特定JID。
名册项目名称:将被更改/创建的友好名称或昵称。不需要
逗号分隔的项目组列表:将添加或删除名册项目JID的组或组列表。
行动:
添加/更新项目 -将在名单所有者的名册中添加或更新项目JID。
删除项目 -将从名单所有者的名单中删除项目JID。
添加/更新两个名册 -将在名册所有者和名册项目名册中添加或更新项目。
从两个名册中删除 -将同时从名册所有者和名册项目的名册中删除该项目。
剧本
本节将使管理员能够自定义编写或输入自己的特定组件脚本。每个活动的组件都有一个用于新建和删除命令脚本的条目,以及为该组件编写的脚本。
新命令脚本
说明:脚本的友好名称将成为左侧菜单中链接的标题。
命令ID:Tigase在引用此脚本时将使用的内部命令。
组:脚本的组,可以是左侧的任何标题(配置,示例脚本,通知,其他等),也可以是您自己的标题。如果不存在任何组,将创建一个新的组。
语言:脚本编写所使用的语言。当前,Tigase支持Groovy和EMCAScript。
脚本文本:脚本的全文。
保存到磁盘:保存到磁盘的脚本将永久存储在服务器的目录/scripts/admin/[Component]/commandID.js中。注意:未保存到磁盘的脚本将无法在服务器重启后继续运行。
删除命令脚本
与新命令脚本一样,每个组件都有一个条目。该页面将提供一个空间,用于删除所选组件的命令。您将获得与该组件关联的脚本列表。您还可以从磁盘中删除文件,这将从服务器所在的硬盘中永久删除脚本。如果未选中此选项,则该脚本在下一次重新启动之前将不可用。
统计
本节对测试统计脚本和组件更有用,因为许多脚本和组件产生的信息量很少,但是可以由其他组件或脚本收集这些信息以更好地显示信息。
获取用户统计信息
提供用户统计信息的脚本输出,包括正在使用的活动会话数,使用的数据包数量,特定连接及其数据包使用情况和位置。所有资源将返回单独的统计信息以及IP地址。
获取活动用户列表
提供服务器内所选域下的活动用户列表。活动用户被视为当前登录到XMPP服务器的用户。
获取空闲用户列表
提供服务器上空闲的用户列表。
获取在线用户列表
提供当前在线的用户列表。
获取活动用户数
提供活动用户的列表,这些用户不是空闲的也不是不在的用户。
获取空闲用户数
提供许多空闲用户。
获取最活跃的用户
将产生一个用户限制的用户列表,这些用户在发送的数据包中被认为是最活跃的。
用户数
添加用户
在这里,您可以将新用户添加到vHosts处理的任何域中,这些用户会立即添加到数据库中并且可以登录。 注意:您不能在本节中为这些用户授予管理员状态。
修改用户密码
这使您可以更改数据库中任何用户的密码。尽管更改将立即生效,但是当前登录的用户只有在尝试再次登录后才知道密码已更改。
删除用户
这将从数据库中删除一个或多个用户(用逗号分隔)。单击提交后,删除的用户将被踢出服务器。
最终用户会话
通过结束他们与服务器的会话来断开当前所选用户的连接。
获取用户信息
此部分允许管理员获取有关特定用户的信息,包括当前连接以及等待传递的脱机和联机消息。
获取注册用户列表
这将显示所选域的所有注册用户,最多显示指定数量。
修改用户
允许您修改一些用户详细信息,包括电子邮件以及它是否是活动用户。
8.2.8。Tigase Web客户端
Tigase现在在HTTP接口中内置了功能齐全的XMPP客户端。现在,您可以在舒适的浏览器窗口中完成对XMPP客户端的所有期望,而无需安装软件!
让我们逐步进行设置。
Tigase Web客户端要求Http.Message.Receiver插件处于活动状态。要启用此功能,请将以下行添加到您的init.properties文件中:
--comp-name-5:http --comp-class-5:tigase.HttpMessageReceiver
注意:如果您选择要在安装时启用的HTTP API,则您已经拥有所需的一切。 这将使用默认端口8080设置HTTP服务器。有关组件配置,请参见HTTP API指南。
要访问客户端,请将浏览器指向以下地址:xmpp.your-server.net:8080/ui/
它将要求您登录,在服务器上注册的所有裸JID用户都可以使用。 注意:使用裸JID进行登录
成功登录后,将显示以下屏幕。
命令分为此处显示的类别。这些部分中的所有更改都是即时的,应被视为与您使用外部XMPP客户端(如Psi)相同。
注意 BOSH客户端将自动将所有请求转换为服务器名称。在极少数情况下,浏览器可能无法解决此问题,您将无法登录。如果发生这种情况,可以在init.properties中使用以下行来禁用该功能:
bosh / send-node-hostname [B] = false
在登录屏幕中使用高级标记时,可能必须专门指定bosh URL。
聊天室
这是默认窗口,也是您在XMPP内部与此服务器聊天的主要界面。注意:您只能与登录到当前服务器或已连接的群集的 用户进行通信,您花名册中的用户将显示在左侧面板上,右侧的所有活动讨论和MUC以及当前选择的聊天都将可用。
登录并在您的名册上的用户将显示在左侧。双击将打开与用户的新聊天窗口。您可以右键单击它们以显示带有以下内容的子菜单;
聊天复制双击并打开一个新的聊天窗口。
修改会弹出一个对话框,允许您更改联系人的JID,昵称和组。
删除将从用户名册中删除该用户。这还将删除所选用户的订阅授权,以接收状态信息,从而有效地将您从其名单中删除。注意:这不会阻止来自您的JID的用户数据包
信息弹出用户信息(这是所选用户的disco#info命令)
右上方有一些具有特定功能的图标,它们分别是:
将新用户添加到您的名册中。
创建一个新的多用户聊天室。
允许您编辑用户信息,例如图片和昵称。
关闭活动的聊天窗口。
提供了一个更改密码或将更改发布到您的用户信息的地方。注意:您仅限于更改常规字段
发现
这是您的服务发现面板,按侧栏中的组件细分。列出了每个组件名称及其关联的JID,以帮助您查找所需的内容。除了允许浏览和加入MUC的少数例外,大多数组件都为您提供了执行命令的选项。
浏览使您可以更深入地研究某些组件。例如,列出MUC组件中可用的聊天室。在页面顶部,将显示您所在组件的特定JID。这是一个文本字段,可以进行编辑以反映要导航的组件的JID(或仅服务器名称)。
加入会议室可将您加入到选定的MUC会议室。或者,在选择MUC组件后选择“加入会议室”,您可以加入并启动新的MUC会议室。
执行命令提供命令和选项的层次结构,以查看和编辑设置,运行命令和脚本,查看文件内容以及查看统计信息。由于每个组件都可以具有唯一的结构,因此最好浏览每个组件以查看可用的选项。
管理
这是XMPP服务器设置和管理的高级窗口。
组态
列出服务器/组件配置
从下拉菜单中,您可以查看所有活动的组件或服务器配置(basic-conf)。这是当前设置的只读列表。
管理活动的服务器组件
本节为您提供了组件的下拉菜单- 列表将提供具有以下格式组件名称的活动运行组件列表:componentInfo {Title = Server,服务器版本/修订(提交日期),Class = component class}示例:amp :: componentInfo {Title = Tigase XMPP Server,版本= 7.1.0-SNAPSHOT-b3990 / 574c329f(2015-08-28 / 10:32:06),Class = tigase.server.amp.AmpComponent}
添加允许您以与init.properties文件类似的方式激活组件。定义组件的名称和组件的类。单击确定后,该组件将处于活动状态并正在运行。
编辑将允许您编辑所选组件的详细信息。将列出该组件的所有可能值,甚至没有特定设置的值。更改将立即生效,尽管更改将在重新启动后恢复为init.properties中指定的更改。
删除允许您从下拉列表中删除组件。确认后将删除组件,但是在服务器重新启动时将还原设置。
管理活动的服务器插件
这是所有可用插件的列表,您可以通过选中或取消选中每个插件并单击确认来激活或停用它们。所有更改都是实时进行的,但是更改将在服务器重新启动时恢复。
通知事项
本节有一个简单的命令:能够向所有登录用户发送大量消息。您可以选择将消息类型更改为标题或普通,在大多数XMPP客户端中将显示为弹出消息。聊天消息将打开与用户的聊天对话框。
其他
本节包含影响服务器功能的大量选项和设置。
为用户激活日志跟踪器
这使您可以设置日志文件来跟踪特定用户。设置要记录的用户的裸JID或完整JID,以及希望写入日志的文件的名称。除非您提供类似logs / filename的目录,否则文件将被写入根Tigase目录。日志文件将以.0扩展名命名,并将命名为.1,.2,.3,依此类推,因为每个文件默认情况下达到10MB。filename.0将始终是最新的。服务器重新启动后,日志记录将停止。
添加SSL证书
在这里,您可以将PEM文件中的SSL证书添加到特定的虚拟主机。尽管Tigase可以生成自己的自签名证书,但是它将覆盖那些默认证书。
添加监控任务
您可以在此处为Groovy或ECMAScript编写脚本以添加以监视任务。这只会将脚本添加到可用脚本中,但是,您将需要在另一个提示下运行它。
添加监视器计时器任务
本部分允许您使用延迟设置在Groovy中添加监视脚本,这将延迟脚本的启动。
添加新项目-分机
提供一种向服务器添加外部组件的方法。默认情况下,您被视为所有者,并且自动填充了Tigase负载平衡器。
添加新项目-虚拟主机
这使您可以将新的虚拟主机添加到XMPP服务器
更改用户域间通信权限
您可以限制用户只能与某些虚拟主机之间收发数据包。如果您想将用户锁定到特定域,或阻止他们从统计信息组件获取信息,这可能会有所帮助。
连接时间
列出从客户端到服务器的最长和平均连接时间。
DNS查询
基本的DNS查询表单。
默认房间配置
允许您为新的MUC房间设置默认配置。这将无法修改当前正在使用的房间和永久房间。
删除监控任务
这将从可用监视脚本列表中除去监视任务。此操作不是永久性的,因为它将在服务器重新启动时恢复为初始设置。
修复用户名册
您可以从此提示修复用户花名册。填写用户的裸露JID以及您希望从名单中添加或删除的名称。您可以使用此工具编辑用户花名册,并且更改是永久的。
在Tigase群集上修复用户名册
这与“修复用户名册”相同,但是可以应用于群集服务器中的用户。
获取用户名册
顾名思义,这将获得用户的名册并将其显示在屏幕上。您可以使用裸JID或完整JID来获取特定花名册。
获取任何文件
使您能够查看tigase目录中任何文件的内容。默认情况下,您位于根目录中,如果要进入目录,请使用以下格式:logs / tigase.log.0
获取配置文件
如果您不想输入配置文件的位置,则可以使用此提示来显示tigase.conf或init.properties的内容。
获取init.properties文件
将输出当前的init.properties文件,其中包括在当前服务器会话期间进行的任何修改。
加载错误
将显示服务器在加载和运行中遇到的任何错误。如果您需要解决任何问题,可能会很有用。
新命令脚本-监控器
允许您在Groovy中编写命令脚本并将其物理存储,以便可以在服务器重新启动后将其保存并随时运行。此处编写的脚本只能在Monitor组件上使用。
新命令脚本-MUC
允许您在Groovy中编写命令脚本并将其物理存储,以便可以在服务器重新启动后将其保存并随时运行。此处编写的脚本只能在MUC组件上使用。
OAUth凭证
使用OAuth设置新的凭据并启用或禁用具有签名表单的注册要求。
绑定前BOSH用户会话
允许管理员将BOSH会话与完整或裸露的JID预绑定(在连接时自动填充资源)。您也可以指定HOLD或WAIT参数。
重新加载组件存储库
这将显示您是否有任何外部组件,并在线程卡住的情况下重新加载它们。
剧本
本节提供了所有活动组件的命令脚本列表。每个组件都有以下选项-“ 获取可用列表”命令将列出该组件的脚本命令,这些脚本命令按“脚本”或“组”划分。- 新的命令脚本提供了一种方法,可以为用EMCAScript或Groovy编写的特定组件编写新的命令脚本。您确实可以选择将脚本保存到磁盘,这将使脚本在服务器中永久存在。- 删除命令脚本允许您从存储库中删除选定的脚本。如果未选中“从磁盘删除”,则该脚本在服务器重新启动之前将不可用。如果是这样,它将从服务器中永久删除。
您将无法在此部分中编辑或运行命令。
统计
这些统计信息可能会更有用,因为脚本结果会产生少量数据,但是在查找服务器负载或查找用户问题时,您可能会发现它们很有用。
获取用户统计信息
提供用户统计信息的脚本输出,包括正在使用的活动会话数,使用的数据包数量,特定连接及其数据包使用情况和位置。所有资源将返回单独的统计信息以及IP地址。
获取活动用户列表
提供服务器内所选域下的活动用户列表。活动用户被视为当前登录到XMPP服务器的用户。
获取空闲用户列表
这将列出由vhost分隔的所有空闲用户。
获取在线用户列表
这将列出被连接的虚拟主机隔开的用户。该列表将包括裸JID以及该JID的所有资源。
获取活动用户数
这将显示当前活动用户的数量。
获取空闲用户数
此部分返回每个特定虚拟主机的活动用户数。
获取最活跃的用户
这将按发送的数据包和在线时间列出活动用户的最高数量。该列表仅由当前在线和来自所有虚拟主机的用户构建。
用户数
添加新用户
在这里,您可以将新用户添加到vHosts处理的任何域中,这些用户会立即添加到数据库中并且可以登录。 注意:您不能在本节中为这些用户授予管理员状态。
修改用户密码
允许管理员更改特定用户的密码,而无需知道所选裸JID的原始密码。当前登录的用户在尝试重新登录之前不会知道密码已更改。
删除用户
为管理员提供文本窗口,以输入他们希望从服务器中删除的用户的裸机JID。
获取用户信息
此部分允许管理员获取有关特定用户的信息,包括当前连接以及等待传递的脱机和联机消息。
获取注册用户列表
提供要搜索的虚拟主机列表以及要列出的最大用户数。运行后,该脚本将显示来自所选虚拟主机的用户的注册裸JID列表。
修改用户
允许您修改一些用户详细信息,包括电子邮件以及它是否是活动用户。
标签:
上一篇: Tigase服务器和多个数据库配置,如用户验证和数据存储分离
下一篇: Tigase MUC组件配置信息 ----7.1.2