diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..3900dd9f2
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,9 @@
+_build/
+deps/
+.git/
+.gitignore/
+Dockerfile
+Makefile
+README*
+LICENSE
+test/
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 000000000..2873783fc
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,16 @@
+name: Deploy
+
+on:
+ release: created
+
+jobs:
+ build-image:
+ runs-on: ubuntu:18.04
+ steps:
+ - uses: actions/checkout@v2
+ - name: Build Docker Image
+ run: |
+ docker build -t cloudfirellc/cloudfire:latest .
+ - name: Push Docker Image
+ run: |
+ docker push cloudfirellc/cloudfire:latest
diff --git a/.github/workflows/main.yml b/.github/workflows/unit-test.yml
similarity index 97%
rename from .github/workflows/main.yml
rename to .github/workflows/unit-test.yml
index 9d330acaa..e5a954013 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/unit-test.yml
@@ -1,12 +1,12 @@
+# Unit test
name: CI
on:
- push
- pull_request
- - release
jobs:
- test:
+ unit-test:
runs-on: ubuntu-18.04
env:
MIX_ENV: test
diff --git a/.gitignore b/.gitignore
index 44de691a7..a3b502a4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,9 +25,6 @@ erl_crash.dump
# If NPM crashes, it generates a log, let's ignore it too.
npm-debug.log
-# Assets should be served by a CDN, not tracked in version control
-/assets/static
-
# The directory NPM downloads your dependencies sources to.
/assets/node_modules/
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..782b9cccd
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,53 @@
+FROM elixir:1.10.2-alpine AS builder
+
+MAINTAINER docker@cloudfire.network
+
+ARG MIX_ENV=prod
+ARG PHOENIX_DIR=./apps/cloudfire
+
+# These are used only for building and won't matter later on
+ENV DATABASE_URL=ecto://dummy:dummy@dummy/dummy
+ENV SECRET_KEY_BASE=dummy
+
+# Install dependencies
+RUN apk add npm
+
+WORKDIR /app
+
+RUN mix do local.hex --force, local.rebar --force
+
+COPY config/ .
+COPY mix.exs ./
+COPY mix.* ./
+
+COPY apps/cf_phx/mix.exs ./apps/cf_phx/
+COPY apps/firewall_daemon/mix.exs ./apps/firewall_daemon/
+
+RUN mix do deps.get --only $MIX_ENV, deps.compile
+
+COPY . .
+
+RUN npm install --prefix $PHOENIX_DIR/assets
+RUN npm run deploy --prefix $PHOENIX_DIR/assets
+RUN mix phx.digest
+
+RUN mix release bundled
+
+# The built application is now contained in _build/
+
+# This is what the builder image is based on
+FROM alpine:3.11
+
+RUN apk add --no-cache \
+ ncurses-dev \
+ openssl-dev
+
+EXPOSE 4000
+ENV PORT=4000 \
+ MIX_ENV=prod \
+ SHELL=/bin/bash
+
+WORKDIR /app
+COPY --from=builder /app/_build/prod/rel/bundled .
+
+CMD ["bin/bundled", "start"]
diff --git a/apps/cloudfire/.formatter.exs b/apps/cf_phx/.formatter.exs
similarity index 100%
rename from apps/cloudfire/.formatter.exs
rename to apps/cf_phx/.formatter.exs
diff --git a/apps/cloudfire/.gitignore b/apps/cf_phx/.gitignore
similarity index 100%
rename from apps/cloudfire/.gitignore
rename to apps/cf_phx/.gitignore
diff --git a/apps/cloudfire/.tool-versions b/apps/cf_phx/.tool-versions
similarity index 100%
rename from apps/cloudfire/.tool-versions
rename to apps/cf_phx/.tool-versions
diff --git a/apps/cf_phx/README.md b/apps/cf_phx/README.md
new file mode 100644
index 000000000..69cd55b2e
--- /dev/null
+++ b/apps/cf_phx/README.md
@@ -0,0 +1,3 @@
+# CfPhx
+
+
diff --git a/assets/.babelrc b/apps/cf_phx/assets/.babelrc
similarity index 100%
rename from assets/.babelrc
rename to apps/cf_phx/assets/.babelrc
diff --git a/assets/css/app.css b/apps/cf_phx/assets/css/app.css
similarity index 100%
rename from assets/css/app.css
rename to apps/cf_phx/assets/css/app.css
diff --git a/assets/css/phoenix.css b/apps/cf_phx/assets/css/phoenix.css
similarity index 100%
rename from assets/css/phoenix.css
rename to apps/cf_phx/assets/css/phoenix.css
diff --git a/assets/js/app.js b/apps/cf_phx/assets/js/app.js
similarity index 100%
rename from assets/js/app.js
rename to apps/cf_phx/assets/js/app.js
diff --git a/assets/js/socket.js b/apps/cf_phx/assets/js/socket.js
similarity index 100%
rename from assets/js/socket.js
rename to apps/cf_phx/assets/js/socket.js
diff --git a/assets/package-lock.json b/apps/cf_phx/assets/package-lock.json
similarity index 100%
rename from assets/package-lock.json
rename to apps/cf_phx/assets/package-lock.json
diff --git a/assets/package.json b/apps/cf_phx/assets/package.json
similarity index 84%
rename from assets/package.json
rename to apps/cf_phx/assets/package.json
index 402022cb6..2662420f0 100644
--- a/assets/package.json
+++ b/apps/cf_phx/assets/package.json
@@ -6,8 +6,8 @@
"watch": "webpack --mode development --watch"
},
"dependencies": {
- "phoenix": "file:../deps/phoenix",
- "phoenix_html": "file:../deps/phoenix_html"
+ "phoenix": "file:../../../deps/phoenix",
+ "phoenix_html": "file:../../../deps/phoenix_html"
},
"devDependencies": {
"@babel/core": "^7.9.0",
diff --git a/apps/cf_phx/assets/static/favicon.ico b/apps/cf_phx/assets/static/favicon.ico
new file mode 100644
index 000000000..73de524aa
Binary files /dev/null and b/apps/cf_phx/assets/static/favicon.ico differ
diff --git a/apps/cf_phx/assets/static/images/logo.svg b/apps/cf_phx/assets/static/images/logo.svg
new file mode 100644
index 000000000..73ba08fad
--- /dev/null
+++ b/apps/cf_phx/assets/static/images/logo.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/apps/cf_phx/assets/static/robots.txt b/apps/cf_phx/assets/static/robots.txt
new file mode 100644
index 000000000..3c9c7c01f
--- /dev/null
+++ b/apps/cf_phx/assets/static/robots.txt
@@ -0,0 +1,5 @@
+# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
+#
+# To ban all spiders from the entire site uncomment the next two lines:
+# User-agent: *
+# Disallow: /
diff --git a/assets/webpack.config.js b/apps/cf_phx/assets/webpack.config.js
similarity index 100%
rename from assets/webpack.config.js
rename to apps/cf_phx/assets/webpack.config.js
diff --git a/apps/cloudfire/lib/cloudfire.ex b/apps/cf_phx/lib/cf_phx.ex
similarity index 69%
rename from apps/cloudfire/lib/cloudfire.ex
rename to apps/cf_phx/lib/cf_phx.ex
index 097f9baf7..827d6b084 100644
--- a/apps/cloudfire/lib/cloudfire.ex
+++ b/apps/cf_phx/lib/cf_phx.ex
@@ -1,6 +1,6 @@
-defmodule Cloudfire do
+defmodule CfPhx do
@moduledoc """
- Cloudfire keeps the contexts that define your domain
+ CfPhx keeps the contexts that define your domain
and business logic.
Contexts are also responsible for managing your data, regardless
diff --git a/apps/cloudfire/lib/cloudfire/application.ex b/apps/cf_phx/lib/cf_phx/application.ex
similarity index 67%
rename from apps/cloudfire/lib/cloudfire/application.ex
rename to apps/cf_phx/lib/cf_phx/application.ex
index ab7fd1ff0..26bf1b624 100644
--- a/apps/cloudfire/lib/cloudfire/application.ex
+++ b/apps/cf_phx/lib/cf_phx/application.ex
@@ -1,4 +1,4 @@
-defmodule Cloudfire.Application do
+defmodule CfPhx.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
@@ -9,23 +9,23 @@ defmodule Cloudfire.Application do
# List all child processes to be supervised
children = [
# Start the Ecto repository
- Cloudfire.Repo,
+ CfPhx.Repo,
# Start the endpoint when the application starts
- CloudfireWeb.Endpoint
- # Starts a worker by calling: Cloudfire.Worker.start_link(arg)
- # {Cloudfire.Worker, arg},
+ CfPhxWeb.Endpoint
+ # Starts a worker by calling: CfPhx.Worker.start_link(arg)
+ # {CfPhx.Worker, arg},
]
# See https://hexdocs.pm/elixir/Supervisor.html
# for other strategies and supported options
- opts = [strategy: :one_for_one, name: Cloudfire.Supervisor]
+ opts = [strategy: :one_for_one, name: CfPhx.Supervisor]
Supervisor.start_link(children, opts)
end
# Tell Phoenix to update the endpoint configuration
# whenever the application is updated.
def config_change(changed, _new, removed) do
- CloudfireWeb.Endpoint.config_change(changed, removed)
+ CfPhxWeb.Endpoint.config_change(changed, removed)
:ok
end
end
diff --git a/apps/cloudfire/lib/cloudfire/devices.ex b/apps/cf_phx/lib/cf_phx/devices.ex
similarity index 95%
rename from apps/cloudfire/lib/cloudfire/devices.ex
rename to apps/cf_phx/lib/cf_phx/devices.ex
index 5cdd4e34c..e386a0b24 100644
--- a/apps/cloudfire/lib/cloudfire/devices.ex
+++ b/apps/cf_phx/lib/cf_phx/devices.ex
@@ -1,12 +1,12 @@
-defmodule Cloudfire.Devices do
+defmodule CfPhx.Devices do
@moduledoc """
The Devices context.
"""
import Ecto.Query, warn: false
- alias Cloudfire.Repo
+ alias CfPhx.Repo
- alias Cloudfire.Devices.Device
+ alias CfPhx.Devices.Device
@doc """
Returns the list of devices.
diff --git a/apps/cloudfire/lib/cloudfire/devices/device.ex b/apps/cf_phx/lib/cf_phx/devices/device.ex
similarity index 77%
rename from apps/cloudfire/lib/cloudfire/devices/device.ex
rename to apps/cf_phx/lib/cf_phx/devices/device.ex
index 89254d375..efb007672 100644
--- a/apps/cloudfire/lib/cloudfire/devices/device.ex
+++ b/apps/cf_phx/lib/cf_phx/devices/device.ex
@@ -1,4 +1,4 @@
-defmodule Cloudfire.Devices.Device do
+defmodule CfPhx.Devices.Device do
use Ecto.Schema
import Ecto.Changeset
@@ -8,7 +8,7 @@ defmodule Cloudfire.Devices.Device do
field :verified_at, :utc_datetime
field :user_id, :id
- has_many :firewall_rules, Cloudfire.FirewallRules.FirewallRule
+ has_many :firewall_rules, CfPhx.FirewallRules.FirewallRule
timestamps()
end
diff --git a/apps/cloudfire/lib/cloudfire/firewall_rules.ex b/apps/cf_phx/lib/cf_phx/firewall_rules.ex
similarity index 95%
rename from apps/cloudfire/lib/cloudfire/firewall_rules.ex
rename to apps/cf_phx/lib/cf_phx/firewall_rules.ex
index 514905afa..3856a575f 100644
--- a/apps/cloudfire/lib/cloudfire/firewall_rules.ex
+++ b/apps/cf_phx/lib/cf_phx/firewall_rules.ex
@@ -1,12 +1,12 @@
-defmodule Cloudfire.FirewallRules do
+defmodule CfPhx.FirewallRules do
@moduledoc """
The FirewallRules context.
"""
import Ecto.Query, warn: false
- alias Cloudfire.Repo
+ alias CfPhx.Repo
- alias Cloudfire.FirewallRules.FirewallRule
+ alias CfPhx.FirewallRules.FirewallRule
@doc """
Returns the list of firewall_rules.
diff --git a/apps/cloudfire/lib/cloudfire/firewall_rules/firewall_rule.ex b/apps/cf_phx/lib/cf_phx/firewall_rules/firewall_rule.ex
similarity index 81%
rename from apps/cloudfire/lib/cloudfire/firewall_rules/firewall_rule.ex
rename to apps/cf_phx/lib/cf_phx/firewall_rules/firewall_rule.ex
index e0ecac8e0..6719a052b 100644
--- a/apps/cloudfire/lib/cloudfire/firewall_rules/firewall_rule.ex
+++ b/apps/cf_phx/lib/cf_phx/firewall_rules/firewall_rule.ex
@@ -1,4 +1,4 @@
-defmodule Cloudfire.FirewallRules.FirewallRule do
+defmodule CfPhx.FirewallRules.FirewallRule do
use Ecto.Schema
import Ecto.Changeset
@@ -8,7 +8,7 @@ defmodule Cloudfire.FirewallRules.FirewallRule do
field :port, :string
field :protocol, :string
- belongs_to :device, Cloudfire.Devices.Device
+ belongs_to :device, CfPhx.Devices.Device
timestamps()
end
diff --git a/apps/cloudfire/lib/cloudfire/repo.ex b/apps/cf_phx/lib/cf_phx/repo.ex
similarity index 51%
rename from apps/cloudfire/lib/cloudfire/repo.ex
rename to apps/cf_phx/lib/cf_phx/repo.ex
index c4e8db7ec..e47355a09 100644
--- a/apps/cloudfire/lib/cloudfire/repo.ex
+++ b/apps/cf_phx/lib/cf_phx/repo.ex
@@ -1,5 +1,5 @@
-defmodule Cloudfire.Repo do
+defmodule CfPhx.Repo do
use Ecto.Repo,
- otp_app: :cloudfire,
+ otp_app: :cf_phx,
adapter: Ecto.Adapters.Postgres
end
diff --git a/apps/cloudfire/lib/cloudfire/user.ex b/apps/cf_phx/lib/cf_phx/user.ex
similarity index 94%
rename from apps/cloudfire/lib/cloudfire/user.ex
rename to apps/cf_phx/lib/cf_phx/user.ex
index 3d878958d..92e5ee014 100644
--- a/apps/cloudfire/lib/cloudfire/user.ex
+++ b/apps/cf_phx/lib/cf_phx/user.ex
@@ -1,4 +1,4 @@
-defmodule Cloudfire.User do
+defmodule CfPhx.User do
use Ecto.Schema
import Ecto.Changeset
diff --git a/apps/cloudfire/lib/cloudfire_web.ex b/apps/cf_phx/lib/cf_phx_web.ex
similarity index 71%
rename from apps/cloudfire/lib/cloudfire_web.ex
rename to apps/cf_phx/lib/cf_phx_web.ex
index 7a21b5920..aec2af59d 100644
--- a/apps/cloudfire/lib/cloudfire_web.ex
+++ b/apps/cf_phx/lib/cf_phx_web.ex
@@ -1,12 +1,12 @@
-defmodule CloudfireWeb do
+defmodule CfPhxWeb do
@moduledoc """
The entrypoint for defining your web interface, such
as controllers, views, channels and so on.
This can be used in your application as:
- use CloudfireWeb, :controller
- use CloudfireWeb, :view
+ use CfPhxWeb, :controller
+ use CfPhxWeb, :view
The definitions below will be executed for every view,
controller, etc, so keep them short and clean, focused
@@ -19,19 +19,19 @@ defmodule CloudfireWeb do
def controller do
quote do
- use Phoenix.Controller, namespace: CloudfireWeb
+ use Phoenix.Controller, namespace: CfPhxWeb
import Plug.Conn
- import CloudfireWeb.Gettext
- alias CloudfireWeb.Router.Helpers, as: Routes
+ import CfPhxWeb.Gettext
+ alias CfPhxWeb.Router.Helpers, as: Routes
end
end
def view do
quote do
use Phoenix.View,
- root: "lib/cloudfire_web/templates",
- namespace: CloudfireWeb
+ root: "lib/cf_phx_web/templates",
+ namespace: CfPhxWeb
# Import convenience functions from controllers
import Phoenix.Controller, only: [get_flash: 1, get_flash: 2, view_module: 1]
@@ -39,9 +39,9 @@ defmodule CloudfireWeb do
# Use all HTML functionality (forms, tags, etc)
use Phoenix.HTML
- import CloudfireWeb.ErrorHelpers
- import CloudfireWeb.Gettext
- alias CloudfireWeb.Router.Helpers, as: Routes
+ import CfPhxWeb.ErrorHelpers
+ import CfPhxWeb.Gettext
+ alias CfPhxWeb.Router.Helpers, as: Routes
end
end
@@ -56,7 +56,7 @@ defmodule CloudfireWeb do
def channel do
quote do
use Phoenix.Channel
- import CloudfireWeb.Gettext
+ import CfPhxWeb.Gettext
end
end
diff --git a/apps/cloudfire/lib/cloudfire_web/channels/user_socket.ex b/apps/cf_phx/lib/cf_phx_web/channels/user_socket.ex
similarity index 84%
rename from apps/cloudfire/lib/cloudfire_web/channels/user_socket.ex
rename to apps/cf_phx/lib/cf_phx_web/channels/user_socket.ex
index 82ffc8032..3027d3ccb 100644
--- a/apps/cloudfire/lib/cloudfire_web/channels/user_socket.ex
+++ b/apps/cf_phx/lib/cf_phx_web/channels/user_socket.ex
@@ -1,8 +1,8 @@
-defmodule CloudfireWeb.UserSocket do
+defmodule CfPhxWeb.UserSocket do
use Phoenix.Socket
## Channels
- # channel "room:*", CloudfireWeb.RoomChannel
+ # channel "room:*", CfPhxWeb.RoomChannel
# Socket params are passed from the client and can
# be used to verify and authenticate a user. After
@@ -26,7 +26,7 @@ defmodule CloudfireWeb.UserSocket do
# Would allow you to broadcast a "disconnect" event and terminate
# all active sockets and channels for a given user:
#
- # CloudfireWeb.Endpoint.broadcast("user_socket:#{user.id}", "disconnect", %{})
+ # CfPhxWeb.Endpoint.broadcast("user_socket:#{user.id}", "disconnect", %{})
#
# Returning `nil` makes this socket anonymous.
def id(_socket), do: nil
diff --git a/apps/cloudfire/lib/cloudfire_web/controllers/device_controller.ex b/apps/cf_phx/lib/cf_phx_web/controllers/device_controller.ex
similarity index 88%
rename from apps/cloudfire/lib/cloudfire_web/controllers/device_controller.ex
rename to apps/cf_phx/lib/cf_phx_web/controllers/device_controller.ex
index f3b63fcc7..d85e876de 100644
--- a/apps/cloudfire/lib/cloudfire_web/controllers/device_controller.ex
+++ b/apps/cf_phx/lib/cf_phx_web/controllers/device_controller.ex
@@ -1,10 +1,10 @@
-defmodule CloudfireWeb.DeviceController do
- use CloudfireWeb, :controller
+defmodule CfPhxWeb.DeviceController do
+ use CfPhxWeb, :controller
- alias Cloudfire.Devices
- alias Cloudfire.Devices.Device
+ alias CfPhx.Devices
+ alias CfPhx.Devices.Device
- plug CloudfireWeb.Plugs.Authenticator
+ plug CfPhxWeb.Plugs.Authenticator
def index(conn, _params) do
devices = Devices.list_devices()
diff --git a/apps/cloudfire/lib/cloudfire_web/controllers/firewall_rule_controller.ex b/apps/cf_phx/lib/cf_phx_web/controllers/firewall_rule_controller.ex
similarity index 90%
rename from apps/cloudfire/lib/cloudfire_web/controllers/firewall_rule_controller.ex
rename to apps/cf_phx/lib/cf_phx_web/controllers/firewall_rule_controller.ex
index 8e91ae20e..9cd613492 100644
--- a/apps/cloudfire/lib/cloudfire_web/controllers/firewall_rule_controller.ex
+++ b/apps/cf_phx/lib/cf_phx_web/controllers/firewall_rule_controller.ex
@@ -1,11 +1,11 @@
-defmodule CloudfireWeb.FirewallRuleController do
- use CloudfireWeb, :controller
+defmodule CfPhxWeb.FirewallRuleController do
+ use CfPhxWeb, :controller
- alias Cloudfire.FirewallRules
- alias Cloudfire.FirewallRules.FirewallRule
- alias Cloudfire.Devices
+ alias CfPhx.FirewallRules
+ alias CfPhx.FirewallRules.FirewallRule
+ alias CfPhx.Devices
- plug CloudfireWeb.Plugs.Authenticator
+ plug CfPhxWeb.Plugs.Authenticator
def index(conn, %{"device_id" => device_id}) do
device = Devices.get_device!(device_id)
diff --git a/apps/cf_phx/lib/cf_phx_web/controllers/page_controller.ex b/apps/cf_phx/lib/cf_phx_web/controllers/page_controller.ex
new file mode 100644
index 000000000..11e920f83
--- /dev/null
+++ b/apps/cf_phx/lib/cf_phx_web/controllers/page_controller.ex
@@ -0,0 +1,7 @@
+defmodule CfPhxWeb.PageController do
+ use CfPhxWeb, :controller
+
+ def index(conn, _params) do
+ render(conn, "index.html")
+ end
+end
diff --git a/apps/cloudfire/lib/cloudfire_web/controllers/user_controller.ex b/apps/cf_phx/lib/cf_phx_web/controllers/user_controller.ex
similarity index 90%
rename from apps/cloudfire/lib/cloudfire_web/controllers/user_controller.ex
rename to apps/cf_phx/lib/cf_phx_web/controllers/user_controller.ex
index c1de76229..66190e654 100644
--- a/apps/cloudfire/lib/cloudfire_web/controllers/user_controller.ex
+++ b/apps/cf_phx/lib/cf_phx_web/controllers/user_controller.ex
@@ -1,12 +1,12 @@
-defmodule CloudfireWeb.UserController do
+defmodule CfPhxWeb.UserController do
@moduledoc """
Implements the CRUD for a User
"""
- use CloudfireWeb, :controller
- alias Cloudfire.{Repo, User}
+ use CfPhxWeb, :controller
+ alias CfPhx.{Repo, User}
- plug CloudfireWeb.Plugs.Authenticator when action in [:show, :edit, :update, :delete]
+ plug CfPhxWeb.Plugs.Authenticator when action in [:show, :edit, :update, :delete]
# GET /users/new
def new(conn, _params) do
diff --git a/apps/cloudfire/lib/cloudfire_web/endpoint.ex b/apps/cf_phx/lib/cf_phx_web/endpoint.ex
similarity index 85%
rename from apps/cloudfire/lib/cloudfire_web/endpoint.ex
rename to apps/cf_phx/lib/cf_phx_web/endpoint.ex
index 8e02bc3a0..1ce5f08d0 100644
--- a/apps/cloudfire/lib/cloudfire_web/endpoint.ex
+++ b/apps/cf_phx/lib/cf_phx_web/endpoint.ex
@@ -1,16 +1,16 @@
-defmodule CloudfireWeb.Endpoint do
- use Phoenix.Endpoint, otp_app: :cloudfire
+defmodule CfPhxWeb.Endpoint do
+ use Phoenix.Endpoint, otp_app: :cf_phx
# The session will be stored in the cookie and signed,
# this means its contents can be read but not tampered with.
# Set :encryption_salt if you would also like to encrypt it.
@session_options [
store: :cookie,
- key: "_cloudfire_key",
+ key: "_cf_phx_key",
signing_salt: "Z9eq8iof"
]
- socket "/socket", CloudfireWeb.UserSocket,
+ socket "/socket", CfPhxWeb.UserSocket,
websocket: true,
longpoll: false
@@ -20,7 +20,7 @@ defmodule CloudfireWeb.Endpoint do
# when deploying your static files in production.
plug Plug.Static,
at: "/",
- from: :cloudfire,
+ from: :cf_phx,
gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt)
@@ -43,5 +43,5 @@ defmodule CloudfireWeb.Endpoint do
plug Plug.MethodOverride
plug Plug.Head
plug Plug.Session, @session_options
- plug CloudfireWeb.Router
+ plug CfPhxWeb.Router
end
diff --git a/apps/cloudfire/lib/cloudfire_web/gettext.ex b/apps/cf_phx/lib/cf_phx_web/gettext.ex
similarity index 85%
rename from apps/cloudfire/lib/cloudfire_web/gettext.ex
rename to apps/cf_phx/lib/cf_phx_web/gettext.ex
index 720a7e9d7..c43cffcfc 100644
--- a/apps/cloudfire/lib/cloudfire_web/gettext.ex
+++ b/apps/cf_phx/lib/cf_phx_web/gettext.ex
@@ -1,11 +1,11 @@
-defmodule CloudfireWeb.Gettext do
+defmodule CfPhxWeb.Gettext do
@moduledoc """
A module providing Internationalization with a gettext-based API.
By using [Gettext](https://hexdocs.pm/gettext),
your module gains a set of macros for translations, for example:
- import CloudfireWeb.Gettext
+ import CfPhxWeb.Gettext
# Simple translation
gettext("Here is the string to translate")
@@ -20,5 +20,5 @@ defmodule CloudfireWeb.Gettext do
See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage.
"""
- use Gettext, otp_app: :cloudfire
+ use Gettext, otp_app: :cf_phx
end
diff --git a/apps/cloudfire/lib/cloudfire_web/plugs/authenticator.ex b/apps/cf_phx/lib/cf_phx_web/plugs/authenticator.ex
similarity index 78%
rename from apps/cloudfire/lib/cloudfire_web/plugs/authenticator.ex
rename to apps/cf_phx/lib/cf_phx_web/plugs/authenticator.ex
index ff227f938..3366dafc8 100644
--- a/apps/cloudfire/lib/cloudfire_web/plugs/authenticator.ex
+++ b/apps/cf_phx/lib/cf_phx_web/plugs/authenticator.ex
@@ -1,10 +1,10 @@
-defmodule CloudfireWeb.Plugs.Authenticator do
+defmodule CfPhxWeb.Plugs.Authenticator do
@moduledoc """
Loads the user's session from cookie
"""
import Plug.Conn
- alias Cloudfire.User
+ alias CfPhx.User
def init(default), do: default
diff --git a/apps/cloudfire/lib/cloudfire_web/router.ex b/apps/cf_phx/lib/cf_phx_web/router.ex
similarity index 86%
rename from apps/cloudfire/lib/cloudfire_web/router.ex
rename to apps/cf_phx/lib/cf_phx_web/router.ex
index c1e0cf3ca..81b2dd114 100644
--- a/apps/cloudfire/lib/cloudfire_web/router.ex
+++ b/apps/cf_phx/lib/cf_phx_web/router.ex
@@ -1,5 +1,5 @@
-defmodule CloudfireWeb.Router do
- use CloudfireWeb, :router
+defmodule CfPhxWeb.Router do
+ use CfPhxWeb, :router
pipeline :browser do
plug :accepts, ["html"]
@@ -13,7 +13,7 @@ defmodule CloudfireWeb.Router do
plug :accepts, ["json"]
end
- scope "/", CloudfireWeb do
+ scope "/", CfPhxWeb do
pipe_through :browser
get "/", PageController, :index
@@ -27,7 +27,7 @@ defmodule CloudfireWeb.Router do
end
# Other scopes may use custom stacks.
- # scope "/api", CloudfireWeb do
+ # scope "/api", CfPhxWeb do
# pipe_through :api
# end
end
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/device/edit.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/device/edit.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/device/edit.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/device/edit.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/device/form.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/device/form.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/device/form.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/device/form.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/device/index.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/device/index.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/device/index.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/device/index.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/device/new.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/device/new.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/device/new.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/device/new.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/device/show.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/device/show.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/device/show.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/device/show.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/edit.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/edit.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/edit.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/edit.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/form.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/form.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/form.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/form.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/index.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/index.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/index.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/index.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/new.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/new.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/new.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/new.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/show.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/show.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/firewall_rule/show.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/firewall_rule/show.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/layout/app.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/layout/app.html.eex
similarity index 94%
rename from apps/cloudfire/lib/cloudfire_web/templates/layout/app.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/layout/app.html.eex
index de02244f7..596e01e40 100644
--- a/apps/cloudfire/lib/cloudfire_web/templates/layout/app.html.eex
+++ b/apps/cf_phx/lib/cf_phx_web/templates/layout/app.html.eex
@@ -16,7 +16,7 @@
-
+ " alt="Cloudfire Logo"/>
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/page/index.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/page/index.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/page/index.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/page/index.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/user/edit.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/user/edit.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/user/edit.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/user/edit.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/user/new.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/user/new.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/user/new.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/user/new.html.eex
diff --git a/apps/cloudfire/lib/cloudfire_web/templates/user/show.html.eex b/apps/cf_phx/lib/cf_phx_web/templates/user/show.html.eex
similarity index 100%
rename from apps/cloudfire/lib/cloudfire_web/templates/user/show.html.eex
rename to apps/cf_phx/lib/cf_phx_web/templates/user/show.html.eex
diff --git a/apps/cf_phx/lib/cf_phx_web/views/device_view.ex b/apps/cf_phx/lib/cf_phx_web/views/device_view.ex
new file mode 100644
index 000000000..9f9cad325
--- /dev/null
+++ b/apps/cf_phx/lib/cf_phx_web/views/device_view.ex
@@ -0,0 +1,3 @@
+defmodule CfPhxWeb.DeviceView do
+ use CfPhxWeb, :view
+end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/error_helpers.ex b/apps/cf_phx/lib/cf_phx_web/views/error_helpers.ex
similarity index 87%
rename from apps/cloudfire/lib/cloudfire_web/views/error_helpers.ex
rename to apps/cf_phx/lib/cf_phx_web/views/error_helpers.ex
index 82a9f9585..2aed26fde 100644
--- a/apps/cloudfire/lib/cloudfire_web/views/error_helpers.ex
+++ b/apps/cf_phx/lib/cf_phx_web/views/error_helpers.ex
@@ -1,4 +1,4 @@
-defmodule CloudfireWeb.ErrorHelpers do
+defmodule CfPhxWeb.ErrorHelpers do
@moduledoc """
Conveniences for translating and building error messages.
"""
@@ -36,9 +36,9 @@ defmodule CloudfireWeb.ErrorHelpers do
# should be written to the errors.po file. The :count option is
# set by Ecto and indicates we should also apply plural rules.
if count = opts[:count] do
- Gettext.dngettext(CloudfireWeb.Gettext, "errors", msg, msg, count, opts)
+ Gettext.dngettext(CfPhxWeb.Gettext, "errors", msg, msg, count, opts)
else
- Gettext.dgettext(CloudfireWeb.Gettext, "errors", msg, opts)
+ Gettext.dgettext(CfPhxWeb.Gettext, "errors", msg, opts)
end
end
end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/error_view.ex b/apps/cf_phx/lib/cf_phx_web/views/error_view.ex
similarity index 87%
rename from apps/cloudfire/lib/cloudfire_web/views/error_view.ex
rename to apps/cf_phx/lib/cf_phx_web/views/error_view.ex
index 7757174fa..c6d0259e2 100644
--- a/apps/cloudfire/lib/cloudfire_web/views/error_view.ex
+++ b/apps/cf_phx/lib/cf_phx_web/views/error_view.ex
@@ -1,5 +1,5 @@
-defmodule CloudfireWeb.ErrorView do
- use CloudfireWeb, :view
+defmodule CfPhxWeb.ErrorView do
+ use CfPhxWeb, :view
# If you want to customize a particular status code
# for a certain format, you may uncomment below.
diff --git a/apps/cf_phx/lib/cf_phx_web/views/firewall_rule_view.ex b/apps/cf_phx/lib/cf_phx_web/views/firewall_rule_view.ex
new file mode 100644
index 000000000..fef21d094
--- /dev/null
+++ b/apps/cf_phx/lib/cf_phx_web/views/firewall_rule_view.ex
@@ -0,0 +1,3 @@
+defmodule CfPhxWeb.FirewallRuleView do
+ use CfPhxWeb, :view
+end
diff --git a/apps/cf_phx/lib/cf_phx_web/views/layout_view.ex b/apps/cf_phx/lib/cf_phx_web/views/layout_view.ex
new file mode 100644
index 000000000..20ce9d0c7
--- /dev/null
+++ b/apps/cf_phx/lib/cf_phx_web/views/layout_view.ex
@@ -0,0 +1,3 @@
+defmodule CfPhxWeb.LayoutView do
+ use CfPhxWeb, :view
+end
diff --git a/apps/cf_phx/lib/cf_phx_web/views/page_view.ex b/apps/cf_phx/lib/cf_phx_web/views/page_view.ex
new file mode 100644
index 000000000..bbbc8f0b9
--- /dev/null
+++ b/apps/cf_phx/lib/cf_phx_web/views/page_view.ex
@@ -0,0 +1,3 @@
+defmodule CfPhxWeb.PageView do
+ use CfPhxWeb, :view
+end
diff --git a/apps/cf_phx/lib/cf_phx_web/views/user_view.ex b/apps/cf_phx/lib/cf_phx_web/views/user_view.ex
new file mode 100644
index 000000000..282c354a7
--- /dev/null
+++ b/apps/cf_phx/lib/cf_phx_web/views/user_view.ex
@@ -0,0 +1,3 @@
+defmodule CfPhxWeb.UserView do
+ use CfPhxWeb, :view
+end
diff --git a/apps/cloudfire/mix.exs b/apps/cf_phx/mix.exs
similarity index 94%
rename from apps/cloudfire/mix.exs
rename to apps/cf_phx/mix.exs
index 124ff3eed..c8c989928 100644
--- a/apps/cloudfire/mix.exs
+++ b/apps/cf_phx/mix.exs
@@ -1,9 +1,9 @@
-defmodule Cloudfire.MixProject do
+defmodule CfPhx.MixProject do
use Mix.Project
def project do
[
- app: :cloudfire,
+ app: :cf_phx,
version: "0.1.0",
build_path: "../../_build",
config_path: "../../config/config.exs",
@@ -23,7 +23,7 @@ defmodule Cloudfire.MixProject do
# Type `mix help compile.app` for more information.
def application do
[
- mod: {Cloudfire.Application, []},
+ mod: {CfPhx.Application, []},
extra_applications: [:logger, :runtime_tools]
]
end
diff --git a/apps/cloudfire/priv/gettext/en/LC_MESSAGES/errors.po b/apps/cf_phx/priv/gettext/en/LC_MESSAGES/errors.po
similarity index 100%
rename from apps/cloudfire/priv/gettext/en/LC_MESSAGES/errors.po
rename to apps/cf_phx/priv/gettext/en/LC_MESSAGES/errors.po
diff --git a/apps/cloudfire/priv/gettext/errors.pot b/apps/cf_phx/priv/gettext/errors.pot
similarity index 100%
rename from apps/cloudfire/priv/gettext/errors.pot
rename to apps/cf_phx/priv/gettext/errors.pot
diff --git a/apps/cloudfire/priv/repo/migrations/.formatter.exs b/apps/cf_phx/priv/repo/migrations/.formatter.exs
similarity index 100%
rename from apps/cloudfire/priv/repo/migrations/.formatter.exs
rename to apps/cf_phx/priv/repo/migrations/.formatter.exs
diff --git a/apps/cloudfire/priv/repo/migrations/20200225005454_create_users.exs b/apps/cf_phx/priv/repo/migrations/20200225005454_create_users.exs
similarity index 85%
rename from apps/cloudfire/priv/repo/migrations/20200225005454_create_users.exs
rename to apps/cf_phx/priv/repo/migrations/20200225005454_create_users.exs
index 18862b71d..6001ea030 100644
--- a/apps/cloudfire/priv/repo/migrations/20200225005454_create_users.exs
+++ b/apps/cf_phx/priv/repo/migrations/20200225005454_create_users.exs
@@ -1,4 +1,4 @@
-defmodule Cloudfire.Repo.Migrations.CreateUsers do
+defmodule CfPhx.Repo.Migrations.CreateUsers do
use Ecto.Migration
def change do
diff --git a/apps/cloudfire/priv/repo/migrations/20200228145810_create_devices.exs b/apps/cf_phx/priv/repo/migrations/20200228145810_create_devices.exs
similarity index 85%
rename from apps/cloudfire/priv/repo/migrations/20200228145810_create_devices.exs
rename to apps/cf_phx/priv/repo/migrations/20200228145810_create_devices.exs
index 558780eb4..f9328521f 100644
--- a/apps/cloudfire/priv/repo/migrations/20200228145810_create_devices.exs
+++ b/apps/cf_phx/priv/repo/migrations/20200228145810_create_devices.exs
@@ -1,4 +1,4 @@
-defmodule Cloudfire.Repo.Migrations.CreateDevices do
+defmodule CfPhx.Repo.Migrations.CreateDevices do
use Ecto.Migration
def change do
diff --git a/apps/cloudfire/priv/repo/migrations/20200228154815_create_firewall_rules.exs b/apps/cf_phx/priv/repo/migrations/20200228154815_create_firewall_rules.exs
similarity index 81%
rename from apps/cloudfire/priv/repo/migrations/20200228154815_create_firewall_rules.exs
rename to apps/cf_phx/priv/repo/migrations/20200228154815_create_firewall_rules.exs
index ae8452200..c0159ee7c 100644
--- a/apps/cloudfire/priv/repo/migrations/20200228154815_create_firewall_rules.exs
+++ b/apps/cf_phx/priv/repo/migrations/20200228154815_create_firewall_rules.exs
@@ -1,4 +1,4 @@
-defmodule Cloudfire.Repo.Migrations.CreateFirewallRules do
+defmodule CfPhx.Repo.Migrations.CreateFirewallRules do
use Ecto.Migration
def change do
diff --git a/apps/cloudfire/priv/repo/seeds.exs b/apps/cf_phx/priv/repo/seeds.exs
similarity index 84%
rename from apps/cloudfire/priv/repo/seeds.exs
rename to apps/cf_phx/priv/repo/seeds.exs
index 1f1f7922e..ef6fef1b5 100644
--- a/apps/cloudfire/priv/repo/seeds.exs
+++ b/apps/cf_phx/priv/repo/seeds.exs
@@ -5,7 +5,7 @@
# Inside the script, you can read and write to any of your
# repositories directly:
#
-# Cloudfire.Repo.insert!(%Cloudfire.SomeSchema{})
+# CfPhx.Repo.insert!(%CfPhx.SomeSchema{})
#
# We recommend using the bang functions (`insert!`, `update!`
# and so on) as they will fail if something goes wrong.
diff --git a/apps/cf_phx/test/cf_phx/devices_test.exs b/apps/cf_phx/test/cf_phx/devices_test.exs
new file mode 100644
index 000000000..adf1fa0c4
--- /dev/null
+++ b/apps/cf_phx/test/cf_phx/devices_test.exs
@@ -0,0 +1,6 @@
+defmodule CfPhx.DevicesTest do
+ use CfPhx.DataCase
+
+ describe "devices" do
+ end
+end
diff --git a/apps/cf_phx/test/cf_phx/firewall_rules_test.exs b/apps/cf_phx/test/cf_phx/firewall_rules_test.exs
new file mode 100644
index 000000000..9290afb82
--- /dev/null
+++ b/apps/cf_phx/test/cf_phx/firewall_rules_test.exs
@@ -0,0 +1,6 @@
+defmodule CfPhx.FirewallRulesTest do
+ use CfPhx.DataCase
+
+ describe "firewall_rules" do
+ end
+end
diff --git a/apps/cloudfire/test/cloudfire_web/controllers/device_controller_test.exs b/apps/cf_phx/test/cf_phx_web/controllers/device_controller_test.exs
similarity index 95%
rename from apps/cloudfire/test/cloudfire_web/controllers/device_controller_test.exs
rename to apps/cf_phx/test/cf_phx_web/controllers/device_controller_test.exs
index 87f7dfad5..6cc786681 100644
--- a/apps/cloudfire/test/cloudfire_web/controllers/device_controller_test.exs
+++ b/apps/cf_phx/test/cf_phx_web/controllers/device_controller_test.exs
@@ -1,7 +1,7 @@
-defmodule CloudfireWeb.DeviceControllerTest do
- use CloudfireWeb.ConnCase
+defmodule CfPhxWeb.DeviceControllerTest do
+ use CfPhxWeb.ConnCase
- alias Cloudfire.Devices
+ alias CfPhx.Devices
@create_attrs %{name: "some name"}
@update_attrs %{name: "some updated name"}
diff --git a/apps/cloudfire/test/cloudfire_web/controllers/firewall_rule_controller_test.exs b/apps/cf_phx/test/cf_phx_web/controllers/firewall_rule_controller_test.exs
similarity index 75%
rename from apps/cloudfire/test/cloudfire_web/controllers/firewall_rule_controller_test.exs
rename to apps/cf_phx/test/cf_phx_web/controllers/firewall_rule_controller_test.exs
index 4ff915035..46993a1f1 100644
--- a/apps/cloudfire/test/cloudfire_web/controllers/firewall_rule_controller_test.exs
+++ b/apps/cf_phx/test/cf_phx_web/controllers/firewall_rule_controller_test.exs
@@ -1,5 +1,5 @@
-defmodule CloudfireWeb.FirewallRuleControllerTest do
- use CloudfireWeb.ConnCase
+defmodule CfPhxWeb.FirewallRuleControllerTest do
+ use CfPhxWeb.ConnCase
describe "index" do
end
diff --git a/apps/cloudfire/test/cloudfire_web/controllers/page_controller_test.exs b/apps/cf_phx/test/cf_phx_web/controllers/page_controller_test.exs
similarity index 62%
rename from apps/cloudfire/test/cloudfire_web/controllers/page_controller_test.exs
rename to apps/cf_phx/test/cf_phx_web/controllers/page_controller_test.exs
index b53ffd00a..7bb9f2f36 100644
--- a/apps/cloudfire/test/cloudfire_web/controllers/page_controller_test.exs
+++ b/apps/cf_phx/test/cf_phx_web/controllers/page_controller_test.exs
@@ -1,5 +1,5 @@
-defmodule CloudfireWeb.PageControllerTest do
- use CloudfireWeb.ConnCase
+defmodule CfPhxWeb.PageControllerTest do
+ use CfPhxWeb.ConnCase
test "GET /", %{conn: conn} do
conn = get(conn, "/")
diff --git a/apps/cf_phx/test/cf_phx_web/views/error_view_test.exs b/apps/cf_phx/test/cf_phx_web/views/error_view_test.exs
new file mode 100644
index 000000000..d31108ed5
--- /dev/null
+++ b/apps/cf_phx/test/cf_phx_web/views/error_view_test.exs
@@ -0,0 +1,14 @@
+defmodule CfPhxWeb.ErrorViewTest do
+ use CfPhxWeb.ConnCase, async: true
+
+ # Bring render/3 and render_to_string/3 for testing custom views
+ import Phoenix.View
+
+ test "renders 404.html" do
+ assert render_to_string(CfPhxWeb.ErrorView, "404.html", []) == "Not Found"
+ end
+
+ test "renders 500.html" do
+ assert render_to_string(CfPhxWeb.ErrorView, "500.html", []) == "Internal Server Error"
+ end
+end
diff --git a/apps/cloudfire/test/cloudfire_web/views/layout_view_test.exs b/apps/cf_phx/test/cf_phx_web/views/layout_view_test.exs
similarity index 70%
rename from apps/cloudfire/test/cloudfire_web/views/layout_view_test.exs
rename to apps/cf_phx/test/cf_phx_web/views/layout_view_test.exs
index 0f92aab41..c1ed06e34 100644
--- a/apps/cloudfire/test/cloudfire_web/views/layout_view_test.exs
+++ b/apps/cf_phx/test/cf_phx_web/views/layout_view_test.exs
@@ -1,5 +1,5 @@
-defmodule CloudfireWeb.LayoutViewTest do
- use CloudfireWeb.ConnCase, async: true
+defmodule CfPhxWeb.LayoutViewTest do
+ use CfPhxWeb.ConnCase, async: true
# When testing helpers, you may want to import Phoenix.HTML and
# use functions such as safe_to_string() to convert the helper
diff --git a/apps/cf_phx/test/cf_phx_web/views/page_view_test.exs b/apps/cf_phx/test/cf_phx_web/views/page_view_test.exs
new file mode 100644
index 000000000..7e81d5395
--- /dev/null
+++ b/apps/cf_phx/test/cf_phx_web/views/page_view_test.exs
@@ -0,0 +1,3 @@
+defmodule CfPhxWeb.PageViewTest do
+ use CfPhxWeb.ConnCase, async: true
+end
diff --git a/apps/cloudfire/test/support/channel_case.ex b/apps/cf_phx/test/support/channel_case.ex
similarity index 74%
rename from apps/cloudfire/test/support/channel_case.ex
rename to apps/cf_phx/test/support/channel_case.ex
index 98a7f2a0d..6a4c1abf5 100644
--- a/apps/cloudfire/test/support/channel_case.ex
+++ b/apps/cf_phx/test/support/channel_case.ex
@@ -1,4 +1,4 @@
-defmodule CloudfireWeb.ChannelCase do
+defmodule CfPhxWeb.ChannelCase do
@moduledoc """
This module defines the test case to be used by
channel tests.
@@ -11,7 +11,7 @@ defmodule CloudfireWeb.ChannelCase do
we enable the SQL sandbox, so changes done to the database
are reverted at the end of every test. If you are using
PostgreSQL, you can even run database tests asynchronously
- by setting `use CloudfireWeb.ChannelCase, async: true`, although
+ by setting `use CfPhxWeb.ChannelCase, async: true`, although
this option is not recommended for other databases.
"""
@@ -23,15 +23,15 @@ defmodule CloudfireWeb.ChannelCase do
use Phoenix.ChannelTest
# The default endpoint for testing
- @endpoint CloudfireWeb.Endpoint
+ @endpoint CfPhxWeb.Endpoint
end
end
setup tags do
- :ok = Ecto.Adapters.SQL.Sandbox.checkout(Cloudfire.Repo)
+ :ok = Ecto.Adapters.SQL.Sandbox.checkout(CfPhx.Repo)
unless tags[:async] do
- Ecto.Adapters.SQL.Sandbox.mode(Cloudfire.Repo, {:shared, self()})
+ Ecto.Adapters.SQL.Sandbox.mode(CfPhx.Repo, {:shared, self()})
end
:ok
diff --git a/apps/cloudfire/test/support/conn_case.ex b/apps/cf_phx/test/support/conn_case.ex
similarity index 73%
rename from apps/cloudfire/test/support/conn_case.ex
rename to apps/cf_phx/test/support/conn_case.ex
index 40c8d524d..71019e09b 100644
--- a/apps/cloudfire/test/support/conn_case.ex
+++ b/apps/cf_phx/test/support/conn_case.ex
@@ -1,4 +1,4 @@
-defmodule CloudfireWeb.ConnCase do
+defmodule CfPhxWeb.ConnCase do
@moduledoc """
This module defines the test case to be used by
tests that require setting up a connection.
@@ -11,7 +11,7 @@ defmodule CloudfireWeb.ConnCase do
we enable the SQL sandbox, so changes done to the database
are reverted at the end of every test. If you are using
PostgreSQL, you can even run database tests asynchronously
- by setting `use CloudfireWeb.ConnCase, async: true`, although
+ by setting `use CfPhxWeb.ConnCase, async: true`, although
this option is not recommended for other databases.
"""
@@ -21,18 +21,18 @@ defmodule CloudfireWeb.ConnCase do
quote do
# Import conveniences for testing with connections
use Phoenix.ConnTest
- alias CloudfireWeb.Router.Helpers, as: Routes
+ alias CfPhxWeb.Router.Helpers, as: Routes
# The default endpoint for testing
- @endpoint CloudfireWeb.Endpoint
+ @endpoint CfPhxWeb.Endpoint
end
end
setup tags do
- :ok = Ecto.Adapters.SQL.Sandbox.checkout(Cloudfire.Repo)
+ :ok = Ecto.Adapters.SQL.Sandbox.checkout(CfPhx.Repo)
unless tags[:async] do
- Ecto.Adapters.SQL.Sandbox.mode(Cloudfire.Repo, {:shared, self()})
+ Ecto.Adapters.SQL.Sandbox.mode(CfPhx.Repo, {:shared, self()})
end
{:ok, conn: Phoenix.ConnTest.build_conn()}
diff --git a/apps/cloudfire/test/support/data_case.ex b/apps/cf_phx/test/support/data_case.ex
similarity index 81%
rename from apps/cloudfire/test/support/data_case.ex
rename to apps/cf_phx/test/support/data_case.ex
index 518451bbd..d0ee0172f 100644
--- a/apps/cloudfire/test/support/data_case.ex
+++ b/apps/cf_phx/test/support/data_case.ex
@@ -1,4 +1,4 @@
-defmodule Cloudfire.DataCase do
+defmodule CfPhx.DataCase do
@moduledoc """
This module defines the setup for tests requiring
access to the application's data layer.
@@ -10,7 +10,7 @@ defmodule Cloudfire.DataCase do
we enable the SQL sandbox, so changes done to the database
are reverted at the end of every test. If you are using
PostgreSQL, you can even run database tests asynchronously
- by setting `use Cloudfire.DataCase, async: true`, although
+ by setting `use CfPhx.DataCase, async: true`, although
this option is not recommended for other databases.
"""
@@ -18,20 +18,20 @@ defmodule Cloudfire.DataCase do
using do
quote do
- alias Cloudfire.Repo
+ alias CfPhx.Repo
import Ecto
import Ecto.Changeset
import Ecto.Query
- import Cloudfire.DataCase
+ import CfPhx.DataCase
end
end
setup tags do
- :ok = Ecto.Adapters.SQL.Sandbox.checkout(Cloudfire.Repo)
+ :ok = Ecto.Adapters.SQL.Sandbox.checkout(CfPhx.Repo)
unless tags[:async] do
- Ecto.Adapters.SQL.Sandbox.mode(Cloudfire.Repo, {:shared, self()})
+ Ecto.Adapters.SQL.Sandbox.mode(CfPhx.Repo, {:shared, self()})
end
:ok
diff --git a/apps/cf_phx/test/test_helper.exs b/apps/cf_phx/test/test_helper.exs
new file mode 100644
index 000000000..01cf0f7d6
--- /dev/null
+++ b/apps/cf_phx/test/test_helper.exs
@@ -0,0 +1,2 @@
+ExUnit.start()
+Ecto.Adapters.SQL.Sandbox.mode(CfPhx.Repo, :manual)
diff --git a/apps/cloudfire/README.md b/apps/cloudfire/README.md
deleted file mode 100644
index 7fc4eeb58..000000000
--- a/apps/cloudfire/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Cloudfire
-
-
diff --git a/apps/cloudfire/lib/cloudfire_web/controllers/page_controller.ex b/apps/cloudfire/lib/cloudfire_web/controllers/page_controller.ex
deleted file mode 100644
index b92f2e3fb..000000000
--- a/apps/cloudfire/lib/cloudfire_web/controllers/page_controller.ex
+++ /dev/null
@@ -1,7 +0,0 @@
-defmodule CloudfireWeb.PageController do
- use CloudfireWeb, :controller
-
- def index(conn, _params) do
- render(conn, "index.html")
- end
-end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/device_view.ex b/apps/cloudfire/lib/cloudfire_web/views/device_view.ex
deleted file mode 100644
index 4d7d36eed..000000000
--- a/apps/cloudfire/lib/cloudfire_web/views/device_view.ex
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule CloudfireWeb.DeviceView do
- use CloudfireWeb, :view
-end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/firewall_rule_view.ex b/apps/cloudfire/lib/cloudfire_web/views/firewall_rule_view.ex
deleted file mode 100644
index bd25748cc..000000000
--- a/apps/cloudfire/lib/cloudfire_web/views/firewall_rule_view.ex
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule CloudfireWeb.FirewallRuleView do
- use CloudfireWeb, :view
-end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/layout_view.ex b/apps/cloudfire/lib/cloudfire_web/views/layout_view.ex
deleted file mode 100644
index c46bc264e..000000000
--- a/apps/cloudfire/lib/cloudfire_web/views/layout_view.ex
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule CloudfireWeb.LayoutView do
- use CloudfireWeb, :view
-end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/page_view.ex b/apps/cloudfire/lib/cloudfire_web/views/page_view.ex
deleted file mode 100644
index 379b42304..000000000
--- a/apps/cloudfire/lib/cloudfire_web/views/page_view.ex
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule CloudfireWeb.PageView do
- use CloudfireWeb, :view
-end
diff --git a/apps/cloudfire/lib/cloudfire_web/views/user_view.ex b/apps/cloudfire/lib/cloudfire_web/views/user_view.ex
deleted file mode 100644
index 0a75670e1..000000000
--- a/apps/cloudfire/lib/cloudfire_web/views/user_view.ex
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule CloudfireWeb.UserView do
- use CloudfireWeb, :view
-end
diff --git a/apps/cloudfire/test/cloudfire/devices_test.exs b/apps/cloudfire/test/cloudfire/devices_test.exs
deleted file mode 100644
index a0dd284c3..000000000
--- a/apps/cloudfire/test/cloudfire/devices_test.exs
+++ /dev/null
@@ -1,6 +0,0 @@
-defmodule Cloudfire.DevicesTest do
- use Cloudfire.DataCase
-
- describe "devices" do
- end
-end
diff --git a/apps/cloudfire/test/cloudfire/firewall_rules_test.exs b/apps/cloudfire/test/cloudfire/firewall_rules_test.exs
deleted file mode 100644
index 056c30004..000000000
--- a/apps/cloudfire/test/cloudfire/firewall_rules_test.exs
+++ /dev/null
@@ -1,6 +0,0 @@
-defmodule Cloudfire.FirewallRulesTest do
- use Cloudfire.DataCase
-
- describe "firewall_rules" do
- end
-end
diff --git a/apps/cloudfire/test/cloudfire_web/views/error_view_test.exs b/apps/cloudfire/test/cloudfire_web/views/error_view_test.exs
deleted file mode 100644
index e0c16cbf7..000000000
--- a/apps/cloudfire/test/cloudfire_web/views/error_view_test.exs
+++ /dev/null
@@ -1,14 +0,0 @@
-defmodule CloudfireWeb.ErrorViewTest do
- use CloudfireWeb.ConnCase, async: true
-
- # Bring render/3 and render_to_string/3 for testing custom views
- import Phoenix.View
-
- test "renders 404.html" do
- assert render_to_string(CloudfireWeb.ErrorView, "404.html", []) == "Not Found"
- end
-
- test "renders 500.html" do
- assert render_to_string(CloudfireWeb.ErrorView, "500.html", []) == "Internal Server Error"
- end
-end
diff --git a/apps/cloudfire/test/cloudfire_web/views/page_view_test.exs b/apps/cloudfire/test/cloudfire_web/views/page_view_test.exs
deleted file mode 100644
index 0e2d01123..000000000
--- a/apps/cloudfire/test/cloudfire_web/views/page_view_test.exs
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule CloudfireWeb.PageViewTest do
- use CloudfireWeb.ConnCase, async: true
-end
diff --git a/apps/cloudfire/test/test_helper.exs b/apps/cloudfire/test/test_helper.exs
deleted file mode 100644
index f8c1762f3..000000000
--- a/apps/cloudfire/test/test_helper.exs
+++ /dev/null
@@ -1,2 +0,0 @@
-ExUnit.start()
-Ecto.Adapters.SQL.Sandbox.mode(Cloudfire.Repo, :manual)
diff --git a/config/config.exs b/config/config.exs
index c0efb627d..552dfb8d0 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -19,15 +19,15 @@ import Config
# Use Jason for JSON parsing in Phoenix
config :phoenix, :json_library, Jason
-config :cloudfire,
- ecto_repos: [Cloudfire.Repo]
+config :cf_phx,
+ ecto_repos: [CfPhx.Repo]
# Configures the endpoint
-config :cloudfire, CloudfireWeb.Endpoint,
+config :cf_phx, CfPhxWeb.Endpoint,
url: [host: "localhost"],
secret_key_base: "5OVYJ83AcoQcPmdKNksuBhJFBhjHD1uUa9mDOHV/6EIdBQ6pXksIhkVeWIzFk5SD",
- render_errors: [view: CloudfireWeb.ErrorView, accepts: ~w(html json)],
- pubsub: [name: Cloudfire.PubSub, adapter: Phoenix.PubSub.PG2]
+ render_errors: [view: CfPhxWeb.ErrorView, accepts: ~w(html json)],
+ pubsub: [name: CfPhx.PubSub, adapter: Phoenix.PubSub.PG2]
# Configures Elixir's Logger
config :logger, :console,
diff --git a/config/dev.exs b/config/dev.exs
index 0194c30e4..855940fbc 100644
--- a/config/dev.exs
+++ b/config/dev.exs
@@ -1,7 +1,7 @@
import Config
# Configure your database
-config :cloudfire, Cloudfire.Repo,
+config :cf_phx, CfPhx.Repo,
username: "cloudfire",
password: "postgres",
database: "cloudfire_dev",
@@ -15,7 +15,7 @@ config :cloudfire, Cloudfire.Repo,
# The watchers configuration can be used to run external
# watchers to your application. For example, we use it
# with webpack to recompile .js and .css sources.
-config :cloudfire, CloudfireWeb.Endpoint,
+config :cf_phx, CfPhxWeb.Endpoint,
http: [port: 4000],
debug_errors: true,
code_reloader: true,
@@ -55,13 +55,13 @@ config :cloudfire, CloudfireWeb.Endpoint,
# different ports.
# Watch static and templates for browser reloading.
-config :cloudfire, CloudfireWeb.Endpoint,
+config :cf_phx, CfPhxWeb.Endpoint,
live_reload: [
patterns: [
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
~r"priv/gettext/.*(po)$",
- ~r"lib/cloudfire_web/(live|views)/.*(ex)$",
- ~r"lib/cloudfire_web/templates/.*(eex)$"
+ ~r"lib/cf_phx_web/(live|views)/.*(ex)$",
+ ~r"lib/cf_phx_web/templates/.*(eex)$"
]
]
diff --git a/config/prod.exs b/config/prod.exs
index b6893d719..6b249883a 100644
--- a/config/prod.exs
+++ b/config/prod.exs
@@ -9,7 +9,7 @@ import Config
# manifest is generated by the `mix phx.digest` task,
# which you should run after static files are built and
# before starting your production server.
-config :cloudfire, CloudfireWeb.Endpoint,
+config :cf_phx, CfPhxWeb.Endpoint,
url: [host: "example.com", port: 80],
cache_static_manifest: "priv/static/cache_manifest.json"
@@ -21,7 +21,7 @@ config :logger, level: :info
# To get SSL working, you will need to add the `https` key
# to the previous section and set your `:url` port to 443:
#
-# config :cloudfire, CloudfireWeb.Endpoint,
+# config :cf_phx, CfPhxWeb.Endpoint,
# ...
# url: [host: "example.com", port: 443],
# https: [
@@ -45,7 +45,7 @@ config :logger, level: :info
# We also recommend setting `force_ssl` in your endpoint, ensuring
# no data is ever sent via http, always redirecting to https:
#
-# config :cloudfire, CloudfireWeb.Endpoint,
+# config :cf_phx, CfPhxWeb.Endpoint,
# force_ssl: [hsts: true]
#
# Check `Plug.SSL` for all available options in `force_ssl`.
diff --git a/config/prod.secret.exs b/config/prod.secret.exs
index 35bb7d39b..1f0f777ea 100644
--- a/config/prod.secret.exs
+++ b/config/prod.secret.exs
@@ -11,7 +11,7 @@ database_url =
For example: ecto://USER:PASS@HOST/DATABASE
"""
-config :cloudfire, Cloudfire.Repo,
+config :cf_phx, CfPhx.Repo,
# ssl: true,
url: database_url,
pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10")
@@ -23,7 +23,7 @@ secret_key_base =
You can generate one by calling: mix phx.gen.secret
"""
-config :cloudfire, CloudfireWeb.Endpoint,
+config :cf_phx, CfPhxWeb.Endpoint,
http: [
port: String.to_integer(System.get_env("PORT") || "4000"),
transport_options: [socket_opts: [:inet6]]
@@ -35,7 +35,7 @@ config :cloudfire, CloudfireWeb.Endpoint,
# If you are doing OTP releases, you need to instruct Phoenix
# to start each relevant endpoint:
#
-config :cloudfire, CloudfireWeb.Endpoint, server: true
+config :cf_phx, CfPhxWeb.Endpoint, server: true
#
# Then you can assemble a release by calling `mix release`.
# See `mix help release` for more information.
diff --git a/config/test.exs b/config/test.exs
index f1585dd64..fe0d4df0e 100644
--- a/config/test.exs
+++ b/config/test.exs
@@ -20,11 +20,11 @@ end
# Configure your database
db_url = System.get_env("DATABASE_URL")
-config :cloudfire, Cloudfire.Repo, DBConfig.config(db_url)
+config :cf_phx, CfPhx.Repo, DBConfig.config(db_url)
# We don't run a server during test. If one is required,
# you can enable the server option below.
-config :cloudfire, CloudfireWeb.Endpoint,
+config :cf_phx, CfPhxWeb.Endpoint,
http: [port: 4002],
server: false
diff --git a/mix.exs b/mix.exs
index 3019c64b2..35d7f81f1 100644
--- a/mix.exs
+++ b/mix.exs
@@ -6,7 +6,15 @@ defmodule CloudfireUmbrella.MixProject do
apps_path: "apps",
version: "0.1.0",
start_permanent: Mix.env() == :prod,
- deps: deps()
+ deps: deps(),
+ releases: [
+ bundled: [
+ applications: [
+ cf_phx: :permanent,
+ firewall_daemon: :permanent
+ ]
+ ]
+ ]
]
end