Mud 內的 Ftp Server
我相信很多人都用 mud 內建的 ftp server,不過因為內建的 server 其實還是有許多的問題,例如:無法使用 pasv mode,效能也不彰…之類的。不過我現在的作法並不是使用 mud 內建的 ftp server,是用 pureftpd 來作 ftp server。為什麼選用 pureftpd 呢?因為他可以不用 root 模式來跑 ftp server,且可以用自定的密碼認證模式,所以可以讓他跟 mud 連結,作到 ftp & mud 都使用同樣的密碼。接下來看看怎麼作:
-
到 ftp://ftp.pureftpd.org/pub/pure-ftpd/release/ 下載最新的 pureftpd 的 source code。
-
$ tar -xzvf pure-ftpd-xxx.tar.gz
-
$ ./configure –with-everything –with-brokenrealpath –without-shadow
–with–noroot –without-ascii –with-language=traditional-chinese -
$ make all
-
cd src/ 把 pure-ftpd & pure-authd cp 到 ~/bin/ 下
-
建個 ~/bin/auth 檔內容為:其中的 5556 為在mud 內要拿來作認證的 port,你可以用 iptables 檔掉非 127.0.0.1 連線。
#!/bin/bash
(printf %s:%s:%s"rn" $AUTHD_ACCOUNT $AUTHD_PASSWORD $AUTHD_REMOTE_IP;sleep 0.1)|telnet localhost 5556 -
$ ~/bin/pure-authd -s /home/wmmud/bin/ftpd.sock -r /home/wmmud/bin/auth &
// 請把其中的目錄改成你現實的狀態,auth就是剛建的 auth 檔 -
$ home/wmmud/bin/pure-ftpd -lextauth:/home/wmmud/bin/ftpd.sock -A
-O CLF:/home/wmmud/bin/log -S 5560 &
// ftpd.sock 要跟上一個同樣, 第2個 CLF:/xxx 就是你的 log
檔想要放置的位子,5560 就是你要開放給 wizard 連接的 port
Linux 下的處理已經好了,接下來就是處理 mud 設定了:
- 在 config 檔新增 external_port_2 : telnet 5556 ,其中 5556 是你要讓 pure-ftpd 拿來作認證的。
- 改寫 /adm/obj/master.c 的 connect,讓他能接受多個 port。
範例:http://rw.muds.net/~whatup/mud/ftp_server_master.example.c - 新增 /obj/ftplogin.c
範例:http://rw.muds.net/~whatup/mud/ftp_server_ftplogin.example.c
接下來應該就可以動了,當然你的 wizard char 要上線才能同時登入 ftp ,這樣對安全性也好多了。