Zipped ui fo Windows RIVM-23

This commit is contained in:
Mihail Slobodyanuk 2022-12-13 19:24:43 +02:00
parent 12c3103039
commit 726b76dd0c
4 changed files with 57 additions and 67 deletions

View file

@ -52,8 +52,6 @@ PKGNAME=$(sh contrib/semver/name.sh)
PKGVERSION=$(sh contrib/msi/msversion.sh --bare) PKGVERSION=$(sh contrib/msi/msversion.sh --bare)
PKGVERSIONMS=$(echo $PKGVERSION | tr - .) PKGVERSIONMS=$(echo $PKGVERSION | tr - .)
PKGUIFOLDER=contrib/ui/mesh-ui/ui/ PKGUIFOLDER=contrib/ui/mesh-ui/ui/
PKGWEBVIEWRESOURCESFOLDER="${PKGUIFOLDER}assets/"
PKGFONTSRESOURCESFOLDER="${PKGUIFOLDER}webfonts/"
PKGLICENSEFILE=LICENSE.rtf PKGLICENSEFILE=LICENSE.rtf
@ -112,6 +110,9 @@ else
exit 1 exit 1
fi fi
PKG_UI_ASSETS_ZIP=$(pwd)/ui
( cd "$PKGUIFOLDER" && zip -q -r "$PKG_UI_ASSETS_ZIP" * )
if [ $PKGNAME != "master" ]; then if [ $PKGNAME != "master" ]; then
PKGDISPLAYNAME="RiV-mesh Network (${PKGNAME} branch)" PKGDISPLAYNAME="RiV-mesh Network (${PKGNAME} branch)"
else else
@ -155,49 +156,10 @@ cat > wix.xml << EOF
<Icon Id="icon.ico" SourceFile="riv.ico"/> <Icon Id="icon.ico" SourceFile="riv.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" /> <Property Id="ARPPRODUCTICON" Value="icon.ico" />
<Property Id="SOURCEDIRECTORY" Value="${PKGUIFOLDER}" />
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="DesktopFolder" SourceName="Desktop"/> <Directory Id="DesktopFolder" SourceName="Desktop"/>
<Directory Id="${PKGINSTFOLDER}" Name="PFiles"> <Directory Id="${PKGINSTFOLDER}" Name="PFiles">
<Directory Id="MeshInstallFolder" Name="RiV-mesh"> <Directory Id="MeshInstallFolder" Name="RiV-mesh">
<Directory Id="WebViewUIFolder" Name="ui" >
<Directory Id="AssetsFolder" Name="assets" >
<Component Id="AssetsResources" Guid="6e9af115-daa0-4aac-8e6a-5ba65e720a4d">
<File
Id="AllMinCssFile"
Name="all.min.css"
DiskId="1"
Source="${PKGWEBVIEWRESOURCESFOLDER}all.min.css" />
<File
Id="BulmaswatchCssFile"
Name="bulmaswatch.min.css"
DiskId="1"
Source="${PKGWEBVIEWRESOURCESFOLDER}bulmaswatch.min.css" />
<File
Id="BulmaswatchCssMapFile"
Name="bulmaswatch.min.css.map"
DiskId="1"
Source="${PKGWEBVIEWRESOURCESFOLDER}bulmaswatch.min.css.map" />
</Component>
</Directory>
<Directory Id="WebfontsFolder" Name="webfonts" >
<Component Id="FontsResources" Guid="4ffeb20b-61a8-4c7f-ba16-0d0c8e43b09a">
<File
Id="FontFile"
Name="fa-solid-900.woff2"
DiskId="1"
Source="${PKGFONTSRESOURCESFOLDER}fa-solid-900.woff2" />
</Component>
</Directory>
<Component Id="WebViewResources" Guid="a4a5a50a-a336-4789-bf61-ca76fe217e3f">
<File
Id="WebViewHtmlFile"
Name="index.html"
DiskId="1"
Source="${PKGUIFOLDER}index.html" />
</Component>
</Directory>
<Component Id="MainExecutable" Guid="c2119231-2aa3-4962-867a-9759c87beb24"> <Component Id="MainExecutable" Guid="c2119231-2aa3-4962-867a-9759c87beb24">
<File <File
Id="Mesh" Id="Mesh"
@ -220,7 +182,7 @@ cat > wix.xml << EOF
Name="Mesh" Name="Mesh"
Start="auto" Start="auto"
Type="ownProcess" Type="ownProcess"
Arguments='-useconffile "%ALLUSERSPROFILE%\\RiV-mesh\\mesh.conf" -logto "%ALLUSERSPROFILE%\\RiV-mesh\\mesh.log" -httpaddress "http://localhost:19019" -wwwroot "[MeshInstallFolder]\\ui"' Arguments='-useconffile "%ALLUSERSPROFILE%\\RiV-mesh\\mesh.conf" -logto "%ALLUSERSPROFILE%\\RiV-mesh\\mesh.log" -httpaddress "http://localhost:19019" -wwwroot "[MeshInstallFolder]ui.zip"'
Vital="yes" /> Vital="yes" />
<ServiceControl <ServiceControl
Id="MeshServiceControl" Id="MeshServiceControl"
@ -258,6 +220,12 @@ cat > wix.xml << EOF
DiskId="1" DiskId="1"
Source="${PKGWEBVIEWFILELOADER}" /> Source="${PKGWEBVIEWFILELOADER}" />
<File
Id="UiAssets"
Name="ui.zip"
DiskId="1"
Source="${PKG_UI_ASSETS_ZIP}" />
</Component> </Component>

4
go.mod
View file

@ -21,6 +21,8 @@ require (
golang.zx2c4.com/wireguard/windows v0.4.12 golang.zx2c4.com/wireguard/windows v0.4.12
) )
require gerace.dev/zipfs v0.2.0 // indirect
require ( require (
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 // indirect github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect
@ -33,11 +35,11 @@ require (
github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f // indirect github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f // indirect
github.com/go-stack/stack v1.8.0 // indirect github.com/go-stack/stack v1.8.0 // indirect
github.com/google/uuid v1.1.2 // indirect github.com/google/uuid v1.1.2 // indirect
github.com/webview/webview v0.0.0-20210330151455-f540d88dde4e
github.com/libp2p/go-buffer-pool v0.0.2 // indirect github.com/libp2p/go-buffer-pool v0.0.2 // indirect
github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/go-colorable v0.1.8 // indirect
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect
github.com/rivo/uniseg v0.2.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect
github.com/webview/webview v0.0.0-20210330151455-f540d88dde4e
go.uber.org/atomic v1.7.0 // indirect go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.19.1 // indirect go.uber.org/zap v1.19.1 // indirect

4
go.sum
View file

@ -1,3 +1,5 @@
gerace.dev/zipfs v0.2.0 h1:3U1GsasLdxGVhf7lCYbccsH4mpuSpMpLOy37GmfT+KY=
gerace.dev/zipfs v0.2.0/go.mod h1:L6cxA6m8uVfWDawsBHnki/J6Gos5uSlu/6RJZhafrfQ=
github.com/Arceliar/ironwood v0.0.0-20221115123222-ec61cea2f439 h1:eOW6/XIs06TnUn9GPCnfv71CQZw8edP3u3mH3lZt6iM= github.com/Arceliar/ironwood v0.0.0-20221115123222-ec61cea2f439 h1:eOW6/XIs06TnUn9GPCnfv71CQZw8edP3u3mH3lZt6iM=
github.com/Arceliar/ironwood v0.0.0-20221115123222-ec61cea2f439/go.mod h1:RP72rucOFm5udrnEzTmIWLRVGQiV/fSUAQXJ0RST/nk= github.com/Arceliar/ironwood v0.0.0-20221115123222-ec61cea2f439/go.mod h1:RP72rucOFm5udrnEzTmIWLRVGQiV/fSUAQXJ0RST/nk=
github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979 h1:WndgpSW13S32VLQ3ugUxx2EnnWmgba1kCqPkd4Gk1yQ= github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979 h1:WndgpSW13S32VLQ3ugUxx2EnnWmgba1kCqPkd4Gk1yQ=
@ -79,6 +81,7 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
@ -173,6 +176,7 @@ golang.zx2c4.com/wireguard/windows v0.4.12 h1:CUmbdWKVNzTSsVb4yUAiEwL3KsabdJkEPd
golang.zx2c4.com/wireguard/windows v0.4.12/go.mod h1:PW4y+d9oY83XU9rRwRwrJDwEMuhVjMxu2gfD1cfzS7w= golang.zx2c4.com/wireguard/windows v0.4.12/go.mod h1:PW4y+d9oY83XU9rRwRwrJDwEMuhVjMxu2gfD1cfzS7w=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View file

@ -5,14 +5,17 @@ import (
"errors" "errors"
"fmt" "fmt"
"net" "net"
"net/url"
"net/http" "net/http"
"net/url"
"os" "os"
"sort" "sort"
"archive/zip"
"strings" "strings"
"time" "time"
"gerace.dev/zipfs"
"github.com/RiV-chain/RiV-mesh/src/config" "github.com/RiV-chain/RiV-mesh/src/config"
"github.com/RiV-chain/RiV-mesh/src/core" "github.com/RiV-chain/RiV-mesh/src/core"
) )
@ -203,26 +206,26 @@ func (a *AdminSocket) SetupAdminHandlers() {
return res, nil return res, nil
}, },
) )
_ = a.AddHandler("addPeers", "Add peers to this node", []string{"uri", "[interface]"}, func(in json.RawMessage) (interface{}, error) { _ = a.AddHandler("addPeers", "Add peers to this node", []string{"uri", "[interface]"}, func(in json.RawMessage) (interface{}, error) {
req := &AddPeersRequest{} req := &AddPeersRequest{}
res := &AddPeersResponse{} res := &AddPeersResponse{}
fmt.Println("json addpeers request %s", string(in[:])) fmt.Println("json addpeers request %s", string(in[:]))
if err := json.Unmarshal(in, &req); err != nil { if err := json.Unmarshal(in, &req); err != nil {
return nil, err return nil, err
} }
if err := a.addPeersHandler(req, res); err != nil { if err := a.addPeersHandler(req, res); err != nil {
return nil, err return nil, err
} }
return res, nil return res, nil
}) })
_ = a.AddHandler("removePeers", "Remove all peers from this node", []string{}, func(in json.RawMessage) (interface{}, error) { _ = a.AddHandler("removePeers", "Remove all peers from this node", []string{}, func(in json.RawMessage) (interface{}, error) {
a.core.RemovePeers() a.core.RemovePeers()
res := &AddPeersResponse{} res := &AddPeersResponse{}
return res, nil return res, nil
}) })
//_ = a.AddHandler("getNodeInfo", []string{"key"}, t.proto.nodeinfo.nodeInfoAdminHandler) //_ = a.AddHandler("getNodeInfo", []string{"key"}, t.proto.nodeinfo.nodeInfoAdminHandler)
//_ = a.AddHandler("debug_remoteGetSelf", []string{"key"}, t.proto.getSelfHandler) //_ = a.AddHandler("debug_remoteGetSelf", []string{"key"}, t.proto.getSelfHandler)
@ -232,16 +235,16 @@ func (a *AdminSocket) SetupAdminHandlers() {
// Start runs http server // Start runs http server
func (a *AdminSocket) StartHttpServer(nc *config.NodeConfig) { func (a *AdminSocket) StartHttpServer(nc *config.NodeConfig) {
if nc.HttpAddress != "none" && nc.HttpAddress != "" && nc.WwwRoot != "none" && nc.WwwRoot != ""{ if nc.HttpAddress != "none" && nc.HttpAddress != "" && nc.WwwRoot != "none" && nc.WwwRoot != "" {
u, err := url.Parse(nc.HttpAddress) u, err := url.Parse(nc.HttpAddress)
if err != nil { if err != nil {
a.log.Errorln("An error occurred parsing http address:", err) a.log.Errorln("An error occurred parsing http address:", err)
return return
} }
http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request){ http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Following methods are allowed: getself, getpeers. litening"+u.Host) fmt.Fprintf(w, "Following methods are allowed: getself, getpeers. litening"+u.Host)
}) })
http.HandleFunc("/api/getself", func(w http.ResponseWriter, r *http.Request){ http.HandleFunc("/api/getself", func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json") w.Header().Add("Content-Type", "application/json")
req := &GetSelfRequest{} req := &GetSelfRequest{}
res := &GetSelfResponse{} res := &GetSelfResponse{}
@ -254,7 +257,7 @@ func (a *AdminSocket) StartHttpServer(nc *config.NodeConfig) {
} }
fmt.Fprintf(w, string(b[:])) fmt.Fprintf(w, string(b[:]))
}) })
http.HandleFunc("/api/getpeers", func(w http.ResponseWriter, r *http.Request){ http.HandleFunc("/api/getpeers", func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json") w.Header().Add("Content-Type", "application/json")
req := &GetPeersRequest{} req := &GetPeersRequest{}
res := &GetPeersResponse{} res := &GetPeersResponse{}
@ -268,12 +271,25 @@ func (a *AdminSocket) StartHttpServer(nc *config.NodeConfig) {
} }
fmt.Fprintf(w, string(b[:])) fmt.Fprintf(w, string(b[:]))
}) })
http.Handle("/", http.FileServer(http.Dir(nc.WwwRoot))) var docFs = ""
pakReader, err := zip.OpenReader(nc.WwwRoot)
if err == nil {
defer pakReader.Close()
fs, err := zipfs.NewZipFileSystem(&pakReader.Reader, zipfs.ServeIndexForMissing())
if err == nil {
http.Handle("/", http.FileServer(fs))
docFs = "zipfs"
}
}
if docFs == "" {
http.Handle("/", http.FileServer(http.Dir(nc.WwwRoot)))
docFs = "local fs"
}
l, e := net.Listen("tcp4", u.Host) l, e := net.Listen("tcp4", u.Host)
if e != nil { if e != nil {
a.log.Errorln("%s\n", e) a.log.Errorln("%s\n", e)
} else { } else {
a.log.Infof("Http server listening on %s\n", u.Host) a.log.Infof("Http server is listening on %s and is supplied from %s %s\n", nc.HttpAddress, docFs, nc.WwwRoot)
} }
go func() { go func() {
a.log.Errorln(http.Serve(l, nil)) a.log.Errorln(http.Serve(l, nil))