$46 GRAYBYTE WORDPRESS FILE MANAGER $36

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/alt-nodejs19/root/usr/lib/node_modules/npm/lib/commands/

HOME
Current File : /opt/alt/alt-nodejs19/root/usr/lib/node_modules/npm/lib/commands//token.js
const Table = require('cli-table3')
const { v4: isCidrV4, v6: isCidrV6 } = require('is-cidr')
const log = require('../utils/log-shim.js')
const profile = require('npm-profile')

const otplease = require('../utils/otplease.js')
const pulseTillDone = require('../utils/pulse-till-done.js')
const readUserInfo = require('../utils/read-user-info.js')

const BaseCommand = require('../base-command.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']

  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) {
    log.gauge.show('token')
    if (args.length === 0) {
      return this.list()
    }
    switch (args[0]) {
      case 'list':
      case 'ls':
        return this.list()
      case 'delete':
      case 'revoke':
      case 'remove':
      case 'rm':
        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 conf = this.config()
    log.info('token', 'getting list')
    const tokens = await pulseTillDone.withPromise(profile.listTokens(conf))
    if (conf.json) {
      this.npm.output(JSON.stringify(tokens, null, 2))
      return
    } else if (conf.parseable) {
      this.npm.output(['key', 'token', 'created', 'readonly', 'CIDR whitelist'].join('\t'))
      tokens.forEach(token => {
        this.npm.output(
          [
            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 idWidth = tokens.reduce((acc, token) => Math.max(acc, token.id.length), 0)
    const table = new Table({
      head: ['id', 'token', 'created', 'readonly', 'CIDR whitelist'],
      colWidths: [Math.max(idWidth, 2) + 2, 9, 12, 10],
    })
    tokens.forEach(token => {
      table.push([
        token.id,
        token.token + '…',
        String(token.created).slice(0, 10),
        token.readonly ? 'yes' : 'no',
        token.cidr_whitelist ? token.cidr_whitelist.join(', ') : '',
      ])
    })
    this.npm.output(table.toString())
  }

  async rm (args) {
    if (args.length === 0) {
      throw this.usageError('`<tokenKey>` argument is required.')
    }

    const conf = this.config()
    const toRemove = []
    const progress = log.newItem('removing tokens', toRemove.length)
    progress.info('token', 'getting existing list')
    const tokens = await pulseTillDone.withPromise(profile.listTokens(conf))
    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, conf, c => profile.removeToken(key, c))
      })
    )
    if (conf.json) {
      this.npm.output(JSON.stringify(toRemove))
    } else if (conf.parseable) {
      this.npm.output(toRemove.join('\t'))
    } else {
      this.npm.output('Removed ' + toRemove.length + ' token' + (toRemove.length !== 1 ? 's' : ''))
    }
  }

  async create (args) {
    const conf = this.config()
    const cidr = conf.cidr
    const readonly = conf.readOnly

    const password = await readUserInfo.password()
    const validCIDR = this.validateCIDRList(cidr)
    log.info('token', 'creating')
    const result = await pulseTillDone.withPromise(
      otplease(this.npm, conf, c => profile.createToken(password, readonly, validCIDR, c))
    )
    delete result.key
    delete result.updated
    if (conf.json) {
      this.npm.output(JSON.stringify(result))
    } else if (conf.parseable) {
      Object.keys(result).forEach(k => this.npm.output(k + '\t' + result[k]))
    } else {
      const table = new Table()
      for (const k of Object.keys(result)) {
        table.push({ [this.npm.chalk.bold(k)]: String(result[k]) })
      }
      this.npm.output(table.toString())
    }
  }

  config () {
    const conf = { ...this.npm.flatOptions }
    const creds = this.npm.config.getCredentialsByURI(conf.registry)
    if (creds.token) {
      conf.auth = { token: creds.token }
    } else if (creds.username) {
      conf.auth = {
        basic: {
          username: creds.username,
          password: creds.password,
        },
      }
    } else if (creds.auth) {
      const auth = Buffer.from(creds.auth, 'base64').toString().split(':', 2)
      conf.auth = {
        basic: {
          username: auth[0],
          password: auth[1],
        },
      }
    } else {
      conf.auth = {}
    }

    if (conf.otp) {
      conf.auth.otp = conf.otp
    }
    return conf
  }

  invalidCIDRError (msg) {
    return Object.assign(new Error(msg), { code: 'EINVALIDCIDR' })
  }

  generateTokenIds (tokens, minLength) {
    const byId = {}
    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
        }
      }
      byId[token.id] = token
    }
    return byId
  }

  validateCIDRList (cidrs) {
    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

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
31 Aug 2024 8.02 AM
root / root
0755
access.js
6.079 KB
7 Dec 2023 1.07 AM
root / root
0644
adduser.js
1.318 KB
7 Dec 2023 1.07 AM
root / root
0644
audit.js
13.863 KB
7 Dec 2023 1.07 AM
root / root
0644
bugs.js
0.796 KB
7 Dec 2023 1.07 AM
root / root
0644
cache.js
7.072 KB
7 Dec 2023 1.07 AM
root / root
0644
ci.js
3.509 KB
7 Dec 2023 1.07 AM
root / root
0644
completion.js
8.734 KB
7 Dec 2023 1.07 AM
root / root
0644
config.js
10.037 KB
7 Dec 2023 1.07 AM
root / root
0644
dedupe.js
1.396 KB
7 Dec 2023 1.07 AM
root / root
0644
deprecate.js
2.029 KB
7 Dec 2023 1.07 AM
root / root
0644
diff.js
8.123 KB
7 Dec 2023 1.07 AM
root / root
0644
dist-tag.js
5.451 KB
7 Dec 2023 1.07 AM
root / root
0644
docs.js
0.437 KB
7 Dec 2023 1.07 AM
root / root
0644
doctor.js
11.512 KB
7 Dec 2023 1.07 AM
root / root
0644
edit.js
1.997 KB
7 Dec 2023 1.07 AM
root / root
0644
exec.js
2.542 KB
7 Dec 2023 1.07 AM
root / root
0644
explain.js
3.554 KB
7 Dec 2023 1.07 AM
root / root
0644
explore.js
2.305 KB
7 Dec 2023 1.07 AM
root / root
0644
find-dupes.js
0.607 KB
7 Dec 2023 1.07 AM
root / root
0644
fund.js
6.513 KB
7 Dec 2023 1.07 AM
root / root
0644
get.js
0.512 KB
7 Dec 2023 1.07 AM
root / root
0644
help-search.js
5.494 KB
7 Dec 2023 1.07 AM
root / root
0644
help.js
3.535 KB
7 Dec 2023 1.07 AM
root / root
0644
hook.js
3.77 KB
7 Dec 2023 1.07 AM
root / root
0644
init.js
6.902 KB
7 Dec 2023 1.07 AM
root / root
0644
install-ci-test.js
0.364 KB
7 Dec 2023 1.07 AM
root / root
0644
install-test.js
0.361 KB
7 Dec 2023 1.07 AM
root / root
0644
install.js
5.108 KB
7 Dec 2023 1.07 AM
root / root
0644
link.js
5.154 KB
7 Dec 2023 1.07 AM
root / root
0644
ll.js
0.229 KB
7 Dec 2023 1.07 AM
root / root
0644
login.js
1.315 KB
7 Dec 2023 1.07 AM
root / root
0644
logout.js
1.305 KB
7 Dec 2023 1.07 AM
root / root
0644
ls.js
16.729 KB
7 Dec 2023 1.07 AM
root / root
0644
org.js
4.144 KB
7 Dec 2023 1.07 AM
root / root
0644
outdated.js
8.762 KB
7 Dec 2023 1.07 AM
root / root
0644
owner.js
5.906 KB
7 Dec 2023 1.07 AM
root / root
0644
pack.js
2.373 KB
7 Dec 2023 1.07 AM
root / root
0644
ping.js
0.896 KB
7 Dec 2023 1.07 AM
root / root
0644
pkg.js
3.499 KB
7 Dec 2023 1.07 AM
root / root
0644
prefix.js
0.296 KB
7 Dec 2023 1.07 AM
root / root
0644
profile.js
11.188 KB
7 Dec 2023 1.07 AM
root / root
0644
prune.js
0.761 KB
7 Dec 2023 1.07 AM
root / root
0644
publish.js
6.503 KB
7 Dec 2023 1.07 AM
root / root
0644
query.js
2.9 KB
7 Dec 2023 1.07 AM
root / root
0644
rebuild.js
2.141 KB
7 Dec 2023 1.07 AM
root / root
0644
repo.js
1.242 KB
7 Dec 2023 1.07 AM
root / root
0644
restart.js
0.303 KB
7 Dec 2023 1.07 AM
root / root
0644
root.js
0.252 KB
7 Dec 2023 1.07 AM
root / root
0644
run-script.js
6.814 KB
7 Dec 2023 1.07 AM
root / root
0644
search.js
2.677 KB
7 Dec 2023 1.07 AM
root / root
0644
set.js
0.559 KB
7 Dec 2023 1.07 AM
root / root
0644
shrinkwrap.js
2.642 KB
7 Dec 2023 1.07 AM
root / root
0644
star.js
1.866 KB
7 Dec 2023 1.07 AM
root / root
0644
stars.js
1.027 KB
7 Dec 2023 1.07 AM
root / root
0644
start.js
0.293 KB
7 Dec 2023 1.07 AM
root / root
0644
stop.js
0.288 KB
7 Dec 2023 1.07 AM
root / root
0644
team.js
4.438 KB
7 Dec 2023 1.07 AM
root / root
0644
test.js
0.288 KB
7 Dec 2023 1.07 AM
root / root
0644
token.js
6.642 KB
7 Dec 2023 1.07 AM
root / root
0644
uninstall.js
1.506 KB
7 Dec 2023 1.07 AM
root / root
0644
unpublish.js
4.544 KB
7 Dec 2023 1.07 AM
root / root
0644
unstar.js
0.178 KB
7 Dec 2023 1.07 AM
root / root
0644
update.js
1.709 KB
7 Dec 2023 1.07 AM
root / root
0644
version.js
3.576 KB
7 Dec 2023 1.07 AM
root / root
0644
view.js
14.375 KB
7 Dec 2023 1.07 AM
root / root
0644
whoami.js
0.463 KB
7 Dec 2023 1.07 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF