Skip to content

Commit

Permalink
Merge branch 'master' into autocomplete
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasf committed Oct 2, 2016
2 parents 21bf0f0 + ab90ddc commit bb370dc
Show file tree
Hide file tree
Showing 236 changed files with 1,330 additions and 912 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@
path = public/vendor/Sunsetter8
url = https://github.com/niklasf/Sunsetter8
branch = js
[submodule "public/vendor/stockfish.pexe"]
path = public/vendor/stockfish.pexe
url = https://github.com/niklasf/stockfish.pexe
branch = ddugovic
[submodule "public/vendor/jquery-textcomplete"]
path = public/vendor/jquery-textcomplete
url = https://github.com/yuku-t/jquery-textcomplete
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
sudo: false
language: scala

# https://docs.travis-ci.com/user/notifications/#IRC-notification
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ drop us an email at [email protected] and we'll discuss it.

### API Limits

To respect the API servers and avoid an IP ban, please wait 1 second between requests. If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429), please wait a full minute before resuming API usage.
To respect the API servers and avoid an IP ban, please wait 1 second between requests.
If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429), please wait a full minute before resuming API usage.

Please do not automate computer analysis requests. They're very expensive.

### `GET /api/user/<username>` fetch one user

Expand Down
1 change: 0 additions & 1 deletion app/Env.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ final class Env(
val CliUsername = config getString "cli.username"

private val RendererName = config getString "app.renderer.name"
private val WebPath = config getString "app.web_path"

lazy val bus = lila.common.Bus(system)

Expand Down
7 changes: 5 additions & 2 deletions app/controllers/Account.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import play.api.mvc._, Results._
import lila.api.Context
import lila.app._
import lila.common.LilaCookie
import lila.common.PimpedJson._
import lila.security.Permission
import lila.user.{ User => UserModel, UserRepo }
import views._
Expand Down Expand Up @@ -51,8 +52,10 @@ object Account extends LilaController {
"nowPlaying" -> JsArray(povs take 20 map Env.api.lobbyApi.nowPlaying),
"nbFollowing" -> nbFollowing,
"nbFollowers" -> nbFollowers,
"kid" -> me.kid,
"nbChallenges" -> nbChallenges)
"kid" -> me.kid.option(true),
"troll" -> me.troll.option(true),
"nbChallenges" -> nbChallenges
).noNull
}
}
}
Expand Down
58 changes: 25 additions & 33 deletions app/controllers/Analyse.scala
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
package controllers

import scala.util.{ Success, Failure }
import scala.concurrent.duration._

import akka.pattern.ask
import play.api.http.ContentTypes
import play.api.mvc._
import play.twirl.api.Html

import lila.api.Context
import lila.app._
import lila.common.HTTPRequest
import lila.evaluation.PlayerAssessments
import lila.game.{ Pov, Game => GameModel, GameRepo, PgnDump }
import lila.hub.actorApi.map.Tell
import lila.game.{ Pov, GameRepo }
import views._

import chess.Color

object Analyse extends LilaController {

private def env = Env.analyse
private def bookmarkApi = Env.bookmark.api
private val divider = Env.game.divider

def requestAnalysis(id: String) = Auth { implicit ctx =>
me =>
OptionFuResult(GameRepo game id) { game =>
Env.fishnet.analyser(game, lila.fishnet.Work.Sender(
userId = me.id.some,
ip = HTTPRequest.lastRemoteAddress(ctx.req).some,
mod = isGranted(_.Hunter),
system = false)) map {
case true => Ok
case false => Unauthorized
}
def requestAnalysis(id: String) = Auth { implicit ctx => me =>
OptionFuResult(GameRepo game id) { game =>
Env.fishnet.analyser(game, lila.fishnet.Work.Sender(
userId = me.id.some,
ip = HTTPRequest.lastRemoteAddress(ctx.req).some,
mod = isGranted(_.Hunter),
system = false)) map {
case true => Ok
case false => Unauthorized
}
}
}

def replay(pov: Pov, userTv: Option[lila.user.User])(implicit ctx: Context) =
Expand All @@ -56,19 +48,19 @@ object Analyse extends LilaController {
withMoveTimes = true,
withDivision = true,
withOpening = true) map { data =>
Ok(html.analyse.replay(
pov,
data,
initialFen,
Env.analyse.annotator(pgn, analysis, pov.game.opening, pov.game.winnerColor, pov.game.status, pov.game.clock).toString,
analysis,
analysisInProgress,
simul,
crosstable,
userTv,
chat,
bookmarked = bookmarked))
}
Ok(html.analyse.replay(
pov,
data,
initialFen,
Env.analyse.annotator(pgn, analysis, pov.game.opening, pov.game.winnerColor, pov.game.status, pov.game.clock).toString,
analysis,
analysisInProgress,
simul,
crosstable,
userTv,
chat,
bookmarked = bookmarked))
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/Lobby.scala
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ object Lobby extends LilaController {

private val cache = lila.memo.AsyncCache[RequestKey, Html](
f = renderRequestKey,
timeToLive = 500 millis)
timeToLive = 1 second)

private def renderCtx(implicit ctx: Context): Fu[Html] = Env.current.preloader(
posts = Env.forum.recent(ctx.me, Env.team.cached.teamIds),
Expand Down
20 changes: 16 additions & 4 deletions app/controllers/Main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,18 @@ object Main extends LilaController {
} inject Ok
}

def glyphs = Action { req =>
private lazy val glyphsResult: Result = {
import chess.format.pgn.Glyph
import lila.socket.tree.Node.glyphWriter
Ok(Json.obj(
"move" -> Glyph.MoveAssessment.all,
"position" -> Glyph.PositionAssessment.all,
"observation" -> Glyph.Observation.all
"move" -> Glyph.MoveAssessment.display,
"position" -> Glyph.PositionAssessment.display,
"observation" -> Glyph.Observation.display
)) as JSON
}
def glyphs = Action { req =>
glyphsResult
}

def image(id: String, hash: String, name: String) = Action.async { req =>
Env.db.image.fetch(id) map {
Expand All @@ -124,6 +127,15 @@ object Main extends LilaController {
}
}

val robots = Action { _ =>
Ok {
if (Env.api.Net.Crawlable)
"User-agent: *\nAllow: /\nDisallow: /game/export"
else
"User-agent: *\nDisallow: /"
}
}

def notFound(req: RequestHeader): Fu[Result] =
reqToCtx(req) map { implicit ctx =>
lila.mon.http.response.code404()
Expand Down
1 change: 1 addition & 0 deletions app/templating/Environment.scala
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ object Environment

def netDomain = apiEnv.Net.Domain
def netBaseUrl = apiEnv.Net.BaseUrl
val isGloballyCrawlable = apiEnv.Net.Crawlable

def isProd = apiEnv.isProd

Expand Down
4 changes: 2 additions & 2 deletions app/views/base/layout.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
menu: Option[Html] = None,
chat: Option[Html] = None,
underchat: Option[Html] = None,
robots: Boolean = true,
robots: Boolean = isGloballyCrawlable,
moreCss: Html = Html(""),
moreJs: Html = Html(""),
zen: Boolean = false,
Expand Down Expand Up @@ -149,7 +149,7 @@
<a class="fright link text data-count" href="@routes.Report.list" data-count="@reportNbUnprocessed" data-icon="@icon.mod"></a>
}
}
<a id="reconnecting" class="fright link" onclick="location.reload();" data-icon="B">&nbsp;@trans.reconnecting()</a>
<a id="reconnecting" class="fright link" onclick="window.location.reload()" data-icon="B">&nbsp;@trans.reconnecting()</a>
</div>
<div id="fpmenu">@fpmenu()</div>
<div class="content @ctx.is3d.fold("is3d", "is2d")">
Expand Down
6 changes: 0 additions & 6 deletions bin/build-deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,6 @@ cd gfc-semver
sbt publish-local
cd ..

git clone https://github.com/ornicar/ReactiveMongo --branch lichess
cd ReactiveMongo
git checkout b3e895f1c723d7cb518763f31fba62dc74311eab
sbt publish-local
cd ..

git clone https://github.com/ornicar/scalalib
cd scalalib
sbt publish-local
Expand Down
45 changes: 45 additions & 0 deletions bin/mongodb/puzzle-disable-broken-mate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
var puzzles = db.puzzle;
var count = 0;

function depthOf(obj) {
var level = 1;
var key;

for (key in obj) {
if (!obj.hasOwnProperty(key)) continue;

if (typeof obj[key] === 'object') {
var depth = depthOf(obj[key]) + 1;
level = Math.max(depth, level);
}
}
return level;
}

puzzles.find({
"mate": true,
"_id": {
"$gt": 60120
},
'vote.sum': {
'$gt': -8000
}
}).forEach(function(p) {
var depth = depthOf(p);
if (depth % 2 === 1) {
count++;
puzzles.update({
_id: p._id
}, {
$set: {
vote: {
up: NumberInt(0),
down: NumberInt(9000),
sum: NumberInt(-9000)
}
}
});
print(p._id);
}
});
print("Disabled " + count + " puzzles");
21 changes: 21 additions & 0 deletions bin/mongodb/puzzle-disable-endgames.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var puzzles = db.puzzle;
var count = 0;
puzzles.find().forEach(function(p) {
var parts = p.fen.split(/\s/);
var pieceCount = parts[0].split(/[nbrqkp]/i).length - 1;
if (pieceCount < 9 && p.vote.sum < 50 && p.vote.sum > -1000) {
count++;
puzzles.update({
_id: p._id
}, {
$set: {
vote: {
up: NumberInt(0),
down: NumberInt(0),
sum: NumberInt(-9000)
}
}
});
}
});
print("Disabled " + count + " puzzles");
10 changes: 10 additions & 0 deletions bin/mongodb/puzzle-salvage-old-good.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
var coll = db.puzzle;
coll.find({_id:{$lt:60120},'vote.sum':{$gte:100}}).sort({_id:1}).forEach(function(p) {
if (coll.count({fen:p.fen}) == 1) {
var nextId = coll.find({},{_id:1}).sort({_id:-1}).limit(1)[0]._id + 1;
p.salvaged = NumberInt(p._id);
p._id = NumberInt(nextId);
print(p.salvaged + ' -> ' + p._id);
coll.insert(p);
}
});
4 changes: 3 additions & 1 deletion bin/prod/deploy
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ if [ $mode = "main" ]; then
$CLI deploy pre
fi

bin/dev ";stage;exit"
SBT_OPTS=""
export JAVA_OPTS="-Xms1024M -Xmx1024M -XX:ReservedCodeCacheSize=64m -XX:+UseConcMarkSweepGC"
sbt ";stage;exit"
if [ $? != 0 ]; then
lilalog "Deploy canceled"
exit 1
Expand Down
4 changes: 3 additions & 1 deletion conf/base.conf
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@ net {
ip = "5.196.91.160"
asset {
domain = ${net.domain}
version = 1126
version = 1141
}
email = "[email protected]"
crawlable = false
}
forcedev = false
play {
Expand Down Expand Up @@ -217,6 +218,7 @@ bookmark {
}
analyse {
collection.analysis = analysis2
collection.requester = analysis_requester
net.domain = ${net.domain}
cached.nb.ttl = ${game.cached.nb.ttl}
paginator.max_per_page = ${game.paginator.max_per_page}
Expand Down
7 changes: 7 additions & 0 deletions conf/logback.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@
<!-- </appender> -->
<!-- </logger> -->

<logger name="reactivemongo" level="DEBUG">
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/reactivemongo.log</file>
<encoder><pattern>%date [%level] %message%n%xException</pattern></encoder>
</appender>
</logger>

<logger name="lobby" level="DEBUG">
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/lobby.log</file>
Expand Down
2 changes: 2 additions & 0 deletions conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -492,3 +492,5 @@ POST /jslog/$id<\w{12}> controllers.Main.jslog(id)
# Assets
GET /glyphs controllers.Main.glyphs
GET /assets/*file controllers.Assets.at(path="/public", file)

GET /robots.txt controllers.Main.robots
3 changes: 3 additions & 0 deletions modules/analyse/src/main/Analyser.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ package lila.analyse
import akka.actor.ActorSelection

import chess.format.FEN
import lila.db.dsl._
import lila.game.actorApi.InsertGame
import lila.game.{ Game, GameRepo }
import lila.hub.actorApi.map.Tell

final class Analyser(
indexer: ActorSelection,
requesterApi: RequesterApi,
roundSocket: ActorSelection,
bus: lila.common.Bus) {

Expand All @@ -21,6 +23,7 @@ final class Analyser(
sendAnalysisProgress(analysis) >>- {
bus.publish(actorApi.AnalysisReady(game, analysis), 'analysisReady)
indexer ! InsertGame(game)
requesterApi save analysis
}
}
}
Expand Down
Loading

0 comments on commit bb370dc

Please sign in to comment.