Changeset 6148


Ignore:
Timestamp:
Jun 11, 2008, 8:45:53 PM (14 years ago)
Author:
charles
Message:

maybe *now* 1.30 is feature complete: by popular demand, add proxy support for SOCKS4/SOCKS5. This will break the mac build temporarily.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/cli/transmissioncli.c

    r6120 r6148  
    183183            TR_DEFAULT_PROXY_ENABLED,
    184184            TR_DEFAULT_PROXY,
     185            TR_DEFAULT_PROXY_TYPE,
    185186            TR_DEFAULT_PROXY_AUTH_ENABLED,
    186187            TR_DEFAULT_PROXY_USERNAME,
  • trunk/daemon/daemon.c

    r6147 r6148  
    204204                                    TR_DEFAULT_PROXY_ENABLED,
    205205                                    TR_DEFAULT_PROXY,
     206                                    TR_DEFAULT_PROXY_TYPE,
    206207                                    TR_DEFAULT_PROXY_AUTH_ENABLED,
    207208                                    TR_DEFAULT_PROXY_USERNAME,
  • trunk/gtk/main.c

    r6120 r6148  
    435435                            pref_flag_get( PREF_KEY_PROXY_SERVER_ENABLED ),
    436436                            pref_string_get( PREF_KEY_PROXY_SERVER ),
     437                            pref_int_get( PREF_KEY_PROXY_TYPE ),
    437438                            pref_flag_get( PREF_KEY_PROXY_AUTH_ENABLED ),
    438439                            pref_string_get( PREF_KEY_PROXY_USERNAME ),
     
    980981        g_free( s );
    981982    }
     983    else if( !strcmp( key, PREF_KEY_PROXY_TYPE ) )
     984    {
     985        int i = pref_int_get( key );
     986        tr_sessionSetProxyType( tr, i );
     987    }
    982988    else if( !strcmp( key, PREF_KEY_PROXY_SERVER_ENABLED ) )
    983989    {
  • trunk/gtk/tr-prefs.c

    r6131 r6148  
    7979
    8080    pref_string_set_default ( PREF_KEY_PROXY_SERVER, "" );
     81    pref_int_set_default    ( PREF_KEY_PROXY_TYPE, TR_PROXY_HTTP );
    8182    pref_flag_set_default   ( PREF_KEY_PROXY_SERVER_ENABLED, FALSE );
    8283    pref_flag_set_default   ( PREF_KEY_PROXY_AUTH_ENABLED, FALSE );
  • trunk/gtk/tr-prefs.h

    r6065 r6148  
    6363#define PREF_KEY_PROXY_SERVER           "proxy-server"
    6464#define PREF_KEY_PROXY_SERVER_ENABLED   "proxy-server-enabled"
     65#define PREF_KEY_PROXY_TYPE             "proxy-type"
    6566#define PREF_KEY_PROXY_AUTH_ENABLED     "proxy-authentication-required"
    6667#define PREF_KEY_PROXY_USERNAME         "proxy-username"
  • trunk/libtransmission/session.c

    r6146 r6148  
    185185
    186186tr_handle *
    187 tr_sessionInitFull( const char  * configDir,
    188                     const char  * tag,
    189                     const char  * downloadDir,
    190                     int           isPexEnabled,
    191                     int           isPortForwardingEnabled,
    192                     int           publicPort,
    193                     int           encryptionMode,
    194                     int           isUploadLimitEnabled,
    195                     int           uploadLimit,
    196                     int           isDownloadLimitEnabled,
    197                     int           downloadLimit,
    198                     int           globalPeerLimit,
    199                     int           messageLevel,
    200                     int           isMessageQueueingEnabled,
    201                     int           isBlocklistEnabled,
    202                     int           peerSocketTOS,
    203                     int           rpcIsEnabled,
    204                     int           rpcPort,
    205                     const char  * rpcACL,
    206                     int           rpcAuthIsEnabled,
    207                     const char  * rpcUsername,
    208                     const char  * rpcPassword,
    209                     int           proxyIsEnabled,
    210                     const char  * proxy,
    211                     int           proxyAuthIsEnabled,
    212                     const char  * proxyUsername,
    213                     const char  * proxyPassword )
     187tr_sessionInitFull( const char    * configDir,
     188                    const char    * tag,
     189                    const char    * downloadDir,
     190                    int             isPexEnabled,
     191                    int             isPortForwardingEnabled,
     192                    int               publicPort,
     193                    int             encryptionMode,
     194                    int             isUploadLimitEnabled,
     195                    int             uploadLimit,
     196                    int             isDownloadLimitEnabled,
     197                    int             downloadLimit,
     198                    int             globalPeerLimit,
     199                    int             messageLevel,
     200                    int             isMessageQueueingEnabled,
     201                    int             isBlocklistEnabled,
     202                    int             peerSocketTOS,
     203                    int             rpcIsEnabled,
     204                    int             rpcPort,
     205                    const char    * rpcACL,
     206                    int             rpcAuthIsEnabled,
     207                    const char    * rpcUsername,
     208                    const char    * rpcPassword,
     209                    int             proxyIsEnabled,
     210                    const char    * proxy,
     211                    tr_proxy_type   proxyType,
     212                    int             proxyAuthIsEnabled,
     213                    const char    * proxyUsername,
     214                    const char    * proxyPassword )
    214215{
    215216    tr_handle * h;
     
    236237    h->isProxyEnabled = proxyIsEnabled ? 1 : 0;
    237238    h->proxy = tr_strdup( proxy );
     239    h->proxyType = proxyType;
    238240    h->isProxyAuthEnabled = proxyAuthIsEnabled ? 1 : 0;
    239241    h->proxyUsername = tr_strdup( proxyUsername );
     
    315317                               TR_DEFAULT_PROXY_ENABLED,
    316318                               TR_DEFAULT_PROXY,
     319                               TR_DEFAULT_PROXY_TYPE,
    317320                               TR_DEFAULT_PROXY_AUTH_ENABLED,
    318321                               TR_DEFAULT_PROXY_USERNAME,
     
    959962    session->isProxyEnabled = isEnabled ? 1 : 0;
    960963}
     964tr_proxy_type
     965tr_sessionGetProxyType( const tr_session * session )
     966{
     967    return session->proxyType;
     968}
     969void
     970tr_sessionSetProxyType( tr_session * session, tr_proxy_type type )
     971{
     972    session->proxyType = type;
     973}
    961974const char*
    962975tr_sessionGetProxy( const tr_session * session )
  • trunk/libtransmission/session.h

    r6140 r6148  
    7575    char                       * torrentDir;
    7676
     77    tr_proxy_type                proxyType;
    7778    char                       * proxy;
    7879    char                       * proxyUsername;
  • trunk/libtransmission/transmission.h

    r6146 r6148  
    9595 */
    9696
     97typedef enum
     98{
     99  TR_PROXY_HTTP,
     100  TR_PROXY_SOCKS4,
     101  TR_PROXY_SOCKS5
     102}
     103tr_proxy_type;
     104
    97105/** @see tr_sessionInitFull */
    98106#define TR_DEFAULT_CONFIG_DIR               tr_getDefaultConfigDir()
     
    121129/** @see tr_sessionInitFull */
    122130#define TR_DEFAULT_PROXY                    NULL
     131/** @see tr_sessionInitFull */
     132#define TR_DEFAULT_PROXY_TYPE               TR_PROXY_HTTP
    123133/** @see tr_sessionInitFull */
    124134#define TR_DEFAULT_PROXY_AUTH_ENABLED       0
     
    224234 * @see tr_sessionClose()
    225235 */
    226 tr_handle * tr_sessionInitFull( const char  * configDir,
    227                                 const char  * tag,
    228                                 const char  * downloadDir,
    229                                 int           isPexEnabled,
    230                                 int           isPortForwardingEnabled,
    231                                 int           publicPort,
    232                                 int           encryptionMode,
    233                                 int           isUploadLimitEnabled,
    234                                 int           uploadLimit,
    235                                 int           isDownloadLimitEnabled,
    236                                 int           downloadLimit,
    237                                 int           peerLimit,
    238                                 int           messageLevel,
    239                                 int           isMessageQueueingEnabled,
    240                                 int           isBlocklistEnabled,
    241                                 int           peerSocketTOS,
    242                                 int           rpcIsEnabled,
    243                                 int           rpcPort,
    244                                 const char  * rpcAccessControlList,
    245                                 int           rpcPasswordIsEnabled,
    246                                 const char  * rpcUsername,
    247                                 const char  * rpcPassword,
    248                                 int           proxyIsEnabled,
    249                                 const char  * proxy,
    250                                 int           proxyAuthIsEnabled,
    251                                 const char  * proxyUsername,
    252                                 const char  * proxyPassword );
     236tr_handle * tr_sessionInitFull( const char    * configDir,
     237                                const char    * tag,
     238                                const char    * downloadDir,
     239                                int             isPexEnabled,
     240                                int             isPortForwardingEnabled,
     241                                int             publicPort,
     242                                int             encryptionMode,
     243                                int             isUploadLimitEnabled,
     244                                int             uploadLimit,
     245                                int             isDownloadLimitEnabled,
     246                                int             downloadLimit,
     247                                int             peerLimit,
     248                                int             messageLevel,
     249                                int             isMessageQueueingEnabled,
     250                                int             isBlocklistEnabled,
     251                                int             peerSocketTOS,
     252                                int             rpcIsEnabled,
     253                                int             rpcPort,
     254                                const char    * rpcAccessControlList,
     255                                int             rpcPasswordIsEnabled,
     256                                const char    * rpcUsername,
     257                                const char    * rpcPassword,
     258                                int             proxyIsEnabled,
     259                                const char    * proxy,
     260                                tr_proxy_type   proxyType,
     261                                int             proxyAuthIsEnabled,
     262                                const char    * proxyUsername,
     263                                const char    * proxyPassword );
    253264
    254265
     
    410421**/
    411422
    412 int         tr_sessionIsProxyEnabled       ( const tr_session * );
    413 int         tr_sessionIsProxyAuthEnabled   ( const tr_session * );
    414 const char* tr_sessionGetProxy             ( const tr_session * );
    415 const char* tr_sessionGetProxyUsername     ( const tr_session * );
    416 const char* tr_sessionGetProxyPassword     ( const tr_session * );
    417 void        tr_sessionSetProxyEnabled      ( tr_session *, int isEnabled );
    418 void        tr_sessionSetProxyAuthEnabled  ( tr_session *, int isEnabled );
    419 void        tr_sessionSetProxy             ( tr_session *, const char * proxy );
    420 void        tr_sessionSetProxyUsername     ( tr_session *, const char * username );
    421 void        tr_sessionSetProxyPassword     ( tr_session *, const char * password );
     423int           tr_sessionIsProxyEnabled       ( const tr_session * );
     424int           tr_sessionIsProxyAuthEnabled   ( const tr_session * );
     425const char*   tr_sessionGetProxy             ( const tr_session * );
     426tr_proxy_type tr_sessionGetProxyType         ( const tr_session * );
     427const char*   tr_sessionGetProxyPassword     ( const tr_session * );
     428void          tr_sessionSetProxyEnabled      ( tr_session *, int isEnabled );
     429void          tr_sessionSetProxyAuthEnabled  ( tr_session *, int isEnabled );
     430void          tr_sessionSetProxy             ( tr_session *, const char * proxy );
     431void          tr_sessionSetProxyType         ( tr_session *, tr_proxy_type );
     432void          tr_sessionSetProxyUsername     ( tr_session *, const char * username );
     433void          tr_sessionSetProxyPassword     ( tr_session *, const char * password );
    422434
    423435/**
  • trunk/libtransmission/web.c

    r6120 r6148  
    129129}
    130130
     131static int
     132getCurlProxyType( tr_proxy_type t )
     133{
     134    switch( t )
     135    {
     136        case TR_PROXY_SOCKS4: return CURLPROXY_SOCKS4;
     137        case TR_PROXY_SOCKS5: return CURLPROXY_SOCKS5;
     138        default:              return CURLPROXY_HTTP;
     139    }
     140}
     141
     142
     143
    131144static void
    132145addTask( void * vtask )
     
    149162        if( !task->range && session->isProxyEnabled ) {
    150163            curl_easy_setopt( ch, CURLOPT_PROXY, session->proxy );
     164            curl_easy_setopt( ch, CURLOPT_PROXYTYPE, getCurlProxyType( session->proxyType ) );
    151165            curl_easy_setopt( ch, CURLOPT_PROXYAUTH, CURLAUTH_ANY );
    152166        }
Note: See TracChangeset for help on using the changeset viewer.