15 lines
11 KiB
JavaScript
15 lines
11 KiB
JavaScript
import{g as L,r as R,W as U,b1 as W,k as I,D as O,a2 as P,bP as V,bQ as G,_ as A,J as E,t as r,n as i,l as u,z as oe,m as K,E as x,F as g,p as y,B as M,am as N,G as se,H as ne,ak as ae,aC as ie,aW as le,I as D,an as re,ca as de}from"./vendor/index.CRpmXtWV.js";import{x as X,_ as H,d as ce,R as ue,B as me}from"../index.D-NvtsOM.js";import{W as J}from"./ws-websocket.Bq7KFeli.js";import{l as pe}from"./neHost.BGWPtB0A.js";const fe=["id"],he=L({__name:"index",props:{id:{type:String,required:!0},hostId:{type:String,required:!0},cols:{type:Number,default:80},rows:{type:Number,default:40},disable:{type:Boolean,default:!1},initCmd:{type:[String,Boolean],default:!1}},emits:["connect","close","message"],setup(C,{expose:d,emit:B}){const o=new J,w=B,n=C,p=R(void 0),t=R(null);function _(e){if(!e)return;const l=new V.Terminal({cols:n.cols,rows:n.rows,lineHeight:1.2,fontSize:12,fontFamily:"Monaco, Menlo, Consolas, 'Courier New', monospace",theme:{background:"#000000"},cursorBlink:!0,cursorStyle:"block",scrollback:1e3,scrollSensitivity:15,tabStopWidth:4,disableStdin:n.disable});l.open(e);const f=new G.FitAddon;l.loadAddon(f),l.onData(s=>{o.send({requestId:`ssh_${n.hostId}`,type:"ssh",data:s})}),l.onResize(({cols:s,rows:h})=>{o.send({requestId:`ssh_resize_${n.hostId}`,type:"ssh_resize",data:{cols:s,rows:h}})});var a=new ResizeObserver(s=>{f.fit()});a.observe(e),t.value=l}function k(e){P(()=>{_(p.value),w("connect",{timeStamp:e.timeStamp,cols:t.value.cols,rows:t.value.rows,hostId:n.hostId,id:n.id}),typeof n.initCmd=="string"&&o.send({requestId:`ssh_${n.hostId}`,type:"ssh",data:`${n.initCmd}
|
|
`})})}function T(e){t.value!=null?t.value.write(`\x1B[31mdisconnected\x1B[m\r
|
|
`):p.value&&(p.value.style.background="#000",p.value.style.color="#ff4d4f",p.value.style.height="60%",p.value.innerText="disconnected")}function $(e){t.value!=null&&t.value.write(`\x1B[31mdisconnected\x1B[m\r
|
|
`),w("close",{code:e,hostId:n.hostId,id:n.id})}function c(e){w("message",e);const{code:l,requestId:f,data:a}=e;if(l===X){console.warn(e.msg);return}f&&t.value!=null&&t.value.write(a)}return U(()=>{if(n.hostId){const e={url:"/ws/ssh",params:{hostId:n.hostId,cols:n.cols,rows:n.rows},onmessage:c,onerror:T,onopen:k,onclose:$};o.connect(e)}}),W(()=>{o.close()}),d({send:e=>{o.send({requestId:`ssh_${n.hostId}`,type:"ssh",data:`${e}
|
|
`})}}),(e,l)=>(I(),O("div",{ref_key:"terminalDom",ref:p,id:C.id,class:"terminal"},null,8,fe))}}),_e=H(he,[["__scopeId","data-v-c5f73017"]]),ve={class:"terminal"},ye=["id"],we=L({__name:"index",props:{id:{type:String,required:!0},hostId:{type:String,required:!0},cols:{type:Number,default:120},rows:{type:Number,default:128},disable:{type:Boolean,default:!1},initCmd:{type:[String,Boolean],default:!1}},emits:["connect","close","message"],setup(C,{expose:d,emit:B}){const o=new J,w=B,n=C,p=R(void 0),t=R(null),_=A({text:"",history:[{value:"help"},{value:"quit"},{value:"list ver"},{value:"list lic"}]});function k(a,s){return s.value.toLowerCase().indexOf(a.toLowerCase())>=0}function T(a){if(a.key==="Enter")if(a.preventDefault(),a.shiftKey){const s=a.target,h=s.selectionStart,v=s.selectionEnd,b=s.value;s.value=b.substring(0,h)+`
|
|
`+b.substring(v),_.text=s.value,s.selectionStart=s.selectionEnd=h+1}else{if(o.state()!==WebSocket.OPEN){u.message.error("disconnected");return}const s=_.text.trim().replace(/\n/g,`\r
|
|
`);_.history.findIndex(v=>v.value===s)===-1&&_.history.push({value:s}),t.value.scrollToBottom(),t.value.writeln(s),o.send({requestId:`telnet_${n.hostId}`,type:"telnet",data:`${s}\r
|
|
`}),_.text=" ",["q","quit","exit"].includes(s)&&setTimeout(()=>{o.close()},1e3)}}function $(a){if(!a)return;const s=new V.Terminal({lineHeight:1.2,fontSize:12,fontFamily:"Monaco, Menlo, Consolas, 'Courier New', monospace",theme:{background:"#000000"},cursorBlink:!0,cursorStyle:"block",scrollback:1e3,scrollSensitivity:15,tabStopWidth:4,disableStdin:n.disable});s.open(a);const h=new G.FitAddon;s.loadAddon(h),s.onResize(({cols:b,rows:q})=>{o.send({requestId:`telnet_resize_${n.hostId}`,type:"telnet_resize",data:{cols:b,rows:q}})});var v=new ResizeObserver(b=>{h.fit()});v.observe(a),t.value=s}function c(a){P(()=>{$(p.value),w("connect",{timeStamp:a.timeStamp,cols:t.value.cols,rows:t.value.rows,hostId:n.hostId,id:n.id}),typeof n.initCmd=="string"&&o.send({requestId:`telnet_${n.hostId}`,type:"telnet",data:`${n.initCmd}\r
|
|
`})})}function e(a){console.error("wsError",a),t.value!=null?t.value.write(`\x1B[31mdisconnected\x1B[m\r
|
|
`):p.value&&(p.value.style.background="#000",p.value.style.color="#ff4d4f",p.value.style.height="60%",p.value.innerText="disconnected")}function l(a){t.value!=null&&t.value.write(`\x1B[31mdisconnected\x1B[m\r
|
|
`),w("close",{code:a,hostId:n.hostId,id:n.id})}function f(a){w("message",a);const{code:s,requestId:h,data:v}=a;if(s===X){console.warn(a.msg);return}h&&t.value!=null&&(/[\r\n]$/.test(v)?t.value.writeln(v.trim().replace(/\n/g,`\r
|
|
`)):t.value.write(v.replace(/\n/g,`\r
|
|
`)))}return U(()=>{if(n.hostId){const a={url:"/ws/telnet",params:{hostId:n.hostId,cols:n.cols,rows:n.rows},onmessage:f,onerror:e,onopen:c,onclose:l};o.connect(a)}}),W(()=>{o.close()}),d({send:a=>{o.send({requestId:`telnet_${n.hostId}`,type:"telnet",data:`${a}\r
|
|
`})}}),(a,s)=>{const h=u.Textarea,v=u.AutoComplete;return I(),O("div",ve,[E("div",{ref_key:"terminalDom",ref:p,style:{height:"calc(100% - 36px)"},id:C.id},null,8,ye),r(v,{value:_.text,"onUpdate:value":s[0]||(s[0]=b=>_.text=b),"dropdown-match-select-width":500,style:{width:"100%"},options:_.history,"filter-option":k,onKeydown:T},{default:i(()=>[r(h,{"auto-size":{minRows:1,maxRows:6},placeholder:"Execute command. Shift+Enter to line feed, Enter to send"})]),_:1},8,["value","options"])])}}}),ge=H(we,[["__scopeId","data-v-3e73673e"]]),be={class:"pane-box"},xe={key:2},Ie={style:{"text-align":"center"}},Se=L({__name:"index",setup(C){const{t:d}=ce(),B=oe(),o=A({show:!1,loading:!1,params:{pageNum:1,pageSize:20},total:0,data:[]});function w(c){if(!o.loading){if(o.loading=!0,c&&(o.params.pageNum=c),o.data.length>=o.total&&o.total!==0){o.loading=!1;return}pe(re(o.params)).then(e=>{e.code===ue&&Array.isArray(e.rows)&&(o.total=e.total,o.data=o.data.concat(e.rows),o.data.length<o.total&&(o.params.pageNum+=1)),o.loading=!1})}}function n(){o.loading||(o.show=!0,w(1))}function p(c){const e=`${Date.now()}`;t.panes.push({id:e,status:!1,host:c}),t.activeKey=e}const t=A({activeKey:"0",panes:[{id:"0",host:{hostId:"0",title:d("views.tool.terminal.start"),type:"0"},status:!0}]});function _(c){const{id:e,timeStamp:l}=c,f=l/1e3,a=t.panes.find(s=>s.id===e);a&&(a.status=!0,a.connectStamp=me(f))}function k(c){const{id:e}=c,l=t.panes.find(f=>f.id===e);l&&(l.status=!1)}function T(c){if(c==="new"&&B.push({name:"NeHost_2135"}),c==="reload"){const e=t.panes.findIndex(l=>l.id===t.activeKey);if(e){const l=t.panes[e];u.Modal.confirm({title:d("common.tipTitle"),content:d("views.tool.terminal.reloadTip",{num:`${l.host.hostType} - ${l.host.title}`}),onOk(){t.panes.splice(e,1),l.host&&p(l.host)}})}}c==="current"&&$(t.activeKey),c==="other"&&u.Modal.confirm({title:d("common.tipTitle"),content:d("views.tool.terminal.otherTip"),onOk(){o.show=!1,t.panes=t.panes.filter(e=>e.id==="0"||e.id===t.activeKey),t.activeKey=t.activeKey}}),c==="all"&&u.Modal.confirm({title:d("common.tipTitle"),content:d("views.tool.terminal.allTip"),onOk(){o.show=!1,t.panes.splice(1),t.activeKey="0"}})}function $(c){const e=t.panes.findIndex(f=>f.id===c);if(e===-1)return;const l=t.panes[e];u.Modal.confirm({title:d("common.tipTitle"),content:d("views.tool.terminal.closeTip",{num:`${l.host.hostType} - ${l.host.title}`}),onOk(){t.panes.splice(e,1),t.activeKey=t.panes[e-1].id}})}return(c,e)=>{const l=u.Badge,f=u.Button,a=u.Result,s=de,h=u.Card,v=u.ListItem,b=u.List,q=u.TabPane,Q=ie,F=u.Tooltip,j=le,z=u.MenuItem,Y=u.Menu,Z=u.Dropdown,ee=u.Space,te=u.Tabs;return I(),K(y(ae),null,{default:i(()=>[r(h,{bordered:!1,size:"small","body-style":{padding:"12px"}},{default:i(()=>[r(te,{class:"terminal-tabs","hide-add":"",size:"small","tab-position":"top",type:"editable-card","tab-bar-gutter":8,"tab-bar-style":{margin:"0"},activeKey:t.activeKey,"onUpdate:activeKey":e[4]||(e[4]=m=>t.activeKey=m),onEdit:e[5]||(e[5]=m=>$(m))},{rightExtra:i(()=>[r(ee,{size:8,align:"center"},{default:i(()=>[r(F,{placement:"topRight"},{title:i(()=>[x(g(y(d)("views.tool.terminal.new")),1)]),default:i(()=>[r(f,{type:"default",shape:"circle",size:"small",onClick:e[2]||(e[2]=m=>T("new"))},{icon:i(()=>[r(Q)]),_:1})]),_:1}),M(E("div",null,[r(F,{placement:"topRight"},{title:i(()=>[x(g(y(d)("views.tool.terminal.more")),1)]),default:i(()=>[r(Z,{trigger:"click",placement:"bottomRight"},{overlay:i(()=>[r(Y,{onClick:e[3]||(e[3]=({key:m})=>T(m))},{default:i(()=>[r(z,{key:"reload"},{default:i(()=>[x(g(y(d)("views.tool.terminal.reload")),1)]),_:1}),r(z,{key:"current"},{default:i(()=>[x(g(y(d)("views.tool.terminal.current")),1)]),_:1}),r(z,{key:"other"},{default:i(()=>[x(g(y(d)("views.tool.terminal.other")),1)]),_:1}),r(z,{key:"all"},{default:i(()=>[x(g(y(d)("views.tool.terminal.all")),1)]),_:1})]),_:1})]),default:i(()=>[r(f,{type:"ghost",shape:"circle",size:"small"},{icon:i(()=>[r(j)]),_:1})]),_:1})]),_:1})],512),[[N,t.activeKey!=="0"]])]),_:1})]),default:i(()=>[(I(!0),O(ne,null,se(t.panes,m=>(I(),K(q,{key:m.id,closable:t.panes.length>1},{tab:i(()=>[r(l,{status:m.status?"success":"error",text:m.host.title},null,8,["status","text"])]),default:i(()=>[E("div",be,[m.id!=="0"&&m.host.hostType==="ssh"?(I(),K(_e,{key:0,id:m.id,hostId:m.host.hostId,onConnect:_,onClose:k},null,8,["id","hostId"])):D("",!0),m.id!=="0"&&m.host.hostType==="telnet"?(I(),K(ge,{key:1,id:m.id,hostId:m.host.hostId,"init-cmd":"help",disable:!0,onConnect:_,onClose:k},null,8,["id","hostId"])):D("",!0),m.id==="0"?(I(),O("div",xe,[M(r(a,{title:y(d)("views.tool.terminal.hostSelectTitle")},{extra:i(()=>[r(f,{key:"hostState",type:"primary",onClick:e[0]||(e[0]=S=>n())},{default:i(()=>[x(g(y(d)("views.tool.terminal.hostSelectShow")),1)]),_:1})]),_:1},8,["title"]),[[N,t.activeKey==="0"&&!o.show]]),M(r(b,{header:y(d)("views.tool.terminal.hostSelectHeader"),grid:{gutter:16,column:4,lg:4,md:2,xs:1},"data-source":o.data,"row-key":"hostId"},{loadMore:i(()=>[E("div",Ie,[r(f,{onClick:e[1]||(e[1]=S=>w()),loading:o.loading},{default:i(()=>[x(g(y(d)("views.tool.terminal.hostSelectMore",{num:o.total-o.data.length})),1)]),_:1},8,["loading"])])]),renderItem:i(({item:S})=>[r(v,null,{default:i(()=>[r(h,{size:"small",title:S.title},{extra:i(()=>[r(f,{type:"primary",shape:"round",size:"small",onClick:Ce=>p(S)},{icon:i(()=>[r(s)]),default:i(()=>[x(" "+g(S.hostType.toUpperCase()),1)]),_:2},1032,["onClick"])]),default:i(()=>[E("div",null,g(`${S.addr}:${S.port}`),1)]),_:2},1032,["title"])]),_:2},1024)]),_:1},8,["header","data-source"]),[[N,t.activeKey==="0"&&o.show]])])):D("",!0)])]),_:2},1032,["closable"]))),128))]),_:1},8,["activeKey"])]),_:1})]),_:1})}}}),Ee=H(Se,[["__scopeId","data-v-5a5271a0"]]);export{Ee as default};
|