How to run Clojure script? I have this code in "clojure" that compare given IP to a list of CIDR's in a file and look for a match. I have installed "dev-lang/clojure" but don't have any experience with it.
--------code-------- (ns htaccess.core) (defn parse-ip [s] (let [v (clojure.string/split s #"/")] (flatten (if (< (count v) 2) [(clojure.string/split (get v 0) #"\.") "32"] [(clojure.string/split (get v 0) #"\.") (get v 1)])))) (defn convert-str-to-binary-str [s] (clojure.string/replace (format "%0$8s" (java.lang.Integer/toBinaryString (java.lang.Integer/parseUnsignedInt (clojure.string/trim s)))) " " "0")) (defn convert-mask-to-binary-str [s] (let [m (java.lang.Integer/parseUnsignedInt (clojure.string/trim s)) m (if (< 32 m) 32 m) l0 (repeatedly m (fn [] 1)) l1 (repeatedly (- 32 m) (fn [] 0)) v (apply str (flatten [l0 l1]))] v)) (defn binary-string-to-int [s] (java.lang.Integer/parseUnsignedInt (clojure.string/trim s) 2)) (defn masked? [p m] (let [s0 p s1 m p0 (parse-ip s0) p1 (parse-ip s1) v0 (apply str (map convert-str-to-binary-str (take 4 p0))) v1 (apply str (map convert-str-to-binary-str (take 4 p1))) m (convert-mask-to-binary-str (last p1)) im (binary-string-to-int m) iv0 (binary-string-to-int v0) iv1 (binary-string-to-int v1)] (= (bit-and im iv0) (bit-and im iv1)))) (defn get-mask-data [s] (map (fn [s] (clojure.string/replace s "Require not ip " "")) (filter (fn [s] (clojure.string/includes? s "Require not ip ")) (with-open [rdr (clojure.java.io/reader s)] (doall (line-seq rdr)))))) (defn return-matching-blocks [p f] (filter (fn [a] (masked? p a)) (get-mask-data f))) ---- end code ----------------