summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config-joey.hs11
-rw-r--r--src/Propellor/Property/Ssh.hs18
2 files changed, 24 insertions, 5 deletions
diff --git a/config-joey.hs b/config-joey.hs
index 57a431ca..486863ee 100644
--- a/config-joey.hs
+++ b/config-joey.hs
@@ -13,7 +13,6 @@ import qualified Propellor.Property.Cron as Cron
import qualified Propellor.Property.Sudo as Sudo
import qualified Propellor.Property.User as User
import qualified Propellor.Property.Hostname as Hostname
---import qualified Propellor.Property.Reboot as Reboot
import qualified Propellor.Property.Tor as Tor
import qualified Propellor.Property.Dns as Dns
import qualified Propellor.Property.OpenId as OpenId
@@ -21,7 +20,6 @@ import qualified Propellor.Property.Docker as Docker
import qualified Propellor.Property.Git as Git
import qualified Propellor.Property.Apache as Apache
import qualified Propellor.Property.Postfix as Postfix
-import qualified Propellor.Property.Service as Service
import qualified Propellor.Property.Grub as Grub
import qualified Propellor.Property.Obnam as Obnam
import qualified Propellor.Property.HostingProvider.DigitalOcean as DigitalOcean
@@ -57,6 +55,12 @@ hosts = -- (o) `
& Docker.configured
& Docker.garbageCollected `period` Daily
+
+ -- ssh on some extra ports to deal with horrible networks
+ -- while travelling
+ & alias "travelling.kitenet.net"
+ & Ssh.listenPort 80
+ & Ssh.listenPort 443
-- Orca is the main git-annex build box.
, standardSystem "orca.kitenet.net" Unstable "amd64"
@@ -233,8 +237,7 @@ hosts = -- (o) `
-- Nothing is using http port 80, so listen on
-- that port for ssh, for traveling on bad networks that
-- block 22.
- & "/etc/ssh/sshd_config" `File.containsLine` "Port 80"
- `onChange` Service.restarted "ssh"
+ & Ssh.listenPort 80
-- temp
! Docker.docked hosts "amd64-git-annex-builder"
diff --git a/src/Propellor/Property/Ssh.hs b/src/Propellor/Property/Ssh.hs
index 5a260476..41b93089 100644
--- a/src/Propellor/Property/Ssh.hs
+++ b/src/Propellor/Property/Ssh.hs
@@ -9,7 +9,8 @@ module Propellor.Property.Ssh (
hostKey,
keyImported,
knownHost,
- authorizedKeys
+ authorizedKeys,
+ listenPort
) where
import Propellor
@@ -164,3 +165,18 @@ authorizedKeys user context = withPrivData (SshAuthorizedKeys user) context $ \g
[ File.ownerGroup f user user
, File.ownerGroup (takeDirectory f) user user
]
+
+-- | Makes the ssh server listen on a given port, in addition to any other
+-- ports it is configured to listen on.
+--
+-- Revert to prevent it listening on a particular port.
+listenPort :: Int -> RevertableProperty
+listenPort port = RevertableProperty enable disable
+ where
+ portline = "Port " ++ show port
+ enable = sshdConfig `File.containsLine` portline
+ `describe` ("ssh listening on " ++ portline)
+ `onChange` restartSshd
+ disable = sshdConfig `File.lacksLine` portline
+ `describe` ("ssh not listening on " ++ portline)
+ `onChange` restartSshd