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,
|
2017-08-10 09:08:23 -06:00
|
|
|
securityApi: lila.security.SecurityApi,
|
2021-02-10 04:23:50 -07:00
|
|
|
userLoginsApi: lila.security.UserLoginsApi,
|
2019-07-01 09:41:40 -06:00
|
|
|
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
|
|
|
|
2020-10-12 08:12:21 -06:00
|
|
|
lazy val scoreThresholdsSetting = ReportThresholds makeScoreSetting settingStore
|
2013-07-27 06:49:53 -06:00
|
|
|
|
2021-02-18 03:12:42 -07:00
|
|
|
lazy val discordScoreThresholdSetting = ReportThresholds makeDiscordSetting settingStore
|
2019-10-01 10:33:32 -06:00
|
|
|
|
2019-12-01 12:25:25 -07:00
|
|
|
private val thresholds = Thresholds(
|
2020-10-12 08:12:21 -06:00
|
|
|
score = scoreThresholdsSetting.get _,
|
2021-02-18 03:12:42 -07:00
|
|
|
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]
|
|
|
|
|
2021-04-30 01:24:12 -06:00
|
|
|
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
|
|
|
|
2017-01-14 08:30:10 -07:00
|
|
|
lazy val modFilters = new ModReportFilter
|
|
|
|
|
2014-01-13 15:51:49 -07:00
|
|
|
// 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) =>
|
2020-09-29 01:51:32 -06:00
|
|
|
api.autoCheatReport(userId, text).unit
|
2020-10-12 08:12:21 -06:00
|
|
|
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
|
|
|
|
)
|
2014-01-13 15:51:49 -07:00
|
|
|
|
2019-12-24 19:17:09 -07:00
|
|
|
lila.common.Bus.subscribeFun("playban", "autoFlag") {
|
2021-06-16 00:54:09 -06:00
|
|
|
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) =>
|
2020-09-29 01:51:32 -06:00
|
|
|
api.autoCommFlag(SuspectId(suspectId), resource, text).unit
|
2019-07-02 12:54:23 -06:00
|
|
|
}
|
2019-07-01 09:41:40 -06:00
|
|
|
|
2019-12-13 07:30:20 -07:00
|
|
|
system.scheduler.scheduleWithFixedDelay(1 minute, 1 minute) { () =>
|
2020-09-29 01:51:32 -06:00
|
|
|
api.inquiries.expire.unit
|
2019-12-13 07:30:20 -07:00
|
|
|
}
|
2013-07-27 06:49:53 -06:00
|
|
|
}
|