From f1cc9649ac3c35d5fd3b6075ee76526e597f008d Mon Sep 17 00:00:00 2001 From: Uday Verma Date: Sun, 9 Mar 2014 21:30:38 -0500 Subject: [PATCH] Add mDNS support --- project.clj | 1 + src/dakait/handler.clj | 5 +++++ src/dakait/mdns.clj | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 src/dakait/mdns.clj diff --git a/project.clj b/project.clj index 8d9d3c6..a972ecf 100644 --- a/project.clj +++ b/project.clj @@ -10,6 +10,7 @@ [org.clojure/data.json "0.2.4"] [de.ubercode.clostache/clostache "1.3.1"] [org.clojure/tools.logging "0.2.6"] + [javax.jmdns/jmdns "3.4.1"] [me.raynes/conch "0.5.0"] [crate "0.2.5"] [jayq "2.5.0"]] diff --git a/src/dakait/handler.clj b/src/dakait/handler.clj index 7956f5a..adaf995 100644 --- a/src/dakait/handler.clj +++ b/src/dakait/handler.clj @@ -3,6 +3,7 @@ dakait.views dakait.files dakait.config + dakait.mdns [clojure.core.async :only(>! go)] [dakait.util :only (join-path)] [dakait.downloader :only (run start-download downloads-in-progress downloads-pending)] @@ -130,6 +131,10 @@ (load-tags (str (config :config-data-dir) "/tags.json")) (load-associations) (run) + (let [port (System/getenv "PORT") + port (when (nil? port) 3000)] + (println "Starting mDNS server on port:" port) + (publish-service port)) (catch Exception e (println "Program initialization failed: " (.getMessage e)) (System/exit 1))) diff --git a/src/dakait/mdns.clj b/src/dakait/mdns.clj new file mode 100644 index 0000000..f88dfd1 --- /dev/null +++ b/src/dakait/mdns.clj @@ -0,0 +1,18 @@ +(ns dakait.mdns + (:import (javax.jmdns JmDNS + ServiceInfo))) + +(def ^{:private true} service (atom nil)) + +(defn publish-service + "Register a mDNS service with given information" + [port] + (let [service-info (ServiceInfo/create + "_dakait._tcp.local." + "Dakait" + port + "SFTP File download and management utility") + mdns (JmDNS/create)] + (.registerService mdns service-info) + (reset! service mdns))) +