package Ġlinux phone builds Ċ Ċ import Ġcom . j craft . js ch .* Ċ import Ġjava . io . File Ċ Ċ class ĠS ftp Tool Ġ{ ĊĠĠĠ Ġfun Ġupload To SF TP ( host : ĠString , Ġusername : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjs ch Ġ= ĠJS ch () ĊĠĠĠĠĠĠĠ Ġval Ġsession : ĠSession ? ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= Ġjs ch . getSession ( username , Ġhost , Ġ 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . set Config (" Strict Host Key Checking ", Ġ" no ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . set Password ( password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel : ĠChannel Ġ= Ġsession . open Channel (" sf tp ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs ftp Channel Ġ= Ġchannel Ġas ĠChannel S ftp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs ftp Channel . cd Or Mk dir (" linux command library ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs ftp Channel . cd Or Mk dir (" linux phone ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" feeds "). list Files ()?. forEach Ġ{ Ġdirectory Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ftp Channel . cd Or Mk dir ( directory . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . canonical File . list Files ()?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ftp Channel . put ( it . absolute Path , Ġit . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ftp Channel . cd (" .. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs ftp Channel . exit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . disconnect () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJS ch Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠS ftp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠChannel S ftp . cd Or Mk dir ( folder : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcd ( folder ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠS ftp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmkdir ( folder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcd ( folder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }