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