诺基亚等老手机自带聊天室服务器搭建教程(IMPS Wireless Village)
本帖最后由 8192Bit 于 2025-3-2 22:40 编辑前排提示:建议使用论坛电脑版阅读本帖。
大家在研究诺基亚等老手机时可能会发现这个功能:
但是打开后发现需要设置服务器才能使用。本帖分享搭建这种聊天室服务器的过程。
1. 关于聊天室使用的协议
我们连接WiFi后把聊天室服务器设置为内网某地址,通过抓包软件可以看到数据包的具体格式。
其中"wireless-village"字样吸引了我们的注意。以这个关键词在网上查找资料,可以在某百科上查到这是OMA制定的一种即时通信协议。
进一步查找,可以搜索到外国通信论坛Osmocom的一篇帖子Wireless Village/OMA IMPS/baraza.im experiments。
2. 服务器在Debian 11上的编译
帖子中提到了开源服务器baraza支持上述协议,但是疑似有些太老了。楼主提供了自己修改的版本,使得源代码可以在Debian 11上编译。
在Debian 11上clone转存到GitHub的源代码并切换到manawyrm-compile-debian11分支。
git clone https://github.com/blamba-de/baraza.git
git checkout manawyrm-compile-debian11
git pull origin manawyrm-compile-debian11按照帖子中的命令安装好依赖。
apt install postgresql kannel kannel-dev kannel-extras autoconf build-essential libc6-dev libresolv* libgnutls* libgcrypt-dev libiksemel*
systemctl disable --now kannel然后运行经典
sudo configure&&make&&make install注意某些情况下需要自行指定glibc中libresolv.a静态库的位置。我的系统上libresolv.a位于/lib/x86_64-linux-gnu/,所以使用命令
sudo ./configure --with-libresolv-dir=/lib/x86_64-linux-gnu/make时如果出现multiple definition of xxx,可以试着用automake等工具重新生成configure。
3. 数据库配置
我和原帖楼主在软件初次启动初始化SQL表的时候都失败了,以下为手动初始化的方法。
baraza所用的PostgreSQL安装后会创建postgres用户,拥有数据库最高权限。我们用sudo -i -u postgres切换到该用户,按照帖子中的命令创建database并授予新建用户权限。在本教程中,我们假设数据库名称为imps,用户名为barazad,密码为12345,则:postgres=# CREATE DATABASE imps;
postgres=# CREATE USER barazad WITH ENCRYPTED PASSWORD '12345';
postgres=# GRANT ALL PRIVILEGES ON DATABASE imps TO barazad;如果你打算使用自动注册功能(配置文件中auto-registration需要为yes),还需要在数据表localdomains里面加入默认域名。在postgres用户下执行:
psql -d imps
4. 服务器配置
配置文件默认从/etc/imps.conf加载,也可以用以下命令指定:
barazad -c 配置文件位置配置文件中各项参数具体作用位于某网页时光机保存的baraza官网上,此处不多赘述。
5. 手机配置
服务器名称随意,接入点需要选择正确。
网址即服务器地址,端口号是配置文件中的http-port。例:http://192.168.1.123:8181
“用户识别码”和“密码”即账号密码。开启了自动注册的话,如果账号不存在,就会按提供的账号密码创建新账户。
另外,假如上文在localdomains中所设置的域名为example.com,则创建账号时使用"user@example.com"与"user"的结果是一样的。
6.
7. 开服之后......
除了最基本的文本聊天服务外,baraza还可以提供这些功能:
[*]基于TCP、UDP和WAP Push SMS的主动消息推送
[*]图片等文件的发送
[*]与XMPP服务器连接,或是在多个Wireless Village服务器之间传输信息
不过
[*]但是原帖楼主关闭了发送WAP Push短信的WAP网关Kannel,而某些设备不支持TCP,UDP无法绕过NAT。大家有兴趣的话可以试着恢复WAP短信推送功能。
[*]我测试图片发送时,另一方可以获知有文件发送过来,但是显示格式不支持。可能和配置文件中以cir-开头的设置项相关。
[*]baraza本来支持与XMPP/Jabber服务器连接并互通消息,但是其SSL/TLS版本过于老旧(SSLv3/TLSv1.0),所以原帖楼主注释了向XMPP服务器发送消息的代码。大家可以试着自建XMPP服务器,并允许不安全的连接。这样可以在不支持Wireless Village的设备上使用各种各样的XMPP客户端与baraza用户交流。Wireless Village要求服务器支持SSP协议,让不同服务器的消息可以相互传送,如果有兴趣也可以尝试配置。
此外,还有第三方的Wireless Village客户端Gaim(Windows)和SmartVas(Java ME),在原帖的最后有提及。但是我都没有测试成功。
在此提供修复一条SmartVas的思路:
[*]首先修改主页面(Client.class)的逻辑,使得地址输入框输入的地址可以来自任意host或端口。(本来的逻辑是在前面加上一个内置host和80端口号,这样没法连接其他服务器)
[*]然后用ProGuard对jar文件进行混淆优化压缩,使得手机可以识别到MIDlet类。(可以试试看直接运行源文件,会提示找不到主MIDlet类)
感谢大家的阅读。
注意:
本帖最后由 8192Bit 于 2025-3-3 13:22 编辑论坛吞代码,进入psql后,向localdomains加入数据的SQL语句应为:
INSERT INTO localdomains (domain) VALUES ('你的域名');
barazad用户没有权限的话请自行GRANT。 看不懂。应该怎么操作才能进入聊天室正常聊天? SD卡两色人 发表于 2025-3-3 21:27
看不懂。应该怎么操作才能进入聊天室正常聊天?
要按照本帖的步骤自己搭建服务器 8192Bit 发表于 2025-3-3 22:11
要按照本帖的步骤自己搭建服务器
只适用于Linux系统吗? SD卡两色人 发表于 2025-3-3 22:17
只适用于Linux系统吗?
是
虚拟机可以,理论上WSL2什么的应该也可以 厉害,支持{:4_91:} 那现在你的服务器可用吗? SD卡两色人 发表于 2025-3-15 20:26
那现在你的服务器可用吗?
不可用
要用请自建
页:
[1]