banOrElse (Right a) = do
  let addr = toString a
  let args = ["-A", "BLACKLIST", "-s", addr, "-j", "DROP"]
  changes <- existsOrInsert addr
  case changes of
    0 -> do
      return ()
    1 -> do
      createProcess (proc ipCmd args){ std_out = CreatePipe }
      putStrLn $ "Banning " ++ addr
    otherwise -> exitFailure
banOrElse (Right a) = do
  let addr = toString a
  let args = ["-A", "BLACKLIST", "-s", addr, "-j", "DROP"]
  changes <- existsOrInsert addr
  case changes of
    0 -> do
      return ()
    1 -> do
      createProcess (proc ipCmd args){ std_out = CreatePipe }
      putStrLn $ "Banning " ++ addr
    otherwise -> exitFailure
banOrElse (Right a) = do
  let addr = toString a
  let args = ["-A", "BLACKLIST", "-s", addr, "-j", "DROP"]
  changes <- existsOrInsert addr
  case changes of
    0 -> do
      return ()
    1 -> do
      createProcess (proc ipCmd args){ std_out = CreatePipe }
      putStrLn $ "Banning " ++ addr
    otherwise -> exitFailure