├── API.md
├── LICENSE
├── README.md
├── html
├── index.html
├── login.html
├── pages
│ ├── api
│ │ ├── add.html
│ │ ├── edit.html
│ │ └── list.html
│ ├── domain
│ │ ├── add.html
│ │ ├── edit.html
│ │ └── list.html
│ ├── server
│ │ ├── add.html
│ │ ├── edit.html
│ │ └── list.html
│ └── service
│ │ ├── add.html
│ │ ├── edit.html
│ │ └── list.html
└── static
│ ├── adminlte
│ ├── css
│ │ ├── AdminLTE.css
│ │ ├── AdminLTE.min.css
│ │ └── skins
│ │ │ ├── _all-skins.css
│ │ │ ├── _all-skins.min.css
│ │ │ ├── skin-black-light.css
│ │ │ ├── skin-black-light.min.css
│ │ │ ├── skin-black.css
│ │ │ ├── skin-black.min.css
│ │ │ ├── skin-blue-light.css
│ │ │ ├── skin-blue-light.min.css
│ │ │ ├── skin-blue.css
│ │ │ ├── skin-blue.min.css
│ │ │ ├── skin-green-light.css
│ │ │ ├── skin-green-light.min.css
│ │ │ ├── skin-green.css
│ │ │ ├── skin-green.min.css
│ │ │ ├── skin-purple-light.css
│ │ │ ├── skin-purple-light.min.css
│ │ │ ├── skin-purple.css
│ │ │ ├── skin-purple.min.css
│ │ │ ├── skin-red-light.css
│ │ │ ├── skin-red-light.min.css
│ │ │ ├── skin-red.css
│ │ │ ├── skin-red.min.css
│ │ │ ├── skin-yellow-light.css
│ │ │ ├── skin-yellow-light.min.css
│ │ │ ├── skin-yellow.css
│ │ │ └── skin-yellow.min.css
│ ├── img
│ │ ├── avatar.png
│ │ ├── avatar04.png
│ │ ├── avatar2.png
│ │ ├── avatar3.png
│ │ ├── avatar5.png
│ │ ├── boxed-bg.jpg
│ │ ├── boxed-bg.png
│ │ ├── credit
│ │ │ ├── american-express.png
│ │ │ ├── cirrus.png
│ │ │ ├── mastercard.png
│ │ │ ├── mestro.png
│ │ │ ├── paypal.png
│ │ │ ├── paypal2.png
│ │ │ └── visa.png
│ │ ├── default-50x50.gif
│ │ ├── icons.png
│ │ ├── photo1.png
│ │ ├── photo2.png
│ │ ├── photo3.jpg
│ │ ├── photo4.jpg
│ │ ├── user1-128x128.jpg
│ │ ├── user2-160x160.jpg
│ │ ├── user3-128x128.jpg
│ │ ├── user4-128x128.jpg
│ │ ├── user5-128x128.jpg
│ │ ├── user6-128x128.jpg
│ │ ├── user7-128x128.jpg
│ │ └── user8-128x128.jpg
│ └── js
│ │ ├── app.js
│ │ ├── app.min.js
│ │ ├── demo.js
│ │ └── pages
│ │ ├── dashboard.js
│ │ └── dashboard2.js
│ ├── bootstrap
│ ├── css
│ │ ├── bootstrap.css
│ │ ├── bootstrap.css.map
│ │ ├── bootstrap.min.css
│ │ └── bootstrap.min.css.map
│ ├── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ └── js
│ │ ├── bootstrap.js
│ │ ├── bootstrap.min.js
│ │ └── npm.js
│ ├── editor
│ ├── kindeditor-min.js
│ ├── lang
│ │ ├── ar.js
│ │ ├── en.js
│ │ ├── ko.js
│ │ ├── zh_CN.js
│ │ └── zh_TW.js
│ ├── plugins
│ │ ├── anchor
│ │ │ └── anchor.js
│ │ ├── autoheight
│ │ │ └── autoheight.js
│ │ ├── baidumap
│ │ │ ├── baidumap.js
│ │ │ ├── index.html
│ │ │ └── map.html
│ │ ├── clearhtml
│ │ │ └── clearhtml.js
│ │ ├── code
│ │ │ ├── code.js
│ │ │ ├── prettify.css
│ │ │ └── prettify.js
│ │ ├── emoticons
│ │ │ ├── emoticons.js
│ │ │ └── images
│ │ │ │ ├── 0.gif
│ │ │ │ ├── 1.gif
│ │ │ │ ├── 10.gif
│ │ │ │ ├── 100.gif
│ │ │ │ ├── 101.gif
│ │ │ │ ├── 102.gif
│ │ │ │ ├── 103.gif
│ │ │ │ ├── 104.gif
│ │ │ │ ├── 105.gif
│ │ │ │ ├── 106.gif
│ │ │ │ ├── 107.gif
│ │ │ │ ├── 108.gif
│ │ │ │ ├── 109.gif
│ │ │ │ ├── 11.gif
│ │ │ │ ├── 110.gif
│ │ │ │ ├── 111.gif
│ │ │ │ ├── 112.gif
│ │ │ │ ├── 113.gif
│ │ │ │ ├── 114.gif
│ │ │ │ ├── 115.gif
│ │ │ │ ├── 116.gif
│ │ │ │ ├── 117.gif
│ │ │ │ ├── 118.gif
│ │ │ │ ├── 119.gif
│ │ │ │ ├── 12.gif
│ │ │ │ ├── 120.gif
│ │ │ │ ├── 121.gif
│ │ │ │ ├── 122.gif
│ │ │ │ ├── 123.gif
│ │ │ │ ├── 124.gif
│ │ │ │ ├── 125.gif
│ │ │ │ ├── 126.gif
│ │ │ │ ├── 127.gif
│ │ │ │ ├── 128.gif
│ │ │ │ ├── 129.gif
│ │ │ │ ├── 13.gif
│ │ │ │ ├── 130.gif
│ │ │ │ ├── 131.gif
│ │ │ │ ├── 132.gif
│ │ │ │ ├── 133.gif
│ │ │ │ ├── 134.gif
│ │ │ │ ├── 14.gif
│ │ │ │ ├── 15.gif
│ │ │ │ ├── 16.gif
│ │ │ │ ├── 17.gif
│ │ │ │ ├── 18.gif
│ │ │ │ ├── 19.gif
│ │ │ │ ├── 2.gif
│ │ │ │ ├── 20.gif
│ │ │ │ ├── 21.gif
│ │ │ │ ├── 22.gif
│ │ │ │ ├── 23.gif
│ │ │ │ ├── 24.gif
│ │ │ │ ├── 25.gif
│ │ │ │ ├── 26.gif
│ │ │ │ ├── 27.gif
│ │ │ │ ├── 28.gif
│ │ │ │ ├── 29.gif
│ │ │ │ ├── 3.gif
│ │ │ │ ├── 30.gif
│ │ │ │ ├── 31.gif
│ │ │ │ ├── 32.gif
│ │ │ │ ├── 33.gif
│ │ │ │ ├── 34.gif
│ │ │ │ ├── 35.gif
│ │ │ │ ├── 36.gif
│ │ │ │ ├── 37.gif
│ │ │ │ ├── 38.gif
│ │ │ │ ├── 39.gif
│ │ │ │ ├── 4.gif
│ │ │ │ ├── 40.gif
│ │ │ │ ├── 41.gif
│ │ │ │ ├── 42.gif
│ │ │ │ ├── 43.gif
│ │ │ │ ├── 44.gif
│ │ │ │ ├── 45.gif
│ │ │ │ ├── 46.gif
│ │ │ │ ├── 47.gif
│ │ │ │ ├── 48.gif
│ │ │ │ ├── 49.gif
│ │ │ │ ├── 5.gif
│ │ │ │ ├── 50.gif
│ │ │ │ ├── 51.gif
│ │ │ │ ├── 52.gif
│ │ │ │ ├── 53.gif
│ │ │ │ ├── 54.gif
│ │ │ │ ├── 55.gif
│ │ │ │ ├── 56.gif
│ │ │ │ ├── 57.gif
│ │ │ │ ├── 58.gif
│ │ │ │ ├── 59.gif
│ │ │ │ ├── 6.gif
│ │ │ │ ├── 60.gif
│ │ │ │ ├── 61.gif
│ │ │ │ ├── 62.gif
│ │ │ │ ├── 63.gif
│ │ │ │ ├── 64.gif
│ │ │ │ ├── 65.gif
│ │ │ │ ├── 66.gif
│ │ │ │ ├── 67.gif
│ │ │ │ ├── 68.gif
│ │ │ │ ├── 69.gif
│ │ │ │ ├── 7.gif
│ │ │ │ ├── 70.gif
│ │ │ │ ├── 71.gif
│ │ │ │ ├── 72.gif
│ │ │ │ ├── 73.gif
│ │ │ │ ├── 74.gif
│ │ │ │ ├── 75.gif
│ │ │ │ ├── 76.gif
│ │ │ │ ├── 77.gif
│ │ │ │ ├── 78.gif
│ │ │ │ ├── 79.gif
│ │ │ │ ├── 8.gif
│ │ │ │ ├── 80.gif
│ │ │ │ ├── 81.gif
│ │ │ │ ├── 82.gif
│ │ │ │ ├── 83.gif
│ │ │ │ ├── 84.gif
│ │ │ │ ├── 85.gif
│ │ │ │ ├── 86.gif
│ │ │ │ ├── 87.gif
│ │ │ │ ├── 88.gif
│ │ │ │ ├── 89.gif
│ │ │ │ ├── 9.gif
│ │ │ │ ├── 90.gif
│ │ │ │ ├── 91.gif
│ │ │ │ ├── 92.gif
│ │ │ │ ├── 93.gif
│ │ │ │ ├── 94.gif
│ │ │ │ ├── 95.gif
│ │ │ │ ├── 96.gif
│ │ │ │ ├── 97.gif
│ │ │ │ ├── 98.gif
│ │ │ │ ├── 99.gif
│ │ │ │ └── static.gif
│ │ ├── filemanager
│ │ │ ├── filemanager.js
│ │ │ └── images
│ │ │ │ ├── file-16.gif
│ │ │ │ ├── file-64.gif
│ │ │ │ ├── folder-16.gif
│ │ │ │ ├── folder-64.gif
│ │ │ │ └── go-up.gif
│ │ ├── flash
│ │ │ └── flash.js
│ │ ├── image
│ │ │ ├── image.js
│ │ │ └── images
│ │ │ │ ├── align_left.gif
│ │ │ │ ├── align_right.gif
│ │ │ │ ├── align_top.gif
│ │ │ │ └── refresh.png
│ │ ├── insertfile
│ │ │ └── insertfile.js
│ │ ├── lineheight
│ │ │ └── lineheight.js
│ │ ├── link
│ │ │ └── link.js
│ │ ├── map
│ │ │ ├── map.html
│ │ │ └── map.js
│ │ ├── media
│ │ │ └── media.js
│ │ ├── multiimage
│ │ │ ├── images
│ │ │ │ ├── image.png
│ │ │ │ ├── select-files-en.png
│ │ │ │ ├── select-files-zh_CN.png
│ │ │ │ └── swfupload.swf
│ │ │ └── multiimage.js
│ │ ├── pagebreak
│ │ │ └── pagebreak.js
│ │ ├── plainpaste
│ │ │ └── plainpaste.js
│ │ ├── preview
│ │ │ └── preview.js
│ │ ├── quickformat
│ │ │ └── quickformat.js
│ │ ├── table
│ │ │ └── table.js
│ │ ├── template
│ │ │ ├── html
│ │ │ │ ├── 1.html
│ │ │ │ ├── 2.html
│ │ │ │ └── 3.html
│ │ │ └── template.js
│ │ └── wordpaste
│ │ │ └── wordpaste.js
│ └── themes
│ │ ├── common
│ │ ├── anchor.gif
│ │ ├── blank.gif
│ │ ├── flash.gif
│ │ ├── loading.gif
│ │ ├── media.gif
│ │ └── rm.gif
│ │ ├── default
│ │ ├── background.png
│ │ ├── default.css
│ │ └── default.png
│ │ ├── qq
│ │ ├── editor.gif
│ │ └── qq.css
│ │ └── simple
│ │ └── simple.css
│ ├── font-awesome
│ ├── css
│ │ ├── font-awesome.css
│ │ ├── font-awesome.css.map
│ │ └── font-awesome.min.css
│ └── fonts
│ │ ├── FontAwesome.otf
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.svg
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ └── fontawesome-webfont.woff2
│ ├── ionicons
│ └── ionicons.min.css
│ ├── js
│ ├── main.js
│ └── template.js
│ └── plugins
│ ├── fastclick
│ ├── fastclick.js
│ └── fastclick.min.js
│ ├── jQuery
│ └── jQuery-2.2.0.min.js
│ └── slimScroll
│ ├── jquery.slimscroll.js
│ └── jquery.slimscroll.min.js
├── manage.conf
├── modules.png
├── nginx.conf
├── pgw.sql
├── servers.png
├── src
├── access.lua
├── access_limit.lua
├── balancer.lua
├── config.lua
├── init.lua
├── manage
│ ├── access.lua
│ ├── app.lua
│ └── controller.lua
├── model
│ ├── api.lua
│ ├── domain.lua
│ ├── module.lua
│ ├── mysql.lua
│ └── server.lua
├── resty
│ ├── aes.lua
│ ├── cookie.lua
│ ├── md5.lua
│ ├── random.lua
│ ├── sha.lua
│ ├── sha1.lua
│ ├── sha224.lua
│ ├── sha256.lua
│ ├── sha384.lua
│ ├── sha512.lua
│ └── string.lua
└── service
│ └── agw.lua
├── uri_config.png
└── uris.png
/API.md:
--------------------------------------------------------------------------------
1 | ## api_key
2 | api_key可以在config.lua中增加配置
3 | ```lua
4 | config['api_key'] = "your api key string"
5 | ```
6 |
7 | ## 域名
8 | ### 添加域名
9 | #### 接口地址
10 | - POST /api/v1/domain/add?api_key={api_key}
11 | #### 表单参数
12 | | 参数 | 是否必须 | 说明 |
13 | | ---------------- | ------ | --------------------------------------- |
14 | | name | 是 | 域名名称 |
15 |
16 | #### 返回示例
17 | ```json
18 | {
19 | "info": {
20 | "insert_id": 17,
21 | "affected_rows": 1,
22 | "server_status": 2,
23 | "warning_count": 0
24 | },
25 | "errno": 0,
26 | "status": 200,
27 | "msg": "success"
28 | }
29 | ```
30 |
31 | ### 删除域名
32 | #### 接口地址
33 | - POST /api/v1/domain/delete?api_key={api_key}
34 | #### 表单参数
35 | | 参数 | 是否必须 | 说明 |
36 | | ---------------- | ------ | --------------------------------------- |
37 | | domain_id | 是 | 域名ID |
38 |
39 | #### 返回示例
40 | ```json
41 | {
42 | "errno": 0,
43 | "status": 200,
44 | "msg": "success"
45 | }
46 | ```
47 | > 域名删除时会删除所有域名相关的数据,慎用
48 |
49 | ### 修改域名
50 | #### 接口地址
51 | - POST /api/v1/domain/update?api_key={api_key}
52 | #### 表单参数
53 | | 参数 | 是否必须 | 说明 |
54 | | ---------------- | ------ | --------------------------------------- |
55 | | domain_id | 是 | 域名ID |
56 | | name | 是 | 域名名称 |
57 |
58 | #### 返回示例
59 | ```json
60 | {
61 | "errno": 0,
62 | "status": 200,
63 | "msg": "success"
64 | }
65 | ```
66 | > 域名删除时会删除所有域名相关的数据,慎用
67 |
68 | ### 查询已添加域名列表
69 | #### 接口地址
70 | - GET /api/v1/domain/all?api_key={api_key}
71 |
72 | #### 返回示例
73 | ```json
74 | {
75 | "info": [
76 | {
77 | "name": "www.xxx.com",
78 | "id": 2
79 | }
80 | ],
81 | "errno": 0,
82 | "status": 200,
83 | "msg": "success"
84 | }
85 | ```
86 |
87 | ## 模块
88 | > 每个域名下可以有多个模块
89 |
90 | - /api/v1/service/add
91 | - /api/v1/service/edit
92 | - /api/v1/service/delete
93 | - /api/v1/service/get
94 | - /api/v1/service/list
95 |
96 | ## 服务器
97 | > 每个模块可以有多个后端服务器
98 |
99 | - /api/v1/server/add
100 | - /api/v1/server/edit
101 | - /api/v1/server/delete
102 | - /api/v1/server/get
103 | - /api/v1/server/list
104 |
105 | ## URI映射
106 | > 每个模块可以有多个URI接口映射
107 |
108 | - /api/v1/api/add
109 | - /api/v1/api/edit
110 | - /api/v1/api/delete
111 | - /api/v1/api/get
112 | - /api/v1/api/list
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 小飞
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | 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, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | ## Proxy Gateway
3 |
4 | Proxy Gateway基于openresty(nginx lua module)开发,可以作为接口网关(api gateway)使用,整合业务模块接口,微服务治理聚合,通过web配置界面,能够轻松进行代理配置管理,支持负载均衡,服务器状态检测,后续简称PGW。包括以下特性
5 |
6 | - 支持多域名,可以配置多个出口域名,互不干扰
7 | - 代理分组(服务模块),可以按照业务模块进行分组
8 | - 负载均衡,可以给每组(每个业务模块)代理配置多台后端服务器,PGW会自动进行负载均衡
9 | - 服务器监控,将down掉的服务器自动剔除,恢复以后自动加入
10 | - 路径配置支持正则表达式对uri进行重写
11 | - 集群部署,PGW配置的MySQL数据库使用同一个就能达到集群效果,在任意一台PGW服务器上进行的配置都将在所有PGW服务器上生效
12 | - https配置,与nginx配置一致,修改nginx.conf文件
13 | - 高效,反向代理能力基本和原生nginx一致
14 | - 支持API级别的限流(可针对总访问量以及单个IP访问量进行限流)
15 |
16 | ### 安装
17 |
18 | 安装最新版本的openresty http://openresty.org/en/installation.html
19 |
20 | nginx.conf配置如下,如果按照默认路径(/usr/local/openresty/)安装,可以参考以下步骤
21 |
22 | ```shell
23 | cd /usr/local/openresty/nginx
24 | git clone https://github.com/ffay/proxygateway.git
25 | ```
26 |
27 | 然后把/usr/local/openresty/nginx/conf/nginx.conf 用源码中的nginx.conf替换即可
28 |
29 | https://github.com/ffay/proxygateway/blob/master/nginx.conf
30 |
31 | #### 配置manage.conf
32 |
33 | ```
34 | server {
35 | listen 8081;
36 | server_name localhost;
37 | index index.html;
38 | location /api/v1 {
39 | access_by_lua_block{
40 | local access = require "manage.access"
41 | access.checkLogin()
42 | }
43 | content_by_lua_block{
44 | local ctl = require "manage.controller"
45 | ctl.run()
46 | }
47 | }
48 |
49 | location /static {
50 | #源码中html的实际路径
51 | root /usr/local/openresty/nginx/proxygateway/html;
52 | }
53 |
54 | location / {
55 | access_by_lua_block{
56 | local access = require "manage.access"
57 | access.checkLogin()
58 | }
59 | #源码中html的实际路径
60 | root /usr/local/openresty/nginx/proxygateway/html;
61 | }
62 | }
63 | ```
64 |
65 | - 在PGW源码中 src/config.lua 进行管理员以及MySQL相关配置,如果需要使用限流功能,请正确配置redis
66 | - 在数据库中运行pgw.sql脚本
67 | - 启动openresty(openresty安装目录/nginx/sbin/nginx)
68 | - 在浏览器中打开 http://ip:8081 ,如果是集群部署,打开任意一台的PGW管理界面进行配置即可,登录即可进行域名以及分组代理等配置管理,其中添加的域名需要解析到相应PGW的ip,如果前端还有负载均衡器(例如aws或aliyun的load balancing),域名直接解析到负载均衡器ip即可
69 |
70 | ### 管理配置
71 |
72 | - 域(域名)管理,可以任意添加多个域名,默认域 localhost 在该域下的配置,直接访问IP生效,PGW通过域名进行配置隔离,每个域名下的配置互不干扰,需要将域名解析到PGW的IP
73 | - 服务模块,每个域名下面可以添加多个服务模块,用于将接口按业务模块进行分组
74 |
75 | 
76 |
77 | - 后端服务器,每个服务模块下面可以配置多台后端服务器,可以为每台服务器指定权重,负载均衡时会按权重进行接口请求分发,支持http以及https代理
78 |
79 | 
80 |
81 | - 代理路径(uri)配置,每个服务模块下可配置多个代理uri规则,配置规则类似nginx location的配置,配置实例
82 |
83 | 
84 | 
85 |
86 |
87 | |原始请求URI|后端服务URI|说明|
88 | |:---- |:---|:----- |
89 | |/ |/ |将所有对PGW某个域下的请求转发到后端服务器 |
90 | |/u |/user |将所有对PGW某个域下/u开头的请求重写成/user后转发到后端服务器,例如,请求 /u/1001 转发到后端服务器为 /user/1001 |
91 | |/topic/([0-9]+)/([0-9]+) |/topic?uid=$1&tid=$2 |支持正则匹配,请求 /topic/1001/2002 转发到后端服务器为 /topic?uid=1001&tid=2002 |
92 | |/t%?tid=(.*) |/topic?tid=$1 |支持正则匹配,原始请求URI中如果有 ? 出现,需要在前面加上 %,用于转义问号 |
93 |
94 | 所有接口映射配置必须以 / 开头,同一个域下面 原始请求URI 不能重复,原始请求URI **字符串越长匹配优先级越高**
95 |
96 | #### 后续
97 |
98 | - 认证检测
99 | - IP黑白名单
100 | - 数据统计
101 | - 欢迎提出更多功能
102 |
103 |
--------------------------------------------------------------------------------
/html/login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 登录 - Proxy Gateway
8 |
9 |
12 |
13 |
14 |
18 |
21 |
22 |
23 |
24 |
26 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/html/pages/api/add.html:
--------------------------------------------------------------------------------
1 |
4 |
33 |
46 |
--------------------------------------------------------------------------------
/html/pages/api/edit.html:
--------------------------------------------------------------------------------
1 |
4 |
49 |
--------------------------------------------------------------------------------
/html/pages/api/list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
33 |
55 |
84 |
--------------------------------------------------------------------------------
/html/pages/domain/add.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
36 |
--------------------------------------------------------------------------------
/html/pages/domain/edit.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
37 |
--------------------------------------------------------------------------------
/html/pages/domain/list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
19 |
35 |
64 |
--------------------------------------------------------------------------------
/html/pages/server/add.html:
--------------------------------------------------------------------------------
1 |
4 |
44 |
69 |
--------------------------------------------------------------------------------
/html/pages/server/edit.html:
--------------------------------------------------------------------------------
1 |
4 |
42 |
--------------------------------------------------------------------------------
/html/pages/server/list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
33 |
67 |
96 |
--------------------------------------------------------------------------------
/html/pages/service/add.html:
--------------------------------------------------------------------------------
1 |
4 |
33 |
46 |
--------------------------------------------------------------------------------
/html/pages/service/edit.html:
--------------------------------------------------------------------------------
1 |
4 |
33 |
57 |
--------------------------------------------------------------------------------
/html/pages/service/list.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
30 |
61 |
90 |
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-black.min.css:
--------------------------------------------------------------------------------
1 | .skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus,.skin-black .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black .pace .pace-progress{background:#222}.skin-black .pace .pace-activity{border-top-color:#222;border-left-color:#222}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-blue-light.min.css:
--------------------------------------------------------------------------------
1 | .skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-blue.min.css:
--------------------------------------------------------------------------------
1 | .skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-green-light.min.css:
--------------------------------------------------------------------------------
1 | .skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-green.min.css:
--------------------------------------------------------------------------------
1 | .skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-purple-light.min.css:
--------------------------------------------------------------------------------
1 | .skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-purple.min.css:
--------------------------------------------------------------------------------
1 | .skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-red-light.min.css:
--------------------------------------------------------------------------------
1 | .skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-red.min.css:
--------------------------------------------------------------------------------
1 | .skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-yellow-light.min.css:
--------------------------------------------------------------------------------
1 | .skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
--------------------------------------------------------------------------------
/html/static/adminlte/css/skins/skin-yellow.min.css:
--------------------------------------------------------------------------------
1 | .skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
--------------------------------------------------------------------------------
/html/static/adminlte/img/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/avatar.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/avatar04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/avatar04.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/avatar2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/avatar2.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/avatar3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/avatar3.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/avatar5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/avatar5.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/boxed-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/boxed-bg.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/boxed-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/boxed-bg.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/american-express.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/american-express.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/cirrus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/cirrus.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/mastercard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/mastercard.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/mestro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/mestro.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/paypal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/paypal.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/paypal2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/paypal2.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/credit/visa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/credit/visa.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/default-50x50.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/default-50x50.gif
--------------------------------------------------------------------------------
/html/static/adminlte/img/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/icons.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/photo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/photo1.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/photo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/photo2.png
--------------------------------------------------------------------------------
/html/static/adminlte/img/photo3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/photo3.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/photo4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/photo4.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user1-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user1-128x128.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user2-160x160.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user2-160x160.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user3-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user3-128x128.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user4-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user4-128x128.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user5-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user5-128x128.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user6-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user6-128x128.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user7-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user7-128x128.jpg
--------------------------------------------------------------------------------
/html/static/adminlte/img/user8-128x128.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/adminlte/img/user8-128x128.jpg
--------------------------------------------------------------------------------
/html/static/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/html/static/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/html/static/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/html/static/bootstrap/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ffay/proxygateway/d8233f0582415ee78b3817f53998bb70227f1da9/html/static/bootstrap/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/html/static/bootstrap/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/html/static/editor/plugins/anchor/anchor.js:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * KindEditor - WYSIWYG HTML Editor for Internet
3 | * Copyright (C) 2006-2011 kindsoft.net
4 | *
5 | * @author Roddy
6 | * @site http://www.kindsoft.net/
7 | * @licence http://www.kindsoft.net/license.php
8 | *******************************************************************************/
9 |
10 | KindEditor.plugin('anchor', function(K) {
11 | var self = this, name = 'anchor', lang = self.lang(name + '.');
12 | self.plugin.anchor = {
13 | edit : function() {
14 | var html = ['',
15 | '
',
16 | '',
17 | '',
18 | '
',
19 | '
'].join('');
20 | var dialog = self.createDialog({
21 | name : name,
22 | width : 300,
23 | title : self.lang(name),
24 | body : html,
25 | yesBtn : {
26 | name : self.lang('yes'),
27 | click : function(e) {
28 | self.insertHtml('').hideDialog().focus();
29 | }
30 | }
31 | });
32 | var div = dialog.div,
33 | nameBox = K('input[name="name"]', div);
34 | var img = self.plugin.getSelectedAnchor();
35 | if (img) {
36 | nameBox.val(unescape(img.attr('data-ke-name')));
37 | }
38 | nameBox[0].focus();
39 | nameBox[0].select();
40 | },
41 | 'delete' : function() {
42 | self.plugin.getSelectedAnchor().remove();
43 | }
44 | };
45 | self.clickToolbar(name, self.plugin.anchor.edit);
46 | });
47 |
--------------------------------------------------------------------------------
/html/static/editor/plugins/autoheight/autoheight.js:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * KindEditor - WYSIWYG HTML Editor for Internet
3 | * Copyright (C) 2006-2011 kindsoft.net
4 | *
5 | * @author Roddy
6 | * @site http://www.kindsoft.net/
7 | * @licence http://www.kindsoft.net/license.php
8 | *******************************************************************************/
9 |
10 | KindEditor.plugin('autoheight', function(K) {
11 | var self = this;
12 |
13 | if (!self.autoHeightMode) {
14 | return;
15 | }
16 |
17 | var minHeight;
18 |
19 | function hideScroll() {
20 | var edit = self.edit;
21 | var body = edit.doc.body;
22 | edit.iframe[0].scroll = 'no';
23 | body.style.overflowY = 'hidden';
24 | }
25 |
26 | function resetHeight() {
27 | var edit = self.edit;
28 | var body = edit.doc.body;
29 | edit.iframe.height(minHeight);
30 | self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight));
31 | }
32 |
33 | function init() {
34 | minHeight = K.removeUnit(self.height);
35 |
36 | self.edit.afterChange(resetHeight);
37 | hideScroll();
38 | resetHeight();
39 | }
40 |
41 | if (self.isCreated) {
42 | init();
43 | } else {
44 | self.afterCreate(init);
45 | }
46 | });
47 |
48 | /*
49 | * 如何实现真正的自动高度?
50 | * 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。
51 | * 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。
52 | * 由此就实现了真正的自动高度
53 | * 测试:chrome、firefox、IE9、IE8
54 | * */
55 |
--------------------------------------------------------------------------------
/html/static/editor/plugins/baidumap/baidumap.js:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * KindEditor - WYSIWYG HTML Editor for Internet
3 | * Copyright (C) 2006-2011 kindsoft.net
4 | *
5 | * @author Roddy
6 | * @site http://www.kindsoft.net/
7 | * @licence http://www.kindsoft.net/license.php
8 | *******************************************************************************/
9 |
10 | // Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5
11 |
12 | KindEditor.plugin('baidumap', function(K) {
13 | var self = this, name = 'baidumap', lang = self.lang(name + '.');
14 | var mapWidth = K.undef(self.mapWidth, 558);
15 | var mapHeight = K.undef(self.mapHeight, 360);
16 | self.clickToolbar(name, function() {
17 | var html = ['',
18 | '',
32 | '
',
33 | '
'].join('');
34 | var dialog = self.createDialog({
35 | name : name,
36 | width : mapWidth + 42,
37 | title : self.lang(name),
38 | body : html,
39 | yesBtn : {
40 | name : self.lang('yes'),
41 | click : function(e) {
42 | var map = win.map;
43 | var centerObj = map.getCenter();
44 | var center = centerObj.lng + ',' + centerObj.lat;
45 | var zoom = map.getZoom();
46 | var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage',
47 | '?center=' + encodeURIComponent(center),
48 | '&zoom=' + encodeURIComponent(zoom),
49 | '&width=' + mapWidth,
50 | '&height=' + mapHeight,
51 | '&markers=' + encodeURIComponent(center),
52 | '&markerStyles=' + encodeURIComponent('l,A')].join('');
53 | if (checkbox[0].checked) {
54 | self.insertHtml('');
55 | } else {
56 | self.exec('insertimage', url);
57 | }
58 | self.hideDialog().focus();
59 | }
60 | },
61 | beforeRemove : function() {
62 | searchBtn.remove();
63 | if (doc) {
64 | doc.write('');
65 | }
66 | iframe.remove();
67 | }
68 | });
69 | var div = dialog.div,
70 | addressBox = K('[name="address"]', div),
71 | searchBtn = K('[name="searchBtn"]', div),
72 | checkbox = K('[name="insertDynamicMap"]', dialog.div),
73 | win, doc;
74 | var iframe = K('');
75 | function ready() {
76 | win = iframe[0].contentWindow;
77 | doc = K.iframeDoc(iframe);
78 | }
79 | iframe.bind('load', function() {
80 | iframe.unbind('load');
81 | if (K.IE) {
82 | ready();
83 | } else {
84 | setTimeout(ready, 0);
85 | }
86 | });
87 | K('.ke-map', div).replaceWith(iframe);
88 | // search map
89 | searchBtn.click(function() {
90 | win.search(addressBox.val());
91 | });
92 | });
93 | });
94 |
--------------------------------------------------------------------------------
/html/static/editor/plugins/baidumap/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 百度地图API自定义地图
8 |
9 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
83 |
--------------------------------------------------------------------------------
/html/static/editor/plugins/baidumap/map.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Baidu Maps
6 |
10 |
11 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/html/static/editor/plugins/clearhtml/clearhtml.js:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * KindEditor - WYSIWYG HTML Editor for Internet
3 | * Copyright (C) 2006-2011 kindsoft.net
4 | *
5 | * @author Roddy
6 | * @site http://www.kindsoft.net/
7 | * @licence http://www.kindsoft.net/license.php
8 | *******************************************************************************/
9 |
10 | KindEditor.plugin('clearhtml', function(K) {
11 | var self = this, name = 'clearhtml';
12 | self.clickToolbar(name, function() {
13 | self.focus();
14 | var html = self.html();
15 | html = html.replace(/(
11 |
53 |
54 |
55 |
56 |
57 |