News

 Subscribe Add to Technorati Favorites

 

 

 

 


 

 

Search My Blog:

 

 

My Stats

  • Posts - 472
  • Comments - 277
  • Trackbacks - 265

Twitter












Tag Cloud


Recent Comments


Recent Posts


Archives


Post Categories


Blogs


Miscellanous


Noteworthy Stuff


Popular Posts


August 2005 Entries

Gas Prices (Flickr)


 

Gas price today in Apex, NC, up around 50 cents/gal since yesterday.

posted @ Wednesday, August 31, 2005 3:49 PM | Feedback (0) |


Adwords Campaign service demo (uses IPWorks SSL)


Yesterday I mentioned that I revisited an old Google Adwords demo that I worked on a while back. Here's the tutorial explaining that demo.

I've updated the demo, which previously was a VB6 app that was basically just a list of functions, to a more functional app. If you're interested, you can download the demo app here (source and compiled executable).

This could be easily translated into .Net, ASP, Delphi, BCB, C++, Java, PHP, etc. Just let me know if you're interested.

posted @ Wednesday, August 24, 2005 7:49 AM | Feedback (0) |


Google will set IM free


Thank you, thank you, thank you. Microsoft, AIM, Yahoo, etc - please take note. OPEN UP and say "Ahh", or get uninstalled. Finally, one IM client is in sight.

My google talk name is “lmrobins”

posted @ Wednesday, August 24, 2005 6:34 AM | Feedback (1) |


AdWords API - 404 Not Found


Today I revisited an Adwords demo that I worked on a while back. It didn't work! The last time I checked it was working fine! The response from every soap request was:
<HTML>
<HEAD>
<TITLE>Not FoundTITLE>
<HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Not Found<H1>
<H2>Error 404<H2>
<BODY>
<HTML>
I looked at the code and saw nothing wrong. I looked at the account information I was using and saw nothing wrong. After about 20 minutes of looking for the problem, I noticed that the service endpoint URL defined in the WSDL was:
"https://adwords.google.com/api/adwords/v2/CampaignService" 
and the URL I was using in my code was:
"https://AdWords.google.com/api/AdWords/v2/CampaignService" 
Sure enough, that was the problem! Once I corrected the path to the proper case, everything is working again. Ouch!

posted @ Tuesday, August 23, 2005 1:44 PM | Feedback (0) |


FTP SSL through a NAT Firewall


FTPS over a NAT Firewall is a problem, but there are solutions. First, an explanation of the problem: The reason why FTPS (and even FTP without SSL) is a problem with firewalls is that unlike most internet protocols, FTP requires two socket connections, not just one. The first connection, called the control connection, is the one where all of the commands and responses are exchanged between client and server. The second connection, called the data connection, is where all of the data is transferred (files and file listings). There are two ways to setup the data connection - active or passive. Active mode means that the data connection will be opened from the server to the client (the client will listen for an incoming connection from the server). Passive mode is just the opposite, the client will open the data connection on the server (the server will listen for an incoming connection from the client). Passive mode is recommended, especially for SSL connections.

A normal, unencrypted, passive FTP data connection gets configured and opened like so:

 

CLIENT-->SERVER: PASV 
SERVER-->CLIENT: 227 Ok, Entering Passive Mode (193,21,1,121,15,6)

The client sends the PASV command, and the server says "OK", and tells the client the ip address and port that he is listening to. The first four octets in the parenthesized response form the dotted ip address (193.21.1.121) and the last 2 form the port number (15*256 + 6) = 3846. At this point, the server is listening for an incoming data connection - and the client can go ahead and make that connection so that the two sides can begin transferring data.

When you throw a NAT (Network Address Translation) in the middle

 

CLIENT-->NAT-->SERVER: 

you now have the following communication:

 

CLIENT-->NAT: PASV 
NAT-->SERVER: PASV
SERVER-->NAT: 227 Ok, Entering Passive Mode (10,0,1,121,15,6)
NAT-->CLIENT: 227 Ok, Entering Passive Mode (193,21,1,121,15,6)

As you can see, the NAT must spy on the servers response to the PASV command. The NAT sees that the server is listening on 10.0.1.121 port 3846. The server is of course on a private IP address that the client cannot reach. The NAT has the public IP address that the client is communicating with. So the NAT replaces the servers response with his own - telling the client to open the connection to HIS ip address and port. In turn of course, when the NAT receives a connection to that location, he will forward it on to the FTP servers IP and port.

Now throw in another complication: SSL. Now the NAT cannot spy on the PASV response, nor can he alter it. So the client would attempt to open the data connection on an IP address that was not accessible, since it is behind the firewall.

 

What is the solution?

There are several possible solutions you can explore:
  • Some FTP servers will allow you to specify an IP address (and port range) to use for passive mode connections. You'd set this to your public IP address.
  • Some FTP clients (including IPWorks components) can be smart enough to try the ip address specified by the server in the response to the PASV command, and it that fails, fall back to the same ip address that the initial connection was made to.  Though that is not always the desired behavior, you can accomplish this with the IPWorks FTP components by using the UseRemoteHostAddressForPassive config:

    Ftps1.Config("UseRemoteHostAddressForPassive=true");

    Note that the component will not do this automatically, for security reasons.

  • Some NATs will allow you to specify port ranges that will automatically forward to a specific location. If you can configure this port range to match the passive port range used by the FTP server - that may be a solution.

  • Another solution is to set your FTP server up to use the EPSV command (Extended Passive Mode). The EPSV command only sends the port - and the IP address is inferred to be the same as the IP address of the control connection. The IP*Works! FTPS control supports UseEPSV as a configuration option:

    Setting

    Ftps1.Config("UseEPSV=true")

    will add support for EPSV.
Updated 1/24/2008.

posted @ Tuesday, August 23, 2005 9:45 AM | Feedback (13) |


LDAP Browser


Here is a sample LDAP Browser with csharp source code. This was built using the IP*Works! LDAP component.  This zip includes the .net exe, but not that if you actually want to compile you will need to download and install IPWorks.

posted @ Friday, August 19, 2005 3:30 PM | Feedback (0) |


LDAP Authentication and Password Management


Using LDAP to authenticate users is common, fast, and easy way to do. A while back I wrote a tutorial about how this can be done in a web app using the IP*Works! LDAP component. This particular article was written using VB.Net code samples. Some people ask me for classic ASP code samples, here you go.

Lots of people ask about how to change an Active Directory (orADAM) user password over LDAP. With Novell, SunOne, and OpenLdap, its not so difficult as long as you have the administrator permissions necessary to make the change. With Active Directory it is a mystery that many have struggled with. I think just about every day in the newsgroups somebody asks how to do this.

There are two common ways to change a user password - through the userPassword and unicodePwd attributes. Here's the basic breakdown:

  1. userPassword
    • If you're not using AD, this is all there is to it. "userPassword" will be a write-only attribute that when set, will change the password for the user. If you are using AD, read on...
    • If "userPassword" is a regular password, you can read it and write it but not bind with it.
    • If "userPassword" is instead defined as an alias for "unicodePwd", then you can write to "userPassword" directly and bind with that value (in this case "userPassword" will be write-only).
    • Whether “userPassword“ is a regular password or an alias for “unicodePwd“ is controlled by the 9th bit of dsHeuristics.
    • In ADAM, "userPassword" is defined as an alias for unicodePwd by default.
    • You must use an SSL connection in order for this to work with AD!
  2. unicodePwd
    • In AD, by default "userPassword" is a regular attribute and you'll have to use "unicodePwd" instead.
    • If you use "unicodePwd", you must set it as a quoted unicode byte array.
    • You must use an SSL connection in order for this to work with AD (although from what I understand you may be able to turn that off with dsHeuristics as well. Does anyone have more info on that?)

Note that in both situations above, an SSL connection is required in order to remotely change the password with AD.

If you're bound as an administrative user, you can simply do this password change in one replace command. If you're bound as the end user, you'll have to delete the attribute (using the current password) and then add it back (using the new one).

Update: Added link to classic asp instructions.

posted @ Friday, August 19, 2005 3:27 PM | Feedback (16) |


New version of NukeSyndicate released (DNN Podcasting Module)


Scott Schecter has released a new version of NukeSyndicate, the DNN 3 podcast feed module. Its open source, supports RSS 2.0, and looks great.

posted @ Monday, August 15, 2005 11:13 AM | Feedback (4) |


My MSN listens to user feedback and makes changes


I tried out My MSN a few months back, and it looks like a great service. I would never have considered using it, however, because it had a ridiculously HUGE banner ad right at the top of the page. I was so disappointed that I sent some feedback to the team. Imagine how surprised I was to receive a response to that feedback today, from "Justin", a program manager on the MSN.com Portals Team. Here it is:
Hi,

My name is Justin and I?m a Program Manager who works directly on the My MSN site. 
You?re receiving this email because you have previously sent feedback to MSN regarding 
the banner advertisement on My MSN (http://my.msn.com). We really appreciate you 
taking the time to let us know your thoughts about My MSN, which is why you?re receiving 
a response directly from the product team (not from our normal support personnel).

You?ll be happy to know that the ad at the top of My MSN has been removed entirely. 
I?ve personally read feedback like yours for a number of months and have been lobbying 
for a new way to monetize My MSN that wouldn?t be so obtrusive for our customers. As of 
the end of July, the ad is gone! Please know that we?re extremely committed to serving 
our customers, and responding to your preferences to the very best of our ability.

Thanks for taking the time to correspond with us and thanks for using My MSN. I look 
forward to your response.
This impresses me. I took at look at the My MSN site tonight and it looks much better. I can really see myself using this. I will give it a shot, and send more feedback as to what else could make this better for me (like the ability to subscribe to RSS feeds). I really, really like it. This could potentially make me more likely to use MSN Search (I pretty much live at google right now).

posted @ Monday, August 08, 2005 6:11 PM | Feedback (2) |


EDI and BizTalk


Jeff Lynch is using /n software's AS2 Adapter for BizTalk 2004:

I approached this new project with considerable skepticism and trepidation since I had never used the "AS2" protocol and never dealt with a third-party "exchange" before. The good news is I was very pleasantly surprised at just how easy this can be to setup and use!

It sounds like Jeff had a favorable experience, but I wonder how this experience compares with those B2B integrations he's been a part of in the past.

Based on Jeff's feedback, it looks like we need to improve the documentation of the certificate properties in the BizTalk Adapters, because a lot of people aren't familiar with SSL client side authentication, much less configuring certificates for use in SMIME signatures and encryptions. While /n software has deployed EDI solutions for software developers for a while now, BizTalk adapters are a new extension of the product line, so there will definitely be changes that will make the experience go more smoothly. Besides the AS2 Adapter, /n software also has adapters for FTP, FTPS, SFTP, SExec (secure shell remote execution), and Secure Email. We're keeping our eyes open for other adapters that people would like to see available, so let me know what your needs are.

posted @ Tuesday, August 02, 2005 10:03 AM | Feedback (0) |