diff --git a/README.md b/README.md index 6c5d54ce0..2431b4820 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ docker run -itd --name mw-server --privileged=true -p 7200:7200 -p 80:80 -p 443: * 计划任务自动脚本运行时间 * rsyncd添加优化 * 使用mariadb二进制导入备份文件 +* docker插件-镜像导入导出功能 ### JSDelivr安装地址 diff --git a/plugins/docker/index.py b/plugins/docker/index.py index aed745b22..e528d9ced 100755 --- a/plugins/docker/index.py +++ b/plugins/docker/index.py @@ -609,6 +609,45 @@ def __release_port(port): return "Release failed {}".format(e) +def dockerPortCheck(): + args = getArgs() + data = checkArgs(args, ['port']) + if not data[0]: + return data[1] + + port = args['port'] + is_ok = IsPortExists(port) + if is_ok: + return mw.returnJson(True, 'ok') + return mw.returnJson(False, 'fail') + + +def IsPortExists(port): + # 判断端口是否被占用 + ret = __check_dst_port(ip='localhost', port=port) + ret2 = __check_dst_port(ip='0.0.0.0', port=port) + if ret: + return ret + if not ret and ret2: + return ret2 + if not ret and not ret2: + return False + + +def __check_dst_port(ip, port, timeout=3): + # 端口检测 + import socket + ok = True + try: + s = socket.socket() + s.settimeout(timeout) + s.connect((ip, port)) + s.close() + except: + ok = False + return ok + + def dockerCreateCon(): args = getArgs() data = checkArgs(args, ['environments', 'command', @@ -809,6 +848,8 @@ if __name__ == "__main__": print(dockerCreateCon()) elif func == 'docker_remove_image': print(dockerRemoveImage()) + elif func == 'docker_port_check': + print(dockerPortCheck()) elif func == 'docker_login': print(dockerLogin()) elif func == 'docker_logout': diff --git a/plugins/docker/js/docker.js b/plugins/docker/js/docker.js index f764e525c..d2c35d6f3 100755 --- a/plugins/docker/js/docker.js +++ b/plugins/docker/js/docker.js @@ -1,47 +1,46 @@ - -function dPostOrgin(args, callback){ +function dPostOrgin(args, callback) { $.post('/plugins/run', args, function(data) { callback(data); - },'json'); + }, 'json'); } -function dPost(method, version, args,callback){ +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'){ + + if (typeof(args) == 'string') { req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } - dPostOrgin(req_data, function(data){ + dPostOrgin(req_data, function(data) { layer.close(loadT); - if (!data.status){ + if (!data.status) { //错误展示10S - layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']}); + layer.msg(data.msg, { icon: 0, time: 2000, shade: [10, '#000'] }); return; } - if(typeof(callback) == 'function'){ + if (typeof(callback) == 'function') { callback(data); } }); } -function dPostCallbak(method, version, args,callback){ +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'){ + + if (typeof(args) == 'string') { req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); @@ -49,115 +48,115 @@ function dPostCallbak(method, version, args,callback){ $.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']}); + if (!data.status) { + layer.msg(data.msg, { icon: 0, time: 2000, shade: [0.3, '#000'] }); return; } - if(typeof(callback) == 'function'){ + if (typeof(callback) == 'function') { callback(data); } - },'json'); + }, 'json'); } -function logsCon(id){ - dPost('docker_con_log','',{Hostname:id},function(rdata){ +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}); + if (!rdata.status) { + layer.msg(rdata.msg, { icon: 2 }); return; }; layer.open({ - type:1, - title:'Docker日志', + type: 1, + title: 'Docker日志', area: '600px', closeBtn: 2, - content:'
' - +'
' +
+                '
'+ (rdata.msg == '' ? 'No logs':rdata.msg) +'
' - +'
', - success:function(index,layers){ + border-radius:0px;">' + (rdata.msg == '' ? 'No logs' : rdata.msg) + '' + + '', + success: function(index, layers) { $(".crontab-log").scrollTop(1000000); } }); }); } -function deleteCon(Hostname){ +function deleteCon(Hostname) { // 删除容器 - safeMessage('删除容器 ', '删除容器 ['+Hostname+'], 确定?',function(){ - dPost('docker_remove_con','',{Hostname:Hostname},function(rdata){ + safeMessage('删除容器 ', '删除容器 [' + Hostname + '], 确定?', function() { + dPost('docker_remove_con', '', { Hostname: Hostname }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { dockerConListRender(); } - },{icon:rdata.status?1:2}); + }, { icon: rdata.status ? 1 : 2 }); }); }); } -function startCon(Hostname){ - dPost('docker_run_con','',{Hostname:Hostname},function(rdata){ +function startCon(Hostname) { + dPost('docker_run_con', '', { Hostname: Hostname }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { dockerConListRender(); } - },{icon:rdata.status?1:2}); + }, { icon: rdata.status ? 1 : 2 }); }); } -function stopCon(Hostname){ - dPost('docker_stop_con','',{Hostname:Hostname},function(rdata){ +function stopCon(Hostname) { + dPost('docker_stop_con', '', { Hostname: Hostname }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { dockerConListRender(); } - },{icon:rdata.status?1:2}); + }, { icon: rdata.status ? 1 : 2 }); }); } -function execCon(Hostname){ +function execCon(Hostname) { webShell(); var pdata_socket = {}; - var shell = setInterval(function(){ - if($('.term-box').length == 0){ + 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); + 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){ + }, 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); + 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){ +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; + if (!rdata.status) { + layer.msg(rdata.msg, { icon: 2, time: 2000 }); + return; } - + var list = ''; var rlist = rdata.data; @@ -165,28 +164,28 @@ function dockerConListRender(){ for (var i = 0; i < rlist.length; i++) { var docker_status = 'stop'; var status = ''; - if (rlist[i]['State']['Status'] == 'running'){ + if (rlist[i]['State']['Status'] == 'running') { docker_status = 'start'; status = ''; } var op = ''; - op += '终端 | '; - op += '日志 | '; - op += '删除'; + op += '终端 | '; + op += '日志 | '; + op += '删除'; list += ''; - list += ''+rlist[i]['Name'].substring(1)+''; - list += ''+rlist[i]['Config']['Image']+''; - list += ''+getFormatTime(rlist[i]['Created'])+''; + 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+''; + if (docker_status == 'start') { + list += '' + status + ''; + } else { + list += '' + status + ''; } - list += ''+op+''; + list += '' + op + ''; list += ''; } @@ -194,20 +193,20 @@ function dockerConListRender(){ }); } -function createConTemplate(){ +function createConTemplate() { - dPost('get_docker_create_info','',{},function(rdata){ + dPost('get_docker_create_info', '', {}, function(rdata) { var rdata = $.parseJSON(rdata.data); - console.log(rdata); + // console.log(rdata); var rdata = rdata.data; var imageOpt = ''; - for(var i=0;i'+imageName+''; + for (var i = 0; i < rdata.images.length; i++) { + var imageName = rdata.images[i].RepoTags.indexOf('panel') == -1 ? rdata.images[i].RepoTags : 'aaPanel:' + rdata.images[i].RepoTags.split(':')[1]; + imageOpt += ''; } var iplistOpt = ''; - for(var i=0;i'+rdata.iplist[i].address+''; + for (var i = 0; i < rdata.iplist.length; i++) { + iplistOpt += ''; } var layer_index = layer.open({ @@ -220,11 +219,11 @@ function createConTemplate(){ content: '
\
\ 镜像\ -
\ +
\
\
\ 绑定IP\ -
\ +
\
\
\ 端口映射\ @@ -268,8 +267,8 @@ function createConTemplate(){
\
\ 内存配额\ -
\ - MB不超过, '+ rdata.memSize +'MB
\ +
\ + MB不超过, ' + rdata.memSize + 'MB
\
\
\ CPU配额\ @@ -286,83 +285,86 @@ function createConTemplate(){
\
\
', - success:function(){ - $(".bt-cancel").click(function(){ - layer.close(layer_index); - }); + success: function() { - - $(".plus").click(function(){ + $(".plus").click(function() { var name1 = $(".type-port input[name='name1']").val(); var name2 = $(".type-port input[name='name2']").val(); - if(name1 < 1 || name1 > 65535 || name2 < 1 || name2 > 65535 || isNaN(name1) || isNaN(name2)){ - layer.msg('Port setting value range is invalid, range [1-65535]',{icon:2}); + if (name1 < 1 || name1 > 65535 || name2 < 1 || name2 > 65535 || isNaN(name1) || isNaN(name2)) { + layer.msg('端口设置值范围无效,范围 [1-65535]', { icon: 2 }); return; } - + var portval = $('#portabletr')[0].childNodes; - for(var i=0;i',{icon:16,time:0,shade: [0.3, "#000"]}); - $.post('/plugin?action=a&name=docker&s=IsPortExists',{port:port},function(rdata){ + var loadT = layer.msg('正在检测中... ', { icon: 16, time: 0, shade: [0.3, "#000"] }); + dPost('docker_port_check', '',{port:port}, function(rdata){ layer.close(loadT); - if(rdata !== false){ - layer.msg('Port ['+name2+'] is already in the mapping list!',{icon:2}); + var rdata = $.parseJSON(rdata.data); + if (rdata.status){ + layer.msg('端口 [' + name2 + ']已在映射列表中!', { icon: 2 }); return; } + var selecttype = $(".type-port select").val(); - var portable= ''+name1+''+selecttype+''+name2+'Del'; + var portable = '\ + ' + name1 + '\ + ' + selecttype + '\ + ' + name2 + '\ + 删除\ + '; $("#portabletr").append(portable); $(".more1").remove(); - $(".minus").click(function(){ + $(".minus").click(function() { $(this).parents("tr").remove(); }); }); }); - - $(".plus2").click(function(){ + + $(".plus2").click(function() { var path1 = $(".type-volumes input[name='path1']").val(); var path2 = $(".type-volumes input[name='path2']").val(); - - var notPath = ['/boot','/bin','/sbin','/etc','/usr/bin','/usr/sbin','/dev'] - if($.inArray(path2,notPath) != -1){ - layer.msg('Cannot map' + path2,{icon:2}); + + var notPath = ['/boot', '/bin', '/sbin', '/etc', '/usr/bin', '/usr/sbin', '/dev'] + if ($.inArray(path2, notPath) != -1) { + layer.msg('Cannot map' + path2, { icon: 2 }); return; - } + } var portval = $('#portabletr2')[0].childNodes; - for(var i=0;i'+path1+'\ - '+selecttype+''+path2+'\ - Del\ + var portable = '\ + ' + path1 + '\ + ' + selecttype + '' + path2 + '\ + 删除\ '; $("#portabletr2").append(portable); $(".more2").remove(); - $(".minus2").click(function(){ + $(".minus2").click(function() { $(this).parents("tr").remove(); }); }); }, - yes:function(layero,layer_id){ + yes: function(layero, layer_id) { var ports = {}; var volumes = {}; var portval = $('#portabletr')[0].childNodes; @@ -373,50 +375,62 @@ function createConTemplate(){ var accept = []; //遍历端口映射 - for(var i=0;i rdata.memSize){ - layer.msg('内存配额不能大于物理内存 ['+rdata.memSize+']!',{icon:2}); + + if (data.mem_limit > rdata.memSize) { + layer.msg('内存配额不能大于物理内存 [' + rdata.memSize + ']!', { icon: 2 }); return; } - - if(data.cpu_shares > 100 || data.cpu_shares < 1){ - layer.msg('CPU配额设置值范围应为 [1-100]!',{icon:2}); + + if (data.cpu_shares > 100 || data.cpu_shares < 1) { + layer.msg('CPU配额设置值范围应为 [1-100]!', { icon: 2 }); return; } + + // console.log(data); dPost('docker_create_con','', data, function(rdata){ var rdata = $.parseJSON(rdata.data); showMsg(rdata.msg,function(){ @@ -432,7 +446,7 @@ function createConTemplate(){ } -function dockerConList(){ +function dockerConList() { var con = '
\ \ @@ -454,33 +468,33 @@ function dockerConList(){ dockerConListRender(); } -function deleteImages(tag, id){ - safeMessage('删除镜像','删除镜像['+tag+'],确定?',function(){ - dPost('docker_remove_image','', {imageId:id,repoTags:tag},function(rdata){ +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) { + showMsg(rdata.msg, function() { + if (rdata.status) { dockerImageListRender(); } - },{ icon: rdata.status ? 1 : 2 }); + }, { icon: rdata.status ? 1 : 2 }); }); }); } -function pullImages(tag, id){ +function pullImages(tag, id) { console.log(tag, id); - layer.msg('开发中!',{ icon: 2 }); + layer.msg('开发中!', { icon: 2 }); } -function dockerImageListRender(){ - dPost('image_list', '', {}, function(rdata){ +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; + if (!rdata.status) { + layer.msg(rdata.msg, { icon: 2, time: 2000 }); + return; } - + var list = ''; var rlist = rdata.data; @@ -490,21 +504,21 @@ function dockerImageListRender(){ var license = 'null'; var desc = 'null'; - if (rlist[i]['Labels'] == null){ + if (rlist[i]['Labels'] == null) { license = 'free'; } var op = ''; - op += '拉取 | '; - op += '删除'; + op += '拉取 | '; + op += '删除'; list += ''; - list += ''+rlist[i]['RepoTags']+''; - list += ''+tag+''; - list += ''+toSize(rlist[i]['Size'])+''; - list += ''+license+''; - list += ''+desc+''; - list += ''+op+''; + list += '' + rlist[i]['RepoTags'] + ''; + list += '' + tag + ''; + list += '' + toSize(rlist[i]['Size']) + ''; + list += '' + license + ''; + list += '' + desc + ''; + list += '' + op + ''; list += ''; } @@ -512,7 +526,7 @@ function dockerImageListRender(){ }); } -function dockerPullImagesFileTemplate(){ +function dockerPullImagesFileTemplate() { // 拉取镜像文件模板 var layer_index = layer.open({ type: 1, @@ -520,29 +534,29 @@ function dockerPullImagesFileTemplate(){ area: '500px', closeBtn: 2, shadeClose: false, - content: '
'+ - '
'+ - '官方库'+ - '公共库'+ - '私有库'+ - '
'+ - '
'+ - '
'+ - '镜像名:\ + content: '
' + + '
' + + '官方库' + + '公共库' + + '私有库' + + '
' + + '
' + + '
' + + '镜像名:\
\ \ \ -
'+ - '
'+ - '
' + + ''+ - '
' + + '', - success:function(layero,layer_id){ + success: function(layero, layer_id) { - $('.docker-sub span').click(function(){ + $('.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(){ + $('.official_pull_btn').click(function() { var name = $('[name="official_pull_name"]').val(); - if(name == ''){ + if (name == '') { layer.msg('镜像名不能为空!'); return; } - dPost('docker_pull','',{images:name}, function(rdata){ + dPost('docker_pull', '', { images: name }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { layer.close(layer_index); dockerImageListRender(); - + } - },{ icon: rdata.status ? 1 : 2 }); + }, { icon: rdata.status ? 1 : 2 }); }); }); - $('.public_pull_btn').click(function(){ + $('.public_pull_btn').click(function() { var path = $('[name="public_pull_path"]').val(); - if(path == ''){ + if (path == '') { layer.msg('公共网络镜像地址不能为空。'); return; } - dPost('docker_pull_reg','',{path:path}, function(rdata){ + dPost('docker_pull_reg', '', { path: path }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { layer.close(layer_index); dockerImageListRender(); } - },{ icon: rdata.status ? 1 : 2 }); + }, { icon: rdata.status ? 1 : 2 }); }); }); - $('.private_pull_btn').click(function(){ + $('.private_pull_btn').click(function() { var path = $('[name="private_pull_path"]').val(); - if(path == ''){ + if (path == '') { layer.msg('专用镜像地址不能为空!'); return } - dPost('docker_pull_private_new','',{path:path}, function(rdata){ + dPost('docker_pull_private_new', '', { path: path }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { layer.close(layer_index); dockerImageListRender(); } - },{ icon: rdata.status ? 1 : 2 }); + }, { icon: rdata.status ? 1 : 2 }); }); }); } @@ -616,7 +630,7 @@ function dockerPullImagesFileTemplate(){ }); } -function dockerImageList(){ +function dockerImageList() { var con = '
\ \ @@ -642,54 +656,54 @@ function dockerImageList(){ } //获取文件数据 -function dockerGetFileBytes(fileName){ - window.open('/files/download?filename='+encodeURIComponent(fileName)); +function dockerGetFileBytes(fileName) { + window.open('/files/download?filename=' + encodeURIComponent(fileName)); } //删除文件 -function dockerDeleteFile(fileName){ - layer.confirm(lan.get('recycle_bin_confirm',[fileName]),{title:'删除文件',closeBtn:2,icon:3},function(){ - layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); +function dockerDeleteFile(fileName) { + layer.confirm(lan.get('recycle_bin_confirm', [fileName]), { title: '删除文件', closeBtn: 2, icon: 3 }, function() { + layer.msg('正在处理,请稍候...', { icon: 16, time: 0, shade: [0.3, '#000'] }); $.post('/files/delete', 'path=' + encodeURIComponent(fileName), function(rdata) { - showMsg(rdata.msg,function(){ + showMsg(rdata.msg, function() { dockerImageOutputRender(); - },{icon: rdata.status ? 1 : 2}); - },'json'); + }, { icon: rdata.status ? 1 : 2 }); + }, 'json'); }); } -function dockerLoadFile(fileName){ - dPost('image_pick_load', '', {file:fileName}, function(rdata){ +function dockerLoadFile(fileName) { + dPost('image_pick_load', '', { file: fileName }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - dockerImageOutputRender(); - },{icon: rdata.status ? 1 : 2}); + showMsg(rdata.msg, function() { + dockerImageOutputRender(); + }, { icon: rdata.status ? 1 : 2 }); }); } -function dockerImageOutputRender(){ - dPost('image_pick_list', '', {}, function(rdata){ +function dockerImageOutputRender() { + dPost('image_pick_list', '', {}, function(rdata) { var rdata = $.parseJSON(rdata.data); - if (!rdata.status){ - layer.msg(rdata.msg,{icon:2,time:10000}); - return; + if (!rdata.status) { + layer.msg(rdata.msg, { icon: 2, time: 10000 }); + return; } - + var list = ''; var rlist = rdata.data; for (var i = 0; i < rlist.length; i++) { var op = ''; - op += '下载 | '; - op += '导入 | '; - op += '删除'; + op += '下载 | '; + op += '导入 | '; + op += '删除'; list += ''; - list += ''+rlist[i]['name']+''; - list += ''+rlist[i]['size']+''; - list += ''+rlist[i]['time']+''; - list += ''+op+''; + list += '' + rlist[i]['name'] + ''; + list += '' + rlist[i]['size'] + ''; + list += '' + rlist[i]['time'] + ''; + list += '' + op + ''; list += ''; } @@ -698,15 +712,15 @@ function dockerImageOutputRender(){ } //上传文件 -function uploadImageFiles(upload_dir){ +function uploadImageFiles(upload_dir) { var image_layer = layer.open({ - type:1, + type: 1, closeBtn: 1, - title:"上传导入文件["+upload_dir+']', - area: ['500px','300px'], - shadeClose:false, - content:'
\ - \ + title: "上传导入文件[" + upload_dir + ']', + area: ['500px', '300px'], + shadeClose: false, + content: '
\ + \ \ \ \ @@ -722,24 +736,24 @@ function uploadImageFiles(upload_dir){ \
    \
    ', - success:function(){ - $('#filesClose').click(function(){ + success: function() { + $('#filesClose').click(function() { layer.close(image_layer); }); } }); - uploadStart(function(){ - showMsg('上传成功!', function(){ + uploadStart(function() { + showMsg('上传成功!', function() { dockerImageOutputRender(); layer.close(image_layer); - },{icon:1,time:2000}); + }, { icon: 1, time: 2000 }); }); } -function dockerImagePick(){ +function dockerImagePick() { - dPost('image_list', '', {}, function(rdata){ + dPost('image_list', '', {}, function(rdata) { var rdata = $.parseJSON(rdata.data); var imageList = rdata.data; // console.log(imageList); @@ -749,12 +763,13 @@ function dockerImagePick(){ _tbody = '当前无镜像'; continue; } - var versionData = imageList[i].RepoTags,version,reg = new RegExp('((?<=:)[0-9A-z/.-]*)$'); + var versionData = imageList[i].RepoTags, + version, reg = new RegExp('((?<=:)[0-9A-z/.-]*)$'); version = versionData.match(reg); - _tbody += "\ - "+imageList[i].RepoTags+"\ - "+ version[0] +"\ - "+ toSize(imageList[i].Size) +""; + _tbody += "\ + " + imageList[i].RepoTags + "\ + " + version[0] + "\ + " + toSize(imageList[i].Size) + ""; } @@ -763,7 +778,7 @@ function dockerImagePick(){ title: "选择镜像", area: '500px', closeBtn: 2, - btn:['打包','取消'], + btn: ['打包', '取消'], shadeClose: false, content: '
    \ \ @@ -773,38 +788,39 @@ function dockerImagePick(){ \ \ \ - '+ _tbody +'\ + ' + _tbody + '\
    版本大小
    \
    ', - success:function(){ + success: function() { readerTableChecked(); tableFixed('images_table'); }, - yes:function(layers,index){ - var data = '', tit = '\xa0', - choose_num = $(".images_pull tbody [name=images]:checked").length; + yes: function(layers, index) { + var data = '', + tit = '\xa0', + choose_num = $(".images_pull tbody [name=images]:checked").length; for (var i = 0; i < choose_num; i++) { - if(choose_num == 0){ - layer.msg('Please choose the images which need to pack',{icon:2}); + if (choose_num == 0) { + layer.msg('Please choose the images which need to pack', { icon: 2 }); return false; } data += $(".images_pull tbody [name=images]:checked").eq(i).attr('data-name'); - if(i != (choose_num-1)) data += ' '; + if (i != (choose_num - 1)) data += ' '; } - dPost('image_pick_save', '', {images:data}, function(rdata){ + dPost('image_pick_save', '', { images: data }, function(rdata) { var rdata = $.parseJSON(rdata['data']); - showMsg(rdata.msg, function(){ + showMsg(rdata.msg, function() { dockerImageOutputRender(); layer.close(layerS); - },{icon:rdata.status?1:2,time:2000}); + }, { icon: rdata.status ? 1 : 2, time: 2000 }); }); } }); }); } -function dockerImageOutput(){ +function dockerImageOutput() { var con = '
    \ \ \ @@ -825,12 +841,12 @@ function dockerImageOutput(){ $(".soft-man-con").html(con); - $('#btn_image_upload').click(function(){ + $('#btn_image_upload').click(function() { dPostOrgin({ - name:'docker', - func:'image_pick_dir', - version:'', - },function(rdata){ + name: 'docker', + func: 'image_pick_dir', + version: '', + }, function(rdata) { var rdata = $.parseJSON(rdata['data']); var upload_dir = rdata['data']; uploadImageFiles(upload_dir); @@ -840,41 +856,41 @@ function dockerImageOutput(){ dockerImageOutputRender(); } -function deleteIpList(address){ - safeMessage('删除IP','你将删除从IP地址池['+address+'],确定?',function(){ - dPost('docker_del_ip','', {address:address},function(rdata){ +function deleteIpList(address) { + safeMessage('删除IP', '你将删除从IP地址池[' + address + '],确定?', function() { + dPost('docker_del_ip', '', { address: address }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg,function(){ - if(rdata.status) { + showMsg(rdata.msg, function() { + if (rdata.status) { dockerIpListRender(); } - },{ icon: rdata.status ? 1 : 2 }); + }, { icon: rdata.status ? 1 : 2 }); }); }); } -function dockerIpListRender(){ - dPost('docker_get_iplist', '', {}, function(rdata){ +function dockerIpListRender() { + dPost('docker_get_iplist', '', {}, function(rdata) { var rdata = $.parseJSON(rdata.data); // console.log(rdata); - if (!rdata.status){ - layer.msg(rdata.msg,{icon:2,time:2000}); - return; + 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 op = ''; - op += '删除'; + op += '删除'; list += ''; - list += ''+rlist[i]['address']+''; - list += ''+rlist[i]['netmask']+''; - list += ''+rlist[i]['gateway']+''; - list += ''+op+''; + list += '' + rlist[i]['address'] + ''; + list += '' + rlist[i]['netmask'] + ''; + list += '' + rlist[i]['gateway'] + ''; + list += '' + op + ''; list += ''; } @@ -882,19 +898,19 @@ function dockerIpListRender(){ }); } -function dockerAddIpPool(){ +function dockerAddIpPool() { var address = $('input[name="address"]').val(); var netmask = $('input[name="netmask"]').val(); var gateway = $('input[name="gateway"]').val(); - dPost('docker_add_ip','', {address:address,netmask:netmask,gateway:gateway}, function(rdata){ + dPost('docker_add_ip', '', { address: address, netmask: netmask, gateway: gateway }, function(rdata) { var rdata = $.parseJSON(rdata.data); - showMsg(rdata.msg, function(){ + showMsg(rdata.msg, function() { dockerIpListRender(); - },{icon:rdata.status?1:2}) + }, { icon: rdata.status ? 1 : 2 }) }); } -function dockerIpList(){ +function dockerIpList() { var con = '
    \
    \ \ @@ -922,11 +938,11 @@ function dockerIpList(){ } // 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 += ''; +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, @@ -934,56 +950,56 @@ function repoLogin(){ area: '450px', closeBtn: 2, shadeClose: false, - content: '
    '+ - ''+ - '
    '+ - '
    Repository Type
    '+ - '
    Name:
    '+ - '
    Username:
    '+ - '
    Password:
    '+ - '
    Repository Name:
    '+ - '
    Namespaces:
    '+ - ''+ - '
    '+ - '
    '+ - '
    ', - success:function(){ - $('[name="dtype"]').change(function(e){ + 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'){ + if (docker_type == 'Other Repository') { $('.docker_content .line').show(); - }else{ + } else { $('.docker_content .line').filter(":lt(3)").show().end().filter(":gt(4)").hide(); } - }); - $('.login_aliyun').click(function(){ + }); + $('.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(); + 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 + user: user, + passwd: passwd, + registry: '', + repository_name: name, + hub_name: hub_name, + namespace: namespace }; - if($('[name="dtype"]').val() == 'Docker Repository'){ + if ($('[name="dtype"]').val() == 'Docker Repository') { args.registry = ''; - }else{ + } else { args.registry = registry; } console.log(obj); - dPost('docker_login', '', args, function(rdata){ + 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){ + layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + if (res.status) { repoListRender(); layer.close(layer_index); } @@ -995,14 +1011,13 @@ function repoLogin(){ } -function delRepo(address){ - safeMessage('退出','你将退出 ['+address+'],确定?',function(){ - dPost('docker_logout', '', - {registry:address}, - function(rdata){ +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) { + layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + if (rdata.status) { repoListRender(); } } @@ -1011,33 +1026,34 @@ function delRepo(address){ } -function repoListRender(){ - dPost('repo_list', '', {}, function(rdata){ +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; + 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 += '' + 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(){ + +function repoList() { var con = '
    \ \ @@ -1060,11 +1076,9 @@ function repoList(){ $(".soft-man-con").html(con); //login - $('#docker_login').click(function(){ + $('#docker_login').click(function() { repoLogin(); }); repoListRender(); -} - - +} \ No newline at end of file