Archived
1
0
Fork 0

Continue refactoring, worked on the core loop and the plugin infrastructure.

This commit is contained in:
Julien Dessaux 2011-04-23 13:35:04 +02:00
parent ff07633fb8
commit d4be110200
7 changed files with 140 additions and 38 deletions

View file

@ -4,13 +4,16 @@ module Hsbot.Utils
, first
, initTLSEnv
, readCertificate
, readMsg
, readPrivateKey
, sendStrToClient
, sendStr
, setGlobalQuitMVar
, writeMsg
) where
import Control.Concurrent
import Control.Monad.Reader
import Control.Monad.State
import qualified Crypto.Cipher.RSA as RSA
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as C
@ -23,6 +26,7 @@ import Network.TLS
import System.IO
import Hsbot.Config
import Hsbot.Message
import Hsbot.Types
-- utility functions
@ -45,9 +49,20 @@ first :: (a, b, c) -> a
first (a, _, _) = a
-- Helpers
sendStrToClient :: Handle -> Maybe TLSCtx -> String -> IO ()
sendStrToClient _ (Just ctx) msg = sendData ctx $ L.fromChunks [C.pack msg]
sendStrToClient handle Nothing msg = hPutStrLn handle msg
sendStr :: Handle -> Maybe TLSCtx -> String -> IO ()
sendStr _ (Just ctx) msg = sendData ctx $ L.fromChunks [C.pack msg]
sendStr handle Nothing msg = hPutStrLn handle msg
-- Plugin Utils
readMsg :: Plugin IO (Message)
readMsg = do
chan <- gets pluginChan
liftIO $ readChan chan >>= return
writeMsg :: Message -> Plugin IO ()
writeMsg msg = do
chan <- gets pluginMaster
liftIO $ writeChan chan msg
-- TLS utils
initTLSEnv :: TLSConfig -> IO (TLSParams)