分享

「网络」使用tigase-server搭建私有聊天服务器

 东西二王 2023-05-20 发布于重庆

一、tigase简介

tigase 完全实现了XMPP协议,除了全面实施的两个核心协议,它支持了很多你可能永远都需要的扩展协议。Tigase是开源的,如果你有那个能力,你可以自定义自己的XMPPServer,当然经过进行了很多次测试,但仍然可能有bug,你可以修改bug并提供代码到官方

二、使用docker搭建tigase-server

参考地址:tigase.net/tigase-meet…

安装tigase-server之前首先需要一个mysql

首先拉取镜像

docker pull tigase/tigase-xmpp-server ##拉取镜像docker run -d --name tigase-server --link mysql:mysql -p 30001:5290 -p 30002:8080 -p 30003:5222 tigase/tigase-xmpp -server ##启动tigase-server

然后访问http://ip:port 进入设置界面,账号admin 密码tigase

然后直接下一步,最后重新启动tigase-server

然后再进入系统

创造虚拟空间

三、配置TLS证书

这里直接使用openssl来生成证书

openssl req -nodes -new -newkey rsa:2048 -keyout qhliao.im.key -out qhliao.im.csr

这一步会让你输入一个密码,一定要记住住这个密码,而且俗名是你虚拟域的名字,比我这个就是qhliao.im

openssl x509 -req -days 365 -in qhliao.im.csr -signkey qhliao.im.key -out qhliao.im.crtcat qhliao.im.crt qhliao.im.key > qhliao.im.pem

转为pkcs12

openssl pkcs12 -export -out qhliao.im.p12 -inkey qhliao.im.key -in qhliao.im.crt

转为jks

keytool -importkeystore -srckeystore qhliao.im.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore qhliao.im.jks

然后把qhliao.im.pem文件复制到tigase-server目录里面的certs里面docker的对话下面命令

docker cp qhliao.im.pem tigase-server:/home/tigase/tigase-server/certs

然后重新启动tigase

docker 重启 tigase 服务器

至此服务器配置好了,下面开始客户端连接,这里表演Smack连接服务器和Spark客户端连接服务

四、Smack连接

首先导入maven依赖

<依赖关系>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack-java8</artifactId>
    <version>4.4.0</version></dependency><dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack-tcp</artifactId>
    <version>4.4.0</version></dependency><dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack-im</artifactId>
    <version>4.4.0</version></dependency><dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack 扩展</artifactId>
    <version>4.4.0</version></dependency>

把刚出生的证明书qhliao.im.jks类型的复制到项目的根目录然后代码

public static AbstractXMPPConnection connection() { 尝试{
        SSLContext ctx = SSLContext.getInstance("SSL");
        TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
        KeyStore tks = KeyStore.getInstance("JKS");
        tks.load(XmppTest.class.getResourceAsStream("/qhliao.im.jks"), "你刚的密码".toCharArray());
        tmf.init(tks);
        ctx.init(null, tmf.getTrustManagers(), null);
        XMPPTCPConnectionConfiguration 配置 = XMPPTCPConnectionConfiguration.builder()
                .setHost("ip").setPort(30003)
                .setXmppDomain("qhliao.im")
                .setSendPresence(真)
                .setCompressionEnabled(假)
                .setSslContextFactory(() -> ctx)
                .setSecurityMode(ConnectionConfiguration.SecurityMode.required)
                .setResource("打")
                .setCustomX509TrustManager(new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0];
                    } public void checkClientTrusted(
                            java.security.cert.X509Certificate[] certs, String authType) {
                    } public void checkServerTrusted(
                            java.security.cert.X509Certificate[] certs, String authType) {
                    }
                })
                。建造();
        XMPPTCPConnection xmppConnection = new XMPPTCPConnection(配置);
        xmppConnection.connect(); 返回 xmppConnection;
    } 赶上(异常 e){
        log.error("链接失败");
        log.error(ExceptionUtils.getStackTrace(e));
    } 返回空值;
}

然后连接

AbstractXMPPConnection connection = connection();try { if (connection != null && connection.isConnected()) {
        connection.login("浪市", "浪市");
    }
} catch (Exception e) { log.error("报错啊拉啊啊"); log.error(ExceptionUtils.getStackTrace(e));
    connection.disconnect();
}

五、使用Spark连接 首先下载Spark xmpp.org/software/cl…

为Spark安装证书

选择刚生成的qhliao.im.crt 新增 然后确定保存, 如果没有配置域名称则需要

然而保存新建账号

最后就可以登录了

文章来源:
https:///post/6992899508694859783

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多