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
368d12b7
Commit
368d12b7
authored
Jan 23, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into test
parents
6cdf0c1d
9107015c
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
78 additions
and
64 deletions
+78
-64
app.py
coco/app.py
+7
-4
httpd.py
coco/httpd.py
+2
-2
interactive.py
coco/interactive.py
+3
-4
interface.py
coco/interface.py
+2
-2
logger.py
coco/logger.py
+44
-31
models.py
coco/models.py
+1
-2
proxy.py
coco/proxy.py
+2
-3
recorder.py
coco/recorder.py
+2
-2
session.py
coco/session.py
+3
-2
sshd.py
coco/sshd.py
+2
-8
tasks.py
coco/tasks.py
+3
-2
utils.py
coco/utils.py
+5
-0
conf_example.py
conf_example.py
+1
-1
requirements.txt
requirements/requirements.txt
+1
-1
No files found.
coco/app.py
View file @
368d12b7
...
@@ -6,7 +6,6 @@ import datetime
...
@@ -6,7 +6,6 @@ import datetime
import
os
import
os
import
time
import
time
import
threading
import
threading
import
logging
import
socket
import
socket
import
json
import
json
...
@@ -18,12 +17,13 @@ from .httpd import HttpServer
...
@@ -18,12 +17,13 @@ from .httpd import HttpServer
from
.logger
import
create_logger
from
.logger
import
create_logger
from
.tasks
import
TaskHandler
from
.tasks
import
TaskHandler
from
.recorder
import
get_command_recorder_class
,
get_replay_recorder_class
from
.recorder
import
get_command_recorder_class
,
get_replay_recorder_class
from
.utils
import
get_logger
__version__
=
'0.5.0'
__version__
=
'0.5.0'
BASE_DIR
=
os
.
path
.
dirname
(
os
.
path
.
dirname
(
__file__
))
BASE_DIR
=
os
.
path
.
dirname
(
os
.
path
.
dirname
(
__file__
))
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
class
Coco
:
class
Coco
:
...
@@ -52,10 +52,9 @@ class Coco:
...
@@ -52,10 +52,9 @@ class Coco:
'REPLAY_RECORD_ENGINE'
:
'server'
,
'REPLAY_RECORD_ENGINE'
:
'server'
,
}
}
def
__init__
(
self
,
name
=
None
,
root_path
=
None
):
def
__init__
(
self
,
root_path
=
None
):
self
.
root_path
=
root_path
if
root_path
else
BASE_DIR
self
.
root_path
=
root_path
if
root_path
else
BASE_DIR
self
.
config
=
self
.
config_class
(
self
.
root_path
,
defaults
=
self
.
default_config
)
self
.
config
=
self
.
config_class
(
self
.
root_path
,
defaults
=
self
.
default_config
)
self
.
name
=
name
if
name
else
self
.
config
[
"NAME"
]
self
.
sessions
=
[]
self
.
sessions
=
[]
self
.
clients
=
[]
self
.
clients
=
[]
self
.
lock
=
threading
.
Lock
()
self
.
lock
=
threading
.
Lock
()
...
@@ -67,6 +66,10 @@ class Coco:
...
@@ -67,6 +66,10 @@ class Coco:
self
.
command_recorder_class
=
None
self
.
command_recorder_class
=
None
self
.
_task_handler
=
None
self
.
_task_handler
=
None
@property
def
name
(
self
):
return
self
.
config
[
"NAME"
]
@property
@property
def
service
(
self
):
def
service
(
self
):
if
self
.
_service
is
None
:
if
self
.
_service
is
None
:
...
...
coco/httpd.py
View file @
368d12b7
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
#
#
import
os
import
os
import
logging
import
socket
import
socket
from
flask_socketio
import
SocketIO
,
Namespace
,
emit
,
join_room
,
leave_room
from
flask_socketio
import
SocketIO
,
Namespace
,
emit
,
join_room
,
leave_room
from
flask
import
Flask
,
send_from_directory
,
render_template
,
request
,
jsonify
from
flask
import
Flask
,
send_from_directory
,
render_template
,
request
,
jsonify
...
@@ -12,11 +11,12 @@ import uuid
...
@@ -12,11 +11,12 @@ import uuid
from
jms.models
import
User
from
jms.models
import
User
from
.models
import
Request
,
Client
,
WSProxy
from
.models
import
Request
,
Client
,
WSProxy
from
.proxy
import
ProxyServer
from
.proxy
import
ProxyServer
from
.utils
import
get_logger
__version__
=
'0.4.0'
__version__
=
'0.4.0'
BASE_DIR
=
os
.
path
.
dirname
(
os
.
path
.
dirname
(
__file__
))
BASE_DIR
=
os
.
path
.
dirname
(
os
.
path
.
dirname
(
__file__
))
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
class
BaseWebSocketHandler
:
class
BaseWebSocketHandler
:
...
...
coco/interactive.py
View file @
368d12b7
...
@@ -2,22 +2,21 @@
...
@@ -2,22 +2,21 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
#
#
import
logging
import
socket
import
socket
import
threading
import
threading
import
weakref
import
weakref
import
os
import
os
from
jms.models
import
Asset
,
AssetGroup
from
jms.models
import
Asset
,
AssetGroup
from
.
import
char
from
.
import
char
from
.utils
import
wrap_with_line_feed
as
wr
,
wrap_with_title
as
title
,
\
from
.utils
import
wrap_with_line_feed
as
wr
,
wrap_with_title
as
title
,
\
wrap_with_primary
as
primary
,
wrap_with_warning
as
warning
,
\
wrap_with_primary
as
primary
,
wrap_with_warning
as
warning
,
\
is_obj_attr_has
,
is_obj_attr_eq
,
sort_assets
,
TtyIOParser
,
\
is_obj_attr_has
,
is_obj_attr_eq
,
sort_assets
,
TtyIOParser
,
\
ugettext
as
_
ugettext
as
_
,
get_logger
from
.proxy
import
ProxyServer
from
.proxy
import
ProxyServer
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
class
InteractiveServer
:
class
InteractiveServer
:
...
...
coco/interface.py
View file @
368d12b7
...
@@ -2,13 +2,13 @@
...
@@ -2,13 +2,13 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
#
#
import
logging
import
paramiko
import
paramiko
import
threading
import
threading
import
weakref
import
weakref
from
.utils
import
get_logger
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
class
SSHInterface
(
paramiko
.
ServerInterface
):
class
SSHInterface
(
paramiko
.
ServerInterface
):
...
...
coco/logger.py
View file @
368d12b7
...
@@ -4,43 +4,56 @@
...
@@ -4,43 +4,56 @@
import
os
import
os
import
logging
import
logging
from
logging
import
StreamHandler
from
logging.config
import
dictConfig
from
logging.handlers
import
TimedRotatingFileHandler
LOG_LEVELS
=
{
'DEBUG'
:
logging
.
DEBUG
,
'INFO'
:
logging
.
INFO
,
'WARN'
:
logging
.
WARNING
,
'WARNING'
:
logging
.
WARNING
,
'ERROR'
:
logging
.
ERROR
,
'FATAL'
:
logging
.
FATAL
,
'CRITICAL'
:
logging
.
CRITICAL
,
}
def
create_logger
(
app
):
def
create_logger
(
app
):
level
=
app
.
config
[
'LOG_LEVEL'
]
level
=
app
.
config
[
'LOG_LEVEL'
]
level
=
LOG_LEVELS
.
get
(
level
,
logging
.
INFO
)
log_dir
=
app
.
config
.
get
(
'LOG_DIR'
)
log_dir
=
app
.
config
.
get
(
'LOG_DIR'
)
log_path
=
os
.
path
.
join
(
log_dir
,
'coco.log'
)
log_path
=
os
.
path
.
join
(
log_dir
,
'coco.log'
)
main_setting
=
{
'handlers'
:
[
'console'
,
'file'
],
'level'
:
level
,
'propagate'
:
False
,
}
config
=
dict
(
version
=
1
,
formatters
=
{
"main"
:
{
'format'
:
'
%(asctime)
s [
%(module)
s
%(levelname)
s]
%(message)
s'
,
'datefmt'
:
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
,
},
'simple'
:
{
'format'
:
'
%(asctime)
s [
%(levelname)-8
s]
%(message)
s'
,
'datefmt'
:
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
,
}
},
handlers
=
{
'null'
:
{
'level'
:
'DEBUG'
,
'class'
:
'logging.NullHandler'
,
},
'console'
:
{
'level'
:
'DEBUG'
,
'class'
:
'logging.StreamHandler'
,
'formatter'
:
'main'
},
'file'
:
{
'level'
:
'DEBUG'
,
'class'
:
'logging.FileHandler'
,
'formatter'
:
'main'
,
'filename'
:
log_path
,
},
},
loggers
=
{
'coco'
:
main_setting
,
'paramiko'
:
main_setting
,
'jms'
:
main_setting
,
}
)
dictConfig
(
config
)
logger
=
logging
.
getLogger
()
logger
=
logging
.
getLogger
()
return
logger
main_formatter
=
logging
.
Formatter
(
fmt
=
'
%(asctime)
s [
%(module)
s
%(levelname)
s]
%(message)
s'
,
datefmt
=
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
# main_formatter = logging.Formatter(
# fmt='%(asctime)s [%(levelname)s] %(message)s',
# datefmt='%Y-%m-%d %H:%M:%S'
# )
console_handler
=
StreamHandler
()
file_handler
=
TimedRotatingFileHandler
(
filename
=
log_path
,
when
=
'D'
,
backupCount
=
10
)
for
handler
in
[
console_handler
,
file_handler
]:
handler
.
setFormatter
(
main_formatter
)
logger
.
addHandler
(
handler
)
logger
.
setLevel
(
level
)
logging
.
getLogger
(
"requests"
)
.
setLevel
(
logging
.
WARNING
)
coco/models.py
View file @
368d12b7
...
@@ -2,14 +2,13 @@
...
@@ -2,14 +2,13 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import
threading
import
threading
import
datetime
import
datetime
import
logging
import
weakref
import
weakref
from
.
import
char
from
.
import
char
from
.
import
utils
from
.
import
utils
BUF_SIZE
=
4096
BUF_SIZE
=
4096
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
utils
.
get_l
ogger
(
__file__
)
class
Request
:
class
Request
:
...
...
coco/proxy.py
View file @
368d12b7
...
@@ -4,7 +4,6 @@
...
@@ -4,7 +4,6 @@
import
socket
import
socket
import
threading
import
threading
import
logging
import
time
import
time
import
weakref
import
weakref
import
paramiko
import
paramiko
...
@@ -13,10 +12,10 @@ from paramiko.ssh_exception import SSHException
...
@@ -13,10 +12,10 @@ from paramiko.ssh_exception import SSHException
from
.session
import
Session
from
.session
import
Session
from
.models
import
Server
from
.models
import
Server
from
.utils
import
wrap_with_line_feed
as
wr
,
wrap_with_warning
as
warning
,
\
from
.utils
import
wrap_with_line_feed
as
wr
,
wrap_with_warning
as
warning
,
\
get_private_key_fingerprint
get_private_key_fingerprint
,
get_logger
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
TIMEOUT
=
8
TIMEOUT
=
8
BUF_SIZE
=
4096
BUF_SIZE
=
4096
...
...
coco/recorder.py
View file @
368d12b7
...
@@ -3,7 +3,6 @@
...
@@ -3,7 +3,6 @@
#
#
import
abc
import
abc
import
logging
import
threading
import
threading
import
time
import
time
import
os
import
os
...
@@ -13,9 +12,10 @@ import shutil
...
@@ -13,9 +12,10 @@ import shutil
from
jms_es_sdk
import
ESStore
from
jms_es_sdk
import
ESStore
from
.utils
import
get_logger
from
.alignment
import
MemoryQueue
from
.alignment
import
MemoryQueue
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
BUF_SIZE
=
1024
BUF_SIZE
=
1024
...
...
coco/session.py
View file @
368d12b7
...
@@ -3,13 +3,14 @@
...
@@ -3,13 +3,14 @@
#
#
import
threading
import
threading
import
uuid
import
uuid
import
logging
import
datetime
import
datetime
import
selectors
import
selectors
import
time
import
time
from
.utils
import
get_logger
BUF_SIZE
=
1024
BUF_SIZE
=
1024
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
class
Session
:
class
Session
:
...
...
coco/sshd.py
View file @
368d12b7
...
@@ -3,20 +3,16 @@
...
@@ -3,20 +3,16 @@
#
#
import
os
import
os
import
logging
import
socket
import
socket
import
threading
import
threading
import
paramiko
import
paramiko
import
sys
import
time
from
.utils
import
ssh_key_gen
,
get_logger
from
.utils
import
ssh_key_gen
from
.interface
import
SSHInterface
from
.interface
import
SSHInterface
from
.interactive
import
InteractiveServer
from
.interactive
import
InteractiveServer
from
.models
import
Client
,
Request
from
.models
import
Client
,
Request
logger
=
logging
.
getL
ogger
(
__file__
)
logger
=
get_l
ogger
(
__file__
)
BACKLOG
=
5
BACKLOG
=
5
...
@@ -90,8 +86,6 @@ class SSHServer:
...
@@ -90,8 +86,6 @@ class SSHServer:
def
handle_chan
(
self
,
chan
,
request
):
def
handle_chan
(
self
,
chan
,
request
):
client
=
Client
(
chan
,
request
)
client
=
Client
(
chan
,
request
)
print
(
chan
)
print
(
request
)
self
.
app
.
add_client
(
client
)
self
.
app
.
add_client
(
client
)
self
.
dispatch
(
client
)
self
.
dispatch
(
client
)
...
...
coco/tasks.py
View file @
368d12b7
...
@@ -2,9 +2,10 @@
...
@@ -2,9 +2,10 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
#
#
import
weakref
import
weakref
import
logging
logger
=
logging
.
getLogger
(
__file__
)
from
.utils
import
get_logger
logger
=
get_logger
(
__file__
)
class
TaskHandler
:
class
TaskHandler
:
...
...
coco/utils.py
View file @
368d12b7
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
import
hashlib
import
hashlib
import
logging
import
re
import
re
import
os
import
os
import
threading
import
threading
...
@@ -371,4 +372,8 @@ def compile_message():
...
@@ -371,4 +372,8 @@ def compile_message():
pass
pass
def
get_logger
(
file_name
):
return
logging
.
getLogger
(
'coco.'
+
file_name
)
ugettext
=
_gettext
()
ugettext
=
_gettext
()
conf_example.py
View file @
368d12b7
...
@@ -12,7 +12,7 @@ class Config:
...
@@ -12,7 +12,7 @@ class Config:
Coco config file, coco also load config from server update setting below
Coco config file, coco also load config from server update setting below
"""
"""
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
#
APP_
NAME = "localhost"
# NAME = "localhost"
# Jumpserver项目的url, api请求注册会使用
# Jumpserver项目的url, api请求注册会使用
# CORE_HOST = os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
# CORE_HOST = os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
...
...
requirements/requirements.txt
View file @
368d12b7
...
@@ -28,5 +28,5 @@ tornado==4.5.2
...
@@ -28,5 +28,5 @@ tornado==4.5.2
urllib3==1.22
urllib3==1.22
wcwidth==0.1.7
wcwidth==0.1.7
werkzeug==0.12.2
werkzeug==0.12.2
jumpserver-python-sdk==0.0.2
5
jumpserver-python-sdk==0.0.2
6
jms-es-sdk
jms-es-sdk
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