generalize to list of socket domains
parent
51f001bb55
commit
c4aa7cc50f
|
@ -15,7 +15,7 @@ trait AssetHelper { self: I18nHelper with SecurityHelper =>
|
|||
|
||||
def netDomain: lila.common.config.NetDomain
|
||||
lazy val assetDomain = env.net.assetDomain
|
||||
lazy val socketDomain = env.net.socketDomain
|
||||
lazy val socketDomains = env.net.socketDomains
|
||||
lazy val vapidPublicKey = env.push.vapidPublicKey
|
||||
|
||||
lazy val sameAssetDomain = netDomain.value == assetDomain.value
|
||||
|
@ -105,20 +105,13 @@ trait AssetHelper { self: I18nHelper with SecurityHelper =>
|
|||
|
||||
def basicCsp(implicit req: RequestHeader): ContentSecurityPolicy = {
|
||||
val assets = if (req.secure) s"https://$assetDomain" else assetDomain.value
|
||||
val socket = {
|
||||
val sockets = socketDomains map { socketDomain =>
|
||||
val protocol = if (req.secure) "wss://" else "ws://"
|
||||
val port = if (socketDomain.contains(":")) "" else ":*"
|
||||
s"$protocol$socketDomain$port"
|
||||
s"$protocol$socketDomain"
|
||||
}
|
||||
ContentSecurityPolicy(
|
||||
defaultSrc = List("'self'", assets),
|
||||
connectSrc = List(
|
||||
"'self'",
|
||||
assets,
|
||||
socket,
|
||||
env.explorerEndpoint,
|
||||
env.tablebaseEndpoint
|
||||
),
|
||||
connectSrc = "'self'" :: assets :: sockets ::: env.explorerEndpoint :: env.tablebaseEndpoint :: Nil,
|
||||
styleSrc = List("'self'", "'unsafe-inline'", assets),
|
||||
fontSrc = List("'self'", assetDomain.value, "https://fonts.gstatic.com"),
|
||||
frameSrc = List("'self'", assets, "https://www.youtube.com", "https://player.twitch.tv"),
|
||||
|
|
|
@ -124,13 +124,13 @@ object layout {
|
|||
private val spaceRegex = """\s{2,}+""".r
|
||||
private def spaceless(html: String) = raw(spaceRegex.replaceAllIn(html.replace("\\n", ""), ""))
|
||||
|
||||
private val dataVapid = attr("data-vapid")
|
||||
private val dataUser = attr("data-user")
|
||||
private val dataSoundSet = attr("data-sound-set")
|
||||
private val dataSocketDomain = attr("data-socket-domain")
|
||||
private val dataPreload = attr("data-preload")
|
||||
private val dataNonce = attr("data-nonce")
|
||||
private val dataAnnounce = attr("data-announce")
|
||||
private val dataVapid = attr("data-vapid")
|
||||
private val dataUser = attr("data-user")
|
||||
private val dataSoundSet = attr("data-sound-set")
|
||||
private val dataSocketDomains = attr("data-socket-domains")
|
||||
private val dataPreload = attr("data-preload")
|
||||
private val dataNonce = attr("data-nonce")
|
||||
private val dataAnnounce = attr("data-announce")
|
||||
|
||||
def apply(
|
||||
title: String,
|
||||
|
@ -204,7 +204,7 @@ object layout {
|
|||
dataVapid := vapidPublicKey,
|
||||
dataUser := ctx.userId,
|
||||
dataSoundSet := ctx.currentSoundSet.toString,
|
||||
dataSocketDomain := socketDomain,
|
||||
dataSocketDomains := socketDomains.mkString(","),
|
||||
dataAssetUrl := assetBaseUrl,
|
||||
dataAssetVersion := assetVersion.value,
|
||||
dataNonce := ctx.nonce.ifTrue(sameAssetDomain).map(_.value),
|
||||
|
|
|
@ -4,7 +4,7 @@ mongodb {
|
|||
}
|
||||
net {
|
||||
domain = "localhost:9663"
|
||||
socket.domain = "localhost:9664"
|
||||
socket.domains = [ "localhost:9664" ]
|
||||
asset.domain = ${net.domain}
|
||||
protocol = "http://"
|
||||
base_url = ${net.protocol}${net.domain}
|
||||
|
|
|
@ -35,7 +35,7 @@ object config {
|
|||
protocol: String,
|
||||
@ConfigName("base_url") baseUrl: BaseUrl,
|
||||
@ConfigName("asset.domain") assetDomain: AssetDomain,
|
||||
@ConfigName("socket.domain") socketDomain: String,
|
||||
@ConfigName("socket.domains") socketDomains: List[String],
|
||||
crawlable: Boolean,
|
||||
@ConfigName("ratelimit") rateLimit: Boolean,
|
||||
email: EmailAddress,
|
||||
|
|
|
@ -233,9 +233,7 @@ lichess.StrongSocket = function(url, version, settings) {
|
|||
}
|
||||
};
|
||||
|
||||
const baseUrls = (
|
||||
d => [d].concat((d.includes('lichess.org') ? [5, 6, 7, 8, 9] : []).map(port => d + ':' + (9020 + port)))
|
||||
)(document.body.getAttribute('data-socket-domain'));
|
||||
const baseUrls = document.body.getAttribute('data-socket-domains').split(',');
|
||||
|
||||
const baseUrl = function() {
|
||||
let url = storage.get();
|
||||
|
|
Loading…
Reference in New Issue