minsk-hackerspace / hackerspace.by

Website of Minsk Hackerspace (Ruby on Rails)
https://hackerspace.by/
11 stars 20 forks source link

Сломалось получение баланса #608

Closed jekhor closed 4 months ago

jekhor commented 5 months ago

Я пока не очень понимаю, что именно приводит к этому, но вылетает такая ошибка:

jek@jeknote:~/work/hackerspace/hspace$  bundle exec bin/rails runner 'BankFetcherService.fetch_balance'
RestClient.get "https://login.belinvestbank.by/signin", "Accept"=>"text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8", "Accept-charset"=>"utf-8, iso-8859-1, utf-16, *;q=0.7", "Accept-language"=>"en-US;q=0.5,en;q=0.4", "Referrer"=>"", "User-Agent"=>"Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
# => 200 OK | text/html 27392 bytes, 0.23s
RestClient.post "https://login.belinvestbank.by/signin", "login=mhs.bel&password=Q%D0%AE%D1%81%D0%B4.%D0%93%D1%8FfUy%D1%8E4&typeSessionKey=0", "Accept"=>"text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8", "Accept-charset"=>"utf-8, iso-8859-1, utf-16, *;q=0.7", "Accept-language"=>"en-US;q=0.5,en;q=0.4", "Content-Length"=>"82", "Content-Type"=>"application/x-www-form-urlencoded", "Cookie"=>"PHPSESSID=7k3991l9fm9lr8jhtl24dnobi3l3u8m80kph2889ngkrvp420ml0", "Referrer"=>"https://login.belinvestbank.by/signin", "User-Agent"=>"Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
# => 200 OK | text/html 27567 bytes, 3.33s
RestClient.get "https://ibank.belinvestbank.by/logout", "Accept"=>"text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8", "Accept-charset"=>"utf-8, iso-8859-1, utf-16, *;q=0.7", "Accept-language"=>"en-US;q=0.5,en;q=0.4", "Referrer"=>"https://login.belinvestbank.by/signin", "User-Agent"=>"Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
# => 302 Found | text/html 0 bytes, 0.28s
bundler: failed to load command: bin/rails (bin/rails)
/home/jek/work/hackerspace/hspace/app/services/bank_fetcher_service.rb:13:in `rescue in fetch_balance': Bank balance fetch error (RuntimeError)
        from /home/jek/work/hackerspace/hspace/app/services/bank_fetcher_service.rb:3:in `fetch_balance'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands/runner/runner_command.rb:46:in `<main>'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands/runner/runner_command.rb:46:in `eval'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands/runner/runner_command.rb:46:in `perform'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/command/base.rb:87:in `perform'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/command.rb:48:in `invoke'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands.rb:18:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<top (required)>'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:58:in `load'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:23:in `run'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli.rb:483:in `exec'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli.rb:31:in `dispatch'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli.rb:25:in `start'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/exe/bundle:48:in `block in <top (required)>'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/exe/bundle:36:in `<top (required)>'
        from /home/jek/.rbenv/versions/3.1.2/bin/bundle:25:in `load'
        from /home/jek/.rbenv/versions/3.1.2/bin/bundle:25:in `<main>'
/home/jek/.rbenv/versions/3.1.2/lib/ruby/3.1.0/unicode_normalize/normalize.rb:141:in `normalize': Unicode Normalization not appropriate for ASCII-8BIT (Encoding::CompatibilityError)
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/domain_name-0.6.20231109/lib/domain_name.rb:288:in `unicode_normalize'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/domain_name-0.6.20231109/lib/domain_name.rb:288:in `normalize'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/domain_name-0.6.20231109/lib/domain_name.rb:99:in `initialize'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie.rb:553:in `new'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie.rb:553:in `acceptable_from_uri?'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie.rb:591:in `valid_for_uri?'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:78:in `block (3 levels) in each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:74:in `delete_if'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:74:in `block (2 levels) in each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:72:in `each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:72:in `block in each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:71:in `each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar/hash_store.rb:71:in `each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar.rb:163:in `each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar.rb:131:in `each'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar.rb:131:in `sort'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/http-cookie-1.0.5/lib/http/cookie_jar.rb:131:in `cookies'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:265:in `make_cookie_header'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:412:in `make_headers'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:153:in `initialize'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:227:in `new'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:227:in `_follow_redirection'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:145:in `follow_redirection'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:121:in `return!'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:836:in `process_result'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:743:in `block in transmit'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http.rb:966:in `start'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:727:in `transmit'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:163:in `execute'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:63:in `execute'
        from /home/jek/work/hackerspace/hspace/lib/bib.rb:141:in `query_common'
        from /home/jek/work/hackerspace/hspace/lib/bib.rb:157:in `query'
        from /home/jek/work/hackerspace/hspace/lib/bib.rb:99:in `logout'
        from /home/jek/work/hackerspace/hspace/app/models/belinvestbank.rb:16:in `fetch_balance'
        from /home/jek/work/hackerspace/hspace/app/services/bank_fetcher_service.rb:7:in `fetch_balance'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands/runner/runner_command.rb:46:in `<main>'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands/runner/runner_command.rb:46:in `eval'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands/runner/runner_command.rb:46:in `perform'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/command/base.rb:87:in `perform'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/command.rb:48:in `invoke'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/railties-7.0.7.2/lib/rails/commands.rb:18:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<top (required)>'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:58:in `load'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli/exec.rb:23:in `run'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli.rb:483:in `exec'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli.rb:31:in `dispatch'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/cli.rb:25:in `start'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/exe/bundle:48:in `block in <top (required)>'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors'
        from /home/jek/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.13/exe/bundle:36:in `<top (required)>'
        from /home/jek/.rbenv/versions/3.1.2/bin/bundle:25:in `load'
        from /home/jek/.rbenv/versions/3.1.2/bin/bundle:25:in `<main>'

Т.е., в какой-то момент domain оказывается в кодировке ASCII-8BIT, с которой Normalize не знает, что делать.

jekhor commented 5 months ago

https://github.com/knu/ruby-domain_name/issues/23

Даунгрейд domain_name помогает.

abitrolly commented 5 months ago

Мдя.. Stacktrace, конечно, того. Не удивительно, что в Лондонском похапе юзают. :D

yahor commented 5 months ago

У логгер пішыцца дэтальны трэйс памылкі, трэба ў логах глянуць

    begin
      Rails.cache.write(
        "hs_balance",
        Belinvestbank.fetch_balance,
        expires_in: 3.hours
      ) unless Rails.env.development? or Rails.env.test?
    rescue => e
      Rails.logger.error(e.message)
      Rails.logger.error(e.backtrace)
      raise "Bank balance fetch error"
    end
  end

Дзесці тут праблема з кадзіроўкай думаю: /home/jek/work/hackerspace/hspace/lib/bib.rb:141:in `query_common'

  def query_common(base_url, method, path, body = nil)
      begin
        r = RestClient::Request.execute method: method,
          url: base_url + path,
          headers: HEADERS.merge(referrer: @referrer),
          payload: body,
          cookies: cookies(base_url)

        set_cookies(base_url, r.cookie_jar)
        @referrer = r.net_http_res.uri
      rescue RestClient::Exception => e
        set_cookies(base_url, e.response.cookie_jar) if e.response and e.response.cookies
        raise e
      end
      r
    end
jekhor commented 5 months ago

Я там даў спасылку на рэгрэсію ў donain_name

пн, 8 сту 2024, 13:25 карыстальнік Yahor @.***> напісаў:

У логгер да пішыцца дэтальны трэйс памылкі, трэба ў логах глянуць

def self.fetch_balance begin Rails.cache.write( "hs_balance", Belinvestbank.fetch_balance, expires_in: 3.hours ) unless Rails.env.development? or Rails.env.test? rescue => e Rails.logger.error(e.message) Rails.logger.error(e.backtrace) raise "Bank balance fetch error" end end

Дзесці тут праблема з кадзіроўкай думаю: /home/jek/work/hackerspace/hspace/lib/bib.rb:141:in `query_common'

def query_common(base_url, method, path, body = nil) begin r = RestClient::Request.execute method: method, url: base_url + path, headers: HEADERS.merge(referrer: @referrer), payload: body, cookies: cookies(base_url)

    set_cookies(base_url, r.cookie_jar)
    @referrer = r.net_http_res.uri
  rescue RestClient::Exception => e
    set_cookies(base_url, e.response.cookie_jar) if e.response and e.response.cookies
    raise e
  end
  r
end

— Reply to this email directly, view it on GitHub https://github.com/minsk-hackerspace/hackerspace.by/issues/608#issuecomment-1880820580, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAA4VW2LQBDQSESJYATKILLYNPJTDAVCNFSM6AAAAABBQVAQQWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQOBQHAZDANJYGA . You are receiving this because you authored the thread.Message ID: @.***>

yahor commented 5 months ago

ну, rest-client гем крыху пратух https://github.com/rest-client/rest-client/issues/827

jekhor commented 4 months ago

Пафіксілі ў https://github.com/knu/ruby-domain_name/pull/27

yahor commented 4 months ago

@jekhor абнавіць domain_name да v0.6.20240107 ?

jekhor commented 4 months ago

Ну я б пакуль не чапаў, там зараз стаіць версія да з'яўлення рэгрэсіі. Але калі яшчэ што рабіць будзем, то можна.