Compare commits

..

15 Commits

Author SHA1 Message Date
448f645f6f dps: Support für authelia_policy=none 2022-11-02 13:05:58 +01:00
a30978d20c dup: Added switch -q / --quiet to disable opening the log after running the new container. 2022-10-27 15:08:11 +02:00
a0bb698c02 Add authelia stuff with descriptions to --sample. 2022-10-27 15:04:26 +02:00
8cad86560d Don't show certificate details. 2022-10-27 15:04:08 +02:00
e2bd375198 Show authelia status. 2022-10-27 15:03:52 +02:00
3af1ffa11a Fix typo: dlr is drl (restart & log). 2022-10-27 15:03:32 +02:00
03b8b4baca Renamed dlr to drl (first Restart, then Logs). 2022-02-15 09:24:00 +01:00
7ff0f28ed4 dup: Message about unset DUP_DIR is now being output to STDERR to prevent it from clobbering up redirections of --sample and stuff. 2021-11-04 11:42:50 +01:00
99370803e3 Better source directory detection. 2021-11-03 16:18:03 +01:00
9a07f9fc74 dstats: Removed debugging code. 2021-11-02 15:34:16 +01:00
28445e30d2 dps: Fixed duplicated ports. 2021-11-02 15:07:30 +01:00
f21c3fdb52 install: Use pwd instead of calculating the local path. 2021-11-02 15:00:15 +01:00
f46b00c896 install: Fix for sh instead of bash. 2021-11-02 14:58:20 +01:00
40ab734bb3 install: Fix. 2021-11-02 14:55:07 +01:00
154e73b291 install: Fixed file mode. 2021-11-02 14:53:41 +01:00
9 changed files with 54 additions and 17 deletions

12
_install.sh Normal file → Executable file
View File

@ -1,14 +1,18 @@
#!/bin/sh
SOURCE=$(dirname $0)
[[ -e "$SOURCE/dbash" ]] || { echo "Please cd to the directory containing this file and try to run _install.sh again." ; exit 1 }
TARGET=/usr/local/bin
SOURCE=$(pwd)
TARGET="/usr/local/bin"
if [ ! -e "$SOURCE/dbash" ]; then
echo "Please cd to the directory containing this file and try to run _install.sh again."
exit 1
fi
ln -sf "$SOURCE/dbash" "$TARGET/dbash"
ln -sf "$SOURCE/dhelp" "$TARGET/dhelp"
ln -sf "$SOURCE/dlogs" "$TARGET/dlogs"
ln -sf "$SOURCE/dlogsl" "$TARGET/dlogsl"
ln -sf "$SOURCE/dlr" "$TARGET/dlr"
ln -sf "$SOURCE/drl" "$TARGET/drl"
ln -sf "$SOURCE/dps.rb" "$TARGET/dps"
ln -sf "$SOURCE/dsh" "$TARGET/dsh"
ln -sf "$SOURCE/dstats" "$TARGET/dstats"

2
dbash
View File

@ -1,5 +1,5 @@
#!/bin/sh
. $(dirname $0)/_get_container.sh
. $(dirname "$(readlink -f "$0")")/_get_container.sh
docker exec -it "$container" /bin/bash

2
dlogs
View File

@ -1,5 +1,5 @@
#!/bin/sh
. $(dirname $0)/_get_container.sh
. $(dirname "$(readlink -f "$0")")/_get_container.sh
docker logs --tail=100 -f "$container"

2
dlogsl
View File

@ -1,5 +1,5 @@
#!/bin/sh
. $(dirname $0)/_get_container.sh
. $(dirname "$(readlink -f "$0")")/_get_container.sh
docker logs -f "$container" 2>&1 | less

22
dps.rb
View File

@ -9,7 +9,7 @@ COLOR_GRAY = ""
COLOR_RESET = ""
class Container
FIELDS = [:state, :dup, :ouroboros, :name, :vhosts, :nginx_allow, :status, :image, :ports]
FIELDS = [:state, :dup, :ouroboros, :name, :vhosts, :authelia, :status, :image, :ports]
@@lengths = Hash.new(0)
def initialize(data)
@ -21,7 +21,7 @@ class Container
set :ouroboros, @data[:Labels][:"com.centurylinklabs.watchtower.enable"]=="true" ? "" : ""
set :name, @data[:Names].first[1..-1]
vh = @data[:Labels][:"nginx_virtual_host"]&.split(",")&.collect(&:strip)
vh = @data[:Labels][:"nginx_virtual_host"]&.split(",")&.map{|h| h.split("@").first.strip}
if vh.nil? || vh.count==0
vh = ""
elsif vh.count==1
@ -45,9 +45,23 @@ class Container
else
"#{COLOR_RED}#{p[:PrivatePort]}->#{p[:PublicPort]}#{type}"
end
end.join(" ")
end.uniq.join(" ")
set :nginx_allow, @data[:Labels][:"nginx_allow"]
#set :nginx_allow, @data[:Labels][:"nginx_allow"]
if vh==""
set :authelia, ""
elsif @data[:Labels][:"authelia_policy"]=="one_factor"
set :authelia, "1#{COLOR_GRAY}FA#{COLOR_RESET}"
elsif @data[:Labels][:"authelia_policy"]=="two_factor"
set :authelia, "2#{COLOR_GRAY}FA#{COLOR_RESET}"
elsif @data[:Labels][:"authelia_policy"]=="bypass"
set :authelia, "#{COLOR_GREEN}BYP#{COLOR_RESET}"
elsif @data[:Labels][:"authelia_policy"]=="none"
set :authelia, "#{COLOR_GREEN}NONE#{COLOR_RESET}"
else
set :authelia, "#{COLOR_RED}?#{COLOR_RESET}"
end
st = @data[:Status]
if st.end_with?("(healthy)")
st = COLOR_GREEN + st.gsub("(healthy)", "(v)") + COLOR_RESET

View File

@ -1,5 +1,5 @@
#!/bin/sh
. $(dirname $0)/_get_container.sh
. $(dirname "$(readlink -f "$0")")/_get_container.sh
docker restart "$container" && docker logs --tail=100 -f "$container"

2
dsh
View File

@ -1,5 +1,5 @@
#!/bin/sh
. $(dirname $0)/_get_container.sh
. $(dirname "$(readlink -f "$0")")/_get_container.sh
docker exec -it "$container" /bin/sh

2
dstats
View File

@ -1,3 +1,3 @@
#!/bin/bash
echo docker stats $(docker inspect --format "{{.Name}}" $(docker ps -q))
docker stats $(docker inspect --format "{{.Name}}" $(docker ps -q))

25
dup.rb
View File

@ -70,14 +70,26 @@ def get_sample(name="container")
- "/etc/localtime:/etc/localtime:ro"
labels:
# Syntax:
# <hostname>: Uses the given hostname and the default cert (*.schle.nz)
# <hostname>@: Uses the given hostname and the cert with the same name
# <hostname>@<cert>: Uses the given hostname and cert
nginx_virtual_host: container.home.schle.nz
nginx_port: 80
nginx_additional_ports: "443, 5050"
nginx_allow: fabian # "user" or "@group" or "user, user, @group" or "all"
nginx_no_robots: true
nginx_public_paths: "/public, /api"
nginx_type: # "http" (default), "https", "fastcgi", "skip" (doesn't create any entries)
nginx_client_max_body_size: "25M"
# Syntax:
# user:<username>
# group:<groupname>
authelia_allow: "user:fabian"
# Policies:
# one_factor
# two_factor
# bypass
authelia_policy: one_factor
networks:
- "nginx"
@ -140,6 +152,7 @@ def action_help
puts " --regenerate Generates YAML content from a running container."
puts " --all Use all containers defined in yml files."
puts "-v, --verbose More verbose output."
puts "-q, --quiet Don't open log after starting a new container."
exit 1
end
@ -424,7 +437,9 @@ class Container
if ! @data["detach"]
self.attach
else
self.log
unless $quiet
self.log
end
end
end
end
@ -464,12 +479,13 @@ needs_container = true
completion_str = ""
silent_basedir = false
$net_host = false
$quiet = false
if ENV['DUP_DIR']
$base_dir = ENV['DUP_DIR']
else
$base_dir = File.join(Dir.home, ".dup")
puts "Environment variable DUP_DIR is not set. Looking for .yml files in #{$base_dir}" unless silent_basedir
STDERR.puts "Environment variable DUP_DIR is not set. Looking for .yml files in #{$base_dir}" unless silent_basedir
end
opts = GetoptLong.new(
@ -485,6 +501,7 @@ opts = GetoptLong.new(
[ '--regenerate', GetoptLong::NO_ARGUMENT ],
[ '--verbose', '-v', GetoptLong::NO_ARGUMENT ],
[ '--all', GetoptLong::NO_ARGUMENT ],
[ '--quiet', '-q', GetoptLong::NO_ARGUMENT ]
)
opts.each do |opt, arg|
@ -520,6 +537,8 @@ opts.each do |opt, arg|
$verbose = true
when '--all'
container = Dir[$base_dir + "/*.yml"].sort.map{|f| Container.new(File.basename(f, ".yml"))}
when '--quiet'
$quiet = true
end
end