예제 #1
0
def home(request, code=None):
	form = SignupForm(request.POST or None)
	if request.method == 'POST':
		if form.is_valid():
			signup = form.save()
			request.session['code'] = base36.base36encode(signup.pk)
						
			if code:
				try:
					signup_inviter = Signup.objects.get(pk=base36.base36decode(code.upper()))
					signup_inviter.invitees = F('invitees') + 1
					signup_inviter.save()
				except Exception, e:
					pass

			return redirect(reverse('launch_app_success'))
		else:
			# If user has signed up already, show the invite code
			try:
				signup = Signup.objects.get(email=form.data.get('email', ''))
				return render_to_response('launch/already_registered.html', {
					'code': base36.base36encode(signup.pk).lower()
				}, context_instance=RequestContext(request))
			except:
				pass
예제 #2
0
파일: main.py 프로젝트: higgs241/gobromius
	def post(self):
		img = self.request.get("imgfile")
		if not img:
			self.response.write("error!")
		else:
			image = models.Image(image=db.Blob(img))
			image.put()
			num = 0
			short = models.ImageKeyRel.gql("WHERE short != -1 ORDER BY short DESC").fetch(limit=1)
			if short:
				num = short[0].short + 1
			rel = models.ImageKeyRel(key_=str(image.key()), short=num)
			rel.put()
			self.response.out.write('<meta http-equiv="refresh" content=".5;URL=/' + base36.base36encode(num) + '">')
예제 #3
0
파일: app.py 프로젝트: cupidhaha/shorturl
def hello():
    url = request.args.get("url", "")
    alias = request.args.get("alias", "")
    origin_url = redis_get_url_by_key(alias)
    if origin_url == url:
        return "%s is created!" % alias;
    if origin_url is None and len(alias) > 0:
        redis_set_number_url(base36decode(alias), url)
        return "%s is created!" % alias;
    alias = redis_get_alias_by_url(url)
    if alias is not None:
        return "%s is created!" % alias;

    count = int(redis_get_unused_number())
    alias = base36encode(count)
    redis_set_number_url(count, url)
    return "%s is created!" % alias;
예제 #4
0
 def post(self):
     img = self.request.get("imgfile")
     if not img:
         self.response.write("error!")
     else:
         image = models.Image(image=db.Blob(img))
         image.put()
         num = 0
         short = models.ImageKeyRel.gql(
             "WHERE short != -1 ORDER BY short DESC").fetch(limit=1)
         if short:
             num = short[0].short + 1
         rel = models.ImageKeyRel(key_=str(image.key()), short=num)
         rel.put()
         self.response.out.write(
             '<meta http-equiv="refresh" content=".5;URL=/' +
             base36.base36encode(num) + '">')
예제 #5
0
  def update_all_reddits(self, smallest_id, largest_id):
    # http://www.reddit.com/dev/api
    # t3_ means link
    # example:
    # http://www.reddit.com/by_id/t3_zcd40t3_zcd41,t3_zcd42,t3_zcd43/.json
    print "Attempting to download all reddit submissions between id: ", smallest_id, " and ", largest_id
    i = 0
    entries_written = 0
    entries_non_existent = 0
    while smallest_id < largest_id:
      i += 1
      # Debug printing every 50 runs (after processing 5000 entries) ~ every 100 seconds:
      if (i - 1) % 50 == 0:
        #if self.db_manager.new_rows_written % 1000 == 0 and self.db_manager.new_rows_written != 0:
        print "Entries written: ", entries_written, " [Non-existent: ", entries_non_existent, "] - on id: ", smallest_id


      url = "http://www.reddit.com/by_id/"

      submissions_to_fetch_int = set()


      # Queue up 100 submissions to fetch which the database does not currently contain
      while smallest_id < largest_id and len(submissions_to_fetch_int) < ENTRIES_TO_FETCH:
        # print "row_id = ", most_recent_id
        if not self.db_manager.row_exists(smallest_id):
          submissions_to_fetch_int.add(smallest_id)
        smallest_id += 1

      # Create a URL string for the query
      submissions_to_fetch_str = []
      for s in submissions_to_fetch_int:
        submissions_to_fetch_str.append("t3_" + base36encode(s))
      url += ','.join(submissions_to_fetch_str)

      # Query for the submissions
      submissions = None
      try:
        submissions = self.r.request_json(url, params={'limit': 100}, data=None, as_objects=True, retry_on_error=True)
        # print submissions
        submissions = submissions['data']['children']
      except:
        print "Error when trying to fetch url: ", url

      submissions_fetched_int = set()
      if submissions:
        for submission in submissions:
          self.__update_given_submission(submission)
          entries_written += 1
          submission_id = base36decode(submission.id)
          submissions_fetched_int.add(submission_id)



      # subtract submissions_fetched_int from submissions_to_fetch_int

      submissions_not_fetched = submissions_to_fetch_int.difference(submissions_fetched_int)
      for submission_id in submissions_not_fetched:
        # Mark nonexistent entries
        if not self.db_manager.row_exists(submission_id):
          non_existent_entry = Submission.non_existent_submission(submission_id)
          self.db_manager.insert_submission(non_existent_entry)
          entries_non_existent += 1
예제 #6
0
파일: app.py 프로젝트: cupidhaha/shorturl
def redis_get_alias_by_url(url):
    if r.hexists(REDIS_URL2NUMBER, url):
        number = int(r.hget(REDIS_URL2NUMBER, url))
        if number <= int(r.get(REDIS_COUNT)):
            return base36encode(number)
    return None
예제 #7
0
def record(name, secret):
    val = hashlib.sha224(name + secret + local_secret).hexdigest()
    hashval = base36encode(int(val, 16))
    key = name + '.' + hashval + base
    return key
예제 #8
0
#!/usr/bin/env python2
from pwn import *
from morse_talk import decode, encode
import binascii
import hashlib
from base36 import base36decode, base36encode

r = remote("morset.pwning.xxx", 11821)
p = r.recv()
print binascii.unhexlify("0{:02x}".format(base36decode(decode(p))))

temp = binascii.unhexlify("0{:02x}".format(base36decode(
    decode(p)))).split("SHA256(")[1][:-2]
print "to hash is: %s" % temp
h = hashlib.new("sha256")
h.update(temp)
print "hexdigest: %s" % h.hexdigest()
print "hexlified: %s" % binascii.hexlify(h.hexdigest())
print "base36ed: %s" % base36encode(int(binascii.hexlify(h.hexdigest()), 16))

r.sendline(encode(base36encode(int(binascii.hexlify(h.hexdigest()), 16))))

import time
time.sleep(1)
rep = r.recv().rstrip().strip()
print "rep is: %s" % rep
print binascii.unhexlify("{:02x}".format(base36decode(decode(rep))))
예제 #9
0
IMAGE_URL_TEMPLATE = Template(IMAGE_URL_TEMPLATE_STRING)

# Generator and matching regex for image IDs
IMAGE_ID_GENERATOR = lambda: str(uuid.uuid4())
IMAGE_ID_REGEX = r'([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})'

# Regex for valid file extensions
FILE_EXT_REGEX = r'(\.(?:BMP|bmp|JPG|jpg|JPEG|jpeg|PNG|png|gif|GIF|tif|TIF|tiff|TIFF))?'

# URL regex for all images
IMAGE_URL_REGEX = IMAGE_URL_TEMPLATE.substitute({'album_id': ALBUM_ID_REGEX, 
                                                 'image_id': IMAGE_ID_REGEX + FILE_EXT_REGEX})

# URL prefix for all shareable items
SHARE_ROOT_URL = '/share'

# Function to generate a random index for all shareable items
SHARE_INDEX_GENERATOR = lambda: random.randint(0, sys.maxint)

# Template to generate a shareable URL
SHARE_URL_TEMPLATE_STRING = SHARE_ROOT_URL + '/${hash}'
SHARE_URL_TEMPLATE = Template(SHARE_URL_TEMPLATE_STRING)

# Generator and matching regex for shareable URL hashes
SHARE_HASH_GENERATOR = lambda index: base36encode(index)
SHARE_HASH_REGEX = r'([0-9a-z]{1,' + str(len(str(sys.maxint))) + '})'

# URL regex for all shareable items
SHARE_URL_REGEX = SHARE_URL_TEMPLATE.substitute({'hash': SHARE_HASH_REGEX + FILE_EXT_REGEX})

예제 #10
0
#!/usr/bin/env python2
from pwn import *
from morse_talk import decode, encode
import binascii
import hashlib
from base36 import base36decode, base36encode

r = remote("morset.pwning.xxx", 11821)
p = r.recv()
print binascii.unhexlify("0{:02x}".format(base36decode(decode(p))))

temp = binascii.unhexlify("0{:02x}".format(base36decode(decode(p)))).split("SHA256(")[1][:-2]
print "to hash is: %s" % temp
h = hashlib.new("sha256")
h.update(temp)
print "hexdigest: %s" % h.hexdigest()
print "hexlified: %s" % binascii.hexlify(h.hexdigest())
print "base36ed: %s" % base36encode(int(binascii.hexlify(h.hexdigest()),16))

r.sendline(encode(base36encode(int(binascii.hexlify(h.hexdigest()),16))))

import time; time.sleep(1)
rep = r.recv().rstrip().strip()
print "rep is: %s" % rep
print binascii.unhexlify("{:02x}".format(base36decode(decode(rep))))