v2版本正式上线测试版
This commit is contained in:
@@ -1,158 +1,174 @@
|
||||
<!-- 新增服务器 -->
|
||||
<div class="container-fluid">
|
||||
<div class="info-center">
|
||||
<!--title-->
|
||||
<div class="info-center">
|
||||
<div class="page-header">
|
||||
<div class="pull-left">
|
||||
<h4>{{.pageTitle}}</h4>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<!-- <button type="button" class="btn btn-mystyle btn-sm refresh">刷新</button>
|
||||
<button type="button" class="btn btn-mystyle btn-sm reback">返回</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
<div style="margin: 10px 0px">
|
||||
<blockquote class="layui-elem-quote">
|
||||
说明:提交之前请先测试服务器资源是否可以连通
|
||||
</blockquote>
|
||||
</div>
|
||||
<form class="layui-form" action="" method="post" >
|
||||
|
||||
|
||||
<!--content-list-->
|
||||
<div class="content-list">
|
||||
<form action="{{urlfor "ServerController.Add"}}" method="post" class="form-horizontal">
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="server_name">服务器名</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="server_name" value="" required />
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">所属分组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="group_id" lay-verify="required">
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<option value="{{$k}}">{{$v}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器名称</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_name" id="server_name" lay-verify="required" autocomplete="off" placeholder="服务器名称" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="server_account">登录账户</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="root" name="server_account" value="" required />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="server_ip">服务器IP</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="server_ip" value="" required />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">登录账号</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_account" id="server_account" lay-verify="required" autocomplete="off" placeholder="root" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="port">服务器ssh端口</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="22" name="port" value="" required />
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">IP地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_ip" id="server_ip" lay-verify="required" autocomplete="off" placeholder="192.168.1.12" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" style="display: none">
|
||||
<label class="layui-form-label mw200">外网IP</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_outer_ip" id="server_outer_ip" lay-verify="required" autocomplete="off" placeholder="200.200.200.12" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">端口号</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="port" id="port" lay-verify="required" autocomplete="off" placeholder="22" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="type">验证类型</label>
|
||||
<div class="col-sm-6" >
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="type" value="0" > 密码
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="type" value="1" checked > 密钥
|
||||
</label>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-3" style="padding-top:5px;">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">验证登录类型</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="type" lay-verify="type" value="0" title="密码" checked>
|
||||
<input type="radio" name="type" lay-verify="type" value="1" title="密钥" >
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group hide" style="margin-top: 15px" id="password">
|
||||
<label class="col-sm-3 control-label" for="password">服务器密码</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="password" value="" />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
<div class="layui-form-item password">
|
||||
<label class="layui-form-label mw200">密码</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="password" id="password" lay-verify="" autocomplete="off" placeholder="服务器登录密码" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group " style="margin-top: 15px" id="private_key_src">
|
||||
<label class="col-sm-3 control-label" for="private_key_src">私钥地址</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="/Users/haodaquan/.ssh/pp_rsa" name="private_key_src" value="" />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
<div class="layui-form-item key" style="display:none;">
|
||||
<label class="layui-form-label mw200">公钥地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="public_key_src" id="public_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"><span id="des" style="cursor: pointer">说明</span></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group " style="margin-top: 15px" id="public_key_src">
|
||||
<label class="col-sm-3 control-label" for="public_key_src">公钥地址</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" name="public_key_src" value="" />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
<i style="font-size: 12px">公钥和私钥地址请在本地服务器生成,命令:ssh-keygen -t rsa -f pp_rsa</i>
|
||||
<div class="layui-form-item key" style="display:none;">
|
||||
<label class="layui-form-label mw200">私钥地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="private_key_src" id="private_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa" class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="detail">说明</label>
|
||||
<div class="col-sm-5" >
|
||||
<textarea name="detail" class="form-control" id="detail" rows="3"></textarea>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">资源说明</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea"></textarea>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
<input type="hidden" name="id" id="id" value="0">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200"></label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
|
||||
<button class="layui-btn layui-btn-primary" id="test" lay-filter="test">测试</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<br />
|
||||
<div class="modal-footer" style="text-align:center">
|
||||
<button type="submit" class="btn btn-primary submit_attr_button">保存</button>
|
||||
<button type="button" class="btn btn-default reback">返回</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function () {
|
||||
$("form").submit(function () {
|
||||
// $(".alert").hide();
|
||||
$("button[type='submit']").attr('disabled', true);
|
||||
$.post('{{urlfor "ServerController.Add"}}', $(this).serialize(), function (out) {
|
||||
var $;
|
||||
layui.use(['form','element','layer','jquery'],function(){
|
||||
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
||||
var $ = layui.jquery;
|
||||
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
return;
|
||||
}
|
||||
form.on('radio', function(data){
|
||||
if(data.value==1){
|
||||
$(".key").show();
|
||||
$(".password").hide();
|
||||
}else{
|
||||
$(".password").show();
|
||||
$(".key").hide();
|
||||
}
|
||||
});
|
||||
|
||||
$("#des").on('click',function () {
|
||||
layer.tips('公钥和私钥地址请在本地服务器生成,命令:ssh-keygen -t rsa -f pp_rsa', '#des', {
|
||||
tips: [1, '#0FA6D8'] //还可配置颜色
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
form.on('submit(sub)', function(data){
|
||||
var form_data = $("form").serialize();
|
||||
$.post('{{urlfor "ServerController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
window.location.href = '{{urlfor "ServerController.List"}}';
|
||||
layer.msg("操作成功",{icon: 1},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
} else {
|
||||
alert_message(out.msg,"alert-danger","alert-success");
|
||||
$("button[type='submit']").attr('disabled', false);
|
||||
layer.msg(out.message)
|
||||
}
|
||||
}, "json");
|
||||
return false;
|
||||
});
|
||||
|
||||
$("input[name='type']").click(function () {
|
||||
if ($(this).val() > 0) {
|
||||
$("#password").addClass('hide');
|
||||
$("#public_key_src").removeClass('hide');
|
||||
$("#private_key_src").removeClass('hide');
|
||||
} else {
|
||||
$("#password").removeClass('hide');
|
||||
$("#public_key_src").addClass('hide');
|
||||
$("#private_key_src").addClass('hide');
|
||||
|
||||
}
|
||||
$("#test").on('click', function(data){
|
||||
layer.load();
|
||||
var form_data = $("form").serialize();
|
||||
$.post('{{urlfor "ServerController.AjaxTestServer"}}', form_data, function (out) {
|
||||
layer.msg(out.message)
|
||||
}, "json");
|
||||
setTimeout(function(){
|
||||
layer.closeAll('loading');
|
||||
}, 2000);
|
||||
return false;
|
||||
});
|
||||
|
||||
//但是,如果你的HTML是动态生成的,自动渲染就会失效
|
||||
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
|
||||
form.render();
|
||||
});
|
||||
</script>
|
||||
171
views/server/copy.html
Normal file
171
views/server/copy.html
Normal file
@@ -0,0 +1,171 @@
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
{{/*<div style="margin: 10px 0px">*/}}
|
||||
{{/*<blockquote class="layui-elem-quote">*/}}
|
||||
{{/*说明:创建新的服务器资源*/}}
|
||||
{{/*</blockquote>*/}}
|
||||
{{/*</div>*/}}
|
||||
<form class="layui-form" action="" method="post" >
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">所属分组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="group_id" lay-verify="required">
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<option value="{{$k}}" {{if eq $.server.group_id $k}} selected {{end}}>{{$v}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器名称</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_name" id="server_name" lay-verify="required" autocomplete="off" placeholder="服务器名称" class="layui-input" value="{{.server.server_name}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">登录账号</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_account" id="server_account" lay-verify="required" autocomplete="off" placeholder="root" class="layui-input" value="{{.server.server_account}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">内网IP</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_ip" id="server_ip" lay-verify="required" autocomplete="off" placeholder="192.168.1.12" class="layui-input" value="{{.server.server_ip}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">外网IP</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_outer_ip" id="server_outer_ip" lay-verify="required" autocomplete="off" placeholder="200.200.200.12" class="layui-input" value="{{.server.server_outer_ip}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">端口号</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="port" id="port" lay-verify="required" autocomplete="off" placeholder="22" class="layui-input" value="{{.server.port}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">验证登录类型</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="type" lay-verify="type" value="0" title="密码" {{if eq .server.type 0}}checked{{end}}>
|
||||
<input type="radio" name="type" lay-verify="type" value="1" title="密钥" {{if eq .server.type 1}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item password" style="{{if eq .server.type 1}}display:none{{end}}">
|
||||
<label class="layui-form-label mw200">密码</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="password" id="password" lay-verify="" autocomplete="off" placeholder="服务器登录密码" class="layui-input" value="{{.server.password}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item key" style="{{if eq .server.type 0}}display:none{{end}}">
|
||||
<label class="layui-form-label mw200">公钥地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="public_key_src" id="public_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" class="layui-input" value="{{.server.public_key_src}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"><span id="des" style="cursor: pointer">说明</span></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item key" style="{{if eq .server.type 0}}display:none{{end}}">
|
||||
<label class="layui-form-label mw200">私钥地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="private_key_src" id="private_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa" class="layui-input" value="{{.server.private_key_src}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">资源说明</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea">{{.server.detail}}</textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<input type="hidden" name="id" id="id" value="0">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200"></label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
<button class="layui-btn layui-btn-primary" id="test" lay-filter="test">测试</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
var $;
|
||||
layui.use(['form','element','layer','jquery'],function(){
|
||||
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
||||
var $ = layui.jquery;
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
return;
|
||||
}
|
||||
form.on('radio', function(data){
|
||||
if(data.value==1){
|
||||
$(".key").show();
|
||||
$(".password").hide();
|
||||
}else{
|
||||
$(".password").show();
|
||||
$(".key").hide();
|
||||
}
|
||||
});
|
||||
|
||||
$("#des").on('click',function () {
|
||||
layer.tips('公钥和私钥地址请在本地服务器生成,命令:ssh-keygen -t rsa -f pp_rsa', '#des', {
|
||||
tips: [1, '#0FA6D8'] //还可配置颜色
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
form.on('submit(sub)', function(data){
|
||||
var form_data = $("form").serialize();
|
||||
$.post('{{urlfor "ServerController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
layer.msg("操作成功",{icon: 1},function () {
|
||||
window.location.href = "/server/list"
|
||||
})
|
||||
} else {
|
||||
layer.msg(out.message)
|
||||
}
|
||||
}, "json");
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#test").on('click', function(data){
|
||||
layer.load();
|
||||
var form_data = $("form").serialize();
|
||||
$.post('{{urlfor "ServerController.AjaxTestServer"}}', form_data, function (out) {
|
||||
layer.msg(out.message)
|
||||
}, "json");
|
||||
setTimeout(function(){
|
||||
layer.closeAll('loading');
|
||||
}, 2000);
|
||||
return false;
|
||||
});
|
||||
|
||||
//但是,如果你的HTML是动态生成的,自动渲染就会失效
|
||||
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
|
||||
form.render();
|
||||
});
|
||||
</script>
|
||||
@@ -1,160 +1,172 @@
|
||||
<!-- 新增服务器 -->
|
||||
<div class="container-fluid">
|
||||
<div class="info-center">
|
||||
<!--title-->
|
||||
<div class="info-center">
|
||||
<div class="page-header">
|
||||
<div class="pull-left">
|
||||
<h4>{{.pageTitle}}</h4>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<!-- <button type="button" class="btn btn-mystyle btn-sm refresh">刷新</button>
|
||||
<button type="button" class="btn btn-mystyle btn-sm reback">返回</button> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--content-list-->
|
||||
<div class="content-list">
|
||||
<form action="{{urlfor "ServerController.Edit"}}" method="post" class="form-horizontal">
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="server_name">服务器名</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="server_name" value="{{.server.ServerName}}" required />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="server_name">登录账户</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="root" name="server_account" value="{{.server.ServerAccount}}" required />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="server_ip">服务器IP</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="server_ip" value="{{.server.ServerIp}}" required />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="port">服务器ssh端口</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="port" value="{{.server.Port}}" required />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="type">验证类型</label>
|
||||
<div class="col-sm-6" >
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="type" value="0" {{if eq .server.Type 0}}checked{{end}}> 密码
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="type" value="1" {{if eq .server.Type 1}}checked{{end}}> 密钥
|
||||
</label>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-3" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{if eq .server.Type 1}}hide{{end}}" style="margin-top: 15px" id="password">
|
||||
<label class="col-sm-3 control-label" for="password">服务器密码</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="/Users/haodaquan/.ssh/pp_rsa" name="password" value="{{.server.Password}}" />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{if eq .server.Type 0}}hide{{end}}" style="margin-top: 15px" id="private_key_src">
|
||||
<label class="col-sm-3 control-label" for="private_key_src">私钥地址</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" name="private_key_src" value="{{.server.PrivateKeySrc}}" />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{if eq .server.Type 0}}hide{{end}}" style="margin-top: 15px" id="public_key_src">
|
||||
<label class="col-sm-3 control-label" for="public_key_src">公钥地址</label>
|
||||
<div class="col-sm-3" >
|
||||
<input type="text" class="form-control input-sm" placeholder="" name="public_key_src" value="{{.server.PublicKeySrc}}" />
|
||||
</div>
|
||||
<div class="col-sm-6" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" style="margin-top: 15px">
|
||||
<label class="col-sm-3 control-label" for="detail">说明</label>
|
||||
<div class="col-sm-5" >
|
||||
<textarea name="detail" class="form-control" id="detail" rows="3">{{.server.Detail}}</textarea>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding-top:5px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<br />
|
||||
<div class="modal-footer" style="text-align:center">
|
||||
<input type="hidden" name="id" value="{{.server.Id}}" />
|
||||
<button type="submit" class="btn btn-primary submit_attr_button">保存</button>
|
||||
<button type="button" class="btn btn-default reback">返回</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
<div style="margin: 10px 0px">
|
||||
<blockquote class="layui-elem-quote">
|
||||
说明:创建新的服务器资源之前,请先测试服务器是否可以连通
|
||||
</blockquote>
|
||||
</div>
|
||||
<form class="layui-form" action="" method="post" >
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">所属分组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="group_id" lay-verify="required">
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<option value="{{$k}}" {{if eq $.server.group_id $k}} selected {{end}}>{{$v}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器名称</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_name" id="server_name" lay-verify="required" autocomplete="off" placeholder="服务器名称" class="layui-input" value="{{.server.server_name}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">登录账号</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_account" id="server_account" lay-verify="required" autocomplete="off" placeholder="root" class="layui-input" value="{{.server.server_account}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">IP地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_ip" id="server_ip" lay-verify="required" autocomplete="off" placeholder="192.168.1.12" class="layui-input" value="{{.server.server_ip}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" style="display: none">
|
||||
<label class="layui-form-label mw200">外网IP</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_outer_ip" id="server_outer_ip" lay-verify="required" autocomplete="off" placeholder="200.200.200.12" class="layui-input" value="{{.server.server_outer_ip}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">端口号</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="port" id="port" lay-verify="required" autocomplete="off" placeholder="22" class="layui-input" value="{{.server.port}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">验证登录类型</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="type" lay-verify="type" value="0" title="密码" {{if eq .server.type 0}}checked{{end}}>
|
||||
<input type="radio" name="type" lay-verify="type" value="1" title="密钥" {{if eq .server.type 1}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item password" style="{{if eq .server.type 1}}display:none{{end}}">
|
||||
<label class="layui-form-label mw200">密码</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="password" id="password" lay-verify="" autocomplete="off" placeholder="服务器登录密码" class="layui-input" value="{{.server.password}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item key" style="{{if eq .server.type 0}}display:none{{end}}">
|
||||
<label class="layui-form-label mw200">公钥地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="public_key_src" id="public_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa.pub" class="layui-input" value="{{.server.public_key_src}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"><span id="des" style="cursor: pointer">说明</span></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item key" style="{{if eq .server.type 0}}display:none{{end}}">
|
||||
<label class="layui-form-label mw200">私钥地址</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="private_key_src" id="private_key_src" lay-verify="" autocomplete="off" placeholder="/Users/haodaquan/.ssh/pp_rsa" class="layui-input" value="{{.server.private_key_src}}">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">资源说明</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<textarea name="detail" id="detail" placeholder="请输入内容" class="layui-textarea">{{.server.detail}}</textarea>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<input type="hidden" name="id" id="id" value="{{.server.id}}">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200"></label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="sub">立即提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
|
||||
<button class="layui-btn layui-btn-primary" id="test" lay-filter="test">测试</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
$("form").submit(function () {
|
||||
// $(".alert").hide();
|
||||
$("button[type='submit']").attr('disabled', true);
|
||||
$.post('{{urlfor "ServerController.Edit"}}', $(this).serialize(), function (out) {
|
||||
var $;
|
||||
layui.use(['form','element','layer','jquery'],function(){
|
||||
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
||||
var $ = layui.jquery;
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
return;
|
||||
}
|
||||
form.on('radio', function(data){
|
||||
if(data.value==1){
|
||||
$(".key").show();
|
||||
$(".password").hide();
|
||||
}else{
|
||||
$(".password").show();
|
||||
$(".key").hide();
|
||||
}
|
||||
});
|
||||
|
||||
$("#des").on('click',function () {
|
||||
layer.tips('公钥和私钥地址请在本地服务器生成,命令:ssh-keygen -t rsa -f pp_rsa', '#des', {
|
||||
tips: [1, '#0FA6D8'] //还可配置颜色
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
form.on('submit(sub)', function(data){
|
||||
var form_data = $("form").serialize();
|
||||
$.post('{{urlfor "ServerController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
window.location.href = '{{urlfor "ServerController.List"}}';
|
||||
layer.msg("操作成功",{icon: 1},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
} else {
|
||||
alert_message(out.msg,"alert-danger","alert-success");
|
||||
$("button[type='submit']").attr('disabled', false);
|
||||
layer.msg(out.message)
|
||||
}
|
||||
}, "json");
|
||||
return false;
|
||||
});
|
||||
|
||||
$("input[name='type']").click(function () {
|
||||
if ($(this).val() > 0) {
|
||||
$("#password").addClass('hide');
|
||||
$("#public_key_src").removeClass('hide');
|
||||
$("#private_key_src").removeClass('hide');
|
||||
} else {
|
||||
$("#password").removeClass('hide');
|
||||
$("#public_key_src").addClass('hide');
|
||||
$("#private_key_src").addClass('hide');
|
||||
}
|
||||
$("#test").on('click', function(data){
|
||||
layer.load();
|
||||
var form_data = $("form").serialize();
|
||||
$.post('{{urlfor "ServerController.AjaxTestServer"}}', form_data, function (out) {
|
||||
layer.msg(out.message)
|
||||
}, "json");
|
||||
setTimeout(function(){
|
||||
layer.closeAll('loading');
|
||||
}, 2000);
|
||||
return false;
|
||||
});
|
||||
|
||||
//但是,如果你的HTML是动态生成的,自动渲染就会失效
|
||||
//因此你需要在相应的地方,执行下述方法来手动渲染,跟这类似的还有 element.init();
|
||||
form.render();
|
||||
});
|
||||
</script>
|
||||
@@ -1,121 +1,106 @@
|
||||
<!-- 分组列表 -->
|
||||
<div class="container-fluid">
|
||||
<div class="info-center">
|
||||
<!--title-->
|
||||
<div class="info-center">
|
||||
<div class="page-header">
|
||||
<div class="pull-left">
|
||||
<h4>{{.pageTitle}}</h4>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<!-- <button type="button" class="btn btn-mystyle btn-sm refresh">刷新</button>
|
||||
<button type="button" class="btn btn-mystyle btn-sm reback">返回</button> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||
<div class="layui-row" style="margin-top: 20px;">
|
||||
<div class="layui-col-xs6">
|
||||
<a class="layui-btn" data-type="tabAdd" href="/server/add">新增</a>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<!--content-list-->
|
||||
<div class="content-list">
|
||||
<div class="search-box row">
|
||||
<div class="col-md-4">
|
||||
<div class="btn-group pull-left" role="group" aria-label="...">
|
||||
<a href='{{urlfor "ServerController.Add"}}' class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> 新增服务器</a>
|
||||
<div class="btn-group" role="server">
|
||||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-edit"></span> 批量操作
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:;" onclick="javascript:batch('delete');"><span class="glyphicon glyphicon-remove-sign" aria-hidden="true"></span> 删除</a></li>
|
||||
</ul>
|
||||
<div class="layui-col-xs6 search_text">
|
||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||
<div class="demoTable">
|
||||
<div class="layui-inline" style="width: 40%">
|
||||
<input class="layui-input" name="serverName" id="serverName" autocomplete="off" placeholder="资源名称" >
|
||||
</div>
|
||||
<button class="layui-btn" data-type="reload">查询</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class=" btn-large pull-right" >
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<div class="table-margin">
|
||||
<form id="form-list" method="post" action="">
|
||||
<table class="table table-bordered table-header">
|
||||
<thead>
|
||||
<tr>
|
||||
<td><input type="checkbox" name="all_check" /></td>
|
||||
<td>ID</td>
|
||||
<td width="20%">服务器名称</td>
|
||||
<td width="">IP地址</td>
|
||||
<td width="">端口号</td>
|
||||
<td width="">验证类型</td>
|
||||
<td width="20%">备注</td>
|
||||
<td width="">创建时间</td>
|
||||
<td width="10%">操作</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range $k,$v := .list}}
|
||||
<tr>
|
||||
<td class="chk"><input type="checkbox" name="ids" value="{{$v.id}}" /></td>
|
||||
<td class="center">{{$v.id}}</td>
|
||||
<td>{{$v.server_name}}</td>
|
||||
<td>{{$v.server_ip}}</td>
|
||||
<td>{{$v.port}}</td>
|
||||
<td>{{$v.type}}</td>
|
||||
<td>{{$v.detail}}</td>
|
||||
<td>{{$v.create_time}}</td>
|
||||
|
||||
<td>
|
||||
|
||||
<a class="btn btn-info btn-xs" href="{{urlfor "ServerController.Edit"}}?id={{$v.id}}">
|
||||
<span class="glyphicon glyphicon-file" aria-hidden="true"></span> 编辑
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="9">
|
||||
<div class="pull-right">
|
||||
{{str2html .pageBar}}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="layui-hide" id="table_list" lay-filter="table_filter">
|
||||
</table>
|
||||
|
||||
<script type="text/html" id="bar">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="copy">复制</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function batch(action) {
|
||||
if ($("input[name='ids']:checked").size() < 1) {
|
||||
alert_message("请选择要操作的任务","alert-danger","alert-success");
|
||||
} else {
|
||||
if(action=='delete'){
|
||||
if(!confirm("确定要删除所选吗?")) return;
|
||||
}
|
||||
var url = "{{urlfor "ServerController.Batch"}}";
|
||||
$.post(url + "?action=" + action, $("#form-list").serialize(), function(out) {
|
||||
if (out.status != 0) {
|
||||
alert_message(out.msg,"alert-danger","alert-success");
|
||||
} else {
|
||||
window.location.reload();
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//点击行换色
|
||||
$('tbody tr').click(function(){
|
||||
$(this).addClass("warning").siblings().removeClass("warning");
|
||||
layui.use(['table','form','element'], function(){
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
var element = layui.element;
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
return;
|
||||
}
|
||||
//方法级渲染
|
||||
table.render({
|
||||
elem: '#table_list'
|
||||
,url: '/server/table'
|
||||
,cols: [[
|
||||
// {checkbox: true, fixed: true},
|
||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||
,{field:'server_name',title: '资源名称'}
|
||||
,{field:'group_name',title: '分组名称'}
|
||||
,{field:'type', title: '登录类型'}
|
||||
,{field:'detail', title: '备注'}
|
||||
// ,{field:'status_text', title: '状态'}
|
||||
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
|
||||
]]
|
||||
,id: 'listReload'
|
||||
,page: true
|
||||
,height: "full-130"
|
||||
});
|
||||
|
||||
var $ = layui.$, active = {
|
||||
reload: function(){
|
||||
table.reload('listReload', {
|
||||
where: {
|
||||
serverName: $('#serverName').val(),
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(table_filter)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'edit'){
|
||||
window.location.href="/server/edit?id="+data.id
|
||||
} else if(obj.event === 'del'){
|
||||
layer.confirm('真的删除【'+data.server_name+'】服务器资源么', function(index){
|
||||
var jsData = {'id':data.id}
|
||||
$.post('{{urlfor "ServerController.AjaxDel"}}', jsData, function (out) {
|
||||
if (out.status == 0) {
|
||||
layer.alert(out.message, {icon: 1},function(index){
|
||||
layer.close(index);
|
||||
window.location.reload();
|
||||
});
|
||||
} else {
|
||||
layer.msg(out.message)
|
||||
}
|
||||
}, "json");
|
||||
// obj.del();
|
||||
layer.close(index);
|
||||
})
|
||||
|
||||
} else if(obj.event === 'copy'){
|
||||
window.location.href="/server/copy?id="+data.id
|
||||
}else{
|
||||
layer.msg('操作不存在');
|
||||
}
|
||||
});
|
||||
|
||||
$('.demoTable .layui-btn').on('click', function(){
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user