]> granicus.if.org Git - transmission/commitdiff
(libT) add proxy port arg as requested by BentMyWookie
authorCharles Kerr <charles@transmissionbt.com>
Tue, 15 Jul 2008 01:03:03 +0000 (01:03 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Tue, 15 Jul 2008 01:03:03 +0000 (01:03 +0000)
cli/cli.c
daemon/daemon.c
gtk/main.c
gtk/tr-prefs.c
gtk/tr-prefs.h
libtransmission/session.c
libtransmission/session.h
libtransmission/transmission.h
libtransmission/web.c

index a597e730e773418cfe537fcf30a8c5c19159a7a4..6fe26bb10031d5828e0dd110894d9587e0b17b09 100644 (file)
--- a/cli/cli.c
+++ b/cli/cli.c
@@ -286,6 +286,7 @@ main( int argc, char ** argv )
             FALSE, "fnord", "potzrebie",
             TR_DEFAULT_PROXY_ENABLED,
             TR_DEFAULT_PROXY,
+            TR_DEFAULT_PROXY_PORT,
             TR_DEFAULT_PROXY_TYPE,
             TR_DEFAULT_PROXY_AUTH_ENABLED,
             TR_DEFAULT_PROXY_USERNAME,
index b64838af9ea565809cd1587bdc0879570fb98830..9dc74c7e70ccbf40e6535571a2644470f7a93734 100644 (file)
@@ -193,6 +193,7 @@ session_init( const char * configDir, const char * downloadDir,
                                     TRUE, rpcPort, acl, authRequired, username, password,
                                     TR_DEFAULT_PROXY_ENABLED,
                                     TR_DEFAULT_PROXY,
+                                    TR_DEFAULT_PROXY_PORT,
                                     TR_DEFAULT_PROXY_TYPE,
                                     TR_DEFAULT_PROXY_AUTH_ENABLED,
                                     TR_DEFAULT_PROXY_USERNAME,
index 0bcd41db4a93e658402a0417cafacf2cc67fe4b2..bc655dc4e45c647f2e3f5bda41ca48b98b786186 100644 (file)
@@ -433,6 +433,7 @@ main( int argc, char ** argv )
                             pref_string_get( PREF_KEY_RPC_PASSWORD ),
                             pref_flag_get( PREF_KEY_PROXY_SERVER_ENABLED ),
                             pref_string_get( PREF_KEY_PROXY_SERVER ),
+                            pref_int_get( PREF_KEY_PROXY_PORT ),
                             pref_int_get( PREF_KEY_PROXY_TYPE ),
                             pref_flag_get( PREF_KEY_PROXY_AUTH_ENABLED ),
                             pref_string_get( PREF_KEY_PROXY_USERNAME ),
index 2edb06a24fdda5060c371a82242c6f0c773c7dd0..6e01e8e7babc8f683c17bc84fb2022bcaba781e9 100644 (file)
@@ -78,9 +78,10 @@ tr_prefs_init_global( void )
     pref_int_set_default    ( PREF_KEY_MAIN_WINDOW_Y, 50 );
 
     pref_string_set_default ( PREF_KEY_PROXY_SERVER, "" );
-    pref_int_set_default    ( PREF_KEY_PROXY_TYPE, TR_PROXY_HTTP );
-    pref_flag_set_default   ( PREF_KEY_PROXY_SERVER_ENABLED, FALSE );
-    pref_flag_set_default   ( PREF_KEY_PROXY_AUTH_ENABLED, FALSE );
+    pref_int_set_default    ( PREF_KEY_PROXY_PORT, TR_DEFAULT_PROXY_PORT );
+    pref_int_set_default    ( PREF_KEY_PROXY_TYPE, TR_DEFAULT_PROXY_TYPE );
+    pref_flag_set_default   ( PREF_KEY_PROXY_SERVER_ENABLED, TR_DEFAULT_PROXY_ENABLED );
+    pref_flag_set_default   ( PREF_KEY_PROXY_AUTH_ENABLED, TR_DEFAULT_PROXY_AUTH_ENABLED );
     pref_string_set_default ( PREF_KEY_PROXY_USERNAME, "" );
     pref_string_set_default ( PREF_KEY_PROXY_PASSWORD, "" );
 
@@ -964,12 +965,12 @@ onProxyTypeChanged( GtkComboBox * w, gpointer gpage )
 }
 
 static GtkWidget*
-networkPage( GObject * core )
+trackerPage( GObject * core )
 {
     int row = 0;
     const char * s;
     GtkWidget * t;
-    GtkWidget * w, * w2;
+    GtkWidget * w;
     GtkTreeModel * m;
     GtkCellRenderer * r;
     struct ProxyPage * page = tr_new0( struct ProxyPage, 1 );
@@ -977,30 +978,6 @@ networkPage( GObject * core )
     page->core = TR_CORE( core );
 
     t = hig_workarea_create( );
-    hig_workarea_add_section_title (t, &row, _( "Router" ) );
-
-        s = _("Use UPnP or NAT-PMP port _forwarding from my router" );
-        w = new_check_button( s, PREF_KEY_PORT_FORWARDING, core );
-        hig_workarea_add_wide_control( t, &row, w );
-
-    hig_workarea_add_section_divider( t, &row );
-    hig_workarea_add_section_title (t, &row, _("Bandwidth"));
-
-        s = _("Limit _download speed (KB/s):");
-        w = new_check_button( s, PREF_KEY_DL_LIMIT_ENABLED, core );
-        w2 = new_spin_button( PREF_KEY_DL_LIMIT, core, 0, INT_MAX, 5 );
-        gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_DL_LIMIT_ENABLED ) );
-        g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
-        hig_workarea_add_row_w( t, &row, w, w2, NULL );
-
-        s = _("Limit _upload speed (KB/s):");
-        w = new_check_button( s, PREF_KEY_UL_LIMIT_ENABLED, core );
-        w2 = new_spin_button( PREF_KEY_UL_LIMIT, core, 0, INT_MAX, 5 );
-        gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_UL_LIMIT_ENABLED ) );
-        g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
-        hig_workarea_add_row_w( t, &row, w, w2, NULL );
-
-    hig_workarea_add_section_divider( t, &row );
     hig_workarea_add_section_title (t, &row, _( "Tracker Proxy" ) );
 
         s = _( "Connect to tracker with HTTP proxy" );
@@ -1014,6 +991,11 @@ networkPage( GObject * core )
         w = hig_workarea_add_row( t, &row, s, w, NULL );
         page->proxy_widgets = g_slist_append( page->proxy_widgets, w );
 
+        w = new_spin_button( PREF_KEY_PROXY_PORT, core, 0, 65536, 1 );
+        page->proxy_widgets = g_slist_append( page->proxy_widgets, w );
+        w = hig_workarea_add_row( t, &row, _( "Proxy port:" ), w, NULL );
+        page->proxy_widgets = g_slist_append( page->proxy_widgets, w );
+
         s = _( "Proxy type:" );
         m = proxyTypeModelNew( );
         w = gtk_combo_box_new_with_model( m );
@@ -1053,6 +1035,42 @@ networkPage( GObject * core )
     return t;
 }
 
+static GtkWidget*
+networkPage( GObject * core )
+{
+    int row = 0;
+    const char * s;
+    GtkWidget * t;
+    GtkWidget * w, * w2;
+
+    t = hig_workarea_create( );
+    hig_workarea_add_section_title (t, &row, _( "Router" ) );
+
+        s = _("Use UPnP or NAT-PMP port _forwarding from my router" );
+        w = new_check_button( s, PREF_KEY_PORT_FORWARDING, core );
+        hig_workarea_add_wide_control( t, &row, w );
+
+    hig_workarea_add_section_divider( t, &row );
+    hig_workarea_add_section_title (t, &row, _("Bandwidth"));
+
+        s = _("Limit _download speed (KB/s):");
+        w = new_check_button( s, PREF_KEY_DL_LIMIT_ENABLED, core );
+        w2 = new_spin_button( PREF_KEY_DL_LIMIT, core, 0, INT_MAX, 5 );
+        gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_DL_LIMIT_ENABLED ) );
+        g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
+        hig_workarea_add_row_w( t, &row, w, w2, NULL );
+
+        s = _("Limit _upload speed (KB/s):");
+        w = new_check_button( s, PREF_KEY_UL_LIMIT_ENABLED, core );
+        w2 = new_spin_button( PREF_KEY_UL_LIMIT, core, 0, INT_MAX, 5 );
+        gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_UL_LIMIT_ENABLED ) );
+        g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
+        hig_workarea_add_row_w( t, &row, w, w2, NULL );
+
+    hig_workarea_finish( t, &row );
+    return t;
+}
+
 GtkWidget *
 tr_prefs_dialog_new( GObject * core, GtkWindow * parent )
 {
@@ -1082,6 +1100,9 @@ tr_prefs_dialog_new( GObject * core, GtkWindow * parent )
     gtk_notebook_append_page( GTK_NOTEBOOK( n ),
                               peerPage( core, alive ),
                               gtk_label_new (_("Peers")) );
+    gtk_notebook_append_page( GTK_NOTEBOOK( n ),
+                              trackerPage( core ),
+                              gtk_label_new (_("Trackers")) );
     gtk_notebook_append_page( GTK_NOTEBOOK( n ),
                               networkPage( core ),
                               gtk_label_new (_("Network")) );
index dcb9bdb127222d3e7068edeb71d3e112faf801b9..2a65541a3f3d028303720da8fcc34d712e134fcd 100644 (file)
@@ -61,6 +61,7 @@ GtkWidget * tr_prefs_dialog_new( GObject * core, GtkWindow * parent );
 #define PREF_KEY_RPC_PASSWORD           "rpc-password"
 #define PREF_KEY_RPC_USERNAME           "rpc-username"
 #define PREF_KEY_PROXY_SERVER           "proxy-server"
+#define PREF_KEY_PROXY_PORT             "proxy-port"
 #define PREF_KEY_PROXY_SERVER_ENABLED   "proxy-server-enabled"
 #define PREF_KEY_PROXY_TYPE             "proxy-type"
 #define PREF_KEY_PROXY_AUTH_ENABLED     "proxy-authentication-required"
index 6588eaee070b0ca05f828b1eb962b76587a7cf04..be5ef7b4527fd789cb227d277f70eaad57b46380 100644 (file)
@@ -189,7 +189,7 @@ tr_sessionInitFull( const char    * configDir,
                     const char    * downloadDir,
                     int             isPexEnabled,
                     int             isPortForwardingEnabled,
-                    int               publicPort,
+                    int             publicPort,
                     int             encryptionMode,
                     int             isUploadLimitEnabled,
                     int             uploadLimit,
@@ -208,6 +208,7 @@ tr_sessionInitFull( const char    * configDir,
                     const char    * rpcPassword,
                     int             proxyIsEnabled,
                     const char    * proxy,
+                    int             proxyPort,
                     tr_proxy_type   proxyType,
                     int             proxyAuthIsEnabled,
                     const char    * proxyUsername,
@@ -236,6 +237,7 @@ tr_sessionInitFull( const char    * configDir,
     h->downloadDir = tr_strdup( downloadDir );
     h->isProxyEnabled = proxyIsEnabled ? 1 : 0;
     h->proxy = tr_strdup( proxy );
+    h->proxyPort = proxyPort;
     h->proxyType = proxyType;
     h->isProxyAuthEnabled = proxyAuthIsEnabled ? 1 : 0;
     h->proxyUsername = tr_strdup( proxyUsername );
@@ -316,6 +318,7 @@ tr_sessionInit( const char * configDir,
                                "potzrebie",
                                TR_DEFAULT_PROXY_ENABLED,
                                TR_DEFAULT_PROXY,
+                               TR_DEFAULT_PROXY_PORT,
                                TR_DEFAULT_PROXY_TYPE,
                                TR_DEFAULT_PROXY_AUTH_ENABLED,
                                TR_DEFAULT_PROXY_USERNAME,
@@ -976,6 +979,11 @@ tr_sessionGetProxy( const tr_session * session )
 {
     return session->proxy;
 }
+int
+tr_sessionGetProxyPort( const tr_session * session )
+{
+    return session->proxyPort;
+}
 void
 tr_sessionSetProxy( tr_session * session, const char * proxy )
 {
@@ -985,6 +993,11 @@ tr_sessionSetProxy( tr_session * session, const char * proxy )
         session->proxy = tr_strdup( proxy );
     }
 }
+void
+tr_sessionSetProxyPort( tr_session * session, int port )
+{
+    session->proxyPort = port;
+}
 int
 tr_sessionIsProxyAuthEnabled( const tr_session * session )
 {
index 1e5bbf63bf9f324c3b3c1429398275d649b6c0a7..ace5a8d7cd8b78866eb76b66c31fddb34ba97ac8 100644 (file)
@@ -62,6 +62,7 @@ struct tr_handle
 
     struct tr_event_handle     * events;
 
+    int                          proxyPort;
     int                          peerSocketTOS;
 
     int                          torrentCount;
index 160d223831efe28463ab798c25940febc5db38ad..b4c3fa81fc1ae3e6c2017c402675641c18eac794 100644 (file)
@@ -133,6 +133,8 @@ tr_proxy_type;
 /** @see tr_sessionInitFull */
 #define TR_DEFAULT_PROXY                    NULL
 /** @see tr_sessionInitFull */
+#define TR_DEFAULT_PROXY_PORT               80
+/** @see tr_sessionInitFull */
 #define TR_DEFAULT_PROXY_TYPE               TR_PROXY_HTTP
 /** @see tr_sessionInitFull */
 #define TR_DEFAULT_PROXY_AUTH_ENABLED       0
@@ -261,6 +263,7 @@ tr_handle * tr_sessionInitFull( const char    * configDir,
                                 const char    * rpcPassword, 
                                 int             proxyIsEnabled,
                                 const char    * proxy,
+                                int             proxyPort,
                                 tr_proxy_type   proxyType,
                                 int             proxyAuthIsEnabled,
                                 const char    * proxyUsername,
@@ -427,11 +430,13 @@ void tr_sessionSetRPCCallback( tr_session   * handle,
 int           tr_sessionIsProxyEnabled       ( const tr_session * );
 int           tr_sessionIsProxyAuthEnabled   ( const tr_session * );
 const char*   tr_sessionGetProxy             ( const tr_session * );
+int           tr_sessionGetProxyPort         ( const tr_session * );
 tr_proxy_type tr_sessionGetProxyType         ( const tr_session * );
 const char*   tr_sessionGetProxyPassword     ( const tr_session * );
 void          tr_sessionSetProxyEnabled      ( tr_session *, int isEnabled );
 void          tr_sessionSetProxyAuthEnabled  ( tr_session *, int isEnabled );
 void          tr_sessionSetProxy             ( tr_session *, const char * proxy );
+void          tr_sessionSetProxyPort         ( tr_session *, int port );
 void          tr_sessionSetProxyType         ( tr_session *, tr_proxy_type );
 void          tr_sessionSetProxyUsername     ( tr_session *, const char * username );
 void          tr_sessionSetProxyPassword     ( tr_session *, const char * password );
index 0912f361257c4fd1f6e695e4de4f4b94eab18899..d41f206f6a956cdc902e5d3d26b10bb860e748dc 100644 (file)
@@ -161,6 +161,7 @@ addTask( void * vtask )
 
         if( !task->range && session->isProxyEnabled ) {
             curl_easy_setopt( ch, CURLOPT_PROXY, session->proxy );
+            curl_easy_setopt( ch, CURLOPT_PROXYPORT, session->proxyPort );
             curl_easy_setopt( ch, CURLOPT_PROXYTYPE, getCurlProxyType( session->proxyType ) );
             curl_easy_setopt( ch, CURLOPT_PROXYAUTH, CURLAUTH_ANY );
         }