diff --git a/build.sbt b/build.sbt index 7b06cc8..621af6d 100644 --- a/build.sbt +++ b/build.sbt @@ -4,13 +4,14 @@ import org.scalajs.linker.interface.ModuleSplitStyle import scala.sys.process.* -lazy val projectVersion = "2.3.3" +lazy val projectVersion = "2.3.4" lazy val organizationName = "ru.trett" lazy val scala3Version = "3.7.4" lazy val circeVersion = "0.14.15" -lazy val htt4sVersion = "1.0.0-M39" +lazy val htt4sVersion = "1.0.0-M45" lazy val logs4catVersion = "2.7.1" lazy val otel4sVersion = "0.14.0" +lazy val doobieVersion = "1.0.0-RC11" lazy val customScalaOptions = Seq("-Wunused:imports", "-rewrite", "-source:3.4-migration") lazy val buildClientDist = taskKey[File]("Build client optimized package") @@ -117,7 +118,7 @@ lazy val server = project "org.tpolecat" %% "doobie-hikari", "org.tpolecat" %% "doobie-postgres", "org.tpolecat" %% "doobie-postgres-circe" - ).map(_ % "1.0.0-RC5"), + ).map(_ % doobieVersion), libraryDependencies += "org.jsoup" % "jsoup" % "1.21.2", libraryDependencies += "com.github.blemale" %% "scaffeine" % "5.3.0", libraryDependencies += "org.flywaydb" % "flyway-database-postgresql" % "11.17.2" % "runtime", diff --git a/scripts/local-docker/docker-compose.yml b/scripts/local-docker/docker-compose.yml index e6f9bc4..8f57dc4 100644 --- a/scripts/local-docker/docker-compose.yml +++ b/scripts/local-docker/docker-compose.yml @@ -24,7 +24,7 @@ services: - host.docker.internal:host-gateway server: - image: server:2.3.3 + image: server:2.3.4 container_name: rss_server restart: always depends_on: diff --git a/server/src/main/scala/ru/trett/rss/server/Server.scala b/server/src/main/scala/ru/trett/rss/server/Server.scala index 18caf7a..9c82349 100644 --- a/server/src/main/scala/ru/trett/rss/server/Server.scala +++ b/server/src/main/scala/ru/trett/rss/server/Server.scala @@ -108,13 +108,31 @@ object Server extends IOApp: _ <- logger.info( "Starting server on port: " + appConfig.server.port ) + authFilter <- AuthFilter[IO] + jarRoutes <- resourceServiceBuilder[IO]("/public").toRoutes + appRoutes <- + corsPolicy( + jarRoutes <+> + routes( + sessionManager, + channelService, + userService, + feedService, + appConfig.oauth, + authFilter, + client, + summarizeService, + new LogoutController[IO]( + sessionManager + ) + ) + ) exitCode <- UpdateTask( channelService, userService ).background.void .surround { for { - authFilter <- AuthFilter[IO] server <- EmberServerBuilder .default[IO] .withHost(ipv4"0.0.0.0") @@ -122,23 +140,7 @@ object Server extends IOApp: Port.fromInt(appConfig.server.port).get ) .withHttpApp( - withErrorLogging( - corsPolicy( - routes( - sessionManager, - channelService, - userService, - feedService, - appConfig.oauth, - authFilter, - client, - summarizeService, - new LogoutController[IO]( - sessionManager - ) - ) - ) - ).orNotFound + withErrorLogging(appRoutes).orNotFound ) .build .use(_ => IO.never) @@ -204,11 +206,11 @@ object Server extends IOApp: logoutController ) ) - private def resourceRoutes: HttpRoutes[IO] = - val indexRoute = HttpRoutes.of[IO] { case request @ GET -> Root => + + private def indexRoute: HttpRoutes[IO] = + HttpRoutes.of[IO] { case request @ GET -> Root => StaticFile.fromResource("/public/index.html", Some(request)).getOrElseF(NotFound()) } - indexRoute <+> resourceServiceBuilder[IO]("/public").toRoutes private def unprotectedRoutes( sessionManager: SessionManager[IO], @@ -216,7 +218,7 @@ object Server extends IOApp: userService: UserService, client: Client[IO] ): HttpRoutes[IO] = - LoginController.routes(sessionManager, oauthConfig, userService, client) <+> resourceRoutes + LoginController.routes(sessionManager, oauthConfig, userService, client) <+> indexRoute private def authedRoutes( channelService: ChannelService,