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
0b9b94bc
Commit
0b9b94bc
authored
Feb 26, 2016
by
yumaojun
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'bug_fix_yu' into dev
# Conflicts: # service.sh
parents
77f69fbc
8aec0c1a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
90 additions
and
35 deletions
+90
-35
functions
functions
+0
-0
install.py
install/install.py
+59
-24
next.py
install/next.py
+4
-1
ansible_api.py
jperm/ansible_api.py
+1
-1
views.py
jperm/views.py
+9
-2
service.sh
service.sh
+17
-7
No files found.
functions
0 → 100644
View file @
0b9b94bc
This diff is collapsed.
Click to expand it.
install/install.py
View file @
0b9b94bc
...
...
@@ -5,16 +5,15 @@ import subprocess
import
time
import
os
import
sys
import
MySQLdb
from
smtplib
import
SMTP
,
SMTPAuthenticationError
,
SMTPConnectError
,
SMTPSenderRefused
import
ConfigParser
import
socket
import
fcntl
import
struct
import
readline
import
random
import
string
import
re
import
platform
jms_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
sys
.
path
.
append
(
jms_dir
)
...
...
@@ -27,6 +26,13 @@ def bash(cmd):
return
subprocess
.
call
(
cmd
,
shell
=
True
)
def
valid_ip
(
ip
):
if
(
'255'
in
ip
)
or
(
ip
==
"0.0.0.0"
):
return
False
else
:
return
True
def
color_print
(
msg
,
color
=
'red'
,
exits
=
False
):
"""
Print colorful string.
...
...
@@ -46,18 +52,17 @@ def color_print(msg, color='red', exits=False):
return
msg
def
get_ip_addr
(
ifname
=
'eth0'
):
def
get_ip_addr
():
try
:
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
return
socket
.
inet_ntoa
(
fcntl
.
ioctl
(
s
.
fileno
(),
0x8915
,
struct
.
pack
(
'256s'
,
ifname
[:
15
])
)[
20
:
24
])
except
:
ips
=
os
.
popen
(
"LANG=C ifconfig | grep
\"
inet addr
\"
| grep -v
\"
127.0.0.1
\"
| awk -F
\"
:
\"
'{print $2}' | awk '{print $1}'"
)
.
readlines
()
if
len
(
ips
)
>
0
:
return
ips
[
0
]
s
.
connect
((
"8.8.8.8"
,
80
))
return
s
.
getsockname
()[
0
]
except
Exception
:
if_data
=
''
.
join
(
os
.
popen
(
"LANG=C ifconfig"
)
.
readlines
())
ips
=
re
.
findall
(
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
,
if_data
,
flags
=
re
.
MULTILINE
)
ip
=
filter
(
valid_ip
,
ips
)
if
ip
:
return
ip
[
0
]
return
''
...
...
@@ -75,6 +80,17 @@ class PreSetup(object):
self
.
ip
=
''
self
.
key
=
''
.
join
(
random
.
choice
(
string
.
ascii_lowercase
+
string
.
digits
)
\
for
_
in
range
(
16
))
self
.
dist
=
platform
.
dist
()[
0
]
.
lower
()
@property
def
_is_redhat
(
self
):
if
self
.
dist
==
"centos"
or
self
.
dist
==
"redhat"
:
return
True
@property
def
_is_ubuntu
(
self
):
if
self
.
dist
==
"ubuntu"
:
return
True
def
write_conf
(
self
,
conf_file
=
os
.
path
.
join
(
jms_dir
,
'jumpserver.conf'
)):
color_print
(
'开始写入配置文件'
,
'green'
)
...
...
@@ -99,6 +115,7 @@ class PreSetup(object):
def
_setup_mysql
(
self
):
color_print
(
'开始安装设置mysql (请手动设置mysql安全)'
,
'green'
)
color_print
(
'默认用户名:
%
s 默认密码:
%
s'
%
(
self
.
db_user
,
self
.
db_pass
),
'green'
)
if
self
.
_is_redhat
:
bash
(
'yum -y install mysql-server'
)
bash
(
'service mysqld start'
)
bash
(
'chkconfig mysqld on'
)
...
...
@@ -107,14 +124,29 @@ class PreSetup(object):
self
.
db_user
,
self
.
db_host
,
self
.
db_pass
))
if
self
.
_is_ubuntu
:
bash
(
'echo mysql-server mysql-server/root_password select '' | debconf-set-selections'
)
bash
(
'echo mysql-server mysql-server/root_password_again select '' | debconf-set-selections'
)
bash
(
'apt-get -y install mysql-server'
)
bash
(
'mysql -e "create database
%
s default charset=utf8"'
%
self
.
db
)
bash
(
'mysql -e "grant all on
%
s.* to
\'
%
s
\'
@
\'
%
s
\'
identified by
\'
%
s
\'
"'
%
(
self
.
db
,
self
.
db_user
,
self
.
db_host
,
self
.
db_pass
))
@staticmethod
def
_set_env
():
def
_set_env
(
self
):
color_print
(
'开始关闭防火墙和selinux'
,
'green'
)
if
self
.
_is_redhat
:
os
.
system
(
"export LANG='en_US.UTF-8' && sed -i 's/LANG=.*/LANG=en_US.UTF-8/g' /etc/sysconfig/i18n"
)
bash
(
'service iptables stop && chkconfig iptables off && setenforce 0'
)
if
self
.
_is_ubuntu
:
os
.
system
(
"export LANG='en_US.UTF-8'"
)
bash
(
"iptables -F"
)
bash
(
'which selinux && setenforce 0'
)
def
_test_db_conn
(
self
):
bash
(
"pip install mysql-python"
)
import
MySQLdb
try
:
MySQLdb
.
connect
(
host
=
self
.
db_host
,
port
=
int
(
self
.
db_port
),
user
=
self
.
db_user
,
passwd
=
self
.
db_pass
,
db
=
self
.
db
)
...
...
@@ -141,15 +173,18 @@ class PreSetup(object):
return
True
return
False
@staticmethod
def
_rpm_repo
()
:
def
_rpm_repo
(
self
):
if
self
.
_is_redhat
:
color_print
(
'开始安装epel源'
,
'green'
)
bash
(
'yum -y install epel-release'
)
@staticmethod
def
_depend_rpm
():
color_print
(
'开始安装依赖rpm包'
,
'green'
)
def
_depend_rpm
(
self
):
color_print
(
'开始安装依赖包'
,
'green'
)
if
self
.
_is_redhat
:
bash
(
'yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass'
)
if
self
.
_is_ubuntu
:
bash
(
"apt-get -y install git python-pip gcc automake autoconf vim sshpass libmysqld-dev python-all-dev"
)
@staticmethod
def
_require_pip
():
...
...
@@ -202,11 +237,11 @@ class PreSetup(object):
print
def
start
(
self
):
# self._rpm_repo()
# self._depend_rpm()
# self._require_pip()
color_print
(
'请务必先查看wiki https://github.com/ibuler/jumpserver/wiki/Quickinstall'
)
time
.
sleep
(
3
)
self
.
_rpm_repo
()
self
.
_depend_rpm
()
self
.
_require_pip
()
self
.
_set_env
()
self
.
_input_ip
()
self
.
_input_mysql
()
...
...
install/next.py
View file @
0b9b94bc
...
...
@@ -8,6 +8,8 @@ from django.core.management import execute_from_command_line
import
shutil
import
urllib
import
socket
import
subprocess
jms_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
sys
.
path
.
append
(
jms_dir
)
...
...
@@ -75,7 +77,8 @@ class Setup(object):
user
.
delete
()
db_add_user
(
username
=
self
.
admin_user
,
password
=
self
.
admin_pass
,
role
=
'SU'
,
name
=
'admin'
,
groups
=
''
,
admin_groups
=
''
,
email
=
'admin@jumpserver.org'
,
uuid
=
'MayBeYouAreTheFirstUser'
,
is_active
=
True
)
os
.
system
(
'id
%
s &> /dev/null || useradd
%
s'
%
(
self
.
admin_user
,
self
.
admin_user
))
cmd
=
'useradd
%
s'
%
self
.
admin_user
subprocess
.
call
(
cmd
,
shell
=
True
)
@staticmethod
def
_chmod_file
():
...
...
jperm/ansible_api.py
View file @
0b9b94bc
...
...
@@ -125,7 +125,7 @@ class MyRunner(MyInventory):
self
.
results_raw
=
{}
def
run
(
self
,
module_name
=
'shell'
,
module_args
=
''
,
timeout
=
10
,
forks
=
10
,
pattern
=
'*'
,
become
=
False
,
become_method
=
'sudo'
,
become_user
=
'root'
,
become_pass
=
''
,
transport
=
'
paramiko
'
):
become
=
False
,
become_method
=
'sudo'
,
become_user
=
'root'
,
become_pass
=
''
,
transport
=
'
smart
'
):
"""
run module from andible ad-hoc.
module_name: ansible module_name
...
...
jperm/views.py
View file @
0b9b94bc
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db.models
import
Q
from
django.http
import
HttpResponseBadRequest
,
HttpResponseNotAllowed
...
...
@@ -705,8 +706,14 @@ def perm_role_recycle(request):
recycle_assets
.
append
(
asset
)
recycle_resource
=
gen_resource
(
recycle_assets
)
task
=
MyTask
(
recycle_resource
)
# TODO: 判断返回结果,处理异常
msg
=
task
.
del_user
(
get_object
(
PermRole
,
id
=
role_id
)
.
name
)
try
:
msg_del_user
=
task
.
del_user
(
get_object
(
PermRole
,
id
=
role_id
)
.
name
)
msg_del_sudo
=
task
.
del_user_sudo
(
get_object
(
PermRole
,
id
=
role_id
)
.
name
)
logger
.
info
(
"recycle user msg:
%
s"
%
msg_del_user
)
logger
.
info
(
"recycle sudo msg:
%
s"
%
msg_del_sudo
)
except
Exception
,
e
:
logger
.
warning
(
"Recycle Role failed:
%
s"
%
e
)
raise
ServerError
(
u"回收已推送的系统用户失败:
%
s"
%
e
)
for
asset_id
in
asset_ids
:
asset
=
get_object
(
Asset
,
id
=
asset_id
)
...
...
service.sh
View file @
0b9b94bc
...
...
@@ -9,10 +9,15 @@
# Site: http://www.jumpserver.org
# Author: Jumpserver Team
.
/etc/init.d/functions
base_dir
=
$(
dirname
$0
)
.
${
base_dir
}
/functions
export
PATH
=
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin
base_dir
=
$(
dirname
$0
)
PROC_NAME
=
"jumpsever"
lockfile
=
/var/lock/subsys/
${
PROC_NAME
}
...
...
@@ -25,7 +30,7 @@ start() {
echo
"jumpserver is running..."
success
"
$jump_start
"
else
#
daemon python $base_dir/manage.py runserver 0.0.0.0:80 &>> /tmp/jumpserver.log 2>&1 &
daemon python
$base_dir
/manage.py runserver 0.0.0.0:80 &>> /tmp/jumpserver.log 2>&1 &
daemon python
$base_dir
/manage.py crontab add &>> /tmp/jumpserver.log 2>&1
daemon python
$base_dir
/run_websocket.py &> /dev/null 2>&1 &
sleep
4
...
...
@@ -33,11 +38,19 @@ start() {
echo
-n
"
$jump_start
"
nums
=
0
for
i
in
manage.py run_websocket.py
;
do
ps aux |
grep
"
$i
"
|
grep
-v
'grep'
&> /dev/null
&&
let
nums+
=
1
||
echo
"
$i
not running"
if
ps aux |
grep
"
$i
"
|
grep
-v
'grep'
&> /dev/null
;
then
nums
=
$[
nums+1]
else
echo
"
$i
not running"
fi
done
if
[
"x
$nums
"
==
"x2"
]
;
then
success
"
$jump_start
"
if
[
!
-e
$lockfile
]
;
then
lockfile_dir
=
`
dirname
$lockfile
`
mkdir
-pv
$lockfile_dir
fi
touch
"
$lockfile
"
echo
else
...
...
@@ -94,6 +107,3 @@ case "$1" in
echo
$"Usage:
$0
{start|stop|restart}"
exit
2
esac
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