summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2023-01-13 21:18:34 -0700
committerSimponic <loganhunt@simponic.xyz>2023-01-13 21:23:46 -0700
commit53be77e2c57bac6b861d7c3d1d2d6355816a823b (patch)
treebf2db793a3e0f416b411283547e7f58411f80d9e
parent87e42b29f004f67df2512c133de626c2b0804477 (diff)
parent2b06f5bf47ec5f8f084dae8f015ca3677d753a7d (diff)
downloadchessh-53be77e2c57bac6b861d7c3d1d2d6355816a823b.tar.gz
chessh-53be77e2c57bac6b861d7c3d1d2d6355816a823b.zip
Merge pull request #4 from Simponic/fix_pubkey
Fix pubkey
-rw-r--r--TODO.md1
-rw-r--r--config/config.exs2
-rw-r--r--config/test.exs1
-rw-r--r--lib/chessh/schema/player_session.ex19
-rw-r--r--lib/chessh/ssh/daemon.ex5
-rw-r--r--lib/chessh/ssh/server_key.ex2
6 files changed, 19 insertions, 11 deletions
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index 5f54fe5..0000000
--- a/TODO.md
+++ /dev/null
@@ -1 +0,0 @@
-Change the menu and board to be genserverse, board subscribes to game,
diff --git a/config/config.exs b/config/config.exs
index 2e20647..ad54ebf 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -15,7 +15,7 @@ config :chessh, RateLimits,
jail_timeout_ms: 5 * 60 * 1000,
jail_attempt_threshold: 15,
max_concurrent_user_sessions: 5,
- player_session_message_burst_ms: 1_000,
+ player_session_message_burst_ms: 500,
player_session_message_burst_rate: 8
import_config "#{config_env()}.exs"
diff --git a/config/test.exs b/config/test.exs
index 3605f1e..3319f9b 100644
--- a/config/test.exs
+++ b/config/test.exs
@@ -12,4 +12,5 @@ config :chessh, Chessh.Repo,
pool: Ecto.Adapters.SQL.Sandbox
config :chessh,
+ port: 34_355,
key_dir: Path.join(Path.dirname(__DIR__), "priv/test_keys")
diff --git a/lib/chessh/schema/player_session.ex b/lib/chessh/schema/player_session.ex
index 8ca338c..b16519f 100644
--- a/lib/chessh/schema/player_session.ex
+++ b/lib/chessh/schema/player_session.ex
@@ -14,7 +14,7 @@ defmodule Chessh.PlayerSession do
def changeset(player_session, attrs) do
player_session
- |> cast(attrs, [:login])
+ |> cast(attrs, [:login, :node_id, :process])
end
def concurrent_sessions(player) do
@@ -58,12 +58,17 @@ defmodule Chessh.PlayerSession do
"Creating session for player #{username} on node #{System.fetch_env!("NODE_ID")} with process #{inspect(self())}"
)
- Repo.insert(%PlayerSession{
- login: DateTime.utc_now(),
- node_id: System.fetch_env!("NODE_ID"),
- player: player,
- process: Utils.pid_to_str(self())
- })
+ now = DateTime.utc_now()
+
+ Repo.insert!(
+ %PlayerSession{
+ login: now,
+ node_id: System.fetch_env!("NODE_ID"),
+ player: player,
+ process: Utils.pid_to_str(self())
+ },
+ on_conflict: :nothing
+ )
concurrent_sessions = PlayerSession.concurrent_sessions(player)
diff --git a/lib/chessh/ssh/daemon.ex b/lib/chessh/ssh/daemon.ex
index 1748e9e..e122f9a 100644
--- a/lib/chessh/ssh/daemon.ex
+++ b/lib/chessh/ssh/daemon.ex
@@ -15,7 +15,8 @@ defmodule Chessh.SSH.Daemon do
end
def init(state) do
- GenServer.cast(self(), :start)
+ send(self(), :start)
+
{:ok, state}
end
@@ -58,7 +59,7 @@ defmodule Chessh.SSH.Daemon do
def pwd_authenticate(username, password, inet, _state),
do: pwd_authenticate(username, password, inet)
- def handle_cast(:start, state) do
+ def handle_info(:start, state) do
port = Application.fetch_env!(:chessh, :port)
key_dir = String.to_charlist(Application.fetch_env!(:chessh, :key_dir))
max_sessions = Application.fetch_env!(:chessh, :max_sessions)
diff --git a/lib/chessh/ssh/server_key.ex b/lib/chessh/ssh/server_key.ex
index eae9577..71b6997 100644
--- a/lib/chessh/ssh/server_key.ex
+++ b/lib/chessh/ssh/server_key.ex
@@ -4,6 +4,7 @@ defmodule Chessh.SSH.ServerKey do
@behaviour :ssh_server_key_api
+ @impl true
def is_auth_key(key, username, _daemon_options) do
PlayerSession.update_sessions_and_player_satisfies(
username,
@@ -11,6 +12,7 @@ defmodule Chessh.SSH.ServerKey do
)
end
+ @impl true
def host_key(algorithm, daemon_options) do
:ssh_file.host_key(algorithm, daemon_options)
end