working on global logging/events
This commit is contained in:
parent
8620bba0ef
commit
91fea2066f
|
@ -7,7 +7,7 @@ from wowstash.forms import Register, Login, Delete
|
|||
from wowstash.models import User
|
||||
from wowstash.factory import db, bcrypt
|
||||
from wowstash.library.docker import docker
|
||||
from wowstash.library.elasticsearch import send_es
|
||||
from wowstash.helpers import capture_event
|
||||
|
||||
|
||||
@auth_bp.route("/register", methods=["GET", "POST"])
|
||||
|
@ -33,7 +33,7 @@ def register():
|
|||
db.session.commit()
|
||||
|
||||
# Capture event, login user and redirect to wallet page
|
||||
send_es({'type': 'register', 'user': user.email})
|
||||
capture_event('register', user)
|
||||
login_user(user)
|
||||
return redirect(url_for('wallet.dashboard'))
|
||||
|
||||
|
@ -63,7 +63,7 @@ def login():
|
|||
return redirect(url_for('auth.login'))
|
||||
|
||||
# Capture event, login user, and redirect to wallet page
|
||||
send_es({'type': 'login', 'user': user.email})
|
||||
capture_event('login', user)
|
||||
login_user(user)
|
||||
return redirect(url_for('wallet.dashboard'))
|
||||
|
||||
|
@ -73,9 +73,9 @@ def login():
|
|||
def logout():
|
||||
if current_user.is_authenticated:
|
||||
docker.stop_container(current_user.wallet_container)
|
||||
send_es({'type': 'stop_container', 'user': current_user.email})
|
||||
capture_event('stop_container', current_user)
|
||||
current_user.clear_wallet_data()
|
||||
send_es({'type': 'logout', 'user': current_user.email})
|
||||
capture_event('logout', current_user)
|
||||
logout_user()
|
||||
return redirect(url_for('meta.index'))
|
||||
|
||||
|
@ -85,10 +85,10 @@ def delete():
|
|||
form = Delete()
|
||||
if form.validate_on_submit():
|
||||
docker.stop_container(current_user.wallet_container)
|
||||
send_es({'type': 'stop_container', 'user': current_user.email})
|
||||
capture_event('stop_container', current_user)
|
||||
sleep(1)
|
||||
docker.delete_wallet_data(current_user.id)
|
||||
send_es({'type': 'delete_wallet', 'user': current_user.email})
|
||||
capture_event('delete_wallet', current_user)
|
||||
current_user.clear_wallet_data(reset_password=True, reset_wallet=True)
|
||||
flash('Successfully deleted wallet data')
|
||||
return redirect(url_for('meta.index'))
|
||||
|
|
|
@ -10,7 +10,7 @@ from socket import socket
|
|||
from datetime import datetime
|
||||
from wowstash.blueprints.wallet import wallet_bp
|
||||
from wowstash.library.docker import docker
|
||||
from wowstash.library.elasticsearch import send_es
|
||||
from wowstash.helpers import capture_event
|
||||
from wowstash.library.jsonrpc import Wallet, to_atomic
|
||||
from wowstash.library.cache import cache
|
||||
from wowstash.forms import Send, Delete
|
||||
|
@ -60,7 +60,7 @@ def dashboard():
|
|||
seed = wallet.seed()
|
||||
spend_key = wallet.spend_key()
|
||||
view_key = wallet.view_key()
|
||||
send_es({'type': 'load_dashboard', 'user': current_user.email})
|
||||
# capture_event('load_dashboard', current_user)
|
||||
return render_template(
|
||||
'wallet/dashboard.html',
|
||||
transfers=all_transfers,
|
||||
|
@ -130,13 +130,13 @@ def send():
|
|||
# Check if Wownero wallet is available
|
||||
if wallet.connected is False:
|
||||
flash('Wallet RPC interface is unavailable at this time. Try again later.')
|
||||
send_es({'type': 'tx_fail_rpc_unavailable', 'user': user.email})
|
||||
capture_event('tx_fail_rpc_unavailable', user)
|
||||
return redirect(redirect_url)
|
||||
|
||||
# Quick n dirty check to see if address is WOW
|
||||
if len(address) not in [97, 108]:
|
||||
flash('Invalid Wownero address provided.')
|
||||
send_es({'type': 'tx_fail_address_invalid', 'user': user.email})
|
||||
capture_event('tx_fail_address_invalid', user)
|
||||
return redirect(redirect_url)
|
||||
|
||||
# Check if we're sweeping or not
|
||||
|
@ -148,7 +148,7 @@ def send():
|
|||
amount = to_atomic(Decimal(send_form.amount.data))
|
||||
except:
|
||||
flash('Invalid Wownero amount specified.')
|
||||
send_es({'type': 'tx_fail_amount_invalid', 'user': user.email})
|
||||
capture_event('tx_fail_amount_invalid', user)
|
||||
return redirect(redirect_url)
|
||||
|
||||
# Send transfer
|
||||
|
@ -159,10 +159,10 @@ def send():
|
|||
msg = tx['message'].capitalize()
|
||||
msg_lower = tx['message'].replace(' ', '_').lower()
|
||||
flash(f'There was a problem sending the transaction: {msg}')
|
||||
send_es({'type': f'tx_fail_{msg_lower}', 'user': user.email})
|
||||
capture_event(f'tx_fail_{msg_lower}', user)
|
||||
else:
|
||||
flash('Successfully sent transfer.')
|
||||
send_es({'type': 'tx_success', 'user': user.email})
|
||||
capture_event('tx_success', user)
|
||||
|
||||
return redirect(redirect_url)
|
||||
else:
|
||||
|
|
|
@ -46,3 +46,10 @@ SOCIAL = {
|
|||
'comment': 'https://webchat.freenode.net/?room=#wownero',
|
||||
'reddit': 'https://reddit.com/r/wownero'
|
||||
}
|
||||
|
||||
# Mattermost
|
||||
MM_ENABLED = False
|
||||
MM_CHANNEL = 'wowstash'
|
||||
MM_USERNAME = 'WOW Stash'
|
||||
MM_ICON = 'https://wowstash.app/static/img/wow-treasure-chest.png'
|
||||
MM_ENDPOINT = 'xxxxxxx'
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
from wowstash.library.elasticsearch import send_es
|
||||
from wowstash.library.mattermost import post_webhook
|
||||
|
||||
|
||||
def capture_event(event_type, user_obj):
|
||||
send_es({'type': event_type, 'user': user_obj.email})
|
||||
post_webhook(f'`{event_type}` from user {user_obj.id}')
|
|
@ -9,7 +9,7 @@ from wowstash import config
|
|||
from wowstash.models import User
|
||||
from wowstash.factory import db
|
||||
from wowstash.library.jsonrpc import daemon
|
||||
from wowstash.library.elasticsearch import send_es
|
||||
from wowstash.helpers import capture_event
|
||||
|
||||
|
||||
class Docker(object):
|
||||
|
@ -53,7 +53,7 @@ class Docker(object):
|
|||
}
|
||||
}
|
||||
)
|
||||
send_es({'type': 'create_wallet', 'user': u.email})
|
||||
capture_event('create_wallet', u)
|
||||
return container.short_id
|
||||
|
||||
def start_wallet(self, user_id):
|
||||
|
@ -90,7 +90,7 @@ class Docker(object):
|
|||
}
|
||||
}
|
||||
)
|
||||
send_es({'type': 'start_wallet', 'user': u.email})
|
||||
capture_event('start_wallet', u)
|
||||
return container.short_id
|
||||
except APIError as e:
|
||||
if str(e).startswith('409'):
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
from requests import post as r_post
|
||||
from json import dumps
|
||||
from flask import current_app
|
||||
from wowstash import config
|
||||
|
||||
|
||||
def post_webhook(msg):
|
||||
if getattr(config, 'MM_ENABLED', False):
|
||||
try:
|
||||
if current_app.config["DEBUG"]:
|
||||
msg = "[DEBUG] " + msg
|
||||
data = {
|
||||
"text": msg,
|
||||
"channel": config.MM_CHANNEL,
|
||||
"username": config.MM_USERNAME,
|
||||
"icon_url": config.MM_ICON
|
||||
}
|
||||
res = r_post(config.MM_ENDPOINT, data=dumps(data))
|
||||
res.raise_for_status()
|
||||
return True
|
||||
except:
|
||||
return False
|
Loading…
Reference in New Issue