Ejemplo n.º 1
0
# 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
Ejemplo n.º 2
0
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')
Ejemplo n.º 3
0
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()