Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
94
Merge Requests
10
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
9a6c83ca
authored
Jan 30, 2013
by
Őry Máté
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
store: refactor commands to functions
parent
5cdd5412
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
114 additions
and
98 deletions
+114
-98
miscellaneous/store-server/CloudStore.py
+114
-98
No files found.
miscellaneous/store-server/CloudStore.py
View file @
9a6c83ca
...
@@ -44,6 +44,8 @@ def neptun_GET(neptun):
...
@@ -44,6 +44,8 @@ def neptun_GET(neptun):
statistics
=
getQuotaStatus
(
neptun
)
statistics
=
getQuotaStatus
(
neptun
)
return
{
'Used'
:
statistics
[
0
],
'Soft'
:
statistics
[
1
],
'Hard'
:
statistics
[
2
]}
return
{
'Used'
:
statistics
[
0
],
'Soft'
:
statistics
[
1
],
'Hard'
:
statistics
[
2
]}
COMMANDS
=
{}
@route
(
'/<neptun>'
,
method
=
'POST'
)
@route
(
'/<neptun>'
,
method
=
'POST'
)
def
neptun_POST
(
neptun
):
def
neptun_POST
(
neptun
):
# Check if user avaiable (home folder ready)
# Check if user avaiable (home folder ready)
...
@@ -51,106 +53,120 @@ def neptun_POST(neptun):
...
@@ -51,106 +53,120 @@ def neptun_POST(neptun):
if
os
.
path
.
exists
(
home_path
)
!=
True
:
if
os
.
path
.
exists
(
home_path
)
!=
True
:
abort
(
401
,
'The requested user does not exist!'
)
abort
(
401
,
'The requested user does not exist!'
)
else
:
else
:
# Parse post
try
:
# LISTING
return
COMMANDS
[
request
.
json
[
'CMD'
]](
request
,
neptun
,
home_path
)
if
request
.
json
[
'CMD'
]
==
'LIST'
:
except
KeyError
:
list_path
=
home_path
+
request
.
json
[
'PATH'
]
abort
(
400
,
"Command not found!"
)
if
os
.
path
.
exists
(
list_path
)
!=
True
:
abort
(
404
,
"Path not found!"
)
else
:
# LISTING
return
list_directory
(
home_path
,
list_path
)
def
cmd_list
(
request
,
neptun
,
home_path
):
# DOWNLOAD LINK GENERATOR
list_path
=
home_path
+
request
.
json
[
'PATH'
]
elif
request
.
json
[
'CMD'
]
==
'DOWNLOAD'
:
if
os
.
path
.
exists
(
list_path
)
!=
True
:
dl_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
abort
(
404
,
"Path not found!"
)
dl_path
=
os
.
path
.
realpath
(
dl_path
)
else
:
if
not
dl_path
.
startswith
(
home_path
):
return
list_directory
(
home_path
,
list_path
)
abort
(
400
,
'Invalid download path.'
)
COMMANDS
[
'LIST'
]
=
cmd_list
dl_hash
=
str
(
uuid
.
uuid4
())
if
(
os
.
path
.
isfile
(
dl_path
)
):
# DOWNLOAD LINK GENERATOR
os
.
symlink
(
dl_path
,
ROOT_WWW_FOLDER
+
'/'
+
dl_hash
)
def
cmd_download
(
request
,
neptun
,
home_path
):
# Debug
dl_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
# redirect('http://store.cloud.ik.bme.hu:8080/dl/'+dl_hash)
dl_path
=
os
.
path
.
realpath
(
dl_path
)
return
json
.
dumps
({
'LINK'
:
SITE_URL
+
'/dl/'
+
dl_hash
})
if
not
dl_path
.
startswith
(
home_path
):
else
:
abort
(
400
,
'Invalid download path.'
)
try
:
dl_hash
=
str
(
uuid
.
uuid4
())
os
.
makedirs
(
TEMP_DIR
+
'/'
+
neptun
,
0700
)
if
(
os
.
path
.
isfile
(
dl_path
)
):
except
:
os
.
symlink
(
dl_path
,
ROOT_WWW_FOLDER
+
'/'
+
dl_hash
)
pass
# Debug
folder_name
=
os
.
path
.
basename
(
dl_path
)
# redirect('http://store.cloud.ik.bme.hu:8080/dl/'+dl_hash)
temp_path
=
TEMP_DIR
+
'/'
+
neptun
+
'/'
+
folder_name
+
'.zip'
return
json
.
dumps
({
'LINK'
:
SITE_URL
+
'/dl/'
+
dl_hash
})
with
open
(
os
.
devnull
,
"w"
)
as
fnull
:
else
:
# zip -rqDj vmi.zip /home/tarokkk/vpn-ik
try
:
result
=
subprocess
.
call
([
'/usr/bin/zip'
,
'-rqDj'
,
temp_path
,
dl_path
],
stdout
=
fnull
,
stderr
=
fnull
)
os
.
makedirs
(
TEMP_DIR
+
'/'
+
neptun
,
0700
)
os
.
symlink
(
temp_path
,
ROOT_WWW_FOLDER
+
'/'
+
dl_hash
)
except
:
return
json
.
dumps
({
'LINK'
:
SITE_URL
+
'/dl/'
+
dl_hash
})
pass
# UPLOAD
folder_name
=
os
.
path
.
basename
(
dl_path
)
elif
request
.
json
[
'CMD'
]
==
'UPLOAD'
:
temp_path
=
TEMP_DIR
+
'/'
+
neptun
+
'/'
+
folder_name
+
'.zip'
up_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
with
open
(
os
.
devnull
,
"w"
)
as
fnull
:
up_path
=
os
.
path
.
realpath
(
up_path
)
# zip -rqDj vmi.zip /home/tarokkk/vpn-ik
if
not
up_path
.
startswith
(
home_path
):
result
=
subprocess
.
call
([
'/usr/bin/zip'
,
'-rqDj'
,
temp_path
,
dl_path
],
stdout
=
fnull
,
stderr
=
fnull
)
abort
(
400
,
'Invalid upload path.'
)
os
.
symlink
(
temp_path
,
ROOT_WWW_FOLDER
+
'/'
+
dl_hash
)
if
os
.
path
.
exists
(
up_path
)
==
True
and
os
.
path
.
isdir
(
up_path
):
return
json
.
dumps
({
'LINK'
:
SITE_URL
+
'/dl/'
+
dl_hash
})
up_hash
=
str
(
uuid
.
uuid4
())
COMMANDS
[
'DOWNLOAD'
]
=
cmd_download
os
.
symlink
(
up_path
,
ROOT_WWW_FOLDER
+
'/'
+
up_hash
)
return
json
.
dumps
({
'LINK'
:
SITE_URL
+
'/ul/'
+
up_hash
})
# UPLOAD
else
:
def
cmd_upload
(
request
,
neptun
,
home_path
):
abort
(
400
,
'Upload directory not exists!'
)
up_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
# MOVE
up_path
=
os
.
path
.
realpath
(
up_path
)
elif
request
.
json
[
'CMD'
]
==
'MOVE'
:
if
not
up_path
.
startswith
(
home_path
):
src_path
=
home_path
+
'/'
+
request
.
json
[
'SOURCE'
]
abort
(
400
,
'Invalid upload path.'
)
dst_path
=
home_path
+
'/'
+
request
.
json
[
'DESTINATION'
]
if
os
.
path
.
exists
(
up_path
)
==
True
and
os
.
path
.
isdir
(
up_path
):
src_path
=
os
.
path
.
realpath
(
src_path
)
up_hash
=
str
(
uuid
.
uuid4
())
dst_path
=
os
.
path
.
realpath
(
dst_path
)
os
.
symlink
(
up_path
,
ROOT_WWW_FOLDER
+
'/'
+
up_hash
)
if
not
src_path
.
startswith
(
home_path
):
return
json
.
dumps
({
'LINK'
:
SITE_URL
+
'/ul/'
+
up_hash
})
abort
(
400
,
'Invalid source path.'
)
else
:
if
not
dst_path
.
startswith
(
home_path
):
abort
(
400
,
'Upload directory not exists!'
)
abort
(
400
,
'Invalid destination path.'
)
COMMANDS
[
'UPLOAD'
]
=
cmd_upload
if
os
.
path
.
exists
(
src_path
)
==
True
and
os
.
path
.
exists
(
dst_path
)
==
True
and
os
.
path
.
isdir
(
dst_path
)
==
True
:
shutil
.
move
(
src_path
,
dst_path
)
# MOVE
return
def
cmd_move
(
request
,
neptun
,
home_path
):
else
:
src_path
=
home_path
+
'/'
+
request
.
json
[
'SOURCE'
]
# TODO
dst_path
=
home_path
+
'/'
+
request
.
json
[
'DESTINATION'
]
abort
(
400
,
"Can not move the file."
)
src_path
=
os
.
path
.
realpath
(
src_path
)
# RENAME
dst_path
=
os
.
path
.
realpath
(
dst_path
)
elif
request
.
json
[
'CMD'
]
==
'RENAME'
:
if
not
src_path
.
startswith
(
home_path
):
src_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
abort
(
400
,
'Invalid source path.'
)
src_path
=
os
.
path
.
realpath
(
src_path
)
if
not
dst_path
.
startswith
(
home_path
):
if
not
src_path
.
startswith
(
home_path
):
abort
(
400
,
'Invalid destination path.'
)
abort
(
400
,
'Invalid source path.'
)
if
os
.
path
.
exists
(
src_path
)
==
True
and
os
.
path
.
exists
(
dst_path
)
==
True
and
os
.
path
.
isdir
(
dst_path
)
==
True
:
dst_path
=
os
.
path
.
dirname
(
src_path
)
+
'/'
+
request
.
json
[
'NEW_NAME'
]
shutil
.
move
(
src_path
,
dst_path
)
if
os
.
path
.
exists
(
src_path
)
==
True
:
return
os
.
rename
(
src_path
,
dst_path
)
else
:
else
:
# TODO
abort
(
404
,
"File or Folder not found!"
)
abort
(
400
,
"Can not move the file."
)
COMMANDS
[
'MOVE'
]
=
cmd_move
# RENAME
def
cmd_rename
(
request
,
neptun
,
home_path
):
src_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
src_path
=
os
.
path
.
realpath
(
src_path
)
if
not
src_path
.
startswith
(
home_path
):
abort
(
400
,
'Invalid source path.'
)
dst_path
=
os
.
path
.
dirname
(
src_path
)
+
'/'
+
request
.
json
[
'NEW_NAME'
]
if
os
.
path
.
exists
(
src_path
)
==
True
:
os
.
rename
(
src_path
,
dst_path
)
else
:
abort
(
404
,
"File or Folder not found!"
)
COMMANDS
[
'RENAME'
]
=
cmd_rename
# NEW FOLDER
def
cmd_new_folder
(
request
,
neptun
,
home_path
):
dir_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
dir_path
=
os
.
path
.
realpath
(
dir_path
)
if
not
dir_path
.
startswith
(
home_path
):
abort
(
400
,
'Invalid directory path.'
)
if
os
.
path
.
exists
(
dir_path
)
==
True
:
abort
(
400
,
"Directory already exist!"
)
else
:
os
.
mkdir
(
dir_path
,
0755
)
COMMANDS
[
'NEW_FOLDER'
]
=
cmd_new_folder
# REMOVE
def
cmd_remove
(
request
,
neptun
,
home_path
):
remove_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
remove_path
=
os
.
path
.
realpath
(
remove_path
)
if
not
remove_path
.
startswith
(
home_path
):
abort
(
400
,
'Invalid path.'
)
if
os
.
path
.
exists
(
remove_path
)
!=
True
:
abort
(
404
,
"Path not found!"
)
else
:
if
os
.
path
.
isdir
(
remove_path
)
==
True
:
shutil
.
rmtree
(
remove_path
)
return
return
# NEW FOLDER
elif
request
.
json
[
'CMD'
]
==
'NEW_FOLDER'
:
dir_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
dir_path
=
os
.
path
.
realpath
(
dir_path
)
if
not
dir_path
.
startswith
(
home_path
):
abort
(
400
,
'Invalid directory path.'
)
if
os
.
path
.
exists
(
dir_path
)
==
True
:
abort
(
400
,
"Directory already exist!"
)
else
:
os
.
mkdir
(
dir_path
,
0755
)
return
# REMOVE
elif
request
.
json
[
'CMD'
]
==
'REMOVE'
:
remove_path
=
home_path
+
'/'
+
request
.
json
[
'PATH'
]
remove_path
=
os
.
path
.
realpath
(
remove_path
)
if
not
remove_path
.
startswith
(
home_path
):
abort
(
400
,
'Invalid path.'
)
if
os
.
path
.
exists
(
remove_path
)
!=
True
:
abort
(
404
,
"Path not found!"
)
else
:
if
os
.
path
.
isdir
(
remove_path
)
==
True
:
shutil
.
rmtree
(
remove_path
)
return
else
:
os
.
remove
(
remove_path
)
return
else
:
else
:
abort
(
400
,
"Command not found!"
)
os
.
remove
(
remove_path
)
return
COMMANDS
[
'REMOVE'
]
=
cmd_remove
@route
(
'/set/<neptun>'
,
method
=
'POST'
)
@route
(
'/set/<neptun>'
,
method
=
'POST'
)
def
set_keys
(
neptun
):
def
set_keys
(
neptun
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment