import { VideoModel } from '../models/video/video'
import { JobQueue } from './job-queue'
import { EmailPayload } from './job-queue/handlers/email'
-import { readFileSync } from 'fs'
+import { readFileSync } from 'fs-extra'
class Emailer {
private static instance: Emailer
private initialized = false
private transporter: Transporter
+ private enabled = false
private constructor () {}
tls,
auth
})
+
+ this.enabled = true
} else {
if (!isTestInstance()) {
logger.error('Cannot use SMTP server because of lack of configuration. PeerTube will not be able to send mails!')
}
}
+ isEnabled () {
+ return this.enabled
+ }
+
async checkConnectionOrDie () {
if (!this.transporter) return
return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
}
+ addVerifyEmailJob (to: string, verifyEmailUrl: string) {
+ const text = `Welcome to PeerTube,\n\n` +
+ `To start using PeerTube on ${CONFIG.WEBSERVER.HOST} you must verify your email! ` +
+ `Please follow this link to verify this email belongs to you: ${verifyEmailUrl}\n\n` +
+ `If you are not the person who initiated this request, please ignore this email.\n\n` +
+ `Cheers,\n` +
+ `PeerTube.`
+
+ const emailPayload: EmailPayload = {
+ to: [ to ],
+ subject: 'Verify your PeerTube email',
+ text
+ }
+
+ return JobQueue.Instance.createJob({ type: 'email', payload: emailPayload })
+ }
+
async addVideoAbuseReportJob (videoId: number) {
const video = await VideoModel.load(videoId)
if (!video) throw new Error('Unknown Video id during Abuse report.')
async addVideoUnblacklistReportJob (videoId: number) {
const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoId)
if (!video) throw new Error('Unknown Video id during Blacklist report.')
+ // It's not our user
+ if (video.remote === true) return
const user = await UserModel.loadById(video.VideoChannel.Account.userId)