Fix pubkey #4

Merged
Simponic merged 3 commits from fix_pubkey into main 2023-01-13 23:18:34 -05:00
5 changed files with 19 additions and 10 deletions

View File

@ -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"

View File

@ -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")

View File

@ -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(),
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)

View File

@ -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)

View File

@ -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