diff -ur --new-file /usr/share/rhn.orig/rhnpush/connection.py /usr/share/rhn/rhnpush/connection.py
--- /usr/share/rhn.orig/rhnpush/connection.py	2009-04-08 01:59:02.000000000 +0800
+++ /usr/share/rhn/rhnpush/connection.py	2010-03-19 12:31:22.000000000 +0800
@@ -44,12 +44,18 @@
         else:
             self._proxy_host = None
 
+        self._proxy_host = "myproxy"
+        self._proxy_port = 3128
+        self._proxy_username = ""
+        self._proxy_password = ""
+
         self._trusted_certs = None
         self._connection = None
 
     def get_connection(self):
         if self._scheme not in ['http', 'https']:
             raise ValueError("Unsupported scheme", self._scheme)
+
         if self._proxy_host:
             params = {
                 'host'      : self._host,
@@ -104,6 +110,7 @@
 class PackageUpload:
     header_prefix = "X-RHN-Upload"
     user_agent = "rhn-package-upload"
+
     def __init__(self, url):
         self.connection = BaseConnection(url)
         self.headers = {}
diff -ur --new-file /usr/share/rhn.orig/rhnpush/rhnpush_config.py /usr/share/rhn/rhnpush/rhnpush_config.py
--- /usr/share/rhn.orig/rhnpush/rhnpush_config.py	2009-04-08 01:59:02.000000000 +0800
+++ /usr/share/rhn/rhnpush/rhnpush_config.py	2010-03-19 10:25:30.000000000 +0800
@@ -62,8 +62,9 @@
                                 'new_cache'         :   '0',
                                 'no_cache'          :   '0',
                                 'extended_test'     :   '0',
-                                'no_session_caching'     :   '0', 
+                                'no_session_caching':   '0', 
                                 'tolerant'          :   '0',            
+                                'proxy'             :   '',
                                 }
 
         #Used to parse the config file.
diff -ur --new-file /usr/share/rhn.orig/rhnpush/rhnpush.py /usr/share/rhn/rhnpush/rhnpush.py
--- /usr/share/rhn.orig/rhnpush/rhnpush.py	2009-04-08 01:59:02.000000000 +0800
+++ /usr/share/rhn/rhnpush/rhnpush.py	2010-03-19 09:58:02.000000000 +0800
@@ -77,6 +77,7 @@
         Option(     '--source',     action='store_true', help='Upload source package information'),
         Option(     '--server',     action='store',      help='Push to this server (http[s]://<hostname>/APP)'),
         Option(     '--test',       action='store_true', help="Only print the packages to be pushed"),
+	Option('-x','--proxy',      action='store',      help='Proxy server and port to use (proxyserver:port, eg proxy.company.com:3128'),
         Option('-?','--usage',      action='store_true', help="Briefly describe the options"),
         Option('-N','--new-cache',  action='store_true', help="Create a new username/password cache"),
         Option(     '--no-cache',   action='store_true', help="Do not create a username/password cache"),
diff -ur --new-file /usr/share/rhn.orig/rhnpush/uploadLib2.py /usr/share/rhn/rhnpush/uploadLib2.py
--- /usr/share/rhn.orig/rhnpush/uploadLib2.py	2009-04-08 01:59:02.000000000 +0800
+++ /usr/share/rhn/rhnpush/uploadLib2.py	2010-03-19 12:30:09.000000000 +0800
@@ -95,15 +95,23 @@
         self.ca_chain = None
 
     def setProxy(self):
-        self.proxy = None
+	if self.options.proxy is None or self.options.proxy is '':
+                self.proxy = None
+        else:
+                self.proxy = "http://%s" % self.options.proxy
 
     def setForce(self):
         self.force = None
 
     def setServer(self):
-        self.warn(1, "Connecting to %s" % self.url)
         # set the proxy
         self.setProxy()
+
+        if self.proxy is None:
+            self.warn(1, "Connecting to %s" % self.url)
+        else:
+            self.warn(1, "Connecting to %s (via proxy '%s')" % (self.url, self.proxy))
+
         # set the CA chain
         self.setCAchain()
         # set the proxy username and password
