動機
之前工作要架簡單的server去測,但裝一般的server還要設定有的沒的,所以用這個來偷吃步
twisted
一個方便寫network programming的framework
會遇到的理由是之前想架ftp server測試用,但是arch linux的vsftpd架不起來(居然要systemd-homed!?) 所以找到他,下面是ftp server的範例
from twisted.protocols.ftp import FTPFactory, FTPRealm
from twisted.cred.portal import Portal
from twisted.cred.checkers import AllowAnonymousAccess, FilePasswordDB
from twisted.internet import reactor
p = Portal(FTPRealm("./"), [AllowAnonymousAccess(), FilePasswordDB("pass.dat")])
f = FTPFactory(p)
reactor.listenTCP(21, f)
reactor.run()
code很短,也很好架,python+code就結束
http server(from官網)
from twisted.web import server, resource
from twisted.internet import reactor, endpoints
class Counter(resource.Resource):
isLeaf = True
numberRequests = 0
def render_GET(self, request):
self.numberRequests += 1
request.setHeader(b"content-type", b"text/plain")
content = u"I am request #{}\n".format(self.numberRequests)
return content.encode("ascii")
endpoints.serverFromString(reactor, "tcp:8080").listen(server.Site(Counter()))
reactor.run()
其他還有mail, ssh, reverse-proxy等等
不過我看不懂要怎麼用,都是用範例去改
所以我都是需要什麼用twisted what-i-want
去找
範例在source code的docs各個項目中的example
有教學,Twisted Introduction也有中文的
怪怪的ftp
之前把ftp server用好後,無法重現ftp傳檔的bug,但是vsftpd可以,十分的詭異
bug是連vpn用ftp經過router過一段時間就會停止傳輸最後timeout,但是用twisted的http server可以重現
ngrok
方便建https,不然要自己用public ip與reverse proxy與ssl證書(好麻煩),ngrok只要三步就搞定了
- 載ngrok的執行檔
- 辦帳號拿token
./ngrok authtoken your-token
登入./ngrok proto port
- proto支援http, tls, tcp
- port就是server的port
- 之後terminal就會顯示網址,就可以連以及有https