in core/src/services/sftp/backend.rs [141:189]
fn build(&mut self) -> Result<Self::Accessor> {
debug!("sftp backend build started: {:?}", &self);
let endpoint = match self.endpoint.clone() {
Some(v) => v,
None => return Err(Error::new(ErrorKind::ConfigInvalid, "endpoint is empty")),
};
let user = match self.user.clone() {
Some(v) => v,
None => return Err(Error::new(ErrorKind::ConfigInvalid, "user is empty")),
};
let root = self
.root
.clone()
.map(|r| normalize_root(r.as_str()))
.unwrap_or_default();
let known_hosts_strategy = match &self.known_hosts_strategy {
Some(v) => {
let v = v.to_lowercase();
if v == "strict" {
KnownHosts::Strict
} else if v == "accept" {
KnownHosts::Accept
} else if v == "add" {
KnownHosts::Add
} else {
return Err(Error::new(
ErrorKind::ConfigInvalid,
format!("unknown known_hosts strategy: {}", v).as_str(),
));
}
}
None => KnownHosts::Strict,
};
debug!("sftp backend finished: {:?}", &self);
Ok(SftpBackend {
endpoint,
root,
user,
key: self.key.clone(),
known_hosts_strategy,
copyable: self.enable_copy,
client: tokio::sync::OnceCell::new(),
})
}