Example #1
0
def wizard():
    """
    Wizard page should be avaible only on startup, and provide with a cool
    graphical interface a configuration wizard.
        {{{ import cfg file }}}
      step #1:
        Node description, i.e. title and subtitle
      step #2:
        Supported output: mail, aws?
        (mail is the only options supported now.)
      step #3 {>>>skip}
        Tulip settings: expiration date, maximum access and so on.
      step #4: {>>>skip}
        Advanced configs: author email, layout theme, keywords
      step #5: {{>>skip}}
        Logging Options
      step #6: {{>>skip}}
        Create first grups

    NOTE: {{>>skip}} should put some default values adequate for a normal
    globaleaks node.
    """

    import_form = FORM(
        TR(INPUT(_name="imp_url", _type="url"), "\tor\t", INPUT(_name="imp_file", _type="file")),
        TR(INPUT(_type="submit")),
    )

    step1_form = FORM(
        TABLE(
            TR(
                "Type of activity",
                SELECT(
                    OPTION("Local Municipality Activism", _value="lma"),
                    OPTION("Public Agencies", _value="pa"),
                    OPTION("Public Safety", _value="ps"),
                    OPTION("Corporate Transparency", _value="ct"),
                    _name="activity",
                ),
            ),
            TR("Leak author", INPUT(_name="author", _type="text", _value=settings.globals.author)),
            TR("Leak title", INPUT(_name="title", _type="text", _value=settings.globals.title)),
            TR("Leak description", INPUT(_name="subtitle", _type="text", _value=settings.globals.subtitle)),
            TR(INPUT(_type="submit")),
        )
    )

    step2_form = FORM(
        TABLE(
            TR("E-Mail Messages", INPUT(_name="mail", _type="checkbox", _value=True)),
            TR("SMS Messages", INPUT(_name="SMS", _type="checkbox", _value=True)),
        )
    )

    step3_form = FORM(
        TABLE(
            TR("Expiration Date", INPUT(_name="expire", _type="text", _value=settings.tulip.expire)),
            TR("Maximum Access", INPUT(_name="max_access", _type="int", _value=settings.tulip.max_access)),
        )
    )

    step4_form = FORM(
        TABLE(
            TR("Author Email", INPUT(_name="author_email", _type="email", _value=settings.globals.author_email)),
            TR("Layout Theme", INPUT(_name="layout_theme", _type="text", _value=settings.globals.layout_theme)),
            TR("HTML Keyword", INPUT(_name="html_keyword", _type="text", _value=settings.globals.html_keyword)),
        )
    )

    # XXX: server logging depends on client logging!
    step5_form = FORM(
        TABLE(
            TR("Logging client-side", INPUT(_name="client", _type="text", _value=settings.logging.client)),
            TR("Logging server-side", INPUT(_name="server", _type="text", _value=settings.logging.server)),
            TR("Logging file", INPUT(_name="logfile", _type="file", _value=settings.logging.logfile)),
        )
    )

    # set up here various groups: one group form + button "add group"
    step6_form = None

    if step1_form.accepts(request.vars):
        # copy config template to GlobaLeaks/globaleaks.conf
        if step1_form.vars.activity:
            copyfile(os.path.join(projroot, "config_templates", "%s.conf" % step1_form.vars.activity), cfgfile)
        # fill the new config file with the described global attributes
        settings.globals.author = step1_form.vars.author
        settings.globals.title = step1_form.vars.title
        settings.globals.subtitle = step1_form.vars.subtitle
    if step2_form.accepts(request.vars):
        # XXX: Add sms/e-mail notification support in config
        pass
    if step3_form.accepts(request.vars):
        copyform(step3_form.vars, settings.tulip)
    if step4_form.accepts(request.vars):
        copyform(step4_form.vars, settings.globals)
    if step5_form.accepts(request.vars):
        copyform(step5_form.vars, settings.logging)

    return dict(
        import_form=import_form,
        step1=step1_form,
        step2=step2_form,
        step3=step3_form,
        step4=step4_form,
        step5=step5_form,
        step6=step6_form,
    )
Example #2
0
def config():
    response.flash = "Welcome to the Globaleaks new wizard application"

    mail_form = FORM(
        TABLE(
            TR("server", INPUT(_name="server", _type="text")),
            TR("sender", INPUT(_name="sender", _type="text")),
            TR("login", INPUT(_name="login", _type="text")),
            TR(INPUT(_type="submit")),
        )
    )
    auth_form = FORM(
        TABLE(
            TR(
                "verification",
                INPUT(
                    _name="registration_requires_verification",
                    _type="text",
                    _value=settings.auth.registration_requires_verification,
                ),
            ),
            TR(
                "approval",
                INPUT(
                    _name="registration_requires_approval",
                    _type="text",
                    _value=settings.auth.registration_requires_approval,
                ),
            ),
            TR(INPUT(_type="submit")),
        )
    )

    global_form = FORM(
        TABLE(
            TR("title", INPUT(_name="title", _type="text", _value=settings.globals.title)),
            TR("subtitle", INPUT(_name="subtitle", _type="text", _value=settings.globals.subtitle)),
            TR("author", INPUT(_name="author", _type="text", _value=settings.globals.author)),
            TR("author email", INPUT(_name="author_email", _type="text", _value=settings.globals.author_email)),
            TR(INPUT(_type="submit")),
        )
    )

    # XXX: client logging depends on server logging!
    logging_form = FORM(
        TABLE(
            TR("client", INPUT(_name="client", _type="text", _value=settings.logging.client)),
            TR("server", INPUT(_name="server", _type="text", _value=settings.logging.server)),
            TR("log file", INPUT(_name="logfile", _type="file", _value=settings.logging.logfile)),
            TR(INPUT(_type="submit")),
        )
    )

    if global_form.accepts(request.vars, keepvalues=True):
        copyform(global_form.vars, settings.globals)
    if auth_form.accepts(request.vars, keepvalues=True):
        copyform(auth_form.vars, settings.auth)
    if mail_form.accepts(request.vars, keepvalue=True):
        copyform(mail_form.vars, settings.mail)
    if logging_form.accepts(request.vars, keepvalue=True):
        if logging_form.vars.logfile:
            copyform(logging_form.vars, settings.logging)

    return dict(
        settings=settings, global_form=global_form, mail_form=mail_form, auth_form=auth_form, logging_form=logging_form
    )