Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
53e4dc7a
Commit
53e4dc7a
authored
Oct 28, 2015
by
ibuler@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
search detail
parent
76ad6730
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
221 additions
and
23 deletions
+221
-23
models.py
jlog/models.py
+10
-0
urls.py
jlog/urls.py
+3
-3
views.py
jlog/views.py
+9
-8
api.py
jumpserver/api.py
+4
-6
chosen-sprite.png
static/css/plugins/chosen/chosen-sprite.png
+0
-0
chosen-sprite@2x.png
static/css/plugins/chosen/chosen-sprite@2x.png
+0
-0
chosen.css
static/css/plugins/chosen/chosen.css
+0
-0
datepicker3.css
static/css/plugins/datapicker/datepicker3.css
+0
-0
cropper.min.js
static/js/cropper/cropper.min.js
+0
-0
bootstrap-datepicker.js
static/js/datapicker/bootstrap-datepicker.js
+0
-0
chosen.jquery.js
static/js/plugins/chosen/chosen.jquery.js
+0
-0
log_filter.html
templates/jlog/log_filter.html
+140
-0
log_offline.html
templates/jlog/log_offline.html
+54
-6
log_online.html
templates/jlog/log_online.html
+1
-0
No files found.
jlog/models.py
View file @
53e4dc7a
...
@@ -19,3 +19,13 @@ class Alert(models.Model):
...
@@ -19,3 +19,13 @@ class Alert(models.Model):
msg
=
models
.
CharField
(
max_length
=
20
)
msg
=
models
.
CharField
(
max_length
=
20
)
time
=
models
.
DateTimeField
(
null
=
True
)
time
=
models
.
DateTimeField
(
null
=
True
)
is_finished
=
models
.
BigIntegerField
(
default
=
False
)
is_finished
=
models
.
BigIntegerField
(
default
=
False
)
class
TtyLog
(
models
.
Model
):
log_id
=
models
.
IntegerField
(
max_length
=
50
)
username
=
models
.
CharField
(
max_length
=
100
)
host
=
models
.
CharField
(
max_length
=
100
)
remote_ip
=
models
.
CharField
(
max_length
=
100
)
datetime
=
models
.
DateTimeField
()
cmd
=
models
.
CharField
(
max_length
=
200
)
jlog/urls.py
View file @
53e4dc7a
...
@@ -8,5 +8,5 @@ urlpatterns = patterns('',
...
@@ -8,5 +8,5 @@ urlpatterns = patterns('',
# url(r'^log_kill/', log_kill),
# url(r'^log_kill/', log_kill),
url
(
r'^history/$'
,
log_history
),
url
(
r'^history/$'
,
log_history
),
url
(
r'^record/$'
,
log_record
),
url
(
r'^record/$'
,
log_record
),
# url(r'^search/$', log_search),
url
(
r'^search/$'
,
log_search
),
)
)
\ No newline at end of file
\ No newline at end of file
jlog/views.py
View file @
53e4dc7a
...
@@ -92,14 +92,11 @@ def log_list(request, offset):
...
@@ -92,14 +92,11 @@ def log_list(request, offset):
def
log_history
(
request
):
def
log_history
(
request
):
""" 命令历史记录 """
""" 命令历史记录 """
log_id
=
request
.
GET
.
get
(
'id'
,
0
)
log_id
=
request
.
GET
.
get
(
'id'
,
0
)
log
=
Log
.
objects
.
filter
(
id
=
int
(
log_id
))
tty_logs
=
TtyLog
.
objects
.
filter
(
log_id
=
int
(
log_id
))
.
order_by
(
'datetime'
)
if
log
:
if
tty_logs
:
log
=
log
[
0
]
content
=
''
log_his
=
"
%
s.his"
%
log
.
log_path
for
tty_log
in
tty_logs
:
print
log_his
content
+=
'
%
s:
%
s
\n
'
%
(
tty_log
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
),
tty_log
.
cmd
)
if
os
.
path
.
isfile
(
log_his
):
f
=
open
(
log_his
)
content
=
f
.
read
()
return
HttpResponse
(
content
)
return
HttpResponse
(
content
)
else
:
else
:
return
HttpResponse
(
'无日志记录, 请查看日志处理脚本是否开启!'
)
return
HttpResponse
(
'无日志记录, 请查看日志处理脚本是否开启!'
)
...
@@ -119,6 +116,10 @@ def log_record(request):
...
@@ -119,6 +116,10 @@ def log_record(request):
return
HttpResponse
(
'无日志记录, 请查看日志处理脚本是否开启!'
)
return
HttpResponse
(
'无日志记录, 请查看日志处理脚本是否开启!'
)
def
log_search
(
request
):
print
request
.
GET
return
render_to_response
(
'jlog/log_filter.html'
,
locals
())
# def log_search(request):
# def log_search(request):
# """ 日志搜索 """
# """ 日志搜索 """
# offset = request.GET.get('env', '')
# offset = request.GET.get('env', '')
...
...
jumpserver/api.py
View file @
53e4dc7a
...
@@ -20,7 +20,7 @@ from django.template import RequestContext
...
@@ -20,7 +20,7 @@ from django.template import RequestContext
from
juser.models
import
User
,
UserGroup
from
juser.models
import
User
,
UserGroup
from
jasset.models
import
Asset
,
AssetGroup
from
jasset.models
import
Asset
,
AssetGroup
from
jasset.models
import
AssetAlias
from
jasset.models
import
AssetAlias
from
jlog.models
import
Log
from
jlog.models
import
Log
,
TtyLog
from
django.core.exceptions
import
ObjectDoesNotExist
,
MultipleObjectsReturned
from
django.core.exceptions
import
ObjectDoesNotExist
,
MultipleObjectsReturned
from
django.http
import
HttpResponseRedirect
from
django.http
import
HttpResponseRedirect
from
django.shortcuts
import
render_to_response
from
django.shortcuts
import
render_to_response
...
@@ -202,7 +202,6 @@ class Jtty(object):
...
@@ -202,7 +202,6 @@ class Jtty(object):
try
:
try
:
log_file_f
=
open
(
log_file_path
+
'.log'
,
'a'
)
log_file_f
=
open
(
log_file_path
+
'.log'
,
'a'
)
log_time_f
=
open
(
log_file_path
+
'.time'
,
'a'
)
log_time_f
=
open
(
log_file_path
+
'.time'
,
'a'
)
log_res_f
=
open
(
log_file_path
+
'.his'
,
'a'
)
except
IOError
:
except
IOError
:
raise
ServerError
(
'Create logfile failed, Please modify
%
s permission.'
%
today_connect_log_dir
)
raise
ServerError
(
'Create logfile failed, Please modify
%
s permission.'
%
today_connect_log_dir
)
...
@@ -210,14 +209,14 @@ class Jtty(object):
...
@@ -210,14 +209,14 @@ class Jtty(object):
log_path
=
log_file_path
,
start_time
=
datetime
.
datetime
.
now
(),
pid
=
pid
)
log_path
=
log_file_path
,
start_time
=
datetime
.
datetime
.
now
(),
pid
=
pid
)
log_file_f
.
write
(
'Start time is
%
s
\n
'
%
datetime
.
datetime
.
now
())
log_file_f
.
write
(
'Start time is
%
s
\n
'
%
datetime
.
datetime
.
now
())
log
.
save
()
log
.
save
()
return
log_file_f
,
log_time_f
,
log_res_f
,
log
return
log_file_f
,
log_time_f
,
ip_list
,
log
def
posix_shell
(
self
):
def
posix_shell
(
self
):
"""
"""
Use paramiko channel connect server interactive.
Use paramiko channel connect server interactive.
使用paramiko模块的channel,连接后端,进入交互式
使用paramiko模块的channel,连接后端,进入交互式
"""
"""
log_file_f
,
log_time_f
,
log_res_f
,
log
=
self
.
log_record
()
log_file_f
,
log_time_f
,
ip_list
,
log
=
self
.
log_record
()
old_tty
=
termios
.
tcgetattr
(
sys
.
stdin
)
old_tty
=
termios
.
tcgetattr
(
sys
.
stdin
)
pre_timestamp
=
time
.
time
()
pre_timestamp
=
time
.
time
()
input_r
=
''
input_r
=
''
...
@@ -261,8 +260,7 @@ class Jtty(object):
...
@@ -261,8 +260,7 @@ class Jtty(object):
if
str
(
x
)
in
[
'
\r
'
,
'
\n
'
,
'
\r\n
'
]:
if
str
(
x
)
in
[
'
\r
'
,
'
\n
'
,
'
\r\n
'
]:
input_r
=
remove_control_char
(
input_r
)
input_r
=
remove_control_char
(
input_r
)
log_res_f
.
write
(
'
%
s:
%
s
\n
'
%
(
datetime
.
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
),
input_r
))
TtyLog
(
log_id
=
log
.
id
,
username
=
self
.
username
,
host
=
self
.
ip
,
remote_ip
=
ip_list
,
datetime
=
datetime
.
datetime
.
now
(),
cmd
=
input_r
)
.
save
()
log_res_f
.
flush
()
input_r
=
''
input_r
=
''
input_mode
=
False
input_mode
=
False
...
...
static/css/plugins/chosen/chosen-sprite.png
0 → 100755
View file @
53e4dc7a
646 Bytes
static/css/plugins/chosen/chosen-sprite@2x.png
0 → 100755
View file @
53e4dc7a
872 Bytes
static/css/plugins/chosen/chosen.css
0 → 100755
View file @
53e4dc7a
This diff is collapsed.
Click to expand it.
static/css/plugins/datapicker/datepicker3.css
0 → 100755
View file @
53e4dc7a
This diff is collapsed.
Click to expand it.
static/js/cropper/cropper.min.js
0 → 100755
View file @
53e4dc7a
This diff is collapsed.
Click to expand it.
static/js/datapicker/bootstrap-datepicker.js
0 → 100755
View file @
53e4dc7a
This diff is collapsed.
Click to expand it.
static/js/plugins/chosen/chosen.jquery.js
0 → 100755
View file @
53e4dc7a
This diff is collapsed.
Click to expand it.
templates/jlog/log_filter.html
0 → 100644
View file @
53e4dc7a
{% extends 'base.html' %}
{% block self_head_css_js %}
<link
href=
"/static/css/plugins/datapicker/datepicker3.css"
rel=
"stylesheet"
>
<link
href=
"/static/css/plugins/chosen/chosen.css"
rel=
"stylesheet"
>
<script
src=
"/static/js/plugins/chosen/chosen.jquery.js"
></script>
{% endblock %}
{% block content %}
{% include 'nav_cat_bar.html' %}
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-lg-12"
>
<div
class=
"ibox float-e-margins"
>
<div
id=
"ibox-content"
class=
"ibox-title"
>
<h5>
用户日志详细信息列表
</h5>
<div
class=
"ibox-tools"
>
<a
class=
"collapse-link"
>
<i
class=
"fa fa-chevron-up"
></i>
</a>
<a
class=
"dropdown-toggle"
data-toggle=
"dropdown"
href=
"#"
>
<i
class=
"fa fa-wrench"
></i>
</a>
<a
class=
"close-link"
>
<i
class=
"fa fa-times"
></i>
</a>
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"panel-options"
>
<ul
class=
"nav nav-tabs"
>
<li><a
href=
"/jlog/log_list/online/"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
在线
</a></li>
<li><a
href=
"/jlog/log_list/offline/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
历史记录
</a></li>
<li
class=
"active"
><a
href=
"/jlog/search/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
详细搜索
</a></li>
</ul>
</div>
<br/>
<div
class=
"tab-content"
>
<form
method=
"get"
action=
""
role=
"form"
class=
"form-inline"
>
<p>
选择相应条件进行搜索
</p>
<div
class=
"form-group"
id=
"data_5"
>
<div
class=
"input-daterange input-group"
id=
"datepicker"
>
<input
type=
"text"
class=
"input-sm form-control"
style=
"width: 100px;"
name=
"start"
value=
"{{ date_seven_day }}"
>
<span
class=
"input-group-addon"
>
to
</span>
<input
type=
"text"
class=
"input-sm form-control"
style=
"width: 100px;"
name=
"end"
value=
"{{ date_now_str }}"
>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"input-group"
>
<select
name=
"single"
data-placeholder=
"用户名"
class=
"chosen-select"
multiple
style=
"width:300px;"
tabindex=
"2"
>
<option
value=
"用户"
>
用户名
</option>
<option
value=
"Bolivia, Plurinational State of"
>
hongweiguang
</option>
<option
value=
"Bonaire, Sint Eustatius and Saba"
>
wangyong
</option>
<option
value=
"Bosnia and Herzegovina"
>
hehe
</option>
<option
value=
"Botswana"
>
wangyong
</option>
<option
value=
"Bouvet Island"
>
wangyongd
</option>
<option
value=
"Romania"
>
Romania
</option>
<option
value=
"Zambia"
>
Zambia
</option>
<option
value=
"Zimbabwe"
>
Zimbabwe
</option>
</select>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"input-group"
>
<select
name=
"multi"
data-placeholder=
"主机"
class=
"chosen-select"
multiple
style=
"width:200px;"
tabindex=
"4"
>
<option
value=
"主机"
>
主机
</option>
<option
value=
"United States"
>
172.16.1.1
</option>
<option
value=
"Afghanistan"
>
172.16.1.1
</option>
<option
value=
"Aland Islands"
>
172.16.1.1
</option>
<option
value=
"Albania"
>
172.16.1.1
</option>
<option
value=
"Algeria"
>
172.16.1.1
</option>
<option
value=
"American Samoa"
>
172.16.1.1
</option>
<option
value=
"Andorra"
>
172.16.1.1
</option>
<option
value=
"Angola"
>
172.16.1.1
</option>
<option
value=
"Anguilla"
>
172.16.1.1
</option>
<option
value=
"Antarctica"
>
172.16.1.1
</option>
</select>
</div>
</div>
<div
class=
"form-group"
>
<input
id=
"cmd"
name=
"cmd"
placeholder=
"命令"
type=
"text"
class=
"form-control"
style=
"width: 200px;"
>
</div>
<div
class=
"form-group"
>
<button
id=
"submit_button"
class=
"btn btn-primary"
type=
"submit"
>
搜索
</button>
</div>
</form>
<div
class=
"row"
>
<div
class=
"col-sm-6"
>
</div>
{% include 'paginator.html' %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function
log_search
(){
$
.
ajax
({
type
:
"GET"
,
url
:
"/jlog/search/?env=offline"
,
data
:
$
(
"#search_form"
).
serialize
(),
success
:
function
(
data
)
{
$
(
".tab-content"
).
html
(
data
);
}
});
}
$
(
document
).
ready
(
function
(){
$
(
'#data_5 .input-daterange'
).
datepicker
({
dateFormat
:
'yy-mm-dd'
,
keyboardNavigation
:
false
,
forceParse
:
false
,
autoclose
:
true
});
});
var
config
=
{
'.chosen-select'
:
{},
'.chosen-select-deselect'
:
{
allow_single_deselect
:
true
},
'.chosen-select-no-single'
:
{
disable_search_threshold
:
10
},
'.chosen-select-no-results'
:
{
no_results_text
:
'Oops, nothing found!'
},
'.chosen-select-width'
:
{
width
:
"95%"
}
};
for
(
var
selector
in
config
)
{
$
(
selector
).
chosen
(
config
[
selector
]);
}
</script>
{% endblock %}
{% block self_footer_js %}
<script
src=
"/static/js/cropper/cropper.min.js"
></script>
<script
src=
"/static/js/datapicker/bootstrap-datepicker.js"
></script>
<script
src=
"/static/js/plugins/chosen/chosen.jquery.js"
></script>
{% endblock %}
\ No newline at end of file
templates/jlog/log_offline.html
View file @
53e4dc7a
{% extends 'base.html' %}
{% extends 'base.html' %}
{% block self_head_css_js %}
{% block self_head_css_js %}
<link
href=
"/static/css/plugins/datapicker/datepicker3.css"
rel=
"stylesheet"
>
<link
href=
"/static/css/plugins/datapicker/datepicker3.css"
rel=
"stylesheet"
>
<link
href=
"/static/css/plugins/chosen/chosen.css"
rel=
"stylesheet"
>
<script
src=
"/static/js/plugins/chosen/chosen.jquery.js"
></script>
{% endblock %}
{% endblock %}
{% block content %}
{% block content %}
{% include 'nav_cat_bar.html' %}
{% include 'nav_cat_bar.html' %}
...
@@ -54,8 +56,13 @@
...
@@ -54,8 +56,13 @@
<ul
class=
"nav nav-tabs"
>
<ul
class=
"nav nav-tabs"
>
<li><a
href=
"/jlog/log_list/online/"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
在线
</a></li>
<li><a
href=
"/jlog/log_list/online/"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
在线
</a></li>
<li
class=
"active"
><a
href=
"/jlog/log_list/offline/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
历史记录
</a></li>
<li
class=
"active"
><a
href=
"/jlog/log_list/offline/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
历史记录
</a></li>
<li
style=
"float: right"
>
{#
<li><a
href=
"/jlog/search/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
详细搜索
</a></li>
#}
</ul>
</div>
<br/>
<form
class=
"form-inline"
action=
""
method=
"get"
>
<form
class=
"form-inline"
action=
""
method=
"get"
>
<div
class=
"form-group"
id=
"data_5"
>
<div
class=
"form-group"
id=
"data_5"
>
<div
class=
"form-group"
id=
"data_5"
>
<div
class=
"input-daterange input-group"
id=
"datepicker"
>
<div
class=
"input-daterange input-group"
id=
"datepicker"
>
<input
type=
"text"
class=
"input-sm form-control"
style=
"width: 100px;"
name=
"start"
value=
"{{ date_seven_day }}"
>
<input
type=
"text"
class=
"input-sm form-control"
style=
"width: 100px;"
name=
"start"
value=
"{{ date_seven_day }}"
>
...
@@ -64,16 +71,45 @@
...
@@ -64,16 +71,45 @@
</div>
</div>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<input
type=
"text"
class=
"form-control input-sm"
id=
"search_input"
name=
"keyword"
placeholder=
"Search"
>
<div
class=
"input-group"
>
<select
name=
"single"
data-placeholder=
"用户名"
class=
"chosen-select"
multiple
style=
"width:200px;"
tabindex=
"2"
>
<option
value=
"用户"
>
用户名
</option>
<option
value=
"Bolivia, Plurinational State of"
>
hongweiguang
</option>
<option
value=
"Bonaire, Sint Eustatius and Saba"
>
wangyong
</option>
<option
value=
"Bosnia and Herzegovina"
>
hehe
</option>
<option
value=
"Botswana"
>
wangyong
</option>
<option
value=
"Bouvet Island"
>
wangyongd
</option>
<option
value=
"Romania"
>
Romania
</option>
<option
value=
"Zambia"
>
Zambia
</option>
<option
value=
"Zimbabwe"
>
Zimbabwe
</option>
</select>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"input-group"
>
<select
name=
"multi"
data-placeholder=
"主机"
class=
"chosen-select"
multiple
style=
"width:200px;"
tabindex=
"4"
>
<option
value=
"主机"
>
主机
</option>
<option
value=
"United States"
>
172.16.1.1
</option>
<option
value=
"Afghanistan"
>
172.16.1.1
</option>
<option
value=
"Aland Islands"
>
172.16.1.1
</option>
<option
value=
"Albania"
>
172.16.1.1
</option>
<option
value=
"Algeria"
>
172.16.1.1
</option>
<option
value=
"American Samoa"
>
172.16.1.1
</option>
<option
value=
"Andorra"
>
172.16.1.1
</option>
<option
value=
"Angola"
>
172.16.1.1
</option>
<option
value=
"Anguilla"
>
172.16.1.1
</option>
<option
value=
"Antarctica"
>
172.16.1.1
</option>
</select>
</div>
</div>
<div
class=
"form-group"
>
<input
id=
"cmd"
name=
"cmd"
placeholder=
"命令"
type=
"text"
class=
"form-control"
style=
"width: 200px;"
>
</div>
</div>
</div>
<button
id=
'search_btn'
type=
"submit"
class=
"btn btn-sm btn-primary"
>
<button
id=
'search_btn'
type=
"submit"
class=
"btn btn-sm btn-primary"
>
Search
Search
</button>
</button>
</form>
</form>
</li>
</ul>
</div>
<br/>
<div
class=
"tab-content"
>
<div
class=
"tab-content"
>
<table
class=
"table table-striped table-bordered table-hover "
>
<table
class=
"table table-striped table-bordered table-hover "
>
<thead>
<thead>
...
@@ -91,6 +127,7 @@
...
@@ -91,6 +127,7 @@
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
{% for post in contacts.object_list %}
{% for post in contacts.object_list %}
<tr
class=
"gradeX"
>
<tr
class=
"gradeX"
>
<td
class=
"text-center"
id=
"username"
>
{{ post.user }}
</td>
<td
class=
"text-center"
id=
"username"
>
{{ post.user }}
</td>
...
@@ -167,6 +204,17 @@
...
@@ -167,6 +204,17 @@
autoclose
:
true
autoclose
:
true
});
});
var
config
=
{
'.chosen-select'
:
{},
'.chosen-select-deselect'
:
{
allow_single_deselect
:
true
},
'.chosen-select-no-single'
:
{
disable_search_threshold
:
10
},
'.chosen-select-no-results'
:
{
no_results_text
:
'Oops, nothing found!'
},
'.chosen-select-width'
:
{
width
:
"95%"
}
};
for
(
var
selector
in
config
)
{
$
(
selector
).
chosen
(
config
[
selector
]);
}
</script>
</script>
{% endblock %}
{% endblock %}
{% block self_footer_js %}
{% block self_footer_js %}
...
...
templates/jlog/log_online.html
View file @
53e4dc7a
...
@@ -50,6 +50,7 @@
...
@@ -50,6 +50,7 @@
<ul
class=
"nav nav-tabs"
>
<ul
class=
"nav nav-tabs"
>
<li
class=
"active"
><a
href=
"/jlog/log_list/online/"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
在线
</a></li>
<li
class=
"active"
><a
href=
"/jlog/log_list/online/"
class=
"text-center"
><i
class=
"fa fa-laptop"
></i>
在线
</a></li>
<li><a
href=
"/jlog/log_list/offline/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
历史记录
</a></li>
<li><a
href=
"/jlog/log_list/offline/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
历史记录
</a></li>
<li><a
href=
"/jlog/search/"
class=
"text-center"
><i
class=
"fa fa-bar-chart-o"
></i>
详细搜索
</a></li>
</ul>
</ul>
</div>
</div>
<br/>
<br/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment