网络磁盘的好处,在于你可以随时随地,任何一台电脑上修改自己的文件。
首先,我利用Pi3在家中,利用电信宽带,安装好webdav的服务。
我已经申请好了外网IP。它是动态IP,于是申请绑定了域名。
在win10系统中“添加一个网络位置”即可。
为了简单,放弃了安全问题,程序是http服务。所以需要让win10的webdav同时支持http和https:
1 打开注册表编辑器 regedit
2 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters位置,修改BasicAuthLevel 值改成2
3 重启服务:
net stop webclient
net start webclient
// 简单的webdav服务,开放当前目录,密码在程序中
package main
import (
"flag"
"fmt"
"golang.org/x/net/webdav"
"net/http"
)
func main() {
var addr *string
var path *string
//
addr = flag.String("addr", ":8282", "")
path = flag.String("path", ".", "")
flag.Parse()
fs := &webdav.Handler{
FileSystem: webdav.Dir(*path),
LockSystem: webdav.NewMemLS(),
}
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
// 获取用户名/密码
username, password, ok := req.BasicAuth()
if !ok {
w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`)
w.WriteHeader(http.StatusUnauthorized)
return
}
// 验证用户名/密码
if username != "user" || password != "mima" {
http.Error(w, "WebDAV: need authorized!", http.StatusUnauthorized)
return
}
fs.ServeHTTP(w, req)
})
fmt.Println("addr=", *addr, ", path=", *path)
http.ListenAndServe(*addr, nil)
}