mdserver-web/plugins/csvn/index.py

710 lines
18 KiB
Python
Raw Normal View History

2018-12-02 23:49:03 -05:00
# coding: utf-8
import time
import random
import os
import urllib
import binascii
import json
import re
2018-12-05 07:15:00 -05:00
import sys
2018-12-09 00:17:15 -05:00
import subprocess
2018-12-05 07:15:00 -05:00
sys.path.append(os.getcwd() + "/class/core")
2020-07-10 03:57:25 -04:00
import mw
2018-12-02 23:49:03 -05:00
2018-12-08 09:33:32 -05:00
app_debug = False
2020-07-10 03:57:25 -04:00
if mw.isAppleSystem():
2018-12-08 09:33:32 -05:00
app_debug = True
2018-12-08 04:30:58 -05:00
def getPluginName():
return 'csvn'
def getPluginDir():
2020-07-10 03:57:25 -04:00
return mw.getPluginDir() + '/' + getPluginName()
2018-12-08 04:30:58 -05:00
def getServerDir():
2020-07-10 03:57:25 -04:00
return mw.getServerDir() + '/' + getPluginName()
2018-12-08 04:30:58 -05:00
def getInitDFile():
if app_debug:
return '/tmp/' + getPluginName()
return '/etc/init.d/' + getPluginName()
2018-12-08 09:33:32 -05:00
def getArgs():
args = sys.argv[2:]
tmp = {}
2018-12-09 05:58:41 -05:00
args_len = len(args)
if args_len == 1:
t = args[0].strip('{').strip('}')
t = t.split(':')
2018-12-08 09:33:32 -05:00
tmp[t[0]] = t[1]
2018-12-09 05:58:41 -05:00
elif args_len > 1:
for i in range(len(args)):
t = args[i].split(':')
tmp[t[0]] = t[1]
2018-12-08 09:33:32 -05:00
return tmp
def initDreplace():
2018-12-08 23:37:49 -05:00
initd_file = getInitDFile()
2018-12-08 09:33:32 -05:00
2018-12-08 23:37:49 -05:00
if not os.path.exists(initd_file):
return getServerDir()
2018-12-08 09:33:32 -05:00
2018-12-08 23:37:49 -05:00
return initd_file
2018-12-08 09:33:32 -05:00
2018-12-02 23:49:03 -05:00
def status():
2020-07-10 03:57:25 -04:00
data = mw.execShell(
2018-12-08 09:33:32 -05:00
"ps -ef|grep " + getPluginName() + " |grep -v grep | grep -v python | awk '{print $2}'")
if data[0] == '':
return 'stop'
2018-12-02 23:49:03 -05:00
return 'start'
2018-12-08 09:33:32 -05:00
2018-12-08 23:37:49 -05:00
def csvnOp(method):
2018-12-08 23:50:30 -05:00
2018-12-08 23:59:36 -05:00
if app_debug:
2020-07-10 03:57:25 -04:00
os_name = mw.getOs()
2018-12-08 23:50:30 -05:00
if os_name == 'darwin':
return "Apple Computer does not support"
2018-12-08 23:37:49 -05:00
_initd_csvn = '/etc/init.d/csvn'
_initd_csvn_httpd = '/etc/init.d/csvn-httpd'
2018-12-09 00:06:15 -05:00
#_csvn = getServerDir() + '/bin/csvn'
#_csvn_httpd = getServerDir() + '/bin/csvn-httpd'
2018-12-08 23:37:49 -05:00
2020-07-10 03:57:25 -04:00
ret_csvn_httpd = mw.execShell(_initd_csvn_httpd + ' ' + method)
# ret_csvn = mw.execShell(_initd_csvn + ' ' + method)
2018-12-09 00:28:36 -05:00
subprocess.Popen(_initd_csvn + ' ' + method,
stdout=subprocess.PIPE, shell=True)
2018-12-09 00:20:05 -05:00
if ret_csvn_httpd[1] == '':
2018-12-08 09:33:32 -05:00
return 'ok'
return 'fail'
2018-12-08 23:37:49 -05:00
def start():
return csvnOp('start')
2018-12-08 09:33:32 -05:00
def stop():
2018-12-08 23:37:49 -05:00
return csvnOp('stop')
2018-12-08 09:33:32 -05:00
def restart():
2018-12-08 23:37:49 -05:00
return csvnOp('restart')
2018-12-08 09:33:32 -05:00
def reload():
2018-12-08 23:37:49 -05:00
return csvnOp('reload')
2018-12-08 09:33:32 -05:00
def initdStatus():
2018-12-09 01:07:13 -05:00
if not app_debug:
2020-07-10 03:57:25 -04:00
if mw.isAppleSystem():
2018-12-08 09:33:32 -05:00
return "Apple Computer does not support"
2018-12-08 23:37:49 -05:00
_initd_csvn = '/etc/init.d/csvn'
_initd_csvn_httpd = '/etc/init.d/csvn-httpd'
if os.path.exists(_initd_csvn) and os.path.exists(_initd_csvn_httpd):
2018-12-08 09:33:32 -05:00
return 'ok'
return 'fail'
def initdInstall():
import shutil
2018-12-09 01:07:13 -05:00
if not app_debug:
2020-07-10 03:57:25 -04:00
if mw.isAppleSystem():
2018-12-08 09:33:32 -05:00
return "Apple Computer does not support"
2018-12-08 23:37:49 -05:00
_csvn = getServerDir() + '/bin/csvn'
_csvn_httpd = getServerDir() + '/bin/csvn-httpd'
2020-07-10 03:57:25 -04:00
ret_csvn = mw.execShell(_csvn + ' install')
ret_csvn_httpd = mw.execShell(_csvn_httpd + ' install')
2018-12-08 23:50:30 -05:00
if ret_csvn[1] == '' and ret_csvn_httpd[1] == '':
return 'ok'
return 'fail'
2018-12-08 23:37:49 -05:00
def initdUinstall():
2018-12-09 01:07:13 -05:00
if not app_debug:
2020-07-10 03:57:25 -04:00
if mw.isAppleSystem():
2018-12-08 23:37:49 -05:00
return "Apple Computer does not support"
_csvn = getServerDir() + '/bin/csvn'
_csvn_httpd = getServerDir() + '/bin/csvn-httpd'
2020-07-10 03:57:25 -04:00
ret_csvn = mw.execShell(_csvn + ' remove')
ret_csvn_httpd = mw.execShell(_csvn_httpd + ' remove')
2018-12-08 23:52:41 -05:00
return 'ok'
2018-12-08 09:33:32 -05:00
2018-12-09 01:07:13 -05:00
2018-12-14 01:52:33 -05:00
def csvnEdit():
data = {}
data['svn_access_file'] = getServerDir() + '/data/conf/svn_access_file'
data['commit_tpl'] = getPluginDir() + '/hook/commit.tpl'
data['post_commit_tpl'] = getPluginDir() + '/hook/post-commit.tpl'
2020-07-10 03:57:25 -04:00
return mw.getJson(data)
2018-12-14 01:52:33 -05:00
2018-12-10 11:28:09 -05:00
def userAdd():
args = getArgs()
if not 'username' in args:
return 'name missing'
if not 'password' in args:
return 'password missing'
htpasswd = getServerDir() + "/bin/htpasswd"
svn_auth_file = getServerDir() + "/data/conf/svn_auth_file"
cmd = htpasswd + ' -b ' + svn_auth_file + ' ' + \
args['username'] + ' ' + args['password']
2020-07-10 03:57:25 -04:00
data = mw.execShell(cmd)
2018-12-12 10:37:11 -05:00
# print data
2018-12-10 11:46:36 -05:00
if data[0] == '':
2018-12-10 11:28:09 -05:00
return 'ok'
return 'fail'
def userDel():
args = getArgs()
if not 'username' in args:
return 'name missing'
htpasswd = getServerDir() + "/bin/htpasswd"
svn_auth_file = getServerDir() + "/data/conf/svn_auth_file"
cmd = htpasswd + ' -D ' + svn_auth_file + ' ' + args['username']
2020-07-10 03:57:25 -04:00
data = mw.execShell(cmd)
2018-12-10 11:46:36 -05:00
if data[0] == '':
2018-12-10 11:28:09 -05:00
return 'ok'
return 'fail'
2018-12-10 06:17:40 -05:00
2018-12-13 02:36:19 -05:00
def getAllUser(search=''):
2018-12-12 00:57:43 -05:00
svn_auth_file = getServerDir() + '/data/conf/svn_auth_file'
if not os.path.exists(svn_auth_file):
2020-07-10 03:57:25 -04:00
return mw.getJson([])
auth = mw.readFile(svn_auth_file)
2018-12-12 00:57:43 -05:00
auth = auth.strip()
auth_list = auth.split("\n")
ulist = []
for x in range(len(auth_list)):
tmp = auth_list[x].split(':')
2018-12-13 02:36:19 -05:00
if search != '':
if tmp[0].find(search) != -1:
ulist.append(tmp[0])
else:
ulist.append(tmp[0])
2018-12-12 00:57:43 -05:00
return ulist
2018-12-09 05:58:41 -05:00
def userList():
import math
args = getArgs()
page = 1
page_size = 10
2018-12-13 02:36:19 -05:00
search = ''
2018-12-09 05:58:41 -05:00
if 'page' in args:
page = int(args['page'])
if 'page_size' in args:
page_size = int(args['page_size'])
2018-12-13 02:36:19 -05:00
if 'search' in args:
search = args['search']
ulist = getAllUser(search)
2018-12-12 00:57:43 -05:00
ulist_sum = len(ulist)
2018-12-09 05:58:41 -05:00
2018-12-12 00:57:43 -05:00
page_info = {'count': ulist_sum, 'p': page,
2018-12-10 06:17:40 -05:00
'row': 10, 'tojs': 'csvnUserList'}
2018-12-12 00:57:43 -05:00
data = {}
2020-07-10 03:57:25 -04:00
data['list'] = mw.getPage(page_info)
2018-12-09 05:58:41 -05:00
data['page'] = page
data['page_size'] = page_size
2018-12-12 00:57:43 -05:00
data['page_count'] = int(math.ceil(ulist_sum / page_size))
2018-12-09 05:58:41 -05:00
start = (page - 1) * page_size
2018-12-10 01:22:22 -05:00
2018-12-10 06:17:40 -05:00
data['data'] = ulist[start:start + page_size]
2020-07-10 03:57:25 -04:00
return mw.getJson(data)
2018-12-09 05:58:41 -05:00
2018-12-10 06:17:40 -05:00
2018-12-11 04:53:37 -05:00
def projectAdd():
args = getArgs()
if not 'name' in args:
return 'project name missing'
path = getServerDir() + '/bin/svnadmin'
dest = getServerDir() + '/data/repositories/' + args['name']
cmd = path + ' create ' + dest
2020-07-10 03:57:25 -04:00
data = mw.execShell(cmd)
2018-12-11 04:56:05 -05:00
if data[1] == '':
2020-07-10 03:57:25 -04:00
mw.execShell('chown -R csvn:csvn ' + dest)
2018-12-11 04:53:37 -05:00
return 'ok'
return 'fail'
def projectDel():
args = getArgs()
if not 'name' in args:
return 'project name missing'
dest = getServerDir() + '/data/repositories/' + args['name']
cmd = 'rm -rf ' + dest
2020-07-10 03:57:25 -04:00
data = mw.execShell(cmd)
2018-12-11 04:53:37 -05:00
if data[0] == '':
return 'ok'
return 'fail'
2018-12-13 00:34:06 -05:00
def getHttpPort():
http_main_conf = getServerDir() + '/data/conf/csvn_main_httpd.conf'
try:
if os.path.exists(http_main_conf):
2020-07-10 03:57:25 -04:00
content = mw.readFile(http_main_conf)
2018-12-13 00:34:06 -05:00
return re.search('Listen\s(\d+)', content).groups()[0]
except Exception as e:
pass # print e
return '80'
def getCsvnPort():
http_main_conf = getServerDir() + '/data/conf/csvn-wrapper.conf'
try:
if os.path.exists(http_main_conf):
2020-07-10 03:57:25 -04:00
content = mw.readFile(http_main_conf)
2018-12-13 00:34:06 -05:00
return re.search('wrapper.java.additional.3=-Djetty.port=(\d+)', content).groups()[0]
except Exception as e:
pass # print e
return '3343'
2018-12-13 02:20:47 -05:00
def getALlProjectList(search=''):
2018-12-11 04:53:37 -05:00
path = getServerDir() + '/data/repositories'
dlist = []
if os.path.exists(path):
for filename in os.listdir(path):
tmp = {}
filePath = path + '/' + filename
if os.path.isdir(filePath):
2018-12-13 02:20:47 -05:00
if search == '':
tmp['name'] = filename
dlist.append(tmp)
else:
if filename.find(search) != -1:
tmp['name'] = filename
dlist.append(tmp)
2018-12-13 01:37:38 -05:00
return dlist
2018-12-13 04:09:23 -05:00
def checkProjectListIsHasScript(data):
dlen = len(data)
for x in range(dlen):
path = getServerDir() + '/data/repositories/' + \
data[x]['name'] + '/hooks/post-commit'
if os.path.exists(path):
data[x]['has_hook'] = True
else:
data[x]['has_hook'] = False
return data
2018-12-13 01:37:38 -05:00
def projectList():
import math
args = getArgs()
2018-12-11 04:53:37 -05:00
page = 1
page_size = 10
2018-12-13 02:20:47 -05:00
search = ''
2018-12-11 04:53:37 -05:00
if 'page' in args:
page = int(args['page'])
if 'page_size' in args:
page_size = int(args['page_size'])
2018-12-13 02:20:47 -05:00
if 'search' in args:
search = args['search']
dlist = getALlProjectList(search)
2018-12-11 04:53:37 -05:00
dlist_sum = len(dlist)
2018-12-13 04:09:23 -05:00
start = (page - 1) * page_size
ret_data = dlist[start:start + page_size]
ret_data = checkProjectListIsHasScript(ret_data)
data = {}
data['data'] = ret_data
2020-07-10 03:57:25 -04:00
data['list'] = mw.getPage(
2018-12-13 04:09:23 -05:00
{'count': dlist_sum, 'p': page, 'row': 10, 'tojs': 'csvnProjectList'})
2020-07-10 03:57:25 -04:00
data['ip'] = mw.getLocalIp()
2018-12-13 00:34:06 -05:00
data['port'] = getHttpPort()
data['csvn_port'] = getCsvnPort()
2018-12-11 04:53:37 -05:00
2020-07-10 03:57:25 -04:00
return mw.getJson(data)
2018-12-10 06:17:40 -05:00
2018-12-11 06:30:02 -05:00
def getAllAclList():
svn_access_file = getServerDir() + '/data/conf/svn_access_file'
2020-07-10 03:57:25 -04:00
aData = mw.readFile(svn_access_file)
2018-12-12 00:57:43 -05:00
aData = re.sub('#.*', '', aData)
2018-12-11 06:30:02 -05:00
aData = aData.strip().split('[')[1:]
allAcl = {}
2018-12-11 06:51:01 -05:00
for i in range(len(aData)):
2018-12-11 06:30:02 -05:00
oData = aData[i].strip().split(']')
2018-12-14 00:56:16 -05:00
name = oData[0].strip('/').strip(':')
2018-12-11 06:30:02 -05:00
if oData[1] == '':
allAcl[name] = []
else:
user = oData[1].strip().split('\n')
userAll = []
for iu in range(len(user)):
ulist = user[iu].split('=')
utmp = {}
2018-12-12 00:57:43 -05:00
utmp['user'] = ulist[0].strip()
utmp['acl'] = ulist[1].strip()
2018-12-11 06:30:02 -05:00
userAll.append(utmp)
allAcl[name] = userAll
return allAcl
2018-12-11 06:51:01 -05:00
def makeAclFile(content):
2018-12-12 00:57:43 -05:00
# print content
2018-12-11 06:51:01 -05:00
svn_access_file = getServerDir() + '/data/conf/svn_access_file'
tmp = "\n"
for k, v in content.items():
if k == '':
tmp += "[/]\n"
else:
2018-12-14 00:56:16 -05:00
tmp += "[" + k + ":/]\n"
2018-12-11 06:51:01 -05:00
for iv in range(len(v)):
2018-12-12 00:57:43 -05:00
tmp += v[iv]['user'] + ' = ' + v[iv]['acl'] + "\n"
2018-12-11 06:51:01 -05:00
tmp += "\n"
2018-12-13 04:09:23 -05:00
# svn_tmp_path = getServerDir() + '/data/conf/svn_access_file.log'
2020-07-10 03:57:25 -04:00
return mw.writeFile(svn_access_file, tmp)
2018-12-11 06:51:01 -05:00
2018-12-11 06:30:02 -05:00
def projectAclList():
2018-12-11 11:07:01 -05:00
args = getArgs()
2018-12-12 00:57:43 -05:00
if not 'name' in args:
return 'name missing!'
name = args['name']
acl = getAllAclList()
if name in acl:
2020-07-10 03:57:25 -04:00
return mw.getJson(acl[name])
2018-12-12 00:57:43 -05:00
else:
return 'fail'
2018-12-11 06:30:02 -05:00
2018-12-11 06:51:01 -05:00
def projectAclAdd():
2018-12-12 00:57:43 -05:00
args = getArgs()
if not 'uname' in args:
return 'username missing'
if not 'pname' in args:
return 'project name missing'
uname = args['uname']
pname = args['pname']
ulist = getAllUser()
if not uname in ulist:
return uname + " user not exists!"
acl = getAllAclList()
2018-12-12 02:11:55 -05:00
tmp_acl = {'user': uname, 'acl': 'rw'}
2018-12-12 00:57:43 -05:00
if not pname in acl:
2018-12-12 02:11:55 -05:00
acl[pname] = [tmp_acl]
makeAclFile(acl)
return 'ok'
2018-12-12 00:57:43 -05:00
tmp = acl[pname]
tmp_len = len(tmp)
2018-12-12 02:11:55 -05:00
2018-12-12 00:57:43 -05:00
if tmp_len == 0:
acl[pname] = [tmp_acl]
else:
is_have = False
for x in range(tmp_len):
if tmp[x]['user'] == uname:
is_have = True
2018-12-12 02:11:55 -05:00
return uname + ' users already exist!'
2018-12-12 00:57:43 -05:00
if not is_have:
tmp.append(tmp_acl)
acl[pname] = tmp
2018-12-12 02:11:55 -05:00
2018-12-12 00:57:43 -05:00
makeAclFile(acl)
return 'ok'
2018-12-11 06:51:01 -05:00
def projectAclDel():
2018-12-12 01:06:10 -05:00
args = getArgs()
if not 'uname' in args:
return 'username missing'
if not 'pname' in args:
return 'project name missing'
2018-12-12 02:11:55 -05:00
2018-12-12 01:06:10 -05:00
uname = args['uname']
pname = args['pname']
ulist = getAllUser()
if not uname in ulist:
return uname + " user not exists!"
acl = getAllAclList()
if not pname in acl:
return 'project not exists!'
tmp = acl[pname]
tmp_len = len(tmp)
if tmp_len == 0:
return 'project no have user:' + uname
else:
is_have = False
2018-12-12 02:11:55 -05:00
rtmp = []
2018-12-12 01:06:10 -05:00
for x in range(tmp_len):
2018-12-12 02:11:55 -05:00
if tmp[x]['user'] != uname:
rtmp.append(tmp[x])
acl[pname] = rtmp
2018-12-12 01:06:10 -05:00
makeAclFile(acl)
return 'ok'
2018-12-11 06:51:01 -05:00
2018-12-12 01:06:10 -05:00
def projectAclSet():
args = getArgs()
if not 'uname' in args:
return 'username missing'
if not 'pname' in args:
return 'project name missing'
if not 'acl' in args:
return 'acl missing'
uname = args['uname']
pname = args['pname']
up_acl = args['acl']
ulist = getAllUser()
if not uname in ulist:
return uname + " user not exists!"
acl = getAllAclList()
if not pname in acl:
return 'project not exists!'
tmp = acl[pname]
tmp_len = len(tmp)
if tmp_len == 0:
return 'project no have user:' + uname
else:
is_have = False
for x in range(tmp_len):
if tmp[x]['user'] == uname:
tmp[x]['acl'] = up_acl
acl[pname] = tmp
makeAclFile(acl)
return 'ok'
2018-12-11 06:51:01 -05:00
2018-12-13 04:09:23 -05:00
2018-12-14 01:52:33 -05:00
def getCsvnUser():
user = 'admin_sync'
acl = getAllAclList()
if '' in acl:
tmp = acl['']
is_has = False
for data in tmp:
if data['user'] == user:
is_has = True
if not is_has:
tmp.append({'user': user, 'acl': 'r'})
acl[''] = tmp
makeAclFile(acl)
return user
def getCsvnPwd(user):
if app_debug:
return user + '123'
pwd_file = 'data/csvn_sync.pl'
if os.path.exists(pwd_file):
2020-07-10 03:57:25 -04:00
return mw.readFile(pwd_file).strip()
2018-12-14 01:52:33 -05:00
import time
cur_time = time.time()
2020-07-10 03:57:25 -04:00
rand_pwd = mw.md5(str(cur_time))
2018-12-14 01:52:33 -05:00
pwd = user + rand_pwd[:5]
htpasswd = getServerDir() + "/bin/htpasswd"
svn_auth_file = getServerDir() + "/data/conf/svn_auth_file"
cmd = htpasswd + ' -b ' + svn_auth_file + ' ' + user + ' ' + pwd
2020-07-10 03:57:25 -04:00
data = mw.execShell(cmd)
2018-12-14 01:52:33 -05:00
2020-07-10 03:57:25 -04:00
mw.writeFile(pwd_file, pwd)
2018-12-14 01:52:33 -05:00
return pwd
2018-12-13 04:09:23 -05:00
def projectScriptLoad():
args = getArgs()
if not 'pname' in args:
return 'project name missing'
2018-12-13 09:37:27 -05:00
post_commit_tpl = getPluginDir() + '/hook/post-commit.tpl'
hook_path = getServerDir() + '/data/repositories/' + \
args['pname'] + '/hooks'
post_commit_file = hook_path + '/post-commit'
2020-07-10 03:57:25 -04:00
pct_content = mw.readFile(post_commit_tpl)
mw.writeFile(post_commit_file, pct_content)
mw.execShell('chmod 777 ' + post_commit_file)
2018-12-13 09:37:27 -05:00
2018-12-13 09:47:45 -05:00
commit_tpl = getPluginDir() + '/hook/commit.tpl'
2018-12-13 09:37:27 -05:00
commit_file = hook_path + '/commit'
2018-12-13 04:09:23 -05:00
2020-07-10 03:57:25 -04:00
ct_content = mw.readFile(commit_tpl)
ct_content = ct_content.replace('{$PROJECT_DIR}', mw.getRootDir())
2018-12-13 09:37:27 -05:00
ct_content = ct_content.replace('{$PORT}', getHttpPort())
2018-12-14 01:52:33 -05:00
ct_content = ct_content.replace('{$CSVN_USER}', getCsvnUser())
ct_content = ct_content.replace('{$CSVN_PWD}', getCsvnPwd(getCsvnUser()))
2018-12-13 04:09:23 -05:00
2020-07-10 03:57:25 -04:00
mw.writeFile(commit_file, ct_content)
mw.execShell('chmod 777 ' + commit_file)
2018-12-13 07:01:29 -05:00
2018-12-13 04:09:23 -05:00
return 'ok'
def projectScriptUnload():
args = getArgs()
if not 'pname' in args:
return 'project name missing'
2018-12-13 09:37:27 -05:00
post_commit_file = getServerDir() + '/data/repositories/' + '/' + \
2018-12-13 04:09:23 -05:00
args['pname'] + '/hooks/post-commit'
2020-07-10 03:57:25 -04:00
mw.execShell('rm -f ' + post_commit_file)
2018-12-13 09:37:27 -05:00
commit_file = getServerDir() + '/data/repositories/' + '/' + \
args['pname'] + '/hooks/commit'
2020-07-10 03:57:25 -04:00
mw.execShell('rm -f ' + commit_file)
2018-12-13 04:09:23 -05:00
return 'ok'
def projectScriptEdit():
args = getArgs()
if not 'pname' in args:
return 'project name missing'
data = {}
2018-12-13 09:37:27 -05:00
commit_file = getServerDir() + '/data/repositories/' + \
args['pname'] + '/hooks/commit'
if os.path.exists(commit_file):
2018-12-13 04:09:23 -05:00
data['status'] = True
2018-12-13 09:37:27 -05:00
data['path'] = commit_file
2018-12-13 04:09:23 -05:00
else:
data['status'] = False
data['msg'] = 'file does not exist'
2020-07-10 03:57:25 -04:00
return mw.getJson(data)
2018-12-13 04:09:23 -05:00
2018-12-13 10:17:49 -05:00
def projectScriptDebug():
2018-12-13 10:15:33 -05:00
args = getArgs()
if not 'pname' in args:
return 'project name missing'
data = {}
commit_log = getServerDir() + '/data/repositories/' + \
args['pname'] + '/sh.log'
if os.path.exists(commit_log):
data['status'] = True
data['path'] = commit_log
else:
data['status'] = False
data['msg'] = 'file does not exist'
2020-07-10 03:57:25 -04:00
return mw.getJson(data)
2018-12-13 10:15:33 -05:00
2019-02-25 04:10:32 -05:00
def getTotalStatistics():
st = status()
data = {}
if st == 'start':
svn_path = getServerDir() + '/data/repositories'
data['status'] = True
data['count'] = len(os.listdir(svn_path))
2020-07-10 03:57:25 -04:00
data['ver'] = mw.readFile(getServerDir() + '/version.pl').strip()
return mw.returnJson(True, 'ok', data)
2019-02-25 04:10:32 -05:00
else:
data['status'] = False
data['count'] = 0
2020-07-10 03:57:25 -04:00
return mw.returnJson(False, 'fail', data)
2019-02-25 04:10:32 -05:00
2018-12-02 23:49:03 -05:00
if __name__ == "__main__":
func = sys.argv[1]
if func == 'status':
2021-05-01 02:17:42 -04:00
print(status())
2018-12-08 09:33:32 -05:00
elif func == 'start':
2021-05-01 02:17:42 -04:00
print(start())
2018-12-08 09:33:32 -05:00
elif func == 'stop':
2021-05-01 02:17:42 -04:00
print(stop())
2018-12-08 09:33:32 -05:00
elif func == 'restart':
2021-05-01 02:17:42 -04:00
print(restart())
2018-12-08 09:33:32 -05:00
elif func == 'reload':
2021-05-01 02:17:42 -04:00
print(reload())
2018-12-08 09:33:32 -05:00
elif func == 'initd_status':
2021-05-01 02:17:42 -04:00
print(initdStatus())
2018-12-08 09:33:32 -05:00
elif func == 'initd_install':
2021-05-01 02:17:42 -04:00
print(initdInstall())
2018-12-08 09:33:32 -05:00
elif func == 'initd_uninstall':
2021-05-01 02:17:42 -04:00
print(initdUinstall())
2018-12-14 01:52:33 -05:00
elif func == 'csvn_edit':
2021-05-01 02:17:42 -04:00
print(csvnEdit())
2018-12-09 05:58:41 -05:00
elif func == 'user_list':
2021-05-01 02:17:42 -04:00
print(userList())
2018-12-10 11:28:09 -05:00
elif func == 'user_add':
2021-05-01 02:17:42 -04:00
print(userAdd())
2018-12-10 11:28:09 -05:00
elif func == 'user_del':
2021-05-01 02:17:42 -04:00
print(userDel())
2018-12-10 06:17:40 -05:00
elif func == 'project_list':
2021-05-01 02:17:42 -04:00
print(projectList())
2018-12-11 04:53:37 -05:00
elif func == 'project_del':
2021-05-01 02:17:42 -04:00
print(projectDel())
2018-12-11 04:53:37 -05:00
elif func == 'project_add':
2021-05-01 02:17:42 -04:00
print(projectAdd())
2018-12-11 06:30:02 -05:00
elif func == 'project_acl_list':
2021-05-01 02:17:42 -04:00
print(projectAclList())
2018-12-12 00:57:43 -05:00
elif func == 'project_acl_add':
2021-05-01 02:17:42 -04:00
print(projectAclAdd())
2018-12-12 01:06:10 -05:00
elif func == 'project_acl_del':
2021-05-01 02:17:42 -04:00
print(projectAclDel())
2018-12-12 01:06:10 -05:00
elif func == 'project_acl_set':
2021-05-01 02:17:42 -04:00
print(projectAclSet())
2018-12-13 04:09:23 -05:00
elif func == 'project_script_load':
2021-05-01 02:17:42 -04:00
print(projectScriptLoad())
2018-12-13 04:09:23 -05:00
elif func == 'project_script_unload':
2021-05-01 02:17:42 -04:00
print(projectScriptUnload())
2018-12-13 04:09:23 -05:00
elif func == 'project_script_edit':
2021-05-01 02:17:42 -04:00
print(projectScriptEdit())
2018-12-13 10:17:49 -05:00
elif func == 'project_script_debug':
2021-05-01 02:17:42 -04:00
print(projectScriptDebug())
2019-02-25 04:10:32 -05:00
elif func == 'get_total_statistics':
2021-05-01 02:17:42 -04:00
print(getTotalStatistics())
2018-12-08 04:30:58 -05:00
else:
2021-05-01 02:17:42 -04:00
print('fail')