Статьи

Взлом на CloudStack с помощью Flask

Примечание куратора: содержание этой статьи было написано Себастьеном Гоасгуеном в   блоге Build a Cloud .

Проблема с промежуточным программным обеспечением / бэкэндом заключается в том, что никто не видит, что вы делаете, и, поскольку я ужасен в графике / дизайне и ничего не знаю о принципах пользовательского интерфейса, я почти застрял в темноте. Поэтому сегодня я потратил пару часов на вторник Silly CloudStack Hack . Он сделан из Flask , хорошего чтения , Twitter Bootstrap и некоторого украденного кода из CloudMonkey

Flask — потрясающая веб-микросхема для Python. Конечно, мне нравится Python, поэтому я думаю, что Flask потрясающий. Это также здорово, потому что вы можете использовать его для разработки чистых сервисов REST . Bootstrap сейчас в моде , а CloudMonkey, также написанный на Python, представляет собой новый интерфейс командной строки CloudStack, который может похвастаться некоторыми интересными функциями, такими как автозаполнение, интерактивная оболочка и так далее.

Я буду краток, захватить requester.py из дерева источника CloudMonkey, это поможет вам сделать API вызовы к экземпляру CloudStack. Создайте простой скрипт с flask и установите переменные конечной точки CloudStack, а также ключи (я использую DevCloud):

import requester

from flask import Flask, url_for, render_template, request
app = Flask(__name__)

apikey='plgWJfZK4gyS3mOMTVmjUVg-X-jlWlnfaUJ9GAbBbf9EdM-kAYMmAiLqzzq1ElZLYq_u38zCm0bewzGUdP66mg'
secretkey='VDaACYb0LV9eNjTetIOElcVQkvJck_J_QljX_FcHRj87ZKiy0z0ty0ZsYBkoXkY9b7eq1EhwJaw7FF3akA3KBQ'
path='/client/api'
host='localhost'
port='8080'
protocol='http'

Настройте маршрут, который вы будете использовать для вызова звонка в CloudStack. Что-то вроде этого:

@app.route('/users')
def listusers():
    response, error = requester.make_request('listUsers',{},None,host,port,apikey,secretkey,protocol,path)
    resp=json.loads(str(response))
    return render_template('users.html',users=resp['listusersresponse'])

Теперь загрузите Bootstrap и вставьте его в статический каталог в вашем приложении Flask. Затем создайте файлы шаблонов HTML, используя синтаксис jinja2, примерно так:

{% extends "base.html" %}

{% block content %}

{% if users %}
{{ users }}
{% else %}
Hello World!
{% endif %}

{% endblock content %}
sebmini:templates sebastiengoasguen$ 

Теперь запустите приложение с помощью Python и нажмите http: // localhost: 5000, и bang, вы только что получили свой бонус к концу квартала ….! Ну, не совсем, но это начало ?

Шутка в сторону, это должно стать началом веселого проекта Google Summer of Code , я буду помещать его на github, если есть интерес. Также, если вы хотите еще один глупый взлом, отправьте requestter.py на свой телефон Android, и с помощью SL4a вы можете звонить в CloudStack со своего телефона … Silly CloudStack Среда взломать кого-нибудь?