github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/fs/rc/rc.go (about) 1 // Package rc implements a remote control server and registry for rclone 2 // 3 // To register your internal calls, call rc.Add(path, function). Your 4 // function should take ane return a Param. It can also return an 5 // error. Use rc.NewError to wrap an existing error along with an 6 // http response type if another response other than 500 internal 7 // error is required on error. 8 package rc 9 10 import ( 11 "encoding/json" 12 "io" 13 _ "net/http/pprof" // install the pprof http handlers 14 "time" 15 16 "github.com/rclone/rclone/cmd/serve/httplib" 17 ) 18 19 // Options contains options for the remote control server 20 type Options struct { 21 HTTPOptions httplib.Options 22 Enabled bool // set to enable the server 23 Serve bool // set to serve files from remotes 24 Files string // set to enable serving files locally 25 NoAuth bool // set to disable auth checks on AuthRequired methods 26 WebUI bool // set to launch the web ui 27 WebGUIUpdate bool // set to check new update 28 WebGUIForceUpdate bool // set to force download new update 29 WebGUINoOpenBrowser bool // set to disable auto opening browser 30 WebGUIFetchURL string // set the default url for fetching webgui 31 AccessControlAllowOrigin string // set the access control for CORS configuration 32 EnableMetrics bool // set to disable prometheus metrics on /metrics 33 JobExpireDuration time.Duration 34 JobExpireInterval time.Duration 35 } 36 37 // DefaultOpt is the default values used for Options 38 var DefaultOpt = Options{ 39 HTTPOptions: httplib.DefaultOpt, 40 Enabled: false, 41 JobExpireDuration: 60 * time.Second, 42 JobExpireInterval: 10 * time.Second, 43 } 44 45 func init() { 46 DefaultOpt.HTTPOptions.ListenAddr = "localhost:5572" 47 } 48 49 // WriteJSON writes JSON in out to w 50 func WriteJSON(w io.Writer, out Params) error { 51 enc := json.NewEncoder(w) 52 enc.SetIndent("", "\t") 53 return enc.Encode(out) 54 }