Skip to content

Commit 19e5418

Browse files
committed
move svnpanel to github
0 parents commit 19e5418

31 files changed

+4850
-0
lines changed

LICENSE

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
<<<<<<< HEAD
2+
Copyright (c) 2016, scnace
3+
All rights reserved.
4+
5+
Redistribution and use in source and binary forms, with or without modification,
6+
are permitted provided that the following conditions are met:
7+
8+
* Redistributions of source code must retain the above copyright notice, this
9+
list of conditions and the following disclaimer.
10+
11+
* Redistributions in binary form must reproduce the above copyright notice, this
12+
list of conditions and the following disclaimer in the documentation and/or
13+
other materials provided with the distribution.
14+
15+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
19+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
22+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+
=======
26+
Apache License
27+
Version 2.0, January 2004
28+
http://www.apache.org/licenses/
29+
30+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
31+
32+
1. Definitions.
33+
34+
"License" shall mean the terms and conditions for use, reproduction,
35+
and distribution as defined by Sections 1 through 9 of this document.
36+
37+
"Licensor" shall mean the copyright owner or entity authorized by
38+
the copyright owner that is granting the License.
39+
40+
"Legal Entity" shall mean the union of the acting entity and all
41+
other entities that control, are controlled by, or are under common
42+
control with that entity. For the purposes of this definition,
43+
"control" means (i) the power, direct or indirect, to cause the
44+
direction or management of such entity, whether by contract or
45+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
46+
outstanding shares, or (iii) beneficial ownership of such entity.
47+
48+
"You" (or "Your") shall mean an individual or Legal Entity
49+
exercising permissions granted by this License.
50+
51+
"Source" form shall mean the preferred form for making modifications,
52+
including but not limited to software source code, documentation
53+
source, and configuration files.
54+
55+
"Object" form shall mean any form resulting from mechanical
56+
transformation or translation of a Source form, including but
57+
not limited to compiled object code, generated documentation,
58+
and conversions to other media types.
59+
60+
"Work" shall mean the work of authorship, whether in Source or
61+
Object form, made available under the License, as indicated by a
62+
copyright notice that is included in or attached to the work
63+
(an example is provided in the Appendix below).
64+
65+
"Derivative Works" shall mean any work, whether in Source or Object
66+
form, that is based on (or derived from) the Work and for which the
67+
editorial revisions, annotations, elaborations, or other modifications
68+
represent, as a whole, an original work of authorship. For the purposes
69+
of this License, Derivative Works shall not include works that remain
70+
separable from, or merely link (or bind by name) to the interfaces of,
71+
the Work and Derivative Works thereof.
72+
73+
"Contribution" shall mean any work of authorship, including
74+
the original version of the Work and any modifications or additions
75+
to that Work or Derivative Works thereof, that is intentionally
76+
submitted to Licensor for inclusion in the Work by the copyright owner
77+
or by an individual or Legal Entity authorized to submit on behalf of
78+
the copyright owner. For the purposes of this definition, "submitted"
79+
means any form of electronic, verbal, or written communication sent
80+
to the Licensor or its representatives, including but not limited to
81+
communication on electronic mailing lists, source code control systems,
82+
and issue tracking systems that are managed by, or on behalf of, the
83+
Licensor for the purpose of discussing and improving the Work, but
84+
excluding communication that is conspicuously marked or otherwise
85+
designated in writing by the copyright owner as "Not a Contribution."
86+
87+
"Contributor" shall mean Licensor and any individual or Legal Entity
88+
on behalf of whom a Contribution has been received by Licensor and
89+
subsequently incorporated within the Work.
90+
91+
2. Grant of Copyright License. Subject to the terms and conditions of
92+
this License, each Contributor hereby grants to You a perpetual,
93+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
94+
copyright license to reproduce, prepare Derivative Works of,
95+
publicly display, publicly perform, sublicense, and distribute the
96+
Work and such Derivative Works in Source or Object form.
97+
98+
3. Grant of Patent License. Subject to the terms and conditions of
99+
this License, each Contributor hereby grants to You a perpetual,
100+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
101+
(except as stated in this section) patent license to make, have made,
102+
use, offer to sell, sell, import, and otherwise transfer the Work,
103+
where such license applies only to those patent claims licensable
104+
by such Contributor that are necessarily infringed by their
105+
Contribution(s) alone or by combination of their Contribution(s)
106+
with the Work to which such Contribution(s) was submitted. If You
107+
institute patent litigation against any entity (including a
108+
cross-claim or counterclaim in a lawsuit) alleging that the Work
109+
or a Contribution incorporated within the Work constitutes direct
110+
or contributory patent infringement, then any patent licenses
111+
granted to You under this License for that Work shall terminate
112+
as of the date such litigation is filed.
113+
114+
4. Redistribution. You may reproduce and distribute copies of the
115+
Work or Derivative Works thereof in any medium, with or without
116+
modifications, and in Source or Object form, provided that You
117+
meet the following conditions:
118+
119+
(a) You must give any other recipients of the Work or
120+
Derivative Works a copy of this License; and
121+
122+
(b) You must cause any modified files to carry prominent notices
123+
stating that You changed the files; and
124+
125+
(c) You must retain, in the Source form of any Derivative Works
126+
that You distribute, all copyright, patent, trademark, and
127+
attribution notices from the Source form of the Work,
128+
excluding those notices that do not pertain to any part of
129+
the Derivative Works; and
130+
131+
(d) If the Work includes a "NOTICE" text file as part of its
132+
distribution, then any Derivative Works that You distribute must
133+
include a readable copy of the attribution notices contained
134+
within such NOTICE file, excluding those notices that do not
135+
pertain to any part of the Derivative Works, in at least one
136+
of the following places: within a NOTICE text file distributed
137+
as part of the Derivative Works; within the Source form or
138+
documentation, if provided along with the Derivative Works; or,
139+
within a display generated by the Derivative Works, if and
140+
wherever such third-party notices normally appear. The contents
141+
of the NOTICE file are for informational purposes only and
142+
do not modify the License. You may add Your own attribution
143+
notices within Derivative Works that You distribute, alongside
144+
or as an addendum to the NOTICE text from the Work, provided
145+
that such additional attribution notices cannot be construed
146+
as modifying the License.
147+
148+
You may add Your own copyright statement to Your modifications and
149+
may provide additional or different license terms and conditions
150+
for use, reproduction, or distribution of Your modifications, or
151+
for any such Derivative Works as a whole, provided Your use,
152+
reproduction, and distribution of the Work otherwise complies with
153+
the conditions stated in this License.
154+
155+
5. Submission of Contributions. Unless You explicitly state otherwise,
156+
any Contribution intentionally submitted for inclusion in the Work
157+
by You to the Licensor shall be under the terms and conditions of
158+
this License, without any additional terms or conditions.
159+
Notwithstanding the above, nothing herein shall supersede or modify
160+
the terms of any separate license agreement you may have executed
161+
with Licensor regarding such Contributions.
162+
163+
6. Trademarks. This License does not grant permission to use the trade
164+
names, trademarks, service marks, or product names of the Licensor,
165+
except as required for reasonable and customary use in describing the
166+
origin of the Work and reproducing the content of the NOTICE file.
167+
168+
7. Disclaimer of Warranty. Unless required by applicable law or
169+
agreed to in writing, Licensor provides the Work (and each
170+
Contributor provides its Contributions) on an "AS IS" BASIS,
171+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
172+
implied, including, without limitation, any warranties or conditions
173+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
174+
PARTICULAR PURPOSE. You are solely responsible for determining the
175+
appropriateness of using or redistributing the Work and assume any
176+
risks associated with Your exercise of permissions under this License.
177+
178+
8. Limitation of Liability. In no event and under no legal theory,
179+
whether in tort (including negligence), contract, or otherwise,
180+
unless required by applicable law (such as deliberate and grossly
181+
negligent acts) or agreed to in writing, shall any Contributor be
182+
liable to You for damages, including any direct, indirect, special,
183+
incidental, or consequential damages of any character arising as a
184+
result of this License or out of the use or inability to use the
185+
Work (including but not limited to damages for loss of goodwill,
186+
work stoppage, computer failure or malfunction, or any and all
187+
other commercial damages or losses), even if such Contributor
188+
has been advised of the possibility of such damages.
189+
190+
9. Accepting Warranty or Additional Liability. While redistributing
191+
the Work or Derivative Works thereof, You may choose to offer,
192+
and charge a fee for, acceptance of support, warranty, indemnity,
193+
or other liability obligations and/or rights consistent with this
194+
License. However, in accepting such obligations, You may act only
195+
on Your own behalf and on Your sole responsibility, not on behalf
196+
of any other Contributor, and only if You agree to indemnify,
197+
defend, and hold each Contributor harmless for any liability
198+
incurred by, or claims asserted against, such Contributor by reason
199+
of your accepting any such warranty or additional liability.
200+
201+
END OF TERMS AND CONDITIONS
202+
203+
APPENDIX: How to apply the Apache License to your work.
204+
205+
To apply the Apache License to your work, attach the following
206+
boilerplate notice, with the fields enclosed by brackets "{}"
207+
replaced with your own identifying information. (Don't include
208+
the brackets!) The text should be enclosed in the appropriate
209+
comment syntax for the file format. We also recommend that a
210+
file or class name and description of purpose be included on the
211+
same "printed page" as the copyright notice for easier
212+
identification within third-party archives.
213+
214+
Copyright {yyyy} {name of copyright owner}
215+
216+
Licensed under the Apache License, Version 2.0 (the "License");
217+
you may not use this file except in compliance with the License.
218+
You may obtain a copy of the License at
219+
220+
http://www.apache.org/licenses/LICENSE-2.0
221+
222+
Unless required by applicable law or agreed to in writing, software
223+
distributed under the License is distributed on an "AS IS" BASIS,
224+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
225+
See the License for the specific language governing permissions and
226+
limitations under the License.
227+
>>>>>>> fab243d49c78012a927984d72d25c8bd02b8e363

README.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# svnpanel
2+
3+
A light auth management tool for svn implement by Golang.
4+
5+
## Arch
6+
7+
### list
8+
9+
> use `svnlook` command ,and implement `svnlook` wrapper functions .
10+
11+
0x00 列出所有svn repo
12+
13+
> Read conf directory and show some useful configurations .
14+
15+
0x01 列出当前repo的一些设置
16+
17+
* SVNROOT/conf/svnserve.conf
18+
19+
* **是否允许匿名登录** : 读取`anon-access`的值,如果`anon-access`被注释掉(即`#anon-access=xxx`,svn创建repo时的默认设置。),则被认为开启匿名登录(值不为`none`都被认为是匿名登录);
20+
21+
* ~~**匿名用户文件读写权限** : 读取`auth-access`的值,如果值为`write`,那么通过验证(已登录)的用户都可以读和写;如果值为`read`,那么匿名的用户则不可以写(不能update到svn服务器)~~(feature deleted because of `anon-access` is always set `none`)
22+
23+
* **开启用户设置(password)** : 开启即可进行用户增删改查(即设置`password-db=passwd`)。
24+
25+
* **开启权限设置(authz)** : 开启即可进行用户组的权限配置(即设置`authz-db=authz`)
26+
27+
* SVNROOT/conf/passwd
28+
29+
当开启`passwd`后,获取`[users]`字段下内容,`json化`用户名 和 密码 .
30+
31+
* SVNROOT/conf/authz
32+
33+
当开启`authz`后,读取 ~~`[aliases]`~~,`[groups]`,和 一些repo 目录的权限。
34+
35+
### config
36+
37+
> edit files under `conf` directory and save to the conf .
38+
39+
0x02 异步修改conf设置
40+
41+
* 修改passwd文件
42+
43+
处理前端发过来的json(`{"old":["username":"","password":""],"new":["username":"","password":""]}`),old用于查询要修改的帐号,new用来替换修改的帐号。
44+
45+
* 修改authz文件(暂不支持aliases)
46+
47+
## APIs
48+
49+
|Router |Method|DataType| Service |
50+
|---|---|---|
51+
|/config:repo|GET|JSON|查询选中版本库的详细信息|
52+
|/repos|GET|JSON|查询全部版本库|
53+
|/edit|PUT|JSON|修改svnserve.conf的字段|
54+
|/passwd|POST|JSON|修改passwd下的用户名和密码|
55+
|/newpasswd|POST|JSON|passwd下添加新的用户|
56+
|/delpasswd|POST|JSON|删除passwd下的某个用户信息|
57+
|/groups|POST|JSON|修改authz下group字段下的用户组设置|
58+
|/addgroup|POST|JSON|增加一个用户组|
59+
|/delgroup|POST|JSON|删除一个用户组|
60+
|/editauth|POST|JSON|修改一个路径的权限|
61+
|/delauth|POST|JSON|删除一条权限|
62+
|/addauth|POST|JSON|增加一条权限|
63+
64+
## How To
65+
66+
配置文件位于根目录下 文件名是 svnadmin.json
67+
68+
key的生成规则是 `密码?盐?`
69+
70+
盐可以自定义
71+
72+
## preview
73+
74+
![screenshots](./feature.png)

feature.png

47.2 KB
Loading

gconfig/gconfig.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package gconfig
2+
3+
import (
4+
"encoding/json"
5+
"io/ioutil"
6+
"os"
7+
)
8+
9+
//GlobalConf ...
10+
type GlobalConf struct {
11+
//SVNPATH ...
12+
SVNPATH string `json:"svnroot"`
13+
//Username ...
14+
Username string `json:"username"`
15+
//Password ...
16+
Password string `json:"password"`
17+
//Salt ...
18+
Salt string `json:"salt"`
19+
}
20+
21+
//NewGconfig init a configuration (read json from svnadmin.json)
22+
func NewGconfig() *GlobalConf {
23+
file, err := os.Open("../svnadmin.json")
24+
if err != nil {
25+
panic(err)
26+
}
27+
defer file.Close()
28+
content, err := ioutil.ReadAll(file)
29+
if err != nil {
30+
panic(err)
31+
}
32+
//content is a json file
33+
conf := new(GlobalConf)
34+
scontent := string(content)
35+
err = json.Unmarshal([]byte(scontent), &conf)
36+
if err != nil {
37+
panic(err)
38+
}
39+
return conf
40+
}

gconfig/gconfig_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package gconfig
2+
3+
import "testing"
4+
5+
func TestNewGconfig(t *testing.T) {
6+
conf := NewGconfig()
7+
t.Log(conf.Username)
8+
}

0 commit comments

Comments
 (0)