aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/api/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'swarm/api/config.go')
-rw-r--r--swarm/api/config.go174
1 files changed, 0 insertions, 174 deletions
diff --git a/swarm/api/config.go b/swarm/api/config.go
deleted file mode 100644
index 3a87488cc..000000000
--- a/swarm/api/config.go
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2016 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-package api
-
-import (
- "crypto/ecdsa"
- "fmt"
- "os"
- "path/filepath"
- "time"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/hexutil"
- "github.com/ethereum/go-ethereum/contracts/ens"
- "github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/node"
- "github.com/ethereum/go-ethereum/p2p/enode"
- "github.com/ethereum/go-ethereum/swarm/network"
- "github.com/ethereum/go-ethereum/swarm/pss"
- "github.com/ethereum/go-ethereum/swarm/services/swap"
- "github.com/ethereum/go-ethereum/swarm/storage"
-)
-
-const (
- DefaultHTTPListenAddr = "127.0.0.1"
- DefaultHTTPPort = "8500"
-)
-
-// separate bzz directories
-// allow several bzz nodes running in parallel
-type Config struct {
- // serialised/persisted fields
- *storage.FileStoreParams
-
- // LocalStore
- ChunkDbPath string
- DbCapacity uint64
- CacheCapacity uint
- BaseKey []byte
-
- *network.HiveParams
- Swap *swap.LocalProfile
- Pss *pss.PssParams
- Contract common.Address
- EnsRoot common.Address
- EnsAPIs []string
- Path string
- ListenAddr string
- Port string
- PublicKey string
- BzzKey string
- Enode *enode.Node `toml:"-"`
- NetworkID uint64
- SwapEnabled bool
- SyncEnabled bool
- SyncingSkipCheck bool
- DeliverySkipCheck bool
- MaxStreamPeerServers int
- LightNodeEnabled bool
- BootnodeMode bool
- SyncUpdateDelay time.Duration
- SwapAPI string
- Cors string
- BzzAccount string
- GlobalStoreAPI string
- privateKey *ecdsa.PrivateKey
-}
-
-//create a default config with all parameters to set to defaults
-func NewConfig() (c *Config) {
-
- c = &Config{
- FileStoreParams: storage.NewFileStoreParams(),
- HiveParams: network.NewHiveParams(),
- Swap: swap.NewDefaultSwapParams(),
- Pss: pss.NewPssParams(),
- ListenAddr: DefaultHTTPListenAddr,
- Port: DefaultHTTPPort,
- Path: node.DefaultDataDir(),
- EnsAPIs: nil,
- EnsRoot: ens.TestNetAddress,
- NetworkID: network.DefaultNetworkID,
- SwapEnabled: false,
- SyncEnabled: true,
- SyncingSkipCheck: false,
- MaxStreamPeerServers: 10000,
- DeliverySkipCheck: true,
- SyncUpdateDelay: 15 * time.Second,
- SwapAPI: "",
- }
-
- return
-}
-
-//some config params need to be initialized after the complete
-//config building phase is completed (e.g. due to overriding flags)
-func (c *Config) Init(prvKey *ecdsa.PrivateKey, nodeKey *ecdsa.PrivateKey) error {
-
- // create swarm dir and record key
- err := c.createAndSetPath(c.Path, prvKey)
- if err != nil {
- return fmt.Errorf("Error creating root swarm data directory: %v", err)
- }
- c.setKey(prvKey)
-
- // create the new enode record
- // signed with the ephemeral node key
- enodeParams := &network.EnodeParams{
- PrivateKey: prvKey,
- EnodeKey: nodeKey,
- Lightnode: c.LightNodeEnabled,
- Bootnode: c.BootnodeMode,
- }
- c.Enode, err = network.NewEnode(enodeParams)
- if err != nil {
- return fmt.Errorf("Error creating enode: %v", err)
- }
-
- // initialize components that depend on the swarm instance's private key
- if c.SwapEnabled {
- c.Swap.Init(c.Contract, prvKey)
- }
-
- c.privateKey = prvKey
- c.ChunkDbPath = filepath.Join(c.Path, "chunks")
- c.BaseKey = common.FromHex(c.BzzKey)
-
- c.Pss = c.Pss.WithPrivateKey(c.privateKey)
- return nil
-}
-
-func (c *Config) ShiftPrivateKey() (privKey *ecdsa.PrivateKey) {
- if c.privateKey != nil {
- privKey = c.privateKey
- c.privateKey = nil
- }
- return privKey
-}
-
-func (c *Config) setKey(prvKey *ecdsa.PrivateKey) {
- bzzkeybytes := network.PrivateKeyToBzzKey(prvKey)
- pubkey := crypto.FromECDSAPub(&prvKey.PublicKey)
- pubkeyhex := hexutil.Encode(pubkey)
- keyhex := hexutil.Encode(bzzkeybytes)
-
- c.privateKey = prvKey
- c.PublicKey = pubkeyhex
- c.BzzKey = keyhex
-}
-
-func (c *Config) createAndSetPath(datadirPath string, prvKey *ecdsa.PrivateKey) error {
- address := crypto.PubkeyToAddress(prvKey.PublicKey)
- bzzdirPath := filepath.Join(datadirPath, "bzz-"+common.Bytes2Hex(address.Bytes()))
- err := os.MkdirAll(bzzdirPath, os.ModePerm)
- if err != nil {
- return err
- }
- c.Path = bzzdirPath
- return nil
-}