parent
							
								
									c56b94ae96
								
							
						
					
					
						commit
						0a0aa0e2db
					
				
					 7 changed files with 35 additions and 14 deletions
				
			
		
							
								
								
									
										21
									
								
								src/misc/convert-host.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/misc/convert-host.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
import config from '../config';
 | 
			
		||||
import { toUnicode, toASCII } from 'punycode';
 | 
			
		||||
 | 
			
		||||
export function getFullApAccount(username: string, host: string) {
 | 
			
		||||
	return host ? `${username}@${toApHost(host)}` : `${username}@${toApHost(config.host)}`;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function isSelfHost(host: string) {
 | 
			
		||||
	if (host == null) return true;
 | 
			
		||||
	return toApHost(config.host) === toApHost(host);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function toDbHost(host: string) {
 | 
			
		||||
	if (host == null) return null;
 | 
			
		||||
	return toUnicode(host.toLowerCase());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function toApHost(host: string) {
 | 
			
		||||
	if (host == null) return null;
 | 
			
		||||
	return toASCII(host.toLowerCase());
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import addFile from '../../../services/drive/add-file';
 | 
			
		|||
import User from '../../../models/user';
 | 
			
		||||
import dateFormat = require('dateformat');
 | 
			
		||||
import Blocking from '../../../models/blocking';
 | 
			
		||||
import config from '../../../config';
 | 
			
		||||
import { getFullApAccount } from '../../../misc/convert-host';
 | 
			
		||||
 | 
			
		||||
const logger = queueLogger.createSubLogger('export-blocking');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ export async function exportBlocking(job: Bull.Job, done: any): Promise<void> {
 | 
			
		|||
 | 
			
		||||
		for (const block of blockings) {
 | 
			
		||||
			const u = await User.findOne({ _id: block.blockeeId }, { fields: { username: true, host: true } });
 | 
			
		||||
			const content = u.host ? `${u.username}@${u.host}` : `${u.username}@${config.host}`;
 | 
			
		||||
			const content = getFullApAccount(u.username, u.host);
 | 
			
		||||
			await new Promise((res, rej) => {
 | 
			
		||||
				stream.write(content + '\n', err => {
 | 
			
		||||
					if (err) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import addFile from '../../../services/drive/add-file';
 | 
			
		|||
import User from '../../../models/user';
 | 
			
		||||
import dateFormat = require('dateformat');
 | 
			
		||||
import Following from '../../../models/following';
 | 
			
		||||
import config from '../../../config';
 | 
			
		||||
import { getFullApAccount } from '../../../misc/convert-host';
 | 
			
		||||
 | 
			
		||||
const logger = queueLogger.createSubLogger('export-following');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ export async function exportFollowing(job: Bull.Job, done: any): Promise<void> {
 | 
			
		|||
 | 
			
		||||
		for (const following of followings) {
 | 
			
		||||
			const u = await User.findOne({ _id: following.followeeId }, { fields: { username: true, host: true } });
 | 
			
		||||
			const content = u.host ? `${u.username}@${u.host}` : `${u.username}@${config.host}`;
 | 
			
		||||
			const content = getFullApAccount(u.username, u.host);
 | 
			
		||||
			await new Promise((res, rej) => {
 | 
			
		||||
				stream.write(content + '\n', err => {
 | 
			
		||||
					if (err) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import addFile from '../../../services/drive/add-file';
 | 
			
		|||
import User from '../../../models/user';
 | 
			
		||||
import dateFormat = require('dateformat');
 | 
			
		||||
import Mute from '../../../models/mute';
 | 
			
		||||
import config from '../../../config';
 | 
			
		||||
import { getFullApAccount } from '../../../misc/convert-host';
 | 
			
		||||
 | 
			
		||||
const logger = queueLogger.createSubLogger('export-mute');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ export async function exportMute(job: Bull.Job, done: any): Promise<void> {
 | 
			
		|||
 | 
			
		||||
		for (const mute of mutes) {
 | 
			
		||||
			const u = await User.findOne({ _id: mute.muteeId }, { fields: { username: true, host: true } });
 | 
			
		||||
			const content = u.host ? `${u.username}@${u.host}` : `${u.username}@${config.host}`;
 | 
			
		||||
			const content = getFullApAccount(u.username, u.host);
 | 
			
		||||
			await new Promise((res, rej) => {
 | 
			
		||||
				stream.write(content + '\n', err => {
 | 
			
		||||
					if (err) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,8 +7,8 @@ import { queueLogger } from '../../logger';
 | 
			
		|||
import addFile from '../../../services/drive/add-file';
 | 
			
		||||
import User from '../../../models/user';
 | 
			
		||||
import dateFormat = require('dateformat');
 | 
			
		||||
import config from '../../../config';
 | 
			
		||||
import UserList from '../../../models/user-list';
 | 
			
		||||
import { getFullApAccount } from '../../../misc/convert-host';
 | 
			
		||||
 | 
			
		||||
const logger = queueLogger.createSubLogger('export-user-lists');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ export async function exportUserLists(job: Bull.Job, done: any): Promise<void> {
 | 
			
		|||
		});
 | 
			
		||||
 | 
			
		||||
		for (const u of users) {
 | 
			
		||||
			const acct = u.host ? `${u.username}@${u.host}` : `${u.username}@${config.host}`;
 | 
			
		||||
			const acct = getFullApAccount(u.username, u.host);
 | 
			
		||||
			const content = `${list.title},${acct}`;
 | 
			
		||||
			await new Promise((res, rej) => {
 | 
			
		||||
				stream.write(content + '\n', err => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,13 +3,13 @@ import * as mongo from 'mongodb';
 | 
			
		|||
 | 
			
		||||
import { queueLogger } from '../../logger';
 | 
			
		||||
import User from '../../../models/user';
 | 
			
		||||
import config from '../../../config';
 | 
			
		||||
import follow from '../../../services/following/create';
 | 
			
		||||
import DriveFile from '../../../models/drive-file';
 | 
			
		||||
import { getOriginalUrl } from '../../../misc/get-drive-file-url';
 | 
			
		||||
import parseAcct from '../../../misc/acct/parse';
 | 
			
		||||
import resolveUser from '../../../remote/resolve-user';
 | 
			
		||||
import { downloadTextFile } from '../../../misc/download-text-file';
 | 
			
		||||
import { isSelfHost, toDbHost } from '../../../misc/convert-host';
 | 
			
		||||
 | 
			
		||||
const logger = queueLogger.createSubLogger('import-following');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -31,11 +31,11 @@ export async function importFollowing(job: Bull.Job, done: any): Promise<void> {
 | 
			
		|||
	for (const line of csv.trim().split('\n')) {
 | 
			
		||||
		const { username, host } = parseAcct(line.trim());
 | 
			
		||||
 | 
			
		||||
		let target = host === config.host ? await User.findOne({
 | 
			
		||||
		let target = isSelfHost(host) ? await User.findOne({
 | 
			
		||||
			host: null,
 | 
			
		||||
			usernameLower: username.toLowerCase()
 | 
			
		||||
		}) : await User.findOne({
 | 
			
		||||
			host: host,
 | 
			
		||||
			host: toDbHost(host),
 | 
			
		||||
			usernameLower: username.toLowerCase()
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,6 @@ import * as mongo from 'mongodb';
 | 
			
		|||
 | 
			
		||||
import { queueLogger } from '../../logger';
 | 
			
		||||
import User from '../../../models/user';
 | 
			
		||||
import config from '../../../config';
 | 
			
		||||
import UserList from '../../../models/user-list';
 | 
			
		||||
import DriveFile from '../../../models/drive-file';
 | 
			
		||||
import { getOriginalUrl } from '../../../misc/get-drive-file-url';
 | 
			
		||||
| 
						 | 
				
			
			@ -11,6 +10,7 @@ import parseAcct from '../../../misc/acct/parse';
 | 
			
		|||
import resolveUser from '../../../remote/resolve-user';
 | 
			
		||||
import { pushUserToUserList } from '../../../services/user-list/push';
 | 
			
		||||
import { downloadTextFile } from '../../../misc/download-text-file';
 | 
			
		||||
import { isSelfHost, toDbHost } from '../../../misc/convert-host';
 | 
			
		||||
 | 
			
		||||
const logger = queueLogger.createSubLogger('import-user-lists');
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -47,11 +47,11 @@ export async function importUserLists(job: Bull.Job, done: any): Promise<void> {
 | 
			
		|||
			});
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		let target = host === config.host ? await User.findOne({
 | 
			
		||||
		let target = isSelfHost(host) ? await User.findOne({
 | 
			
		||||
			host: null,
 | 
			
		||||
			usernameLower: username.toLowerCase()
 | 
			
		||||
		}) : await User.findOne({
 | 
			
		||||
			host: host,
 | 
			
		||||
			host: toDbHost(host),
 | 
			
		||||
			usernameLower: username.toLowerCase()
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue