Skip to main content

wget maven ntlm proxy

How to make wget, curl and Maven download behind an NTLM Proxy


Working on CentOS, behind an NTLM proxy:
  1. yum can deal without problem with a NTLM Proxy
  2. wget, curl and Maven cannot
The solution is to use "cntlm".
"cntlm" is a NTLM client for proxies requiring NTLM authentication.

How it works
  • Install "cntlm"
  • Configure "cntlm" 
    • by giving it your credentials
    • by giving it the NTLM Proxy
  • Start "cntlm" deamon (it listens to "127.0.0.1:3128")
  • Configure wget, curl and Maven to use "cntlm" instead of using directly the NTLM Proxy
Note: You will have then a kind of 2 stages Proxy: cntlm + the NTLM proxy

Configure CNTLM

After installing cntlm, the configuration file is in "cntlm.conf".

You must have your domain (in the Windows meaning), proxy login and  proxy password.
Mine are respectively: rktmb.org, mihamina, 1234abcd (yes, just for the example)

You must have you NTLM Proxy Hostnama or IP and port
Mine are respectively: prx.rktmb.org, 8080

You have to make cntlm format them to make cntlm job easy by

cntlm -H -d rktmb.org -u mihamina

This will output something like:

PassLM          D6F1CF1F55CFC61D2C114A2E7
PassNT          B649D7C5ECEFD7A189C189763
PassNTLMv2      F9E6B8689C0B5CE6194605D73

Thanks to https://gist.github.com/lpf23/d3c4e1ef158c7fb4a909

The final "cntlm.conf" file looks like:

Username        mihamina                                                                                                                                                                  
Domain          rktmb.org                                                                                                                                                                 
Password        1234abcd                                                                                                                                                              
                                                                                                                                                                                         
PassLM          D6F1CF1F55CFC61D2C114A2E7                                                                                                                                         
PassNT          B649D7C5ECEFD7A189C189763                                                                                                                                         
PassNTLMv2      F9E6B8689C0B5CE6194605D73                                                                                                                                         
                                                                                                                                                                                        
Proxy           prx.rktmb.org:8080                                                                                                                                                        

Configuring wget to use cntlm


You have to set the following environment variables:
export https_proxy=${http_proxy}
export http_proxy=http://localhost:3128
Feel free to put it into ".bashrc" or ".bash_profile", depending on your distribution.

Configuring Maven to use cntlm


In "~/.m2/settings.xml"

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">

  <proxies>
    <proxy>
      <id>rktmb-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>127.0.0.1</host>
      <port>3128</port>
    </proxy>
  </proxies>
</settings>


Comments

Popular posts from this blog

npm run build base-href

Using NPM to specify base-href
When building an Angular application, people usually use "ng" and pass arguments to that invocation.
Typically, when wanting to hard code "base-href" in "index.html", one will issue:

ng build --base-href='https://ngx.rktmb.org/foo'


I used to build my angular apps through Bamboo or Jenkins and they have a "npm" plugin.
I got the habit to build the application with "npm run build" before deploying it.

But the development team once asked me to set the "--base-href='https://ngx.rktmb.org/foo'" parameter.

npm run build --base-href='https://ngx.rktmb.org/foo


did not set the base href in indext.html

After looking for a while, I found https://github.com/angular/angular-cli/issues/13560 where it says:
You need to use −− to pass arguments to npm scripts. This did the job!
The command to issue is then:

npm run build -- --base-href='https://ngx.rktmb.org/foo'

dockerfile multiline to file

Outputing a multiline string from Dockerfile
I motsly use a Dockerfile by sourcing from a base ditribution: CentOS or Debian.
But I also have a local mirror and would like to use it for packages installation.

Espacially on CentOS it is about many lines to write to the /etc/yum.repos.d/CentOS-Base.repo file.

Easiest way: one RUN per line The first method that comes in mind is to issue one RUN per line to write.
Here you are:

RUN echo "[base] " > /etc/yum.repos.d/CentOS-Base.repo RUN echo "name=CentOS-$releasever - Base " >> /etc/yum.repos.d/CentOS-Base.repo RUN echo "baseurl=ftp://packages-infra.mg.rktmb.org/pub/centos/7/base-reposync-7 " >> /etc/yum.repos.d/CentOS-Base.repo RUN echo "gpgcheck=0 " >>…

Project Lead NextGen Project

Jira, change project Lead in a Next-Gent project Atlassian has launched a new feature on Jira Cloud instances: Next-Gent project
Roles, Workflow and settings are not the same as in usual.
When one creates a Next-Gent project, the creator is the "Project Lead", and changin this is not straight:
How-to-change-project-lead-in-a-Next-Gen-ProjectHow-do-i-set-default-assignee-and-workflow-in-next-gen-projects Here is the mergeGet the ID of your project: say 10002Go to https://[account name].atlassian.net/secure/project/EditProject!default.jspa?pid=10002Set the project Lead