Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
node_modules /
npm /
lib /
commands /
Delete
Unzip
Name
Size
Permission
Date
Action
access.js
6.04
KB
-rw-r--r--
2024-07-09 00:04
adduser.js
1.29
KB
-rw-r--r--
2024-05-09 19:00
audit.js
3.15
KB
-rw-r--r--
2024-07-09 00:04
bugs.js
847
B
-rw-r--r--
2023-10-14 15:00
cache.js
7.12
KB
-rw-r--r--
2025-03-27 09:29
ci.js
4.22
KB
-rw-r--r--
2024-07-09 00:04
completion.js
8.9
KB
-rw-r--r--
2024-07-09 00:04
config.js
11.18
KB
-rw-r--r--
2025-03-27 09:29
dedupe.js
1.41
KB
-rw-r--r--
2024-05-09 19:00
deprecate.js
2.13
KB
-rw-r--r--
2025-03-27 09:29
diff.js
8.14
KB
-rw-r--r--
2025-03-27 09:29
dist-tag.js
5.52
KB
-rw-r--r--
2025-03-27 09:29
docs.js
449
B
-rw-r--r--
2024-05-09 19:00
doctor.js
10.1
KB
-rw-r--r--
2025-03-27 09:29
edit.js
1.76
KB
-rw-r--r--
2024-07-09 00:04
exec.js
3.42
KB
-rw-r--r--
2024-07-09 00:04
explain.js
3.58
KB
-rw-r--r--
2025-03-27 09:29
explore.js
2.16
KB
-rw-r--r--
2024-07-09 00:04
find-dupes.js
634
B
-rw-r--r--
2024-05-09 19:00
fund.js
6.46
KB
-rw-r--r--
2024-07-09 00:04
get.js
577
B
-rw-r--r--
2024-05-09 19:00
help-search.js
5.52
KB
-rw-r--r--
2024-05-09 19:00
help.js
3.66
KB
-rw-r--r--
2024-07-09 00:04
hook.js
3.37
KB
-rw-r--r--
2025-03-27 09:29
init.js
6.85
KB
-rw-r--r--
2025-03-27 09:29
install-ci-test.js
373
B
-rw-r--r--
2024-05-09 19:00
install-test.js
370
B
-rw-r--r--
2024-05-09 19:00
install.js
5.15
KB
-rw-r--r--
2025-03-27 09:29
link.js
5.3
KB
-rw-r--r--
2025-03-27 09:29
ll.js
234
B
-rw-r--r--
2022-10-11 19:59
login.js
1.29
KB
-rw-r--r--
2024-05-09 19:00
logout.js
1.42
KB
-rw-r--r--
2024-05-09 19:00
ls.js
16.81
KB
-rw-r--r--
2025-03-27 09:29
org.js
4.02
KB
-rw-r--r--
2025-03-27 09:29
outdated.js
7.7
KB
-rw-r--r--
2024-07-13 15:00
owner.js
5.85
KB
-rw-r--r--
2024-07-09 00:04
pack.js
2.6
KB
-rw-r--r--
2025-03-27 09:29
ping.js
873
B
-rw-r--r--
2024-07-09 00:04
pkg.js
3.56
KB
-rw-r--r--
2025-03-27 09:29
prefix.js
335
B
-rw-r--r--
2025-03-27 09:29
profile.js
10.57
KB
-rw-r--r--
2024-07-09 00:04
prune.js
799
B
-rw-r--r--
2024-05-09 19:00
publish.js
7.19
KB
-rw-r--r--
2025-03-27 09:29
query.js
3.51
KB
-rw-r--r--
2024-07-09 00:04
rebuild.js
2.19
KB
-rw-r--r--
2024-07-09 00:04
repo.js
1.25
KB
-rw-r--r--
2025-03-27 09:29
restart.js
310
B
-rw-r--r--
2023-01-17 19:00
root.js
295
B
-rw-r--r--
2024-05-09 19:00
run-script.js
6.04
KB
-rw-r--r--
2025-03-27 09:29
sbom.js
4.51
KB
-rw-r--r--
2025-03-27 09:29
search.js
1.83
KB
-rw-r--r--
2024-05-09 19:00
set.js
671
B
-rw-r--r--
2024-05-09 19:00
shrinkwrap.js
2.65
KB
-rw-r--r--
2024-07-09 00:04
star.js
1.87
KB
-rw-r--r--
2025-03-27 09:29
stars.js
1.03
KB
-rw-r--r--
2025-03-27 09:29
start.js
300
B
-rw-r--r--
2023-01-17 19:00
stop.js
295
B
-rw-r--r--
2023-01-17 19:00
team.js
4.36
KB
-rw-r--r--
2024-07-09 00:04
test.js
295
B
-rw-r--r--
2023-01-17 19:00
token.js
6.02
KB
-rw-r--r--
2025-03-27 09:29
uninstall.js
1.52
KB
-rw-r--r--
2024-07-09 00:04
unpublish.js
5.27
KB
-rw-r--r--
2025-03-27 09:29
unstar.js
183
B
-rw-r--r--
2024-05-09 19:00
update.js
1.72
KB
-rw-r--r--
2024-07-09 00:04
version.js
3.54
KB
-rw-r--r--
2025-03-27 09:29
view.js
12.8
KB
-rw-r--r--
2025-03-27 09:29
whoami.js
527
B
-rw-r--r--
2024-07-09 00:04
Save
Rename
const { log, output } = require('proc-log') const { listTokens, createToken, removeToken } = require('npm-profile') const { otplease } = require('../utils/auth.js') const readUserInfo = require('../utils/read-user-info.js') const BaseCommand = require('../base-cmd.js') class Token extends BaseCommand { static description = 'Manage your authentication tokens' static name = 'token' static usage = ['list', 'revoke <id|token>', 'create [--read-only] [--cidr=list]'] static params = ['read-only', 'cidr', 'registry', 'otp'] static async completion (opts) { const argv = opts.conf.argv.remain const subcommands = ['list', 'revoke', 'create'] if (argv.length === 2) { return subcommands } if (subcommands.includes(argv[2])) { return [] } throw new Error(argv[2] + ' not recognized') } async exec (args) { if (args.length === 0) { return this.list() } switch (args[0]) { case 'list': case 'ls': return this.list() case 'rm': case 'delete': case 'revoke': case 'remove': return this.rm(args.slice(1)) case 'create': return this.create(args.slice(1)) default: throw this.usageError(`${args[0]} is not a recognized subcommand.`) } } async list () { const json = this.npm.config.get('json') const parseable = this.npm.config.get('parseable') log.info('token', 'getting list') const tokens = await listTokens(this.npm.flatOptions) if (json) { output.buffer(tokens) return } if (parseable) { output.standard(['key', 'token', 'created', 'readonly', 'CIDR whitelist'].join('\t')) tokens.forEach(token => { output.standard( [ token.key, token.token, token.created, token.readonly ? 'true' : 'false', token.cidr_whitelist ? token.cidr_whitelist.join(',') : '', ].join('\t') ) }) return } this.generateTokenIds(tokens, 6) const chalk = this.npm.chalk for (const token of tokens) { const level = token.readonly ? 'Read only token' : 'Publish token' const created = String(token.created).slice(0, 10) /* eslint-disable-next-line max-len */ output.standard(`${chalk.blue(level)} ${token.token}… with id ${chalk.cyan(token.id)} created ${created}`) if (token.cidr_whitelist) { output.standard(`with IP whitelist: ${chalk.green(token.cidr_whitelist.join(','))}`) } output.standard() } } async rm (args) { if (args.length === 0) { throw this.usageError('`<tokenKey>` argument is required.') } const json = this.npm.config.get('json') const parseable = this.npm.config.get('parseable') const toRemove = [] const opts = { ...this.npm.flatOptions } log.info('token', `removing ${toRemove.length} tokens`) const tokens = await listTokens(opts) args.forEach(id => { const matches = tokens.filter(token => token.key.indexOf(id) === 0) if (matches.length === 1) { toRemove.push(matches[0].key) } else if (matches.length > 1) { throw new Error( /* eslint-disable-next-line max-len */ `Token ID "${id}" was ambiguous, a new token may have been created since you last ran \`npm token list\`.` ) } else { const tokenMatches = tokens.some(t => id.indexOf(t.token) === 0) if (!tokenMatches) { throw new Error(`Unknown token id or value "${id}".`) } toRemove.push(id) } }) await Promise.all( toRemove.map(key => { return otplease(this.npm, opts, c => removeToken(key, c)) }) ) if (json) { output.buffer(toRemove) } else if (parseable) { output.standard(toRemove.join('\t')) } else { output.standard('Removed ' + toRemove.length + ' token' + (toRemove.length !== 1 ? 's' : '')) } } async create () { const json = this.npm.config.get('json') const parseable = this.npm.config.get('parseable') const cidr = this.npm.config.get('cidr') const readonly = this.npm.config.get('read-only') const validCIDR = await this.validateCIDRList(cidr) const password = await readUserInfo.password() log.info('token', 'creating') const result = await otplease( this.npm, { ...this.npm.flatOptions }, c => createToken(password, readonly, validCIDR, c) ) delete result.key delete result.updated if (json) { output.buffer(result) } else if (parseable) { Object.keys(result).forEach(k => output.standard(k + '\t' + result[k])) } else { const chalk = this.npm.chalk // Identical to list const level = result.readonly ? 'read only' : 'publish' output.standard(`Created ${chalk.blue(level)} token ${result.token}`) if (result.cidr_whitelist?.length) { output.standard(`with IP whitelist: ${chalk.green(result.cidr_whitelist.join(','))}`) } } } invalidCIDRError (msg) { return Object.assign(new Error(msg), { code: 'EINVALIDCIDR' }) } generateTokenIds (tokens, minLength) { for (const token of tokens) { token.id = token.key for (let ii = minLength; ii < token.key.length; ++ii) { const match = tokens.some( ot => ot !== token && ot.key.slice(0, ii) === token.key.slice(0, ii) ) if (!match) { token.id = token.key.slice(0, ii) break } } } } async validateCIDRList (cidrs) { const { v4: isCidrV4, v6: isCidrV6 } = await import('is-cidr') const maybeList = [].concat(cidrs).filter(Boolean) const list = maybeList.length === 1 ? maybeList[0].split(/,\s*/) : maybeList for (const cidr of list) { if (isCidrV6(cidr)) { throw this.invalidCIDRError( `CIDR whitelist can only contain IPv4 addresses${cidr} is IPv6` ) } if (!isCidrV4(cidr)) { throw this.invalidCIDRError(`CIDR whitelist contains invalid CIDR entry: ${cidr}`) } } return list } } module.exports = Token