diff --git a/plugins/csvn/hook/commit.tpl b/plugins/csvn/hook/commit.tpl deleted file mode 100755 index 886abed28..000000000 --- a/plugins/csvn/hook/commit.tpl +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -export LC_ALL=en_US.UTF-8 -export LC_CTYPE=zh_CN.UTF-8 - - -REPOS="$1" -REV="$2" -TXN_NAME="$3" - - -if [ ! -d {$PROJECT_DIR}/csvn ]; then - sudo mkdir -p {$PROJECT_DIR}/csvn - sudo chown -R csvn:csvn {$PROJECT_DIR}/csvn -fi - -SAVE_PATH={$PROJECT_DIR}/csvn/$REPOS -SVN_PATH=http://127.0.0.1:{$PORT}/svn/$REPOS - -if [ ! -d $SAVE_PATH ]; then - svn co $SVN_PATH $SAVE_PATH \ - --username={$CSVN_USER} \ - --password={$CSVN_PWD} \ - --no-auth-cache \ - --non-interactive -fi - -cd $SAVE_PATH && svn update --username={$CSVN_USER} --password={$CSVN_PWD} --no-auth-cache --non-interactive - -WEB_PATH={$PROJECT_DIR}/wwwroot/$REPOS -sudo mkdir -p $WEB_PATH - -sudo rsync -vauP --delete --exclude=".*" $SAVE_PATH/ $WEB_PATH -sudo chown -R www:www $WEB_PATH \ No newline at end of file diff --git a/plugins/csvn/hook/post-commit.tpl b/plugins/csvn/hook/post-commit.tpl deleted file mode 100755 index 2e52d3f19..000000000 --- a/plugins/csvn/hook/post-commit.tpl +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - - - -REPOS="$1" -REV="$2" -TXN_NAME="$3" - -REPOS_NAME=${REPOS##*/} - -sh -x $REPOS/hooks/commit $REPOS_NAME $REV $TXN_NAME 2>$REPOS/sh.log diff --git a/plugins/csvn/ico.png b/plugins/csvn/ico.png deleted file mode 100644 index b84c97def..000000000 Binary files a/plugins/csvn/ico.png and /dev/null differ diff --git a/plugins/csvn/index.html b/plugins/csvn/index.html deleted file mode 100755 index 711177eae..000000000 --- a/plugins/csvn/index.html +++ /dev/null @@ -1,41 +0,0 @@ - -
-
-
-

服务

-

自启动

-

手动编辑

-

用户管理

-

项目管理

-

使用说明

-
-
-
-
-
- -
- diff --git a/plugins/csvn/index.py b/plugins/csvn/index.py deleted file mode 100755 index 3689b70b8..000000000 --- a/plugins/csvn/index.py +++ /dev/null @@ -1,711 +0,0 @@ -# coding: utf-8 - -import time -import random -import os -import urllib -import binascii -import json -import re -import sys -import subprocess - -sys.path.append(os.getcwd() + "/class/core") -import mw - - -app_debug = False -if mw.isAppleSystem(): - app_debug = True - - -def getPluginName(): - return 'csvn' - - -def getPluginDir(): - return mw.getPluginDir() + '/' + getPluginName() - - -def getServerDir(): - return mw.getServerDir() + '/' + getPluginName() - - -def getInitDFile(): - if app_debug: - return '/tmp/' + getPluginName() - return '/etc/init.d/' + getPluginName() - - -def getArgs(): - args = sys.argv[2:] - tmp = {} - args_len = len(args) - - if args_len == 1: - t = args[0].strip('{').strip('}') - t = t.split(':') - tmp[t[0]] = t[1] - elif args_len > 1: - for i in range(len(args)): - t = args[i].split(':') - tmp[t[0]] = t[1] - - return tmp - - -def initDreplace(): - initd_file = getInitDFile() - - if not os.path.exists(initd_file): - return getServerDir() - - return initd_file - - -def status(): - data = mw.execShell( - "ps -ef|grep " + getPluginName() + " |grep -v grep | grep -v python | awk '{print $2}'") - if data[0] == '': - return 'stop' - return 'start' - - -def csvnOp(method): - - if app_debug: - os_name = mw.getOs() - if os_name == 'darwin': - return "Apple Computer does not support" - - _initd_csvn = '/etc/init.d/csvn' - _initd_csvn_httpd = '/etc/init.d/csvn-httpd' - #_csvn = getServerDir() + '/bin/csvn' - #_csvn_httpd = getServerDir() + '/bin/csvn-httpd' - - ret_csvn_httpd = mw.execShell(_initd_csvn_httpd + ' ' + method) - # ret_csvn = mw.execShell(_initd_csvn + ' ' + method) - subprocess.Popen(_initd_csvn + ' ' + method, - stdout=subprocess.PIPE, shell=True) - if ret_csvn_httpd[1] == '': - return 'ok' - return 'fail' - - -def start(): - if not os.path.exists("/etc/init.d/csvn"): - return "先在自启动安装!" - return csvnOp('start') - - -def stop(): - return csvnOp('stop') - - -def restart(): - return csvnOp('restart') - - -def reload(): - return csvnOp('reload') - - -def initdStatus(): - if not app_debug: - if mw.isAppleSystem(): - return "Apple Computer does not support" - - _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): - return 'ok' - return 'fail' - - -def initdInstall(): - import shutil - if not app_debug: - if mw.isAppleSystem(): - return "Apple Computer does not support" - - _csvn = getServerDir() + '/bin/csvn' - _csvn_httpd = getServerDir() + '/bin/csvn-httpd' - - ret_csvn = mw.execShell(_csvn + ' install') - ret_csvn_httpd = mw.execShell(_csvn_httpd + ' install') - if ret_csvn[1] == '' and ret_csvn_httpd[1] == '': - return 'ok' - return 'fail' - - -def initdUinstall(): - if not app_debug: - if mw.isAppleSystem(): - return "Apple Computer does not support" - - _csvn = getServerDir() + '/bin/csvn' - _csvn_httpd = getServerDir() + '/bin/csvn-httpd' - - ret_csvn = mw.execShell(_csvn + ' remove') - ret_csvn_httpd = mw.execShell(_csvn_httpd + ' remove') - return 'ok' - - -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' - return mw.getJson(data) - - -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'] - data = mw.execShell(cmd) - # print data - if data[0] == '': - 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'] - data = mw.execShell(cmd) - if data[0] == '': - return 'ok' - return 'fail' - - -def getAllUser(search=''): - svn_auth_file = getServerDir() + '/data/conf/svn_auth_file' - if not os.path.exists(svn_auth_file): - return mw.getJson([]) - auth = mw.readFile(svn_auth_file) - auth = auth.strip() - auth_list = auth.split("\n") - - ulist = [] - for x in range(len(auth_list)): - tmp = auth_list[x].split(':') - if search != '': - if tmp[0].find(search) != -1: - ulist.append(tmp[0]) - else: - ulist.append(tmp[0]) - return ulist - - -def userList(): - import math - args = getArgs() - - page = 1 - page_size = 10 - search = '' - if 'page' in args: - page = int(args['page']) - - if 'page_size' in args: - page_size = int(args['page_size']) - - if 'search' in args: - search = args['search'] - - ulist = getAllUser(search) - ulist_sum = len(ulist) - - page_info = {'count': ulist_sum, 'p': page, - 'row': 10, 'tojs': 'csvnUserList'} - data = {} - data['list'] = mw.getPage(page_info) - data['page'] = page - data['page_size'] = page_size - data['page_count'] = int(math.ceil(ulist_sum / page_size)) - start = (page - 1) * page_size - - data['data'] = ulist[start:start + page_size] - return mw.getJson(data) - - -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 - data = mw.execShell(cmd) - if data[1] == '': - mw.execShell('chown -R csvn:csvn ' + dest) - 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 - data = mw.execShell(cmd) - if data[0] == '': - return 'ok' - return 'fail' - - -def getHttpPort(): - http_main_conf = getServerDir() + '/data/conf/csvn_main_httpd.conf' - try: - if os.path.exists(http_main_conf): - content = mw.readFile(http_main_conf) - 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): - content = mw.readFile(http_main_conf) - return re.search('wrapper.java.additional.3=-Djetty.port=(\d+)', content).groups()[0] - except Exception as e: - pass # print e - return '3343' - - -def getALlProjectList(search=''): - 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): - if search == '': - tmp['name'] = filename - dlist.append(tmp) - else: - if filename.find(search) != -1: - tmp['name'] = filename - dlist.append(tmp) - return dlist - - -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 - - -def projectList(): - import math - args = getArgs() - - page = 1 - page_size = 10 - search = '' - if 'page' in args: - page = int(args['page']) - - if 'page_size' in args: - page_size = int(args['page_size']) - - if 'search' in args: - search = args['search'] - - dlist = getALlProjectList(search) - dlist_sum = len(dlist) - - start = (page - 1) * page_size - ret_data = dlist[start:start + page_size] - ret_data = checkProjectListIsHasScript(ret_data) - - data = {} - data['data'] = ret_data - data['list'] = mw.getPage( - {'count': dlist_sum, 'p': page, 'row': 10, 'tojs': 'csvnProjectList'}) - data['ip'] = mw.getLocalIp() - data['port'] = getHttpPort() - data['csvn_port'] = getCsvnPort() - - return mw.getJson(data) - - -def getAllAclList(): - svn_access_file = getServerDir() + '/data/conf/svn_access_file' - aData = mw.readFile(svn_access_file) - aData = re.sub('#.*', '', aData) - aData = aData.strip().split('[')[1:] - allAcl = {} - for i in range(len(aData)): - oData = aData[i].strip().split(']') - name = oData[0].strip('/').strip(':') - if oData[1] == '': - allAcl[name] = [] - else: - user = oData[1].strip().split('\n') - userAll = [] - for iu in range(len(user)): - ulist = user[iu].split('=') - utmp = {} - utmp['user'] = ulist[0].strip() - utmp['acl'] = ulist[1].strip() - userAll.append(utmp) - allAcl[name] = userAll - return allAcl - - -def makeAclFile(content): - # print content - svn_access_file = getServerDir() + '/data/conf/svn_access_file' - tmp = "\n" - for k, v in content.items(): - if k == '': - tmp += "[/]\n" - else: - tmp += "[" + k + ":/]\n" - - for iv in range(len(v)): - tmp += v[iv]['user'] + ' = ' + v[iv]['acl'] + "\n" - tmp += "\n" - # svn_tmp_path = getServerDir() + '/data/conf/svn_access_file.log' - return mw.writeFile(svn_access_file, tmp) - - -def projectAclList(): - args = getArgs() - if not 'name' in args: - return 'name missing!' - name = args['name'] - acl = getAllAclList() - - if name in acl: - return mw.getJson(acl[name]) - else: - return 'fail' - - -def projectAclAdd(): - 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() - - tmp_acl = {'user': uname, 'acl': 'rw'} - if not pname in acl: - acl[pname] = [tmp_acl] - makeAclFile(acl) - return 'ok' - - tmp = acl[pname] - tmp_len = len(tmp) - - 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 - return uname + ' users already exist!' - if not is_have: - tmp.append(tmp_acl) - acl[pname] = tmp - - makeAclFile(acl) - return 'ok' - - -def projectAclDel(): - 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() - - 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 - rtmp = [] - for x in range(tmp_len): - if tmp[x]['user'] != uname: - rtmp.append(tmp[x]) - acl[pname] = rtmp - makeAclFile(acl) - return 'ok' - - -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' - - -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): - return mw.readFile(pwd_file).strip() - - import time - cur_time = time.time() - rand_pwd = mw.md5(str(cur_time)) - 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 - data = mw.execShell(cmd) - - mw.writeFile(pwd_file, pwd) - return pwd - - -def projectScriptLoad(): - - args = getArgs() - if not 'pname' in args: - return 'project name missing' - - post_commit_tpl = getPluginDir() + '/hook/post-commit.tpl' - hook_path = getServerDir() + '/data/repositories/' + \ - args['pname'] + '/hooks' - post_commit_file = hook_path + '/post-commit' - - pct_content = mw.readFile(post_commit_tpl) - mw.writeFile(post_commit_file, pct_content) - mw.execShell('chmod 777 ' + post_commit_file) - - commit_tpl = getPluginDir() + '/hook/commit.tpl' - commit_file = hook_path + '/commit' - - ct_content = mw.readFile(commit_tpl) - ct_content = ct_content.replace('{$PROJECT_DIR}', mw.getRootDir()) - ct_content = ct_content.replace('{$PORT}', getHttpPort()) - ct_content = ct_content.replace('{$CSVN_USER}', getCsvnUser()) - ct_content = ct_content.replace('{$CSVN_PWD}', getCsvnPwd(getCsvnUser())) - - mw.writeFile(commit_file, ct_content) - mw.execShell('chmod 777 ' + commit_file) - - return 'ok' - - -def projectScriptUnload(): - args = getArgs() - if not 'pname' in args: - return 'project name missing' - - post_commit_file = getServerDir() + '/data/repositories/' + '/' + \ - args['pname'] + '/hooks/post-commit' - mw.execShell('rm -f ' + post_commit_file) - - commit_file = getServerDir() + '/data/repositories/' + '/' + \ - args['pname'] + '/hooks/commit' - mw.execShell('rm -f ' + commit_file) - return 'ok' - - -def projectScriptEdit(): - args = getArgs() - if not 'pname' in args: - return 'project name missing' - - data = {} - commit_file = getServerDir() + '/data/repositories/' + \ - args['pname'] + '/hooks/commit' - if os.path.exists(commit_file): - data['status'] = True - data['path'] = commit_file - else: - data['status'] = False - data['msg'] = 'file does not exist' - - return mw.getJson(data) - - -def projectScriptDebug(): - 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' - - return mw.getJson(data) - - -def getTotalStatistics(): - st = status() - data = {} - if st == 'start': - svn_path = getServerDir() + '/data/repositories' - data['status'] = True - data['count'] = len(os.listdir(svn_path)) - data['ver'] = mw.readFile(getServerDir() + '/version.pl').strip() - return mw.returnJson(True, 'ok', data) - else: - data['status'] = False - data['count'] = 0 - return mw.returnJson(False, 'fail', data) - - -if __name__ == "__main__": - func = sys.argv[1] - if func == 'status': - print(status()) - elif func == 'start': - print(start()) - elif func == 'stop': - print(stop()) - elif func == 'restart': - print(restart()) - elif func == 'reload': - print(reload()) - elif func == 'initd_status': - print(initdStatus()) - elif func == 'initd_install': - print(initdInstall()) - elif func == 'initd_uninstall': - print(initdUinstall()) - elif func == 'csvn_edit': - print(csvnEdit()) - elif func == 'user_list': - print(userList()) - elif func == 'user_add': - print(userAdd()) - elif func == 'user_del': - print(userDel()) - elif func == 'project_list': - print(projectList()) - elif func == 'project_del': - print(projectDel()) - elif func == 'project_add': - print(projectAdd()) - elif func == 'project_acl_list': - print(projectAclList()) - elif func == 'project_acl_add': - print(projectAclAdd()) - elif func == 'project_acl_del': - print(projectAclDel()) - elif func == 'project_acl_set': - print(projectAclSet()) - elif func == 'project_script_load': - print(projectScriptLoad()) - elif func == 'project_script_unload': - print(projectScriptUnload()) - elif func == 'project_script_edit': - print(projectScriptEdit()) - elif func == 'project_script_debug': - print(projectScriptDebug()) - elif func == 'get_total_statistics': - print(getTotalStatistics()) - else: - print('fail') diff --git a/plugins/csvn/info.json b/plugins/csvn/info.json deleted file mode 100755 index 422ec52b6..000000000 --- a/plugins/csvn/info.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "sort": 7, - "ps": "最流行的SVN代码共享管理软件", - "shell": "install.sh", - "name": "csvn", - "title": "CSVN", - "versions": "5.1", - "updates":"5.1.4", - "tip": "soft", - "checks": "server/csvn", - "path":"server/csvn", - "author": "midoks", - "date": "2017-04-01", - "home": "https://www.collab.net", - "type": "SVN代码共享管理软件", - "pid": "3" -} \ No newline at end of file diff --git a/plugins/csvn/install.sh b/plugins/csvn/install.sh deleted file mode 100755 index 763e3e771..000000000 --- a/plugins/csvn/install.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/bash -PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin -export PATH - -# https://blog.csdn.net/akipa11/article/details/103455298 -# https://blog.csdn.net/bbj12345678/article/details/122941395 - -curPath=`pwd` -rootPath=$(dirname "$curPath") -rootPath=$(dirname "$rootPath") -serverPath=$(dirname "$rootPath") - -install_tmp=${rootPath}/tmp/mw_install.pl - - -sysName=`uname` -echo "use system: ${sysName}" - -if [ ${sysName} == "Darwin" ]; then - OSNAME='macos' -elif grep -Eqi "CentOS" /etc/issue || grep -Eq "CentOS" /etc/*-release; then - OSNAME='centos' -elif grep -Eqi "Fedora" /etc/issue || grep -Eq "Fedora" /etc/*-release; then - OSNAME='fedora' -elif grep -Eqi "Debian" /etc/issue || grep -Eq "Debian" /etc/*-release; then - OSNAME='debian' -elif grep -Eqi "Ubuntu" /etc/issue || grep -Eq "Ubuntu" /etc/*-release; then - OSNAME='ubuntu' -elif grep -Eqi "Raspbian" /etc/issue || grep -Eq "Raspbian" /etc/*-release; then - OSNAME='raspbian' -else - OSNAME='unknow' -fi - - -CheckJAVA() -{ - which "java" > /dev/null - if [ $? -eq 0 ] - then - echo 'java is exist' - elif [ "ubuntu" == "$OSNAME" ] || [ "debian" == "$OSNAME" ] ;then - echo 'java install...' - apt install -y default-jdk - - export JAVA_HOME=/usr/lib/jvm/default-java - else - echo 'java install...' - yum install -y java - fi -} - -# export JAVA_HOME=/usr/lib/jvm/default-java -#JAVA_BIN=/usr/lib/jvm/default-java/bin -#JRE_HOME=/usr/lib/jvm/default-java/jre -#PATH=$PATH:/usr/lib/jvm/default-java/bin:/usr/lib/jvm/default-java/jre/bin -#CLASSPATH=/usr/lib/jvm/default-java/jre/lib:/usr/lib/jvm/default-java/lib:/usr/lib/jvm/default-java/jre/lib/charsets.jar - - -Install_csvn() -{ - CheckJAVA - mkdir -p $serverPath/source - - echo '正在安装脚本文件...' > $install_tmp - - CSVN_SOURCE='https://github.com/midoks/mdserver-web/releases/download/init/CollabNetSubversionEdge-5.1.4_linux-x86_64.tar.xz' - - if [ ! -f $serverPath/source/csvn.tar.xz ];then - wget -O $serverPath/source/csvn.tar.xz ${CSVN_SOURCE} - fi - - cd $serverPath/source && tar -Jxf $serverPath/source/csvn.tar.xz - mv $serverPath/source/csvn $serverPath/csvn - echo '5.1' > $serverPath/csvn/version.pl - - - if id -u csvn > /dev/null 2>&1; then - echo "csvn user exists" - else - groupadd csvn - useradd -g csvn csvn - cp /etc/sudoers{,.`date +"%Y-%m-%d_%H-%M-%S"`} - echo "csvn ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers - fi - - chown -R csvn:csvn $serverPath/csvn - - $serverPath/csvn/bin/csvn install - $serverPath/csvn/bin/csvn-httpd install - - echo '安装完成' > $install_tmp -} - -Uninstall_csvn() -{ - rm -rf $serverPath/csvn -} - - -action=$1 -host=$2 -if [ "${1}" == 'install' ];then - Install_csvn -else - Uninstall_csvn -fi diff --git a/plugins/csvn/js/csvn.js b/plugins/csvn/js/csvn.js deleted file mode 100755 index 5df2d6d41..000000000 --- a/plugins/csvn/js/csvn.js +++ /dev/null @@ -1,500 +0,0 @@ -pluginService('csvn'); - -function csvnPost(method,args,callback){ - var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - $.post('/plugins/run', {name:'csvn', func:method, args:JSON.stringify(args)}, function(data) { - layer.close(loadT); - if (!data.status){ - layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - if(typeof(callback) == 'function'){ - callback(data); - } - },'json'); -} - - - -function csvnEdit(){ - - csvnPost('csvn_edit',{} , function(data){ - // console.log(data); - var rdata = $.parseJSON(data.data); - var edit = '

通用的手动编辑:

'; - edit +='
\ - \ - \ - \ -
'; - $(".soft-man-con").html(edit); - }); - -} - - -function csvnUserFind(){ - var search = $('#csvn_find_user').val(); - if (search==''){ - layer.msg('搜索字符不能为空!',{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - csvnUserList(1, search); -} - -function csvnUserList(page, search) { - - var _data = {}; - if (typeof(page) =='undefined'){ - var page = 1; - } - - _data['page'] = page; - _data['page_size'] = 10; - if(typeof(search) != 'undefined'){ - _data['search'] = search; - } - - csvnPost('user_list', _data, function(data){ - - var rdata = $.parseJSON(data.data); - // console.log(rdata); - content = '
'; - content += '
'; - - content += '
'; - content += ''; - content += ''; - content += ''; - content += ''; - - content += ''; - - ulist = rdata.data; - for (i in ulist){ - content += ''; - } - - content += ''; - content += '
用户名操作(添加)
'+ulist[i]+''+ - '删除 | ' + - '改密
'; - - page = ''; - - content += page; - - $(".soft-man-con").html(content); - }); -} - -function csvnDelUser(name){ - var loadOpen = layer.open({ - type: 1, - title: '删除用户', - area: '350px', - content:"
\ -
你要确认要删除"+ name + "账户?
\ -
\ - \ - \ -
\ -
" - }); - - $('#csvn_del_close').click(function(){ - layer.close(loadOpen); - }); - - $('#csvn_del_ok').click(function(){ - _data = {}; - _data['username'] = name; - var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - $.post('/plugins/run', {name:'csvn', func:'user_del', args:JSON.stringify(_data)}, function(data) { - layer.close(loadT); - if (!data.status){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - if (data.data !='ok'){ - layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']}); - } - - layer.close(loadOpen); - layer.msg("删除成功!",{icon:1,time:3000,shade: [0.3, '#000']}); - - },'json'); - }); -} - -function csvnAddUser(username){ - - user_input = '' - if (typeof(username) == 'undefined'){ - user_input = "
"; - } else { - user_input = "
"; - } - - var loadOpen = layer.open({ - type: 1, - title: '添加用户', - area: '240px', - content:"
\ -
\ - "+user_input+"\ -
\ -
\ -
\ - \ - \ -
\ -
" - }); - - $('#csvn_add_close').click(function(){ - layer.close(loadOpen); - }); - - $('#csvn_add_ok').click(function(){ - _data = {}; - - _data['username'] = $('#csvn_username').val(); - _data['password'] = $('#csvn_password').val(); - - var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - $.post('/plugins/run', {name:'csvn', func:'user_add', args:JSON.stringify(_data)}, function(data) { - layer.close(loadT); - if (!data.status){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - if (data.data !='ok'){ - layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']}); - } - - csvnUserList(); - layer.close(loadOpen); - layer.msg("操作成功!",{icon:1,time:3000,shade: [0.3, '#000']}); - },'json'); - }); -} - -function csvnModPwdUser(name){ - csvnAddUser(name); -} - -function csvnProjectFind(){ - var search = $('#csvn_project_find').val(); - if (search == ''){ - layer.msg('查找字符不能为空!',{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - csvnProjectList(1, search); -} - -function csvnProjectList(page, search){ - var _data = {}; - _data['page_size'] = 10; - if (typeof(search) != 'undefined'){ - _data['search'] = search; - } - - if (typeof(page) != 'undefined'){ - _data['page'] = page; - setCookie('csvnProjectListPage',page); - } else { - _data['page'] = 1; - cookie_page = getCookie('csvnProjectListPage') - if (cookie_page >0){ - _data['page'] = cookie_page; - } - } - - csvnPost('project_list', _data, function(data){ - - var rdata = $.parseJSON($.trim(data.data)); - var csvn_mg = project_url = 'http://' +rdata['ip'] +(rdata['csvn_port'] == '80' ? '': ':'+rdata['csvn_port']); - - content = '
'; - content += '
'; - - content += '
'; - content += ''; - content += ''; - content += ''; - content += ''; - content += ''; - content += ''; - - // console.log(rdata); - ulist = rdata.data; - for (i in ulist){ - var project_url = 'http://' +rdata['ip'] +(rdata['port'] == '80' ? '': ':'+rdata['port'])+ '/svn/'+ulist[i]['name']; - var code_url = 'http://' +rdata['ip'] +(rdata['port'] == '80' ? '': ':'+rdata['port'])+ '/viewvc/'+ulist[i]['name']; - content += ''+ - ''; - } - - content += ''; - content += '
项目名地址操作(添加) | 后台管理
'+ulist[i]['name']+''+project_url+''+ - '删除 | ' + - '权限 | ' + - '源码 | ' + - '脚本' + - '
'; - - page = ''; - - content += page; - $(".soft-man-con").html(content); - }); -} - -function csvnDelProject(name){ - var loadOpen = layer.open({ - type: 1, - title: '删除用户', - area: '350px', - content:"
\ -
你要确认要删除"+ name + "账户?
\ -
\ - \ - \ -
\ -
" - }); - - $('#csvn_del_close').click(function(){ - layer.close(loadOpen); - }); - - $('#csvn_del_ok').click(function(){ - var _data = {}; - _data['name'] = name; - var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - $.post('/plugins/run', {name:'csvn', func:'project_del', args:JSON.stringify(_data)}, function(data) { - layer.close(loadT); - if (!data.status){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - if (data.data !='ok'){ - layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']}); - return; - } - - csvnProjectList(); - layer.close(loadOpen); - layer.msg("删除成功!",{icon:1,time:3000,shade: [0.3, '#000']}); - },'json'); - }); -} - -function csvnAddProject(){ - - var loadOpen = layer.open({ - type: 1, - title: '添加项目', - area: '240px', - content:"
\ -
\ -
\ -
\ -
\ - \ - \ -
\ -
" - }); - - $('#csvn_project_close').click(function(){ - layer.close(loadOpen); - }); - - $('#csvn_project_ok').click(function(){ - var _data = {}; - _data['name'] = $('#csvn_name').val(); - - csvnPost('project_add', _data, function(data){ - - if (data.data !='ok'){ - layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']}); - return; - } - - csvnProjectList(); - layer.close(loadOpen); - layer.msg("操作成功!",{icon:1,time:3000,shade: [0.3, '#000']}); - }); - }); -} - - -function csvnProjectScript(pname, has_hook){ - - var html = ''; - if (has_hook){ - html += ''; - html += ''; - html += ''; - html += ''; - } else { - html += ''; - } - - var loadOpen = layer.open({ - type: 1, - title: '脚本设置', - area: '240px', - content:'
'+html+'
' - }); -} - -function csvnProjectScriptLoad(pname){ - csvnPost('project_script_load', {'pname':pname}, function(data){ - if (data.data != 'ok'){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - layer.msg('加载成功!',{icon:1,time:2000,shade: [0.3, '#000']}); - setTimeout(function(){ - csvnProjectList(); - },2000); - }); -} - -function csvnProjectScriptUnload(pname){ - csvnPost('project_script_unload', {'pname':pname}, function(data){ - if (data.data != 'ok'){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - layer.msg('卸载成功!',{icon:1,time:2000,shade: [0.3, '#000']}); - setTimeout(function(){ - csvnProjectList(); - },2000); - }); -} - -function csvnProjectScriptEdit(pname){ - csvnPost('project_script_edit', {'pname':pname}, function(data){ - var rdata = $.parseJSON(data.data); - if (rdata['status']){ - onlineEditFile(0, rdata['path']); - csvnProjectList(); - } else { - layer.msg(rdata.msg,{icon:1,time:2000,shade: [0.3, '#000']}); - } - }); -} - -function csvnProjectScriptDebug(pname){ - csvnPost('project_script_debug', {'pname':pname}, function(data){ - var rdata = $.parseJSON(data.data); - if (rdata['status']){ - onlineEditFile(0, rdata['path']); - csvnProjectList(); - } else { - layer.msg(rdata.msg,{icon:1,time:2000,shade: [0.3, '#000']}); - } - }); -} - - -function csvnAclAdd(pname){ - var uname = $('#csvn_username').val(); - if (uname == ''){ - layer.msg('添加用户名不能为空!',{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - csvnPost('project_acl_add', {'pname':pname,'uname':uname}, function(data){ - if (data.data != 'ok'){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - $('.layui-layer-close1').click(); - csvnAclProject(pname); - }); -} - -function csvnAclDel(pname, uname){ - csvnPost('project_acl_del', {'pname':pname,'uname':uname}, function(data){ - if (data.data != 'ok'){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - $('.layui-layer-close1').click(); - csvnAclProject(pname); - }); -} - -function csvnAclSet(obj, pname, uname, acl, selected){ - - if (selected){ - $(obj).prop('checked',true); - layer.msg('权限没有变化!',{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - csvnPost('project_acl_set', {'pname':pname,'uname':uname, 'acl':acl}, function(data){ - if (data.data != 'ok'){ - layer.msg(data.data,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } - - $('.layui-layer-close1').click(); - csvnAclProject(pname); - }); -} - -function csvnAclProject(pname){ - csvnPost('project_acl_list', {'name':pname}, function(data){ - - var rdata = []; - try { - rdata = $.parseJSON(data.data); - } catch(e){} - - var list = ''; - for (i in rdata) { - var user = rdata[i]['user']; - var acl = ''; - if (rdata[i]['acl'] == 'r'){ - acl += ' 只读 | 读写'; - } else { - acl += ' 只读 | 读写'; - } - - list += ''+user+'' + acl +''+ - '删除'+''; - } - - var loadOpen = layer.open({ - type: 1, - title: '项目('+pname+')权限设置', - area: '300px', - content:"
\ -
\ -
\ -
\ -
\ - "+list+"\ -
用户权限操作
\ -
\ -
" - }); - }); -} \ No newline at end of file