<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>10612</bug_id>
          
          <creation_ts>2007-01-08 18:13:00 +0300</creation_ts>
          <short_desc>lyrics_lyrc.rb gets wrong proxy</short_desc>
          <delta_ts>2018-07-23 12:14:13 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kde4-amarok</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Yakshin">greycat</reporter>
          <assigned_to name="Sergey V Turchin">zerg</assigned_to>
          <cc>grenka</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>44297</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Yakshin">greycat</who>
    <bug_when>2007-01-08 18:13:00 +0300</bug_when>
    <thetext>В amarok есть скрипт, получающий текст играющей в данный момент песни, лежит в
/usr/share/apps/amarok/scripts/lyrics_lyrc/lyrics_lyrc.rb.

Скрипт написан на Ruby и использует для работы с сетью методы стандартных
библиотек этого языка, а не напрямую методы kdelibs, которые использует сам
amarok. Чтобы работать корректно, скрипт запрашивает у amarok конфигурацию
сетевого подключения, а именно настройки прокси, с помощью такого запроса dcop:

    proxy_host = nil
    proxy_port = nil
    if ( @proxy == nil )
        @proxy = `dcop amarok script proxyForProtocol http`
    end
    proxy_uri = URI.parse( @proxy )
    if ( proxy_uri.class != URI::Generic )
        proxy_host = proxy_uri.host
        proxy_port = proxy_uri.port
    end

amarok же в свою очередь обращается к KDE за этими настройками и делает это не
совсем корректно. В настройках KDE может быть действительно указана прокси (была
указана когда-то давно), но при этом флажок использовать ее не стоит - выбран
вариант прямого подключения. Видимо, amarok не глядя берет настройки из
~/.kde/share/config/kioslaverc, у меня они такие:

[Proxy Settings]
AuthMode=0
NoProxyFor=.house28,.house28.ru,localhost
Proxy Config Script=
ProxyType=0
ReversedException=false
ftpProxy=http://127.0.0.1:3128
httpProxy=http://127.0.0.1:3128
httpsProxy=http://127.0.0.1:3128

и, игнорируя ProxyType, просто выдает то, что есть в поле httpProxy. В
результате при попытке посмотреть текст песни скрипт сваливается с ошибкой
доступа, причем если разбираться - то он лезет через какую-то очень странную
прокси, которая в системе нигде, кроме как в полувыключенных конфигах, не
фигурирует.

Общее предложение: исправить вызов proxyForProtocol в amarok с тем, чтобы он
выдавал корректные настройки прокси.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44298</commentid>
    <comment_count>1</comment_count>
    <who name="Mikhail Yakshin">greycat</who>
    <bug_when>2007-01-08 18:16:29 +0300</bug_when>
    <thetext>Добавил zerg@ с целью проконсультироваться, как с точки зрения KDE правильнее
всего должен себя вести amarok? Сейчас он, видимо, читает напрямую конфиг
kioslave - может быть есть в kdelibs какие-то методы, которыми правильно
получать это значение? Или вообще amarok не должен иметь такого вызова,
правильнее делать dcop запрос к какому-то компоненту KDE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44299</commentid>
    <comment_count>2</comment_count>
    <who name="Mikhail Yakshin">greycat</who>
    <bug_when>2007-01-08 18:21:44 +0300</bug_when>
    <thetext>Быстрые разбирательства показали, что внутри amarok использует очень простой
вызов из kdelibs:

    QString
    proxyForProtocol(const QString&amp; protocol)
    {
        return KProtocolManager::proxyFor( protocol );
    }

Вот здесь он документирован:
http://developer.kde.org/documentation/library/3.4-api/kio/html/classKProtocolManager.html#e12

Из документации ясно, что по идее - он должен возвращать &quot;the proxy server
address if one is available, or QString::null if not available&quot;, т.е. в случае
отключенного прокси - возвращать QString::null?

Это стоит исправить в kdelibs или нужно пробрасывать через amarok еще и proxyType

http://developer.kde.org/documentation/library/3.4-api/kio/html/classKProtocolManager.html#w7

и анализировать его в скрипте?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44765</commentid>
    <comment_count>3</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2007-01-25 14:02:38 +0300</bug_when>
    <thetext>dcop amarok script proxyForUrl http://xxx
значит оттуда содрать можно</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44766</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2007-01-25 14:52:41 +0300</bug_when>
    <thetext>А может и просто писать в скрипте
@proxy = `dcop amarok script proxyForUrl http://www.ru`
Я не знаю, вдруг поведение proxyForProtocol так задумано</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172722</commentid>
    <comment_count>5</comment_count>
    <who name="Grigory Ustinov">grenka</who>
    <bug_when>2018-07-18 22:11:56 +0300</bug_when>
    <thetext>Такого пакета больше нет в сизифе. Закрываю багу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172744</commentid>
    <comment_count>6</comment_count>
    <who name="Grigory Ustinov">grenka</who>
    <bug_when>2018-07-19 19:01:15 +0300</bug_when>
    <thetext>Переоткрываю багу и переношу на нужный компонент.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172850</commentid>
    <comment_count>7</comment_count>
    <who name="Sergey V Turchin">zerg</who>
    <bug_when>2018-07-23 12:14:13 +0300</bug_when>
    <thetext>Там сейчас всё сильно по другому и написано на JS.
Судя по тексту /usr/share/kde4/apps/amarok/scripts/lyrics_lyricwiki/main.js конкретно этой проблеме он не подвержен.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>