Last active
February 20, 2024 02:20
-
-
Save ltlapy/f43ac71690cce22b1a4603ff7fdc89f5 to your computer and use it in GitHub Desktop.
특정 시점 이전의 계정을 벌크 삭제하는 관리자용 스크립트
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let host = 'example.com' | |
let timeBefore_timestamp = '2100-12-31T23:59:59.999Z' | |
// ---- | |
var offset = 0 | |
var accounts = [] | |
let timeBefore = Date:parse(timeBefore_timestamp) | |
<: `{host} 의 계정을 탐색합니다...` | |
loop { | |
let res = Mk:api('admin/show-users', { | |
hostname: host, | |
limit: 30, | |
offset: offset, | |
sort: '+createdAt', | |
state: 'all' | |
}) | |
if (res.len == 0) break | |
if (accounts.len == 0) { | |
// 해당 시점의 계정을 탐색 | |
each(let account, res) { | |
if (Date:parse(account.createdAt) < timeBefore) { | |
accounts.push(account) | |
} | |
} | |
} else { | |
// 응답의 모든 계정이 주어진 시점의 이전 계정이라고 간주 | |
accounts = accounts.concat(res) | |
offset = offset + res.len | |
} | |
if ((offset % 100) == 0) { | |
<: `{offset} 번째 계정을 탐색했습니다. 계속해서 탐색합니다... ({accounts.len})` | |
} | |
} | |
<: `조건에 일치하는 계정이 {accounts.len}개 발견되었습니다` | |
each(let account, accounts) { | |
<: `{account.id} : @{account.username}@{account.host}` | |
} | |
let warning = [ | |
`{accounts.len} 개의 계정을 찾았습니다.`, | |
`마지막으로 생성된 계정은 @{accounts[0].username}@{accounts[0].host}이며,` | |
`최초로 생성된 계정은 @{accounts[accounts.len-1].username}@{accounts[accounts.len-1].host} 입니다.` | |
`해당 범위의 계정을 모두 삭제하시겠습니까?` | |
].join(Str:lf) | |
let warning_additional = [ | |
`**제어판과 비교하여 삭제되는 계정의 범위가 기대와 일치하는 지 반드시 비교하십시오.**` | |
'확인을 누르는 즉시 해당 범위에 대한 삭제 명령이 발동되며, 이는 **취소할 수 없습니다.**' | |
'---' | |
'' | |
].join(Str:lf) | |
if (Mk:confirm('탐색 완료', warning) == true) { | |
if (Mk:confirm('마지막 경고입니다', `{warning_additional}{warning}`, 'warning') == true) { | |
<: '요청에 따라 삭제를 실행합니다. 취소할 수 없습니다.' | |
each(let account, accounts) { | |
Mk:api('admin/accounts/delete', { | |
userId: account.id | |
}) | |
<: `{account.id} : @{account.username}@{account.host}` | |
} | |
<: `{accounts.len}개의 계정 삭제 요청을 보냈습니다` | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment