libcurl lookup taking long time

[problem]

You notice for some hosts curl and/or libcurl are taking 7 or so secs to lookup the host. But nslookup or dig respond almost immediately.

[/problem]

[solution]

Try doing curl -4 -w “time_namelookup: %{time_namelookup}n” …. and try without the -4. If you see drastic differences, you could be falling foul of the IPV6 bug. To work around this, you can either just use -4 with curl or set CURLOPT_IPRESOLVE with libcurl.

[/solution]

[example]

I spents hours and hours and hours, trying to get this working with libcurl and perl. It turned out I need to upgrade to WWW::Curl::Easy version 3.0 – as opposed to version 2. Do a search on search.cpan.org for Curl and it will tell you how to check your version.

Then if you like me upgrade, you need to also modify all your code from: Curl::easy::setopt($curl, … to $curl->setopt( …

[/example]

[tags]libcurl, resolve, namelookup[/tags]

10 simple techie tips for lazy people

[problem]

Don’t know about you, but I’m generally quite lazy. Why roll the mouse and click the screen,
when with a quick control c I can copy some text. 🙂

[/problem]

[solution]

Learn 10 simple short cuts, which can save you hours.

[/solution]

[example]

1.

Copy some text – select it then control c
Now it is in the clipboard.

2.

Click where you want to paste it and control v to paste it. 😉

You can also right click with your mouse to cut and paste.

3.

Minimise all windows, by holding down the windows key and press m

4.

Kick off explorer, by holding down windows key and press e

5.

Do a find by holding down windows key and press f

6.

Switch between windows by holding down alt and pressing tab

7.

Reverse tab through a HTML form, by holding down the shift key.

8.

Open a web link in a new window, by holding down shift and clicking it

9.

To type in a new web address, hold down alt and press d

10.

Save a document with control s, print it with control p, undo a change with control z – sorry got carry away. 🙂

[/example]

HTTP Basic Auth with HTTP headers and libcurl

[problem]

Came across an interesting problem with curl.

For curl to perform HTTP Basic Authentication, it is easy to pass –user to the curl command, but harder with libcurl.

Suspect there is an attribute that can be set, but I monitor a multitude of web sites through some perl scripts and libcurl. I did n’t want to have to modify my wrapper scripts, which mesh perl hashes with the code that drives curl (via libcurl).

I do allow for headers though, having needed to pass different things through, like HTTP_REFERER, LAST_MODIFIED, etc.

Therefore I just needed to pass the HTTP BASIC Authentication through as a header.

[/problem]

[solution]

First off you need to base64 encode the user and password.

Use Google’s tool

[/solution]

[example]

We then strip out the equals and pass following through to curl or libcurl:

 @myheaders=('Authorization: Basic YWRtaW46YWRtaW4');  Curl::easy::setopt($curl, Curl::easy::CURLOPT_HTTPHEADER, @myheaders); 

Or from the command line:

 curl ... -H'Authorization: Basic YWRtaW46YWRtaW4' 

Obviously you need to put your user, followed by a colon and your password – to obtain the correct base64 encoding back – strip the equals out and away you go.

[/example]

Simple Basic Encryption – Main differences between algorithms

[reference]

Symmetric Algo – one key to encrypt and decrypt.

Asymmetric Algo – separate key to encrypt and decrypt.

Stream ciphers – encrypt each bit in sequence.

Block ciphers – encrypt specific blocks of bits.

Hash/Message Digests – one way ciphers, create fingerprints of data.

[/reference]

Simple Basic Encryption – Most commonly used algorithms

[problem]

Want to know the encryption short or long names.

[/problem]

[solution]

DES – Digital Encryption Standard. Symmetric block encryption algorithm

3DES – Triple DES. Symmetric block algo – uses DES three times.

RC4 – Rivest Cipher #4. Symmetric algo uses stream encryption.

RSA – Rivest, Shamir, Adelman. Symmetric block algo.

IDEA – International Data Encryption Algo, symmetric block algo – used by PGP.

AES – Advanced Encryption Standard (Rijndael) – symmetric block algo.

[/solution]

[example]

Demo of des3, rc4 and aes256 – using abc123 as password and thecatsatonthemat

 $ echo thecatsatonthemat |  openssl enc -des3 -a -e -k abc123 U2FsdGVkX1/I03dG1d8bGYycfojc4x/S5uU1YIf1QRPRw+9AgKhVCw== $ echo "U2FsdGVkX1/I03dG1d8bGYycfojc4x/S5uU1YIf1QRPRw+9AgKhVCw==" | openssl enc -des3 -a -d -k abc123 thecatsatonthemat $ echo thecatsatonthemat |  openssl enc -rc4 -a -e -k abc123 U2FsdGVkX1+NuZk94r5kJdFfw8gsjlO9ZV7BDXLwm+3PNg== $ echo "U2FsdGVkX1+NuZk94r5kJdFfw8gsjlO9ZV7BDXLwm+3PNg==" |  openssl enc -rc4 -a -d -k abc123 thecatsatonthemat $ echo thecatsatonthemat |  openssl enc -aes256 -a -e -k abc123 U2FsdGVkX1/bGQ0rtpGi6CjkeAyyEgQjnxkSWBQ6q7XLgAApdWHA5BdEuK24r/NY $ echo "U2FsdGVkX1/bGQ0rtpGi6CjkeAyyEgQjnxkSWBQ6q7XLgAApdWHA5BdEuK24r/NY" |  openssl enc -aes256 -a -d -k abc123 thecatsatonthemat 

[/example]

[reference]

Wiki links

[/reference]

[tags]Encryption, DES, 3DES, RC4, RSA, IDEA, AES[/tags]

Ldap reference – ldap result codes

[problem]

Getting errors in LDAP

[/problem]

[solution]

Click on LDAP error number below to see LDAP error description.

[/solution]

[example]

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,
17,18,19,20,21,32,
33,34,35,36,48,
49,50,51,52,53,54,64,
65,66,67,68,69,70,71,76

Number Meaning
0 Success
1 Operations error
2 Protocol error
3 Timelimit exceeded
4 Sizelimit exceeded
5 Compare false
6 Compare true
7 Authentication method not supported
8 Strong authentication required
9 Parital results and referral received
10 Referral received
11 Administrative limit exceeded
12 Unavailable critical extension
13 Confidentiality required
14 SASL bind in progress
16 No such attribute
17 Undefined attribute type
18 Inappropriate matching
19 Constraint violation
20 Type or value exists
21 Invalid syntax
32 No such object
33 Alias problem
34 Invalid DN syntax
35 Object is a leaf
36 Alias deferenencing problem
48 Inappropriate authentication
49 Invalid credentials
50 Insufficient access
51 Server is busy
52 Server is unavailable
53 Server is unwilling to perform
54 Loop detected
64 Naming violation
65 Object class violation
66 Operation not permitted on non-leaf entry
67 Operation not permitted on a RDN
68 Entry already exists
69 Cannot modify object class
70 Results too large
71 Affects multiple servers
76 Virtual list view error

[/example]

Simple Basic UNIX – more advanced vi tips

[problem]

Continuing along with more vi tips, these can help you out of a jam or just save you time – going back to command line, etc.

Saving a file, which is read-only? Running java, Perl, PHP from within vi.

[/problem]

[solution]

Use chmod.

[/solution]

[example]

Have you ever edited a file, made your changes only to find the file is write only? Then in zsh at least, it won’t save it.

Here is a simple work around:

 :!chmod u+w % 

Percent is a shortcut in vi to the current file.

How about shell programming or PHP, Perl or even Java. You want to run the code, just like this:

 !./% !javac %;java `echo % | sed 's/.java//'` !php -q % 

[/example]

[tags]UNIX, PHP, Perl, Java[/tags]

Creating favicon.ico

[problem]

You want to create a favicon.ico from Unix.

[/problem]

[solution]

  1. Open your image with GIMP
  2. If your image is not a square then resize the canvas with GIMP
  3. Scale the image to 16×16 pixel (Image, Scale image)
  4. Save as favicon.pnm or favicon.ppm with raw encoding
  5. Close GIMP

[/solution]

[example]

Then to convert favicon.pnm or favicon.ppm using the command line utility ppmtowinicon:

 $ ppmtowinicon -output favicon.ico favicon.pnm 

Or

 $ ppmtowinicon -output favicon.ico favicon.ppm 

[/example]

[reference]

Kewl tip on creating a favicon.ico with ppmtowinico – thanks to linuxproblem.org. 🙂

http://www.linuxproblem.org/art_19.html

[/reference]

Blogging Tip – do your quotes turned to dots when pasting

[problem]

One annoying thing I recently discovered, when copying code from my blogs (yes I use my own tips too! 🙂 ), quotes seem to turn into dots. Both for single and double quotes.

[/problem]

[solution]

The answer to this was explained in a blogging book, that apparently the quotes on a keyboard refer to feet and inches – not speech! 😉

The solution is simply to use ASCII notation.

[/solution]

[example]

Therefore a double quote becomes " and a single '

[/example]

[reference]

[/reference]