Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
coco
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
coco
Commits
2a450db9
Commit
2a450db9
authored
Dec 24, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 优化日志显示
parent
8c9c1f09
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
24 additions
and
23 deletions
+24
-23
connection.py
coco/connection.py
+11
-11
interactive.py
coco/interactive.py
+1
-1
interface.py
coco/interface.py
+2
-2
logger.py
coco/logger.py
+2
-1
models.py
coco/models.py
+2
-2
session.py
coco/session.py
+5
-5
sshd.py
coco/sshd.py
+1
-1
No files found.
coco/connection.py
View file @
2a450db9
...
...
@@ -197,7 +197,7 @@ class TelnetConnection:
)
def
get_socket
(
self
):
logger
.
info
(
'Get telnet server socket. {}'
.
format
(
self
.
client
.
user
))
logger
.
debug
(
'Get telnet server socket. {}'
.
format
(
self
.
client
.
user
))
self
.
sock
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
self
.
sock
.
settimeout
(
10
)
self
.
sock
.
connect
((
self
.
asset
.
ip
,
self
.
asset
.
port
))
...
...
@@ -211,7 +211,7 @@ class TelnetConnection:
for
sock
in
[
key
.
fileobj
for
key
,
_
in
events
]:
data
=
sock
.
recv
(
BUF_SIZE
)
if
sock
==
self
.
sock
:
logger
.
info
(
b
'[Telnet server send]: '
+
data
)
logger
.
debug
(
b
'[Telnet server send]: '
+
data
)
if
not
data
:
self
.
sock
.
close
()
...
...
@@ -247,7 +247,7 @@ class TelnetConnection:
:param data: option negotiate data
:return:
"""
logger
.
info
(
b
'[Server options negotiate]: '
+
data
)
logger
.
debug
(
b
'[Server options negotiate]: '
+
data
)
data_list
=
data
.
split
(
telnetlib
.
IAC
)
new_data_list
=
[]
for
x
in
data_list
:
...
...
@@ -272,11 +272,11 @@ class TelnetConnection:
else
:
new_data_list
.
append
(
x
)
new_data
=
telnetlib
.
IAC
.
join
(
new_data_list
)
logger
.
info
(
b
'[Client options negotiate]: '
+
new_data
)
logger
.
debug
(
b
'[Client options negotiate]: '
+
new_data
)
self
.
sock
.
send
(
new_data
)
def
login_auth
(
self
,
raw_data
):
logger
.
info
(
'[Telnet login auth]: ({})'
.
format
(
self
.
client
.
user
))
logger
.
debug
(
'[Telnet login auth]: ({})'
.
format
(
self
.
client
.
user
))
try
:
data
=
raw_data
.
decode
(
'utf-8'
)
...
...
@@ -284,23 +284,23 @@ class TelnetConnection:
try
:
data
=
raw_data
.
decode
(
'gbk'
)
except
UnicodeDecodeError
:
logger
.
info
(
b
'[Decode error]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
logger
.
debug
(
b
'[Decode error]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
return
None
if
self
.
incorrect_pattern
.
search
(
data
):
logger
.
info
(
b
'[Login incorrect prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
logger
.
debug
(
b
'[Login incorrect prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
return
False
elif
self
.
username_pattern
.
search
(
data
):
logger
.
info
(
b
'[Username prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
logger
.
debug
(
b
'[Username prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
self
.
sock
.
send
(
self
.
system_user
.
username
.
encode
(
'utf-8'
)
+
b
'
\r\n
'
)
return
None
elif
self
.
password_pattern
.
search
(
data
):
logger
.
info
(
b
'[Password prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
logger
.
debug
(
b
'[Password prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
self
.
sock
.
send
(
self
.
system_user
.
password
.
encode
(
'utf-8'
)
+
b
'
\r\n
'
)
return
None
elif
self
.
success_pattern
.
search
(
data
):
logger
.
info
(
b
'[Login Success prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
logger
.
debug
(
b
'[Login Success prompt]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
return
True
else
:
logger
.
info
(
b
'[No match]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
logger
.
debug
(
b
'[No match]: '
+
b
'>>'
+
raw_data
+
b
'<<'
)
return
None
coco/interactive.py
View file @
2a450db9
...
...
@@ -347,7 +347,7 @@ class InteractiveServer:
self
.
client
.
send
(
wr
(
_
(
"No Assets"
),
before
=
0
))
return
None
except
StopIteration
:
logger
.
info
(
'Back display result paging.'
)
logger
.
debug
(
'Back display result paging.'
)
# self.display_banner()
return
None
self
.
display_result_of_page
(
page
,
result
)
...
...
coco/interface.py
View file @
2a450db9
...
...
@@ -30,14 +30,14 @@ class SSHInterface(paramiko.ServerInterface):
self
.
user
=
None
def
check_auth_interactive
(
self
,
username
,
submethods
):
logger
.
info
(
"Check auth interactive:
%
s
%
s"
%
(
username
,
submethods
))
logger
.
debug
(
"Check auth interactive:
%
s
%
s"
%
(
username
,
submethods
))
instructions
=
'Please enter 6 digits.'
interactive
=
paramiko
.
server
.
InteractiveQuery
(
instructions
=
instructions
)
interactive
.
add_prompt
(
prompt
=
'[MFA auth]: '
)
return
interactive
def
check_auth_interactive_response
(
self
,
responses
):
logger
.
info
(
"Check auth interactive response:
%
s "
%
responses
)
logger
.
debug
(
"Check auth interactive response:
%
s "
%
responses
)
# TODO:MFA Auth
otp_code
=
responses
[
0
]
if
not
otp_code
or
not
len
(
otp_code
)
==
6
or
not
otp_code
.
isdigit
():
...
...
coco/logger.py
View file @
2a450db9
...
...
@@ -51,12 +51,13 @@ def create_logger():
},
loggers
=
{
'coco'
:
main_setting
,
'paramiko'
:
main_setting
,
'jms'
:
main_setting
,
# 'socket.io': main_setting,
# 'engineio': main_setting,
}
)
if
level
.
lower
()
==
'debug'
:
config
[
'loggers'
][
'paramiko'
]
=
main_setting
dictConfig
(
config
)
logger
=
logging
.
getLogger
()
return
logger
...
...
coco/models.py
View file @
2a450db9
...
...
@@ -41,7 +41,7 @@ class Connection(object):
client
.
connection_id
=
self
.
id
self
.
clients
[
tid
]
=
client
self
.
__class__
.
clients_num
+=
1
logger
.
info
(
"New client {} join, total {} now"
.
format
(
logger
.
debug
(
"New client {} join, total {} now"
.
format
(
client
,
self
.
__class__
.
clients_num
))
return
client
...
...
@@ -59,7 +59,7 @@ class Connection(object):
client
.
close
()
self
.
__class__
.
clients_num
-=
1
del
self
.
clients
[
tid
]
logger
.
info
(
"Client {} leave, total {} now"
.
format
(
logger
.
debug
(
"Client {} leave, total {} now"
.
format
(
client
,
self
.
__class__
.
clients_num
))
...
...
coco/session.py
View file @
2a450db9
...
...
@@ -72,14 +72,14 @@ class Session:
:param silent: If true not send welcome message
:return:
"""
logger
.
info
(
"Session add watcher: {} -> {} "
.
format
(
self
.
id
,
watcher
))
logger
.
debug
(
"Session add watcher: {} -> {} "
.
format
(
self
.
id
,
watcher
))
if
not
silent
:
watcher
.
send
(
"Welcome to watch session {}
\r\n
"
.
format
(
self
.
id
)
.
encode
())
self
.
sel
.
register
(
watcher
,
selectors
.
EVENT_READ
)
self
.
_watchers
.
append
(
watcher
)
def
remove_watcher
(
self
,
watcher
):
logger
.
info
(
"Session
%
s remove watcher
%
s"
%
(
self
.
id
,
watcher
))
logger
.
debug
(
"Session
%
s remove watcher
%
s"
%
(
self
.
id
,
watcher
))
self
.
sel
.
unregister
(
watcher
)
self
.
_watchers
.
remove
(
watcher
)
...
...
@@ -90,7 +90,7 @@ class Session:
:param silent: If true not send welcome message
:return:
"""
logger
.
info
(
"Session
%
s add share
%
s"
%
(
self
.
id
,
sharer
))
logger
.
debug
(
"Session
%
s add share
%
s"
%
(
self
.
id
,
sharer
))
if
not
silent
:
sharer
.
send
(
"Welcome to join session: {}
\r\n
"
.
format
(
self
.
id
)
.
encode
(
"utf-8"
))
...
...
@@ -194,7 +194,7 @@ class Session:
break
elif
sock
==
self
.
client
.
change_size_evt
:
self
.
resize_win_size
()
logger
.
info
(
"Session stop event set: {}"
.
format
(
self
.
id
))
logger
.
debug
(
"Session stop event set: {}"
.
format
(
self
.
id
))
def
resize_win_size
(
self
):
width
,
height
=
self
.
client
.
request
.
meta
[
'width'
],
\
...
...
@@ -205,7 +205,7 @@ class Session:
@ignore_error
def
close
(
self
):
if
self
.
closed
:
logger
.
info
(
"Session has been closed: {} "
.
format
(
self
.
id
))
logger
.
debug
(
"Session has been closed: {} "
.
format
(
self
.
id
))
return
logger
.
info
(
"Close the session: {} "
.
format
(
self
.
id
))
self
.
is_finished
=
True
...
...
coco/sshd.py
View file @
2a450db9
...
...
@@ -111,7 +111,7 @@ class SSHServer:
chan_type
=
client
.
request
.
type
kind
=
client
.
request
.
kind
if
kind
==
'session'
and
chan_type
in
supported
:
logger
.
info
(
"
Request type `{}:{}`, dispatch to interactive mode"
.
format
(
kind
,
chan_type
)
)
logger
.
info
(
"
Dispatch client to interactive mode"
)
try
:
InteractiveServer
(
client
)
.
interact
()
except
IndexError
as
e
:
...
...
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