Continue refactoring, worked on the core loop and the plugin infrastructure.
This commit is contained in:
parent
ff07633fb8
commit
d4be110200
7 changed files with 140 additions and 38 deletions
|
@ -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)
|
||||
|
|
Reference in a new issue