Compare commits
4 commits
62a4476fc3
...
b7f9b2d830
Author | SHA1 | Date | |
---|---|---|---|
b7f9b2d830 | |||
5339ea51c6 | |||
f9dfd38613 | |||
bf452242a5 |
26 changed files with 153 additions and 120 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -5,3 +5,6 @@ zenith.db
|
||||||
zenith.log
|
zenith.log
|
||||||
zenith.db-shm
|
zenith.db-shm
|
||||||
zenith.db-wal
|
zenith.db-wal
|
||||||
|
installer/*.tar.gz
|
||||||
|
installer/*.tar.gz.prev
|
||||||
|
docker_files/zenith-docker_*
|
||||||
|
|
|
@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Upgraded to GHC 9.6.5
|
- Upgraded to GHC 9.6.5
|
||||||
|
- Implemented config and data folder
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ processUri user pwd =
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
config <- load [ "$(HOME)/Zenith/zenith.cfg" ]
|
config <- load ["$(HOME)/Zenith/zenith.cfg"]
|
||||||
args <- getArgs
|
args <- getArgs
|
||||||
dbFileName <- require config "dbFileName"
|
dbFileName <- require config "dbFileName"
|
||||||
{-nodeUser <- require config "nodeUser"-}
|
{-nodeUser <- require config "nodeUser"-}
|
||||||
|
|
|
@ -28,9 +28,9 @@ RUN echo "1234\n1234\n" | passwd zenusr
|
||||||
|
|
||||||
RUN mkdir /home/zenusr/Zenith
|
RUN mkdir /home/zenusr/Zenith
|
||||||
RUN chown zenusr:zenusr -R /home/zenusr/Zenith
|
RUN chown zenusr:zenusr -R /home/zenusr/Zenith
|
||||||
RUN mkdir /home/zenusr/assets
|
#RUN mkdir /home/zenusr/Zenith/assets
|
||||||
COPY assets/* /home/zenusr/assets/
|
#COPY assets/* /home/zenusr/Zenith/assets/
|
||||||
RUN chown zenusr:zenusr -R /home/zenusr/assets
|
#RUN chown zenusr:zenusr -R /home/zenusr/Zenith/assets
|
||||||
|
|
||||||
COPY scripts/bash_rc_adm /root/.bashrc
|
COPY scripts/bash_rc_adm /root/.bashrc
|
||||||
COPY scripts/bash_rc_usr /home/zenusr/.bashrc
|
COPY scripts/bash_rc_usr /home/zenusr/.bashrc
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#/bin/bash
|
#!/bin/bash
|
||||||
ZVERSION="0.6.0.0"
|
ZVERSION="0.6.0.0"
|
||||||
echo
|
echo
|
||||||
echo "Zenith Full Node Docker Image Setup"
|
echo "Zenith Full Node Docker Image Setup"
|
||||||
|
@ -27,8 +27,10 @@ if systemctl is-active --quiet docker; then
|
||||||
docker load < zenith-docker_$ZVERSION.tar
|
docker load < zenith-docker_$ZVERSION.tar
|
||||||
echo "... docker image zenith-docker:"$ZVERSION" loaded."
|
echo "... docker image zenith-docker:"$ZVERSION" loaded."
|
||||||
echo "... creating Zenith folder"
|
echo "... creating Zenith folder"
|
||||||
mkdir $HOME/Zenith
|
mkdir -p $HOME/Zenith/assets
|
||||||
|
echo "... creating default configuration"
|
||||||
cp cfg/zenith.cfg $HOME/Zenith/
|
cp cfg/zenith.cfg $HOME/Zenith/
|
||||||
|
cp -r /assets/ $HOME/Zenith/assets
|
||||||
if ! [ -d $HOME/.local/bin ]; then
|
if ! [ -d $HOME/.local/bin ]; then
|
||||||
echo "... creating $HOME/.local/bin folder"
|
echo "... creating $HOME/.local/bin folder"
|
||||||
mkdir -p $HOME/.local/bin
|
mkdir -p $HOME/.local/bin
|
||||||
|
@ -38,10 +40,10 @@ if systemctl is-active --quiet docker; then
|
||||||
if [ -f $HOME/.local/bin/runzenith ]; then
|
if [ -f $HOME/.local/bin/runzenith ]; then
|
||||||
rm $HOME/.local/bin/runzenith
|
rm $HOME/.local/bin/runzenith
|
||||||
fi
|
fi
|
||||||
echo "... copying runzenith to $HOME/.local/bin "
|
echo "... copying runzenith to $HOME/.local/bin"
|
||||||
cp cfg/runzenith $HOME/.local/bin/
|
cp cfg/runzenith $HOME/.local/bin/
|
||||||
if echo $PATH | grep -q $HOME/.local/bin ; then
|
if echo $PATH | grep -q $HOME/.local/bin ; then
|
||||||
echo PATH=$PATH:$HOME/.local/bin' | tee -a $HOME/.bashrc
|
echo PATH=$PATH:$HOME/.local/bin | tee -a $HOME/.bashrc
|
||||||
echo "Reloading configuration ...."
|
echo "Reloading configuration ...."
|
||||||
source $HOME/.bashrc
|
source $HOME/.bashrc
|
||||||
fi
|
fi
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 11 KiB |
Binary file not shown.
Before Width: | Height: | Size: 10 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -15,12 +15,11 @@ else
|
||||||
mkdir -p $HOME/Zenith
|
mkdir -p $HOME/Zenith
|
||||||
echo "Copying default configuration ...."
|
echo "Copying default configuration ...."
|
||||||
cp ./cfg/zenith.cfg $HOME/Zenith/
|
cp ./cfg/zenith.cfg $HOME/Zenith/
|
||||||
chown -R $USER $HOME/Zenith
|
|
||||||
echo "Creating assets folder ...."
|
echo "Creating assets folder ...."
|
||||||
mkdir -p $HOME/assets
|
mkdir -p $HOME/Zenith/assets
|
||||||
echo "Transfering assets to new folder ...."
|
echo "Transfering assets to new folder ...."
|
||||||
cp ./assets/* $HOME/assets
|
cp ./assets/* $HOME/Zenith/assets
|
||||||
chown -R $USER $HOME/assets
|
chown -R $USER $HOME/Zenith
|
||||||
echo "Configuring library path ...."
|
echo "Configuring library path ...."
|
||||||
if [ ! grep -q "LD_LIBRARY_PATH" "$HOME/.bashrc" ]; then
|
if [ ! grep -q "LD_LIBRARY_PATH" "$HOME/.bashrc" ]; then
|
||||||
echo 'export LD_LIBRARY_PATH=/usr/local/lib' | tee -a $HOME/.bashrc
|
echo 'export LD_LIBRARY_PATH=/usr/local/lib' | tee -a $HOME/.bashrc
|
||||||
|
|
|
@ -25,6 +25,8 @@ import Lens.Micro ((&), (+~), (.~), (?~), (^.), set)
|
||||||
import Lens.Micro.TH
|
import Lens.Micro.TH
|
||||||
import Monomer
|
import Monomer
|
||||||
import qualified Monomer.Lens as L
|
import qualified Monomer.Lens as L
|
||||||
|
import System.Directory (getHomeDirectory)
|
||||||
|
import System.FilePath ((</>))
|
||||||
import System.Hclip
|
import System.Hclip
|
||||||
import Text.Printf
|
import Text.Printf
|
||||||
import Text.Wrap (FillScope(..), FillStrategy(..), WrapSettings(..), wrapText)
|
import Text.Wrap (FillScope(..), FillStrategy(..), WrapSettings(..), wrapText)
|
||||||
|
@ -141,6 +143,7 @@ data AppModel = AppModel
|
||||||
, _recipientValid :: !Bool
|
, _recipientValid :: !Bool
|
||||||
, _amountValid :: !Bool
|
, _amountValid :: !Bool
|
||||||
, _showId :: !(Maybe T.Text)
|
, _showId :: !(Maybe T.Text)
|
||||||
|
, _home :: !FilePath
|
||||||
} deriving (Eq, Show)
|
} deriving (Eq, Show)
|
||||||
|
|
||||||
makeLenses ''AppModel
|
makeLenses ''AppModel
|
||||||
|
@ -440,7 +443,11 @@ buildUI wenv model = widgetTree
|
||||||
(fromIntegral $ qrCodeWidth qr))
|
(fromIntegral $ qrCodeWidth qr))
|
||||||
[fitWidth]
|
[fitWidth]
|
||||||
Nothing ->
|
Nothing ->
|
||||||
image_ "./assets/1F928_color.png" [fitEither]) `styleBasic`
|
image_
|
||||||
|
(T.pack $
|
||||||
|
(model ^. home) </>
|
||||||
|
"Zenith/assets/1F928_color.png")
|
||||||
|
[fitEither]) `styleBasic`
|
||||||
[bgColor white, height 100, width 100]
|
[bgColor white, height 100, width 100]
|
||||||
, filler
|
, filler
|
||||||
] `styleBasic`
|
] `styleBasic`
|
||||||
|
@ -504,7 +511,9 @@ buildUI wenv model = widgetTree
|
||||||
, spacer
|
, spacer
|
||||||
, label (showt $ model ^. timer) `styleBasic` [padding 3, textSize 8]
|
, label (showt $ model ^. timer) `styleBasic` [padding 3, textSize 8]
|
||||||
, filler
|
, filler
|
||||||
, image_ "./assets/1F993.png" [fitHeight] `styleBasic`
|
, image_
|
||||||
|
(T.pack $ (model ^. home) </> "Zenith/assets/1F993.png")
|
||||||
|
[fitHeight] `styleBasic`
|
||||||
[height 24, width 24] `nodeVisible`
|
[height 24, width 24] `nodeVisible`
|
||||||
(model ^. zebraOn)
|
(model ^. zebraOn)
|
||||||
, label
|
, label
|
||||||
|
@ -1242,66 +1251,121 @@ txtWrap = wrapText (WrapSettings False True NoFill FillAfterFirst) 32
|
||||||
|
|
||||||
runZenithGUI :: Config -> IO ()
|
runZenithGUI :: Config -> IO ()
|
||||||
runZenithGUI config = do
|
runZenithGUI config = do
|
||||||
let host = c_zebraHost config
|
homeDir <- try getHomeDirectory :: IO (Either IOError FilePath)
|
||||||
let port = c_zebraPort config
|
case homeDir of
|
||||||
let dbFilePath = c_dbPath config
|
Left e -> print e
|
||||||
pool <- runNoLoggingT $ initPool dbFilePath
|
Right hD -> do
|
||||||
w <- try $ checkZebra host port :: IO (Either IOError ZebraGetInfo)
|
let host = c_zebraHost config
|
||||||
case w of
|
let port = c_zebraPort config
|
||||||
Right zebra -> do
|
let dbFilePath = c_dbPath config
|
||||||
bc <-
|
pool <- runNoLoggingT $ initPool dbFilePath
|
||||||
try $ checkBlockChain host port :: IO
|
w <- try $ checkZebra host port :: IO (Either IOError ZebraGetInfo)
|
||||||
(Either IOError ZebraGetBlockChainInfo)
|
case w of
|
||||||
case bc of
|
Right zebra -> do
|
||||||
Left e1 -> throwIO e1
|
bc <-
|
||||||
Right chainInfo -> do
|
try $ checkBlockChain host port :: IO
|
||||||
|
(Either IOError ZebraGetBlockChainInfo)
|
||||||
|
case bc of
|
||||||
|
Left e1 -> throwIO e1
|
||||||
|
Right chainInfo -> do
|
||||||
|
initDb dbFilePath
|
||||||
|
generateQRCodes config
|
||||||
|
walList <- getWallets pool $ zgb_net chainInfo
|
||||||
|
accList <-
|
||||||
|
if not (null walList)
|
||||||
|
then runNoLoggingT $
|
||||||
|
getAccounts pool $ entityKey $ head walList
|
||||||
|
else return []
|
||||||
|
addrList <-
|
||||||
|
if not (null accList)
|
||||||
|
then runNoLoggingT $
|
||||||
|
getAddresses pool $ entityKey $ head accList
|
||||||
|
else return []
|
||||||
|
txList <-
|
||||||
|
if not (null addrList)
|
||||||
|
then getUserTx pool $ entityKey $ head addrList
|
||||||
|
else return []
|
||||||
|
qr <-
|
||||||
|
if not (null addrList)
|
||||||
|
then getQrCode pool Orchard $ entityKey $ head addrList
|
||||||
|
else return Nothing
|
||||||
|
bal <-
|
||||||
|
if not (null accList)
|
||||||
|
then getBalance pool $ entityKey $ head accList
|
||||||
|
else return 0
|
||||||
|
unconfBal <-
|
||||||
|
if not (null accList)
|
||||||
|
then getUnconfirmedBalance pool $ entityKey $ head accList
|
||||||
|
else return 0
|
||||||
|
let model =
|
||||||
|
AppModel
|
||||||
|
config
|
||||||
|
(zgb_net chainInfo)
|
||||||
|
walList
|
||||||
|
0
|
||||||
|
accList
|
||||||
|
0
|
||||||
|
addrList
|
||||||
|
0
|
||||||
|
txList
|
||||||
|
0
|
||||||
|
Nothing
|
||||||
|
True
|
||||||
|
bal
|
||||||
|
(if unconfBal == 0
|
||||||
|
then Nothing
|
||||||
|
else Just unconfBal)
|
||||||
|
Orchard
|
||||||
|
qr
|
||||||
|
False
|
||||||
|
False
|
||||||
|
False
|
||||||
|
False
|
||||||
|
""
|
||||||
|
Nothing
|
||||||
|
""
|
||||||
|
""
|
||||||
|
(SaveAddress $
|
||||||
|
if not (null accList)
|
||||||
|
then Just (head accList)
|
||||||
|
else Nothing)
|
||||||
|
False
|
||||||
|
False
|
||||||
|
Nothing
|
||||||
|
Nothing
|
||||||
|
0
|
||||||
|
1.0
|
||||||
|
False
|
||||||
|
""
|
||||||
|
0.0
|
||||||
|
""
|
||||||
|
False
|
||||||
|
False
|
||||||
|
Nothing
|
||||||
|
hD
|
||||||
|
startApp model handleEvent buildUI (params hD)
|
||||||
|
Left e -> do
|
||||||
initDb dbFilePath
|
initDb dbFilePath
|
||||||
generateQRCodes config
|
|
||||||
walList <- getWallets pool $ zgb_net chainInfo
|
|
||||||
accList <-
|
|
||||||
if not (null walList)
|
|
||||||
then runNoLoggingT $ getAccounts pool $ entityKey $ head walList
|
|
||||||
else return []
|
|
||||||
addrList <-
|
|
||||||
if not (null accList)
|
|
||||||
then runNoLoggingT $ getAddresses pool $ entityKey $ head accList
|
|
||||||
else return []
|
|
||||||
txList <-
|
|
||||||
if not (null addrList)
|
|
||||||
then getUserTx pool $ entityKey $ head addrList
|
|
||||||
else return []
|
|
||||||
qr <-
|
|
||||||
if not (null addrList)
|
|
||||||
then getQrCode pool Orchard $ entityKey $ head addrList
|
|
||||||
else return Nothing
|
|
||||||
bal <-
|
|
||||||
if not (null accList)
|
|
||||||
then getBalance pool $ entityKey $ head accList
|
|
||||||
else return 0
|
|
||||||
unconfBal <-
|
|
||||||
if not (null accList)
|
|
||||||
then getUnconfirmedBalance pool $ entityKey $ head accList
|
|
||||||
else return 0
|
|
||||||
let model =
|
let model =
|
||||||
AppModel
|
AppModel
|
||||||
config
|
config
|
||||||
(zgb_net chainInfo)
|
TestNet
|
||||||
walList
|
[]
|
||||||
0
|
0
|
||||||
accList
|
[]
|
||||||
0
|
0
|
||||||
addrList
|
[]
|
||||||
0
|
0
|
||||||
txList
|
[]
|
||||||
0
|
0
|
||||||
Nothing
|
(Just $
|
||||||
True
|
"Couldn't connect to Zebra on " <>
|
||||||
bal
|
host <> ":" <> showt port <> ". Check your configuration.")
|
||||||
(if unconfBal == 0
|
False
|
||||||
then Nothing
|
314259000
|
||||||
else Just unconfBal)
|
(Just 30000)
|
||||||
Orchard
|
Orchard
|
||||||
qr
|
Nothing
|
||||||
False
|
False
|
||||||
False
|
False
|
||||||
False
|
False
|
||||||
|
@ -1310,10 +1374,7 @@ runZenithGUI config = do
|
||||||
Nothing
|
Nothing
|
||||||
""
|
""
|
||||||
""
|
""
|
||||||
(SaveAddress $
|
(SaveAddress Nothing)
|
||||||
if not (null accList)
|
|
||||||
then Just (head accList)
|
|
||||||
else Nothing)
|
|
||||||
False
|
False
|
||||||
False
|
False
|
||||||
Nothing
|
Nothing
|
||||||
|
@ -1327,61 +1388,26 @@ runZenithGUI config = do
|
||||||
False
|
False
|
||||||
False
|
False
|
||||||
Nothing
|
Nothing
|
||||||
startApp model handleEvent buildUI params
|
hD
|
||||||
Left e -> do
|
startApp model handleEvent buildUI (params hD)
|
||||||
initDb dbFilePath
|
|
||||||
let model =
|
|
||||||
AppModel
|
|
||||||
config
|
|
||||||
TestNet
|
|
||||||
[]
|
|
||||||
0
|
|
||||||
[]
|
|
||||||
0
|
|
||||||
[]
|
|
||||||
0
|
|
||||||
[]
|
|
||||||
0
|
|
||||||
(Just $
|
|
||||||
"Couldn't connect to Zebra on " <>
|
|
||||||
host <> ":" <> showt port <> ". Check your configuration.")
|
|
||||||
False
|
|
||||||
314259000
|
|
||||||
(Just 30000)
|
|
||||||
Orchard
|
|
||||||
Nothing
|
|
||||||
False
|
|
||||||
False
|
|
||||||
False
|
|
||||||
False
|
|
||||||
""
|
|
||||||
Nothing
|
|
||||||
""
|
|
||||||
""
|
|
||||||
(SaveAddress Nothing)
|
|
||||||
False
|
|
||||||
False
|
|
||||||
Nothing
|
|
||||||
Nothing
|
|
||||||
0
|
|
||||||
1.0
|
|
||||||
False
|
|
||||||
""
|
|
||||||
0.0
|
|
||||||
""
|
|
||||||
False
|
|
||||||
False
|
|
||||||
Nothing
|
|
||||||
startApp model handleEvent buildUI params
|
|
||||||
where
|
where
|
||||||
params =
|
params hd =
|
||||||
[ appWindowTitle "Zenith - Zcash Full Node Wallet"
|
[ appWindowTitle "Zenith - Zcash Full Node Wallet"
|
||||||
, appWindowState $ MainWindowNormal (1000, 700)
|
, appWindowState $ MainWindowNormal (1000, 700)
|
||||||
, appTheme zenithTheme
|
, appTheme zenithTheme
|
||||||
, appFontDef "Regular" "./assets/Atkinson-Hyperlegible-Regular-102.ttf" --"./assets/DejaVuSansMono.ttf"
|
, appFontDef
|
||||||
, appFontDef "Bold" "./assets/Atkinson-Hyperlegible-Bold-102.ttf"
|
"Regular"
|
||||||
, appFontDef "Italic" "./assets/Atkinson-Hyperlegible-Italic-102.ttf"
|
(T.pack $
|
||||||
, appFontDef "Remix" "./assets/remixicon.ttf"
|
hd </>
|
||||||
|
"Zenith/assets/Atkinson-Hyperlegible-Regular-102.ttf" --"./assets/DejaVuSansMono.ttf"
|
||||||
|
)
|
||||||
|
, appFontDef
|
||||||
|
"Bold"
|
||||||
|
(T.pack $ hd </> "Zenith/assets/Atkinson-Hyperlegible-Bold-102.ttf")
|
||||||
|
, appFontDef
|
||||||
|
"Italic"
|
||||||
|
(T.pack $ hd </> "Zenith/assets/Atkinson-Hyperlegible-Italic-102.ttf")
|
||||||
|
, appFontDef "Remix" (T.pack $ hd </> "Zenith/assets/remixicon.ttf")
|
||||||
, appDisableAutoScale True
|
, appDisableAutoScale True
|
||||||
, appScaleFactor 2.0
|
, appScaleFactor 2.0
|
||||||
, appInitEvent AppInit
|
, appInitEvent AppInit
|
||||||
|
|
|
@ -47,6 +47,8 @@ library
|
||||||
, brick
|
, brick
|
||||||
, bytestring
|
, bytestring
|
||||||
, data-default
|
, data-default
|
||||||
|
, directory
|
||||||
|
, filepath
|
||||||
, esqueleto
|
, esqueleto
|
||||||
, resource-pool
|
, resource-pool
|
||||||
, binary
|
, binary
|
||||||
|
|
Loading…
Reference in a new issue