summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2019-01-11 08:07:09 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-01-11 08:07:09 +0900
commit826a2466b7a72cb2f28a0e36057d0bb924157123 (patch)
tree2b3f1a5cbff3d7e47a23cd56855fe8ca58998694 /src/tools
parentダイレクトを非公開のように使えるようにする (#3869) (diff)
downloadmisskey-826a2466b7a72cb2f28a0e36057d0bb924157123.tar.gz
misskey-826a2466b7a72cb2f28a0e36057d0bb924157123.tar.bz2
misskey-826a2466b7a72cb2f28a0e36057d0bb924157123.zip
管理者がサインイン履歴を参照できるツール (#3870)
* 管理者がサインイン履歴を参照できるツール * remove debug code
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/show-signin-history.ts57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/tools/show-signin-history.ts b/src/tools/show-signin-history.ts
new file mode 100644
index 0000000000..e770710322
--- /dev/null
+++ b/src/tools/show-signin-history.ts
@@ -0,0 +1,57 @@
+// node built/tools/show-signin-history username
+// => {Success} {Date} {IPAddrsss}
+
+// node built/tools/show-signin-history username user-agent,x-forwarded-for
+// with user-agent and x-forwarded-for
+
+// node built/tools/show-signin-history username all
+// with full request headers
+
+import User from '../models/user';
+import Signin from '../models/signin';
+
+async function main(username: string, headers: string[]) {
+ const user = await User.findOne({
+ host: null,
+ usernameLower: username.toLowerCase(),
+ });
+
+ if (user === null) throw 'User not found';
+
+ const history = await Signin.find({
+ userId: user._id
+ });
+
+ for (const signin of history) {
+ console.log(`${signin.success ? 'OK' : 'NG'} ${signin.createdAt ? signin.createdAt.toISOString() : 'Unknown'} ${signin.ip}`);
+
+ // headers
+ if (headers != null) {
+ for (const key of Object.keys(signin.headers)) {
+ if (headers.includes('all') || headers.includes(key)) {
+ console.log(` ${key}: ${signin.headers[key]}`);
+ }
+ }
+ }
+ }
+}
+
+// get args
+const args = process.argv.slice(2);
+
+let username = args[0];
+let headers: string[];
+
+if (args[1] != null) {
+ headers = args[1].split(/,/).map(header => header.toLowerCase());
+}
+
+// normalize args
+username = username.replace(/^@/, '');
+
+main(username, headers).then(() => {
+ process.exit(0);
+}).catch(e => {
+ console.warn(e);
+ process.exit(1);
+});