summaryrefslogtreecommitdiff
path: root/server/settings.py
blob: c2af72a48e2d5b4d1b9485c51a335d051a0c963a (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
'''
    An important class that allows settings
    in the program & will keep the database
    updated.

    Verified: 2021 February 8
    * Follows PEP8
    * Tested Platforms
        * Windows 10
'''

from server.database import Database


class Settings:

    TABLE_NAME = 'environment'
    TABLE_KWARGS = {
        'email_alert': 'integer',
        'email_sender': 'text',
        'email_password': 'text',
        'email_receivers': 'text',
        'terminal_alert': 'integer',
        'auto_shell': 'integer',
        'gui_username': 'text',
        'gui_password': 'text',
        'gui_whitelist': 'text',
        'gui_alert': 'integer',
        'gui_update': 'integer',
        'connect_sticky': 'integer',
        'connect_refresh': 'integer',
        'http_log': 'integer',
        'action_log': 'integer',
        'console_log': 'integer',
        'traceback_log': 'integer'
    }

    EVENIORMENT_VARIABLES = ('EMAIL_ALERT',
                             'EMAIL_SENDER',
                             'EMAIL_PASSWORD',
                             'EMAIL_RECEIVERS',
                             'TERMINAL_ALERT',
                             'AUTO_SHELL',
                             'GUI_USERNAME',
                             'GUI_PASSWORD',
                             'GUI_WHITELIST',
                             'GUI_ALERT',
                             'GUI_UPDATE',
                             'CONNECT_STICKY',
                             'CONNECT_REFRESH',
                             'HTTP_LOG',
                             'ACTION_LOG',
                             'CONSOLE_LOG',
                             'TRACEBACK_LOG')

    DEFAULT = (int(),
               str(),
               str(),
               str(),
               int(True),
               int(True),
               'god',
               'view',
               str(),
               int(),
               int(True),
               int(),
               int(),
               int(True),
               int(True),
               int(True),
               int(True))

    @classmethod
    def set_environment(cls):
        db = Database()
        db.create_table(cls.TABLE_NAME,
                        **cls.TABLE_KWARGS)
        db.commit()

        values = db.read(cls.TABLE_NAME)

        if not values:
            db.write(cls.TABLE_NAME, cls.DEFAULT)
            db.commit()
            values.append(cls.DEFAULT)

        for key, value in zip((
                cls.EVENIORMENT_VARIABLES), values[0]):
            setattr(cls, key, value)

    @classmethod
    def environment(cls):
        return (cls.EMAIL_ALERT,
                cls.EMAIL_SENDER,
                cls.EMAIL_PASSWORD,
                cls.EMAIL_RECEIVERS,
                cls.TERMINAL_ALERT,
                cls.AUTO_SHELL,
                cls.GUI_USERNAME,
                cls.GUI_PASSWORD,
                cls.GUI_WHITELIST,
                cls.GUI_ALERT,
                cls.GUI_UPDATE,
                cls.CONNECT_STICKY,
                cls.CONNECT_REFRESH,
                cls.HTTP_LOG,
                cls.ACTION_LOG,
                cls.CONSOLE_LOG,
                cls.TRACEBACK_LOG)