This commit is contained in:
commit
3b272fa031
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/httpd-ldap
|
10
Dockerfile
Normal file
10
Dockerfile
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
FROM httpd:alpine
|
||||||
|
|
||||||
|
RUN mkdir /srv/www
|
||||||
|
|
||||||
|
COPY assets /usr/local/apache2/conf/assets
|
||||||
|
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
44
assets/listing.css
Normal file
44
assets/listing.css
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#search-field {
|
||||||
|
width: 100%;
|
||||||
|
border: none;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
background: #eee8d5;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.indexbreakrow {
|
||||||
|
display: none;
|
||||||
|
}
|
32
assets/listing.js
Normal file
32
assets/listing.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
let searchField = document.createElement('input')
|
||||||
|
searchField.id = 'search-field'
|
||||||
|
searchField.autofocus = true
|
||||||
|
document.querySelector('body').insertBefore(searchField, document.querySelector('table'))
|
||||||
|
|
||||||
|
const rows = [...document.querySelectorAll('tr.even, tr.odd')]
|
||||||
|
|
||||||
|
pdLink = rows[0].querySelector('.indexcolname a')
|
||||||
|
if (pdLink.innerText == 'Parent Directory') {
|
||||||
|
pdLink.href = '../'
|
||||||
|
pdLink.text = '..'
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelector('#search-field').addEventListener("input", e => {
|
||||||
|
const searchValue = e.target.value.toLowerCase()
|
||||||
|
rows.forEach(row => {
|
||||||
|
console.log(row)
|
||||||
|
const file = row.querySelector('.indexcolname a').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/" \
|
||||||
|
/usr/local/apache2/conf/httpd.conf
|
||||||
|
|
||||||
|
exec httpd-foreground
|
51
httpd.conf
Normal file
51
httpd.conf
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
ServerRoot "/usr/local/apache2"
|
||||||
|
ServerName "localhost"
|
||||||
|
Listen 80
|
||||||
|
|
||||||
|
LoadModule mpm_event_module modules/mod_mpm_event.so
|
||||||
|
|
||||||
|
LoadModule auth_basic_module modules/mod_auth_basic.so
|
||||||
|
LoadModule authn_core_module modules/mod_authn_core.so
|
||||||
|
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
|
||||||
|
LoadModule authz_core_module modules/mod_authz_core.so
|
||||||
|
LoadModule authz_user_module modules/mod_authz_user.so
|
||||||
|
LoadModule ldap_module modules/mod_ldap.so
|
||||||
|
|
||||||
|
LoadModule mime_module modules/mod_mime.so
|
||||||
|
LoadModule unixd_module modules/mod_unixd.so
|
||||||
|
LoadModule autoindex_module modules/mod_autoindex.so
|
||||||
|
LoadModule alias_module modules/mod_alias.so
|
||||||
|
|
||||||
|
User daemon
|
||||||
|
Group daemon
|
||||||
|
|
||||||
|
DocumentRoot "/srv/www"
|
||||||
|
<Directory "/srv/www">
|
||||||
|
Options Indexes FollowSymLinks
|
||||||
|
IndexOptions FancyIndexing
|
||||||
|
IndexOptions HTMLTable
|
||||||
|
IndexOptions SuppressColumnsorting
|
||||||
|
IndexOptions SuppressLastModified
|
||||||
|
IndexOptions SuppressDescription
|
||||||
|
IndexOptions SuppressHTMLPreamble
|
||||||
|
IndexOptions SuppressIcon
|
||||||
|
IndexStyleSheet "/directory-listing-assets/listing.css"
|
||||||
|
IndexHeadInsert "<script src=\"/directory-listing-assets/listing.js\"></script>"
|
||||||
|
|
||||||
|
AuthName "files"
|
||||||
|
AuthBasicProvider ldap
|
||||||
|
AuthType Basic
|
||||||
|
|
||||||
|
AuthLDAPURL "ldap://@@LDAP_SERVER@@/@@LDAP_BASE@@" "STARTTLS"
|
||||||
|
AuthLDAPBindDN "@@LDAP_USER@@"
|
||||||
|
AuthLDAPBindPassword "@@LDAP_PASSWORD@@"
|
||||||
|
|
||||||
|
Require valid-user
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
Alias "/directory-listing-assets" "/usr/local/apache2/conf/assets"
|
||||||
|
|
||||||
|
ErrorLog /proc/self/fd/2
|
||||||
|
LogLevel warn
|
||||||
|
|
||||||
|
TypesConfig conf/mime.types
|
Reference in a new issue