Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. local side='front' -- Rednet modem/wire
  2.  
  3. -- Dont change this!
  4. local server=nil;
  5. local servername='';
  6. errorMsg={'Unable to connect','Unable to get directory listing',''}
  7. leave=false
  8. function err(num)
  9. return 'ERROR '..num..' '..errorMsg[num]
  10. end
  11.  
  12. function ls(dir)
  13. if dir==nil then
  14. dir=cdir
  15. else
  16. dir=cdir..dir
  17. end
  18. rednet.send(server, 'ftp:'..servername..':ls:'..dir)
  19. id,value=rednet.receive(10)
  20. if value==nil then
  21. value=err(2)
  22. end
  23. print(value)
  24. end
  25. function get(file)
  26. if file==nil then
  27. print("No File Specified! Aborting!")
  28. else
  29. rednet.send(server, 'ftp:'..servername..':get:'..cdir..file)
  30. id,value=rednet.receive(10)
  31. if value==nil or value=='File Not Found' then
  32. print('File Not Found')
  33. else
  34. write('Downloading... ')
  35. file=fs.open('/'..fs.getName(file),'w')
  36. file.write(value)
  37. file.close()
  38. print('DONE')
  39. print('File saved')
  40. end
  41. end
  42. end
  43. function send(file)
  44. if file==nil then
  45. print("No File Specified! Aborting!")
  46. else
  47. rednet.send(server, 'ftp:'..servername..':set:'..cdir..file)
  48. id,value=rednet.receive(10)
  49. if value==nil then
  50. print('No reply from server')
  51. else
  52. if value=='OK' then
  53. write('File accepted.\n Sending... ')
  54. file=fs.open('/'..fs.getName(file),'r')
  55. rednet.send(server,file.readAll())
  56. file.close()
  57. print('DONE')
  58. print('File sent.')
  59. end
  60. end
  61. end
  62. end
  63. function close(unused)
  64. leave=true
  65. end
  66. function split(pString, pPattern)
  67. local Table = {} -- NOTE: use {n = 0} in Lua-5.0
  68. local fpat = "(.-)" .. pPattern
  69. local last_end = 1
  70. local s, e, cap = pString:find(fpat, 1)
  71. while s do
  72. if s ~= 1 or cap ~= "" then
  73. table.insert(Table,cap)
  74. end
  75. last_end = e+1
  76. s, e, cap = pString:find(fpat, last_end)
  77. end
  78. if last_end <= #pString then
  79. cap = pString:sub(last_end)
  80. table.insert(Table, cap)
  81. end
  82. return Table
  83. end
  84. cdir=''
  85. com={exit=close,ls=ls,get=get,send=send}
  86. rednet.open(side)
  87. print('CraftFTP Client 0.2')
  88. write('Please enter a server: ')
  89. res=io.read()
  90. servername=res
  91. rednet.broadcast('ftp:'..res..':id')
  92. res=rednet.receive(10)
  93. if res==nil then
  94. print(err(1))
  95. else
  96. server=res
  97. print('Connected!')
  98. while not leave do
  99. write('\nFTP:'..cdir..'>')
  100. res=io.read()
  101. res=split(res,' ')
  102. c=com[res[1]]
  103. c(res[2])
  104. --[[if res[1]=='exit' then
  105. break
  106. elseif res[1]=='ls' then
  107. ls(res[2])
  108. elseif res[1]=='get' then
  109. get(res[2])
  110. end]]
  111. end
  112. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement