File manager - Edit - /home/kridsana/webapp.cm.in.th/663012801/u66301280015/config/cisco_cli_generator_v2.html
Back
<!DOCTYPE html> <html lang="th"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <title>Cisco CLI Generator</title> <style> :root { --bg-main: #0f172a; --bg-card: #1e293b; --accent: #38bdf8; --accent-hover: #0ea5e9; --text-main: #f1f5f9; --text-dim: #94a3b8; --border: #334155; --input-bg: #0f172a; --code-bg: #000000; --radius: 12px; --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } * { box-sizing: border-box; margin: 0; padding: 0; } body { background-color: var(--bg-main); color: var(--text-main); font-family: var(--font-sans); line-height: 1.6; } .wrap { max-width: 1000px; margin: 2rem auto; padding: 2rem; background: var(--bg-card); border-radius: var(--radius); box-shadow: 0 10px 25px -5px rgba(0,0,0,0.3); border: 1px solid var(--border); } .tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--border); } .tab { padding: 8px 16px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; cursor: pointer; background: transparent; color: var(--text-dim); transition: all 0.2s ease; font-weight: 500; } .tab:hover { border-color: var(--accent); color: var(--text-main); } .tab.active { background: var(--accent); color: #000; border-color: var(--accent); } .section { display: none; gap: 1.5rem; flex-direction: column; animation: fadeIn 0.3s ease; } .section.show { display: flex; } @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } } .row { display: grid; gap: 15px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } lbl { font-size: 13px; color: var(--accent); display: block; margin-bottom: 6px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; } input, select, textarea { width: 100%; padding: 10px 14px; border: 1px solid var(--border); border-radius: 8px; font-size: 14px; background: var(--input-bg); color: var(--text-main); transition: border-color 0.2s; } input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(56,189,248,0.2); } .gen-btn { padding: 12px 24px; background: var(--accent); border: none; border-radius: 8px; font-size: 14px; cursor: pointer; font-weight: 700; color: #000; text-transform: uppercase; transition: transform 0.1s, background 0.2s; } .gen-btn:hover { background: var(--accent-hover); transform: translateY(-1px); } .gen-btn:active { transform: translateY(0); } .add-btn { padding: 8px 16px; font-size: 13px; border: 1px dashed var(--text-dim); border-radius: 8px; background: rgba(255,255,255,0.05); cursor: pointer; color: var(--text-main); margin-top: 5px; } .add-btn:hover { border-color: var(--accent); color: var(--accent); } .del-btn { width: 34px; height: 34px; border: 1px solid #ef4444; border-radius: 8px; background: rgba(239,68,68,0.1); cursor: pointer; color: #ef4444; display: flex; align-items: center; justify-content: center; } .del-btn:hover { background: #ef4444; color: white; } .out-wrap { position: relative; margin-top: 1rem; } .out { font-family: 'Fira Code', 'Courier New', monospace; font-size: 13px; background: var(--code-bg); border: 1px solid var(--border); border-radius: 10px; padding: 1.5rem; white-space: pre; overflow-x: auto; min-height: 100px; color: #10b981; line-height: 1.6; box-shadow: inset 0 2px 10px rgba(0,0,0,0.5); } .copy-btn { position: absolute; top: 12px; right: 12px; padding: 6px 14px; font-size: 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg-card); cursor: pointer; color: var(--text-main); } .copy-btn:hover { background: var(--accent); color: #000; border-color: var(--accent); } .sect-label { font-size: 14px; font-weight: 700; color: var(--text-main); padding: 10px 0; border-bottom: 2px solid var(--accent); margin: 1.5rem 0 0.5rem 0; display: inline-block; } .hint { font-size: 12px; color: var(--text-dim); background: rgba(255,255,255,0.03); padding: 10px; border-left: 3px solid var(--accent); border-radius: 4px; } .ck-row { margin: 10px 0; display: flex; align-items: center; gap: 10px; } input[type=checkbox] { width: 18px; height: 18px; cursor: pointer; accent-color: var(--accent); } </style> </head> <body> <div class="wrap"> <div class="tabs"> <button class="tab active" onclick="T('pc')">PC</button> <button class="tab" onclick="T('router')">Router</button> <button class="tab" onclick="T('switch')">Switch</button> <button class="tab" onclick="T('rip')">RIPv2</button> <button class="tab" onclick="T('vlan')">VLAN</button> <button class="tab" onclick="T('dot1q')">Dot1Q</button> <button class="tab" onclick="T('mgmt')">Management VLAN</button> <button class="tab" onclick="T('dhcp')">DHCP</button> <button class="tab" onclick="T('static')">Static Route</button> <button class="tab" onclick="T('ssh')">SSH</button> <button class="tab" onclick="T('reset')">Reset/Clear</button> </div> <!-- PC --> <div id="s-pc" class="section show"> <div class="row"> <div><lbl>IP Address</lbl><input id="pc-ip" placeholder="192.168.1.10"/></div> <div><lbl>Subnet Mask</lbl><input id="pc-mask" placeholder="255.255.255.0"/></div> <div><lbl>Default Gateway</lbl><input id="pc-gw" placeholder="192.168.1.1"/></div> <div><lbl>DNS (optional)</lbl><input id="pc-dns" placeholder="8.8.8.8"/></div> </div> <button class="gen-btn" onclick="genPC()">Generate CLI</button> <div class="out-wrap"><div id="o-pc" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-pc')">Copy</button></div> </div> <!-- Router --> <div id="s-router" class="section"> <div class="row"> <div><lbl>Hostname</lbl><input id="r-h" placeholder="R1"/></div> <div><lbl>Interface</lbl><input id="r-i" placeholder="g0/0"/></div> <div><lbl>IP Address</lbl><input id="r-ip" placeholder="192.168.1.1"/></div> <div><lbl>Subnet Mask</lbl><input id="r-m" placeholder="255.255.255.0"/></div> <div><lbl>Enable Secret</lbl><input id="r-p" placeholder="cisco"/></div> </div> <button class="gen-btn" onclick="genRouter()">Generate CLI</button> <div class="out-wrap"><div id="o-router" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-router')">Copy</button></div> </div> <!-- Switch --> <div id="s-switch" class="section"> <div class="row"> <div><lbl>Hostname</lbl><input id="sw-h" placeholder="SW1"/></div> <div><lbl>Management IP (VLAN 1)</lbl><input id="sw-ip" placeholder="192.168.1.2"/></div> <div><lbl>Subnet Mask</lbl><input id="sw-m" placeholder="255.255.255.0"/></div> <div><lbl>Default Gateway</lbl><input id="sw-gw" placeholder="192.168.1.1"/></div> <div><lbl>Enable Secret</lbl><input id="sw-p" placeholder="cisco"/></div> </div> <button class="gen-btn" onclick="genSwitch()">Generate CLI</button> <div class="out-wrap"><div id="o-switch" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-switch')">Copy</button></div> </div> <!-- RIPv2 --> <div id="s-rip" class="section"> <div class="hint">network = ประกาศ network ที่ต่ออยู่กับ router / passive-interface = ไม่ส่ง RIP Update ออก interface นั้น แต่ยังประกาศ network อยู่</div> <div class="row"> <div><lbl>Hostname</lbl><input id="rip-h" placeholder="R1"/></div> </div> <div class="sect-label">Networks (ใส่ได้สูงสุด 6 วง)</div> <div id="rip-nets"></div> <button class="add-btn" onclick="addRipNet()">+ Add network</button> <div class="sect-label">Passive Interface (ขาที่เชื่อมกับ Switch / End Device)</div> <div id="rip-passives"></div> <button class="add-btn" onclick="addRipPassive()">+ Add passive-interface</button> <div class="ck-row"> <input type="checkbox" id="rip-noauto" checked/> <label for="rip-noauto">no auto-summary</label> </div> <button class="gen-btn" onclick="genRIP()">Generate CLI</button> <div class="out-wrap"><div id="o-rip" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-rip')">Copy</button></div> </div> <!-- VLAN --> <div id="s-vlan" class="section"> <div class="hint">สร้าง VLAN + กำหนด access port (รองรับ interface range) + trunk port</div> <div class="row"> <div><lbl>Hostname (Switch)</lbl><input id="vl-h" placeholder="SW1"/></div> </div> <div class="sect-label">VLAN List</div> <div id="vlan-list"></div> <button class="add-btn" onclick="addVlan()">+ Add VLAN</button> <div class="sect-label">Trunk Ports (interface ที่ต่อกับ Switch หรือ Router)</div> <div id="trunk-list"></div> <button class="add-btn" onclick="addTrunk()">+ Add trunk port</button> <button class="gen-btn" onclick="genVLAN()">Generate CLI</button> <div class="out-wrap"><div id="o-vlan" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-vlan')">Copy</button></div> </div> <!-- Dot1Q --> <div id="s-dot1q" class="section"> <div class="hint">Router-on-Stick: สร้าง sub-interface + encapsulation dot1Q สำหรับแต่ละ VLAN</div> <div class="row"> <div><lbl>Hostname</lbl><input id="dq-h" placeholder="R1"/></div> <div><lbl>Physical Interface</lbl><input id="dq-i" placeholder="g0/0"/></div> </div> <div class="sect-label">Sub-interfaces</div> <div id="dq-list"></div> <button class="add-btn" onclick="addDQ()">+ Add sub-interface</button> <button class="gen-btn" onclick="genDot1Q()">Generate CLI</button> <div class="out-wrap"><div id="o-dot1q" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-dot1q')">Copy</button></div> </div> <!-- Management VLAN --> <div id="s-mgmt" class="section"> <div class="hint">ตั้งค่า Management VLAN: SVI บน Switch + Sub-interface บน Router + Default Gateway + VTY</div> <div class="sect-label">Router config</div> <div class="row"> <div><lbl>Router Hostname</lbl><input id="mg-rh" placeholder="R1"/></div> <div><lbl>Physical Interface</lbl><input id="mg-ri" placeholder="g0/0"/></div> <div><lbl>Management VLAN ID</lbl><input id="mg-vid" placeholder="99"/></div> <div><lbl>Gateway IP</lbl><input id="mg-gip" placeholder="192.168.99.1"/></div> <div><lbl>Subnet Mask</lbl><input id="mg-gm" placeholder="255.255.255.0"/></div> </div> <button class="gen-btn" onclick="genMgmtRouter()">Generate Router CLI</button> <div class="out-wrap"><div id="o-mgmt-r" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-mgmt-r')">Copy</button></div> <div class="sect-label">Switch config (ทำซ้ำทุก switch)</div> <div class="row"> <div><lbl>Switch Hostname</lbl><input id="mg-sh" placeholder="SW1"/></div> <div><lbl>VLAN ID</lbl><input id="mg-svid" placeholder="99"/></div> <div><lbl>VLAN Name (optional)</lbl><input id="mg-svname" placeholder="MANAGEMENT"/></div> <div><lbl>SVI IP Address</lbl><input id="mg-sip" placeholder="192.168.99.2"/></div> <div><lbl>Subnet Mask</lbl><input id="mg-sm" placeholder="255.255.255.0"/></div> <div><lbl>Default Gateway</lbl><input id="mg-sgw" placeholder="192.168.99.1"/></div> <div><lbl>VTY Password</lbl><input id="mg-vp" placeholder="cisco"/></div> </div> <button class="gen-btn" onclick="genMgmtSwitch()">Generate Switch CLI</button> <div class="out-wrap"><div id="o-mgmt-s" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-mgmt-s')">Copy</button></div> </div> <!-- DHCP --> <div id="s-dhcp" class="section"> <div class="hint">DHCP Server บน Router: สร้าง pool + excluded address</div> <div class="row"> <div><lbl>Hostname</lbl><input id="dh-h" placeholder="R1"/></div> <div><lbl>Pool Name</lbl><input id="dh-n" placeholder="LAN_POOL"/></div> <div><lbl>Network</lbl><input id="dh-net" placeholder="192.168.1.0"/></div> <div><lbl>Subnet Mask</lbl><input id="dh-m" placeholder="255.255.255.0"/></div> <div><lbl>Default Gateway</lbl><input id="dh-gw" placeholder="192.168.1.1"/></div> <div><lbl>DNS Server</lbl><input id="dh-dns" placeholder="8.8.8.8"/></div> <div><lbl>Excluded Start IP</lbl><input id="dh-xs" placeholder="192.168.1.1"/></div> <div><lbl>Excluded End IP</lbl><input id="dh-xe" placeholder="192.168.1.10"/></div> <div><lbl>Lease Days (optional)</lbl><input id="dh-ld" placeholder="1"/></div> </div> <button class="gen-btn" onclick="genDHCP()">Generate CLI</button> <div class="out-wrap"><div id="o-dhcp" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-dhcp')">Copy</button></div> </div> <!-- Static Route --> <div id="s-static" class="section"> <div class="row"> <div><lbl>Hostname</lbl><input id="st-h" placeholder="R1"/></div> </div> <div class="sect-label">Routes</div> <div id="st-list"></div> <button class="add-btn" onclick="addST()">+ Add route</button> <button class="gen-btn" onclick="genStatic()">Generate CLI</button> <div class="out-wrap"><div id="o-static" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-static')">Copy</button></div> </div> <!-- SSH --> <div id="s-ssh" class="section"> <div class="hint">ตั้งค่า SSH v2 บน Router หรือ Switch: สร้าง RSA key, local user, line vty</div> <div class="row"> <div><lbl>Hostname</lbl><input id="ssh-h" placeholder="R1"/></div> <div><lbl>Domain Name</lbl><input id="ssh-d" placeholder="cisco.com"/></div> <div><lbl>Username</lbl><input id="ssh-u" placeholder="admin"/></div> <div><lbl>Password</lbl><input id="ssh-p" placeholder="cisco123"/></div> <div><lbl>Privilege Level</lbl><select id="ssh-priv"><option value="15" selected>15 (full)</option><option value="1">1</option></select></div> <div><lbl>RSA Key Size</lbl><select id="ssh-rsa"><option>1024</option><option selected>2048</option></select></div> <div><lbl>VTY Lines</lbl><select id="ssh-vty"><option value="0 4" selected>0 4 (5 lines)</option><option value="0 15">0 15 (16 lines)</option></select></div> </div> <div class="ck-row"> <input type="checkbox" id="ssh-console"/> <label for="ssh-console">ตั้ง console password ด้วย</label> <input id="ssh-cp" placeholder="cisco" style="width:120px;margin-left:4px"/> </div> <button class="gen-btn" onclick="genSSH()">Generate CLI</button> <div class="out-wrap"><div id="o-ssh" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-ssh')">Copy</button></div> </div> <!-- Reset/Clear --> <div id="s-reset" class="section"> <div class="hint">คำสั่งลบ config และ VLAN data บน Switch แล้ว reload</div> <div class="row"> <div><lbl>Device Type</lbl><select id="rst-type"><option value="switch">Switch</option><option value="router">Router</option></select></div> </div> <button class="gen-btn" onclick="genReset()">Generate CLI</button> <div class="out-wrap"><div id="o-reset" class="out">— กด Generate —</div><button class="copy-btn" onclick="cp('o-reset')">Copy</button></div> </div> </div> <script> const tabs=['pc','router','switch','rip','vlan','dot1q','mgmt','dhcp','static','ssh','reset']; function T(id){ document.querySelectorAll('.tab').forEach((t,i)=>t.classList.toggle('active',tabs[i]===id)); document.querySelectorAll('.section').forEach(s=>s.classList.remove('show')); document.getElementById('s-'+id).classList.add('show'); } function v(id){return(document.getElementById(id)||{}).value||'';} function setO(id,txt){document.getElementById(id).textContent=txt||'— ข้อมูลไม่ครบ —';} async function cp(id){ const t=document.getElementById(id).textContent; if(t.startsWith('—'))return; await navigator.clipboard.writeText(t); const btn=document.querySelector(`[onclick="cp('${id}')"]`); const o=btn.textContent;btn.textContent='Copied!';setTimeout(()=>btn.textContent=o,1500); } function mkRow(container,cols,id,vals){ const d=document.createElement('div'); d.style.cssText=`display:grid;grid-template-columns:${cols} 28px;gap:6px;align-items:center;margin-bottom:5px`; d.id='row-'+id;d.innerHTML=vals+'<button class="del-btn" onclick="this.parentElement.remove()">×</button>'; document.getElementById(container).appendChild(d); } let rc=0; function addRipNet(val=''){ rc++;mkRow('rip-nets','1fr','rn'+rc,`<input placeholder="Network address ที่ Router ถืออยู่" id="rn${rc}" value="${val}"/>`); } let rpc=0; function addRipPassive(val=''){ rpc++;mkRow('rip-passives','1fr','rp'+rpc,`<input placeholder="g0/0" id="rpass${rpc}" value="${val}"/>`); } function genRIP(){ const h=v('rip-h'); const nets=[...document.querySelectorAll('[id^="rn"]')].map(e=>e.value).filter(Boolean); if(!nets.length)return setO('o-rip',''); let c='enable\nconfigure terminal\n'; if(h)c+=`hostname ${h}\n`; c+='\nrouter rip\nversion 2\n'; if(document.getElementById('rip-noauto').checked)c+='no auto-summary\n'; nets.forEach(n=>c+=`network ${n}\n`); const passives=[...document.querySelectorAll('[id^="rpass"]')].map(e=>e.value).filter(Boolean); passives.forEach(p=>c+=`passive-interface ${p}\n`); c+='exit\nexit\n\nwrite memory'; setO('o-rip',c); } let vc=0; function addVlan(vid='',vname='',port=''){ vc++; mkRow('vlan-list','80px 1fr 1fr','vl'+vc, `<input placeholder="ID (1-4094)" id="vv${vc}" value="${vid}" style="text-align:center"/> <input placeholder="ชื่อ VLAN" id="vn${vc}" value="${vname}"/> <input placeholder="Port fa0/1 หรือ fa0/1-3,fa0/5" id="vp${vc}" value="${port}"/>`); } let tc=0; function addTrunk(port='',native='',allowed=''){ tc++; mkRow('trunk-list','1fr 80px 1fr','tr'+tc, `<input placeholder="g0/1" id="tp${tc}" value="${port}"/> <input placeholder="native vlan" id="tn${tc}" value="${native}"/> <input placeholder="allowed vlans (e.g. 10,20,99)" id="ta${tc}" value="${allowed}"/>`); } function genVLAN(){ const h=v('vl-h'); let c='enable\nconfigure terminal\n'; if(h)c+=`hostname ${h}\n`; for(let i=1;i<=vc;i++){ const row=document.getElementById('row-vl'+i);if(!row)continue; const vid=v('vv'+i),vname=v('vn'+i),port=v('vp'+i); if(!vid)continue; c+=`\nvlan ${vid}`; if(vname)c+=`\nname ${vname}`; c+='\nexit'; if(port){ const isRange=port.includes('-')||port.includes(','); c+=`\ninterface ${isRange?'range ':' '}${port}\nswitchport mode access\nswitchport access vlan ${vid}\nno shutdown\nexit`; } } for(let i=1;i<=tc;i++){ const row=document.getElementById('row-tr'+i);if(!row)continue; const port=v('tp'+i),native=v('tn'+i),allowed=v('ta'+i); if(!port)continue; c+=`\ninterface ${port}\nswitchport mode trunk`; if(native)c+=`\nswitchport trunk native vlan ${native}`; if(allowed)c+=`\nswitchport trunk allowed vlan ${allowed}`; c+='\nno shutdown\nexit'; } c+='\nexit\nwrite memory'; setO('o-vlan',c); } let dqc=0; function addDQ(vid='',ip='',mask=''){ dqc++; mkRow('dq-list','80px 1fr 1fr','dq'+dqc, `<input placeholder="VLAN ID" id="dqv${dqc}" value="${vid}" style="text-align:center"/> <input placeholder="Default gateway IP" id="dqi${dqc}" value="${ip}"/> <input placeholder="Subnet mask" id="dqm${dqc}" value="${mask}"/>`); } function genDot1Q(){ const h=v('dq-h').trim(),iface=v('dq-i').trim(); if(!iface){setO('o-dot1q','');return;} let c='enable\nconfigure terminal\n'; if(h)c+=`hostname ${h}\n`; c+=`\ninterface ${iface}\nno ip address\nno shutdown\nexit\n`; const used=new Set(); for(let i=1;i<=dqc;i++){ const row=document.getElementById('row-dq'+i);if(!row)continue; const vid=v('dqv'+i).trim(),ip=v('dqi'+i).trim(),mask=v('dqm'+i).trim(); if(!vid||!ip||!mask||used.has(vid))continue; used.add(vid); c+=`\ninterface ${iface}.${vid}\nencapsulation dot1Q ${vid}\nip address ${ip} ${mask}\nexit\n`; } c+='\nexit\nwrite memory'; setO('o-dot1q',c); } // FIXED: genMgmt now includes VLAN name for both router and switch sections function genMgmt(){ } function genMgmtRouter(){ const rh=v('mg-rh'),ri=v('mg-ri'),vid=v('mg-vid'),gip=v('mg-gip'),gm=v('mg-gm'); if(!ri||!vid||!gip||!gm)return setO('o-mgmt-r',''); let c='enable\nconfigure terminal\n'; if(rh)c+=`hostname ${rh}\n`; c+=`\ninterface ${ri}\nno ip address\nno shutdown\nexit\n`; c+=`\ninterface ${ri}.${vid}\nencapsulation dot1Q ${vid}\nip address ${gip} ${gm}\nno shutdown\nexit\n`; c+='\nexit\nwrite memory'; setO('o-mgmt-r',c); } function genMgmtSwitch(){ const sh=v('mg-sh'),svid=v('mg-svid'),svname=v('mg-svname'),sip=v('mg-sip'),sm=v('mg-sm'),sgw=v('mg-sgw'),vp=v('mg-vp'); if(!sh||!svid||!sip||!sm)return setO('o-mgmt-s',''); let c='enable\nconfigure terminal\n'; c+=`hostname ${sh}\n`; c+=`\nvlan ${svid}`; if(svname)c+=`\n name ${svname}`; c+=`\nexit\n`; c+=`\ninterface vlan ${svid}\nip address ${sip} ${sm}\nno shutdown\nexit\n`; if(sgw)c+=`\nip default-gateway ${sgw}\n`; if(vp)c+=`\nline vty 0 4\n password ${vp}\n login\n exit\n`; c+='\nexit\nwrite memory'; setO('o-mgmt-s',c); } function genDHCP(){ const h=v('dh-h'),n=v('dh-n'),net=v('dh-net'),m=v('dh-m'),gw=v('dh-gw'),dns=v('dh-dns'),xs=v('dh-xs'),xe=v('dh-xe'),ld=v('dh-ld'); if(!n||!net||!m)return setO('o-dhcp',''); let c='enable\nconfigure terminal\n'; if(h)c+=`hostname ${h}\n`; if(xs&&xe)c+=`\nip dhcp excluded-address ${xs} ${xe}`; else if(xs)c+=`\nip dhcp excluded-address ${xs}`; c+=`\n\nip dhcp pool ${n}\n network ${net} ${m}`; if(gw)c+=`\ndefault-router ${gw}`; if(dns)c+=`\ndns-server ${dns}`; if(ld)c+=`\nlease ${ld}`; c+='\nexit\nexit\nwrite memory'; setO('o-dhcp',c); } let stc=0; function addST(net='',mask='',nh=''){ stc++; mkRow('st-list','1fr 1fr 1fr','st'+stc, `<input placeholder="Network address เป้าหมาย" id="stn${stc}" value="${net}"/> <input placeholder="Subnet mask เป้าหมาย" id="stm${stc}" value="${mask}"/> <input placeholder="Next-hop IP" id="sth${stc}" value="${nh}"/>`); } function genStatic(){ const h=v('st-h'); let c='enable\nconfigure terminal\n'; if(h)c+=`hostname ${h}\n`; let hasRoute=false; for(let i=1;i<=stc;i++){ const row=document.getElementById('row-st'+i);if(!row)continue; const net=v('stn'+i),mask=v('stm'+i),nh=v('sth'+i); if(!net||!mask||!nh)continue; c+=`\nip route ${net} ${mask} ${nh}`;hasRoute=true; } if(!hasRoute)return setO('o-static',''); c+='\nexit\nwrite memory'; setO('o-static',c); } function genSSH(){ const h=v('ssh-h'),d=v('ssh-d'),u=v('ssh-u'),p=v('ssh-p'),priv=v('ssh-priv'),rsa=v('ssh-rsa'),vty=v('ssh-vty'); if(!h||!d)return setO('o-ssh',''); let c='enable\nconfigure terminal\n'; c+=`hostname ${h}\n`; c+=`ip domain-name ${d}\n`; if(u&&p)c+=`\nusername ${u} privilege ${priv} secret ${p}\n`; c+=`\ncrypto key generate rsa\n`; c+=` ${rsa}\n`; c+=`\nip ssh version 2\n`; c+=`\nline vty ${vty}\n transport input ssh\n login local\n exit\n`; if(document.getElementById('ssh-console').checked){ const cp2=v('ssh-cp'); c+=`\nline console 0\n password ${cp2||'cisco'}\n login\n exit\n`; } c+='\nservice password-encryption\nwrite memory'; setO('o-ssh',c); } function genPC(){ const ip=v('pc-ip'),mask=v('pc-mask'),gw=v('pc-gw'),dns=v('pc-dns'); if(!ip||!mask||!gw)return setO('o-pc',''); let c='> Desktop > IP Configuration\n'; c+=` IP Address : ${ip}\n Subnet Mask : ${mask}\n Default GW : ${gw}`; if(dns)c+=`\n DNS Server : ${dns}`; setO('o-pc',c); } function genRouter(){ const h=v('r-h'),i=v('r-i'),ip=v('r-ip'),m=v('r-m'),p=v('r-p'); if(!i||!ip||!m)return setO('o-router',''); let c='enable\nconfigure terminal\n'; if(h)c+=`hostname ${h}\n`; if(p)c+=`enable secret ${p}\n`; c+=`\ninterface ${i}\nip address ${ip} ${m}\nno shutdown\nexit\nexit\nwrite memory`; setO('o-router',c); } function genSwitch(){ const h=v('sw-h'),ip=v('sw-ip'),m=v('sw-m'),gw=v('sw-gw'),p=v('sw-p'); if(!h)return setO('o-switch',''); let c='enable\nconfigure terminal\n'; c+=`hostname ${h}\n`; if(p)c+=`enable secret ${p}\n`; if(ip&&m)c+=`\ninterface vlan 1\nip address ${ip} ${m}\nno shutdown\nexit\n`; if(gw)c+=`\nip default-gateway ${gw}\n`; c+='\nexit\nwrite memory'; setO('o-switch',c); } function genReset(){ const t=v('rst-type'); let c='enable\n'; if(t==='switch'){ c+='show flash\n\ndelete flash:vlan.dat\n'; c+='delete flash:config.text\n'; c+='\nreload\n'; } else { c+='write erase\n\nreload\n'; } setO('o-reset',c); } </script> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.46 |
proxy
|
phpinfo
|
Settings