MCPcopy Index your code
hub / github.com/bytesizedhosting/bcd / Install

Method Install

plugins/syncthing/syncthing.go:47–121  ·  view source on GitHub ↗
(opts *SyncthingOpts)

Source from the content-addressed store, hash-verified

45}
46
47func (self *Syncthing) Install(opts *SyncthingOpts) error {
48 var err error
49 err = opts.SetDefault(self.Name)
50 if err != nil {
51 return err
52 }
53
54 var ports []string
55
56 for i := 0; i < 3; i++ {
57 p, err := core.GetFreePort()
58 if err != nil {
59 return err
60 }
61 ports = append(ports, p)
62 }
63
64 opts.hashPassword()
65
66 log.WithFields(log.Fields{
67 "plugin": self.Name,
68 "data_folder": opts.DataFolder,
69 "config_folder": opts.ConfigFolder,
70 "username": opts.Username,
71 "password": opts.Password,
72 "encrypted_password": opts.EncPassword,
73 }).Debug("Syncthing options")
74
75 err = os.MkdirAll(opts.ConfigFolder, 0755)
76 if err != nil {
77 return err
78 }
79
80 err = self.WriteTemplate("plugins/syncthing/data/config.xml", opts.ConfigFolder+"/config.xml", opts)
81 if err != nil {
82 return err
83 }
84
85 log.Debugln("Pulling docker image", self.imageName)
86 err = self.DockerClient.PullImage(docker.PullImageOptions{Repository: self.imageName}, docker.AuthConfiguration{})
87 if err != nil {
88 return err
89 }
90
91 portBindings := map[docker.Port][]docker.PortBinding{
92 "8384/tcp": []docker.PortBinding{docker.PortBinding{HostPort: opts.WebPort}},
93 "22000/tcp": []docker.PortBinding{docker.PortBinding{HostPort: ports[1]}},
94 "21025/udp": []docker.PortBinding{docker.PortBinding{HostPort: ports[2]}},
95 }
96
97 hostConfig := docker.HostConfig{
98 PortBindings: portBindings,
99 Binds: plugins.DefaultBindings(opts),
100 }
101
102 conf := docker.Config{Env: []string{"PUID=" + opts.User.Uid}, Image: self.imageName}
103
104 log.Infoln("Creating docker container")

Callers

nothing calls this directly

Calls 3

SetDefaultMethod · 0.80
WriteTemplateMethod · 0.80
hashPasswordMethod · 0.45

Tested by

no test coverage detected