|
- {-# LANGUAGE MultiWayIf #-}
-
- module IrcBot.BotNetwork where
-
- import Network.Socket hiding (send, sendTo, recv, recvFrom)
- import Network.Socket.ByteString (recv, sendAll)
- import qualified Data.ByteString.Char8 as C
- import Network.Connection
-
- readFromSocket :: Connection -> IO C.ByteString
- writeToSocket :: Connection -> String -> IO()
-
-
- writeToSocket sock stringData =
- do
- let socketString = stringData ++ "\n"
- let byteStringDataConverter = C.pack socketString
- connectionPut sock byteStringDataConverter
- print "SENT DATA IS: "
- print byteStringDataConverter
-
- readFromSocket sock =
- do
- msg <- connectionGet sock 1024
- case msg == C.empty of
- False -> do
- return msg
- True -> do
- return C.empty
-
-
- open :: String -> PortNumber -> Bool -> IO Connection
-
- open server port ssl = do
- ctx <- initConnectionContext
- -- sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
- print "CONNECTING"
- ctx <- initConnectionContext
- con <- connectTo ctx $ ConnectionParams
- { connectionHostname = server
- , connectionPort = port
- , connectionUseSecure = case ssl of
- True -> Just $ Network.Connection.TLSSettingsSimple False False True
- False -> Nothing
- , connectionUseSocks = Nothing
- }
- print "CONNECTED"
- return con
|