跳转到内容

TouchFish

来自 Arch Linux 中文维基


TouchFish 是一款轻量级的局域网(LAN)即时通讯工具,无需登录或添加好友即可在同一子网内创建聊天室。它支持服务端/客户端模式,适用于机房、办公室等内部网络环境。

安装

AUR

TouchFish 的 AUR 包名为 touchfishAUR,安装后位于 /usr/bin/touchfish

注:TouchFish 跨大版本不兼容,如果你需要登录多个站点,那么滚动更新可能更新到不兼容的版本,建议手动安装

手动安装

你可以直接从 GitHub 获取源码或二进制文件:

  • 源码运行(推荐服务端):安装 python,然后克隆仓库并运行:
git clone https://github.com/2044-space-elevator/TouchFish
cd TouchFish
python chat.py

# 服务端

python client.py # 客户端
  • 二进制文件:从 GitHub Releases 下载对应架构的可执行文件(Linux、Windows),解压后直接运行。

系统要求

  • Linux:无特殊限制,服务端建议使用源码版本而非二进制文件。
  • Windows:Windows 10 或更新版本原生支持;Windows 8.1 及更早版本可能需要额外 DLL。若提示写入失败,请以管理员身份运行。
  • macOS:需要 macOS 10.8 Mountain Lion 或更高版本,并允许“任何来源”的应用运行权限。

启动

作为服务端(创建聊天室)

  1. 获取本机内网 IP 地址:
    Linux:执行 ip aifconfig,查找 inet 后的 IPv4 地址。
  2. 检查端口可用性:
    选择一个 0~65535 的端口,执行 netstat -an | grep <端口号>lsof -i :<端口号>,确保端口未被占用。
  3. 启动服务器:
    运行 chat.py 或二进制文件,按 Enter 开始配置,按以下顺序填写:
    1. 启动模式:Server[1]
    2. 内网 IP 地址
    3. 空闲端口号
    4. 服务端昵称
    5. 最大用户数(建议 ≤128)
    配置完成后将你的 IP 地址和端口分享给其他用户。
  4. 后续启动:再次运行时按 Ctrl+C(Windows/Linux)或 Ctrl+D(macOS)即可自动使用上次配置。

作为客户端(加入聊天室)

  1. 运行 client.py 或二进制文件,按 Enter 开始配置。
  2. 选择启动模式为 Client[1],填写服务器提供的 IP、端口和你的个人昵称。
  3. 后续连接:再次运行时按 Ctrl+C(Windows/Linux)或 Ctrl+D(macOS)即可自动连接。

使用

概述

聊天室界面分为两种模式:

  • 输出模式(默认):行首没有符号,此时输入的指令将被忽略且不会显示在屏幕上。
  • 输入模式:行首显示 > 符号。按下 Enter(或输入任意指令)即可从输入模式返回输出模式。在输入模式下,新的消息会等待退出输入模式后才显示。

用户状态共有以下 7 种:

状态 说明
Root 聊天室房主
Admin 聊天室管理员
Online 聊天室普通用户
Pending 等待加入审核的用户
Offline 主动离开聊天室的用户
Kicked 被踢出聊天室的用户
Rejected 连接被拒绝的用户

只有状态为 RootAdminOnlinePending 的用户会被计入在线用户数。状态为 AdminRoot 的用户有权查看别人的私聊消息和私有文件。

聊天室内可用的指令共 17 条(25 项),支持使用方括号内的缩略形式(不区分大小写)。所有 <user> 字段可以输入 UID 或用户名(优先解析为 UID,遇到冲突时采纳 UID 最小的合法解析结果)。简易命令行模式(flood)允许直接输入并发送单行消息而省略 send,但会禁用其他指令。

基本命令

以下指令所有用户均可使用:

缩略 完整格式 说明
D dashboard 展示聊天室各项数据(Root 用户可以看到所有用户的 IP 地址)
F distribute <filename> 发送文件
Q evaluate <input> 像 Python IDLE 那样计算输入数据(使用 eval(),二进制发行版 Python 版本为 3.6)。
警告: 请勿注入恶意代码(如 exit()locals() 等),后果自负。
E exit 退出或关闭聊天室
L flood 开启简易命令行模式(禁用其他指令,直接发送单行消息)
H help 显示帮助文本
S send 发送多行消息
S send <message> 发送单行消息
J shell <command> 执行 Shell 指令
警告: 请勿执行危害本程序或设备的指令,后果自负。
T transfer <user> <filename> 向某个用户发送私有文件
P whisper <user> 向某个用户发送多行私聊消息
P whisper <user> <message> 向某个用户发送单行私聊消息

管理员

以下指令需要管理员(Admin)或房主(Root)权限。标注 * 的指令只有 Admin 或 Root 可使用,标注 ** 的指令只有 Root 可使用。

缩略 完整格式 权限 说明
I+ ban ip add <ip> * 封禁 IP 或 IP 段(支持 CIDR 格式如 a.b.c.d/e,前缀长度 ≥24)
I- ban ip remove <ip> * 解除封禁 IP 或 IP 段
W+ ban words add <word> * 屏蔽某个词语
W- ban words remove <word> * 解除屏蔽某个词语
B broadcast * 向全体用户广播多行消息
B broadcast <message> * 向全体用户广播单行消息
C config <key> <value> * 修改聊天室配置项(<key> 格式以 dashboard 输出为准,<value> 格式以修改示例为准)
G+ doorman accept <user> * 通过某个用户的加入申请
G- doorman reject <user> * 拒绝某个用户的加入申请
K kick <user> * 踢出某个用户
• Root 可踢出 Admin 或 Online 用户
• Admin 只能踢出 Online 用户
A+ admin add <uid> ** 添加管理员(仅 Root)
A- admin remove <uid> ** 移除管理员(仅 Root)
V save ** 保存聊天室配置项信息(仅 Root)

更多联机帮助请参见 TouchFish GitHub 仓库

故障排除

无法连接聊天室

  • 确保所有设备处于同一局域网(LAN)或可互通的子网内。
  • 服务端需开放指定端口的入站连接(例如:检查防火墙规则,使用 iptablesufw 放行端口)。

客户端或服务端闪退

  • 检查端口是否已被其他进程占用,改用其他空闲端口。
  • 运行 python 版本时,确认 Python 环境为 3.x 版本。
  1. 1.0 1.1 此处必须开头大写