跳至內容

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 此處必須開頭大寫