Merge pull request #2115 from syeopite/crystal-1.0.0-2
Upgrade to crystal 1.0.0
This commit is contained in:
commit
a6e38e2ad2
10 changed files with 29 additions and 36 deletions
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -19,7 +19,7 @@ jobs:
|
||||||
- name: Install Crystal
|
- name: Install Crystal
|
||||||
uses: oprypin/install-crystal@v1.2.4
|
uses: oprypin/install-crystal@v1.2.4
|
||||||
with:
|
with:
|
||||||
crystal: 0.36.1
|
crystal: 1.0.0
|
||||||
|
|
||||||
- name: Cache Shards
|
- name: Cache Shards
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM crystallang/crystal:0.36.1-alpine AS builder
|
FROM crystallang/crystal:1.0.0-alpine AS builder
|
||||||
RUN apk add --no-cache curl sqlite-static yaml-static
|
RUN apk add --no-cache curl sqlite-static yaml-static
|
||||||
WORKDIR /invidious
|
WORKDIR /invidious
|
||||||
COPY ./shard.yml ./shard.yml
|
COPY ./shard.yml ./shard.yml
|
||||||
|
|
20
shard.lock
20
shard.lock
|
@ -2,39 +2,35 @@ version: 2.0
|
||||||
shards:
|
shards:
|
||||||
db:
|
db:
|
||||||
git: https://github.com/crystal-lang/crystal-db.git
|
git: https://github.com/crystal-lang/crystal-db.git
|
||||||
version: 0.10.0
|
version: 0.10.1
|
||||||
|
|
||||||
exception_page:
|
exception_page:
|
||||||
git: https://github.com/crystal-loot/exception_page.git
|
git: https://github.com/crystal-loot/exception_page.git
|
||||||
version: 0.1.4
|
version: 0.1.5
|
||||||
|
|
||||||
kemal:
|
kemal:
|
||||||
git: https://github.com/kemalcr/kemal.git
|
git: https://github.com/kemalcr/kemal.git
|
||||||
version: 0.27.0
|
version: 1.0.0
|
||||||
|
|
||||||
kilt:
|
kilt:
|
||||||
git: https://github.com/jeromegn/kilt.git
|
git: https://github.com/jeromegn/kilt.git
|
||||||
version: 0.4.0
|
version: 0.4.1
|
||||||
|
|
||||||
lsquic:
|
lsquic:
|
||||||
git: https://github.com/iv-org/lsquic.cr.git
|
git: https://github.com/iv-org/lsquic.cr.git
|
||||||
version: 2.18.1-1
|
version: 2.18.1-2
|
||||||
|
|
||||||
pg:
|
pg:
|
||||||
git: https://github.com/will/crystal-pg.git
|
git: https://github.com/will/crystal-pg.git
|
||||||
version: 0.23.1
|
version: 0.23.2
|
||||||
|
|
||||||
pool:
|
|
||||||
git: https://github.com/ysbaddaden/pool.git
|
|
||||||
version: 0.2.3
|
|
||||||
|
|
||||||
protodec:
|
protodec:
|
||||||
git: https://github.com/iv-org/protodec.git
|
git: https://github.com/iv-org/protodec.git
|
||||||
version: 0.1.3
|
version: 0.1.4
|
||||||
|
|
||||||
radix:
|
radix:
|
||||||
git: https://github.com/luislavena/radix.git
|
git: https://github.com/luislavena/radix.git
|
||||||
version: 0.3.9
|
version: 0.4.1
|
||||||
|
|
||||||
sqlite3:
|
sqlite3:
|
||||||
git: https://github.com/crystal-lang/crystal-sqlite3.git
|
git: https://github.com/crystal-lang/crystal-sqlite3.git
|
||||||
|
|
13
shard.yml
13
shard.yml
|
@ -12,23 +12,20 @@ targets:
|
||||||
dependencies:
|
dependencies:
|
||||||
pg:
|
pg:
|
||||||
github: will/crystal-pg
|
github: will/crystal-pg
|
||||||
version: ~> 0.23.1
|
version: ~> 0.23.2
|
||||||
sqlite3:
|
sqlite3:
|
||||||
github: crystal-lang/crystal-sqlite3
|
github: crystal-lang/crystal-sqlite3
|
||||||
version: ~> 0.18.0
|
version: ~> 0.18.0
|
||||||
kemal:
|
kemal:
|
||||||
github: kemalcr/kemal
|
github: kemalcr/kemal
|
||||||
version: ~> 0.27.0
|
version: ~> 1.0.0
|
||||||
pool:
|
|
||||||
github: ysbaddaden/pool
|
|
||||||
version: ~> 0.2.3
|
|
||||||
protodec:
|
protodec:
|
||||||
github: iv-org/protodec
|
github: iv-org/protodec
|
||||||
version: ~> 0.1.3
|
version: ~> 0.1.4
|
||||||
lsquic:
|
lsquic:
|
||||||
github: iv-org/lsquic.cr
|
github: iv-org/lsquic.cr
|
||||||
version: ~> 2.18.1-1
|
version: ~> 2.18.1-2
|
||||||
|
|
||||||
crystal: 0.36.1
|
crystal: 1.0.0
|
||||||
|
|
||||||
license: AGPLv3
|
license: AGPLv3
|
||||||
|
|
|
@ -166,7 +166,7 @@ end
|
||||||
|
|
||||||
before_all do |env|
|
before_all do |env|
|
||||||
preferences = begin
|
preferences = begin
|
||||||
Preferences.from_json(env.request.cookies["PREFS"]?.try &.value || "{}")
|
Preferences.from_json(URI.decode_www_form(env.request.cookies["PREFS"]?.try &.value || "{}"))
|
||||||
rescue
|
rescue
|
||||||
Preferences.from_json("{}")
|
Preferences.from_json("{}")
|
||||||
end
|
end
|
||||||
|
@ -421,7 +421,7 @@ get "/modify_notifications" do |env|
|
||||||
|
|
||||||
html = YT_POOL.client &.get("/subscription_manager?disable_polymer=1", headers)
|
html = YT_POOL.client &.get("/subscription_manager?disable_polymer=1", headers)
|
||||||
|
|
||||||
cookies = HTTP::Cookies.from_headers(headers)
|
cookies = HTTP::Cookies.from_client_headers(headers)
|
||||||
html.cookies.each do |cookie|
|
html.cookies.each do |cookie|
|
||||||
if {"VISITOR_INFO1_LIVE", "YSC", "SIDCC"}.includes? cookie.name
|
if {"VISITOR_INFO1_LIVE", "YSC", "SIDCC"}.includes? cookie.name
|
||||||
if cookies[cookie.name]?
|
if cookies[cookie.name]?
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
require "lsquic"
|
require "lsquic"
|
||||||
require "pool/connection"
|
require "db"
|
||||||
|
|
||||||
def add_yt_headers(request)
|
def add_yt_headers(request)
|
||||||
request.headers["user-agent"] ||= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
|
request.headers["user-agent"] ||= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
|
||||||
|
@ -20,7 +20,7 @@ struct YoutubeConnectionPool
|
||||||
property! url : URI
|
property! url : URI
|
||||||
property! capacity : Int32
|
property! capacity : Int32
|
||||||
property! timeout : Float64
|
property! timeout : Float64
|
||||||
property pool : ConnectionPool(QUIC::Client | HTTP::Client)
|
property pool : DB::Pool(QUIC::Client | HTTP::Client)
|
||||||
|
|
||||||
def initialize(url : URI, @capacity = 5, @timeout = 5.0, use_quic = true)
|
def initialize(url : URI, @capacity = 5, @timeout = 5.0, use_quic = true)
|
||||||
@url = url
|
@url = url
|
||||||
|
@ -43,7 +43,7 @@ struct YoutubeConnectionPool
|
||||||
conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
|
conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
|
||||||
response = yield conn
|
response = yield conn
|
||||||
ensure
|
ensure
|
||||||
pool.checkin(conn)
|
pool.release(conn)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ struct YoutubeConnectionPool
|
||||||
end
|
end
|
||||||
|
|
||||||
private def build_pool(use_quic)
|
private def build_pool(use_quic)
|
||||||
ConnectionPool(QUIC::Client | HTTP::Client).new(capacity: capacity, timeout: timeout) do
|
DB::Pool(QUIC::Client | HTTP::Client).new(initial_pool_size: 0, max_pool_size: capacity, max_idle_pool_size: capacity, checkout_timeout: timeout) do
|
||||||
if use_quic
|
if use_quic
|
||||||
conn = QUIC::Client.new(url)
|
conn = QUIC::Client.new(url)
|
||||||
else
|
else
|
||||||
|
|
|
@ -112,7 +112,7 @@ class Invidious::Jobs::BypassCaptchaJob < Invidious::Jobs::BaseJob
|
||||||
headers = HTTP::Headers{
|
headers = HTTP::Headers{
|
||||||
"Cookie" => URI.parse(response.headers["location"]).query_params["google_abuse"].split(";")[0],
|
"Cookie" => URI.parse(response.headers["location"]).query_params["google_abuse"].split(";")[0],
|
||||||
}
|
}
|
||||||
cookies = HTTP::Cookies.from_headers(headers)
|
cookies = HTTP::Cookies.from_client_headers(headers)
|
||||||
|
|
||||||
cookies.each { |cookie| CONFIG.cookies << cookie }
|
cookies.each { |cookie| CONFIG.cookies << cookie }
|
||||||
|
|
||||||
|
|
|
@ -238,7 +238,7 @@ class Invidious::Routes::Login < Invidious::Routes::BaseRoute
|
||||||
traceback << "Logging in..."
|
traceback << "Logging in..."
|
||||||
|
|
||||||
location = URI.parse(challenge_results[0][-1][2].to_s)
|
location = URI.parse(challenge_results[0][-1][2].to_s)
|
||||||
cookies = HTTP::Cookies.from_headers(headers)
|
cookies = HTTP::Cookies.from_client_headers(headers)
|
||||||
|
|
||||||
headers.delete("Content-Type")
|
headers.delete("Content-Type")
|
||||||
headers.delete("Google-Accounts-XSRF")
|
headers.delete("Google-Accounts-XSRF")
|
||||||
|
@ -261,7 +261,7 @@ class Invidious::Routes::Login < Invidious::Routes::BaseRoute
|
||||||
location = login.headers["Location"]?.try { |u| URI.parse(u) }
|
location = login.headers["Location"]?.try { |u| URI.parse(u) }
|
||||||
end
|
end
|
||||||
|
|
||||||
cookies = HTTP::Cookies.from_headers(headers)
|
cookies = HTTP::Cookies.from_client_headers(headers)
|
||||||
sid = cookies["SID"]?.try &.value
|
sid = cookies["SID"]?.try &.value
|
||||||
if !sid
|
if !sid
|
||||||
raise "Couldn't get SID."
|
raise "Couldn't get SID."
|
||||||
|
|
|
@ -198,10 +198,10 @@ class Invidious::Routes::PreferencesRoute < Invidious::Routes::BaseRoute
|
||||||
end
|
end
|
||||||
|
|
||||||
if CONFIG.domain
|
if CONFIG.domain
|
||||||
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: preferences, expires: Time.utc + 2.years,
|
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
|
||||||
secure: secure, http_only: true)
|
secure: secure, http_only: true)
|
||||||
else
|
else
|
||||||
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: preferences, expires: Time.utc + 2.years,
|
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
|
||||||
secure: secure, http_only: true)
|
secure: secure, http_only: true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -250,10 +250,10 @@ class Invidious::Routes::PreferencesRoute < Invidious::Routes::BaseRoute
|
||||||
end
|
end
|
||||||
|
|
||||||
if CONFIG.domain
|
if CONFIG.domain
|
||||||
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: preferences, expires: Time.utc + 2.years,
|
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
|
||||||
secure: secure, http_only: true)
|
secure: secure, http_only: true)
|
||||||
else
|
else
|
||||||
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: preferences, expires: Time.utc + 2.years,
|
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
|
||||||
secure: secure, http_only: true)
|
secure: secure, http_only: true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -462,7 +462,7 @@ def subscribe_ajax(channel_id, action, env_headers)
|
||||||
|
|
||||||
html = YT_POOL.client &.get("/subscription_manager?disable_polymer=1", headers)
|
html = YT_POOL.client &.get("/subscription_manager?disable_polymer=1", headers)
|
||||||
|
|
||||||
cookies = HTTP::Cookies.from_headers(headers)
|
cookies = HTTP::Cookies.from_client_headers(headers)
|
||||||
html.cookies.each do |cookie|
|
html.cookies.each do |cookie|
|
||||||
if {"VISITOR_INFO1_LIVE", "YSC", "SIDCC"}.includes? cookie.name
|
if {"VISITOR_INFO1_LIVE", "YSC", "SIDCC"}.includes? cookie.name
|
||||||
if cookies[cookie.name]?
|
if cookies[cookie.name]?
|
||||||
|
|
Loading…
Reference in a new issue