diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-12 02:02:25 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-12 02:02:25 +0900 |
| commit | 0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch) | |
| tree | 40874799472fa07416f17b50a398ac33b7771905 /packages/backend/tools | |
| parent | update deps (diff) | |
| download | misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2 misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip | |
refactoring
Resolve #7779
Diffstat (limited to 'packages/backend/tools')
21 files changed, 429 insertions, 0 deletions
diff --git a/packages/backend/tools/accept-migration.js b/packages/backend/tools/accept-migration.js new file mode 100644 index 0000000000..309a4ab5e3 --- /dev/null +++ b/packages/backend/tools/accept-migration.js @@ -0,0 +1,26 @@ +"use strict"; +// ex) node built/tools/accept-migration Yo 1000000000001 +Object.defineProperty(exports, "__esModule", { value: true }); +const typeorm_1 = require("typeorm"); +const index_1 = require("@/config/index"); +(0, typeorm_1.createConnection)({ + type: 'postgres', + host: index_1.default.db.host, + port: index_1.default.db.port, + username: index_1.default.db.user, + password: index_1.default.db.pass, + database: index_1.default.db.db, + extra: index_1.default.db.extra, + synchronize: false, + dropSchema: false, +}).then(c => { + c.query(`INSERT INTO migrations(timestamp,name) VALUES (${process.argv[3]}, '${process.argv[2]}${process.argv[3]}');`).then(() => { + console.log('done'); + process.exit(0); + }).catch(e => { + console.log('ERROR:'); + console.log(e); + process.exit(1); + }); +}); +//# sourceMappingURL=accept-migration.js.map
\ No newline at end of file diff --git a/packages/backend/tools/accept-migration.js.map b/packages/backend/tools/accept-migration.js.map new file mode 100644 index 0000000000..c158a49661 --- /dev/null +++ b/packages/backend/tools/accept-migration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"accept-migration.js","sourceRoot":"","sources":["accept-migration.ts"],"names":[],"mappings":";AAAA,yDAAyD;;AAEzD,qCAA2C;AAC3C,0CAAoC;AAEpC,IAAA,0BAAgB,EAAC;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACpB,IAAI,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACpB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACxB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,IAAI;IACxB,QAAQ,EAAE,eAAM,CAAC,EAAE,CAAC,EAAE;IACtB,KAAK,EAAE,eAAM,CAAC,EAAE,CAAC,KAAK;IACtB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;CACjB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IACX,CAAC,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAChI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/accept-migration.ts b/packages/backend/tools/accept-migration.ts new file mode 100644 index 0000000000..2e54fc129f --- /dev/null +++ b/packages/backend/tools/accept-migration.ts @@ -0,0 +1,25 @@ +// ex) node built/tools/accept-migration Yo 1000000000001 + +import { createConnection } from 'typeorm'; +import config from '@/config/index'; + +createConnection({ + type: 'postgres', + host: config.db.host, + port: config.db.port, + username: config.db.user, + password: config.db.pass, + database: config.db.db, + extra: config.db.extra, + synchronize: false, + dropSchema: false, +}).then(c => { + c.query(`INSERT INTO migrations(timestamp,name) VALUES (${process.argv[3]}, '${process.argv[2]}${process.argv[3]}');`).then(() => { + console.log('done'); + process.exit(0); + }).catch(e => { + console.log('ERROR:'); + console.log(e); + process.exit(1); + }); +}); diff --git a/packages/backend/tools/add-emoji.js b/packages/backend/tools/add-emoji.js new file mode 100644 index 0000000000..df02f554a5 --- /dev/null +++ b/packages/backend/tools/add-emoji.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const index_1 = require("@/models/index"); +const gen_id_1 = require("@/misc/gen-id"); +async function main(name, url, alias) { + const aliases = alias != null ? [alias] : []; + await index_1.Emojis.save({ + id: (0, gen_id_1.genId)(), + host: null, + name, + url, + aliases, + updatedAt: new Date() + }); +} +const args = process.argv.slice(2); +const name = args[0]; +const url = args[1]; +if (!name) + throw new Error('require name'); +if (!url) + throw new Error('require url'); +main(name, url).then(() => { + console.log('success'); + process.exit(0); +}).catch(e => { + console.warn(e); + process.exit(1); +}); +//# sourceMappingURL=add-emoji.js.map
\ No newline at end of file diff --git a/packages/backend/tools/add-emoji.js.map b/packages/backend/tools/add-emoji.js.map new file mode 100644 index 0000000000..03bf31b984 --- /dev/null +++ b/packages/backend/tools/add-emoji.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-emoji.js","sourceRoot":"","sources":["add-emoji.ts"],"names":[],"mappings":";;AAAA,0CAAwC;AACxC,0CAAsC;AAEtC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,KAAc;IAC5D,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,MAAM,cAAM,CAAC,IAAI,CAAC;QACjB,EAAE,EAAE,IAAA,cAAK,GAAE;QACX,IAAI,EAAE,IAAI;QACV,IAAI;QACJ,GAAG;QACH,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE;KACrB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,IAAI,CAAC,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3C,IAAI,CAAC,GAAG;IAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAEzC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACzB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/add-emoji.ts b/packages/backend/tools/add-emoji.ts new file mode 100644 index 0000000000..9ffe7dfa81 --- /dev/null +++ b/packages/backend/tools/add-emoji.ts @@ -0,0 +1,30 @@ +import { Emojis } from '@/models/index'; +import { genId } from '@/misc/gen-id'; + +async function main(name: string, url: string, alias?: string): Promise<any> { + const aliases = alias != null ? [ alias ] : []; + + await Emojis.save({ + id: genId(), + host: null, + name, + url, + aliases, + updatedAt: new Date() + }); +} + +const args = process.argv.slice(2); +const name = args[0]; +const url = args[1]; + +if (!name) throw new Error('require name'); +if (!url) throw new Error('require url'); + +main(name, url).then(() => { + console.log('success'); + process.exit(0); +}).catch(e => { + console.warn(e); + process.exit(1); +}); diff --git a/packages/backend/tools/demote-admin.js b/packages/backend/tools/demote-admin.js new file mode 100644 index 0000000000..d6a296883a --- /dev/null +++ b/packages/backend/tools/demote-admin.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const postgre_1 = require("../db/postgre"); +const typeorm_1 = require("typeorm"); +const user_1 = require("@/models/entities/user"); +async function main(username) { + if (!username) + throw `username required`; + username = username.replace(/^@/, ''); + await (0, postgre_1.initDb)(); + const Users = (0, typeorm_1.getRepository)(user_1.User); + const res = await Users.update({ + usernameLower: username.toLowerCase(), + host: null + }, { + isAdmin: false + }); + if (res.affected !== 1) { + throw 'Failed'; + } +} +const args = process.argv.slice(2); +main(args[0]).then(() => { + console.log('Success'); + process.exit(0); +}).catch(e => { + console.error(`Error: ${e.message || e}`); + process.exit(1); +}); +//# sourceMappingURL=demote-admin.js.map
\ No newline at end of file diff --git a/packages/backend/tools/demote-admin.js.map b/packages/backend/tools/demote-admin.js.map new file mode 100644 index 0000000000..4403e2bab0 --- /dev/null +++ b/packages/backend/tools/demote-admin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"demote-admin.js","sourceRoot":"","sources":["demote-admin.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,qCAAwC;AACxC,iDAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,QAAgB;IACnC,IAAI,CAAC,QAAQ;QAAE,MAAM,mBAAmB,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,IAAI;KACV,EAAE;QACF,OAAO,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;QACvB,MAAM,QAAQ,CAAC;KACf;AACF,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/demote-admin.ts b/packages/backend/tools/demote-admin.ts new file mode 100644 index 0000000000..d7c6d1cec2 --- /dev/null +++ b/packages/backend/tools/demote-admin.ts @@ -0,0 +1,32 @@ +import { initDb } from '../db/postgre'; +import { getRepository } from 'typeorm'; +import { User } from '@/models/entities/user'; + +async function main(username: string) { + if (!username) throw `username required`; + username = username.replace(/^@/, ''); + + await initDb(); + const Users = getRepository(User); + + const res = await Users.update({ + usernameLower: username.toLowerCase(), + host: null + }, { + isAdmin: false + }); + + if (res.affected !== 1) { + throw 'Failed'; + } +} + +const args = process.argv.slice(2); + +main(args[0]).then(() => { + console.log('Success'); + process.exit(0); +}).catch(e => { + console.error(`Error: ${e.message || e}`); + process.exit(1); +}); diff --git a/packages/backend/tools/mark-admin.js b/packages/backend/tools/mark-admin.js new file mode 100644 index 0000000000..4563d9c332 --- /dev/null +++ b/packages/backend/tools/mark-admin.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const postgre_1 = require("../db/postgre"); +const typeorm_1 = require("typeorm"); +const user_1 = require("@/models/entities/user"); +async function main(username) { + if (!username) + throw `username required`; + username = username.replace(/^@/, ''); + await (0, postgre_1.initDb)(); + const Users = (0, typeorm_1.getRepository)(user_1.User); + const res = await Users.update({ + usernameLower: username.toLowerCase(), + host: null + }, { + isAdmin: true + }); + if (res.affected !== 1) { + throw 'Failed'; + } +} +const args = process.argv.slice(2); +main(args[0]).then(() => { + console.log('Success'); + process.exit(0); +}).catch(e => { + console.error(`Error: ${e.message || e}`); + process.exit(1); +}); +//# sourceMappingURL=mark-admin.js.map
\ No newline at end of file diff --git a/packages/backend/tools/mark-admin.js.map b/packages/backend/tools/mark-admin.js.map new file mode 100644 index 0000000000..5633e2f894 --- /dev/null +++ b/packages/backend/tools/mark-admin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mark-admin.js","sourceRoot":"","sources":["mark-admin.ts"],"names":[],"mappings":";;AAAA,2CAAuC;AACvC,qCAAwC;AACxC,iDAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,QAAgB;IACnC,IAAI,CAAC,QAAQ;QAAE,MAAM,mBAAmB,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtC,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,KAAK,GAAG,IAAA,uBAAa,EAAC,WAAI,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAC9B,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,IAAI;KACV,EAAE;QACF,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;QACvB,MAAM,QAAQ,CAAC;KACf;AACF,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/mark-admin.ts b/packages/backend/tools/mark-admin.ts new file mode 100644 index 0000000000..62ed0f09ee --- /dev/null +++ b/packages/backend/tools/mark-admin.ts @@ -0,0 +1,32 @@ +import { initDb } from '../db/postgre'; +import { getRepository } from 'typeorm'; +import { User } from '@/models/entities/user'; + +async function main(username: string) { + if (!username) throw `username required`; + username = username.replace(/^@/, ''); + + await initDb(); + const Users = getRepository(User); + + const res = await Users.update({ + usernameLower: username.toLowerCase(), + host: null + }, { + isAdmin: true + }); + + if (res.affected !== 1) { + throw 'Failed'; + } +} + +const args = process.argv.slice(2); + +main(args[0]).then(() => { + console.log('Success'); + process.exit(0); +}).catch(e => { + console.error(`Error: ${e.message || e}`); + process.exit(1); +}); diff --git a/packages/backend/tools/refresh-question.js b/packages/backend/tools/refresh-question.js new file mode 100644 index 0000000000..0536c38207 --- /dev/null +++ b/packages/backend/tools/refresh-question.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const question_1 = require("@/remote/activitypub/models/question"); +async function main(uri) { + return await (0, question_1.updateQuestion)(uri); +} +const args = process.argv.slice(2); +const uri = args[0]; +main(uri).then(result => { + console.log(`Done: ${result}`); +}).catch(e => { + console.warn(e); +}); +//# sourceMappingURL=refresh-question.js.map
\ No newline at end of file diff --git a/packages/backend/tools/refresh-question.js.map b/packages/backend/tools/refresh-question.js.map new file mode 100644 index 0000000000..3db6d0b8bb --- /dev/null +++ b/packages/backend/tools/refresh-question.js.map @@ -0,0 +1 @@ +{"version":3,"file":"refresh-question.js","sourceRoot":"","sources":["refresh-question.ts"],"names":[],"mappings":";;AAAA,mEAAsE;AAEtE,KAAK,UAAU,IAAI,CAAC,GAAW;IAC9B,OAAO,MAAM,IAAA,yBAAc,EAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACvB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/refresh-question.ts b/packages/backend/tools/refresh-question.ts new file mode 100644 index 0000000000..98a3c2865f --- /dev/null +++ b/packages/backend/tools/refresh-question.ts @@ -0,0 +1,14 @@ +import { updateQuestion } from '@/remote/activitypub/models/question'; + +async function main(uri: string): Promise<any> { + return await updateQuestion(uri); +} + +const args = process.argv.slice(2); +const uri = args[0]; + +main(uri).then(result => { + console.log(`Done: ${result}`); +}).catch(e => { + console.warn(e); +}); diff --git a/packages/backend/tools/resync-remote-user.js b/packages/backend/tools/resync-remote-user.js new file mode 100644 index 0000000000..05d76ecc97 --- /dev/null +++ b/packages/backend/tools/resync-remote-user.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const postgre_1 = require("@/db/postgre"); +const Acct = require("misskey-js/built/acct"); +async function main(acct) { + await (0, postgre_1.initDb)(); + const { resolveUser } = await Promise.resolve().then(() => require('@/remote/resolve-user')); + const { username, host } = Acct.parse(acct); + await resolveUser(username, host, {}, true); +} +// get args +const args = process.argv.slice(2); +let acct = args[0]; +// normalize args +acct = acct.replace(/^@/, ''); +// check args +if (!acct.match(/^\w+@\w/)) { + throw `Invalid acct format. Valid format are user@host`; +} +console.log(`resync ${acct}`); +main(acct).then(() => { + console.log('Done'); +}).catch(e => { + console.warn(e); +}); +//# sourceMappingURL=resync-remote-user.js.map
\ No newline at end of file diff --git a/packages/backend/tools/resync-remote-user.js.map b/packages/backend/tools/resync-remote-user.js.map new file mode 100644 index 0000000000..456d7da1d1 --- /dev/null +++ b/packages/backend/tools/resync-remote-user.js.map @@ -0,0 +1 @@ +{"version":3,"file":"resync-remote-user.js","sourceRoot":"","sources":["resync-remote-user.ts"],"names":[],"mappings":";;AAAA,0CAAsC;AACtC,8CAA8C;AAE9C,KAAK,UAAU,IAAI,CAAC,IAAY;IAC/B,MAAM,IAAA,gBAAM,GAAE,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,GAAG,2CAAa,uBAAuB,EAAC,CAAC;IAE9D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,WAAW;AACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnB,iBAAiB;AACjB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE9B,aAAa;AACb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IAC3B,MAAM,iDAAiD,CAAC;CACxD;AAED,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;AAE9B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/resync-remote-user.ts b/packages/backend/tools/resync-remote-user.ts new file mode 100644 index 0000000000..22d2f7c895 --- /dev/null +++ b/packages/backend/tools/resync-remote-user.ts @@ -0,0 +1,30 @@ +import { initDb } from '@/db/postgre'; +import * as Acct from 'misskey-js/built/acct'; + +async function main(acct: string): Promise<any> { + await initDb(); + const { resolveUser } = await import('@/remote/resolve-user'); + + const { username, host } = Acct.parse(acct); + await resolveUser(username, host, {}, true); +} + +// get args +const args = process.argv.slice(2); +let acct = args[0]; + +// normalize args +acct = acct.replace(/^@/, ''); + +// check args +if (!acct.match(/^\w+@\w/)) { + throw `Invalid acct format. Valid format are user@host`; +} + +console.log(`resync ${acct}`); + +main(acct).then(() => { + console.log('Done'); +}).catch(e => { + console.warn(e); +}); diff --git a/packages/backend/tools/show-signin-history.js b/packages/backend/tools/show-signin-history.js new file mode 100644 index 0000000000..daeea84613 --- /dev/null +++ b/packages/backend/tools/show-signin-history.js @@ -0,0 +1,47 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const index_1 = require("@/models/index"); +// 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 +async function main(username, headers) { + const user = await index_1.Users.findOne({ + host: null, + usernameLower: username.toLowerCase(), + }); + if (user == null) + throw new Error('User not found'); + const history = await index_1.Signins.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; +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); +}); +//# sourceMappingURL=show-signin-history.js.map
\ No newline at end of file diff --git a/packages/backend/tools/show-signin-history.js.map b/packages/backend/tools/show-signin-history.js.map new file mode 100644 index 0000000000..b421825bce --- /dev/null +++ b/packages/backend/tools/show-signin-history.js.map @@ -0,0 +1 @@ +{"version":3,"file":"show-signin-history.js","sourceRoot":"","sources":["show-signin-history.ts"],"names":[],"mappings":";;AAAA,0CAAgD;AAEhD,gDAAgD;AAChD,mCAAmC;AAEnC,2EAA2E;AAC3E,uCAAuC;AAEvC,oDAAoD;AACpD,6BAA6B;AAE7B,KAAK,UAAU,IAAI,CAAC,QAAgB,EAAE,OAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,aAAK,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,MAAM,eAAO,CAAC,IAAI,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,EAAE;KACf,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7H,UAAU;QACV,IAAI,OAAO,IAAI,IAAI,EAAE;YACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACrD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjD;aACD;SACD;KACD;AACF,CAAC;AAED,WAAW;AACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,OAA6B,CAAC;AAElC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;IACpB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;CACjE;AAED,iBAAiB;AACjB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEtC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
\ No newline at end of file diff --git a/packages/backend/tools/show-signin-history.ts b/packages/backend/tools/show-signin-history.ts new file mode 100644 index 0000000000..ad92316314 --- /dev/null +++ b/packages/backend/tools/show-signin-history.ts @@ -0,0 +1,56 @@ +import { Users, Signins } from '@/models/index'; + +// 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 + +async function main(username: string, headers?: string[]) { + const user = await Users.findOne({ + host: null, + usernameLower: username.toLowerCase(), + }); + + if (user == null) throw new Error('User not found'); + + const history = await Signins.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[] | undefined; + +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); +}); |