- return getOrCreate(() -> libSignalNetwork,
- () -> libSignalNetwork = new Network(serviceEnvironmentConfig.netEnvironment(), userAgent));
+ return getOrCreate(() -> libSignalNetwork, () -> {
+ libSignalNetwork = new Network(serviceEnvironmentConfig.netEnvironment(), userAgent);
+ setSignalNetworkProxy(libSignalNetwork);
+ });
+ }
+
+ private void setSignalNetworkProxy(Network libSignalNetwork) {
+ final var proxy = Utils.getHttpsProxy();
+ if (proxy.address() instanceof InetSocketAddress addr) {
+ switch (proxy.type()) {
+ case Proxy.Type.DIRECT -> {
+ }
+ case Proxy.Type.HTTP -> {
+ try {
+ libSignalNetwork.setProxy("http", addr.getHostName(), addr.getPort(), null, null);
+ } catch (IOException e) {
+ logger.warn("Failed to set http proxy", e);
+ }
+ }
+ case Proxy.Type.SOCKS -> {
+ try {
+ libSignalNetwork.setProxy("socks", addr.getHostName(), addr.getPort(), null, null);
+ } catch (IOException e) {
+ logger.warn("Failed to set socks proxy", e);
+ }
+ }
+ }
+ }