|
@ -75,7 +75,6 @@ proc listDir(filename : string) : seq[FileStat] = |
|
|
let filenameLen : string = filename.len.uint32.unrollBytes |
|
|
let filenameLen : string = filename.len.uint32.unrollBytes |
|
|
|
|
|
|
|
|
var dirents : seq[FileStat] = @[] |
|
|
var dirents : seq[FileStat] = @[] |
|
|
|
|
|
|
|
|
var dirent : string |
|
|
var dirent : string |
|
|
var status : string |
|
|
var status : string |
|
|
|
|
|
|
|
@ -145,7 +144,7 @@ proc recvFile(filename : string) : Option[string] = |
|
|
socket.close() |
|
|
socket.close() |
|
|
return some(buf) |
|
|
return some(buf) |
|
|
|
|
|
|
|
|
proc statFile(filename : string) : FileStat = |
|
|
proc statFile(filename : string) : Option[FileStat] = |
|
|
# Enter sync mode |
|
|
# Enter sync mode |
|
|
let socket : Socket = syncMode() |
|
|
let socket : Socket = syncMode() |
|
|
|
|
|
|
|
@ -162,18 +161,41 @@ proc statFile(filename : string) : FileStat = |
|
|
|
|
|
|
|
|
socket.close() |
|
|
socket.close() |
|
|
|
|
|
|
|
|
FileStat(androidFileName: filename, |
|
|
if (fileMode != 0 and fileSize != 0): |
|
|
|
|
|
some(FileStat(androidFileName: filename, |
|
|
androidFileMode: fileMode, |
|
|
androidFileMode: fileMode, |
|
|
androidFileSize: fileSize, |
|
|
androidFileSize: fileSize, |
|
|
androidFileModified: fileCreated) |
|
|
androidFileModified: fileCreated)) |
|
|
|
|
|
else: |
|
|
|
|
|
none(FileStat) |
|
|
|
|
|
|
|
|
proc adbPull(filename : string) : AndroidFile = |
|
|
proc sendFile(buf : string, filename : string) : bool = |
|
|
let stat = filename.statFile |
|
|
let stat = filename.statFile |
|
|
|
|
|
|
|
|
|
|
|
if stat.isSome: |
|
|
|
|
|
# never overwrite files |
|
|
|
|
|
# TODO add optional parameter to disable this |
|
|
|
|
|
return false |
|
|
|
|
|
|
|
|
|
|
|
let fileMode = fromOct[int]("0771") |
|
|
|
|
|
|
|
|
|
|
|
let remoteFileName = fmt"{filename},{fileMode}" |
|
|
|
|
|
|
|
|
|
|
|
echo remoteFileName |
|
|
|
|
|
|
|
|
|
|
|
return true |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proc adbPull(filename : string) : Option[AndroidFile] = |
|
|
|
|
|
let stat = filename.statFile |
|
|
|
|
|
if stat.isNone: |
|
|
|
|
|
return none(AndroidFile) |
|
|
|
|
|
|
|
|
let fileBlob = filename.recvFile.get("") |
|
|
let fileBlob = filename.recvFile.get("") |
|
|
|
|
|
|
|
|
AndroidFile(androidFileName: filename, |
|
|
some(AndroidFile(androidFileName: filename, |
|
|
androidFileStat: stat, |
|
|
androidFileStat: stat.get, |
|
|
androidFile: fileBlob) |
|
|
androidFile: fileBlob)) |
|
|
|
|
|
|
|
|
proc sendAdb(payload : string) : string = |
|
|
proc sendAdb(payload : string) : string = |
|
|
var socket = adbConnect() |
|
|
var socket = adbConnect() |
|
@ -209,7 +231,9 @@ discard execCmd("adb start-server") |
|
|
|
|
|
|
|
|
#stdout.write adbPull("/etc/hosts").repr |
|
|
#stdout.write adbPull("/etc/hosts").repr |
|
|
|
|
|
|
|
|
echo listDir("/etc").map(proc(f: FileStat) : string = f.androidFileName) |
|
|
#echo listDir("/etc").map(proc(f: FileStat) : string = f.androidFileName) |
|
|
|
|
|
|
|
|
|
|
|
echo sendFile("", "/storage/7AFD-17E3/test2.opus") |
|
|
|
|
|
|
|
|
#discard rebootPhone() |
|
|
#discard rebootPhone() |
|
|
|
|
|
|
|
|