# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF # THE POSSIBILITY OF SUCH DAMAGE. import os from luxon import g from luxon import GetLogger from luxon.exceptions import AccessDenied from luxon.utils.imports import get_class log = GetLogger(__name__) class Token(object): """Tokens Responders / Views. Luxon tokens use PKI. Its required to have the private key to sign new tokens on the tachyonic api. Endpoints will require the public cert to validate tokens authenticity. The tokens should be stored in the application root. Usually where the wsgi file is located. Creating token: openssl req -nodes -new -x509 -keyout token.key -out token.cert
from luxon import g from luxon import GetLogger from luxon.utils.venv import create as create_env from luxon.utils.objects import save, load from luxon.utils.objects import object_name from luxon.utils.files import exists, mkdir, joinpath from luxon.exceptions import ExecuteError from luxon.utils.timezone import utc, now, format_iso8601 from luxon import register from psychokinetic.github import GitHub from tachweb.github.version import version_order from tachweb.github.views.utils import (build_doc, clone, handle_error, updated) log = GetLogger() @register.resource('GITHUB', '/sync') def github(req, resp): root_path = g.app.path mkdir(joinpath(root_path, 'github')) mkdir(joinpath(root_path, 'docs')) try: projects = load(root_path + '/projects.pickle') except FileNotFoundError: projects = {} username = g.app.config.get('github', 'username') password = g.app.config.get('github', 'password')
def execute(*args, check=True, virtualenv=False): from luxon import GetLogger log = GetLogger(__name__) loginfo = TemporaryFile() logerr = TemporaryFile() log_id = string_id(length=6) try: env = os.environ.copy() if virtualenv is False: if '__PYVENV_LAUNCHER__' in env: del env['__PYVENV_LAUNCHER__'] log.info("Execute '%s'" % " ".join(args[0]), log_id=log_id) subprocess.run(*args, stdout=loginfo, stderr=logerr, check=True, env=env) loginfo.seek(0) logerr.seek(0) log.info(if_bytes_to_unicode(loginfo.read()), log_id=log_id) log.error(if_bytes_to_unicode(logerr.read()), log_id=log_id) loginfo.seek(0) return if_bytes_to_unicode(loginfo.read()) except subprocess.CalledProcessError as e: logerr.seek(0) if check is True: cmd = " ".join(*args) raise ExecuteError(cmd, if_bytes_to_unicode(logerr.read())) from None loginfo.seek(0) logerr.seek(0) log.info(if_bytes_to_unicode(loginfo.read()), log_id=log_id) log.error(if_bytes_to_unicode(logerr.read()), log_id=log_id) logerr.seek(0) return if_bytes_to_unicode(logerr.read()) finally: loginfo.close() logerr.close()