Ejemplo n.º 1
0
 def render_content(self, ctx, data):
     return ctx.tag[tags.h3["Thebe"],
                    tags.a(href="Users/")['Manage Users'], tags.br,
                    tags.a(href="Groups/")['Manage Groups'], tags.br,
                    tags.a(href="Servers/")['Manage Servers'], tags.br,
                    tags.a(href="Domains/")['Manage Domains'], tags.br,
                    tags.a(href="Globals/")['Global Operations'], tags.br, ]
Ejemplo n.º 2
0
        def gotGroups(groups):
            tlist = []

            for k in groups:
                tlist.append((tags.a(href="View/%s/" % k[0])[k[1]],
                              tags.a(href="Delete/%s/" % k[0])["Delete"]))

            return ctx.tag[tags.h3["Group list"],
                           self.dataTable(["Group name", ""], tlist), tags.br,
                           tags.br, tags.h3["Add group"],
                           tags.directive('form addGroup'), ]
Ejemplo n.º 3
0
 def renderServers(server):
     servers = [(i[1], i[2], i[3], [
         tags.a(href="Edit/%s/" % i[0])["Edit"],
         " ",
         tags.a(href="Edit/Delete/%s/" % i[0])["Delete"]
     ]) for i in server]
     return ctx.tag[
         tags.h3["Server List"],
         self.dataTable(["Name", "Hostname", "Key", ""], servers, sortable=True),
         tags.br,
         tags.h3["Comission new server"],
         tags.directive('form addServer'),
     ]
Ejemplo n.º 4
0
Archivo: DNS.py Proyecto: jpunwin/tums
    def render_ncontent(self, ctx, data):
        dom = None
        if len(self.arguments) > 0:
            dom = self.arguments[0]

        dns = DNS.DNS('o=THUSA', 'thusa')
        
        if dom:
            data = dns.printableFlatRecords(dom)
            tab = [
                [
                    tags.tr[
                        tags.td[i[0]],
                        tags.td[i[1]],
                        tags.td[j]
                    ]
                    for j in i[2]
                ] 
                for i in data
            ]
        else:
            tab = [
                tags.tr[
                    tags.td[
                        tags.a(href="%s/" % i)[i]
                    ]
                ]
                for i in data
            ]

        return ctx.tag[
            tags.table[ tab ]
        ]
Ejemplo n.º 5
0
    def render_topMenu(self, ctx, data):
        m = [
            tags.td[tags.a(href="/Updates/")["Updates"]],
            tags.td[tags.a(href="/Thebe/")["Thebe"]]
        ]

        if 1 not in self.avatarId.gids:
            m = ""

        return ctx.tag[tags.table[
            tags.tr[tags.td[tags.a(href="/Dashboard/")["Dashboard"]],
                    tags.td[tags.a(href="/ServerUsers/")["Users"]],
                    tags.td[tags.a(href="/Servers/")["Server Manager"]],
                    tags.td[tags.a(href="/DNS/")["DNS"]],
                    tags.td[tags.a(href="/Tickets/")["Tickets"]],
                    tags.td[tags.a(href="/Orders/")["Orders"]], m,
                    tags.td[tags.a(href="/__logout__")["Logout"]], ]]]
Ejemplo n.º 6
0
 def renderDomains(domains):
     return ctx.tag[tags.table(
         _class="sortable", id="TdomainTable",
         cellspacing="0")[tags.thead(
             background="/images/gradMB.png")[tags.tr[tags.th(
                 colformat="istr")["Domain"]]],
                          tags.tbody(id="searchTableBody")[[
                              tags.tr[tags.td[tags.a(
                                  href="View/%s/" %
                                  domain[0])[domain[0]]]]
                              for domain in domains
                          ]]]]
Ejemplo n.º 7
0
        def renderUpdates(updates):
            trows = []
            for i in updates:
                trows.append(
                    (i[1], i[2], tags.a(href="Delete/%s" % i[0])["Delete"]))

            return ctx.tag[
                tags.h3["Approved Updates"], tags.br,
                self.
                dataTable(["Package", "Version", ""], trows, sortable=True),
                tags.br, tags.h3["Approve Update"],
                tags.directive('form approveUpdate')]
Ejemplo n.º 8
0
        def renderServers(servers):
            servers2 = {}
            for s in servers:
                if s[1] in self.enamel.tcsMaster.connectedNodes:
                    servers2[s[1]] = ('Online', s[1], s[4], s[0])
                elif s[1] in self.enamel.tcsMaster.knownNodes:
                    servers2[s[1]] = ('Online (No Direct)', s[1], s[4], s[0])
                else:
                    servers2[s[1]] = ('Offline', s[1], s[2], s[0])

            def getGraph(server, canonical):
                # Returns the right graph image or structure for this particular view mode
                if (len(self.arguments) < 1) or (self.arguments[0] == 'load'):
                    return tags.img(
                        src=
                        "/RRD?source=%s&type=load&timeframe=-7d&width=200&height=50&nog=yes"
                        % (server))

                if self.arguments[0] == 'latency':
                    return tags.img(
                        src=
                        "/RRD?source=%s&type=latency&timeframe=-7d&width=200&height=50&nog=yes"
                        % (canonical))
                if self.arguments[0] == 'internet':
                    return tags.img(
                        src=
                        "/RRD?source=%s&type=net&timeframe=-7d&width=200&height=50&nog=yes"
                        % (server))

                if self.arguments[0] == 'mailrate':
                    return tags.img(
                        src=
                        "/RRD?source=%s&type=exim&timeframe=-7d&width=200&height=50&nog=yes"
                        % (server))

            serversL = servers2.keys()
            serversL.sort()

            servers3 = []

            for i in serversL:
                servers3.append(servers2[i])

            return ctx.tag[
                tags.h3["Servers"], tags.br,
                tags.directive('form switchView'),
                self.dataTable(["Name", "Status", "Last IP", "Load", ""], [(
                    i[0] == "Online", i[1], i[0], i[2],
                    tags.div(_class="graphBlock")[getGraph(i[3], i[1])],
                    tags.a(href="/Servers/Manage/%s/" %
                           i[3])["Manage"]) for i in servers3],
                               sortable=True), ]
Ejemplo n.º 9
0
 def renderUsers(users):
     return ctx.tag[tags.table(
         _class="sortable", id="TdomainTable",
         cellspacing="0")[tags.thead(
             background="/images/gradMB.png")[tags.tr[
                 tags.th(colformat="istr")["User"],
                 tags.th(colformat="istr")["Server"]]],
                          tags.tbody(id="searchTableBody")[[
                              tags.tr[tags.td[tags.a(
                                  href="/ServerUsers/Edit/%s/" %
                                  user[0])[user[1]]], tags.td[user[2]]]
                              for user in users
                          ]]]]
Ejemplo n.º 10
0
        def renderServerManager(ports, events, updates, server):
            reachability = [i[1] for i in ports]
            services = ["Vulani", "SMTP", "POP3", "IMAP"]

            if server[1] in self.enamel.tcsMaster.connectedNodes:
                ThiveReach = "Online"
            elif server[1] in self.enamel.tcsMaster.knownNodes:
                ThiveReach = "Online"
            else:
                ThiveReach = "Offline"

            tdata = [
                ("Server",
                 tags.a(href="http://%s:9682/auth/" % server[4])[server[1]]),
                ("Status", ThiveReach),
                ("Services", tags.table[[
                    tags.tr[tags.td[service], tags.td[
                        ": ", reachability[k] and "Available" or "Offline"]]
                    for k, service in enumerate(services)
                ]]),
                ("Performance", tags.div[
                    tags.strong["Load"], tags.br,
                    tags.img(src='/RRD?source=%s&type=load&timeframe=-24h' %
                             self.arguments[0]), tags.br, tags.strong["Mail"],
                    tags.br,
                    tags.img(src='/RRD?source=%s&type=exim&timeframe=-24h' %
                             self.arguments[0]), tags.br,
                    tags.strong["Latency"], tags.br,
                    tags.img(src='/RRD?source=%s&type=latency&timeframe=-12h' %
                             server[1]), ]),
                (
                    "Updates",
                    tags.table[[
                        tags.tr[
                            #tags.td[tags.a(href='Package/%s/' % i[2])['Send Update']],
                            tags.td[i[2]], tags.td[i[3].ctime()]]
                        for i in updates
                    ]]),
                ("Event Log", tags.table[[
                    tags.tr[
                        tags.td[i[0].ctime()],
                        tags.td[tags.strong[log.formatLogType(i[1].encode())]],
                        tags.td[log.formatLogMessage(i[1].encode(
                        ), i[2].encode())]] for i in events
                ]])
            ]

            return ctx.tag[tags.table[[
                tags.tr[tags.td(valign="top")[tags.strong[i]], tags.td[j]]
                for i, j in tdata
            ]]]
Ejemplo n.º 11
0
 def rendercont(updated):
     return ctx.tag[tags.h3["Global Changes"],
                    web.TabSwitcher([
                        ("Admin Password", 'adminpass'),
                        ("TUMS Updates", 'updatetums'),
                    ]),
                    tags.div(id="updatetums", _class="tabPane")[
                        tags.h3["Update TUMS"],
                        updated and "Update sent" or tags.a(
                            href="Update/")["Update all now"], ],
                    tags.div(id="adminpass", _class="tabPane")[
                        tags.h3["Change Administrator Password"],
                        tags.directive('form adminpassword')],
                    web.LoadTabSwitcher()]
Ejemplo n.º 12
0
        def renderOutage(servers):
            deadServers = []
            allServers = []
            idDict = {}
            faultyServers = []
            for i in servers:
                name = i[1]
                idDict[name] = i[0]
                allServers.append((name, i[3], i[5]))
                if name not in self.enamel.tcsMaster.connectedNodes:
                    if name not in self.enamel.tcsMaster.knownNodes:
                        deadServers.append(name)

            allServers.sort()

            table = []

            for svr in allServers:
                tr = [
                    tags.td[tags.a(href=url.root.child('Servers').child(
                        'Manage').child(idDict.get(svr[0])))[svr[0] or ""]],
                    tags.td[tags.pre[svr[1]]], tags.td[svr[2] or "<1.7.0"],
                    tags.td[tags.span(
                        style="color: %s" %
                        (svr[0] in deadServers and "#f00" or "#0f0"))[
                            svr[0] in deadServers and "Offline" or "Online"]]
                ]

                if 1 in self.avatarId.gids:
                    tr.append(
                        tags.td[tags.a(href=url.root.child('Commands').child(
                            'Upgrade').child(idDict.get(svr[0])))["Update"]])

                table.append(tags.tr[tr])

            return ctx.tag[table]
Ejemplo n.º 13
0
        def gotres(res):
            table = []
            # Create a dictionary out of our group memberships
            glist = {}
            for g in res[1][1]:
                if g[0] in glist:
                    glist[g[0]].append((g[1], g[2]))
                else:
                    glist[g[0]] = [(g[1], g[2])]

            for user in res[0][1]:
                groups = [(i[1], tags.br) for i in glist.get(user[0], [])]
                table.append(
                    (user[0], tags.a(href="/Account/%s/" % user[0])[user[1]],
                     user[3] or "Not set", user[4] or "Not set", groups))

            return ctx.tag[
                tags.h3["Users"],
                Widgets.autoTable(
                    ['Id', 'Username', 'Name', 'Email', 'Groups'], table),
                tags.h3["Add user"],
                tags.directive('form addUser')]
Ejemplo n.º 14
0
 def gotUser(row):
     return ctx.tag[tags.table(_class="stdTable")[
         tags.tr[tags.td(
             style="text-align:right;")[tags.strong["Name: "]],
                 tags.td[row[3] or ""]],
         tags.tr[tags.td(
             style="text-align:right;")[tags.strong["Company: "]],
                 tags.td[row[5] or ""]], tags.tr[tags.td(
                     style="text-align:right;")[tags.strong["Email: "]],
                                                 tags.td[row[4] or ""]],
         tags.tr[tags.td(
             style="text-align:right;")[tags.strong["Phone number: "]],
                 tags.td[row[10] or ""]],
         tags.tr[tags.td(
             style="text-align:right;")[tags.strong["Address: "]],
                 tags.td[row[6] or ""]], tags.tr[tags.td[""],
                                                 tags.td[row[7] or ""]],
         tags.tr[tags.td[""], tags.td[row[8]
                                      or ""]], tags.tr[tags.td[""],
                                                       tags.td[row[9]
                                                               or ""]]],
                    tags.a(href="/Account/")["Manage account"]]
Ejemplo n.º 15
0
        def renderTable(rows):
            orderTable = []

            for i in rows:
                if i[5] == "Vulani License":
                    descr = "Vulani License + %s support for %s" % (
                        i[6].capitalize(), i[3])
                else:
                    descr = ""
                orderTable.append([
                    i[10], i[3], i[5], descr, i[8].ctime(), i[9].ctime(), i[7]
                    or u"Pending",
                    tags.a(href="/Orders/EditOrder/%s/" % i[0])["Manage"]
                ])

            return ctx.tag[tags.div(_class="tabBlock")[
                tags.div(_class="tabHeader")[tags.div(
                    _class="tabText")["Pending Orders"]],
                tags.div(_class="tabContent")[self.dataTable([
                    "Requester", "Company", "Type", "Detail", "Created",
                    "Changed", "Status", ""
                ],
                                                             orderTable,
                                                             width="100%")]]]
Ejemplo n.º 16
0
 def render_content(self, ctx, d):
     return ctx.tag[tags.a(href="/Orders/Vulani")["Vulani licenses"],
                    tags.br,
                    #tags.a(href="/Orders/DNS")["DNS hosting"],
                    ]
Ejemplo n.º 17
0
from datetime import datetime, date

from custom import Widgets
from twisted.internet import utils, defer

from nevow import inevow

from lib import PageBase, web

PayGateKey = "secret"
PayGateID = "10011013800"

PayGateLogoStuff = tags.div(_class="paygateLogos")[tags.p(
    style="margin-top:30px;")[tags.a(
        href="http://www.paygate.co.za", target="_blank")[tags.img(
            src="http://www.thusa.co.za/images/paygate.png", border="0")]]]


def genPayGateReqCHK(formDict):
    vars = [
        formDict["PAYGATE_ID"], formDict["REFERENCE"], formDict["AMOUNT"],
        formDict["CURRENCY"], formDict["RETURN_URL"],
        formDict["TRANSACTION_DATE"], formDict["EMAIL"]
    ]
    if "SUB_START_DATE" in formDict:
        vars.extend([
            formDict["SUB_START_DATE"],
            formDict["SUB_END_DATE"],
            formDict["SUB_FREQUENCY"],
            formDict["PROCESS_NOW"],
Ejemplo n.º 18
0
        def renderForm(user):
            self.user = user
            domains = ['asd.co.za']
            username = self.user[3]
            domain = self.user[2]

            u_form = formal.Form(
                self.submitForm
            )[formal.Group('userSettings')[tags.div(_class="field")[
                tags.label[self.text.userFormLabelEmailAddress],
                tags.div(id="emailAd", _class="inputs")["%s@%s" %
                                                        (username, domain)]],
                                           formal.Field('uid',
                                                        formal.String(
                                                            required=True),
                                                        label=self.text.
                                                        userFormLabelUsername),
                                           formal.Field('givenName',
                                                        formal.String(
                                                            required=True),
                                                        label=self.text.
                                                        userFormLabelName),
                                           formal.Field('sn',
                                                        formal.String(),
                                                        label=self.text.
                                                        userFormLabelSurname),
                                           formal.Field('userPassword',
                                                        formal.String(),
                                                        formal.CheckedPassword,
                                                        label=self.text.
                                                        userFormLabelPass), ],
              formal.Group('mailSettings')
              [formal.Field('mailForwardingAddress0',
                            formal.String(),
                            label=self.text.userFormLabelForward),
               formal.
               Field('mailForwardingAddress1', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress2', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress3', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress4', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress5', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress6', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress7', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress8', formal.String(), label=""),
               formal.
               Field('mailForwardingAddress9', formal.String(), label=""),
               tags.div(
                   _class="userLine")[tags.a(href="#", onclick="addForward();")
                                      [self.text.userFormLabelAddline]],
               formal.Field('mailAlternateAddress0',
                            formal.String(),
                            label=self.text.userFormLabelAlias),
               formal.Field('mailAlternateAddress1', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress2', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress3', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress4', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress5', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress6', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress7', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress8', formal.String(), label=""
                            ),
               formal.Field('mailAlternateAddress9', formal.String(), label=""
                            ),
               tags.div(
                   _class="userLine")[tags.a(href="#", onclick="addAlias();")[
                       self.text.userFormLabelAddline]],
               formal.Field('vacen',
                            formal.Boolean(),
                            label=self.text.userFormLabelVacationActive,
                            description=self.text.userFormTextVacationNote),
               formal.Field('vacation',
                            formal.String(),
                            formal.TextArea,
                            label=self.text.userFormLabelVacation), ],
              formal.Group('userPermissions')
              [formal.Field('employeeType',
                            formal.Boolean(),
                            label=self.text.userFormLabelWeb),
               formal.Field('accountStatus',
                            formal.Boolean(),
                            label=self.text.userFormLabelEmail),
               formal.Field('tumsAdmin',
                            formal.Boolean(),
                            label=self.text.userFormLabelAdmin),
               formal.Field(
                   'tumsUser', formal.Sequence(formal.String()),
                   formal.widgetFactory(formal.CheckboxMultiChoice,
                                        [(i, i) for i in domains])),
               formal.Field('tumsReports',
                            formal.Boolean(),
                            label=self.text.userFormLabelReports),
               #      formal.Field('copyto', formal.String(), label = self.text.userFormLabelCopy,
               #          description = self.text.userFormTextCopy)
               ],
              #  formal.Group('userAccess')[
              #      formal.Field('vpnEnabled', formal.Boolean(), label = self.text.userFormLabelVPN,
              #          description = self.text.userFormTextVPN),
              #      formal.Field('ftpEnabled', formal.Boolean(), label = self.text.userFormLabelFTP,
              #          description = self.text.userFormTextFTP),
              #      formal.Field('ftpGlobal', formal.Boolean(), label = self.text.userFormLabelGlobalFTP,
              #          description = self.text.userFormTextGlobal)
              #  ]
              ]

            u_form.addAction(self.submitForm)

            u_form.data['userSettings.uid'] = self.user[3]
            u_form.data['userSettings.givenName'] = self.user[4]
            u_form.data['userSettings.sn'] = self.user[5]

            u_form.data['userPermissions.employeeType'] = "squid" in self.user[
                9]
            u_form.data['userPermissions.tumsUser'] = []
            u_form.data[
                'userPermissions.accountStatus'] = "active" in self.user[10]
            u_form.data[
                'userPermissions.tumsAdmin'] = "tumsAdmin" in self.user[9]
            u_form.data['userPermissions.tumsReports'] = "Repor" in self.user[
                9]

            u_form.data['mailSettings.vacen'] = self.user[20] == 1
            u_form.data['mailSettings.vacation'] = self.user[19]

            return u_form
Ejemplo n.º 19
0
 def render_sideMenu(self, ctx, data):
     return ctx.tag[tags.a(href="Users/")['Manage Users'], tags.br,
                    tags.a(href="Groups/")['Manage Groups'], tags.br,
                    tags.a(href="Servers/")['Manage Servers'], tags.br,
                    tags.a(href="Domains/")['Manage Domains'], tags.br,
                    tags.a(href="Globals/")['Global Operations'], tags.br, ]
Ejemplo n.º 20
0
 def updatesSent(self, ctx):
     return ctx.tag[
         "Update sent. ",
         tags.a(href=url.root.child('Servers').child('Manage').
                child(self.arguments[0]))["Back to server management"]]
Ejemplo n.º 21
0
 def renderConfirmed(self, _, ctx):
     return ctx.tag[
         tags.h3["Registration confirmed!"],
         "Your registration has been successfully confirmed. You may now log in by clicking here: ",
         tags.a(href="https://portal.vulani.net/"
                )["https://portal.vulani.net/"]]
Ejemplo n.º 22
0
def TabSwitcher(tabs, id="A"):
    tabNames = [i for j, i in tabs]
    tabLables = [i for i, j in tabs]

    closeTabs = ';\n'.join([
        "    hideElement('%s'); getElement('tab%s').style.color='#666666';" %
        (i, i) for i in tabNames
    ])

    switchFunc = """
        tabSwitcher%s = function (tab) {
            %s
            getElement('tab'+tab).style.color='#E710D8';
            showElement(tab);
            createCookie('tabOpen%s', tab);
            return false;
        };
    """ % (id, closeTabs, id)

    return [
        tags.xml("""<script type="text/javascript">
        function createCookie(name,value) {
            var date = new Date();
            date.setTime(date.getTime()+(24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
            document.cookie = name+"="+value+expires+"; path=/";
        }

        function readCookie(name) {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for(var i=0;i < ca.length;i++) {
                var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
            }
            return null;
        }
        createTabSwitcher%s = function() {
            %s
            var firstTab = '%s';
            showElement(firstTab);
            getElement('tab'+firstTab).style.color='#E710D8';
            try {
                var tab = readCookie('tabOpen%s');
                if (tab) {
                    %s
                    showElement(tab);
                    getElement('tab'+tab).style.color='#E710D8';
                }
            } catch(dontCare){
                showElement(firstTab);
                getElement('tab'+ firstTab).style.color='#E710D8';
            }
        };
        %s
        </script>""" %
                 (id, closeTabs, tabNames[0], id, closeTabs, switchFunc)),
        tags.br, tags.br,
        tags.table(cellspacing=0, cellpadding=0)[tags.tr[[
            tags.
            td(_class="tabTab",
               style=
               "padding:0;background-image: url(/images/tabcenter.png); background-repeat: repeat-x;",
               onclick="return tabSwitcher%s('%s');" %
               (id, j))[tags.a(id="tab" + j,
                               href="#",
                               style="color:#666666; text-decoration:none;",
                               title="Switch to the tab: %s" % i,
                               onclick="return tabSwitcher%s('%s');" %
                               (id, j))[tags.img(src='/images/lefttab.png',
                                                 align="absmiddle",
                                                 style="border:none"),
                                        tags.strong[i],
                                        tags.img(src='/images/righttab.png',
                                                 align="absmiddle",
                                                 style="border:none")], ]
            for i, j in tabs
        ]]]
    ]
Ejemplo n.º 23
0
 def render_userMenu(self, ctx, data):
     return ctx.tag["Welcome, ", tags.strong[self.avatarId.username], ". ",
                    tags.a(href="/Password/")['Change Password'], " / ",
                    tags.a(href="/__logout__/")['Log out']]