import argparse
import uuid
import json
import socket
import os
# non standards, in requirements.txt
from flask import Flask, request, Markup, render_template, redirect, url_for
import requests
import github
class Anonymous_Github:
def __init__(self, github_token="0e8f5af6801d89e533f5c045920e928b4535d41e", host="127.0.0.1", port=5000,
config_dir='./repositories'):
self.github_token = github_token if github_token != "" else os.environ["GITHUB_AUTH_TOKEN"]
self.host = host
self.port = port
self.config_dir = config_dir
if config_dir[0:2] == "./":
self.config_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), config_dir[2:])
if not os.path.exists(self.config_dir):
os.makedirs(self.config_dir)
self.application = self.create_flask_application()
self.set_public_url()
self.github = github.Github(login_or_token=self.github_token)
def set_public_url(self):
if self.host == "0.0.0.0":
self.public_url = "http://" + socket.getfqdn() + ":" + str(self.port)
else:
self.public_url = "http://" + self.host + ":" + str(self.port)
def create_flask_application(self):
application = Flask(__name__)
application.log = {}
application.killurl = str(uuid.uuid4())
@application.template_filter('file_render', )
def file_render(file, terms):
def removeTerms(content, terms):
for term in terms:
content = content.replace(term, "XXX")
return content
if ".md" in file.name:
return removeTerms(Markup(self.github.render_markdown(file.decoded_content)), terms)
if ".jpg" in file.name or ".png" in file.name or ".png" in file.name or ".gif" in file.name:
return Markup("" % (file.url, file.name))
if ".html" in file.name:
return removeTerms(Markup(file.decoded_content), terms)
if ".txt" in file.name:
return removeTerms(Markup("
" + file.decoded_content + ""), terms) return Markup("Download %s" % (file.url, file.name)) @application.route('/' + application.killurl, methods=['POST']) def seriouslykill(): func = request.environ.get('werkzeug.server.shutdown') func() return "Shutting down..." @application.route('/repository/