Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.toolbox
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
slapos.toolbox
Commits
c3ad77a6
Commit
c3ad77a6
authored
Oct 12, 2012
by
Marco Mariani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pylint-ified
parent
29e73bc9
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
78 additions
and
66 deletions
+78
-66
decorators.py
slapos/runner/decorators.py
+1
-0
fileBrowser.py
slapos/runner/fileBrowser.py
+1
-1
gittools.py
slapos/runner/gittools.py
+3
-1
runnertest.py
slapos/runner/runnertest.py
+25
-19
utils.py
slapos/runner/utils.py
+35
-35
views.py
slapos/runner/views.py
+13
-10
No files found.
slapos/runner/decorators.py
View file @
c3ad77a6
# -*- coding: utf-8 -*-
# vim: set et sts=2:
#pylint: disable-all
import
json
...
...
slapos/runner/fileBrowser.py
View file @
c3ad77a6
...
...
@@ -14,7 +14,7 @@ import werkzeug
from
slapos.runner.utils
import
realpath
,
tail
,
isText
class
f
ileBrowser
(
object
):
class
F
ileBrowser
(
object
):
"""This class contain all bases function for file browser"""
def
__init__
(
self
,
config
):
...
...
slapos/runner/gittools.py
View file @
c3ad77a6
# -*- coding: utf-8 -*-
# vim: set et sts=2:
# pylint: disable-msg=W0311,C0301,C0103,C0111
import
os
import
re
...
...
@@ -163,5 +165,5 @@ def gitPull(project):
def
safeResult
(
result
):
"""Parse string and remove credential of the user"""
regex
=
re
.
compile
(
"(https:
\
/
\
/)([
\
w
\
d
\
._-]+:[
\
w
\
d
\
._-]+)
\
@([
\
S]+
\
s)"
,
re
.
VERBOSE
)
regex
=
re
.
compile
(
"(https:
\
/
\
/)([
\
w
\
d
\
._-]+:[
\
w
\
d
\
._-]+)
\
@([
\
S]+
\
s)"
,
re
.
VERBOSE
)
return
regex
.
sub
(
r'\1\3'
,
result
)
slapos/runner/runnertest.py
View file @
c3ad77a6
# -*- coding: utf-8 -*-
# vim: set et sts=2:
# pylint: disable-msg=W0311,C0301,C0103,C0111,R0904
import
ConfigParser
import
datetime
...
...
@@ -12,8 +13,18 @@ from slapos.runner.utils import (getProfilePath, getSession, isInstanceRunning,
recursifKill
,
startProxy
)
from
slapos.runner
import
views
#Helpers
def
loadJson
(
response
):
return
json
.
loads
(
response
.
data
)
class
Config
:
def
__init__
(
self
):
self
.
runner_workdir
=
None
self
.
software_root
=
None
self
.
instance_root
=
None
self
.
configuration_file_path
=
None
def
setConfig
(
self
):
"""
Set options given by parameters.
...
...
@@ -97,11 +108,6 @@ class SlaprunnerTestCase(unittest.TestCase):
if
os
.
path
.
exists
(
self
.
app
.
config
[
'instance_root'
]):
shutil
.
rmtree
(
self
.
app
.
config
[
'instance_root'
])
#Helpers
def
loadJson
(
self
,
response
):
return
json
.
loads
(
response
.
data
)
def
configAccount
(
self
,
username
,
password
,
email
,
name
,
rcode
):
"""Helper for configAccount"""
return
self
.
app
.
post
(
'/configAccount'
,
data
=
dict
(
...
...
@@ -121,9 +127,9 @@ class SlaprunnerTestCase(unittest.TestCase):
def
setAccount
(
self
):
"""Initialize user account and log user in"""
response
=
self
.
loadJson
(
self
.
configAccount
(
self
.
users
[
0
],
self
.
users
[
1
],
response
=
loadJson
(
self
.
configAccount
(
self
.
users
[
0
],
self
.
users
[
1
],
self
.
users
[
2
],
self
.
users
[
3
],
self
.
rcode
))
response2
=
self
.
loadJson
(
self
.
login
(
self
.
users
[
0
],
self
.
users
[
1
]))
response2
=
loadJson
(
self
.
login
(
self
.
users
[
0
],
self
.
users
[
1
]))
self
.
assertEqual
(
response
[
'result'
],
""
)
self
.
assertEqual
(
response2
[
'result'
],
""
)
...
...
@@ -172,22 +178,22 @@ class SlaprunnerTestCase(unittest.TestCase):
"""For the first lauch of slaprunner user need do create first account"""
result
=
self
.
configAccount
(
self
.
users
[
0
],
self
.
users
[
1
],
self
.
users
[
2
],
self
.
users
[
3
],
self
.
rcode
)
response
=
self
.
loadJson
(
result
)
response
=
loadJson
(
result
)
self
.
assertEqual
(
response
[
'code'
],
1
)
account
=
getSession
(
self
.
app
.
config
)
self
.
assertEqual
(
account
,
self
.
users
)
def
test_login_logout
(
self
):
"""test login with good and wrong values, test logout"""
response
=
self
.
loadJson
(
self
.
configAccount
(
self
.
users
[
0
],
self
.
users
[
1
],
response
=
loadJson
(
self
.
configAccount
(
self
.
users
[
0
],
self
.
users
[
1
],
self
.
users
[
2
],
self
.
users
[
3
],
self
.
rcode
))
self
.
assertEqual
(
response
[
'result'
],
""
)
result
=
self
.
loadJson
(
self
.
login
(
self
.
users
[
0
],
"wrongpwd"
))
result
=
loadJson
(
self
.
login
(
self
.
users
[
0
],
"wrongpwd"
))
self
.
assertEqual
(
result
[
'result'
],
"Login or password is incorrect, please check it!"
)
resultwr
=
self
.
loadJson
(
self
.
login
(
"wronglogin"
,
"wrongpwd"
))
resultwr
=
loadJson
(
self
.
login
(
"wronglogin"
,
"wrongpwd"
))
self
.
assertEqual
(
resultwr
[
'result'
],
"Login or password is incorrect, please check it!"
)
#try now with true values
resultlg
=
self
.
loadJson
(
self
.
login
(
self
.
users
[
0
],
self
.
users
[
1
]))
resultlg
=
loadJson
(
self
.
login
(
self
.
users
[
0
],
self
.
users
[
1
]))
self
.
assertEqual
(
resultlg
[
'result'
],
""
)
#after login test logout
result
=
self
.
logout
()
...
...
@@ -196,12 +202,12 @@ class SlaprunnerTestCase(unittest.TestCase):
def
test_updateAccount
(
self
):
"""test Update accound, this need user to loging in"""
self
.
setAccount
()
response
=
self
.
loadJson
(
self
.
updateAccount
(
self
.
updateUser
,
self
.
rcode
))
response
=
loadJson
(
self
.
updateAccount
(
self
.
updateUser
,
self
.
rcode
))
self
.
assertEqual
(
response
[
'code'
],
1
)
result
=
self
.
logout
()
assert
"<h2>Login to Slapos Web Runner</h2>"
in
result
.
data
#retry login with new values
response
=
self
.
loadJson
(
self
.
login
(
self
.
updateUser
[
0
],
self
.
updateUser
[
1
]))
response
=
loadJson
(
self
.
login
(
self
.
updateUser
[
0
],
self
.
updateUser
[
1
]))
self
.
assertEqual
(
response
[
'result'
],
""
)
#log out now!
self
.
logout
()
...
...
@@ -218,12 +224,12 @@ class SlaprunnerTestCase(unittest.TestCase):
folder
=
'workspace/'
+
self
.
project
data
=
{
"repo"
:
self
.
repo
,
"user"
:
'Slaprunner test'
,
"email"
:
'slaprunner@nexedi.com'
,
"name"
:
folder
}
response
=
self
.
loadJson
(
self
.
app
.
post
(
'/cloneRepository'
,
data
=
data
,
response
=
loadJson
(
self
.
app
.
post
(
'/cloneRepository'
,
data
=
data
,
follow_redirects
=
True
))
self
.
assertEqual
(
response
[
'result'
],
""
)
#Get realpath of create project
path_data
=
dict
(
file
=
folder
)
response
=
self
.
loadJson
(
self
.
app
.
post
(
'/getPath'
,
data
=
path_data
,
response
=
loadJson
(
self
.
app
.
post
(
'/getPath'
,
data
=
path_data
,
follow_redirects
=
True
))
self
.
assertEqual
(
response
[
'code'
],
1
)
realFolder
=
response
[
'result'
]
.
split
(
'#'
)[
0
]
...
...
@@ -231,7 +237,7 @@ class SlaprunnerTestCase(unittest.TestCase):
config
=
open
(
os
.
path
.
join
(
realFolder
,
'.git/config'
),
'r'
)
.
read
()
assert
"slaprunner@nexedi.com"
in
config
and
"Slaprunner test"
in
config
#Checkout to slaprunner branch, this supose that branch slaprunner exit
response
=
self
.
loadJson
(
self
.
app
.
post
(
'/newBranch'
,
data
=
dict
(
response
=
loadJson
(
self
.
app
.
post
(
'/newBranch'
,
data
=
dict
(
project
=
folder
,
create
=
'0'
,
name
=
'slaprunner'
),
...
...
@@ -246,7 +252,7 @@ class SlaprunnerTestCase(unittest.TestCase):
self
.
login
(
self
.
users
[
0
],
self
.
users
[
1
])
#test create SR
newSoftware
=
os
.
path
.
join
(
self
.
software
,
'slaprunner-test'
)
response
=
self
.
loadJson
(
self
.
app
.
post
(
'/createSoftware'
,
response
=
loadJson
(
self
.
app
.
post
(
'/createSoftware'
,
data
=
dict
(
folder
=
newSoftware
),
follow_redirects
=
True
))
self
.
assertEqual
(
response
[
'result'
],
""
)
...
...
@@ -260,7 +266,7 @@ class SlaprunnerTestCase(unittest.TestCase):
#Login
self
.
login
(
self
.
users
[
0
],
self
.
users
[
1
])
software
=
os
.
path
.
join
(
self
.
software
,
'drupal'
)
#Drupal SR must exist in SR folder
response
=
self
.
loadJson
(
self
.
app
.
post
(
'/setCurrentProject'
,
response
=
loadJson
(
self
.
app
.
post
(
'/setCurrentProject'
,
data
=
dict
(
path
=
software
),
follow_redirects
=
True
))
self
.
assertEqual
(
response
[
'result'
],
""
)
...
...
slapos/runner/utils.py
View file @
c3ad77a6
# -*- coding: utf-8 -*-
# vim: set et sts=2:
# pylint: disable-msg=W0311,C0301,C0103,C0111,W0141,W0142
import
hashlib
import
md5
import
logging
import
multiprocessing
import
re
import
signal
import
shutil
import
string
import
os
import
subprocess
import
time
...
...
@@ -45,7 +46,7 @@ html_escape_table = {
def
html_escape
(
text
):
"""Produce entities within text."""
return
""
.
join
(
html_escape_table
.
get
(
c
,
c
)
for
c
in
text
)
return
""
.
join
(
html_escape_table
.
get
(
c
,
c
)
for
c
in
text
)
def
getSession
(
config
):
"""
...
...
@@ -258,7 +259,6 @@ def startProxy(config):
def
stopProxy
(
config
):
"""Stop Slapproxy server"""
killRunningProcess
(
config
,
'proxy.pid'
)
pass
def
removeProxyDb
(
config
):
...
...
@@ -431,7 +431,7 @@ def getSlapStatus(config):
if
partition_list
:
for
i
in
xrange
(
0
,
int
(
config
[
'partition_amount'
])):
slappart_id
=
'
%
s
%
s'
%
(
"slappart"
,
i
)
if
not
[
x
[
0
]
for
x
in
partition_list
if
slappart_id
==
x
[
0
]]:
if
not
[
x
[
0
]
for
x
in
partition_list
if
slappart_id
==
x
[
0
]]:
partition_list
.
append
((
slappart_id
,
[]))
return
partition_list
...
...
@@ -444,7 +444,7 @@ def removeInstanceRoot(config):
"""Clean instance directory and stop all its running process"""
if
os
.
path
.
exists
(
config
[
'instance_root'
]):
svcStopAll
(
config
)
for
root
,
dirs
,
files
in
os
.
walk
(
config
[
'instance_root'
]):
for
root
,
dirs
,
_
in
os
.
walk
(
config
[
'instance_root'
]):
for
fname
in
dirs
:
fullPath
=
os
.
path
.
join
(
root
,
fname
)
if
not
os
.
access
(
fullPath
,
os
.
W_OK
)
:
...
...
@@ -501,11 +501,11 @@ def getFolderContent(config, folder):
Returns:
Html formated string or error message when fail.
"""
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
try
:
folder
=
str
(
folder
)
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
d
=
urllib
.
unquote
(
folder
)
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
d
=
urllib
.
unquote
(
folder
)
realdir
=
realpath
(
config
,
d
)
if
not
realdir
:
r
.
append
(
'Could not load directory: Permission denied'
)
...
...
@@ -515,14 +515,14 @@ def getFolderContent(config, folder):
for
f
in
ldir
:
if
f
.
startswith
(
'.'
):
#do not displays this file/folder
continue
ff
=
os
.
path
.
join
(
d
,
f
)
if
os
.
path
.
isdir
(
os
.
path
.
join
(
realdir
,
f
)):
r
.
append
(
'<li class="directory collapsed"><a href="#
%
s" rel="
%
s/">
%
s</a></li>'
%
(
ff
,
ff
,
f
))
ff
=
os
.
path
.
join
(
d
,
f
)
if
os
.
path
.
isdir
(
os
.
path
.
join
(
realdir
,
f
)):
r
.
append
(
'<li class="directory collapsed"><a href="#
%
s" rel="
%
s/">
%
s</a></li>'
%
(
ff
,
ff
,
f
))
else
:
e
=
os
.
path
.
splitext
(
f
)[
1
][
1
:]
# get .ext and remove dot
r
.
append
(
'<li class="file ext_
%
s"><a href="#
%
s" rel="
%
s">
%
s</a></li>'
%
(
e
,
ff
,
ff
,
f
))
e
=
os
.
path
.
splitext
(
f
)[
1
][
1
:]
# get .ext and remove dot
r
.
append
(
'<li class="file ext_
%
s"><a href="#
%
s" rel="
%
s">
%
s</a></li>'
%
(
e
,
ff
,
ff
,
f
))
r
.
append
(
'</ul>'
)
except
Exception
,
e
:
except
Exception
as
e
:
r
.
append
(
'Could not load directory:
%
s'
%
str
(
e
))
r
.
append
(
'</ul>'
)
return
jsonify
(
result
=
''
.
join
(
r
))
...
...
@@ -538,11 +538,11 @@ def getFolder(config, folder):
Returns:
Html formated string or error message when fail.
"""
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
try
:
folder
=
str
(
folder
)
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
d
=
urllib
.
unquote
(
folder
)
r
=
[
'<ul class="jqueryFileTree" style="display: none;">'
]
d
=
urllib
.
unquote
(
folder
)
realdir
=
realpath
(
config
,
d
)
if
not
realdir
:
r
.
append
(
'Could not load directory: Permission denied'
)
...
...
@@ -552,11 +552,11 @@ def getFolder(config, folder):
for
f
in
ldir
:
if
f
.
startswith
(
'.'
):
#do not display this file/folder
continue
ff
=
os
.
path
.
join
(
d
,
f
)
if
os
.
path
.
isdir
(
os
.
path
.
join
(
realdir
,
f
)):
ff
=
os
.
path
.
join
(
d
,
f
)
if
os
.
path
.
isdir
(
os
.
path
.
join
(
realdir
,
f
)):
r
.
append
(
'<li class="directory collapsed"><a href="#
%
s" rel="
%
s/">
%
s</a></li>'
%
(
ff
,
ff
,
f
))
r
.
append
(
'</ul>'
)
except
Exception
,
e
:
except
Exception
as
e
:
r
.
append
(
'Could not load directory:
%
s'
%
str
(
e
))
r
.
append
(
'</ul>'
)
return
jsonify
(
result
=
''
.
join
(
r
))
...
...
@@ -634,7 +634,7 @@ def newSoftware(folder, config, session):
else
:
json
=
"Bad folder or Directory '"
+
folder
+
\
"' already exist, please enter a new name for your software"
except
Exception
,
e
:
except
Exception
as
e
:
json
=
"Can not create your software, please try again! : "
+
str
(
e
)
if
os
.
path
.
exists
(
folderPath
):
shutil
.
rmtree
(
folderPath
)
...
...
@@ -652,8 +652,8 @@ def getProjectTitle(config):
conf
=
os
.
path
.
join
(
config
[
'etc_dir'
],
".project"
)
if
os
.
path
.
exists
(
conf
):
project
=
open
(
conf
,
"r"
)
.
read
()
.
split
(
"/"
)
software
=
project
[
len
(
project
)
-
2
]
return
software
+
" ("
+
string
.
join
(
project
[:(
len
(
project
)
-
2
)],
'/'
)
+
")"
software
=
project
[
-
2
]
return
'
%
s (
%
s)'
%
(
software
,
'/'
.
join
(
project
[:
-
2
]))
return
"No Profile"
def
getSoftwareReleaseName
(
config
):
...
...
@@ -661,7 +661,7 @@ def getSoftwareReleaseName(config):
sr_profile
=
os
.
path
.
join
(
config
[
'etc_dir'
],
".project"
)
if
os
.
path
.
exists
(
sr_profile
):
project
=
open
(
sr_profile
,
"r"
)
.
read
()
.
split
(
"/"
)
software
=
project
[
len
(
project
)
-
2
]
software
=
project
[
-
2
]
return
software
.
replace
(
' '
,
'_'
)
return
"No_name"
...
...
@@ -704,14 +704,14 @@ def tail(f, lines=20):
data
.
insert
(
0
,
f
.
read
(
BUFSIZ
))
else
:
# file too small, start from begining
f
.
seek
(
0
,
0
)
f
.
seek
(
0
,
0
)
# only read what was not read
data
.
insert
(
0
,
f
.
read
(
bytes
))
linesFound
=
data
[
0
]
.
count
(
'
\n
'
)
size
-=
linesFound
bytes
-=
BUFSIZ
block
-=
1
return
string
.
join
(
''
.
join
(
data
)
.
splitlines
()[
-
lines
:],
'
\n
'
)
return
'
\n
'
.
join
(
''
.
join
(
data
)
.
splitlines
()[
-
lines
:]
)
def
readFileFrom
(
f
,
lastPosition
):
"""
...
...
@@ -735,7 +735,7 @@ def readFileFrom(f, lastPosition):
else
:
margin
=
abs
(
block
*
BUFSIZ
)
-
size
if
length
<
BUFSIZ
:
f
.
seek
(
0
,
0
)
f
.
seek
(
0
,
0
)
else
:
seek
=
block
*
BUFSIZ
+
margin
f
.
seek
(
seek
,
2
)
...
...
@@ -749,7 +749,7 @@ def isText(file):
"""Return True if the mimetype of file is Text"""
if
not
os
.
path
.
exists
(
file
):
return
False
text_range
=
''
.
join
(
map
(
chr
,
[
7
,
8
,
9
,
10
,
12
,
13
,
27
]
+
range
(
0x20
,
0x100
)))
text_range
=
''
.
join
(
map
(
chr
,
[
7
,
8
,
9
,
10
,
12
,
13
,
27
]
+
range
(
0x20
,
0x100
)))
is_binary_string
=
lambda
bytes
:
bool
(
bytes
.
translate
(
None
,
text_range
))
try
:
return
not
is_binary_string
(
open
(
file
)
.
read
(
1024
))
...
...
@@ -762,7 +762,7 @@ def md5sum(file):
return
False
try
:
fh
=
open
(
file
,
'rb'
)
m
=
hashlib
.
md5
()
m
=
md5
.
md5
()
while
True
:
data
=
fh
.
read
(
8192
)
if
not
data
:
...
...
@@ -805,14 +805,14 @@ def readParameters(path):
if
os
.
path
.
exists
(
path
):
try
:
xmldoc
=
xml
.
dom
.
minidom
.
parse
(
path
)
obj
ect
=
{}
obj
=
{}
for
elt
in
xmldoc
.
childNodes
:
sub_obj
ect
=
{}
sub_obj
=
{}
for
subnode
in
elt
.
childNodes
:
if
subnode
.
nodeType
!=
subnode
.
TEXT_NODE
:
sub_obj
ect
[
str
(
subnode
.
getAttribute
(
'id'
))]
=
subnode
.
childNodes
[
0
]
.
data
#.decode('utf-8').decode('utf-8')
obj
ect
[
str
(
elt
.
tagName
)]
=
sub_object
return
obj
ect
sub_obj
[
str
(
subnode
.
getAttribute
(
'id'
))]
=
subnode
.
childNodes
[
0
]
.
data
#.decode('utf-8').decode('utf-8')
obj
[
str
(
elt
.
tagName
)]
=
sub_obj
return
obj
except
Exception
,
e
:
return
str
(
e
)
else
:
...
...
slapos/runner/views.py
View file @
c3ad77a6
# -*- coding: utf-8 -*-
# vim: set et sts=2:
# pylint: disable-msg=W0311,C0301,C0103,C0111
import
os
import
shutil
...
...
@@ -16,7 +18,7 @@ from slapos.runner.utils import (checkSoftwareFolder, configNewSR, getFolder, ge
removeInstanceRoot
,
removeProxyDb
,
removeSoftwareByName
,
runInstanceWithLock
,
runSoftwareWithLock
,
saveSession
,
svcStartStopProcess
,
svcStopAll
,
tail
,
updateInstanceParameter
)
from
slapos.runner.fileBrowser
import
f
ileBrowser
from
slapos.runner.fileBrowser
import
F
ileBrowser
from
slapos.runner.gittools
import
(
cloneRepo
,
gitStatus
,
switchBranch
,
addBranch
,
getDiff
,
gitPush
,
gitPull
)
...
...
@@ -25,7 +27,7 @@ app = Flask(__name__)
app
.
config
[
'MAX_CONTENT_LENGTH'
]
=
20
*
1024
*
1024
auth
=
Auth
(
app
,
login_url_name
=
'login'
)
auth
.
user_timeout
=
0
file_request
=
f
ileBrowser
(
app
.
config
)
file_request
=
F
ileBrowser
(
app
.
config
)
# Setup default flask (werkzeug) parser
import
logging
...
...
@@ -73,7 +75,7 @@ def myAccount():
@
app
.
route
(
"/dologout"
)
def
dologout
():
user_data
=
logout
()
_
=
logout
()
return
redirect
(
url_for
(
'login'
))
@
login_required
()
...
...
@@ -108,6 +110,7 @@ def inspectSoftware():
result
=
""
else
:
result
=
app
.
config
[
'software_root'
]
# XXX not used??
return
render_template
(
'runResult.html'
,
softwareRoot
=
'software_link/'
,
softwares
=
loadSoftwareRList
(
app
.
config
))
...
...
@@ -173,11 +176,11 @@ def supervisordStatus():
html
=
"<tr><th>Partition and Process name</th><th>Status</th><th>Process PID </th><th> UpTime</th><th></th></tr>"
for
item
in
result
:
html
+=
"<tr>"
html
+=
"<td class='first'><b><a href='"
+
url_for
(
'tailProcess'
,
process
=
item
[
0
])
+
"'>"
+
item
[
0
]
+
"</a></b></td>"
html
+=
"<td align='center'><a href='"
+
url_for
(
'startStopProccess'
,
process
=
item
[
0
],
action
=
item
[
1
])
+
"'>"
+
item
[
1
]
+
"</a></td>"
html
+=
"<td align='center'>"
+
item
[
3
]
+
"</td><td>"
+
item
[
5
]
+
"</td>"
html
+=
"<td align='center'><a href='"
+
url_for
(
'startStopProccess'
,
process
=
item
[
0
],
action
=
'RESTART'
)
+
"'>Restart</a></td>"
html
+=
"</tr>"
html
+=
"<td class='first'><b><a href='"
+
url_for
(
'tailProcess'
,
process
=
item
[
0
])
+
"'>"
+
item
[
0
]
+
"</a></b></td>"
html
+=
"<td align='center'><a href='"
+
url_for
(
'startStopProccess'
,
process
=
item
[
0
],
action
=
item
[
1
])
+
"'>"
+
item
[
1
]
+
"</a></td>"
html
+=
"<td align='center'>"
+
item
[
3
]
+
"</td><td>"
+
item
[
5
]
+
"</td>"
html
+=
"<td align='center'><a href='"
+
url_for
(
'startStopProccess'
,
process
=
item
[
0
],
action
=
'RESTART'
)
+
"'>Restart</a></td>"
html
+=
"</tr>"
return
jsonify
(
code
=
1
,
result
=
html
)
@
login_required
()
...
...
@@ -295,7 +298,7 @@ def createFile():
request
.
form
[
'type'
]
+
": Permission Denied"
)
try
:
if
request
.
form
[
'type'
]
==
"file"
:
f
=
open
(
path
,
'w'
)
.
write
(
" "
)
open
(
path
,
'w'
)
else
:
os
.
mkdir
(
path
)
return
jsonify
(
code
=
1
,
result
=
""
)
...
...
@@ -575,7 +578,7 @@ def fileBrowser():
except
:
abort
(
404
)
elif
opt
==
9
:
truncateTo
=
int
(
request
.
form
.
get
(
'truncate'
,
'0'
))
truncateTo
=
int
(
request
.
form
.
get
(
'truncate'
,
'0'
))
# XXX not used??
result
=
file_request
.
readFile
(
dir
,
filename
)
elif
opt
==
11
:
#Upload file
...
...
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