| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | conf/yaws.conf.m4 | 2 | ||||
| -rw-r--r-- | src/db/db_node.erl | 1 | ||||
| -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.erl | 2 | ||||
| -rw-r--r-- | src/query/qry_handler.erl | 2 | ||||
| -rw-r--r-- | src/shared/shr_security.erl | 4 | ||||
| -rw-r--r-- | src/shared/struct/shr_player.erl | 14 | 
10 files changed, 73 insertions, 30 deletions
| diff --git a/conf/yaws.conf.m4 b/conf/yaws.conf.m4 index f0bfeef..3098bf8 100644 --- a/conf/yaws.conf.m4 +++ b/conf/yaws.conf.m4 @@ -110,6 +110,6 @@ keepalive_timeout = 30000    listen = 0.0.0.0    docroot = __MAKEFILE_WWW_DIR    auth_log = true -  appmods = btl_character_turn btl_load map_load map_update plr_sign_in plr_sign_up +  appmods = btl_character_turn btl_load map_load map_update lgn_sign_in lgn_sign_up lgn_recovery    start_mod = qry_handler  </server> 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 }. | 


