| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { promisify } from 'node:util'
- import Settings from '@overleaf/settings'
- import AdminController from '../app/src/Features/ServerAdmin/AdminController.js'
- import minimist from 'minimist'
- import { fileURLToPath } from 'node:url'
- const args = minimist(process.argv.slice(2), {
- string: ['confirm-site-url', 'delay-in-seconds'],
- default: {
- 'delay-in-seconds': 10,
- 'confirm-site-url': '',
- },
- })
- const sleep = promisify(setTimeout)
- async function main() {
- if (args.help) {
- console.error()
- console.error(
- ' usage: node disconnect_all_users.mjs [--delay-in-seconds=10] --confirm-site-url=https://www....\n'
- )
- process.exit(1)
- }
- const isSaaS = Boolean(Settings.overleaf)
- if (isSaaS && args['confirm-site-url'] !== Settings.siteUrl) {
- console.error()
- console.error(
- 'Please confirm the environment you want to disconnect ALL USERS from by specifying the site URL aka PUBLIC_URL, e.g. --confirm-site-url=https://www.dev-overleaf.com for the dev-env'
- )
- console.error()
- console.error(
- `!!! --confirm-site-url=${
- args['confirm-site-url'] || "''"
- } does not match the PUBLIC_URL in this environment.`
- )
- console.error()
- console.error(' Are you running this script in the correct environment?')
- process.exit(1)
- }
- const delay = parseInt(args['delay-in-seconds'] || '10', 10)
- if (!(delay >= 0)) {
- console.error(
- `--delay-in-seconds='${args['delay-in-seconds']}' should be a number >=0`
- )
- process.exit(1)
- }
- console.log()
- console.log(
- `Disconnect all users from ${args['confirm-site-url']}, with delay ${delay}`
- )
- if (isSaaS) {
- console.error(' Use CTRL+C in the next 5s to abort.')
- await sleep(5 * 1000)
- }
- await AdminController._sendDisconnectAllUsersMessage(delay)
- }
- if (fileURLToPath(import.meta.url) === process.argv[1]) {
- try {
- await main()
- console.error('Done.')
- process.exit(0)
- } catch (error) {
- console.error('Error', error)
- process.exit(1)
- }
- }
|