Created
July 11, 2018 16:27
-
-
Save mattneel/4d1a6c5dca29b424c41d2b358bf707b5 to your computer and use it in GitHub Desktop.
eradius server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
config :eradius, | |
# defines radius callback, which should be called | |
radius_callback: Extent.Server, | |
session_nodes: [node()], | |
root: [ | |
{ {'root', []}, [{'0.0.0.0', "testing123"}] } | |
], | |
servers: [ | |
root: {'0.0.0.0', [1812, 1813, 3799]} | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Extent.Server do | |
use GenServer | |
require Logger | |
@behaviour :eradius_server | |
require Record | |
Record.defrecord :nas_prop, Record.extract(:nas_prop, from_lib: "eradius/include/eradius_lib.hrl") | |
Record.defrecord :radius_request, Record.extract(:radius_request, from_lib: "eradius/include/eradius_lib.hrl") | |
Record.defrecord :attribute, Record.extract(:attribute, from_lib: "eradius/include/eradius_dict.hrl") | |
Record.defrecord :vendor, Record.extract(:vendor, from_lib: "eradius/include/eradius_dict.hrl") | |
Record.defrecord :value, Record.extract(:value, from_lib: "eradius/include/eradius_dict.hrl") | |
def start_link(_) do | |
GenServer.start_link(__MODULE__, :ok) | |
end | |
def init(_) do | |
{:ok, start()} | |
end | |
def start() do | |
:eradius.modules_ready([__MODULE__]) | |
self() | |
end | |
def radius_request(radius_request(cmd: :request) = req, nas, args), do: auth_request(req, nas, args) | |
def radius_request(radius_request(cmd: :discreq) = req, nas, args), do: disc_request(req, nas, args) | |
def radius_request(radius_request(cmd: :accreq) = req, nas, args), do: acct_request(req, nas, args) | |
def radius_request(radius_request(cmd: cmd) = _request, nas, args) do | |
Logger.debug("[RADIUS] Unhandled command: #{inspect cmd} #{inspect nas} #{inspect args}") | |
:noreply | |
end | |
def auth_request(req, nas, args) do | |
Logger.debug("[RADIUS:AUTH] #{inspect req} #{inspect nas} #{inspect args}") | |
{:reply, check_password(req)} | |
end | |
def disc_request(req, nas, args) do | |
Logger.debug("[RADIUS:DISC] #{inspect req} #{inspect nas} #{inspect args}") | |
{:reply, radius_request(cmd: :discack)} | |
end | |
def acct_request(req, nas, args) do | |
Logger.debug("[RADIUS:ACCT] #{inspect req} #{inspect nas} #{inspect args}") | |
{:reply, radius_request(cmd: :accresp)} | |
end | |
def check_password(req) do | |
case :eradius_auth.check_password("testpass", req) do | |
{true, _} -> radius_request(cmd: :accept) | |
_ -> radius_request(cmd: :reject) | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment