我需要使用python deamon app来强化(使用torsocks) 在macos上测试一切正常,在linux上我有这个错误:
package main
import (
"log"
"strconv"
"net/http"
"strings"
)
func AddProduct(w http.ResponseWriter, r *http.Request) {
c := strings.Split(strings.Trim(r.URL.Path, "/"), "/")
switch {
case len(c) == 2:
// GET product/{id}
if r.Method != "GET" && r.Method != "HEAD" {
http.Error(w, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
return
}
id, err := strconv.Atoi(c[1])
if err != nil {
break
}
// implementation
return
case len(c) == 3 && c[2] == "item":
// POST product/{id}/item
if r.Method != "POST" {
http.Error(w, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
return
}
id, err := strconv.Atoi(c[1])
if err != nil {
break
}
// implementation
return
case len(c) == 4 && c[2] == "item":
// GET product/{id}/item/{itemID}
if r.Method != "GET" && r.Method != "HEAD" {
http.Error(w, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
return
}
id, err := strconv.Atoi(c[1])
if err != nil {
break
}
itemID, err := strconv.Atoi(c[3])
if err != nil {
break
}
// implementation
return
}
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
}
func main() {
http.HandleFunc("/product/", AddProduct)
log.Fatal(http.ListenAndServe(":8080", nil))
}
我应该调查什么?
答案 0 :(得分:1)
我的补丁已被Torsocks源代码接受。如果遇到不受支持的syscall 217错误,请获取最新的Torsocks代码:https://gitweb.torproject.org/torsocks.git。
如果在其他不受支持的系统调用中遇到错误,请在Bugtracker上添加票证: https://trac.torproject.org/projects/tor/newticket
最近开发了一个补丁,以使Torsock完全支持该系统调用(217:getdents64)。该补丁尚未被主版本接受,但是您可以自己轻松构建它。只需克隆以下git repo:https://github.com/seisvelas/torsocks并按照构建说明进行操作即可。
该补丁应该(希望)很快成为官方躯干的一部分。您可以在以下跟踪器上查看错误报告: https://trac.torproject.org/projects/tor/ticket/28861
如果您想知道为什么会发生这种情况,那是因为Torsocks列出了允许进行系统调用的白名单。希望Torsock的第3版应该通过使用seccomp / pledge解决此问题,但目前非常处于开发初期。同时,可以将不代表安全问题的系统调用手动添加到白名单中。由于getdents和getdents64(后者是向OP发出问题的系统调用)对我来说似乎没有问题,因此我开发了链接补丁,目前正在等待将其接受到主要的Torsocks代码库中。