OPlanner Olympic Games Event Scheduling App Integrates with zLocation

We’re very proud to announce zLocation’s first 3rd party integration. Our friends at Intelli-Focus chose zLocation and our new iOS SDK to help them with their London 2012 Olympic Games venue location management for their iOS App called OPlanner.

zLocation OPlanner Integration

OPlanner is an iPhone app that provides a simple and easy way to view, plan, share and schedule reminders for all of the 2012 London Olympic Games events.

Location management, in general, might not seem that difficult, but have you tried searching Google for the venue location of the BMX Track or BMX Circuit (here is the search http://bit.ly/MhUrJX if you have’t tried it.) Pretty confusing, isn’t it?!

Why not just use zLocation: ^BMXCircuit (http://zloc.at/BMXCircuit)

Download OPlanner

Download zLocation

If you are interested in learning more about the zLocation’s iOS integration solutions please contact us for more information.

zLocation Team - http://www.zlocation.com - info@zlocation.com

Google App Engine Logs - The Undocumented “—include_all” Flag

It’s no secret that we run a lot of the zLocation platform code on Google App Engine. GAE is great, and for the most part we love it. But, it can definitely get a little frustrating at times. The latest thing that caused a lot of frustration on our side was trying to download the detailed GAE application logs. Well, let’s just say that we wanted to pull the app logs for some offline analysis.  To go into a little more detail, we needed to run SPLUNK on the logs to generate some basic metrics (e.g. API response times).

So, Google’s documentation on downloading the logs is located here http://bit.ly/N3U932, and they pretty much tell you that the following will take care of all your needs:

appcfg.py request_logs myapp/ mylogs.txt

Well, that will get you some of your logs but it will definetly not get you everything that you can see in the Log Viewer when logged into the App Engine Admin Console.

This is what you need and it works really well for us:

appcfg.py --append --num_days=0 --include_all request_logs /path/to/your/app/ /var/log/gae/yourapp.log

Anyway, the line above will get all your log records and append them to a log file if you’ve executed this line before, and if not, it will create a new log file. It actually looks at your existing log (well, if it’s there at all), and don’t worry, it will not get any duplicates. You can run this without the —append flag if you want, but use it if you are automating log downloads.

Again, the key here is the —include_all flag which seems to be undocumented in Google’s official online documentation. This flag will get all the data that you see if you use GAE’s web log viewer. So, you will get fields such as: ms=71 cpu_ms=32 api_cpu_ms=12 cpm_usd=0.000921… 

Just to be fair to the GAE team, if you run “appcfg.py —help” from the terminal (shell or command prompt) you will see that the flag is not fully undocumented, as it will say:

 —include_all         Include everything in log messages.

We hope this saves someone a ton of time. We also hope that this is just an oversight and that the feature will make it into the official GAE documentation soon.

The zLocation Team — http://www.zlocation.com

Configuring SSL (HTTPS) for Google App Engine (GAE) with GoDaddy Cert via SNI

Google announced at Google I/O 2012 (June 27-29) that GAE will now support SSL for custom domains. Yeah!!! This is something that everyone has been waiting for, and it has been among top 5 requested GAE features for a while. Needless to say, when zLocation team was picking our hosting platform, we made a bet that this was gonna be available some time soon. So, our wish came true and thanks to the GAE team we are very happy. However, we had to jump through a few hoops in order to get SSL working, but in the end it all worked out, so we decided to write this quick technical blog post. Hope it helps you guys, and please don’t hesitate to provide us with feedback.

Google supports two types of SSL now: SNI and VIP. You can read all about them here. We chose to go with SNI. But, we believe this article will work for people trying to configure SSL with VIP, as well.

We picked GoDaddy’s Standard SSL. Once you buy it, the cert credit will be available in GoDaddy’s “My Account” and then you can follow these instructions to request the actual cert. Pay special attention to the part where it says: “NOTE: If you do not see the credit, refresh your list by clicking Click Here in the grey bar just below the faded buttons.”

NOTE: The following has been done and tested on OS X, but we are sure it will work on any Linux distro and Windows command prompts with OpenSSL installed. We will assume you have OpenSSL installed (type “openssl” at command prompt, terminal, or shell… and you will see if you have it installed or not)

Request CSR (Certificate Signing Request) command:

openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key

Go through the wizard. Pay attention to the state name, use a full name (e.g. California not CA).

Once done, you will have two files: CSR.csr and privateKey.key.

GoDady will need the contents of the CSR.csr for Certificate Signing Request form texfield.

Once you are done with GoDaddy, they will send you a zip file which will then contain two files: your.domain.com.crt (your website’s SSL cert) and gd_bundle.crt (GoDaddy’s intermediate bundle cert).

Now, Google App Engine currently has no place to upload this intermediary certificate. So, it is really important to combine these two files into one. We put the contents of your.domain.com.crt into a new files and then we pasted the contents of gd_bundle.crt right under it. We named the new file combined.pem. The conents of this new file will have 3 certs, something like this:

——-BEGIN CERTIFICATE——-

gibberish

——-END CERTIFICATE——-

——-BEGIN CERTIFICATE——-

gibberish

——-END CERTIFICATE——-

——-BEGIN CERTIFICATE——-

gibberish

——-END CERTIFICATE——-

The next thing you will need to do is decrypt the contents of the privateKey.key files into a new file. We will call the new file unencryptedkey.pem. Just execute this:

openssl rsa -in privateKey.key -out unencryptedkey.pem

So, when all this is done, there are only two files we really need: combined.pem and unencryptedkey.pem.

Assuming that you have enabled billing and activated the SSL support for your GAE application look at this screen and hit “Upload a new certificate” button and upload combined.pem (PEM encoded X.509 certificate) and unencryptedkey.pem (Unencrypted PEM encoded RSA private key).

You should be done at this point, but to make sure everything is running properly use this site to verify your configuration. Everything should check out, and you should not have any errors. Pay special attention to the Intermediate Certificate Bundle or Chaining as many call it. Again, if there are no errors you are good to go and it should say:

SSL Certificate is correctly installed

Make sure to test your HTTPS site on mobile devices. If the Intermidiate Certificate Bundle is not installed then your iPhone users will get a prompt saying:

Cannot Verify Server Identity / Safari cannot verify the identity of “your.domain.com”. Would you like to continue anyway?

The prompt will look like this:

We hope this article helps you configure SSL on GAE successfully. Please leave us feedback and don’t forget to check out our zLocation platform and our iOS app.