For the records : I have finally been able to deploy using a trick : I used a local unauthenticated proxy to the corporate authenticated proxy ;-) !
I installed "Charles Proxy", run it, configured the "External Proxy Settings" part with my Auth informations. Then I configure appcfg script to connect to the local proxy (localhost:8888). And voila, it works ! On Apr 22, 12:38 pm, Piwaï <[email protected]> wrote: > Hello ! > > I have been looking through the web for quite some time, tried a lot > of things and didn't find any working solution to my problem, so I > wish someone here will have a solution for me :-) ! > > I am trying to deploy a GAE Java app, and I am going through a > corporate proxy, which requires authentication. > > The proxy config looks like this : > > user : DOMAIN\username > password : pass > http proxy : proxy_http.something.com:8000 > https proxy : proxy_https.something.com:8000 > > I read this > :http://code.google.com/appengine/docs/java/tools/uploadinganapp.html#... > > => The values for --http_proxy and --proxy_https must match > "proxy_http.something.com:8000", and does not work when matching > "http://DOMAIN\username:p...@proxy_http.something.com:8000" => > (unknown host) > > I tried to set the proxy informations by modifying appcfg.cmd and > adding some java proxy arguments : > > -Dhttp.proxyHost="http://DOMAIN > \username:p...@proxy_http.something.com" -Dhttp.proxyPort=8000 > -Dhttps.proxyHost="http://DOMAIN > \username:p...@proxy_https.something.com" -Dhttps.proxyPort=8000 > > => still unknown host error. > > I also tried this : > > -Dhttp.proxyHost="proxy_http.something.com" -Dhttp.proxyPort=8000 > -Dhttp.proxyUser="DOMAIN\username" -Dhttp.proxyPassword=pass > -Dhttps.proxyHost="proxy_https.something.com" -Dhttps.proxyPort=8000 > -Dhttps.proxyUser="DOMAIN\username" -Dhttps.proxyPassword=pass > > The host is resolved but then it tries to use the proxy and gets an > Authentication failure exception. > > Then I tried to call AppCfg.main myself, and the the proxy and Proxy > auth in the JVM prior to calling it : > > public class Test { > > public static void main(String[] args) { > > Authenticator.setDefault(new ProxyAuthenticator("DOMAIN\ > \username", "pass")); > > System.setProperty("http.proxyHost", > "proxy_https.something.com"); > System.setProperty("http.proxyPort", "8000"); > System.setProperty("https.proxyHost", > "proxy_https.something.com"); > System.setProperty("https.proxyPort", "8000"); > > String[] appArgs = { "update", "PATH TO MY WAR FOLDER" }; > > AppCfg.main(appArgs); > } > > static class ProxyAuthenticator extends Authenticator { > > private String user, password; > > public ProxyAuthenticator(String user, String password) { > this.user = user; > this.password = password; > } > > @Override > protected PasswordAuthentication getPasswordAuthentication() { > return new PasswordAuthentication(user, > password.toCharArray()); > } > } > > } > > However, I still get the Authentication failure exception. Here is the > stacktrace : > > Unable to update: > java.io.IOException: Authentication failure > at > sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java: > 1402) > at > sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Abstrac... > 168) > at > sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection... > 836) > at > sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLCon... > 230) > at > com.google.appengine.tools.admin.ServerConnection.connect(ServerConnection.java: > 340) > at > com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java: > 133) > at > com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java: > 82) > at > com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java: > 559) > at > com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java: > 376) > at > com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: > 111) > at > com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: > 56) > at com.google.appengine.tools.admin.AppCfg > $UpdateAction.execute(AppCfg.java:527) > at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:130) > at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:58) > at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:54) > at com.googlecode.android_frameworks.server.Test.main(Test.java:20) > com.google.appengine.tools.admin.AdminException: Unable to update app: > Authentication failure > at > com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: > 62) > at com.google.appengine.tools.admin.AppCfg > $UpdateAction.execute(AppCfg.java:527) > at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:130) > at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:58) > at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:54) > at com.googlecode.android_frameworks.server.Test.main(Test.java:20) > Caused by: java.io.IOException: Authentication failure > at > sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java: > 1402) > at > sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Abstrac... > 168) > at > sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection... > 836) > at > sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLCon... > 230) > at > com.google.appengine.tools.admin.ServerConnection.connect(ServerConnection.java: > 340) > at > com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java: > 133) > at > com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java: > 82) > at > com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java: > 559) > at > com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java: > 376) > at > com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java: > 111) > at > com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java: > 56) > ... 5 more > > Seems that GAE uses a > sun.net.www.protocol.https.HttpsURLConnectionImpl, and it doesn't seem > to take the Authenticator into account. > > Has anyone already achieved to upload java gae applications through an > authenticated proxy ? Any hint would be great ! > > Also, are the sources available ? I might soon try to retro-engineer > the com.google.appengine.tools.admin classes to understand how it > deploys the whole stuff... > > Cheers, > Piwaï > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group > athttp://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
