├── Dockerfile
├── LICENSE
├── README.md
├── doc
└── resources
│ ├── 1.png
│ ├── 2.png
│ └── 3.png
├── pom.xml
├── release
└── deploy
│ ├── conf
│ ├── konga.xml
│ └── logback.xml
│ ├── dockerstart.sh
│ ├── lib
│ ├── args4j-2.33.jar
│ ├── commons-codec-1.11.jar
│ ├── commons-lang3-3.3.2.jar
│ ├── dom4j-1.6.1.jar
│ ├── hamcrest-core-1.3.jar
│ ├── jcl-over-slf4j-1.7.19.jar
│ ├── junit-4.11.jar
│ ├── konga-lang-plugin-1.0.0.jar
│ ├── logback-access-1.1.3.jar
│ ├── logback-classic-1.1.3.jar
│ ├── logback-core-1.1.3.jar
│ ├── lombok-1.18.12.jar
│ ├── slf4j-api-1.7.19.jar
│ └── xml-apis-1.0.b2.jar
│ └── start.sh
└── src
└── main
├── java
└── com
│ └── jsonljd
│ └── konga
│ └── lang
│ ├── StartService.java
│ ├── core
│ ├── IConfigContext.java
│ ├── IFileParse.java
│ ├── IReplaceService.java
│ ├── IRunService.java
│ └── impl
│ │ ├── DefaultConfigContext.java
│ │ ├── DefaultFileParse.java
│ │ └── DefaultReplaceService.java
│ └── entity
│ ├── ConfigContext.java
│ ├── MainArg.java
│ └── RepalceItem.java
└── resources
├── dockerstart.sh
├── konga.xml
├── logback.xml
└── start.sh
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM openjdk:8-jre
2 | MAINTAINER liangjiandong <39368574@qq.com>
3 |
4 | COPY ./release/deploy/lib/* /app/lang/lib/
5 | COPY ./release/deploy/conf/* /app/lang/conf/
6 | COPY ./release/deploy/dockerstart.sh /app/lang/
7 |
8 | WORKDIR /app/lang
9 |
10 | VOLUME /app/assets
11 |
12 | ENTRYPOINT ["/bin/bash","/app/lang/dockerstart.sh","start"]
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 LiangJianDong
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # konga-lang-plugin
2 | konga的语言包,中文翻译
3 |
4 | # 前言
5 |
6 | > Kong([KONG Admin API](http://getkong.org))已经有好多公司在用,[Konga](https://github.com/pantsel/konga)是管理Kong的管理工具之一,感觉也是比较好用,由于Konga是由国外牛人开发的,所以并没有提供过多的语言支持,并且翻查源码都是写死的,为了支持国内用户方便使用,特开发本语言插件包,希望有用,如果喜欢请star 一下。
7 |
8 | # TODO
9 | [ √ ] 基本框架
10 |
11 | [ √ ] 表层的语言翻译
12 |
13 | [ ] 细节的语言翻译
14 |
15 | [ ] 多个国语言包
16 |
17 | # 预览
18 |
19 | 
20 |
21 | 
22 |
23 | 
24 |
25 |
26 |
27 | # 设计原则性
28 | * 尽量不损坏Konga源代码,保证Konga的官方版本升级的可用性。
29 |
30 | * 原则上不过度翻译Kong的概念术语 consumers、 upstreams、services、routes 等,顾只处理表层的翻译,深层的就不做过多的处理,避免过度翻译,加大使用难度。
31 |
32 | # 使用方法
33 |
34 | > 由于Konga的作者采用两种使用方式,安装nodejs部署运行和docker方式运行,顾使用方法也采用两个
35 |
36 | ## 直接运行(使用前需要安装java,jdk或jre)
37 | ```
38 | cd /usr/konga #konga根目录和assets同级
39 | wget https://github.com/jsonljd/konga-lang-plugin/releases/download/1.0.0/deploy.zip #下载语言包
40 | unzip deploy.zip #解压语言包
41 | npm stop #如果已经运行,需要先停止
42 | cp -R assets assets_bak #保存原来的web文件,如果有问题可以恢复
43 | rm -rf .tmp #删除node启动的临时文件夹
44 | cd ./lang #进入语言包
45 | sh ./start.sh start #执行语言包处理 执行的情况可以查看logs文件夹日志
46 | cd .. #返回上一层
47 | npm start #启动konga
48 | ```
49 |
50 | ## docker方式
51 | > [查看语言包镜像仓库](https://hub.docker.com/r/jsonljd/konga-lang-plugin)
52 | ```
53 | mkdir dockertmp #创建一个临时目录
54 | cd dockertmp
55 | docker ps -a #查找konga的容器id
56 | docker stop {konga容器id} #停止正在运行的容器
57 | docker cp {konga容器id}:/app/assets ./ #将容器的文件复制到本地
58 |
59 | docker pull jsonljd/konga-lang-plugin:latest #拉取语言插件镜像
60 | docker run -d --name konga-lang-plugin \
61 | -v ./assets:/app/assets \
62 | jsonljd/konga-lang-plugin #运行镜像,需要设置逻辑目录
63 |
64 | docker cp ./assets {konga容器id}:/app #覆盖成功后即可
65 | docker start {konga容器id} #重启容器
66 | ```
67 |
--------------------------------------------------------------------------------
/doc/resources/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/doc/resources/1.png
--------------------------------------------------------------------------------
/doc/resources/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/doc/resources/2.png
--------------------------------------------------------------------------------
/doc/resources/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/doc/resources/3.png
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | 4.0.0
6 |
7 | com.jsonljd
8 | konga-lang-plugin
9 | 1.0.0
10 | konga-lang-plugin
11 | https://github.com/jsonljd/konga-lang-plugin
12 |
13 |
14 | UTF-8
15 | 1.8
16 | 1.8
17 | ${project.basedir}/release
18 | deploy
19 | 1.8
20 | dockerhub
21 | jsonljd
22 |
23 |
24 |
25 |
26 | junit
27 | junit
28 | 4.11
29 | test
30 |
31 |
32 |
33 | dom4j
34 | dom4j
35 | 1.6.1
36 |
37 |
38 |
39 | args4j
40 | args4j
41 | 2.33
42 |
43 |
44 |
45 | org.projectlombok
46 | lombok
47 | 1.18.12
48 |
49 |
50 |
51 | org.slf4j
52 | jcl-over-slf4j
53 | 1.7.19
54 |
55 |
56 | org.slf4j
57 | slf4j-api
58 | 1.7.19
59 |
60 |
61 | ch.qos.logback
62 | logback-core
63 | 1.1.3
64 |
65 |
66 | ch.qos.logback
67 | logback-access
68 | 1.1.3
69 |
70 |
71 | ch.qos.logback
72 | logback-classic
73 | 1.1.3
74 |
75 |
76 | commons-codec
77 | commons-codec
78 | 1.11
79 |
80 |
81 | org.apache.commons
82 | commons-lang3
83 | 3.3.2
84 |
85 |
86 |
87 |
88 |
89 | org.apache.maven.plugins
90 | maven-compiler-plugin
91 | 3.5.1
92 |
93 | 1.7
94 | 1.7
95 | ${project.build.sourceEncoding}
96 |
97 |
98 |
99 | org.apache.maven.plugins
100 | maven-surefire-plugin
101 |
102 | true
103 |
104 |
105 |
106 | org.apache.maven.plugins
107 | maven-dependency-plugin
108 | 3.0.1
109 |
110 |
111 | copy-dependencies
112 | package
113 |
114 | copy-dependencies
115 |
116 |
117 | ${project.release.directory}/${project.deploy}/lib
118 | false
119 | false
120 | true
121 |
122 |
123 |
124 |
125 |
126 | org.apache.maven.plugins
127 | maven-resources-plugin
128 | 3.0.1
129 |
130 |
131 | copy-resources
132 | package
133 |
134 | copy-resources
135 |
136 |
137 | UTF-8
138 | ${project.release.directory}/${project.deploy}/conf
139 |
140 |
141 | src/main/resources/
142 |
143 | *.xml
144 | *.yml
145 | *.properties
146 | *.conf
147 |
148 |
149 |
150 |
151 |
152 |
153 | copy-sh
154 | package
155 |
156 | copy-resources
157 |
158 |
159 | UTF-8
160 | ${project.release.directory}/${project.deploy}/
161 |
162 |
163 | src/main/resources/
164 |
165 | *.sh
166 | *.bat
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 | org.apache.maven.plugins
176 | maven-jar-plugin
177 | 2.4
178 |
179 |
180 | jarexclude
181 | package
182 |
183 | jar
184 |
185 |
186 | ${project.release.directory}/${project.deploy}/lib
187 |
188 | *.xml
189 | *.yml
190 | *.properties
191 | *.conf
192 | *.sh
193 |
194 |
195 |
196 |
197 |
198 |
199 | com.spotify
200 | dockerfile-maven-plugin
201 | 1.4.13
202 |
203 |
204 | default
205 |
206 | build
207 | push
208 |
209 |
210 |
211 |
212 | true
213 | ${docker.image.prefix}/konga-lang-plugin
214 | true
215 | ${project.version}
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 | file-repository
224 | file:${project.release.directory}/${project.deploy}
225 |
226 |
227 |
228 |
--------------------------------------------------------------------------------
/release/deploy/conf/konga.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | js/app/dashboard/dashboard.html
5 | -
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Connections page.]]>
16 | 连接管理 页面.]]>
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | connection is valid and Kong is up and running.]]>
36 | 连接管理 设置有可用的Kong并且是运行中.]]>
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | ACTIVE]]>
48 | 可用的]]>
49 |
50 |
51 | READING]]>
52 | 读取中]]>
53 |
54 |
55 | WRITING]]>
56 | 写入中]]>
57 |
58 |
59 | WAITING]]>
60 | 等待中]]>
61 |
62 |
63 | ACCEPTED]]>
64 | 已接受]]>
65 |
66 |
67 | HANDLED]]>
68 | 已处理]]>
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | HostName]]>
80 | 主机名]]>
81 |
82 |
83 | Tag Line]]>
84 | 基 线]]>
85 |
86 |
87 | Version]]>
88 | 版本号]]>
89 |
90 |
91 | LUA Version]]>
92 | LUA版本]]>
93 |
94 |
95 | Admin listen]]>
96 | 管理监听]]>
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | Host]]>
108 | 主机]]>
109 |
110 |
111 | Contact points]]>
112 | 通讯节点]]>
113 |
114 |
115 | Keyspace]]>
116 | 键空间]]>
117 |
118 |
119 | Data Centers]]>
120 | 数据中心]]>
121 |
122 |
123 | Database]]>
124 | 数据库]]>
125 |
126 |
127 | User]]>
128 | 用户]]>
129 |
130 |
131 | Username]]>
132 | 用户名]]>
133 |
134 |
135 | Port]]>
136 | 端口]]>
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 | js/app/connections/partials/create-connection-form.html
150 | -
151 |
152 |
153 | 默认
154 |
155 |
156 |
157 | 键值授权
158 |
159 |
160 |
161 | JWT授权
162 |
163 |
164 |
165 |
166 | js/app/apis/partials/form-api-09.html
167 | -
168 |
169 | Name
]]>
170 | 名称
]]>
171 |
172 |
173 | optional<]]>
174 | 选项<]]>
175 |
176 |
177 | request_host or request_path
.]]>
178 | 请求域名 或者 请求路径
.]]>
179 |
180 |
181 | Request Host$]]>
182 | 请求域名]]>
183 |
184 |
185 | semi-optional<]]>
186 | 半选项<]]>
187 |
188 |
189 | mockbin.com. At least request_host
or request_path
or both should be specified.]]>
190 | mockbin.com. 至少 请求域名
或者 请求路径
或者两者都指向.]]>
191 |
192 |
193 | Request Path$]]>
194 | 请求路径]]>
195 |
196 |
197 | /someservice. At least request_host
or request_path
or both should be specified.]]>
198 | /someservice. 至少 请求域名
或者 请求路径
或者两者都指向.]]>
199 |
200 |
201 | Strip Request Path$]]>
202 | 请求路径目录]]>
203 |
204 |
205 | /someservice/hello will be resolved to upstream_url/hello
. By default is false.]]>
206 | /someservice/hello 将被解析成 upstream_url/hello
. 默认是否.]]>
207 |
208 |
209 | Preserve Host$]]>
210 | 保留域名]]>
211 |
212 |
213 | Host header sent by the client, instead of replacing it with the hostname
of the upstream_url
. By default is false.]]>
214 | Host 主机头发送到客户端, 替换为 hostname
主机名 upstream_url
. 默认是否.]]>
215 |
216 |
217 | Upstream URL<]]>
218 | 上行流URL<]]>
219 |
220 |
221 | https://mockbin.com.]]>
222 | https://mockbin.com.]]>
223 |
224 |
225 |
226 |
227 | js/app/apis/partials/form-api-010.html
228 | -
229 |
230 | Name
]]>
231 | 名称
]]>
232 |
233 |
234 | optional<]]>
235 | 选项<]]>
236 |
237 |
238 | request_host or request_path
.]]>
239 | 请求域名 或者 请求路径
.]]>
240 |
241 |
242 | Hosts
]]>
243 | 主机名
]]>
244 |
245 |
246 | semi-optional<]]>
247 | 半选项<]]>
248 |
249 |
250 | example.com. At least one of hosts
, uris
, or methods
should be specified.]]>
251 | example.com。应至少指定主机
、uri
或方法
中的一个。.]]>
252 |
253 |
254 | /my-path. At least one of hosts
, uris
, or methods
should be specified.]]>
255 | /my path。应至少指定主机
、uri
或方法
中的一个。]]>
256 |
257 |
258 | GET,POST
. At least one of hosts
, uris
, or methods
should be specified.]]>
259 | GET,POST
。应至少指定主机
、uri
或方法
中的一个。]]>
260 |
261 |
262 |
263 |
264 | js/app/connections/partials/create-connection-form-flat.html
265 | -
266 |
267 |
268 | 默认
269 |
270 |
271 |
272 | 键值授权
273 |
274 |
275 |
276 | JWT授权
277 |
278 |
279 |
280 | 检查连接中
281 |
282 |
283 |
284 | 创建中
285 |
286 |
287 |
288 | 创建连接
289 |
290 |
291 |
292 |
293 | js/app/core/layout/partials/header.html
294 | -
295 |
296 | Toggle navigation
297 | 导航
298 |
299 |
300 |
301 |
302 |
303 |
304 | Login\<\/a\>]]>
305 | 登录]]>
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 | js/app/core/layout/01_layout-controllers.js
331 | -
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 | js/app/certificates/00_certificates.js
392 | -
393 |
394 | pageName : "Certificates",
395 | pageName : "证书管理",
396 |
397 |
398 | pageDescription : "A certificate object represents a public certificate/private key pair for an SSL certificate. These objects are used by Kong to handle SSL/TLS termination for encrypted requests. Certificates are optionally associated with SNI objects to tie a cert/key pair to one or more hostnames.",
399 | pageDescription : "证书对象表示SSL证书的公共证书/私钥对。Kong使用这些对象来处理加密请求的SSL/TLS终止。证书可以选择与SNI对象关联,以将证书/密钥对绑定到一个或多个主机名。",
400 |
401 |
402 |
403 |
404 | js/app/apis/00_apis.js
405 | -
406 |
407 | pageDescription: "The API object describes an API that's being exposed by Kong. Kong needs to know how to retrieve the API when a consumer is calling it from the Proxy port. Each API object must specify a request host, a request path or both. Kong will proxy all requests to the API to the specified upstream URL.",
408 | pageDescription: "API对象描述了Kong正在公开的API。当消费者从代理端口调用API时,Kong需要知道如何检索它。每个API对象必须指定请求主机、请求路径或两者。Kong将把对API的所有请求代理到指定的上游URL。",
409 |
410 |
411 | pageName: "Edit API",
412 | pageName: "编辑API",
413 |
414 |
415 | displayName: "edit API",
416 | displayName: "编辑API",
417 |
418 |
419 | pageName: "API Plugins",
420 | pageName: "API插件",
421 |
422 |
423 | pageName: "Manage API Plugins",
424 | pageName: "管理API插件",
425 |
426 |
427 | displayName: "manage"
428 | displayName: "管理"
429 |
430 |
431 |
432 |
433 | js/app/users/00_users.js
434 | -
435 |
436 | pageName : "Users",
437 | pageName : "用户管理",
438 |
439 |
440 | pageDescription : "Manage Konga users and user roles"
441 | pageDescription : "管理Konga用户及用户角色"
442 |
443 |
444 |
445 |
446 | js/app/upstreams/01_upstreams.js
447 | -
448 |
449 | pageName : "Upstreams",
450 | pageName : "上游管理",
451 |
452 |
453 | service.v1.xyz with an API object created with an
upstream_url=https://service.v1.xyz/some/path
. Requests for this API would be proxied to the targets defined within the upstream.",]]>
454 | pageDescription : "upstream对象表示虚拟主机名,可用于在多个服务(目标)上加载平衡传入请求。例如,一个名为service.v1.xyz
的上游,其API对象是用一个upstream_url=https://service.v1.xyz/some/path
创建的。对这个API的请求将被代理到上游中定义的目标。",
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 | js/app/users/index.html
464 | -
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 | js/app/connections/index.html
473 | -
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 | js/app/users/user.html
482 | -
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 | Username\<\/th\>$]]>
505 | 用户名]]>
506 |
507 |
508 | First Name\<\/th\>$]]>
509 | 名字]]>
510 |
511 |
512 | Last Name\<\/th\>$]]>
513 | 姓氏]]>
514 |
515 |
516 | Email\<\/th\>$]]>
517 | 邮箱]]>
518 |
519 |
520 | Active connection\<\/th\>$]]>
521 | 是否在线]]>
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 | js/app/cluster/00_cluster.js
535 | -
536 |
537 | pageName : "Cluster",
538 | pageName : "集群",
539 |
540 |
541 |
542 |
543 | js/app/consumers/00_consumers.js
544 | -
545 |
546 | pageName: "Consumers",
547 | pageName: "消费者管理",
548 |
549 |
550 | pageDescription: "The Consumer object represents a consumer - or a user - of an API. You can either rely on Kong as the primary datastore, or you can map the consumer list with your database to keep consistency between Kong and your existing primary datastore.",
551 | pageDescription: "Consumer对象表示API的使用者或用户。您可以将Kong作为主数据存储,也可以将使用者列表与数据库映射,以保持Kong与现有主数据存储之间的一致性。",
552 |
553 |
554 |
555 |
556 | js/app/consumers/index.html
557 | -
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 | js/app/plugins/plugins.html
566 | -
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 | js/app/upstreams/index.html
575 | -
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 | js/app/certificates/certificates.html
584 | -
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 | js/app/healthchecks/00_healthchecks.js
593 | -
594 |
595 | pageName: "Health Checks",
596 | pageName: "健康检查",
597 |
598 |
599 | pageDescription: "Manage API healthchecks",
600 | pageDescription: "管理API接口的健康检查点",
601 |
602 |
603 |
604 |
605 | js/app/info/00_info.js
606 | -
607 |
608 | pageName : "Node Info",
609 | pageName : "节点信息管理",
610 |
611 |
612 | pageDescription : "Generic details about the node",
613 | pageDescription : "有关节点的常规详细信息",
614 |
615 |
616 |
617 |
618 | js/app/plugins/00_plugins.js
619 | -
620 |
621 | pageName: "Plugins",
622 | pageName: "插件管理",
623 |
624 |
625 | pageDescription: "A Plugin entity represents a plugin configuration that will be executed during the HTTP request/response workflow, and it's how you can add functionalities to APIs that run behind Kong, like Authentication or Rate Limiting for example.",
626 | pageDescription: "插件实体表示将在HTTP请求/响应工作流期间执行的插件配置,以及如何向在Kong之后运行的api添加功能,例如身份验证或速率限制。",
627 |
628 |
629 |
630 |
631 | js/app/routes/00_routes.js
632 | -
633 |
634 | pageName: "Routes",
635 | pageName: "路由管理",
636 |
637 |
638 | "The Route entities defines rules to match client requests. Each Route is associated with a Service, and a Service may have multiple Routes associated to it. Every request matching a given Route will be proxied to its associated Service.",
639 | "路由实体定义与客户端请求匹配的规则。每个路由都与一个服务相关联,并且一个服务可能有多个与之关联的路由。与给定路由匹配的每个请求都将被代理到其关联的服务。",
640 |
641 |
642 |
643 |
644 | js/app/services/00_services.js
645 | -
646 |
647 | pageName: "Services",
648 | pageName: "服务节点管理",
649 |
650 |
651 | pageDescription: "Service entities, as the name implies, are abstractions of each of your own upstream services. Examples of Services would be a data transformation microservice, a billing API, etc.",
652 | pageDescription: "服务实体,顾名思义,是每个上游服务的抽象。服务的例子包括数据转换微服务、计费API等。",
653 |
654 |
655 |
656 |
657 | js/app/connections/00_connections.js
658 | -
659 |
660 | pageName : "Connections",
661 | pageName : "连接管理",
662 |
663 |
664 | pageDescription : "Create connections to Kong Nodes and activate the one you want use.",
665 | pageDescription : "创建配置Kong节点信息.",
666 |
667 |
668 |
669 |
670 | js/app/snapshots/00_snapshots.js
671 | -
672 |
673 | pageName : "Snapshots",
674 | pageName : "配置镜像管理",
675 |
676 |
677 |
678 | pageDescription : "获取当前活动节点的快照."
679 |
680 |
681 | will be saved and available for later import.
682 | 将被保存并可供以后导入。
683 |
684 |
685 | pageName : "Snapshot Details",
686 | pageName : "镜像明细",
687 |
688 |
689 |
690 |
691 | js/app/core/auth/login/login.html
692 | -
693 |
694 | Sign in to continue
695 | 登录后继续
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 | Username or Email is required.
707 | 请填入用户名或邮箱
708 |
709 |
710 | Password is required.
711 | 请填入密码
712 |
713 |
714 | Don't have an account?
715 | 是否没有账号?
716 |
717 |
718 | Sign up!
719 | 注册!
720 |
721 |
722 | Sign in
723 | 登 录
724 |
725 |
726 |
727 |
728 | js/app/core/auth/signup/signup.html
729 | -
730 |
731 | The$]]>
732 | 请]]>
733 |
734 |
735 | ]]>
736 | ]]>
737 |
738 |
739 | The email]]>
740 | 请填入]]>
741 |
742 |
743 | $]]>
744 | ]]>
745 |
746 |
747 | The email is]]>
748 | 邮箱]]>
749 |
750 |
751 | $]]>
752 | ]]>
753 |
754 |
755 | ]]>
756 | ]]>
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 | js/app/settings/01_settings.js
774 | -
775 |
776 | pageName: "Settings",
777 | pageName: "设置",
778 |
779 |
780 | displayName: "settings",
781 | displayName: "设置",
782 |
783 |
784 |
785 |
786 | js/app/core/auth/services/AuthService.js
787 | -
788 |
789 | success\(\'You have logged in successfully\!\'\)\;
790 | success('登录成功!');
791 |
792 |
793 | success\(\'You have logged out\.\'\)\;
794 | success('安全退出!');
795 |
796 |
797 |
798 |
799 | js/app/apis/controllers/apis-controller.js
800 | -
801 |
802 | success\(\'API Healthchecks reset successfully\!\'\)\;
803 | success('安全监测重置成功!');
804 |
805 |
806 |
807 |
808 | js/app/apis/controllers/api-health-checks-controller.js
809 | -
810 |
811 | success\(\"Health Checks \" + \(\$scope\.apiHC\.active \? \'enabled\' \: \'disabled\'\) \+ \" \"\)
812 | success("安全监测 " + ($scope.apiHC.active ? '开启' : '禁止') + " ")
813 |
814 |
815 | MessageService\.success\(\"API health checks updated\!\"\)
816 | MessageService.success("API安全监查更新!")
817 |
818 |
819 |
820 |
821 | js/app/apis/controllers/api-details-controller.js
822 | -
823 |
824 | MessageService\.success\(\'API updated successfully\!\'\)
825 | MessageService.success('API更新成功!')
826 |
827 |
828 |
829 |
830 | js/app/apis/controllers/add-api-modal-controller.js
831 | -
832 |
833 | MessageService\.success\(\'Api created\!\'\)
834 | MessageService.success('Api创建成功!')
835 |
836 |
837 |
838 |
839 | js/app/users/user-create-controller.js
840 | -
841 |
842 | MessageService\.success\(\'New user created successfully\'\)\;
843 | MessageService.success('新用户创建成功');
844 |
845 |
846 |
847 |
848 | js/app/users/user-controller.js
849 | -
850 |
851 | MessageService\.success\(\'User \"\' \+ \$scope\.user\.username \+ \'\" updated successfully\'\)\;
852 | MessageService.success('用户 "' + \$scope\.user\.username + '" 更新成功');
853 |
854 |
855 | MessageService\.success\(\'User \"\' \+ \$scope\.user\.username \+ \'\" deleted successfully\'\)\;
856 | MessageService.success('用户 "' + \$scope\.user\.username + '" 删除成功');
857 |
858 |
859 |
860 |
861 | js/app/consumers/credentials/mass-assign-credentials-controller.js
862 | -
863 |
864 | MessageService\.success\(\'Credentials where assigned successfully\!\'\)
865 | MessageService.success('凭据成功分配!')
866 |
867 |
868 |
869 |
870 | js/app/consumers/credentials/consumer-credentials-controller.js
871 | -
872 |
873 | MessageService\.success\(\'Credentials deleted successfully\'\)\;
874 | MessageService.success('凭据删除成功');
875 |
876 |
877 | MessageService\.success\(\'OAuth2 deleted successfully\'\)\;
878 | MessageService.success('OAuth2授权删除成功');
879 |
880 |
881 | MessageService\.success\(\'JWT deleted successfully\'\)\;
882 | MessageService.success('JWT授权删除成功');
883 |
884 |
885 | MessageService\.success\(\'Key deleted successfully\'\)\;
886 | MessageService.success('关键字授权删除成功');
887 |
888 |
889 | MessageService\.success\(\"Consumer updated successfully\!\"\)
890 | MessageService.success("客户端更新成功!")
891 |
892 |
893 |
894 |
895 | js/app/routes/controllers/add-route-modal-controller.js
896 | -
897 |
898 | MessageService\.success\(\'Route created\!\'\)
899 | MessageService.success('路由创建成功!')
900 |
901 |
902 |
903 |
904 | js/app/routes/controllers/route-health-checks-controller.js
905 | -
906 |
907 | MessageService\.success\(\"Health Checks \" + \(\$scope\.routeHC\.active \? \'enabled\' \: \'disabled\'\) \+ \" \"\)
908 | MessageService.success("安全检查 " + ($scope.routeHC.active ? '开启' : '关闭') + " ")
909 |
910 |
911 |
912 |
913 | js/app/dashboard/02_dashboard-controller.js
914 | -
915 |
916 | MessageService\.success\(\'New node created successfully\'\)\;
917 | MessageService.success('新节点创建成功');
918 |
919 |
920 |
921 |
922 | js/app/routes/controllers/route-health-checks-controller.js
923 | -
924 |
925 | MessageService\.success\(\"Route health checks updated\!\"\)
926 | MessageService.success("路由健康检查更新!")
927 |
928 |
929 |
930 |
931 | js/app/routes/controllers/route-details-controller.js
932 | -
933 |
934 | MessageService\.success\(\'Route updated successfully\!\'\)
935 | MessageService.success('路由更新成功!')
936 |
937 |
938 |
939 |
940 | js/app/plugins/add-plugin-controller.js
941 | -
942 |
943 | MessageService\.success\(\'Plugin added successfully\!\'\)
944 | MessageService.success('插件添加成功!')
945 |
946 |
947 |
948 |
949 | js/app/upstreams/edit-upstream-details-controller.js
950 | -
951 |
952 | MessageService\.success\(\'Upstream updated successfully\'\)\;
953 | MessageService.success('上行路由更新成功');
954 |
955 |
956 |
957 |
958 | js/app/snapshots/controllers/snapshots-scheduled-controller.js
959 | -
960 |
961 | MessageService\.success\(\"Scheduled job \" \+ \( item.active \? \"started\" \: \"stopped\"\)\)\;
962 | MessageService.success("定时任务 " + ( item.active ? "开启" : "停止"));
963 |
964 |
965 |
966 |
967 | js/app/upstreams/targets/edit-upstream-targets-controller.js
968 | -
969 |
970 | MessageService\.success\(\"Target added successfully\!\"\)
971 | MessageService.success("目标添加成功!")
972 |
973 |
974 |
975 |
976 |
977 |
978 |
979 |
980 | js/app/services/controllers/add-service-modal-controller.js
981 | -
982 |
983 | MessageService\.success\(\'Service created\!\'\)
984 | MessageService.success('服务创建成功!')
985 |
986 |
987 |
988 |
989 | js/app/plugins/edit-plugin-controller.js
990 | -
991 |
992 | MessageService\.success\(\'\"\' \+ \_plugin\.name + '" plugin updated successfully\!\'\)\;
993 | MessageService.success('"' + _plugin.name + '" 插件更新成功!');
994 |
995 |
996 |
997 |
998 | js/app/connections/connections-controller.js
999 | -
1000 |
1001 | MessageService\.success\(\'Settings updated successfully\!\'\)
1002 | MessageService.success('系统设置更新成功!')
1003 |
1004 |
1005 | MessageService\.success\(\'Connection deleted successfully\'\)\;
1006 | MessageService.success('连接删除成功');
1007 |
1008 |
1009 |
1010 |
1011 |
1012 |
1013 | MessageService\.success\(\'Active node version updated\'\)\;
1014 | MessageService.success('活动节点版本更新');
1015 |
1016 |
1017 |
1018 |
1019 | js/app/snapshots/controllers/snapshots-list-controller.js
1020 | -
1021 |
1022 | MessageService\.success\(\'Snapshot Created\!\'\)\;
1023 | MessageService.success('镜像创建成功!');
1024 |
1025 |
1026 | MessageService\.success\(\'Snapshot deleted successfully\'\)\;
1027 | MessageService.success('镜像删除成功');
1028 |
1029 |
1030 |
1031 |
1032 | js/app/settings/settings-controller.js
1033 | -
1034 |
1035 | MessageService\.success\(\"Transport updated\!\"\)
1036 | MessageService.success("转换更新成功!")
1037 |
1038 |
1039 | MessageService\.success\(\"Settings updated\!\"\)
1040 | MessageService.success("系统设置更新成功!")
1041 |
1042 |
1043 | MessageService\.error\(\"Failed to update settings\!\"\)
1044 | MessageService.error("系统设置更新失败!")
1045 |
1046 |
1047 |
1048 |
1049 | js/app/services/controllers/service-details-controller.js
1050 | -
1051 |
1052 | MessageService\.success\(\'Service updated successfully\!\'\)\;
1053 | MessageService.success('服务更新成功!');
1054 |
1055 |
1056 |
1057 |
1058 | js/app/consumers/consumers-controller.js
1059 | -
1060 |
1061 | MessageService\.success\(\"Consumer created successfully\!\"\)
1062 | MessageService.success("消费者创建成功!")
1063 |
1064 |
1065 |
1066 |
1067 | js/app/connections/create-connection-controller.js
1068 | -
1069 |
1070 | MessageService\.success\(\'New node created successfully\'\)\;
1071 | MessageService.success('新节点创建成功');
1072 |
1073 |
1074 |
1075 |
1076 | js/app/upstreams/add-upstream-modal-controller.js
1077 | -
1078 |
1079 | MessageService\.success\(\'New upstream created successfully\'\)\;
1080 | MessageService.success('新上行流量创建成功');
1081 |
1082 |
1083 |
1084 |
1085 | js/app/services/controllers/service-health-checks-controller.js
1086 | -
1087 |
1088 |
1089 |
1090 |
1091 |
1092 |
1093 |
1094 | js/app/consumers/groups/manage-groups-modal-controllers.js
1095 | -
1096 |
1097 | MessageService\.success\(\'New group created successfully\'\)\;
1098 | MessageService.success('新分组创建成功');
1099 |
1100 |
1101 |
1102 |
1103 | js/app/connections/edit-connection-controller.js
1104 | -
1105 |
1106 | MessageService\.success\(\'Node updated successfully\'\)\;
1107 | MessageService.success('节点更新成功');
1108 |
1109 |
1110 |
1111 |
1112 | js/app/consumers/details/consumer-details-controller.js
1113 | -
1114 |
1115 | MessageService\.success\(\"Consumer updated successfully\!\"\)
1116 | MessageService.success("消费者更新成功!")
1117 |
1118 |
1119 |
1120 |
1121 | js/app/upstreams/update-upstream-modal-controller.js
1122 | -
1123 |
1124 | MessageService\.success\(\'Upstream updated successfully\'\)\;
1125 | MessageService.success('上行流更新成功');
1126 |
1127 |
1128 |
1129 |
1130 | js/app/healthchecks/healthchecks-controller.js
1131 | -
1132 |
1133 | MessageService\.success\(\'HealthCheck deleted successfully\'\)\;
1134 | MessageService.success('安全检查删除成功');
1135 |
1136 |
1137 |
1138 |
1139 |
1140 | js/app/services/views/services.html
1141 | -
1142 |
1143 |
1144 |
1145 |
1146 |
1147 |
1148 |
1149 |
1150 |
1151 |
1152 |
1153 | js/app/services/views/add-service-certificates-modal.html
1154 | -
1155 |
1156 |
1157 |
1158 |
1159 |
1160 |
1161 |
1162 |
1163 |
1164 | Certificate]]>
1165 | 证书]]>
1166 |
1167 |
1168 |
1169 |
1170 |
1171 |
1172 | Key]]>
1173 | 秘钥]]>
1174 |
1175 |
1176 |
1177 |
1178 |
1179 |
1180 |
1181 |
1182 |
1183 |
1184 |
1185 |
1186 |
1187 |
1188 |
1189 |
1190 |
1191 | js/app/services/views/add-service-modal.html
1192 | -
1193 |
1194 |
1195 |
1196 |
1197 |
1198 |
1199 |
1200 |
1201 |
1202 |
1203 |
1204 |
1205 | js/app/services/views/add-service-plugin-modal.html
1206 | -
1207 |
1208 |
1209 |
1210 |
1211 |
1212 |
1213 |
1214 |
1215 | js/app/services/views/service-consumers.html
1216 | -
1217 |
1218 |
1219 |
1220 |
1221 |
1222 |
1223 |
1224 |
1225 |
1226 |
1227 |
1228 |
1229 |
1230 |
1231 |
1232 |
1233 |
1234 |
1235 |
1236 |
1237 |
1238 |
1239 |
1240 |
1241 |
1242 |
1243 |
1244 |
1245 | js/app/services/views/service-details.html
1246 | -
1247 |
1248 |
1249 |
1250 |
1251 |
1252 |
1253 |
1254 |
1255 |
1256 |
1257 |
1258 |
1259 | js/app/services/views/service-health-checks.html
1260 | -
1261 |
1262 |
1263 |
1264 |
1265 |
1266 |
1267 |
1268 |
1269 | js/app/services/views/service-plugins.html
1270 | -
1271 |
1272 |
1273 |
1274 |
1275 |
1276 |
1277 |
1278 |
1279 |
1280 |
1281 |
1282 |
1283 |
1284 |
1285 |
1286 |
1287 |
1288 |
1289 |
1290 |
1291 | js/app/services/views/service-routes.html
1292 | -
1293 |
1294 |
1295 |
1296 |
1297 |
1298 |
1299 |
1300 |
1301 |
1302 |
1303 |
1304 |
1305 |
1306 |
1307 |
1308 |
1309 |
1310 |
1311 |
1312 |
1313 |
1314 |
1315 |
1316 |
1317 | js/app/settings/configure-integration-modal.html
1318 | -
1319 |
1320 |
1321 |
1322 |
1323 |
1324 |
1325 |
1326 |
1327 |
1328 |
1329 |
1330 |
1331 | js/app/settings/configure-transport-modal.html
1332 | -
1333 |
1334 |
1335 |
1336 |
1337 |
1338 |
1339 |
1340 |
1341 |
1342 |
1343 |
1344 |
1345 | js/app/settings/index.html
1346 | -
1347 |
1348 |
1349 |
1350 |
1351 |
1352 |
1353 |
1354 |
1355 |
1356 |
1357 |
1358 |
1359 |
1360 |
1361 |
1362 |
1363 |
1364 |
1365 |
1366 |
1367 |
1368 |
1369 |
1370 |
1371 |
1372 |
1373 |
1374 |
1375 |
1376 | Notifications]]>
1377 | 通知]]>
1378 |
1379 |
1380 |
1381 |
1382 |
1383 |
1384 |
1385 |
1386 |
1387 |
1388 |
1389 |
1390 |
1391 | js/app/core/layout/partials/footer.html
1392 | -
1393 |
1394 |
1395 |
1396 |
1397 |
1398 |
1399 |
1400 |
1401 |
1402 | ]]>
1403 | 语言插件 0.0.1]]>
1404 |
1405 |
1406 |
1407 |
--------------------------------------------------------------------------------
/release/deploy/conf/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | [%thread] %-5level %logger{50}[%L] - %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 | logs/system-%d{yyyy-MM-dd}.log
28 |
29 | 30
30 |
31 |
32 |
33 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
34 |
35 |
36 |
37 | 50MB
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/release/deploy/dockerstart.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Start/Stop the server.
4 | #
5 |
6 | CLASSPATH="conf/"
7 | for jarfile in `ls ./lib/.`; do
8 | CLASSPATH="${CLASSPATH}:lib/$jarfile"
9 | done
10 |
11 | loadJavaOpts () {
12 | server_java_opts=`grep '^[ \t]*server\.java\.opts' ./conf/server.conf | sed 's/[ \t]*server\.java\.opts=//'`
13 | if [ -z "${server_java_opts}" ]; then
14 | echo "-XX:MaxPermSize=192m -Xmx512m -Xms512m"
15 | fi
16 | echo "${server_java_opts}"
17 | }
18 |
19 | doStart () {
20 |
21 | # Setup JAVA_OPTS from server.conf
22 | JAVA_OPTS=`loadJavaOpts`
23 |
24 | # Start the server
25 | echo "Booting the server (Using JAVA_OPTS=${JAVA_OPTS})..."
26 |
27 | java ${JAVA_OPTS} -cp ${CLASSPATH} com.jsonljd.konga.lang.StartService -c ./conf/konga.xml -r ../assets
28 |
29 | }
30 |
31 | case "$1" in
32 | start)
33 | echo "Starting server..."
34 | doStart
35 | echo "server booted."
36 | ;;
37 | *)
38 | # Print help, don't advertise halt, it's nasty
39 | echo "Usage: $0 {start|stop}" 1>&2
40 | exit 1
41 | ;;
42 | esac
43 |
44 | exit 0
45 |
--------------------------------------------------------------------------------
/release/deploy/lib/args4j-2.33.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/args4j-2.33.jar
--------------------------------------------------------------------------------
/release/deploy/lib/commons-codec-1.11.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/commons-codec-1.11.jar
--------------------------------------------------------------------------------
/release/deploy/lib/commons-lang3-3.3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/commons-lang3-3.3.2.jar
--------------------------------------------------------------------------------
/release/deploy/lib/dom4j-1.6.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/dom4j-1.6.1.jar
--------------------------------------------------------------------------------
/release/deploy/lib/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/release/deploy/lib/jcl-over-slf4j-1.7.19.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/jcl-over-slf4j-1.7.19.jar
--------------------------------------------------------------------------------
/release/deploy/lib/junit-4.11.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/junit-4.11.jar
--------------------------------------------------------------------------------
/release/deploy/lib/konga-lang-plugin-1.0.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/konga-lang-plugin-1.0.0.jar
--------------------------------------------------------------------------------
/release/deploy/lib/logback-access-1.1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/logback-access-1.1.3.jar
--------------------------------------------------------------------------------
/release/deploy/lib/logback-classic-1.1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/logback-classic-1.1.3.jar
--------------------------------------------------------------------------------
/release/deploy/lib/logback-core-1.1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/logback-core-1.1.3.jar
--------------------------------------------------------------------------------
/release/deploy/lib/lombok-1.18.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/lombok-1.18.12.jar
--------------------------------------------------------------------------------
/release/deploy/lib/slf4j-api-1.7.19.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/slf4j-api-1.7.19.jar
--------------------------------------------------------------------------------
/release/deploy/lib/xml-apis-1.0.b2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jsonljd/konga-lang-plugin/d0b079831359c80ce503c3b41ea6c2ce66040215/release/deploy/lib/xml-apis-1.0.b2.jar
--------------------------------------------------------------------------------
/release/deploy/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Start/Stop the server.
4 | #
5 |
6 | SERVER_PID_DIR="./logs"
7 | SERVER_LOG="${SERVER_PID_DIR}/server.out"
8 | SERVER_PID="${SERVER_PID_DIR}/server.pid"
9 |
10 | CLASSPATH="conf/"
11 | for jarfile in `ls ./lib/.`; do
12 | CLASSPATH="${CLASSPATH}:lib/$jarfile"
13 | done
14 |
15 | if [ ! -d "${SERVER_PID_DIR}" ]; then
16 | mkdir "${SERVER_PID_DIR}"
17 | fi
18 |
19 | if [ ! -f "${SERVER_LOG}" ]; then
20 | touch "${SERVER_LOG}"
21 | fi
22 |
23 | loadJavaOpts () {
24 | server_java_opts=`grep '^[ \t]*server\.java\.opts' ./conf/server.conf | sed 's/[ \t]*server\.java\.opts=//'`
25 | if [ -z "${server_java_opts}" ]; then
26 | echo "-XX:MaxPermSize=192m -Xmx512m -Xms512m"
27 | fi
28 | echo "${server_java_opts}"
29 | }
30 |
31 | waitForPid () {
32 | MTRPID=${1}
33 | MAXTRIES=${2}
34 |
35 | TRIES=0
36 | echo "waitForPid: waiting for ${MTRPID}"
37 | while [ 1 -eq 1 ]; do
38 | PIDCHECK=`kill -0 ${MTRPID} 2> /dev/null`
39 | if [ $? -eq 1 ]; then
40 | echo "server PID ${MTRPID} exited"
41 | return 1
42 | fi
43 | echo "waitForPid: PID ${MTRPID} still alive"
44 | sleep 2
45 | TRIES=`expr ${TRIES} + 1`
46 | if [ ${TRIES} -ge ${MAXTRIES} ] ; then
47 | echo "num TRIES exhausted: ${TRIES} -ge ${MAXTRIES}"
48 | break
49 | fi
50 | done
51 |
52 | echo "server PID ${MTRPID} did not exit."
53 | return 0;
54 | }
55 |
56 | doStop () {
57 | doStopSignal "TERM"
58 | }
59 |
60 | doStopSignal () {
61 |
62 | SIGNAME=${1}
63 | if [ "x${SIGNAME}" = "x" ] ; then
64 | echo "No signal specified"
65 | exit 127
66 | fi
67 |
68 | echo "checking pidfile exists: ${SERVER_PID}"
69 | if [ -f "${SERVER_PID}" ] ; then
70 | MTRPID=`cat ${SERVER_PID} | tr -d ' '`
71 | if [ "x${MTRPID}" = "x" ] ; then
72 | echo "pid file was empty: ${SERVER_PID}"
73 | exit 127
74 | fi
75 | kill -${SIGNAME} ${MTRPID} 2> /dev/null
76 |
77 | waitForPid ${MTRPID} 60
78 | if [ $? -eq 0 ] ; then
79 | exit 1
80 | fi
81 | rm -f ${SERVER_PID}
82 | else
83 | echo "server not running (no pid file found: ${SERVER_PID})"
84 | fi
85 | }
86 |
87 | doStart () {
88 | # Is the server already running?
89 | echo "checking pidfile exists: ${SERVER_PID}"
90 | if [ -f "${SERVER_PID}" ] ; then
91 | MTRPID=`cat ${SERVER_PID} | tr -d ' '`
92 | if [ ! "x${MTRPID}" = "x" ] ; then
93 | PIDCHECK=`kill -0 ${MTRPID} 2> /dev/null`
94 | if [ $? -eq 1 ]; then
95 | echo "Removing stale pid file ${SERVER_PID}"
96 | rm -f ${SERVER_PID}
97 | else
98 | echo "server is already running (pid ${MTRPID})."
99 | exit 0
100 | fi
101 | fi
102 | fi
103 |
104 | # Setup JAVA_OPTS from server.conf
105 | JAVA_OPTS=`loadJavaOpts`
106 |
107 | # Start the server
108 | echo "Booting the server (Using JAVA_OPTS=${JAVA_OPTS})..."
109 |
110 | java ${JAVA_OPTS} -cp ${CLASSPATH} com.jsonljd.konga.lang.StartService -c ./conf/konga.xml -r ../assets > ${SERVER_LOG} 2>&1 &
111 |
112 | # Save the pid to a pidfile
113 | MTRPID=$!
114 | echo "${MTRPID}" > ${SERVER_PID}
115 | }
116 |
117 | case "$1" in
118 | start)
119 | echo "Starting server..."
120 | doStart
121 | echo "server booted."
122 | ;;
123 | stop)
124 | echo "Stopping server..."
125 | doStop
126 | echo "server is stopped."
127 | ;;
128 | *)
129 | # Print help, don't advertise halt, it's nasty
130 | echo "Usage: $0 {start|stop}" 1>&2
131 | exit 1
132 | ;;
133 | esac
134 |
135 | exit 0
136 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/StartService.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang;
2 |
3 | import com.jsonljd.konga.lang.core.impl.DefaultConfigContext;
4 | import com.jsonljd.konga.lang.entity.MainArg;
5 | import org.kohsuke.args4j.CmdLineException;
6 | import org.kohsuke.args4j.CmdLineParser;
7 |
8 | /**
9 | * @Classname StartService
10 | * @Description TODO
11 | * @Date 2020/2/29 9:03
12 | * @Created by JSON.L
13 | */
14 | public class StartService {
15 | public static void main(String[] args) {
16 | MainArg arg = new MainArg();
17 | CmdLineParser parser = new CmdLineParser(arg);
18 | try {
19 | parser.parseArgument(args);
20 | } catch (CmdLineException e) {
21 | e.printStackTrace();
22 | }
23 |
24 | DefaultConfigContext configContext = new DefaultConfigContext(arg);
25 | configContext.run();
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/IConfigContext.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core;
2 |
3 | import com.jsonljd.konga.lang.entity.ConfigContext;
4 |
5 | /**
6 | * @Classname IConfigContext
7 | * @Description TODO
8 | * @Date 2020/2/29 9:05
9 | * @Created by JSON.L
10 | */
11 | public interface IConfigContext {
12 | ConfigContext getConfig();
13 |
14 | String getRootPath();
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/IFileParse.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core;
2 |
3 | /**
4 | * @Classname IFileParse
5 | * @Description TODO
6 | * @Date 2020/2/29 9:47
7 | * @Created by JSON.L
8 | */
9 | public interface IFileParse {
10 | void parse();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/IReplaceService.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core;
2 |
3 | import com.jsonljd.konga.lang.entity.RepalceItem;
4 |
5 | /**
6 | * @Classname IReplaceService
7 | * @Description TODO
8 | * @Date 2020/2/29 9:06
9 | * @Created by JSON.L
10 | */
11 | public interface IReplaceService {
12 | int getReplaceSize();
13 |
14 | void addReplaceItem(RepalceItem repalceItem);
15 |
16 | String replace(String orgStr);
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/IRunService.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core;
2 |
3 | /**
4 | * @Classname IRunService
5 | * @Description TODO
6 | * @Date 2020/2/29 9:04
7 | * @Created by JSON.L
8 | */
9 | public interface IRunService {
10 | void run();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/impl/DefaultConfigContext.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core.impl;
2 |
3 | import com.jsonljd.konga.lang.core.IConfigContext;
4 | import com.jsonljd.konga.lang.core.IFileParse;
5 | import com.jsonljd.konga.lang.core.IRunService;
6 | import com.jsonljd.konga.lang.entity.ConfigContext;
7 | import com.jsonljd.konga.lang.entity.MainArg;
8 | import com.jsonljd.konga.lang.entity.RepalceItem;
9 | import lombok.extern.slf4j.Slf4j;
10 | import org.dom4j.Document;
11 | import org.dom4j.Element;
12 | import org.dom4j.io.SAXReader;
13 |
14 | import java.io.File;
15 | import java.util.ArrayList;
16 | import java.util.List;
17 |
18 | /**
19 | * @Classname DefaultConfigContext
20 | * @Description TODO
21 | * @Date 2020/2/29 9:26
22 | * @Created by JSON.L
23 | */
24 | @Slf4j
25 | public final class DefaultConfigContext implements IConfigContext, IRunService {
26 | private MainArg arg;
27 |
28 | public DefaultConfigContext(MainArg mainArg) {
29 | this.arg = mainArg;
30 | }
31 |
32 | @Override
33 | public ConfigContext getConfig() {
34 | ConfigContext configContext = null;
35 | try {
36 | String confFile = this.arg.getConfFile();
37 | if(confFile==null){
38 | confFile = "./conf/konga.xml";
39 | }
40 | SAXReader reader = new SAXReader();
41 | Document document = reader.read(new File(confFile));
42 | Element node = document.getRootElement();
43 | List elementClass = node.elements("file");
44 | RepalceItem repalceItem;
45 | DefaultFileParse fileParse;
46 | String fileName;
47 | configContext = new ConfigContext();
48 | List fileParseList = new ArrayList<>(elementClass.size());
49 | for (Element fileEle : elementClass) {
50 | fileEle.element("class");
51 | fileName = fileEle.element("name").getTextTrim();
52 | fileParse = new DefaultFileParse(arg.getReplaceRootPath(), fileName);
53 | List replaces = fileEle.element("item").elements("replace");
54 | for (Element repEle : replaces) {
55 | repalceItem = new RepalceItem();
56 | repalceItem.setTarget(repEle.element("target").getTextTrim());
57 | repalceItem.setExpect(repEle.element("expect").getTextTrim());
58 | fileParse.addReplaceItem(repalceItem);
59 | }
60 | fileParseList.add(fileParse);
61 | }
62 | configContext.setFileParseList(fileParseList);
63 | return configContext;
64 | } catch (Exception e) {
65 | log.error("getConfig err", e);
66 | }
67 | return null;
68 | }
69 |
70 | @Override
71 | public String getRootPath() {
72 | return this.arg.getReplaceRootPath();
73 | }
74 |
75 | @Override
76 | public void run() {
77 | ConfigContext configContext = getConfig();
78 | if (configContext != null) {
79 | for (IFileParse fileParse : configContext.getFileParseList()) {
80 | fileParse.parse();
81 | }
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/impl/DefaultFileParse.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core.impl;
2 |
3 | import com.jsonljd.konga.lang.core.IFileParse;
4 | import com.jsonljd.konga.lang.core.IReplaceService;
5 | import com.jsonljd.konga.lang.entity.RepalceItem;
6 | import lombok.extern.slf4j.Slf4j;
7 |
8 | import java.io.*;
9 |
10 | /**
11 | * @Classname DefaultFileParse
12 | * @Description TODO
13 | * @Date 2020/2/29 10:26
14 | * @Created by JSON.L
15 | */
16 | @Slf4j
17 | public class DefaultFileParse implements IFileParse {
18 | public static final String UTF_8 = "UTF-8";
19 | private String filePath;
20 | private IReplaceService replaceService;
21 |
22 | public DefaultFileParse(String filePath, String fileName) {
23 | this.filePath = filePath +File.separator+ fileName;
24 | this.replaceService = new DefaultReplaceService();
25 | }
26 |
27 | public void addReplaceItem(RepalceItem repalceItem) {
28 | replaceService.addReplaceItem(repalceItem);
29 | }
30 |
31 | @Override
32 | public void parse() {
33 | if (replaceService.getReplaceSize() > 0) {
34 | File file = new File(this.filePath);
35 | if(!file.exists()){
36 | log.info(this.filePath + " file is not exists ");
37 | return;
38 | }
39 | StringBuilder result = new StringBuilder();
40 |
41 | FileInputStream fi = null;
42 | InputStreamReader is = null;
43 |
44 | BufferedReader br = null;
45 | FileOutputStream fos = null;
46 | PrintWriter pw = null;
47 | StringBuilder logStr = new StringBuilder();
48 | long s0 = System.currentTimeMillis();
49 | try {
50 | logStr.append("fileName");
51 | logStr.append(":");
52 | logStr.append(this.filePath);
53 | fi = new FileInputStream(file);
54 | is = new InputStreamReader(fi, UTF_8);
55 | br = new BufferedReader(is);//构造一个BufferedReader类来读取文件
56 | String s = null;
57 | while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
58 | try {
59 | result.append(replaceService.replace(s));
60 | }catch (Exception e){
61 | log.error("s:"+s,e);
62 | e.printStackTrace();
63 | }
64 | result.append(System.lineSeparator());
65 | }
66 |
67 | fos = new FileOutputStream(file);
68 | pw = new PrintWriter(fos);
69 | pw.write(result.toString().toCharArray());
70 | pw.flush();
71 |
72 | } catch (Exception e) {
73 | e.printStackTrace();
74 | } finally {
75 | logStr.append(",");
76 | logStr.append("times");
77 | logStr.append(":");
78 | logStr.append(System.currentTimeMillis()-s0);
79 | logStr.append("ms");
80 | log.info(logStr.toString());
81 | close(br);
82 | close(fos);
83 | close(pw);
84 |
85 | close(fi);
86 | close(is);
87 | }
88 | }
89 | }
90 |
91 | private void close(Closeable able) {
92 | if (able != null) {
93 | try {
94 | able.close();
95 | } catch (IOException e) {
96 | e.printStackTrace();
97 | }
98 | }
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/core/impl/DefaultReplaceService.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.core.impl;
2 |
3 | import com.jsonljd.konga.lang.core.IReplaceService;
4 | import com.jsonljd.konga.lang.entity.RepalceItem;
5 |
6 | import java.util.ArrayList;
7 | import java.util.List;
8 | import java.util.regex.Matcher;
9 | import java.util.regex.Pattern;
10 |
11 | /**
12 | * @Classname DefaultReplaceService
13 | * @Description TODO
14 | * @Date 2020/2/29 10:47
15 | * @Created by JSON.L
16 | */
17 | public class DefaultReplaceService implements IReplaceService {
18 | private List repalceItems = new ArrayList<>();
19 |
20 |
21 | @Override
22 | public int getReplaceSize() {
23 | if(repalceItems!=null){
24 | return repalceItems.size();
25 | }
26 | return 0;
27 | }
28 |
29 | @Override
30 | public void addReplaceItem(RepalceItem repalceItem) {
31 | repalceItems.add(repalceItem);
32 | }
33 |
34 | @Override
35 | public String replace(String orgStr) {
36 | if(getReplaceSize()==0){
37 | return orgStr;
38 | }
39 | for(RepalceItem repalceItem:repalceItems){
40 | orgStr = regReplace(orgStr,repalceItem.getTarget(),repalceItem.getExpect());
41 | }
42 | return orgStr;
43 | }
44 |
45 | private String regReplace(String content,String pattern,String newString){
46 | Pattern p = Pattern.compile(pattern);
47 | Matcher m = p.matcher(content);
48 | String result = m.replaceAll(newString);
49 | return result;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/entity/ConfigContext.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.entity;
2 |
3 | import com.jsonljd.konga.lang.core.IFileParse;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * @Classname ConfigContext
12 | * @Description TODO
13 | * @Date 2020/2/29 9:25
14 | * @Created by JSON.L
15 | */
16 | @Data
17 | @AllArgsConstructor
18 | @NoArgsConstructor
19 | public class ConfigContext {
20 | private List fileParseList;
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/entity/MainArg.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 | import org.kohsuke.args4j.Option;
7 |
8 | /**
9 | * @Classname MainArg
10 | * @Description TODO
11 | * @Date 2020/2/29 9:17
12 | * @Created by JSON.L
13 | */
14 | @AllArgsConstructor
15 | @NoArgsConstructor
16 | @Data
17 | public class MainArg {
18 | @Option(name="-c",usage = "config file path 配置文件")
19 | private String confFile;
20 |
21 | @Option(name="-r",usage = "konga的根目录")
22 | private String replaceRootPath;
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/jsonljd/konga/lang/entity/RepalceItem.java:
--------------------------------------------------------------------------------
1 | package com.jsonljd.konga.lang.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | /**
8 | * @Classname RepalceItem
9 | * @Description TODO
10 | * @Date 2020/2/29 10:31
11 | * @Created by JSON.L
12 | */
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | @Data
16 | public class RepalceItem {
17 | private String target;
18 | private String expect;
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/resources/dockerstart.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Start/Stop the server.
4 | #
5 |
6 | CLASSPATH="conf/"
7 | for jarfile in `ls ./lib/.`; do
8 | CLASSPATH="${CLASSPATH}:lib/$jarfile"
9 | done
10 |
11 | loadJavaOpts () {
12 | server_java_opts=`grep '^[ \t]*server\.java\.opts' ./conf/server.conf | sed 's/[ \t]*server\.java\.opts=//'`
13 | if [ -z "${server_java_opts}" ]; then
14 | echo "-XX:MaxPermSize=192m -Xmx512m -Xms512m"
15 | fi
16 | echo "${server_java_opts}"
17 | }
18 |
19 | doStart () {
20 |
21 | # Setup JAVA_OPTS from server.conf
22 | JAVA_OPTS=`loadJavaOpts`
23 |
24 | # Start the server
25 | echo "Booting the server (Using JAVA_OPTS=${JAVA_OPTS})..."
26 |
27 | java ${JAVA_OPTS} -cp ${CLASSPATH} com.jsonljd.konga.lang.StartService -c ./conf/konga.xml -r ../assets
28 |
29 | }
30 |
31 | case "$1" in
32 | start)
33 | echo "Starting server..."
34 | doStart
35 | echo "server booted."
36 | ;;
37 | *)
38 | # Print help, don't advertise halt, it's nasty
39 | echo "Usage: $0 {start|stop}" 1>&2
40 | exit 1
41 | ;;
42 | esac
43 |
44 | exit 0
45 |
--------------------------------------------------------------------------------
/src/main/resources/konga.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | js/app/dashboard/dashboard.html
5 | -
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Connections page.]]>
16 | 连接管理 页面.]]>
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | connection is valid and Kong is up and running.]]>
36 | 连接管理 设置有可用的Kong并且是运行中.]]>
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | ACTIVE]]>
48 | 可用的]]>
49 |
50 |
51 | READING]]>
52 | 读取中]]>
53 |
54 |
55 | WRITING]]>
56 | 写入中]]>
57 |
58 |
59 | WAITING]]>
60 | 等待中]]>
61 |
62 |
63 | ACCEPTED]]>
64 | 已接受]]>
65 |
66 |
67 | HANDLED]]>
68 | 已处理]]>
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | HostName]]>
80 | 主机名]]>
81 |
82 |
83 | Tag Line]]>
84 | 基 线]]>
85 |
86 |
87 | Version]]>
88 | 版本号]]>
89 |
90 |
91 | LUA Version]]>
92 | LUA版本]]>
93 |
94 |
95 | Admin listen]]>
96 | 管理监听]]>
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | Host]]>
108 | 主机]]>
109 |
110 |
111 | Contact points]]>
112 | 通讯节点]]>
113 |
114 |
115 | Keyspace]]>
116 | 键空间]]>
117 |
118 |
119 | Data Centers]]>
120 | 数据中心]]>
121 |
122 |
123 | Database]]>
124 | 数据库]]>
125 |
126 |
127 | User]]>
128 | 用户]]>
129 |
130 |
131 | Username]]>
132 | 用户名]]>
133 |
134 |
135 | Port]]>
136 | 端口]]>
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 | js/app/connections/partials/create-connection-form.html
150 | -
151 |
152 |
153 | 默认
154 |
155 |
156 |
157 | 键值授权
158 |
159 |
160 |
161 | JWT授权
162 |
163 |
164 |
165 |
166 | js/app/apis/partials/form-api-09.html
167 | -
168 |
169 | Name
]]>
170 | 名称
]]>
171 |
172 |
173 | optional<]]>
174 | 选项<]]>
175 |
176 |
177 | request_host or request_path
.]]>
178 | 请求域名 或者 请求路径
.]]>
179 |
180 |
181 | Request Host$]]>
182 | 请求域名]]>
183 |
184 |
185 | semi-optional<]]>
186 | 半选项<]]>
187 |
188 |
189 | mockbin.com. At least request_host
or request_path
or both should be specified.]]>
190 | mockbin.com. 至少 请求域名
或者 请求路径
或者两者都指向.]]>
191 |
192 |
193 | Request Path$]]>
194 | 请求路径]]>
195 |
196 |
197 | /someservice. At least request_host
or request_path
or both should be specified.]]>
198 | /someservice. 至少 请求域名
或者 请求路径
或者两者都指向.]]>
199 |
200 |
201 | Strip Request Path$]]>
202 | 请求路径目录]]>
203 |
204 |
205 | /someservice/hello will be resolved to upstream_url/hello
. By default is false.]]>
206 | /someservice/hello 将被解析成 upstream_url/hello
. 默认是否.]]>
207 |
208 |
209 | Preserve Host$]]>
210 | 保留域名]]>
211 |
212 |
213 | Host header sent by the client, instead of replacing it with the hostname
of the upstream_url
. By default is false.]]>
214 | Host 主机头发送到客户端, 替换为 hostname
主机名 upstream_url
. 默认是否.]]>
215 |
216 |
217 | Upstream URL<]]>
218 | 上行流URL<]]>
219 |
220 |
221 | https://mockbin.com.]]>
222 | https://mockbin.com.]]>
223 |
224 |
225 |
226 |
227 | js/app/apis/partials/form-api-010.html
228 | -
229 |
230 | Name
]]>
231 | 名称
]]>
232 |
233 |
234 | optional<]]>
235 | 选项<]]>
236 |
237 |
238 | request_host or request_path
.]]>
239 | 请求域名 或者 请求路径
.]]>
240 |
241 |
242 | Hosts
]]>
243 | 主机名
]]>
244 |
245 |
246 | semi-optional<]]>
247 | 半选项<]]>
248 |
249 |
250 | example.com. At least one of hosts
, uris
, or methods
should be specified.]]>
251 | example.com。应至少指定主机
、uri
或方法
中的一个。.]]>
252 |
253 |
254 | /my-path. At least one of hosts
, uris
, or methods
should be specified.]]>
255 | /my path。应至少指定主机
、uri
或方法
中的一个。]]>
256 |
257 |
258 | GET,POST
. At least one of hosts
, uris
, or methods
should be specified.]]>
259 | GET,POST
。应至少指定主机
、uri
或方法
中的一个。]]>
260 |
261 |
262 |
263 |
264 | js/app/connections/partials/create-connection-form-flat.html
265 | -
266 |
267 |
268 | 默认
269 |
270 |
271 |
272 | 键值授权
273 |
274 |
275 |
276 | JWT授权
277 |
278 |
279 |
280 | 检查连接中
281 |
282 |
283 |
284 | 创建中
285 |
286 |
287 |
288 | 创建连接
289 |
290 |
291 |
292 |
293 | js/app/core/layout/partials/header.html
294 | -
295 |
296 | Toggle navigation
297 | 导航
298 |
299 |
300 |
301 |
302 |
303 |
304 | Login\<\/a\>]]>
305 | 登录]]>
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 | js/app/core/layout/01_layout-controllers.js
331 | -
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 | js/app/certificates/00_certificates.js
392 | -
393 |
394 | pageName : "Certificates",
395 | pageName : "证书管理",
396 |
397 |
398 | pageDescription : "A certificate object represents a public certificate/private key pair for an SSL certificate. These objects are used by Kong to handle SSL/TLS termination for encrypted requests. Certificates are optionally associated with SNI objects to tie a cert/key pair to one or more hostnames.",
399 | pageDescription : "证书对象表示SSL证书的公共证书/私钥对。Kong使用这些对象来处理加密请求的SSL/TLS终止。证书可以选择与SNI对象关联,以将证书/密钥对绑定到一个或多个主机名。",
400 |
401 |
402 |
403 |
404 | js/app/apis/00_apis.js
405 | -
406 |
407 | pageDescription: "The API object describes an API that's being exposed by Kong. Kong needs to know how to retrieve the API when a consumer is calling it from the Proxy port. Each API object must specify a request host, a request path or both. Kong will proxy all requests to the API to the specified upstream URL.",
408 | pageDescription: "API对象描述了Kong正在公开的API。当消费者从代理端口调用API时,Kong需要知道如何检索它。每个API对象必须指定请求主机、请求路径或两者。Kong将把对API的所有请求代理到指定的上游URL。",
409 |
410 |
411 | pageName: "Edit API",
412 | pageName: "编辑API",
413 |
414 |
415 | displayName: "edit API",
416 | displayName: "编辑API",
417 |
418 |
419 | pageName: "API Plugins",
420 | pageName: "API插件",
421 |
422 |
423 | pageName: "Manage API Plugins",
424 | pageName: "管理API插件",
425 |
426 |
427 | displayName: "manage"
428 | displayName: "管理"
429 |
430 |
431 |
432 |
433 | js/app/users/00_users.js
434 | -
435 |
436 | pageName : "Users",
437 | pageName : "用户管理",
438 |
439 |
440 | pageDescription : "Manage Konga users and user roles"
441 | pageDescription : "管理Konga用户及用户角色"
442 |
443 |
444 |
445 |
446 | js/app/upstreams/01_upstreams.js
447 | -
448 |
449 | pageName : "Upstreams",
450 | pageName : "上游管理",
451 |
452 |
453 | service.v1.xyz with an API object created with an
upstream_url=https://service.v1.xyz/some/path
. Requests for this API would be proxied to the targets defined within the upstream.",]]>
454 | pageDescription : "upstream对象表示虚拟主机名,可用于在多个服务(目标)上加载平衡传入请求。例如,一个名为service.v1.xyz
的上游,其API对象是用一个upstream_url=https://service.v1.xyz/some/path
创建的。对这个API的请求将被代理到上游中定义的目标。",
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 | js/app/users/index.html
464 | -
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 | js/app/connections/index.html
473 | -
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 | js/app/users/user.html
482 | -
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 | Username\<\/th\>$]]>
505 | 用户名]]>
506 |
507 |
508 | First Name\<\/th\>$]]>
509 | 名字]]>
510 |
511 |
512 | Last Name\<\/th\>$]]>
513 | 姓氏]]>
514 |
515 |
516 | Email\<\/th\>$]]>
517 | 邮箱]]>
518 |
519 |
520 | Active connection\<\/th\>$]]>
521 | 是否在线]]>
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 | js/app/cluster/00_cluster.js
535 | -
536 |
537 | pageName : "Cluster",
538 | pageName : "集群",
539 |
540 |
541 |
542 |
543 | js/app/consumers/00_consumers.js
544 | -
545 |
546 | pageName: "Consumers",
547 | pageName: "消费者管理",
548 |
549 |
550 | pageDescription: "The Consumer object represents a consumer - or a user - of an API. You can either rely on Kong as the primary datastore, or you can map the consumer list with your database to keep consistency between Kong and your existing primary datastore.",
551 | pageDescription: "Consumer对象表示API的使用者或用户。您可以将Kong作为主数据存储,也可以将使用者列表与数据库映射,以保持Kong与现有主数据存储之间的一致性。",
552 |
553 |
554 |
555 |
556 | js/app/consumers/index.html
557 | -
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 | js/app/plugins/plugins.html
566 | -
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 | js/app/upstreams/index.html
575 | -
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 | js/app/certificates/certificates.html
584 | -
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 | js/app/healthchecks/00_healthchecks.js
593 | -
594 |
595 | pageName: "Health Checks",
596 | pageName: "健康检查",
597 |
598 |
599 | pageDescription: "Manage API healthchecks",
600 | pageDescription: "管理API接口的健康检查点",
601 |
602 |
603 |
604 |
605 | js/app/info/00_info.js
606 | -
607 |
608 | pageName : "Node Info",
609 | pageName : "节点信息管理",
610 |
611 |
612 | pageDescription : "Generic details about the node",
613 | pageDescription : "有关节点的常规详细信息",
614 |
615 |
616 |
617 |
618 | js/app/plugins/00_plugins.js
619 | -
620 |
621 | pageName: "Plugins",
622 | pageName: "插件管理",
623 |
624 |
625 | pageDescription: "A Plugin entity represents a plugin configuration that will be executed during the HTTP request/response workflow, and it's how you can add functionalities to APIs that run behind Kong, like Authentication or Rate Limiting for example.",
626 | pageDescription: "插件实体表示将在HTTP请求/响应工作流期间执行的插件配置,以及如何向在Kong之后运行的api添加功能,例如身份验证或速率限制。",
627 |
628 |
629 |
630 |
631 | js/app/routes/00_routes.js
632 | -
633 |
634 | pageName: "Routes",
635 | pageName: "路由管理",
636 |
637 |
638 | "The Route entities defines rules to match client requests. Each Route is associated with a Service, and a Service may have multiple Routes associated to it. Every request matching a given Route will be proxied to its associated Service.",
639 | "路由实体定义与客户端请求匹配的规则。每个路由都与一个服务相关联,并且一个服务可能有多个与之关联的路由。与给定路由匹配的每个请求都将被代理到其关联的服务。",
640 |
641 |
642 |
643 |
644 | js/app/services/00_services.js
645 | -
646 |
647 | pageName: "Services",
648 | pageName: "服务节点管理",
649 |
650 |
651 | pageDescription: "Service entities, as the name implies, are abstractions of each of your own upstream services. Examples of Services would be a data transformation microservice, a billing API, etc.",
652 | pageDescription: "服务实体,顾名思义,是每个上游服务的抽象。服务的例子包括数据转换微服务、计费API等。",
653 |
654 |
655 |
656 |
657 | js/app/connections/00_connections.js
658 | -
659 |
660 | pageName : "Connections",
661 | pageName : "连接管理",
662 |
663 |
664 | pageDescription : "Create connections to Kong Nodes and activate the one you want use.",
665 | pageDescription : "创建配置Kong节点信息.",
666 |
667 |
668 |
669 |
670 | js/app/snapshots/00_snapshots.js
671 | -
672 |
673 | pageName : "Snapshots",
674 | pageName : "配置镜像管理",
675 |
676 |
677 |
678 | pageDescription : "获取当前活动节点的快照."
679 |
680 |
681 | will be saved and available for later import.
682 | 将被保存并可供以后导入。
683 |
684 |
685 | pageName : "Snapshot Details",
686 | pageName : "镜像明细",
687 |
688 |
689 |
690 |
691 | js/app/core/auth/login/login.html
692 | -
693 |
694 | Sign in to continue
695 | 登录后继续
696 |
697 |
698 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 | Username or Email is required.
707 | 请填入用户名或邮箱
708 |
709 |
710 | Password is required.
711 | 请填入密码
712 |
713 |
714 | Don't have an account?
715 | 是否没有账号?
716 |
717 |
718 | Sign up!
719 | 注册!
720 |
721 |
722 | Sign in
723 | 登 录
724 |
725 |
726 |
727 |
728 | js/app/core/auth/signup/signup.html
729 | -
730 |
731 | The$]]>
732 | 请]]>
733 |
734 |
735 | ]]>
736 | ]]>
737 |
738 |
739 | The email]]>
740 | 请填入]]>
741 |
742 |
743 | $]]>
744 | ]]>
745 |
746 |
747 | The email is]]>
748 | 邮箱]]>
749 |
750 |
751 | $]]>
752 | ]]>
753 |
754 |
755 | ]]>
756 | ]]>
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 | js/app/settings/01_settings.js
774 | -
775 |
776 | pageName: "Settings",
777 | pageName: "设置",
778 |
779 |
780 | displayName: "settings",
781 | displayName: "设置",
782 |
783 |
784 |
785 |
786 | js/app/core/auth/services/AuthService.js
787 | -
788 |
789 | success\(\'You have logged in successfully\!\'\)\;
790 | success('登录成功!');
791 |
792 |
793 | success\(\'You have logged out\.\'\)\;
794 | success('安全退出!');
795 |
796 |
797 |
798 |
799 | js/app/apis/controllers/apis-controller.js
800 | -
801 |
802 | success\(\'API Healthchecks reset successfully\!\'\)\;
803 | success('安全监测重置成功!');
804 |
805 |
806 |
807 |
808 | js/app/apis/controllers/api-health-checks-controller.js
809 | -
810 |
811 | success\(\"Health Checks \" + \(\$scope\.apiHC\.active \? \'enabled\' \: \'disabled\'\) \+ \" \"\)
812 | success("安全监测 " + ($scope.apiHC.active ? '开启' : '禁止') + " ")
813 |
814 |
815 | MessageService\.success\(\"API health checks updated\!\"\)
816 | MessageService.success("API安全监查更新!")
817 |
818 |
819 |
820 |
821 | js/app/apis/controllers/api-details-controller.js
822 | -
823 |
824 | MessageService\.success\(\'API updated successfully\!\'\)
825 | MessageService.success('API更新成功!')
826 |
827 |
828 |
829 |
830 | js/app/apis/controllers/add-api-modal-controller.js
831 | -
832 |
833 | MessageService\.success\(\'Api created\!\'\)
834 | MessageService.success('Api创建成功!')
835 |
836 |
837 |
838 |
839 | js/app/users/user-create-controller.js
840 | -
841 |
842 | MessageService\.success\(\'New user created successfully\'\)\;
843 | MessageService.success('新用户创建成功');
844 |
845 |
846 |
847 |
848 | js/app/users/user-controller.js
849 | -
850 |
851 | MessageService\.success\(\'User \"\' \+ \$scope\.user\.username \+ \'\" updated successfully\'\)\;
852 | MessageService.success('用户 "' + \$scope\.user\.username + '" 更新成功');
853 |
854 |
855 | MessageService\.success\(\'User \"\' \+ \$scope\.user\.username \+ \'\" deleted successfully\'\)\;
856 | MessageService.success('用户 "' + \$scope\.user\.username + '" 删除成功');
857 |
858 |
859 |
860 |
861 | js/app/consumers/credentials/mass-assign-credentials-controller.js
862 | -
863 |
864 | MessageService\.success\(\'Credentials where assigned successfully\!\'\)
865 | MessageService.success('凭据成功分配!')
866 |
867 |
868 |
869 |
870 | js/app/consumers/credentials/consumer-credentials-controller.js
871 | -
872 |
873 | MessageService\.success\(\'Credentials deleted successfully\'\)\;
874 | MessageService.success('凭据删除成功');
875 |
876 |
877 | MessageService\.success\(\'OAuth2 deleted successfully\'\)\;
878 | MessageService.success('OAuth2授权删除成功');
879 |
880 |
881 | MessageService\.success\(\'JWT deleted successfully\'\)\;
882 | MessageService.success('JWT授权删除成功');
883 |
884 |
885 | MessageService\.success\(\'Key deleted successfully\'\)\;
886 | MessageService.success('关键字授权删除成功');
887 |
888 |
889 | MessageService\.success\(\"Consumer updated successfully\!\"\)
890 | MessageService.success("客户端更新成功!")
891 |
892 |
893 |
894 |
895 | js/app/routes/controllers/add-route-modal-controller.js
896 | -
897 |
898 | MessageService\.success\(\'Route created\!\'\)
899 | MessageService.success('路由创建成功!')
900 |
901 |
902 |
903 |
904 | js/app/routes/controllers/route-health-checks-controller.js
905 | -
906 |
907 | MessageService\.success\(\"Health Checks \" + \(\$scope\.routeHC\.active \? \'enabled\' \: \'disabled\'\) \+ \" \"\)
908 | MessageService.success("安全检查 " + ($scope.routeHC.active ? '开启' : '关闭') + " ")
909 |
910 |
911 |
912 |
913 | js/app/dashboard/02_dashboard-controller.js
914 | -
915 |
916 | MessageService\.success\(\'New node created successfully\'\)\;
917 | MessageService.success('新节点创建成功');
918 |
919 |
920 |
921 |
922 | js/app/routes/controllers/route-health-checks-controller.js
923 | -
924 |
925 | MessageService\.success\(\"Route health checks updated\!\"\)
926 | MessageService.success("路由健康检查更新!")
927 |
928 |
929 |
930 |
931 | js/app/routes/controllers/route-details-controller.js
932 | -
933 |
934 | MessageService\.success\(\'Route updated successfully\!\'\)
935 | MessageService.success('路由更新成功!')
936 |
937 |
938 |
939 |
940 | js/app/plugins/add-plugin-controller.js
941 | -
942 |
943 | MessageService\.success\(\'Plugin added successfully\!\'\)
944 | MessageService.success('插件添加成功!')
945 |
946 |
947 |
948 |
949 | js/app/upstreams/edit-upstream-details-controller.js
950 | -
951 |
952 | MessageService\.success\(\'Upstream updated successfully\'\)\;
953 | MessageService.success('上行路由更新成功');
954 |
955 |
956 |
957 |
958 | js/app/snapshots/controllers/snapshots-scheduled-controller.js
959 | -
960 |
961 | MessageService\.success\(\"Scheduled job \" \+ \( item.active \? \"started\" \: \"stopped\"\)\)\;
962 | MessageService.success("定时任务 " + ( item.active ? "开启" : "停止"));
963 |
964 |
965 |
966 |
967 | js/app/upstreams/targets/edit-upstream-targets-controller.js
968 | -
969 |
970 | MessageService\.success\(\"Target added successfully\!\"\)
971 | MessageService.success("目标添加成功!")
972 |
973 |
974 |
975 |
976 |
977 |
978 |
979 |
980 | js/app/services/controllers/add-service-modal-controller.js
981 | -
982 |
983 | MessageService\.success\(\'Service created\!\'\)
984 | MessageService.success('服务创建成功!')
985 |
986 |
987 |
988 |
989 | js/app/plugins/edit-plugin-controller.js
990 | -
991 |
992 | MessageService\.success\(\'\"\' \+ \_plugin\.name + '" plugin updated successfully\!\'\)\;
993 | MessageService.success('"' + _plugin.name + '" 插件更新成功!');
994 |
995 |
996 |
997 |
998 | js/app/connections/connections-controller.js
999 | -
1000 |
1001 | MessageService\.success\(\'Settings updated successfully\!\'\)
1002 | MessageService.success('系统设置更新成功!')
1003 |
1004 |
1005 | MessageService\.success\(\'Connection deleted successfully\'\)\;
1006 | MessageService.success('连接删除成功');
1007 |
1008 |
1009 |
1010 |
1011 |
1012 |
1013 | MessageService\.success\(\'Active node version updated\'\)\;
1014 | MessageService.success('活动节点版本更新');
1015 |
1016 |
1017 |
1018 |
1019 | js/app/snapshots/controllers/snapshots-list-controller.js
1020 | -
1021 |
1022 | MessageService\.success\(\'Snapshot Created\!\'\)\;
1023 | MessageService.success('镜像创建成功!');
1024 |
1025 |
1026 | MessageService\.success\(\'Snapshot deleted successfully\'\)\;
1027 | MessageService.success('镜像删除成功');
1028 |
1029 |
1030 |
1031 |
1032 | js/app/settings/settings-controller.js
1033 | -
1034 |
1035 | MessageService\.success\(\"Transport updated\!\"\)
1036 | MessageService.success("转换更新成功!")
1037 |
1038 |
1039 | MessageService\.success\(\"Settings updated\!\"\)
1040 | MessageService.success("系统设置更新成功!")
1041 |
1042 |
1043 | MessageService\.error\(\"Failed to update settings\!\"\)
1044 | MessageService.error("系统设置更新失败!")
1045 |
1046 |
1047 |
1048 |
1049 | js/app/services/controllers/service-details-controller.js
1050 | -
1051 |
1052 | MessageService\.success\(\'Service updated successfully\!\'\)\;
1053 | MessageService.success('服务更新成功!');
1054 |
1055 |
1056 |
1057 |
1058 | js/app/consumers/consumers-controller.js
1059 | -
1060 |
1061 | MessageService\.success\(\"Consumer created successfully\!\"\)
1062 | MessageService.success("消费者创建成功!")
1063 |
1064 |
1065 |
1066 |
1067 | js/app/connections/create-connection-controller.js
1068 | -
1069 |
1070 | MessageService\.success\(\'New node created successfully\'\)\;
1071 | MessageService.success('新节点创建成功');
1072 |
1073 |
1074 |
1075 |
1076 | js/app/upstreams/add-upstream-modal-controller.js
1077 | -
1078 |
1079 | MessageService\.success\(\'New upstream created successfully\'\)\;
1080 | MessageService.success('新上行流量创建成功');
1081 |
1082 |
1083 |
1084 |
1085 | js/app/services/controllers/service-health-checks-controller.js
1086 | -
1087 |
1088 |
1089 |
1090 |
1091 |
1092 |
1093 |
1094 | js/app/consumers/groups/manage-groups-modal-controllers.js
1095 | -
1096 |
1097 | MessageService\.success\(\'New group created successfully\'\)\;
1098 | MessageService.success('新分组创建成功');
1099 |
1100 |
1101 |
1102 |
1103 | js/app/connections/edit-connection-controller.js
1104 | -
1105 |
1106 | MessageService\.success\(\'Node updated successfully\'\)\;
1107 | MessageService.success('节点更新成功');
1108 |
1109 |
1110 |
1111 |
1112 | js/app/consumers/details/consumer-details-controller.js
1113 | -
1114 |
1115 | MessageService\.success\(\"Consumer updated successfully\!\"\)
1116 | MessageService.success("消费者更新成功!")
1117 |
1118 |
1119 |
1120 |
1121 | js/app/upstreams/update-upstream-modal-controller.js
1122 | -
1123 |
1124 | MessageService\.success\(\'Upstream updated successfully\'\)\;
1125 | MessageService.success('上行流更新成功');
1126 |
1127 |
1128 |
1129 |
1130 | js/app/healthchecks/healthchecks-controller.js
1131 | -
1132 |
1133 | MessageService\.success\(\'HealthCheck deleted successfully\'\)\;
1134 | MessageService.success('安全检查删除成功');
1135 |
1136 |
1137 |
1138 |
1139 |
1140 | js/app/services/views/services.html
1141 | -
1142 |
1143 |
1144 |
1145 |
1146 |
1147 |
1148 |
1149 |
1150 |
1151 |
1152 |
1153 | js/app/services/views/add-service-certificates-modal.html
1154 | -
1155 |
1156 |
1157 |
1158 |
1159 |
1160 |
1161 |
1162 |
1163 |
1164 | Certificate]]>
1165 | 证书]]>
1166 |
1167 |
1168 |
1169 |
1170 |
1171 |
1172 | Key]]>
1173 | 秘钥]]>
1174 |
1175 |
1176 |
1177 |
1178 |
1179 |
1180 |
1181 |
1182 |
1183 |
1184 |
1185 |
1186 |
1187 |
1188 |
1189 |
1190 |
1191 | js/app/services/views/add-service-modal.html
1192 | -
1193 |
1194 |
1195 |
1196 |
1197 |
1198 |
1199 |
1200 |
1201 |
1202 |
1203 |
1204 |
1205 | js/app/services/views/add-service-plugin-modal.html
1206 | -
1207 |
1208 |
1209 |
1210 |
1211 |
1212 |
1213 |
1214 |
1215 | js/app/services/views/service-consumers.html
1216 | -
1217 |
1218 |
1219 |
1220 |
1221 |
1222 |
1223 |
1224 |
1225 |
1226 |
1227 |
1228 |
1229 |
1230 |
1231 |
1232 |
1233 |
1234 |
1235 |
1236 |
1237 |
1238 |
1239 |
1240 |
1241 |
1242 |
1243 |
1244 |
1245 | js/app/services/views/service-details.html
1246 | -
1247 |
1248 |
1249 |
1250 |
1251 |
1252 |
1253 |
1254 |
1255 |
1256 |
1257 |
1258 |
1259 | js/app/services/views/service-health-checks.html
1260 | -
1261 |
1262 |
1263 |
1264 |
1265 |
1266 |
1267 |
1268 |
1269 | js/app/services/views/service-plugins.html
1270 | -
1271 |
1272 |
1273 |
1274 |
1275 |
1276 |
1277 |
1278 |
1279 |
1280 |
1281 |
1282 |
1283 |
1284 |
1285 |
1286 |
1287 |
1288 |
1289 |
1290 |
1291 | js/app/services/views/service-routes.html
1292 | -
1293 |
1294 |
1295 |
1296 |
1297 |
1298 |
1299 |
1300 |
1301 |
1302 |
1303 |
1304 |
1305 |
1306 |
1307 |
1308 |
1309 |
1310 |
1311 |
1312 |
1313 |
1314 |
1315 |
1316 |
1317 | js/app/settings/configure-integration-modal.html
1318 | -
1319 |
1320 |
1321 |
1322 |
1323 |
1324 |
1325 |
1326 |
1327 |
1328 |
1329 |
1330 |
1331 | js/app/settings/configure-transport-modal.html
1332 | -
1333 |
1334 |
1335 |
1336 |
1337 |
1338 |
1339 |
1340 |
1341 |
1342 |
1343 |
1344 |
1345 | js/app/settings/index.html
1346 | -
1347 |
1348 |
1349 |
1350 |
1351 |
1352 |
1353 |
1354 |
1355 |
1356 |
1357 |
1358 |
1359 |
1360 |
1361 |
1362 |
1363 |
1364 |
1365 |
1366 |
1367 |
1368 |
1369 |
1370 |
1371 |
1372 |
1373 |
1374 |
1375 |
1376 | Notifications]]>
1377 | 通知]]>
1378 |
1379 |
1380 |
1381 |
1382 |
1383 |
1384 |
1385 |
1386 |
1387 |
1388 |
1389 |
1390 |
1391 | js/app/core/layout/partials/footer.html
1392 | -
1393 |
1394 |
1395 |
1396 |
1397 |
1398 |
1399 |
1400 |
1401 |
1402 | ]]>
1403 | 语言插件 0.0.1]]>
1404 |
1405 |
1406 |
1407 |
--------------------------------------------------------------------------------
/src/main/resources/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | [%thread] %-5level %logger{50}[%L] - %msg%n
21 |
22 |
23 |
24 |
25 |
26 |
27 | logs/system-%d{yyyy-MM-dd}.log
28 |
29 | 30
30 |
31 |
32 |
33 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
34 |
35 |
36 |
37 | 50MB
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/src/main/resources/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Start/Stop the server.
4 | #
5 |
6 | SERVER_PID_DIR="./logs"
7 | SERVER_LOG="${SERVER_PID_DIR}/server.out"
8 | SERVER_PID="${SERVER_PID_DIR}/server.pid"
9 |
10 | CLASSPATH="conf/"
11 | for jarfile in `ls ./lib/.`; do
12 | CLASSPATH="${CLASSPATH}:lib/$jarfile"
13 | done
14 |
15 | if [ ! -d "${SERVER_PID_DIR}" ]; then
16 | mkdir "${SERVER_PID_DIR}"
17 | fi
18 |
19 | if [ ! -f "${SERVER_LOG}" ]; then
20 | touch "${SERVER_LOG}"
21 | fi
22 |
23 | loadJavaOpts () {
24 | server_java_opts=`grep '^[ \t]*server\.java\.opts' ./conf/server.conf | sed 's/[ \t]*server\.java\.opts=//'`
25 | if [ -z "${server_java_opts}" ]; then
26 | echo "-XX:MaxPermSize=192m -Xmx512m -Xms512m"
27 | fi
28 | echo "${server_java_opts}"
29 | }
30 |
31 | waitForPid () {
32 | MTRPID=${1}
33 | MAXTRIES=${2}
34 |
35 | TRIES=0
36 | echo "waitForPid: waiting for ${MTRPID}"
37 | while [ 1 -eq 1 ]; do
38 | PIDCHECK=`kill -0 ${MTRPID} 2> /dev/null`
39 | if [ $? -eq 1 ]; then
40 | echo "server PID ${MTRPID} exited"
41 | return 1
42 | fi
43 | echo "waitForPid: PID ${MTRPID} still alive"
44 | sleep 2
45 | TRIES=`expr ${TRIES} + 1`
46 | if [ ${TRIES} -ge ${MAXTRIES} ] ; then
47 | echo "num TRIES exhausted: ${TRIES} -ge ${MAXTRIES}"
48 | break
49 | fi
50 | done
51 |
52 | echo "server PID ${MTRPID} did not exit."
53 | return 0;
54 | }
55 |
56 | doStop () {
57 | doStopSignal "TERM"
58 | }
59 |
60 | doStopSignal () {
61 |
62 | SIGNAME=${1}
63 | if [ "x${SIGNAME}" = "x" ] ; then
64 | echo "No signal specified"
65 | exit 127
66 | fi
67 |
68 | echo "checking pidfile exists: ${SERVER_PID}"
69 | if [ -f "${SERVER_PID}" ] ; then
70 | MTRPID=`cat ${SERVER_PID} | tr -d ' '`
71 | if [ "x${MTRPID}" = "x" ] ; then
72 | echo "pid file was empty: ${SERVER_PID}"
73 | exit 127
74 | fi
75 | kill -${SIGNAME} ${MTRPID} 2> /dev/null
76 |
77 | waitForPid ${MTRPID} 60
78 | if [ $? -eq 0 ] ; then
79 | exit 1
80 | fi
81 | rm -f ${SERVER_PID}
82 | else
83 | echo "server not running (no pid file found: ${SERVER_PID})"
84 | fi
85 | }
86 |
87 | doStart () {
88 | # Is the server already running?
89 | echo "checking pidfile exists: ${SERVER_PID}"
90 | if [ -f "${SERVER_PID}" ] ; then
91 | MTRPID=`cat ${SERVER_PID} | tr -d ' '`
92 | if [ ! "x${MTRPID}" = "x" ] ; then
93 | PIDCHECK=`kill -0 ${MTRPID} 2> /dev/null`
94 | if [ $? -eq 1 ]; then
95 | echo "Removing stale pid file ${SERVER_PID}"
96 | rm -f ${SERVER_PID}
97 | else
98 | echo "server is already running (pid ${MTRPID})."
99 | exit 0
100 | fi
101 | fi
102 | fi
103 |
104 | # Setup JAVA_OPTS from server.conf
105 | JAVA_OPTS=`loadJavaOpts`
106 |
107 | # Start the server
108 | echo "Booting the server (Using JAVA_OPTS=${JAVA_OPTS})..."
109 |
110 | java ${JAVA_OPTS} -cp ${CLASSPATH} com.jsonljd.konga.lang.StartService -c ./conf/konga.xml -r ../assets > ${SERVER_LOG} 2>&1 &
111 |
112 | # Save the pid to a pidfile
113 | MTRPID=$!
114 | echo "${MTRPID}" > ${SERVER_PID}
115 | }
116 |
117 | case "$1" in
118 | start)
119 | echo "Starting server..."
120 | doStart
121 | echo "server booted."
122 | ;;
123 | stop)
124 | echo "Stopping server..."
125 | doStop
126 | echo "server is stopped."
127 | ;;
128 | *)
129 | # Print help, don't advertise halt, it's nasty
130 | echo "Usage: $0 {start|stop}" 1>&2
131 | exit 1
132 | ;;
133 | esac
134 |
135 | exit 0
136 |
--------------------------------------------------------------------------------