Clinton Ebadi [Mon, 12 Nov 2018 01:52:06 +0000 (20:52 -0500)]
apache: use HTTP for mod_auth_kerb service principal
HTTP/host is the hardcoded service name that the negotitate auth
method requires, which is why it has never worked here. Switch to the
expected service name going forward.
Clinton Ebadi [Sun, 21 Oct 2018 22:44:58 +0000 (18:44 -0400)]
main: filter _darcs when assembling set of files in .domtool
At least one member is attempting to use darcs to track their config,
make domtool skip _darcs as if it were a dotfile.
Clinton Ebadi [Sun, 21 Oct 2018 22:09:44 +0000 (18:09 -0400)]
hcoop: enable gibran as a dns server
Generate nodes there by default, will become master soon.
Clinton Ebadi [Sun, 21 Oct 2018 17:09:10 +0000 (13:09 -0400)]
lib: add outpost ipv6 address
Clinton Ebadi [Sun, 14 Oct 2018 22:36:05 +0000 (18:36 -0400)]
domtool-public: workaround mailman plugin deficiencies
The mailman plugin only generates mailman_domains.cfg on the server
that also runs the mailman web interface, so there's no way for a
secondary mail server to know which addresses need to be relayed to
the exim server that runs mailman.
Reworking the mailman plugin would be a bit involved, and it's fairly
low priority so work around for now by setting
/var/domtool/mailman_domains.cfg immutable on the affected servers,
and ignoring if the touch during redo_exim() fails.
If/when the plugin is updated, there is a secondary issue of copying
the mailmandb to all nodes since it is generated locally on the
mailman server. Lists could be managed by domtool, or even just a new
command to trigger an rsync of the mailmandb to afs and then to all
mail nodes when lists are changed should work (IIRC, it is only
changed when lists are added or removed).
Clinton Ebadi [Sun, 14 Oct 2018 22:24:06 +0000 (18:24 -0400)]
postgres: rename dbms postgres-9.1 to postgres-9
This will actually be postgres 9.6 now, data is automatically being
migrated as there are no major incompatibilities (unlike 8.1 -> 9.1
which had a wire protocol break).
Clinton Ebadi [Sun, 14 Oct 2018 19:23:12 +0000 (15:23 -0400)]
apache: remove php5-cgi support, always generate php config
Only fastcgi php is supported going forward since suphp has long been
deprecated.
Config.Apache.defaultPhpVersion has been removed; since PhpVersion
will always be specified, there is no reason for domtool not to
explicitly generate config instead of relying on the ambient apache
config to set default handlers for php.
The kerberos/afs fastcgi wrapper is suppressed on non-waklog systems,
but ONLY when php is configured from PhpVersion in the vhost as a
whole; the phpVersion and fastScriptAlias actions don't have access to
the node they are being generated on, and can't detect that waklog is
not supported. Will need to be fixed eventually...
Clinton Ebadi [Sun, 14 Oct 2018 18:55:40 +0000 (14:55 -0400)]
lib: switch from php5 to fast_php by default
cgi based php5 is being removed
Clinton Ebadi [Fri, 12 Oct 2018 05:12:28 +0000 (01:12 -0400)]
domtool-publish: try to grab tokens if aklog is available
sudo on Debian Jessie and later drops tokens (but not kerberos
tickets), make sure to refresh tokens so syncing files from afs
doesn't fail.
Clinton Ebadi [Thu, 6 Sep 2018 01:42:05 +0000 (21:42 -0400)]
lib: add webSsl directive
Allows sharing config between http/https vhosts and optionally can
force https.
Clinton Ebadi [Sat, 11 Aug 2018 19:03:35 +0000 (15:03 -0400)]
bootstrap: install default domtool library when bootstrapping
Clinton Ebadi [Sat, 11 Aug 2018 18:24:07 +0000 (14:24 -0400)]
bootstrap: fix a few more bootstrap bugs
domtool user creation is actually optional for development/testing
builds
ensure build-tree versions of programs are used when bootstrapping to
avoid need to install.
should be possible to run without installing now.
Clinton Ebadi [Sat, 11 Aug 2018 18:04:27 +0000 (14:04 -0400)]
bootstrap: use locally built domtool-config when creating local-root
Was unintentionally calling system-wide domtool-config
Clinton Ebadi [Sat, 11 Aug 2018 16:52:44 +0000 (12:52 -0400)]
bootstrap: include sudoers file for non-hcoop setups
domtool needs sudo for certain scripts to actually publish scripts.
Clinton Ebadi [Sun, 8 Jul 2018 00:22:39 +0000 (20:22 -0400)]
apache: only generate suphp directives when it will be used
suPHP directives should not be added when using fast_php, breaks when
using apache 2.4 with no suphp extension present.
Clinton Ebadi [Sat, 7 Jul 2018 23:31:33 +0000 (19:31 -0400)]
hcoop: allow proxying to marsh
new shell server, members may run proxied daemons here.
Clinton Ebadi [Sat, 7 Jul 2018 23:30:23 +0000 (19:30 -0400)]
hcoop: add minsky as admin web node
Will be needed when mailman is moved to minsky.
Clinton Ebadi [Sat, 7 Jul 2018 23:29:00 +0000 (19:29 -0400)]
hcoop: add new server shelob.hcoop.net
New webserver, to replace navajos.
Clinton Ebadi [Sat, 7 Jul 2018 23:28:05 +0000 (19:28 -0400)]
lib: typo fix
Clinton Ebadi [Mon, 23 Apr 2018 04:41:35 +0000 (00:41 -0400)]
hcoop: enable `minsky' as a mail node for all members
Will not be enabled as MX yet, but ready to receive config
Clinton Ebadi [Mon, 23 Apr 2018 04:38:58 +0000 (00:38 -0400)]
setsa: enable spam checking on admin mail nodes
No reason not to generate the addrs file, if spamassassin is not
installed it has no effect, and we want spam checking if it is.
Clinton Ebadi [Mon, 23 Apr 2018 03:53:33 +0000 (23:53 -0400)]
create files domtool needs to modify as domtool
Clinton Ebadi [Mon, 23 Apr 2018 03:19:47 +0000 (23:19 -0400)]
hcoop: new node `minsky'
Add as admin-only mail node for testing
Clinton Ebadi [Mon, 23 Apr 2018 03:16:50 +0000 (23:16 -0400)]
domtool-publish: ensure mail files exist before using
empty values are ok here, and better than failing
Clinton Ebadi [Mon, 23 Apr 2018 03:16:09 +0000 (23:16 -0400)]
domtool-publish: use `service' instead of `/etc/init.d'
More compatible with sysvinit and systemd
Clinton Ebadi [Fri, 20 Apr 2018 04:55:50 +0000 (00:55 -0400)]
hcoop: rename quag -> marsh
Clinton Ebadi [Fri, 20 Apr 2018 04:02:07 +0000 (00:02 -0400)]
fwtool: fix dns lookups
dig +short actually returns the ip with any cname, recursion bit was
wrong.
Clinton Ebadi [Fri, 20 Apr 2018 02:23:27 +0000 (22:23 -0400)]
firewall: fix generation of outgoing rules on webserver
Was not concatenating domain suffix and was filtered out.
Clinton Ebadi [Fri, 20 Apr 2018 01:22:13 +0000 (21:22 -0400)]
fwtool: filterHosts fixes
* Use FQDN for domtool nodes in case they have IPv6 addresses
* Allow ferm variables in hosts lists (for `$WEBNODES')
* Split 127.0.0.1 and :::1 rules (filterHosts will remove the one we
don't want)
Clinton Ebadi [Fri, 20 Apr 2018 00:22:41 +0000 (20:22 -0400)]
fwtool: generate rules in primary input/output chain
Using a single chain integrates with Puppet better, allowing it to
manage chains by default and fwtool rules being added to a pair of
explicitly unmanaged chains. If ferm is managing the entire firewall,
there's not much clarity lost over jumping to external user chains.
Adds a comment with the username to input/output rules as
well (missing from input before).
Clinton Ebadi [Thu, 19 Apr 2018 05:27:08 +0000 (01:27 -0400)]
fwtool: initial ipv6 support and puppet integration
Not the prettiest, but it works.
Just duplicates the firewall between ipv4 and ipv6, making sure to
filter out any hostnames that aren't resolvable in each domain.
ProxiedServer doesn't work over IPv6 yet due to nodes not having that
information, will need to be fixed for proxied web services to work.
domtool-publish has a new action, firewallpuppet, that will reload the
firewall for our new setup (and fall back to just reloading ferm on
the current one). Further work is required for puppet; we are purging
unmanaged chains and will need to move all rules into a single chain
instead of jumping to a different chain per user.
Clinton Ebadi [Thu, 19 Apr 2018 05:23:58 +0000 (01:23 -0400)]
fwtool: allow multiple nodes per rule
Clinton Ebadi [Thu, 19 Apr 2018 05:20:49 +0000 (01:20 -0400)]
worker: add runOutput function
similar to shellOutput, but uses Unix.execute directly instead of
using bash, and returns both the return status and any output
Clinton Ebadi [Thu, 19 Apr 2018 05:20:10 +0000 (01:20 -0400)]
domain: export validIpv6 and validIp
Clinton Ebadi [Thu, 19 Apr 2018 02:19:32 +0000 (22:19 -0400)]
hcoop: disable gibran as dns server
server not quite ready
Clinton Ebadi [Thu, 19 Apr 2018 02:17:10 +0000 (22:17 -0400)]
hcoop: new server quag.hcoop.net
Runs fwtool
Clinton Ebadi [Tue, 17 Apr 2018 03:17:23 +0000 (23:17 -0400)]
add new server `gibran'
Enable as DNS server for admins for testing
Clinton Ebadi [Tue, 17 Apr 2018 03:16:30 +0000 (23:16 -0400)]
lib/moin: update for 1.9.9, fix config order
User provided config must go after moin ScriptAlias on "/", otherwise
user aliases will never match.
Clinton Ebadi [Sat, 14 Apr 2018 04:51:42 +0000 (00:51 -0400)]
mail: fix vmailpasswd compilation warnings
Clinton Ebadi [Sat, 14 Apr 2018 04:49:10 +0000 (00:49 -0400)]
config: warn that changing localRoot will not work currently
Clinton Ebadi [Sat, 14 Apr 2018 04:48:28 +0000 (00:48 -0400)]
add bin/ to repository
needed for build to succeed, exclusion was an oversight
Clinton Ebadi [Sat, 14 Apr 2018 04:26:25 +0000 (00:26 -0400)]
create /var/domtool on install
And warn that changing localRoot won't work, yet.
Clinton Ebadi [Sat, 14 Apr 2018 03:49:17 +0000 (23:49 -0400)]
add rules to install systemd units
Clinton Ebadi [Mon, 9 Apr 2018 23:06:38 +0000 (19:06 -0400)]
openssl: fix building with openssl 1.1 and later
Patch provided by Robin Templeton <robin@hcoop.net>
Clinton Ebadi [Wed, 1 Feb 2017 02:30:31 +0000 (21:30 -0500)]
web_apps: don't instantiate php5 in wordPress
interferes with fastcgi / hasn't been needed since the ancient times
Clinton Ebadi [Wed, 1 Feb 2017 02:22:16 +0000 (21:22 -0500)]
apache: improved fastScriptAlias
Implementation using Alias + <Location> proved unworkable -- Apache
has an obnoxious property wherein Aliases are first match and
Locations are last match, causing all sorts of exciting
side-effects (e.g. having to add a `<Location>SetHandler
None</Location>' afterward for any aliases that otherwise would have
matched).
A directory + file match however works and does not cause strange
alias behavior.
Also fix not stripping trailing `/' when setting up wrapper.
Clinton Ebadi [Tue, 31 Jan 2017 06:10:23 +0000 (01:10 -0500)]
apache: pass script to fastcgi wrapper
Clinton Ebadi [Tue, 31 Jan 2017 06:08:58 +0000 (01:08 -0500)]
apache: fix missing newline in fastScriptAlias
Clinton Ebadi [Tue, 31 Jan 2017 05:46:25 +0000 (00:46 -0500)]
apache: Implement fastcgi alias support
New directive `fastScriptAlias from to' works like `scriptAlias' but
using mod_fcgid.
Clinton Ebadi [Tue, 31 Jan 2017 05:50:52 +0000 (00:50 -0500)]
webapps/moin: inject custom config before moin config
In Apache land, first matching alias wins and we're aliasing `/' to
moin so injecting user config after that deprives them of the ability
to customize aliases. Reverse configuration so they stand a chance.
Clinton Ebadi [Tue, 31 Jan 2017 05:52:43 +0000 (00:52 -0500)]
apache: limit php-fastcgi to php
AddHandler to php extensions instead of making the php wrapper the
default mod_fcgid wrapper to avoid weird/insecure behavior.
Also fix `phpVersion' action.
Clinton Ebadi [Sun, 29 Jan 2017 03:21:30 +0000 (22:21 -0500)]
apache: fastcgi config core, implement php5-cgi fastcgi
New fastcgi wrapper configuration to set up environment for user to
run fastcgi scripts.
Implemented support for using fastcgi with php5-cgi using version 6
since it does not exist in the real world. phpFastCgiWrapper is site
specific and should set whatever php environment variables are needed
and exec php5-cgi. This does not work with php-fpm, only old-style
php5-cgi in fastcgi mode with mod_fcgid.
todo: general fastcgi directives
Clinton Ebadi [Mon, 12 Dec 2016 04:15:05 +0000 (23:15 -0500)]
apache: core directive AllowEncodedSlashes
Allow members to set the safe NoDecode mode instead of unequivocally
rejecting URLs with encoded slashes. "On" is not supported because we do
not want to allow encoded urls to access arbitrary directories (not sure
if it's paranoia, but the apache docs discourage it).
https://bugzilla.hcoop.net/show_bug.cgi?id=1220
https://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes
Clinton Ebadi [Wed, 28 Sep 2016 02:02:08 +0000 (22:02 -0400)]
hcoop: remove hopper from config
Clinton Ebadi [Thu, 22 Oct 2015 03:26:36 +0000 (23:26 -0400)]
lib: add binding for new notfound mod_rewrite flag
Joseph Yaworski [Wed, 21 Oct 2015 22:23:21 +0000 (18:23 -0400)]
Add 404 to possible redirect codes in mod_rewrite
Clinton Ebadi [Thu, 22 Oct 2015 03:12:05 +0000 (23:12 -0400)]
hcoop: update library defaults
deleuze is no more
Clinton Ebadi [Wed, 2 Sep 2015 00:20:05 +0000 (20:20 -0400)]
Remove deleuze from configuration
Clinton Ebadi [Sun, 24 May 2015 23:38:32 +0000 (19:38 -0400)]
mailman: temporarily disable suexec, allow access to public archives
Debian Jessie suexec + mailman aren't playing nicely with each other
-- leave suexec disabled for now. Apache 2.4 also needs "require all
granted" to allow any access to a directory -- added for the public
list archives folder.
Clinton Ebadi [Sat, 23 May 2015 19:55:39 +0000 (15:55 -0400)]
doc: correct apache docs link for allow/deny/order
Clinton Ebadi [Sat, 23 May 2015 17:50:57 +0000 (13:50 -0400)]
mod_proxy: add retry=0 to ProxyPass
Wheezy's apache will not retry a backend for 60s after two failures,
which results in surprising behavior for members used to the behavior
on previous apache versions.
Clinton Ebadi [Sat, 23 May 2015 17:45:47 +0000 (13:45 -0400)]
doc: rename proxy/url to match other modules
Clinton Ebadi [Fri, 22 May 2015 13:50:54 +0000 (09:50 -0400)]
autodoc: fix css and image paths to automatically use ssl
hcoop.net is ssl-only now and the css cannot be loaded from
http://. Use a relative path instead.
Clinton Ebadi [Fri, 15 May 2015 19:37:14 +0000 (15:37 -0400)]
Fix typo in config
Clinton Ebadi [Fri, 15 May 2015 19:33:13 +0000 (15:33 -0400)]
Move mailman to mccarthy.hcoop.net
Clinton Ebadi [Fri, 15 May 2015 18:32:30 +0000 (14:32 -0400)]
don't complain about $user.daemon missing a domtool dir
Not committed to this yet, but current hcoop.daemon exists with no
path or other permissions simply to allow queries to domtool and
management of vmail accounts. Ignore lack of .domtool directory.
Clinton Ebadi [Thu, 14 May 2015 05:04:12 +0000 (01:04 -0400)]
Enable mccarthy as mailnode for all users
Clinton Ebadi [Tue, 12 May 2015 22:30:33 +0000 (18:30 -0400)]
Set fritz as default DNS master, make deleuze a default slave
ns1.hcoop.net is moving to fritz, set as default internalMaster. Keep
deleuze as a default slave for transition as some members are using
deleuze.hcoop.net at their registrar.
Clinton Ebadi [Tue, 12 May 2015 22:24:27 +0000 (18:24 -0400)]
Add mccarthy, enable for mail use by users with priv mail
Clinton Ebadi [Sat, 18 Apr 2015 22:25:37 +0000 (18:25 -0400)]
systemd service files for server/slave
Welcome to the future, whether we like or not.
Service files should provide functionality similar to the current init
scripts. Current no service monitoring is implemented (if possible,
regularly `domtool-admin ping'ing service and restarting if no response
would be nice).
/var/log/domtool.log is gone, replaced by use of the system journal.
Clinton Ebadi [Wed, 4 Mar 2015 06:38:47 +0000 (01:38 -0500)]
Add ProxyPreserveHost apache directive
* Link other proxy directives to apache docs while I'm at it.
Clinton Ebadi [Thu, 1 Jan 2015 04:19:51 +0000 (23:19 -0500)]
Add fritz as a dns node and enable as a slave
Master DNS will be moving to fritz in the near future.
Clinton Ebadi [Thu, 1 Jan 2015 04:13:47 +0000 (23:13 -0500)]
Update proxy.dtl with new proxy_reverse_target type
Clinton Ebadi [Tue, 25 Nov 2014 01:24:33 +0000 (20:24 -0500)]
Release
Clinton Ebadi [Tue, 25 Nov 2014 01:24:21 +0000 (20:24 -0500)]
Support ! as a ProxyPass target
Reported by notd, ProxyPass can take ! to indicate not to proxy
anything under a path. Split proxy_target and proxy_reverse_target
types since ProxyPassReverse does not allow ! as a target.
Clinton Ebadi [Tue, 7 Oct 2014 03:21:57 +0000 (23:21 -0400)]
Release
Clinton Ebadi [Tue, 7 Oct 2014 03:17:40 +0000 (23:17 -0400)]
portal: return success/failure of changing vmail password
I hear it's useful to tell the difference between failure and success.
Clinton Ebadi [Mon, 6 Oct 2014 04:13:45 +0000 (00:13 -0400)]
Release
Clinton Ebadi [Mon, 6 Oct 2014 04:13:29 +0000 (00:13 -0400)]
apt: Handle Description-en replacing Description in apt-cache output
Ideally we'd care about languages other than English, but this works.
Clinton Ebadi [Mon, 6 Oct 2014 03:45:12 +0000 (23:45 -0400)]
Release
Clinton Ebadi [Mon, 6 Oct 2014 03:44:32 +0000 (23:44 -0400)]
reset error state before generating basis library
Errors occuring during publishing in the dispatcher can leak into the
next run. Reset the error state in basis to avoid returning an empty
basis library now that it is evaluated at each MsgConfig.
This may be the wrong solution -- not sure why errors get to hang
around after a run anyway.
Clinton Ebadi [Mon, 6 Oct 2014 03:16:04 +0000 (23:16 -0400)]
scripts: Fix lazy chown syntax
user.group doesn't work when user has a dot in it. Use : in
domtool-addcert, and update other scripts for consistency.
Clinton Ebadi [Mon, 6 Oct 2014 03:14:38 +0000 (23:14 -0400)]
vmailpasswd: fix bad interpreter
Clinton Ebadi [Mon, 6 Oct 2014 03:14:25 +0000 (23:14 -0400)]
portal: Use readLine and not getPass when stdin is not a terminal
It is way harder than neccessary to make the portal call
domtool-portal when it spews output. Just assume input produced via a
pipe is from a program that knows what it is doing.
Clinton Ebadi [Mon, 6 Oct 2014 03:13:06 +0000 (23:13 -0400)]
client: function to check if stdin is a tty
Clinton Ebadi [Sun, 5 Oct 2014 00:48:39 +0000 (20:48 -0400)]
Client.getPass: catch syserror inval when detecting non-tty use
libc in Debian before Jessie returns einval instead of enotty
Clinton Ebadi [Fri, 9 May 2014 09:50:34 +0000 (05:50 -0400)]
Remove mccarthy as node before release
It's not actually ready yet, and we have to release now.
Clinton Ebadi [Fri, 9 May 2014 09:43:31 +0000 (05:43 -0400)]
Change DefaultAliasSource to $user@hcoop.net, add defaultMailUser extern
* The type checker can be annoying, but I am not capable of the feats
of hacking required to make it expand externs at type checking
time (nor am I certain that's even a good idea)
* Feature idea: allow binding a name passed to registerFunction in
multiple `extern val' declarations. Extern already assumes the
extern will be correctly type, so there's no additional peril.
Clinton Ebadi [Fri, 9 May 2014 08:41:29 +0000 (04:41 -0400)]
Client.getpass: allow use on non-tty devices
Warn user the password will be echoed just in case. This allows
getpass to be used with input piped to it (e.g. from the hcoop members
portal).
Clinton Ebadi [Fri, 9 May 2014 08:40:31 +0000 (04:40 -0400)]
Add vmail command for changing password when you know the current password
Not 100% sure if this the best way, but the members portal was tied to
*the* mail node, which is not good to begin with, and breaks when
there are multiple mail nodes.
* Replaces vmailpasswd.c, which is an awful program (passed password on
the command line revealing it to `ps' and only supports a local
filesystem userdb).
* Restricted to users with the priv `vmail' for now, and only used by
the portal. Not much worth in exposing generally it seems (vmail
users cannot login to any shell machines, at least at hcoop)
* Includes helper python program to run crypt() (better than C at
least...)
* New function to parse the userdb into a StringMap (a better
approach is possible, similar to the Vmail.list). Will be used to
compile the database for Dovecot later.
* New binary `domtool-portal' to expose replacement vmailpasswd command
Clinton Ebadi [Tue, 6 May 2014 23:54:09 +0000 (19:54 -0400)]
Manage spamassassin preferences in shared space
Clinton Ebadi [Tue, 6 May 2014 23:52:41 +0000 (19:52 -0400)]
Disentangle vmail from the mail node, Prepare for dovecot support
* Use new Slave.run and Connect.commandWorker where possible
* Always reload vmail db in worker, never in dispatcher
* Move non-courier-specific configuration variables to Config.Vmail.
The master userdb is still managed using courier-authlib-userdb.
* Manage vmail db in afs, syncing as needed.
Clinton Ebadi [Tue, 6 May 2014 23:20:29 +0000 (19:20 -0400)]
domtool-config: print errors on stderr, return failure code, export vmaildb
Clinton Ebadi [Tue, 6 May 2014 23:19:17 +0000 (19:19 -0400)]
Slave.run: run a command using Unix.execute
Similar to Slave.shell, only it passes the arguments list directly to
Unix.execute.
Clinton Ebadi [Tue, 6 May 2014 23:17:46 +0000 (19:17 -0400)]
Connection utilities (or: copying and pasting code is bad)
Finally get around to factoring out functions to connect to the
dispatcher, connect to a worker, and send a "simple" message to
workers (one where MsgOk/MsgError are the only valid replies).
Clinton Ebadi [Fri, 2 May 2014 03:47:31 +0000 (23:47 -0400)]
mod_auth_kerb: Enabled KDC Verification and Negotiate
Every <Location> that enables kerberos auth has to include the
keytab/service declarations. Since we're verifying the KDC, allow
gssapi negotiate.
Clinton Ebadi [Tue, 29 Apr 2014 07:14:11 +0000 (03:14 -0400)]
Add mccarthy as admin web server and mail node
Clinton Ebadi [Tue, 29 Apr 2014 07:10:21 +0000 (03:10 -0400)]
New `make install_serverslave' target, don't use sudo in make install_{server,slave}
The dispatcher node is likely also running a worker node, and both
must be stopped before installation or else one of them segfaults when
its binary is overwritten.
Clinton Ebadi [Tue, 29 Apr 2014 01:12:44 +0000 (21:12 -0400)]
Fix domtool-addcert for when user running is not in `wheel'
Domtool on deleuze assumed admin users would be in group
`wheel'. This is no longer true. Instead, make the CA readable only by
root, generate the new keys and certs into a non-afs temp directory,
and then move everything into afs afterward.
Clinton Ebadi [Mon, 28 Apr 2014 23:23:43 +0000 (19:23 -0400)]
Unify web_node/default_node, and provide a default for WebPlaces