1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- return function (connection, req, args)
- dofile('httpserver-header.lc')(connection, 200, 'html')
- if req.method == 'POST' then
- --print('POST method')
- local rd = req.getRequestData()
- --print(node.heap())
- collectgarbage()
- --print(node.heap())
- if rd['action'] == 'list' then
- print('retrieve file list')
- local l, filelist, n, s, ok, json
- l = file.list()
- filelist = {}
- for n, s in pairs(l) do
- if ((string.sub(n, -3) ~= '.gz') and (string.sub(n, -3) ~= '.lc')) then
- filelist[n] = s
- end
- end
- ok, json = pcall(sjson.encode, filelist)
- if ok then
- --print(json)
- connection:send(json)
- else
- --print("failed to encode!")
- end
- elseif rd['action'] == 'load' then
- print('load file: '..rd['filename'])
- file.open(rd['filename'], 'r')
- local buffer = file.read()
- while buffer ~= nil do
- connection:send(buffer)
- buffer = file.read()
- end
- file.close()
- elseif rd['action'] == 'save' then
- --print('save file: '..rd['filename'])
- local data = rd['data']
- file.open(rd['filename'], 'w+')
- file.write(data)
- file.close()
- connection:send('initial write: ' .. string.len(data))
- elseif rd['action'] == 'append' then
- --print('append file: '..rd['filename'])
- local data = rd['data']
- file.open(rd['filename'], 'a+')
- file.seek('end')
- file.write(data)
- file.close()
- connection:send('Append: '..string.len(data))
- elseif rd['action'] == 'compile' then
- --print('compile file: '..rd['filename'])
- node.compile(rd['filename'])
- local compiledfile = string.sub(rd['filename'], 1, -5)..'.lc'
- connection:send('Compiled file: <a href="'..compiledfile..'?" target="_blank">'..compiledfile..'</a>')
- elseif rd['action'] == 'new' then
- --print('create new file')
- local i = 1
- local f = 'new'..i..'.lua'
- -- find a new file name
- while file.open(f, 'r') do
- file.close()
- i = i + 1
- f = 'new'..i..'.lua'
- end
- file.open(f, 'w+')
- file.close()
- connection:send('Created file: '..f)
- elseif rd['action'] == 'rename' then
- --print('rename file from "'..rd['filename']..'" to "'..rd['newfilename']..'"')
- file.rename(rd['filename'], rd['newfilename'])
- connection:send('Renamed file from "'..rd['filename']..'" to "'..rd['newfilename']..'"')
- elseif rd['action'] == 'delete' then
- --print('deleted file: '..rd['filename'])
- file.remove(rd['filename'])
- connection:send('Deleted file: '..rd['filename'])
- end
- end
- collectgarbage()
- end
|