summaryrefslogtreecommitdiff
path: root/modules/installed/first_boot.py
blob: c42a2cd683c64d64944e9551dc797d6570fae544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from urlparse import urlparse
import os, cherrypy
from gettext import gettext as _
from plugin_mount import PagePlugin, PluginMount, FormPlugin
from modules.auth import require
from forms import Form
import util as u
from vendor.withsqlite.withsqlite import sqlite_db
import cfg

class FirstBoot(PagePlugin):
    order = 0 # order of running init in PagePlugins
    def __init__(self, *args, **kwargs):
        PagePlugin.__init__(self, *args, **kwargs)
        self.register_page("firstboot") # this is the url this page will hang off of (/firstboot)

    @cherrypy.expose
    def index(self, *args, **kwargs):
        return self.state0(*args, **kwargs)

    @cherrypy.expose
    @require()
    def state0(self, message=None, box_name=None, box_key=""):
        """
        All the parameters are form inputs.  They get passed in when
        the form is submitted.  This method checks the inputs and if
        they validate, uses them to take action.  If they do not
        validate, it displays the form to give the user a chance to
        input correct values.  It might display an error message (in
        the message parameter).

        message is an optional string that we can display to the
        user. It's a good place to put error messages.
        """

        
        main = "<p>Welcome.  It looks like this FreedomBox isn't set up yet.  We'll need to ask you a just few questions to get started.</p>"
        form = Form(title="Welcome to Your FreedomBox!", 
                        action="/firstboot", 
                        name="whats_my_name",
                        message=message)
        if not box_name:
            box_name = cfg.box_name
        form.html("<p>For convenience, your FreedomBox needs a name.  It should be something short that doesn't contain spaces or punctuation.  'Willard' would be a good name.  'Freestyle McFreedomBox!!!' would not.</p>")
        form.text_input('Name your FreedomBox', id="box_name", value=box_name)
        form.html("<p>%(box_name)s uses cryptographic keys so it can prove its identity when talking to you.  %(box_name)s can make a key for itself, but if one already exists (from a prior FreedomBox, for example), you can paste it below.  This key should not be the same as your key because you are not your FreedomBox!</p>" % {'box_name':cfg.box_name})
        form.text_box("If you want, paste your box's key here.", id="box_key", value=box_key)
        form.submit("Box it up!")

        main += form.render()
        return self.fill_template(template="base", title=_("First Boot!"), main=main,
        sidebar_right=_("""<strong>Statement of Principles</strong><p>When we say your
privacy is important, it's not just an empty pleasantry.  We really
mean it.  Your privacy control panel should give you fine-grained
control over exactly who can access your %s and the
information on it.</p>

<p>Your personal information should not leave this box without your
knowledge and direction.  And if companies or government wants this
information, they have to ask <strong>you</strong> for it.  This gives you a
change to refuse and also tells you who wants your data.</p>
""" % cfg.product_name))