예제 #1
0
        //private IKeyStoreService _keyStoreService;

        private async Task InitAsync()
        {
            //Swarm
            Log.Debug("Building swarm service");

            SwarmService.LocalPeer    = LocalPeer;
            SwarmService.LocalPeerKey =
                Key.CreatePrivateKey(await KeyApi.GetPrivateKeyAsync("self").ConfigureAwait(false));
            SwarmService.NetworkProtector = Options.Swarm.PrivateNetworkKey == null
                ? null
                : new Psk1Protector
            {
                Key = Options.Swarm.PrivateNetworkKey
            };

            if (Options.Swarm.PrivateNetworkKey != null)
            {
                Log.Debug($"Private network {Options.Swarm.PrivateNetworkKey.Fingerprint().ToHexString()}");
            }

            Log.Debug("Building PubSub service");

            //PubSubService.LocalPeer = LocalPeer;
            Log.Debug("Built PubSub service");
        }
예제 #2
0
        void Start()
        {
#if !UNITY_EDITOR
            WindowApi.Frontize();
            WindowApi.HideTitleBar();
            WindowApi.EnableWindowDrag();
#endif
            if (KeyApi.IsKeyEventObservable())
            {
                Debug.Log("accessibility OK");
            }
        }
예제 #3
0
 /// <summary>
 ///   Creates a new instance of the <see cref="IpfsEngine"/> class.
 /// </summary>
 public IpfsEngine()
 {
     // Init the core api inteface.
     Bitswap    = new BitswapApi(this);
     Block      = new BlockApi(this);
     Config     = new ConfigApi(this);
     Dag        = new DagApi(this);
     Dht        = new DhtApi(this);
     FileSystem = new FileSystemApi(this);
     Generic    = new GenericApi(this);
     Key        = new KeyApi(this);
     Name       = new NameApi(this);
     Object     = new ObjectApi(this);
     Pin        = new PinApi(this);
     PubSub     = new PubSubApi(this);
     Swarm      = new SwarmApi(this);
 }
예제 #4
0
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.T))
            {
#if !UNITY_EDITOR
                if (transparent)
                {
                    Camera.main.backgroundColor = Color.green;
                    WindowApi.Opacify();
                }
                else
                {
                    Camera.main.clearFlags      = CameraClearFlags.Color;
                    Camera.main.backgroundColor = Color.clear;
                    WindowApi.Transparentize();
                }
#endif

                transparent = !transparent;
            }
            else if (Input.GetKeyDown(KeyCode.E))
            {
                if (monitoring)
                {
                    MouseApi.Release();
                    KeyApi.Release();
                }
                else
                {
                    MouseApi.ObserveLeftMouseDown(() => Debug.Log("left mouse down"));
                    MouseApi.ObserveLeftMouseUp(() => Debug.Log("left mouse up"));
                    MouseApi.ObserveRightMouseDown(() => Debug.Log("right mouse down"));
                    MouseApi.ObserveRightMouseUp(() => Debug.Log("right mouse up"));

                    // accessibility permission is required
                    KeyApi.ObserveKeyDown(code => Debug.Log($"key down: {code}"));
                    KeyApi.ObserveKeyUp(code => Debug.Log($"key up: {code}"));
                }

                monitoring = !monitoring;
            }
        }
예제 #5
0
        private void Start()
        {
            if (KeyApi.IsKeyEventObservable())
            {
                KeyApi.ObserveKeyDown(code =>
                {
                    if (enabled)
                    {
                        ReceiveKeyPressed(code.ToUpper());
                    }
                });
            }

            MouseApi.ObserveLeftMouseDown(() =>
            {
                if (enabled)
                {
                    ReceiveMouseButton(FingerController.LDown);
                }
            });
            MouseApi.ObserveRightMouseDown(() =>
            {
                if (enabled)
                {
                    ReceiveMouseButton(FingerController.RDown);
                }
            });

            _receivedMessageHandler.Commands.Subscribe((message) =>
            {
                switch (message.Command)
                {
                case MessageCommandNames.EnableDesktopShareMode:
                    {
                        enabled = message.ToBoolean();
                        break;
                    }
                }
            });
        }
예제 #6
0
 private void OnDestroy()
 {
     KeyApi.Release();
     MouseApi.Release();
 }
예제 #7
0
        void Init()
        {
            // Init the core api inteface.
            Bitswap         = new BitswapApi(this);
            Block           = new BlockApi(this);
            BlockRepository = new BlockRepositoryApi(this);
            Bootstrap       = new BootstrapApi(this);
            Config          = new ConfigApi(this);
            Dag             = new DagApi(this);
            Dht             = new DhtApi(this);
            Dns             = new DnsApi(this);
            FileSystem      = new FileSystemApi(this);
            Generic         = new GenericApi(this);
            Key             = new KeyApi(this);
            Name            = new NameApi(this);
            Object          = new ObjectApi(this);
            Pin             = new PinApi(this);
            PubSub          = new PubSubApi(this);
            Stats           = new StatsApi(this);
            Swarm           = new SwarmApi(this);

            // Async properties
            LocalPeer = new AsyncLazy <Peer>(async() =>
            {
                log.Debug("Building local peer");
                var keyChain = await KeyChain().ConfigureAwait(false);
                log.Debug("Getting key info about self");
                var self      = await keyChain.FindKeyByNameAsync("self").ConfigureAwait(false);
                var localPeer = new Peer
                {
                    Id              = self.Id,
                    PublicKey       = await keyChain.GetPublicKeyAsync("self").ConfigureAwait(false),
                    ProtocolVersion = "ipfs/0.1.0"
                };
                var version            = typeof(IpfsEngine).GetTypeInfo().Assembly.GetName().Version;
                localPeer.AgentVersion = $"net-ipfs/{version.Major}.{version.Minor}.{version.Revision}";
                log.Debug("Built local peer");
                return(localPeer);
            });
            SwarmService = new AsyncLazy <Swarm>(async() =>
            {
                log.Debug("Building swarm service");
                if (Options.Swarm.PrivateNetworkKey == null)
                {
                    var path = Path.Combine(Options.Repository.Folder, "swarm.key");
                    if (File.Exists(path))
                    {
                        using (var x = File.OpenText(path))
                        {
                            Options.Swarm.PrivateNetworkKey = new PreSharedKey();
                            Options.Swarm.PrivateNetworkKey.Import(x);
                        }
                    }
                }
                var peer     = await LocalPeer.ConfigureAwait(false);
                var keyChain = await KeyChain().ConfigureAwait(false);
                var self     = await keyChain.GetPrivateKeyAsync("self").ConfigureAwait(false);
                var swarm    = new Swarm
                {
                    LocalPeer        = peer,
                    LocalPeerKey     = PeerTalk.Cryptography.Key.CreatePrivateKey(self),
                    NetworkProtector = Options.Swarm.PrivateNetworkKey == null
                        ? null
                        : new Psk1Protector {
                        Key = Options.Swarm.PrivateNetworkKey
                    }
                };
                if (Options.Swarm.PrivateNetworkKey != null)
                {
                    log.Debug($"Private network {Options.Swarm.PrivateNetworkKey.Fingerprint().ToHexString()}");
                }

                log.Debug("Built swarm service");
                return(swarm);
            });
            BitswapService = new AsyncLazy <BlockExchange.Bitswap>(async() =>
            {
                log.Debug("Building bitswap service");
                var bitswap = new BlockExchange.Bitswap
                {
                    Swarm        = await SwarmService.ConfigureAwait(false),
                    BlockService = Block
                };
                log.Debug("Built bitswap service");
                return(bitswap);
            });
            DhtService = new AsyncLazy <PeerTalk.Routing.Dht1>(async() =>
            {
                log.Debug("Building DHT service");
                var dht = new PeerTalk.Routing.Dht1
                {
                    Swarm = await SwarmService.ConfigureAwait(false)
                };
                dht.Swarm.Router = dht;
                log.Debug("Built DHT service");
                return(dht);
            });
            PubSubService = new AsyncLazy <PeerTalk.PubSub.NotificationService>(async() =>
            {
                log.Debug("Building PubSub service");
                var pubsub = new PeerTalk.PubSub.NotificationService
                {
                    LocalPeer = await LocalPeer.ConfigureAwait(false)
                };
                pubsub.Routers.Add(new PeerTalk.PubSub.FloodRouter
                {
                    Swarm = await SwarmService.ConfigureAwait(false)
                });
                log.Debug("Built PubSub service");
                return(pubsub);
            });
        }
예제 #8
0
        void Init()
        {
            // Init the core api inteface.
            Bitswap    = new BitswapApi(this);
            Block      = new BlockApi(this);
            Bootstrap  = new BootstrapApi(this);
            Config     = new ConfigApi(this);
            Dag        = new DagApi(this);
            Dht        = new DhtApi(this);
            Dns        = new DnsApi(this);
            FileSystem = new FileSystemApi(this);
            Generic    = new GenericApi(this);
            Key        = new KeyApi(this);
            Name       = new NameApi(this);
            Object     = new ObjectApi(this);
            Pin        = new PinApi(this);
            PubSub     = new PubSubApi(this);
            Stats      = new StatsApi(this);
            Swarm      = new SwarmApi(this);

            // Async properties
            LocalPeer = new AsyncLazy <Peer>(async() =>
            {
                log.Debug("Building local peer");
                var keyChain = await KeyChain();
                log.Debug("Getting key info about self");
                var self                  = await keyChain.FindKeyByNameAsync("self");
                var localPeer             = new Peer();
                localPeer.Id              = self.Id;
                localPeer.PublicKey       = await keyChain.GetPublicKeyAsync("self");
                localPeer.ProtocolVersion = "ipfs/0.1.0";
                var version               = typeof(IpfsEngine).GetTypeInfo().Assembly.GetName().Version;
                localPeer.AgentVersion    = $"net-ipfs/{version.Major}.{version.Minor}.{version.Revision}";
                log.Debug("Built local peer");
                return(localPeer);
            });
            SwarmService = new AsyncLazy <Swarm>(async() =>
            {
                log.Debug("Building swarm service");
                var peer     = await LocalPeer;
                var keyChain = await KeyChain();
                var self     = await keyChain.GetPrivateKeyAsync("self");
                var swarm    = new Swarm
                {
                    LocalPeer    = peer,
                    LocalPeerKey = PeerTalk.Cryptography.Key.CreatePrivateKey(self)
                };
                log.Debug("Built swarm service");
                return(swarm);
            });
            BitswapService = new AsyncLazy <BlockExchange.Bitswap>(async() =>
            {
                log.Debug("Building bitswap service");
                var bitswap = new BlockExchange.Bitswap
                {
                    Swarm        = await SwarmService,
                    BlockService = Block
                };
                log.Debug("Built bitswap service");
                return(bitswap);
            });
            DhtService = new AsyncLazy <PeerTalk.Routing.Dht1>(async() =>
            {
                log.Debug("Building DHT service");
                var dht = new PeerTalk.Routing.Dht1
                {
                    Swarm = await SwarmService
                };
                dht.Swarm.Router = dht;
                log.Debug("Built DHT service");
                return(dht);
            });
        }
예제 #9
0
 private void OnDestroy()
 {
     Debug.Log("Clear");
     MouseApi.Release();
     KeyApi.Release();
 }
예제 #10
0
 public void Init()
 {
     instance = new KeyApi();
 }