Commit 83fcd17c by Dányi Bence

Merge branch 'master' of ssh://giccero.cloud.ik.bme.hu/cloud

parents 949ba8a0 4216ec58
...@@ -25,4 +25,5 @@ urlpatterns = patterns('', ...@@ -25,4 +25,5 @@ urlpatterns = patterns('',
url(r'^reload/$', 'firewall.views.reload_firewall', name='reload_firewall'), url(r'^reload/$', 'firewall.views.reload_firewall', name='reload_firewall'),
url(r'^fwapi/$', 'firewall.views.firewall_api', name='firewall_api'), url(r'^fwapi/$', 'firewall.views.firewall_api', name='firewall_api'),
url(r'^store/$', 'store.views.index', name='store_index'), url(r'^store/$', 'store.views.index', name='store_index'),
url(r'^store/top/$', 'store.views.toplist', name='store_top'),
) )
...@@ -168,6 +168,17 @@ def cmd_remove(request, neptun, home_path): ...@@ -168,6 +168,17 @@ def cmd_remove(request, neptun, home_path):
return return
COMMANDS['REMOVE'] = cmd_remove COMMANDS['REMOVE'] = cmd_remove
def cmd_toplist(request, neptun, home_path):
d = []
try:
top_dir = os.path.normpath(os.path.join(home_path, "../.top"))
d = [file_dict(os.readlink(os.path.join(top_dir, f)), home_path)
for f in os.listdir(top_dir)]
except:
pass
return json.dumps(sorted(d, key=lambda f: f['MTIME']))
COMMANDS['TOPLIST'] = cmd_toplist
@route('/set/<neptun>', method='POST') @route('/set/<neptun>', method='POST')
def set_keys(neptun): def set_keys(neptun):
key_list = [] key_list = []
...@@ -247,13 +258,14 @@ def upload(hash_num): ...@@ -247,13 +258,14 @@ def upload(hash_num):
# TODO setuid subcommand # TODO setuid subcommand
# Check if file exist (root can overwrite anything not safe) # Check if file exist (root can overwrite anything not safe)
f = open(up_path , 'wb') f = open(up_path , 'wb')
os.chown(up_path, getpwnam(username).pw_uid, getpwnam(username).pw_gid)
os.chmod(up_path, 0644)
f.close()
with open(up_path , 'wb') as f:
datalength = 0 datalength = 0
for chunk in fbuffer(file_data.file): for chunk in fbuffer(file_data.file):
f.write(chunk) f.write(chunk)
datalength += len(chunk) datalength += len(chunk)
f.close()
os.chown(up_path, getpwnam(username).pw_uid, getpwnam(username).pw_gid)
os.chmod(up_path, 0644)
return 'Upload finished: '+file_name+' - '+str(datalength)+' Byte' return 'Upload finished: '+file_name+' - '+str(datalength)+' Byte'
...@@ -304,18 +316,21 @@ def list_directory(home, path): ...@@ -304,18 +316,21 @@ def list_directory(home, path):
return json.dumps((os.path.basename(path), 'F', os.path.getsize(path), os.path.getmtime(path))) return json.dumps((os.path.basename(path), 'F', os.path.getsize(path), os.path.getmtime(path)))
# List directory and return list # List directory and return list
else: else:
tuplelist = []
filelist = os.listdir(path) filelist = os.listdir(path)
# Add type support dictlist = [file_dict(os.path.join(path, f), home) for f in filelist]
for item in filelist: return json.dumps(dictlist)
static_route = path+"/"+item
if os.path.isdir(static_route): def file_dict(path, home):
basename = os.path.basename(path.rstrip('/'))
if os.path.isdir(path):
is_dir = 'D' is_dir = 'D'
else: else:
is_dir = 'F' is_dir = 'F'
element = { 'NAME' : item, 'TYPE' : is_dir, 'SIZE' : os.path.getsize(static_route)/1024, 'MTIME' : os.path.getmtime(static_route) } return {'NAME': basename,
tuplelist.append(element) 'TYPE': is_dir,
return json.dumps(tuplelist) 'SIZE': os.path.getsize(path)/1024,
'MTIME': os.path.getmtime(path),
'DIR': os.path.relpath(os.path.dirname(path), home)}
def getQuotaStatus(neptun): def getQuotaStatus(neptun):
output=subprocess.check_output([ROOT_BIN_FOLDER+'/'+USER_MANAGER, 'status', neptun], stderr=subprocess.STDOUT) output=subprocess.check_output([ROOT_BIN_FOLDER+'/'+USER_MANAGER, 'status', neptun], stderr=subprocess.STDOUT)
......
...@@ -76,6 +76,18 @@ class StoreApi: ...@@ -76,6 +76,18 @@ class StoreApi:
else: else:
raise Http404 raise Http404
@staticmethod @staticmethod
def toplist(neptun):
url = settings['store_url']+'/'+neptun
payload = json.dumps({ 'CMD' : 'TOPLIST'})
r = StoreApi.post_request(url, payload)
if r.status_code == requests.codes.ok:
tupplelist = json.loads(r.content)
for item in tupplelist:
item['MTIME'] = time.ctime(item['MTIME'])
return tupplelist
else:
raise Http404
@staticmethod
def requestdownload(neptun, path): def requestdownload(neptun, path):
url = settings['store_url']+'/'+neptun url = settings['store_url']+'/'+neptun
payload = json.dumps({ 'CMD' : 'DOWNLOAD', 'PATH' : path }) payload = json.dumps({ 'CMD' : 'DOWNLOAD', 'PATH' : path })
......
...@@ -66,6 +66,13 @@ def index(request): ...@@ -66,6 +66,13 @@ def index(request):
file_list = StoreApi.listfolder(user,path) file_list = StoreApi.listfolder(user,path)
return render_to_response('store/list.html', RequestContext(request, {'file_list': file_list, 'path' : path, 'backpath' : backpath, 'username' : user})) return render_to_response('store/list.html', RequestContext(request, {'file_list': file_list, 'path' : path, 'backpath' : backpath, 'username' : user}))
@login_required
def toplist(request):
user = request.user.username
path = backpath = '/'
file_list = StoreApi.toplist(user)
return render_to_response('store/list.html', RequestContext(request, {'file_list': file_list, 'path' : path, 'backpath' : backpath, 'username' : user}))
def logout(request): def logout(request):
auth.logout(request) auth.logout(request)
return redirect('/') return redirect('/')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment