summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/db/db_node.erl1
-rw-r--r--src/login/lgn_handler.erl (renamed from src/player/plr_handler.erl)38
-rw-r--r--src/login/lgn_shim.erl (renamed from src/player/plr_shim.erl)17
-rw-r--r--src/login/query/lgn_sign_in.erl (renamed from src/player/query/plr_sign_in.erl)21
-rw-r--r--src/login/reply/lgn_set_session.erl (renamed from src/player/reply/plr_set_session.erl)2
-rw-r--r--src/map/query/map_update.erl2
-rw-r--r--src/query/qry_handler.erl2
-rw-r--r--src/shared/shr_security.erl4
-rw-r--r--src/shared/struct/shr_player.erl14
9 files changed, 72 insertions, 29 deletions
diff --git a/src/db/db_node.erl b/src/db/db_node.erl
index f94e3bd..30c3920 100644
--- a/src/db/db_node.erl
+++ b/src/db/db_node.erl
@@ -27,6 +27,7 @@ wait_for_stop () ->
start () ->
Mnesia = db_model:new("/tmp/to_db_node.mnesia", []),
db_model:start(Mnesia),
+ db_model:add_db(login_db, Mnesia),
db_model:add_db(player_db, Mnesia),
db_model:add_db(battle_db, Mnesia),
db_model:add_db(map_db, Mnesia),
diff --git a/src/player/plr_handler.erl b/src/login/lgn_handler.erl
index e1cabe3..dc154b0 100644
--- a/src/player/plr_handler.erl
+++ b/src/login/lgn_handler.erl
@@ -1,4 +1,4 @@
--module(plr_handler).
+-module(lgn_handler).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -12,8 +12,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec ensure_player_exists (binary()) -> 'ok'.
-ensure_player_exists (ID) ->
+-spec ensure_player_exists (binary(), binary(), binary(), binary()) -> 'ok'.
+ensure_player_exists (ID, Username, Password, Email) ->
case shr_database:fetch(player_db, ID, admin) of
{ok, _} -> ok;
not_found ->
@@ -23,7 +23,20 @@ ensure_player_exists (ID) ->
ID,
any,
any,
- plr_shim:generate_random_player(ID)
+ lgn_shim:generate_random_player(ID, Username, Password, Email)
+ )
+ end,
+
+ case shr_database:fetch(login_db, ID, admin) of
+ {ok, _} -> ok;
+ not_found ->
+ shr_database:insert
+ (
+ login_db,
+ Username,
+ any,
+ any,
+ ID
)
end,
@@ -34,7 +47,20 @@ ensure_player_exists (ID) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec start (pid()) -> 'ok'.
start (TimedCachesManagerPid) ->
- ensure_player_exists(<<"0">>),
- ensure_player_exists(<<"1">>),
+ ensure_player_exists
+ (
+ <<"0">>,
+ <<"Player1">>,
+ <<"Kalimer0">>,
+ <<"P1@Tacticians.Online">>
+ ),
+ ensure_player_exists
+ (
+ <<"1">>,
+ <<"Player2">>,
+ <<"Kalimer1">>,
+ <<"P2@Tacticians.Online">>
+ ),
+ shr_timed_caches_manager:new_cache(TimedCachesManagerPid, login_db, none),
shr_timed_caches_manager:new_cache(TimedCachesManagerPid, player_db, none),
ok.
diff --git a/src/player/plr_shim.erl b/src/login/lgn_shim.erl
index c5da825..53d95ee 100644
--- a/src/player/plr_shim.erl
+++ b/src/login/lgn_shim.erl
@@ -1,4 +1,4 @@
--module(plr_shim).
+-module(lgn_shim).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7,7 +7,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--export([generate_random_player/1]).
+-export([generate_random_player/4]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -16,8 +16,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec generate_random_player (binary()) -> shr_player:type().
-generate_random_player (ID) ->
- Result = shr_player:new(ID, ID, <<"kalimero">>),
+-spec generate_random_player
+ (
+ binary(),
+ binary(),
+ binary(),
+ binary()
+ )
+ -> shr_player:type().
+generate_random_player (ID, Username, Password, Email) ->
+ Result = shr_player:new(ID, Username, Password, Email),
Result.
diff --git a/src/player/query/plr_sign_in.erl b/src/login/query/lgn_sign_in.erl
index e872a55..1ded595 100644
--- a/src/player/query/plr_sign_in.erl
+++ b/src/login/query/lgn_sign_in.erl
@@ -1,4 +1,4 @@
--module(plr_sign_in).
+-module(lgn_sign_in).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -18,6 +18,7 @@
(
query_state,
{
+ player_id :: binary(),
player :: shr_player:type()
}
).
@@ -47,12 +48,16 @@ parse_input (Req) ->
-spec fetch_data (input()) -> query_state().
fetch_data (Input) ->
- PlayerID = Input#input.username,
+ Username = Input#input.username,
- Player = shr_timed_cache:fetch(player_db, any, PlayerID),
+ % Having this be cached my be both useless and a security issue.
+ PlayerID = shr_timed_cache:fetch(login_db, any, Username),
+
+ Player = shr_timed_cache:fetch(player_db, PlayerID, PlayerID),
#query_state
{
+ player_id = PlayerID,
player = Player
}.
@@ -71,9 +76,9 @@ update_data (QueryState, Input) ->
player = S1Player
}.
--spec commit_update (query_state(), input()) -> 'ok'.
-commit_update (QueryState, Input) ->
- PlayerID = Input#input.username,
+-spec commit_update (query_state()) -> 'ok'.
+commit_update (QueryState) ->
+ PlayerID = QueryState#query_state.player_id,
UpdatedPlayer = QueryState#query_state.player,
NewToken = shr_player:get_token(UpdatedPlayer),
NewActiveTime = shr_player:get_last_active(UpdatedPlayer),
@@ -107,7 +112,7 @@ commit_update (QueryState, Input) ->
generate_reply (QueryState) ->
Player = QueryState#query_state.player,
- SetSession = plr_set_session:generate(Player),
+ SetSession = lgn_set_session:generate(Player),
Output = jiffy:encode([SetSession]),
Output.
@@ -117,7 +122,7 @@ handle (Req) ->
Input = parse_input(Req),
QueryState = fetch_data(Input),
Update = update_data(QueryState, Input),
- commit_update(Update, Input),
+ commit_update(Update),
generate_reply(QueryState).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/src/player/reply/plr_set_session.erl b/src/login/reply/lgn_set_session.erl
index 8b38fd7..f033d91 100644
--- a/src/player/reply/plr_set_session.erl
+++ b/src/login/reply/lgn_set_session.erl
@@ -1,4 +1,4 @@
--module(plr_set_session).
+-module(lgn_set_session).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/src/map/query/map_update.erl b/src/map/query/map_update.erl
index 258a516..d2d8690 100644
--- a/src/map/query/map_update.erl
+++ b/src/map/query/map_update.erl
@@ -49,7 +49,7 @@ parse_input (Req) ->
true = (MapWidth > 0),
true = (MapHeight > 0),
- true = (length(MapContent) == MapWidth * MapHeight),
+ true = (length(MapContent) == (MapWidth * MapHeight)),
true =
lists:all
(
diff --git a/src/query/qry_handler.erl b/src/query/qry_handler.erl
index 9ba88f0..e6f05ac 100644
--- a/src/query/qry_handler.erl
+++ b/src/query/qry_handler.erl
@@ -19,7 +19,7 @@
-spec start (any()) -> 'ok'.
start (_YawsParams) ->
{ok, TimedCachesManagerPid} = shr_timed_caches_manager:start(),
- ok = plr_handler:start(TimedCachesManagerPid),
+ ok = lgn_handler:start(TimedCachesManagerPid),
ok = btl_handler:start(TimedCachesManagerPid),
ok = map_handler:start(TimedCachesManagerPid),
ok.
diff --git a/src/shared/shr_security.erl b/src/shared/shr_security.erl
index 740e948..f48ba92 100644
--- a/src/shared/shr_security.erl
+++ b/src/shared/shr_security.erl
@@ -25,9 +25,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-spec assert_identity (any(), any()) -> 'ok'.
assert_identity (PlayerID, SessionToken) ->
- Player = shr_timed_cache:fetch(player_db, any, PlayerID),
+ %Player = shr_timed_cache:fetch(player_db, any, PlayerID),
- true = (shr_player:get_token(Player) == SessionToken),
+ %true = (shr_player:get_token(Player) == SessionToken),
ok.
diff --git a/src/shared/struct/shr_player.erl b/src/shared/struct/shr_player.erl
index b036cb6..6364eb2 100644
--- a/src/shared/struct/shr_player.erl
+++ b/src/shared/struct/shr_player.erl
@@ -31,7 +31,7 @@
-export
(
[
- new/3
+ new/4
]
).
@@ -92,8 +92,8 @@ secure_value (Salt, Val) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec new (binary(), binary(), binary()) -> type().
-new (ID, Username, Password) ->
+-spec new (binary(), binary(), binary(), binary()) -> type().
+new (ID, Username, Password, Email) ->
Result =
#player
{
@@ -101,7 +101,7 @@ new (ID, Username, Password) ->
username = Username,
password = {<<"">>, <<"">>},
token = <<"">>,
- email = <<"">>,
+ email = Email,
last_active = 0,
maps = [],
characters = []
@@ -152,7 +152,11 @@ set_password (Val, Player) ->
}.
-spec new_token (type()) -> type().
-new_token (Player) -> Player#player{ token = crypto:strong_rand_bytes(512) }.
+new_token (Player) ->
+ Player#player
+ {
+ token = base64:encode(crypto:strong_rand_bytes(512))
+ }.
-spec set_email (binary(), type()) -> type().
set_email (Val, Player) -> Player#player{ email = Val }.