Move auth tokens to server config.

This commit is contained in:
luxick
2018-03-15 13:14:54 +01:00
parent b5df3289b4
commit 4b8d2421a5
9 changed files with 93 additions and 70 deletions

View File

@@ -102,6 +102,13 @@ def create_death(app: 'gtk_ui.GtkUi'):
:param app: Main Gtk application
:return: Death object or None if dialog was canceled
"""
# Set penalties
default_drink = app.drinks.data[0].name
store = app.ui.get_object('player_penalties_store')
store.clear()
for player in app.ui.get_object('episode_players_store'):
store.append([None, player[1], default_drink, player[0]])
# Run the dialog
dialog = app.ui.get_object("edit_death_dialog") # type: Gtk.Dialog
result = dialog.run()

View File

@@ -29,7 +29,6 @@ class DialogHandlers:
def do_add_enemy(self, entry):
if entry.get_text():
store = self.app.ui.get_object('enemy_season_store')
enemy = models.Enemy()
enemy.name = entry.get_text()
enemy.season = self.app.get_selected_season_id()

View File

@@ -96,12 +96,22 @@ def reload_episode_stats(app: 'gtk_ui.GtkUi'):
drink_count = sum(len(death.penalties) for death in episode.deaths)
app.ui.get_object('ep_drinks_label').set_text(str(drink_count))
app.ui.get_object('ep_player_drinks_label').set_text(str(len(episode.deaths)))
# Compute booze stats
dl_booze = sum(len(death.penalties) * death.penalties[0].size for death in episode.deaths)
l_booze = round(dl_booze / 10, 2)
player_ml_booze = round((dl_booze * 100) / len(episode.players), 2)
app.ui.get_object('ep_booze_label').set_text('{}l'.format(l_booze))
dl_booze = sum(len(death.penalties) * death.penalties[0].size for death in episode.deaths)
ml_booze = round(dl_booze * 10, 0)
app.ui.get_object('ep_player_booze_label').set_text('{}ml'.format(ml_booze))
app.ui.get_object('ep_player_booze_label').set_text('{}ml'.format(player_ml_booze))
# Compute pure alc stats
deaths = episode.deaths
dl_alc = 0
for death in deaths:
dl_alc += sum((penalty.size / 100) * penalty.drink.vol for penalty in death.penalties)
ml_alc = round(dl_alc * 100, 2)
app.ui.get_object('ep_alc_label').set_text('{}ml'.format(ml_alc))
# Compute hardest enemy stats
enemy_list = [death.enemy.name for death in episode.deaths]
sorted_list = Counter(enemy_list).most_common(1)
if sorted_list:

View File

@@ -167,7 +167,7 @@
</object>
</child>
<child>
<object class="GtkMenuItem">
<object class="GtkMenuItem" id="add_episode_item">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add Episode</property>
@@ -220,7 +220,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem">
<object class="GtkMenuItem" id="add_death_item">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add Death</property>
@@ -230,7 +230,7 @@
</object>
</child>
<child>
<object class="GtkMenuItem">
<object class="GtkMenuItem" id="add_victory_item">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add Victory</property>
@@ -263,7 +263,7 @@
</object>
</child>
<child>
<object class="GtkMenuItem">
<object class="GtkMenuItem" id="manage_drinks_item">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Manage Drinks</property>
@@ -549,50 +549,6 @@
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Most Deaths:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Hardest Enemy:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">8</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ep_enemy_name_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ep_worst_player_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">8</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
@@ -731,6 +687,34 @@
<property name="top_attach">6</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Hardest Enemy:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ep_enemy_name_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">7</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>

View File

@@ -14,7 +14,7 @@ DEFAULT_CONFIG = {
'auto_connect': False,
'servers': [{
'host': 'localhost',
'port': 12345,
'port': 55225,
'buffer_size': 1024,
'auth_token': ''}
]

View File

@@ -0,0 +1,18 @@
# This config will be copied on first launch.
# Edit the the copied file at '~/.config/dsst/server.json' before launching the server
DEFAULT_CONFIG = {
'database': {
'db_name': 'dsst',
'user': 'dsst',
'password': 'dsst'
},
'server': {
'host': 'localhost',
'port': 55225,
'buffer_size': 1024
},
'tokens': {
'<read_write_token_here>': 'rw',
'<read_only_token_here>': 'r'
}
}

View File

@@ -1,28 +1,23 @@
import json
import pickle
import socket
import sys
import os
from common import util, models
from dsst_server import func_read, func_write, tokens
from dsst_server import func_read, func_write
from dsst_server.func_proxy import FunctionProxy
from dsst_server.data_access import sql, sql_func
PORT = 12345
HOST = socket.gethostname()
BUFFER_SIZE = 1024
from dsst_server.config import DEFAULT_CONFIG
class DsstServer:
def __init__(self, config={}):
def __init__(self, config):
self.socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Created socket')
self.socket_server.bind((HOST, PORT))
print('Bound socket to {} on host {}'.format(PORT, HOST))
server_conf = config.get('server')
self.socket_server.bind((server_conf.get('host'), server_conf.get('port')))
print('Bound socket to {} on host {}'.format(server_conf.get('port'), server_conf.get('host')))
# Initialize database
db_config = config.get('database')
@@ -37,7 +32,7 @@ class DsstServer:
'r': read_actions,
'rw': read_actions + write_actions
}
self.tokens = {token: parm_access[perms] for token, perms in tokens.TOKENS}
self.tokens = {token: parm_access[perms] for token, perms in config.get('tokens').items()}
print('Loaded auth tokens: {}'.format(self.tokens.keys()))
def run(self):
@@ -85,8 +80,21 @@ def load_config(config_path: str) -> dict:
return json.load(config_file)
def save_config(config: dict, config_path: str):
path = os.path.dirname(config_path)
if not os.path.isdir(path):
os.mkdir(path)
with open(config_path, 'wb') as file:
file.write(json.dumps(config, sort_keys=True, indent=4, separators=(',', ': ')).encode('utf-8'))
def main():
config = os.path.join(os.path.expanduser('~'), '.config', 'dsst', 'server.json')
if not os.path.isfile(config):
save_config(DEFAULT_CONFIG, config)
print('No server config file found.\nCopied default config to "{}"\nPlease edit file before starting server.'
.format(config))
sys.exit(0)
server = DsstServer(load_config(config))
try:
server.run()

View File

@@ -1,5 +0,0 @@
# Define access tokens here
# i.E: { 'read': ['a', 'b''],
# 'write': ['a']
# }
TOKENS = [('a', 'rw'), ('b', 'r')]