From 3a8b1276718dcb6a977407ad1091cfcc402513e4 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Fri, 29 Jan 2016 15:08:13 -0800 Subject: [PATCH 1/3] Using only the first 2 octets of IP addresses. --- managed_vms/cloudsql/main.py | 20 +++++++++++++++++++- managed_vms/datastore/main.py | 20 +++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/managed_vms/cloudsql/main.py b/managed_vms/cloudsql/main.py index a1e321f58108..b6c5d21697d4 100644 --- a/managed_vms/cloudsql/main.py +++ b/managed_vms/cloudsql/main.py @@ -14,6 +14,7 @@ import datetime import os +import socket from flask import Flask, request from flask.ext.sqlalchemy import SQLAlchemy @@ -22,6 +23,15 @@ app = Flask(__name__) +def is_ipv6(addr): + """Checks if a given address is an IPv6 address.""" + try: + socket.inet_pton(socket.AF_INET6, addr) + return True + except socket.error: + return False + + # [START example] # Environment variables are defined in app.yaml. app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['SQLALCHEMY_DATABASE_URI'] @@ -41,8 +51,16 @@ def __init__(self, timestamp, user_ip): @app.route('/') def index(): + user_ip = request.remote_addr + + # Keep only the first two octets of the IP address. + if is_ipv6(user_ip): + user_ip = ':'.join(user_ip.split(':')[:2]) + else: + user_ip = '.'.join(user_ip.split('.')[:2]) + visit = Visit( - user_ip=request.remote_addr, + user_ip=user_ip, timestamp=datetime.datetime.utcnow() ) diff --git a/managed_vms/datastore/main.py b/managed_vms/datastore/main.py index 6041c69747f0..052ffb1525f5 100644 --- a/managed_vms/datastore/main.py +++ b/managed_vms/datastore/main.py @@ -13,6 +13,7 @@ # limitations under the License. import datetime +import socket from flask import Flask, request from gcloud import datastore @@ -21,14 +22,31 @@ app = Flask(__name__) +def is_ipv6(addr): + """Checks if a given address is an IPv6 address.""" + try: + socket.inet_pton(socket.AF_INET6, addr) + return True + except socket.error: + return False + + # [START example] @app.route('/') def index(): ds = datastore.Client() + user_ip = request.remote_addr + + # Keep only the first two octets of the IP address. + if is_ipv6(user_ip): + user_ip = ':'.join(user_ip.split(':')[:2]) + else: + user_ip = '.'.join(user_ip.split('.')[:2]) + entity = datastore.Entity(key=ds.key('visit')) entity.update({ - 'user_ip': request.remote_addr, + 'user_ip': user_ip, 'timestamp': datetime.datetime.utcnow() }) From 32d5d76e6858b110c5357f603e0e45562966973b Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Mon, 1 Feb 2016 13:53:45 -0800 Subject: [PATCH 2/3] Updating dependencies --- .../requirements.txt | 2 +- container_engine/django_tutorial/requirements.txt | 2 +- managed_vms/datastore/requirements.txt | 2 +- managed_vms/django_cloudsql/requirements.txt | 2 +- managed_vms/hello_world_django/requirements.txt | 2 +- managed_vms/pubsub/requirements.txt | 2 +- managed_vms/storage/requirements.txt | 2 +- managed_vms/twilio/requirements.txt | 2 +- requirements.txt | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt b/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt index ab54eebc1149..71ed6eb5cdbf 100644 --- a/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt +++ b/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt @@ -1 +1 @@ -gcloud==0.8.0 +gcloud==0.9.0 diff --git a/container_engine/django_tutorial/requirements.txt b/container_engine/django_tutorial/requirements.txt index ba451981bb08..2df3a05b8654 100644 --- a/container_engine/django_tutorial/requirements.txt +++ b/container_engine/django_tutorial/requirements.txt @@ -1,4 +1,4 @@ -Django==1.9.1 +Django==1.9.2 mysqlclient==1.3.7 wheel==0.26.0 gunicorn==19.4.5 diff --git a/managed_vms/datastore/requirements.txt b/managed_vms/datastore/requirements.txt index ee14266131e9..657613488e1c 100644 --- a/managed_vms/datastore/requirements.txt +++ b/managed_vms/datastore/requirements.txt @@ -1,4 +1,4 @@ Flask==0.10.1 -gcloud==0.8.0 +gcloud==0.9.0 gunicorn==19.4.5 oauth2client==1.5.2 diff --git a/managed_vms/django_cloudsql/requirements.txt b/managed_vms/django_cloudsql/requirements.txt index ba451981bb08..2df3a05b8654 100644 --- a/managed_vms/django_cloudsql/requirements.txt +++ b/managed_vms/django_cloudsql/requirements.txt @@ -1,4 +1,4 @@ -Django==1.9.1 +Django==1.9.2 mysqlclient==1.3.7 wheel==0.26.0 gunicorn==19.4.5 diff --git a/managed_vms/hello_world_django/requirements.txt b/managed_vms/hello_world_django/requirements.txt index f2cade8894e9..b68903a987a7 100644 --- a/managed_vms/hello_world_django/requirements.txt +++ b/managed_vms/hello_world_django/requirements.txt @@ -1,2 +1,2 @@ -Django==1.9.1 +Django==1.9.2 gunicorn==19.4.5 diff --git a/managed_vms/pubsub/requirements.txt b/managed_vms/pubsub/requirements.txt index ee14266131e9..657613488e1c 100644 --- a/managed_vms/pubsub/requirements.txt +++ b/managed_vms/pubsub/requirements.txt @@ -1,4 +1,4 @@ Flask==0.10.1 -gcloud==0.8.0 +gcloud==0.9.0 gunicorn==19.4.5 oauth2client==1.5.2 diff --git a/managed_vms/storage/requirements.txt b/managed_vms/storage/requirements.txt index f41b909191e8..65f0fb67e2af 100644 --- a/managed_vms/storage/requirements.txt +++ b/managed_vms/storage/requirements.txt @@ -1,3 +1,3 @@ Flask==0.10.1 -gcloud==0.8.0 +gcloud==0.9.0 gunicorn==19.4.5 diff --git a/managed_vms/twilio/requirements.txt b/managed_vms/twilio/requirements.txt index d6049aceacb7..7305cab6ce66 100644 --- a/managed_vms/twilio/requirements.txt +++ b/managed_vms/twilio/requirements.txt @@ -1,3 +1,3 @@ Flask==0.10.1 gunicorn==19.4.5 -twilio==6.2.dev0 +twilio==6.3.dev0 diff --git a/requirements.txt b/requirements.txt index 74e20da478cd..edc85fec26ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -gcloud==0.8.0 +gcloud==0.9.0 google-api-python-client==1.4.2 oauth2client==1.5.2 requests[security]==2.9.1 From c866c6857a08b7cf42cbdec0acaa4f028ad4134a Mon Sep 17 00:00:00 2001 From: Jonathan Wayne Parrott Date: Mon, 1 Feb 2016 15:04:48 -0800 Subject: [PATCH 3/3] Revert "Updating dependencies" --- .../requirements.txt | 2 +- container_engine/django_tutorial/requirements.txt | 2 +- managed_vms/datastore/requirements.txt | 2 +- managed_vms/django_cloudsql/requirements.txt | 2 +- managed_vms/hello_world_django/requirements.txt | 2 +- managed_vms/pubsub/requirements.txt | 2 +- managed_vms/storage/requirements.txt | 2 +- managed_vms/twilio/requirements.txt | 2 +- requirements.txt | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt b/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt index 71ed6eb5cdbf..ab54eebc1149 100644 --- a/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt +++ b/blog/introduction_to_data_models_in_cloud_datastore/requirements.txt @@ -1 +1 @@ -gcloud==0.9.0 +gcloud==0.8.0 diff --git a/container_engine/django_tutorial/requirements.txt b/container_engine/django_tutorial/requirements.txt index 2df3a05b8654..ba451981bb08 100644 --- a/container_engine/django_tutorial/requirements.txt +++ b/container_engine/django_tutorial/requirements.txt @@ -1,4 +1,4 @@ -Django==1.9.2 +Django==1.9.1 mysqlclient==1.3.7 wheel==0.26.0 gunicorn==19.4.5 diff --git a/managed_vms/datastore/requirements.txt b/managed_vms/datastore/requirements.txt index 657613488e1c..ee14266131e9 100644 --- a/managed_vms/datastore/requirements.txt +++ b/managed_vms/datastore/requirements.txt @@ -1,4 +1,4 @@ Flask==0.10.1 -gcloud==0.9.0 +gcloud==0.8.0 gunicorn==19.4.5 oauth2client==1.5.2 diff --git a/managed_vms/django_cloudsql/requirements.txt b/managed_vms/django_cloudsql/requirements.txt index 2df3a05b8654..ba451981bb08 100644 --- a/managed_vms/django_cloudsql/requirements.txt +++ b/managed_vms/django_cloudsql/requirements.txt @@ -1,4 +1,4 @@ -Django==1.9.2 +Django==1.9.1 mysqlclient==1.3.7 wheel==0.26.0 gunicorn==19.4.5 diff --git a/managed_vms/hello_world_django/requirements.txt b/managed_vms/hello_world_django/requirements.txt index b68903a987a7..f2cade8894e9 100644 --- a/managed_vms/hello_world_django/requirements.txt +++ b/managed_vms/hello_world_django/requirements.txt @@ -1,2 +1,2 @@ -Django==1.9.2 +Django==1.9.1 gunicorn==19.4.5 diff --git a/managed_vms/pubsub/requirements.txt b/managed_vms/pubsub/requirements.txt index 657613488e1c..ee14266131e9 100644 --- a/managed_vms/pubsub/requirements.txt +++ b/managed_vms/pubsub/requirements.txt @@ -1,4 +1,4 @@ Flask==0.10.1 -gcloud==0.9.0 +gcloud==0.8.0 gunicorn==19.4.5 oauth2client==1.5.2 diff --git a/managed_vms/storage/requirements.txt b/managed_vms/storage/requirements.txt index 65f0fb67e2af..f41b909191e8 100644 --- a/managed_vms/storage/requirements.txt +++ b/managed_vms/storage/requirements.txt @@ -1,3 +1,3 @@ Flask==0.10.1 -gcloud==0.9.0 +gcloud==0.8.0 gunicorn==19.4.5 diff --git a/managed_vms/twilio/requirements.txt b/managed_vms/twilio/requirements.txt index 7305cab6ce66..d6049aceacb7 100644 --- a/managed_vms/twilio/requirements.txt +++ b/managed_vms/twilio/requirements.txt @@ -1,3 +1,3 @@ Flask==0.10.1 gunicorn==19.4.5 -twilio==6.3.dev0 +twilio==6.2.dev0 diff --git a/requirements.txt b/requirements.txt index edc85fec26ab..74e20da478cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -gcloud==0.9.0 +gcloud==0.8.0 google-api-python-client==1.4.2 oauth2client==1.5.2 requests[security]==2.9.1