Files
herolib/lib/osal/rsync/rsyncd.v
2024-12-25 08:40:56 +01:00

61 lines
1.3 KiB
V

module rsync
pub struct RsyncD {
pub mut:
configpath string = '/etc/rsyncd.conf'
sites []RsyncSite
usermanager UserManager
}
@[params]
pub struct RsyncSite {
pub mut:
name string
path string
comment string
readonly bool
list bool
auth string
secrets string
}
pub fn rsyncd() !RsyncD {
mut um := usermanager()!
mut self := RsyncD{
usermanager: um
}
self.load()!
return self
}
// add site to the rsyncd config
pub fn (mut self RsyncD) site_add(args_ RsyncSite) ! {
_ := args_
// self.sites[args.name]=RsyncSite{name:args.name,}
}
// get all info from existing config file, populate the sites
pub fn (mut self RsyncD) load() ! {
// TODO: check rsync is installed if not use osal package manager to install
// TODO: populate sites in the struct
}
pub fn (mut self RsyncD) generate() ! {
// TODO: generate a new config file (based on previous info on disk as well as new one)
// TODO: make sure we can add more than 1 user to the user manager
self.reload()!
}
fn (mut self RsyncD) reload() ! {
_ := '
chmod 600 /etc/rsyncd.secrets
systemctl enable rsync
systemctl start rsync
'
// TODO: execute, maybe we should check its on linux and there is a systemd active, also prob we need to see if we need to start or restart
// TODO: we should do a test using rsync
}