summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/elixir.yml27
-rw-r--r--.gitignore3
-rw-r--r--README.md21
-rw-r--r--config/test.exs3
-rw-r--r--priv/.gitignore1
-rw-r--r--priv/repo/migrations/20221219082326_create_player.exs15
-rw-r--r--priv/repo/migrations/20221219215005_add_keys.exs14
-rw-r--r--priv/test_keys/authorized_keys0
-rw-r--r--priv/test_keys/known_hosts1
-rw-r--r--priv/test_keys/ssh_host_dsa_key21
-rw-r--r--priv/test_keys/ssh_host_dsa_key.pub1
-rw-r--r--priv/test_keys/ssh_host_ecdsa_key9
-rw-r--r--priv/test_keys/ssh_host_ecdsa_key.pub1
-rw-r--r--priv/test_keys/ssh_host_rsa_key27
-rw-r--r--priv/test_keys/ssh_host_rsa_key.pub1
15 files changed, 122 insertions, 23 deletions
diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml
new file mode 100644
index 0000000..06dc50f
--- /dev/null
+++ b/.github/workflows/elixir.yml
@@ -0,0 +1,27 @@
+on: push
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ services:
+ db:
+ image: postgres:11
+ ports: ['5432:5432']
+ env:
+ POSTGRES_PASSWORD: postgres
+ options: >-
+ --health-cmd pg_isready
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-elixir@v1
+ with:
+ otp-version: '25'
+ elixir-version: '1.14.0'
+ - run: mix deps.get
+ - run: mix deps.compile
+ - run: mix test \ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 16acc84..84a9880 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,3 @@ server-*.tar
# Temporary files, for example, from tests.
/tmp/
-
-# Private files, like configuration secrets or keys.
-/priv/ \ No newline at end of file
diff --git a/README.md b/README.md
index e4aaab9..967c4dc 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,2 @@
-# Server
-
-**TODO: Add description**
-
-## Installation
-
-If [available in Hex](https://hex.pm/docs/publish), the package can be installed
-by adding `server` to your list of dependencies in `mix.exs`:
-
-```elixir
-def deps do
- [
- {:server, "~> 0.1.0"}
- ]
-end
-```
-
-Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
-and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
-be found at <https://hexdocs.pm/server>.
+# CheSSH
diff --git a/config/test.exs b/config/test.exs
index 8ab016e..6ade5f8 100644
--- a/config/test.exs
+++ b/config/test.exs
@@ -6,3 +6,6 @@ config :chessh, Chessh.Repo,
password: "postgres",
hostname: "localhost",
pool: Ecto.Adapters.SQL.Sandbox
+
+config :esshd,
+ priv_dir: Path.join(Path.dirname(__DIR__), "priv/test_keys")
diff --git a/priv/.gitignore b/priv/.gitignore
new file mode 100644
index 0000000..2744c99
--- /dev/null
+++ b/priv/.gitignore
@@ -0,0 +1 @@
+keys/ \ No newline at end of file
diff --git a/priv/repo/migrations/20221219082326_create_player.exs b/priv/repo/migrations/20221219082326_create_player.exs
new file mode 100644
index 0000000..b99bb5e
--- /dev/null
+++ b/priv/repo/migrations/20221219082326_create_player.exs
@@ -0,0 +1,15 @@
+defmodule Chessh.Repo.Migrations.CreatePlayer do
+ use Ecto.Migration
+
+ def change do
+ execute "CREATE EXTENSION IF NOT EXISTS citext", ""
+
+ create table(:players) do
+ add :username, :citext, null: false
+ add :hashed_password, :string, null: false
+ timestamps()
+ end
+
+ create unique_index(:players, [:username])
+ end
+end
diff --git a/priv/repo/migrations/20221219215005_add_keys.exs b/priv/repo/migrations/20221219215005_add_keys.exs
new file mode 100644
index 0000000..15163dc
--- /dev/null
+++ b/priv/repo/migrations/20221219215005_add_keys.exs
@@ -0,0 +1,14 @@
+defmodule Chessh.Repo.Migrations.AddKeys do
+ use Ecto.Migration
+
+ def change do
+ create table(:keys) do
+ add :key, :string, null: false
+ add :name, :string, null: false
+
+ add :player_id, references(:players)
+
+ timestamps()
+ end
+ end
+end
diff --git a/priv/test_keys/authorized_keys b/priv/test_keys/authorized_keys
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/priv/test_keys/authorized_keys
diff --git a/priv/test_keys/known_hosts b/priv/test_keys/known_hosts
new file mode 100644
index 0000000..5416c18
--- /dev/null
+++ b/priv/test_keys/known_hosts
@@ -0,0 +1 @@
+127.0.0.1,127.0.0.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC7Mpf2QIL32MmKxcrXAoZM3l7/hBy+8d+WqTRMun+tC/XYNiXSIDuZv01an3D1d22fmSpZiprFQzjB4yEz23qw= logan@yagami
diff --git a/priv/test_keys/ssh_host_dsa_key b/priv/test_keys/ssh_host_dsa_key
new file mode 100644
index 0000000..fdc9fa5
--- /dev/null
+++ b/priv/test_keys/ssh_host_dsa_key
@@ -0,0 +1,21 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsgAAAAdzc2gtZH
+NzAAAAgQCpKTDuhGwm9AXQPZuWSdHxraaiUV4cgu4uFlgHahV8Qzy9MGpDpp9lbt3uGe1F
+MI0jQeIx0Bc3KxSiwLl0ggjF+f5100eZBRdw+3km/BQKaZYdPgSiZ9QdOAN2rRKl653uqA
+85fnhm1UwS+q37RSvdJotBTh8mJk/PILGwRCoEhwAAABUA6hwmQu2jkb2KhfL/TjVTlwJF
+Gk0AAACAMd1xLqW/iXVzWpNUxMUNeevDOwhY+RqgZUripwZhKuoNuFiLu79UkNpd/mKTkL
+99PuxnM6RdaWjx54rTqw3DLsFjNR6mx5HOlDyIyIaGlXqIDiiGMNoFTCECJnYEupMtxwA1
+a5jj742pDyKAspO9MwVrsHPNkAuAXOsnefFLtRkAAACBAIHWLyhaO8us6vzxlX5xH0bcbL
+RNh8XcTXu5/xRB7kX1mBITZKBKm1RhBYPTrADlzC/P+gu4hF14KjvAU+pRCYOE2x2VT036
+glcMQxa40id2g5v9tiIwoZF/UE0w8yargNd4kzVpWO2ecq8VYQ/j8o895Fy9Rr2qYbQlaf
+iuT/hlAAAB6FkytPhZMrT4AAAAB3NzaC1kc3MAAACBAKkpMO6EbCb0BdA9m5ZJ0fGtpqJR
+XhyC7i4WWAdqFXxDPL0wakOmn2Vu3e4Z7UUwjSNB4jHQFzcrFKLAuXSCCMX5/nXTR5kFF3
+D7eSb8FApplh0+BKJn1B04A3atEqXrne6oDzl+eGbVTBL6rftFK90mi0FOHyYmT88gsbBE
+KgSHAAAAFQDqHCZC7aORvYqF8v9ONVOXAkUaTQAAAIAx3XEupb+JdXNak1TExQ1568M7CF
+j5GqBlSuKnBmEq6g24WIu7v1SQ2l3+YpOQv30+7GczpF1paPHnitOrDcMuwWM1HqbHkc6U
+PIjIhoaVeogOKIYw2gVMIQImdgS6ky3HADVrmOPvjakPIoCyk70zBWuwc82QC4Bc6yd58U
+u1GQAAAIEAgdYvKFo7y6zq/PGVfnEfRtxstE2HxdxNe7n/FEHuRfWYEhNkoEqbVGEFg9Os
+AOXML8/6C7iEXXgqO8BT6lEJg4TbHZVPTfqCVwxDFrjSJ3aDm/22IjChkX9QTTDzJquA13
+iTNWlY7Z5yrxVhD+Pyjz3kXL1GvaphtCVp+K5P+GUAAAAUGpvtb1Jl3ZVhjiiCc8adUik2
+21IAAAAMbG9nYW5AeWFnYW1pAQIDBAUG
+-----END OPENSSH PRIVATE KEY-----
diff --git a/priv/test_keys/ssh_host_dsa_key.pub b/priv/test_keys/ssh_host_dsa_key.pub
new file mode 100644
index 0000000..d49bd6b
--- /dev/null
+++ b/priv/test_keys/ssh_host_dsa_key.pub
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAKkpMO6EbCb0BdA9m5ZJ0fGtpqJRXhyC7i4WWAdqFXxDPL0wakOmn2Vu3e4Z7UUwjSNB4jHQFzcrFKLAuXSCCMX5/nXTR5kFF3D7eSb8FApplh0+BKJn1B04A3atEqXrne6oDzl+eGbVTBL6rftFK90mi0FOHyYmT88gsbBEKgSHAAAAFQDqHCZC7aORvYqF8v9ONVOXAkUaTQAAAIAx3XEupb+JdXNak1TExQ1568M7CFj5GqBlSuKnBmEq6g24WIu7v1SQ2l3+YpOQv30+7GczpF1paPHnitOrDcMuwWM1HqbHkc6UPIjIhoaVeogOKIYw2gVMIQImdgS6ky3HADVrmOPvjakPIoCyk70zBWuwc82QC4Bc6yd58Uu1GQAAAIEAgdYvKFo7y6zq/PGVfnEfRtxstE2HxdxNe7n/FEHuRfWYEhNkoEqbVGEFg9OsAOXML8/6C7iEXXgqO8BT6lEJg4TbHZVPTfqCVwxDFrjSJ3aDm/22IjChkX9QTTDzJquA13iTNWlY7Z5yrxVhD+Pyjz3kXL1GvaphtCVp+K5P+GU= logan@yagami
diff --git a/priv/test_keys/ssh_host_ecdsa_key b/priv/test_keys/ssh_host_ecdsa_key
new file mode 100644
index 0000000..d6df963
--- /dev/null
+++ b/priv/test_keys/ssh_host_ecdsa_key
@@ -0,0 +1,9 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
+1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQQuzKX9kCC99jJisXK1wKGTN5e/4Qcv
+vHflqk0TLp/rQv12DYl0iA7mb9NWp9w9Xdtn5kqWYqaxUM4weMhM9t6sAAAAqFwD00xcA9
+NMAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC7Mpf2QIL32MmKx
+crXAoZM3l7/hBy+8d+WqTRMun+tC/XYNiXSIDuZv01an3D1d22fmSpZiprFQzjB4yEz23q
+wAAAAgCA9MOKEi7uU/lhsow6WOv+uAfp3u3t0KE1qP7IWIYpAAAAAMbG9nYW5AeWFnYW1p
+AQIDBA==
+-----END OPENSSH PRIVATE KEY-----
diff --git a/priv/test_keys/ssh_host_ecdsa_key.pub b/priv/test_keys/ssh_host_ecdsa_key.pub
new file mode 100644
index 0000000..bb976ee
--- /dev/null
+++ b/priv/test_keys/ssh_host_ecdsa_key.pub
@@ -0,0 +1 @@
+ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC7Mpf2QIL32MmKxcrXAoZM3l7/hBy+8d+WqTRMun+tC/XYNiXSIDuZv01an3D1d22fmSpZiprFQzjB4yEz23qw= logan@yagami
diff --git a/priv/test_keys/ssh_host_rsa_key b/priv/test_keys/ssh_host_rsa_key
new file mode 100644
index 0000000..4a2bb58
--- /dev/null
+++ b/priv/test_keys/ssh_host_rsa_key
@@ -0,0 +1,27 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
+NhAAAAAwEAAQAAAQEAijpwz+A646qB9EoDy8kXGJBRTlsSmTc8hzHoj2VhjeFOrrKrQxAl
+tIJ8v0mDlOP+kBvhfUeg5bPUdAofQjAJMm1RJXlqPcLFojYZF23AJ3F7qsdWaelJmCBvXw
+B5xtA+dM8r7sxC5Him0DuFfx4s63lERH3H1e8do4GA7bo7Z/ovQDdPPzZ4ZZL8jhwA4NI8
+1SZqCcqNbYuv+uD/OcogXDVf/LaKXcqCGnewmBVBydHuTF5rBfVwllWFFlfz/KRYi/BLuj
+Vp/Q5b99EF2UZ3Pe0v4t3I/hxmFB8eVp/alC4hhUtXTEx3xpIwBpc6MESB2w0YOtg0K2+3
+Cyp+zXWRLQAAA8jVqqSo1aqkqAAAAAdzc2gtcnNhAAABAQCKOnDP4DrjqoH0SgPLyRcYkF
+FOWxKZNzyHMeiPZWGN4U6usqtDECW0gny/SYOU4/6QG+F9R6Dls9R0Ch9CMAkybVEleWo9
+wsWiNhkXbcAncXuqx1Zp6UmYIG9fAHnG0D50zyvuzELkeKbQO4V/HizreUREfcfV7x2jgY
+Dtujtn+i9AN08/NnhlkvyOHADg0jzVJmoJyo1ti6/64P85yiBcNV/8topdyoIad7CYFUHJ
+0e5MXmsF9XCWVYUWV/P8pFiL8Eu6NWn9Dlv30QXZRnc97S/i3cj+HGYUHx5Wn9qULiGFS1
+dMTHfGkjAGlzowRIHbDRg62DQrb7cLKn7NdZEtAAAAAwEAAQAAAQAFkJo+PYZUEucl8lKK
+TPzIIUvrVg50NXgomjQFDTK6+fKHZSEwyJDis5Z5mKhP4XORZ39HDPqXh3XwEQCWqHqU+Y
+0uL3U9P3Q3llV2xGqbZpMbuj2KndjNDiXlrXjO7fnMYpMfy0CN1E9PlqHbzwIbHcKc6PJs
+tLJyWhzvv9MImcej3d41OQJL1icKpByy7w1Dc0SbPaqlwxg1ikVMIhxtj8mWUSryqsc6U9
+Ho5bKpaRmqZ/0MAV01N3ynLrUTWQdTlF+9F9PUVsTjBsfo3jyWr/lXR4WHeWx81Pgc0SrK
+WptOuIoWNxUhj2gp+DBgiaCKjkjLNqPk/PxeFJMNCE8hAAAAgHfkuSwteenOqOJGt3fKB6
+rRdBoMTyhAFzt04SlunTJjNTZFiFZjsRSRDMOSTxc3se+Edd+EcBAgoljXtBfYoxTKIgAp
+rUpfEoKFsBbd3raXr2CnqMPy5lybCs8o5WrSjKJOh2rttxfvMErGvMwisMU+64twR1NCs3
+xwJfFyrR99AAAAgQDDOPK5m/mruNfLlb4v1+ET4vHq7flIDUgTEqVPrNuncR8KsYYbEeoj
+ryPwJYqIOLVUQI+3JHgoe/1yWxsITqG/C2MQp6iqdbNxIrM1E73c28siz4KDxzRWxSff/G
+8zxkGrCHhPrNg4taBIiQy8WQGhTUaknDgklOxfuB2gMLI2DQAAAIEAtUMb7C+ROmVbIy4O
+dpenYBcQhJcCIJXKvDGUgZvqQPcIeeEWtnt8svPfg3oG39mZNeNx7rA7a2GA0DG7DEq7gG
+8n+bxHCogERhUx+J6UMapOvu98V9YNjoLvvtaFM3G7oEAl82A9ex7lqDESsXQyAsuEndv8
+UNvsglNa5kyuH6EAAAAMbG9nYW5AeWFnYW1pAQIDBAUGBw==
+-----END OPENSSH PRIVATE KEY-----
diff --git a/priv/test_keys/ssh_host_rsa_key.pub b/priv/test_keys/ssh_host_rsa_key.pub
new file mode 100644
index 0000000..545d65e
--- /dev/null
+++ b/priv/test_keys/ssh_host_rsa_key.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKOnDP4DrjqoH0SgPLyRcYkFFOWxKZNzyHMeiPZWGN4U6usqtDECW0gny/SYOU4/6QG+F9R6Dls9R0Ch9CMAkybVEleWo9wsWiNhkXbcAncXuqx1Zp6UmYIG9fAHnG0D50zyvuzELkeKbQO4V/HizreUREfcfV7x2jgYDtujtn+i9AN08/NnhlkvyOHADg0jzVJmoJyo1ti6/64P85yiBcNV/8topdyoIad7CYFUHJ0e5MXmsF9XCWVYUWV/P8pFiL8Eu6NWn9Dlv30QXZRnc97S/i3cj+HGYUHx5Wn9qULiGFS1dMTHfGkjAGlzowRIHbDRg62DQrb7cLKn7NdZEt logan@yagami