mirror of https://github.com/tp4a/teleport
tmp.
parent
b6284d6188
commit
ccad74bbd2
|
@ -3,6 +3,9 @@
|
|||
$app.on_init = function (cb_stack) {
|
||||
$app.dom = {
|
||||
// assist_ver: $('#tp-assist-ver'),
|
||||
btn_sel_group: $('#btn-sel-group button'),
|
||||
group_list_for_sel: $('#btn-sel-group ul'),
|
||||
|
||||
btn_refresh_host: $('#btn-refresh-host'),
|
||||
btn_add_host: $('#btn-add-host'),
|
||||
chkbox_host_select_all: $('#table-host-select-all'),
|
||||
|
@ -19,6 +22,27 @@ $app.on_init = function (cb_stack) {
|
|||
upload_file_message: $('#upload-file-message')
|
||||
};
|
||||
|
||||
console.log($app.options.host_groups);
|
||||
// var i = 0;
|
||||
// var html = [];
|
||||
// html.push('<optioin value="0">所有分组</optioin>');
|
||||
// html.push('<optioin value="-1">----------</optioin>');
|
||||
// for(i = 0; i < $app.options.host_groups.length; ++i) {
|
||||
// html.push('<optioin value="'+$app.options.host_groups[i].id+'">'+$app.options.host_groups[i].name+'</optioin>');
|
||||
// }
|
||||
// $app.dom.sel_host_group.ap
|
||||
|
||||
var html = [];
|
||||
$.each($app.options.host_groups, function (i, item) {
|
||||
html.push('<li><a href="javascript:;" data-tp-selector="' + item.id + '" data-name="' + item.name + '"><i class="fa fa-caret-right fa-fw"></i> ' + item.name + '</a></li>');
|
||||
});
|
||||
$app.dom.group_list_for_sel.append($(html.join('')));
|
||||
$app.dom.group_list_for_sel.find('a[data-tp-selector]').click(function () {
|
||||
var obj = $(this);
|
||||
//$app.set_selected_to_role(parseInt(obj.attr('data-tp-selector')), obj.attr('data-name'));
|
||||
});
|
||||
|
||||
|
||||
// $tp.assist_checked = function () {
|
||||
// console.log("---------");
|
||||
// if ($tp.assist.running) {
|
||||
|
@ -1537,9 +1561,9 @@ $app.create_dlg_edit_account = function () {
|
|||
dlg.dom.block_sshkey.hide();
|
||||
if (dlg.field_protocol === TP_PROTOCOL_TYPE_TELNET) {
|
||||
dlg.dom.block_prompt.show();
|
||||
if(dlg.dom.prompt_username.val().length === 0 && dlg.account.username_prompt.length === 0)
|
||||
if (dlg.dom.prompt_username.val().length === 0 && dlg.account.username_prompt.length === 0)
|
||||
dlg.dom.prompt_username.val('ogin:');
|
||||
if(dlg.dom.prompt_password.val().length === 0 && dlg.account.password_prompt.length === 0)
|
||||
if (dlg.dom.prompt_password.val().length === 0 && dlg.account.password_prompt.length === 0)
|
||||
dlg.dom.prompt_password.val('assword:');
|
||||
}
|
||||
} else if (dlg.field_auth === TP_AUTH_TYPE_PRIVATE_KEY) {
|
||||
|
|
|
@ -6,11 +6,16 @@
|
|||
<%inherit file="../page_base.mako"/>
|
||||
|
||||
<%block name="extend_js_file">
|
||||
## <script type="text/javascript" src="${ static_url('js/tp-assist.js') }"></script>
|
||||
<script type="text/javascript" src="${ static_url('js/asset/host-list.js') }"></script>
|
||||
<script type="text/javascript" src="${ static_url('plugins/jquery/ajaxfileupload.js') }"></script>
|
||||
</%block>
|
||||
|
||||
<%block name="embed_js">
|
||||
<script type="text/javascript">
|
||||
$app.add_options(${page_param});
|
||||
</script>
|
||||
</%block>
|
||||
|
||||
<%block name="embed_css">
|
||||
<style>
|
||||
</style>
|
||||
|
@ -18,7 +23,7 @@
|
|||
|
||||
<%block name="breadcrumb_extra">
|
||||
<ol class="breadcrumb breadcrumb-list">
|
||||
## <li><i class="fa fa-clock-o"></i> 服务器时间:<span id="tp-timer">-</span></li>
|
||||
## <li><i class="fa fa-clock-o"></i> 服务器时间:<span id="tp-timer">-</span></li>
|
||||
## <li><i class="fa fa-bolt"></i> 助手版本:<span id="tp-assist-ver"></span></li>
|
||||
</ol>
|
||||
</%block>
|
||||
|
@ -29,9 +34,20 @@
|
|||
|
||||
<!-- begin box -->
|
||||
<div class="box">
|
||||
|
||||
<p>filter goes here...</p>
|
||||
<div class="btn-group dropdown" id="btn-sel-group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-edit fa-fw"></i> 所有分组 <i class="fa fa-caret-right"></i></button>
|
||||
<ul class="dropdown-menu dropdown-menu-sm"></ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div class="table-prefix-area">
|
||||
<div class="table-extend-cell">
|
||||
<span class="table-name"><i class="fa fa-list fa-fw"></i> 主机列表</span>
|
||||
|
||||
<button id="btn-refresh-host" class="btn btn-sm btn-default"><i class="fa fa-redo fa-fw"></i> 刷新列表</button>
|
||||
</div>
|
||||
<div class="table-extend-cell table-extend-cell-right group-actions">
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
|
||||
|
||||
<div class="table-extend-cell group-actions">
|
||||
<div class="btn-group" role="group">
|
||||
<div class="btn-group">
|
||||
<div class="btn-group dropup" id="btn-set-role" role="group">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><i class="fa fa-edit fa-fw"></i> 设置角色 <i class="fa fa-caret-right"></i></button>
|
||||
<ul class="dropdown-menu dropdown-menu-sm"></ul>
|
||||
|
|
|
@ -24,7 +24,13 @@ class HostListHandler(TPBaseHandler):
|
|||
ret = self.check_privilege(TP_PRIVILEGE_ASSET_CREATE | TP_PRIVILEGE_ASSET_DELETE | TP_PRIVILEGE_ASSET_GROUP)
|
||||
if ret != TPE_OK:
|
||||
return
|
||||
self.render('asset/host-list.mako')
|
||||
|
||||
err, groups = group.get_host_groups_for_user(self.current_user['id'], self.current_user['privilege'])
|
||||
param = {
|
||||
'host_groups': groups
|
||||
}
|
||||
|
||||
self.render('asset/host-list.mako', page_param=json.dumps(param))
|
||||
|
||||
|
||||
class DoGetHostsHandler(TPBaseJsonHandler):
|
||||
|
|
|
@ -361,9 +361,49 @@ def get_groups(sql_filter, sql_order, sql_limit, sql_restrict, sql_exclude):
|
|||
return err, s.total_count, s.page_index, s.recorder
|
||||
|
||||
|
||||
def get_host_groups_for_user(handler):
|
||||
# 获取当前用户能查看的主机分组列表
|
||||
pass
|
||||
def get_host_groups_for_user(user_id, user_privilege):
|
||||
# get all host-groups for current logged in user.
|
||||
|
||||
db = get_db()
|
||||
|
||||
# step 0. return all host-groups if user have all host-group access privilege
|
||||
if (user_privilege & (TP_PRIVILEGE_ASSET_CREATE | TP_PRIVILEGE_ASSET_DELETE | TP_PRIVILEGE_ASSET_GROUP)) != 0:
|
||||
s = SQL(get_db())
|
||||
s.select_from('group', ['id', 'name'], alt_name='g')
|
||||
s.where('g.type={}'.format(TP_GROUP_HOST))
|
||||
s.order_by('g.name')
|
||||
err = s.query()
|
||||
|
||||
return err, s.recorder
|
||||
|
||||
# step 1. get all hosts which could be access by this user.
|
||||
sql = 'SELECT `h_id` FROM `{dbtp}ops_map` WHERE `u_id`={dbph} GROUP BY `h_id`;'.format(dbtp=db.table_prefix, dbph=db.place_holder)
|
||||
db_ret = db.query(sql, (user_id, ))
|
||||
if db_ret is None or len(db_ret) == 0:
|
||||
return TPE_NOT_EXISTS, None
|
||||
|
||||
hosts = []
|
||||
for db_item in db_ret:
|
||||
hosts.append(str(db_item[0]))
|
||||
|
||||
# step 2. get groups which include those hosts.
|
||||
sql = 'SELECT `gid` FROM `{dbtp}group_map` WHERE (`type`={dbph} AND `mid` IN ({dbph})) GROUP BY `gid`;'.format(dbtp=db.table_prefix, dbph=db.place_holder, hosts=','.join(hosts))
|
||||
db_ret = db.query(sql, (TP_GROUP_HOST, ','.join(hosts)))
|
||||
if db_ret is None or len(db_ret) == 0:
|
||||
return TPE_NOT_EXISTS, None
|
||||
|
||||
groups = []
|
||||
for db_item in db_ret:
|
||||
groups.append(str(db_item[0]))
|
||||
|
||||
# step 3. get those groups id and name.
|
||||
s = SQL(get_db())
|
||||
s.select_from('group', ['id', 'name'], alt_name='g')
|
||||
s.where('g.id IN ({})'.format(','.join(groups)))
|
||||
s.order_by('g.name')
|
||||
err = s.query()
|
||||
|
||||
return err, s.recorder
|
||||
|
||||
|
||||
def get_acc_groups_for_user(handler):
|
||||
|
|
Loading…
Reference in New Issue