This commit is contained in:
commit
5f8c1ccd36
13
.drone.yml
Normal file
13
.drone.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
kind: pipeline
|
||||
name: default
|
||||
|
||||
steps:
|
||||
- name: docker
|
||||
image: plugins/docker
|
||||
settings:
|
||||
registry: r.sbruder.de
|
||||
username:
|
||||
from_secret: docker_username
|
||||
password:
|
||||
from_secret: docker_password
|
||||
repo: r.sbruder.de/lighttpd
|
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
@ -0,0 +1,13 @@
|
|||
FROM alpine
|
||||
|
||||
RUN apk add --no-cache \
|
||||
ca-certificates \
|
||||
lighttpd \
|
||||
lighttpd-mod_auth \
|
||||
lighttpd-mod_webdav
|
||||
|
||||
COPY lighttpd.conf /etc/lighttpd/lighttpd.conf
|
||||
COPY assets /etc/lighttpd/assets
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
48
assets/listing.css
Normal file
48
assets/listing.css
Normal file
|
@ -0,0 +1,48 @@
|
|||
body,html {
|
||||
background-color: #fdf6e3;
|
||||
color: #657b83;
|
||||
font-family: "TeX Gyre Heros", "Roboto", "Helvetica", "Arial", sans-serif;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background: #eee8d5;
|
||||
}
|
||||
|
||||
th,td {
|
||||
padding: 0.1em 0.5em;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
background: #eee8d5;
|
||||
border-bottom: 1px solid #657b83;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #586e75;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #073642;
|
||||
}
|
||||
|
||||
.m, .t {
|
||||
display: none;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.foot {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#search-field {
|
||||
width: 100%;
|
||||
border: none;
|
||||
margin-bottom: 15px;
|
||||
background: #eee8d5;
|
||||
color: inherit;
|
||||
}
|
27
assets/listing.js
Normal file
27
assets/listing.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
let searchField = document.createElement('input')
|
||||
searchField.id = 'search-field'
|
||||
searchField.autofocus = true
|
||||
document.querySelector('.list').insertBefore(searchField, document.querySelector('table'))
|
||||
|
||||
try {
|
||||
document.querySelector('a[href="../"]').innerText = '..'
|
||||
} catch (e) {}
|
||||
|
||||
const rows = [...document.querySelectorAll('tbody tr')]
|
||||
|
||||
document.querySelector('#search-field').addEventListener("input", e => {
|
||||
const searchValue = e.target.value.toLowerCase()
|
||||
rows.forEach(row => {
|
||||
const file = row.querySelector('td').innerText
|
||||
if (!file.toLowerCase().startsWith(searchValue)) {
|
||||
row.style.display = 'none'
|
||||
} else {
|
||||
row.style.display = 'table-row'
|
||||
}
|
||||
})
|
||||
|
||||
const visibleRows = [...document.querySelectorAll('tr[style="display: table-row;"]')]
|
||||
if (visibleRows.length === 1) {
|
||||
window.location = visibleRows[0].querySelector('td a').href
|
||||
}
|
||||
})
|
9
entrypoint.sh
Executable file
9
entrypoint.sh
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/ash
|
||||
sed -i \
|
||||
-e "s/@@LDAP_SERVER@@/$LDAP_SERVER/" \
|
||||
-e "s/@@LDAP_BASE@@/$LDAP_BASE/" \
|
||||
-e "s/@@LDAP_USER@@/$LDAP_USER/" \
|
||||
-e "s/@@LDAP_PASSWORD@@/$LDAP_PASSWORD/" \
|
||||
/etc/lighttpd/lighttpd.conf
|
||||
|
||||
lighttpd -D -f /etc/lighttpd/lighttpd.conf
|
52
lighttpd.conf
Normal file
52
lighttpd.conf
Normal file
|
@ -0,0 +1,52 @@
|
|||
server.modules = (
|
||||
"mod_alias",
|
||||
"mod_webdav",
|
||||
"mod_auth",
|
||||
"mod_authn_ldap",
|
||||
)
|
||||
|
||||
include "mime-types.conf"
|
||||
|
||||
server.username = "lighttpd"
|
||||
server.groupname = "lighttpd"
|
||||
|
||||
server.document-root = "/srv/www"
|
||||
|
||||
server.indexfiles = ("index.html", "index.htm")
|
||||
|
||||
server.follow-symlink = "enable"
|
||||
|
||||
alias.url = ("/directory-listing-assets/" => "/etc/lighttpd/assets/")
|
||||
|
||||
dir-listing.activate = "enable"
|
||||
dir-listing.encoding = "utf-8"
|
||||
dir-listing.external-css = "/directory-listing-assets/listing.css"
|
||||
dir-listing.external-js = "/directory-listing-assets/listing.js"
|
||||
|
||||
webdav.activate = "enable"
|
||||
webdav.is-readonly = "enable"
|
||||
|
||||
auth.backend = "ldap"
|
||||
auth.backend.ldap.hostname = "@@LDAP_SERVER@@"
|
||||
auth.backend.ldap.base-dn = "@@LDAP_BASE@@"
|
||||
auth.backend.ldap.filter = "(uid=$)"
|
||||
auth.backend.ldap.starttls = "enable"
|
||||
auth.backend.ldap.bind-dn = "@@LDAP_USER@@"
|
||||
auth.backend.ldap.bind-pw = "@@LDAP_PASSWORD@@"
|
||||
|
||||
#auth.require = ( "/" =>
|
||||
# (
|
||||
# "method" => "basic",
|
||||
# "realm" => "media",
|
||||
# "require" => "valid-user"
|
||||
# )
|
||||
# )
|
||||
$HTTP["url"] !~ "^/directory-listing-assets/" {
|
||||
auth.require = ( "" =>
|
||||
(
|
||||
"method" => "basic",
|
||||
"realm" => "media",
|
||||
"require" => "valid-user"
|
||||
)
|
||||
)
|
||||
}
|
Reference in a new issue