lila/modules/report/src/main/Env.scala

86 lines
2.5 KiB
Scala
Raw Normal View History

2013-07-27 06:49:53 -06:00
package lila.report
import akka.actor._
2019-12-01 12:25:25 -07:00
import com.softwaremill.macwire._
import io.methvin.play.autoconfig._
import play.api.Configuration
import scala.concurrent.duration._
import lila.common.config._
@Module
2019-12-05 11:47:03 -07:00
private class ReportConfig(
2019-12-01 12:25:25 -07:00
@ConfigName("collection.report") val reportColl: CollName,
@ConfigName("score.threshold") val scoreThreshold: Int,
@ConfigName("actor.name") val actorName: String
)
2019-12-04 21:32:03 -07:00
@Module
2013-07-27 06:49:53 -06:00
final class Env(
2019-12-01 12:25:25 -07:00
appConfig: Configuration,
2019-12-05 08:46:00 -07:00
domain: lila.common.config.NetDomain,
2019-12-06 20:37:15 -07:00
db: lila.db.Db,
2019-12-04 21:32:03 -07:00
isOnline: lila.socket.IsOnline,
2019-12-01 12:25:25 -07:00
userRepo: lila.user.UserRepo,
2019-12-14 07:28:19 -07:00
lightUserAsync: lila.common.LightUser.Getter,
2019-12-01 12:25:25 -07:00
gameRepo: lila.game.GameRepo,
securityApi: lila.security.SecurityApi,
2021-02-10 04:23:50 -07:00
userLoginsApi: lila.security.UserLoginsApi,
playbanApi: lila.playban.PlaybanApi,
2021-06-10 03:03:47 -06:00
ircApi: lila.irc.IrcApi,
2019-12-01 12:25:25 -07:00
captcher: lila.hub.actors.Captcher,
fishnet: lila.hub.actors.Fishnet,
2017-12-04 13:56:31 -07:00
settingStore: lila.memo.SettingStore.Builder,
2019-12-23 15:32:54 -07:00
cacheApi: lila.memo.CacheApi
2020-06-24 03:37:18 -06:00
)(implicit
ec: scala.concurrent.ExecutionContext,
system: ActorSystem
) {
2019-12-01 12:25:25 -07:00
2019-12-05 11:47:03 -07:00
private val config = appConfig.get[ReportConfig]("report")(AutoConfig.loader)
2013-07-27 06:49:53 -06:00
2019-12-01 12:25:25 -07:00
private lazy val reportColl = db(config.reportColl)
2017-12-04 13:56:31 -07:00
lazy val scoreThresholdsSetting = ReportThresholds makeScoreSetting settingStore
2013-07-27 06:49:53 -06:00
lazy val discordScoreThresholdSetting = ReportThresholds makeDiscordSetting settingStore
2019-12-01 12:25:25 -07:00
private val thresholds = Thresholds(
score = scoreThresholdsSetting.get _,
discord = discordScoreThresholdSetting.get _
2017-08-08 17:35:16 -06:00
)
2020-08-21 14:40:37 -06:00
lazy val forms = wire[ReportForm]
2019-12-01 12:25:25 -07:00
private lazy val autoAnalysis = wire[AutoAnalysis]
private lazy val snoozer = new lila.memo.Snoozer[Report.SnoozeKey](cacheApi)
2019-12-01 12:25:25 -07:00
lazy val api = wire[ReportApi]
2013-07-27 06:49:53 -06:00
lazy val modFilters = new ModReportFilter
// api actor
2019-12-13 07:30:20 -07:00
system.actorOf(
Props(new Actor {
def receive = {
case lila.hub.actorApi.report.Cheater(userId, text) =>
api.autoCheatReport(userId, text).unit
case lila.hub.actorApi.report.Shutup(userId, text) =>
2021-03-21 14:14:32 -06:00
api.autoCommReport(userId, text).unit
2019-12-13 07:30:20 -07:00
}
}),
name = config.actorName
)
2019-12-24 19:17:09 -07:00
lila.common.Bus.subscribeFun("playban", "autoFlag") {
case lila.hub.actorApi.playban.Playban(userId, mins, _) => api.maybeAutoPlaybanReport(userId, mins).unit
2019-12-24 19:17:09 -07:00
case lila.hub.actorApi.report.AutoFlag(suspectId, resource, text) =>
api.autoCommFlag(SuspectId(suspectId), resource, text).unit
2019-07-02 12:54:23 -06:00
}
2019-12-13 07:30:20 -07:00
system.scheduler.scheduleWithFixedDelay(1 minute, 1 minute) { () =>
api.inquiries.expire.unit
2019-12-13 07:30:20 -07:00
}
2013-07-27 06:49:53 -06:00
}