Подключение прокси Java к postgres - PullRequest
1 голос
/ 08 августа 2010

Может ли кто-нибудь помочь мне или предложить решение?Я хочу подключиться с компьютера, на котором установлен брандмауэр, к другому, где работает сервер postgres.Проблема в том, что у компьютера (клиента) есть брандмауэр, и у меня нет доступа для его настройки или открытия портов, ping не отвечает.Компьютер (сервер), на котором PostgreSQL имеет открытые порты, но я не могу подключиться к нему из-за брандмауэра.Я могу получить доступ к компьютеру только через прокси-сервер.

Как я мог с помощью Java-программирования получить удаленный доступ через прокси-сервер к postgres, забыв брандмауэр?

У Java есть соединение с прокси.Но я не знаю, как соединить это с соединением postgres.

        System.getProperties().put( "proxySet", "true" );
        System.getProperties().put( "proxyHost", "67.210.82.198" );
        System.getProperties().put( "proxyPort", "80" );

        URL validateURL = new URL("http://domain.com");
        URLConnection urlConnection = validateURL.openConnection();

        //how put together ???

        Class.forName("org.postgresql.Driver");
        Connection connection =  DriverManager.getConnection("jdbc:postgresql://ipPublica:5432/DataBase","user", "pass"); 

Ответы [ 4 ]

4 голосов
/ 26 марта 2012

Этого нельзя сделать.Соединения PostgreSQL не являются HTTP-соединениями.Йо не может использовать HTTP-прокси для PostgreSQL.Может быть, сработает прокси socks.

1 голос
/ 08 августа 2010

Попробуйте

System.setProperty("http.proxyHost", "67.210.82.198");
System.setPropery("http.proxyPort", "80");

String url = "jdbc:postgresql://host:port/database";
Properties props = new Properties();
props.setProperty("user","myUsername");
props.setProperty("password","myPassword");
props.setProperty("ssl","true");

Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(url, props);

Для получения дополнительной информации см. Сеть Java и прокси .

0 голосов
/ 03 марта 2017

Вам понадобится SOCKS-прокси, а не HTTP-прокси.

Тогда ваш код будет выглядеть примерно так:

System.setProperty("socksProxyHost", host);
System.setProperty("socksProxyPort", "1080");

Подробнее: http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.html

0 голосов
/ 22 июля 2012

Этот вопрос довольно старый. Об этом также спрашивали в списке рассылки PostgreSQL:

http://archives.postgresql.org/pgsql-jdbc/2010-08/msg00021.php

Ответы там сводятся к:

  • Использовать SOCKs

  • Если (большой ЕСЛИ!) Вы хотите взломать источник драйвера JDBC, вы могли бы (большая "мощь"!) Иметь возможность заставить его работать над HTTP-прокси с использованием SSL.

  • Sidekick: Кто-то предложил ssh-туннель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...