function dPost(method, version, args,callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'docker'; req_data['func'] = method; req_data['version'] = version; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/run', req_data, function(data) { layer.close(loadT); if (!data.status){ //错误展示10S layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function dPostCallbak(method, version, args,callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'docker'; req_data['func'] = method; args['version'] = version; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function logsCon(id){ dPost('docker_con_log','',{Hostname:id},function(rdata){ var rdata = $.parseJSON(rdata.data); if(!rdata.status) { layer.msg(rdata.msg,{icon:2}); return; }; layer.open({ type:1, title:'Docker日志', area: '600px', closeBtn: 2, content:'
' +'
'+ (rdata.msg == '' ? 'No logs':rdata.msg) +'
' +'
', success:function(index,layers){ $(".crontab-log").scrollTop(1000000); } }); }); } function deleteCon(Hostname){ // 删除容器 safeMessage('删除容器 ', '删除容器 ['+Hostname+'], 确定?',function(){ dPost('docker_remove_con','',{Hostname:Hostname},function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { dockerConListRender(); } },{icon:rdata.status?1:2}); }); }); } function startCon(Hostname){ dPost('docker_run_con','',{Hostname:Hostname},function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { dockerConListRender(); } },{icon:rdata.status?1:2}); }); } function stopCon(Hostname){ dPost('docker_stop_con','',{Hostname:Hostname},function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { dockerConListRender(); } },{icon:rdata.status?1:2}); }); } function execCon(Hostname){ webShell(); var pdata_socket = {}; var shell = setInterval(function(){ if($('.term-box').length == 0){ pdata_socket['data'] = 'exit\n'; socket.emit('webssh',pdata_socket); setTimeout(function(){socket.emit('webssh',pdata_socket['data']);},1000); clearInterval(shell); } },500); setTimeout(function(){ dPost('docker_exec','',{Hostname:Hostname},function(res){ var res = $.parseJSON(res.data); if(!res.status){ layer.msg(res.msg,{icon:res.status?1:2}); }else{ pdata_socket['data'] = 'clear && ' + res.msg +'\n' socket.emit('webssh',pdata_socket); setTimeout(function(){socket.emit('webssh',pdata_socket['data']);},1000); } }); }); } function dockerConListRender(){ dPost('con_list', '', {}, function(rdata){ var rdata = $.parseJSON(rdata.data); console.log(rdata); if (!rdata.status){ layer.msg(rdata.msg,{icon:2,time:2000}); return; } var list = ''; var rlist = rdata.data; for (var i = 0; i < rlist.length; i++) { var docker_status = 'stop'; var status = ''; if (rlist[i]['State']['Status'] == 'running'){ docker_status = 'start'; status = ''; } var op = ''; op += '终端 | '; op += '日志 | '; op += '删除'; list += ''; list += ''+rlist[i]['Name'].substring(1)+''; list += ''+rlist[i]['Config']['Image']+''; list += ''+getFormatTime(rlist[i]['Created'])+''; if (docker_status == 'start'){ list += ''+status+''; } else{ list += ''+status+''; } list += ''+op+''; list += ''; } $('#con_list tbody').html(list); }); } function createConTemplate(){ console.log('###'); } function dockerConList(){ var con = '
\ \
\
\ \ \ \ \ \ \ \
名称镜像创建时间状态操作
\
\
\
'; $(".soft-man-con").html(con); dockerConListRender(); } function deleteImages(tag, id){ safeMessage('删除镜像','删除镜像['+tag+'],确定?',function(){ dPost('docker_remove_image','', {imageId:id,repoTags:tag},function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { dockerImageListRender(); } },{ icon: rdata.status ? 1 : 2 }); }); }); } function pullImages(tag, id){ console.log(tag, id); layer.msg('开发中!',{ icon: 2 }); } function dockerImageListRender(){ dPost('image_list', '', {}, function(rdata){ var rdata = $.parseJSON(rdata.data); console.log(rdata); if (!rdata.status){ layer.msg(rdata.msg,{icon:2,time:2000}); return; } var list = ''; var rlist = rdata.data; for (var i = 0; i < rlist.length; i++) { var tag = rlist[i]['RepoTags'].split(":")[1]; var license = 'null'; var desc = 'null'; if (rlist[i]['Labels'] == null){ license = 'free'; } var op = ''; op += '拉取 | '; op += '删除'; list += ''; list += ''+rlist[i]['RepoTags']+''; list += ''+tag+''; list += ''+toSize(rlist[i]['Size'])+''; list += ''+license+''; list += ''+desc+''; list += ''+op+''; list += ''; } $('#con_list tbody').html(list); }); } function dockerPullImagesFileTemplate(){ // 拉取镜像文件模板 var layer_index = layer.open({ type: 1, title: "获取镜像", area: '500px', closeBtn: 2, shadeClose: false, content: '
'+ '
'+ '官方库'+ '公共库'+ '私有库'+ '
'+ '
'+ '
'+ '镜像名:\
\ \ \
'+ '
'+ ''+ '\
\
', success:function(layero,layer_id){ $('.docker-sub span').click(function(){ var index = $(this).index(); $(this).addClass('on').siblings().removeClass('on'); $(this).parent().next().find('.conter').eq(index).show().siblings().hide(); }); $('.official_pull_btn').click(function(){ var name = $('[name="official_pull_name"]').val(); if(name == ''){ layer.msg('镜像名不能为空!'); return; } dPost('docker_pull','',{images:name}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { layer.close(layer_index); dockerImageListRender(); } },{ icon: rdata.status ? 1 : 2 }); }); }); $('.public_pull_btn').click(function(){ var path = $('[name="public_pull_path"]').val(); if(path == ''){ layer.msg('公共网络镜像地址不能为空。'); return; } dPost('docker_pull_reg','',{path:path}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { layer.close(layer_index); dockerImageListRender(); } },{ icon: rdata.status ? 1 : 2 }); }); }); $('.private_pull_btn').click(function(){ var path = $('[name="private_pull_path"]').val(); if(path == ''){ layer.msg('专用镜像地址不能为空!'); return } dPost('docker_pull_private_new','',{path:path}, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ if(rdata.status) { layer.close(layer_index); dockerImageListRender(); } },{ icon: rdata.status ? 1 : 2 }); }); }); } }); } function dockerImageList(){ var con = '
\ \
\
\ \ \ \ \ \ \ \ \
名称版本大小证书描述操作
\
\
\
\
'; $(".soft-man-con").html(con); dockerImageListRender(); } // login function repoLogin(){ var _option1= ""; var obj = {hub_name: "", namespace: "",name: "", registry: "", user_pass: "", user_name: "",arry: ['Docker Repository','Other Repository']}; for(var i = 0; i< obj.arry.length;i++){ _option1 += ''; } var layer_index = layer.open({ type: 1, title: "登录到存储库", area: '450px', closeBtn: 2, shadeClose: false, content: '
'+ ''+ '
'+ '
Repository Type
'+ '
Name:
'+ '
Username:
'+ '
Password:
'+ '
Repository Name:
'+ '
Namespaces:
'+ ''+ '
'+ '
'+ '
', success:function(){ $('[name="dtype"]').change(function(e){ var docker_type = $(this).val(); if(docker_type == 'Other Repository'){ $('.docker_content .line').show(); }else{ $('.docker_content .line').filter(":lt(3)").show().end().filter(":gt(4)").hide(); } }); $('.login_aliyun').click(function(){ var user = $('[name="user"]').val(), passwd = $('[name="passwd"]').val(), registry = $('[name="registry"]').val(), name = $('[name="ctm_name"]').val(), hub_name = $('[name="hub_name"]').val(), namespace = $('[name="namespace"]').val(); var args = { user:user, passwd:passwd, registry:'', repository_name:name, hub_name:hub_name, namespace:namespace }; if($('[name="dtype"]').val() == 'Docker Repository'){ args.registry = ''; }else{ args.registry = registry; } console.log(obj); dPost('docker_login', '', args, function(rdata){ var rdata = $.parseJSON(rdata.data); console.log(rdata); layer.msg(rdata.msg,{icon:rdata.status?1:2}); if(res.status){ repoListRender(); layer.close(layer_index); } }); }); } }); } function delRepo(address){ safeMessage('退出','你将退出 ['+address+'],确定?',function(){ dPost('docker_logout', '', {registry:address}, function(rdata){ var rdata = $.parseJSON(rdata.data); layer.msg(rdata.msg,{icon:rdata.status?1:2}); if(rdata.status) { repoListRender(); } } ); }); } function repoListRender(){ dPost('repo_list', '', {}, function(rdata){ var rdata = $.parseJSON(rdata.data); console.log(rdata); if (!rdata.status){ layer.msg(rdata.msg,{icon:2,time:2000}); return; } var list = ''; var rlist = rdata.data; for (var i = 0; i < rlist.length; i++) { list += ''; list += ''+rlist[i]['hub_name']+''; list += ''+rlist[i]['repository_name']+''; list += ''+rlist[i]['namespace']+''; list += ''+rlist[i]['registry']+''; list += '删除'; list += ''; } $('#con_list tbody').html(list); }); } function repoList(){ var con = '
\ \
\
\ \ \ \ \ \ \ \ \ ' + '
NameRepository NameNameSpace地址操作
\
\
\
\
'; $(".soft-man-con").html(con); //login $('#docker_login').click(function(){ repoLogin(); }); repoListRender(); }