public NodeServerTester() { int retry = 0; var network = Network.RegTest; Network = network; while (true) { try { var a = _Rand.Next(4000, 60000); var b = _Rand.Next(4000, 60000); _Server1 = new NodeServer(network, internalPort: a); _Server1.AllowLocalPeers = true; _Server1.ExternalEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1").MapToIPv6Ex(), a); _Server1.Listen(); Assert.True(_Server1.IsListening); _Server2 = new NodeServer(network, internalPort: b); _Server2.AllowLocalPeers = true; _Server2.ExternalEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1").MapToIPv6Ex(), b); _Server2.Listen(); Assert.True(_Server2.IsListening); break; } catch (Exception) { if (_Server1 != null) { _Server1.Dispose(); } if (_Server2 != null) { _Server2.Dispose(); } retry++; if (retry == 5) { throw; } } } }
public Server(IResourceOwner resourceOwner, IPEndPoint externalEndpoint, NBitcoin.Network network) { _Server = new NodeServer(network, internalPort: externalEndpoint.Port); resourceOwner.OwnResource(_Server); NodeConnectionParameters nodeConnectionParameters = new NodeConnectionParameters(); NBitcoin.Protocol.AddressManager addressManager = AddressManager.Instance.GetBitcoinAddressManager(); // new NBitcoin.Protocol.AddressManager (); var addressManagerBehavior = new AddressManagerBehavior(addressManager); // addressManagerBehavior.Mode = hasExternal ? AddressManagerBehaviorMode.AdvertizeDiscover : AddressManagerBehaviorMode.Discover; nodeConnectionParameters.TemplateBehaviors.Add(addressManagerBehavior); _Server.InboundNodeConnectionParameters = nodeConnectionParameters; _Server.AllowLocalPeers = true; //TODO _Server.ExternalEndpoint = externalEndpoint; Trace.Information($"Server setup at {externalEndpoint}"); }
public void CanUseUPNP() { UPnPLease lease = null; UPnPLease.ReleaseAll(NodeServerTester.NATRuleName); //Clean the gateway of previous tests attempt using (var server = new NodeServer(Network.Main)) { server.NATRuleName = NodeServerTester.NATRuleName; Assert.False(server.ExternalEndpoint.Address.IsRoutable(false)); lease = server.DetectExternalEndpoint(); Assert.True(server.ExternalEndpoint.Address.IsRoutable(false)); Assert.NotNull(lease); Assert.True(lease.IsOpen()); lease.Dispose(); Assert.False(lease.IsOpen()); lease = server.DetectExternalEndpoint(); Assert.NotNull(lease); Assert.True(lease.IsOpen()); } Assert.False(lease.IsOpen()); }
public void StartClient() { Skin skin = new Skin { Slim = false, Texture = Encoding.Default.GetBytes(new string('Z', 8192)), SkinType = "Standard_Custom" }; var nodeServer = new NodeServer(_endPoint); PlayerInfo playerInfo = new PlayerInfo { Username = _username, ClientUuid = new UUID(Guid.NewGuid().ToString()), ClientId = ClientId, ServerAddress = "localhost", Skin = skin }; _fromNodeHander = new MockNetworkHandler(this); _toNodeHandler = (BaseMessageHandler)nodeServer.CreatePlayer(_fromNodeHander, playerInfo); if (_toNodeHandler == null) { IsRunning = false; return; } _toNodeHandler.HandleMcpeClientToServerHandshake(null); McpeRequestChunkRadius radius = McpeRequestChunkRadius.CreateObject(); radius.chunkRadius = ChunkRadius; _toNodeHandler.WriteBytes(radius.Encode()); radius.PutPool(); IsRunning = true; }
public static Either <(NodeServer <SketchedChangeDistanceNode>, Communication), Communication> ResolveNodes (NodeServer <SketchedChangeDistanceNode> server, SketchedChangeDistanceNode[] nodes, Random rnd) { throw new Exception(); /*var messages = 0; * var bandwidth = 0; * var sketchFunction = nodes[0].Sketch; * var convexBound = nodes[0].ConvexBound; * * for (int dimension = 4; dimension <= nodes[0].VectorLength / 4; dimension *= 2) * { * var distanceSchemeResolution = DistanceNode.ResolveNodes(server, nodes, rnd); * if (distanceSchemeResolution.IsChoice1) * { * var (newServer, communication) = distanceSchemeResolution.GetChoice1; * return (newServer, communication.Add(new Communication(bandwidth, messages))); * } * * messages += distanceSchemeResolution.GetChoice2.Messages; * bandwidth += distanceSchemeResolution.GetChoice2.Bandwidth; * var currentDimension = dimension; * var (sketches, epsilons, invokedIndices) = nodes.Select(n => sketchFunction.Sketch(n.ChangeVector, currentDimension)).UnZip(); * messages += nodes.Length * 2; * bandwidth += invokedIndices.Sum(i => i.Dimension) * 2; * var averageChangeSketch = Vector.AverageVector(sketches); * messages += nodes.Length; * bandwidth += InvokedIndices.Combine(invokedIndices).Dimension * 2 * nodes.Length; * for (int i = 0; i < nodes.Length; i++) * { * nodes[i].Reset(nodes[i].ReferencePoint + averageChangeSketch, epsilons[i]); * nodes[i].SlackDistance = 0; * nodes[i].ThingsChangedUpdateState(); * } * if (nodes.All(n => n.UsedDistance <= 0)) * return (server, new Communication(bandwidth, messages)); * } * * return new Communication(bandwidth, messages);*/ }
public void CanDownloadLastBlocks() { using (var server = new NodeServer(Network.TestNet)) { var node = server.GetLocalNode(); var chain = node.BuildChain(); Assert.True(node.FullVersion.StartHeight <= chain.Height); var subChain = chain.CreateSubChain(chain.ToEnumerable(true).Skip(99).First(), true, chain.Tip, true); var begin = node.Counter.Snapshot(); var blocks = node.GetBlocks(subChain).Select(_ => 1).ToList(); var end = node.Counter.Snapshot(); var diff = end - begin; Assert.True(diff.Start == begin.Taken); Assert.True(diff.Taken == end.Taken); Assert.True(diff.TotalReadenBytes == end.TotalReadenBytes - begin.TotalReadenBytes); Assert.True(diff.TotalWrittenBytes == end.TotalWrittenBytes - begin.TotalWrittenBytes); Assert.True(blocks.Count == 100); } }
public ListenerTester(ServerTester tester) { _Network = tester.Configuration.Indexer.Network; Random rand = new Random(); _Server = tester; _Server._disposables.Add(this); _Listener = new QBitNinjaListener(_Server.Configuration); _NodeServer = new NodeServer(_Server.Configuration.Indexer.Network, internalPort: rand.Next(20000, 50000)); _NodeListener = new EventLoopMessageListener <IncomingMessage>(NewNodeMessage); _NodeServer.ExternalEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), _NodeServer.LocalEndpoint.Port); _NodeServer.AllowLocalPeers = true; _NodeServer.IsRelay = true; _NodeServer.AllMessages.AddMessageListener(_NodeListener); _NodeServer.Listen(); _Listener.Configuration.Indexer.Node = "127.0.0.1:" + _NodeServer.LocalEndpoint.Port; _Listener.Listen(); _Server.ChainBuilder.SkipIndexer = true; _Server.ChainBuilder.NewBlock += ChainBuilder_NewBlock; _Server.ChainBuilder.NewTransaction += ChainBuilder_NewTransaction; }
public void CanGetMyIp() { var client = new NodeServer(Network.Main, ProtocolVersion.PROTOCOL_VERSION); Assert.True(client.GetMyExternalIP() != null); }
public Task <IEnumerable <Package> > GetPackagesAsync(NodeServer server) => Task.FromResult <IEnumerable <Package> >(_nodePackages.ToList());
public static string GetDistributedLockName(this ComponentHostInstanceSettingsWithPublisher component, NodeServer node) => $"{node.NetworkName}.{component.PackageName}.{component.Id}";
public static void Cleanup() { NodeServer.Down(); }
public void Start() { this.parameters.UserAgent = "StratisBitcoin:" + GetVersion(); this.parameters.Version = this.NodeSettings.ProtocolVersion; if (this.connectionManagerSettings.Connect.Count == 0) { NodeConnectionParameters cloneParameters = this.parameters.Clone(); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(false, this)); this.DiscoveredNodeGroup = CreateNodeGroup(cloneParameters, this.discoveredNodeRequiredService); this.DiscoveredNodeGroup.CustomGroupSelector = WellKnownGroupSelectors.ByNetwork; //is the default, but I want to use it this.DiscoveredNodeGroup.Connect(); } else { NodeConnectionParameters cloneParameters = this.parameters.Clone(); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(false, this)); cloneParameters.TemplateBehaviors.Remove <AddressManagerBehavior>(); var addrman = new AddressManager(); addrman.Add(this.connectionManagerSettings.Connect.Select(c => new NetworkAddress(c)).ToArray(), IPAddress.Loopback); var addrmanBehavior = new AddressManagerBehavior(addrman); addrmanBehavior.Mode = AddressManagerBehaviorMode.None; cloneParameters.TemplateBehaviors.Add(addrmanBehavior); this.ConnectNodeGroup = CreateNodeGroup(cloneParameters, NodeServices.Nothing); this.ConnectNodeGroup.MaximumNodeConnection = this.connectionManagerSettings.Connect.Count; this.ConnectNodeGroup.CustomGroupSelector = WellKnownGroupSelectors.ByEndpoint; this.ConnectNodeGroup.Connect(); } { NodeConnectionParameters cloneParameters = this.parameters.Clone(); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(false, this)); cloneParameters.TemplateBehaviors.Remove <AddressManagerBehavior>(); var addrman = new AddressManager(); addrman.Add(this.connectionManagerSettings.AddNode.Select(c => new NetworkAddress(c)).ToArray(), IPAddress.Loopback); var addrmanBehavior = new AddressManagerBehavior(addrman); addrmanBehavior.Mode = AddressManagerBehaviorMode.AdvertizeDiscover; cloneParameters.TemplateBehaviors.Add(addrmanBehavior); this.AddNodeNodeGroup = CreateNodeGroup(cloneParameters, NodeServices.Nothing); this.AddNodeNodeGroup.MaximumNodeConnection = this.connectionManagerSettings.AddNode.Count; this.AddNodeNodeGroup.CustomGroupSelector = WellKnownGroupSelectors.ByEndpoint; this.AddNodeNodeGroup.Connect(); } StringBuilder logs = new StringBuilder(); logs.AppendLine("Node listening on:"); foreach (NodeServerEndpoint listen in this.connectionManagerSettings.Listen) { NodeConnectionParameters cloneParameters = this.parameters.Clone(); var server = new NodeServer(this.Network); server.LocalEndpoint = listen.Endpoint; server.ExternalEndpoint = this.connectionManagerSettings.ExternalEndpoint; this.Servers.Add(server); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(true, this) { Whitelisted = listen.Whitelisted }); server.InboundNodeConnectionParameters = cloneParameters; server.Listen(); logs.Append(listen.Endpoint.Address + ":" + listen.Endpoint.Port); if (listen.Whitelisted) { logs.Append(" (whitelisted)"); } logs.AppendLine(); } Logs.ConnectionManager.LogInformation(logs.ToString()); }
public Task <IEnumerable <Package> > GetComponentPackagesAsync(NodeServer node) => Task.FromResult <IEnumerable <Package> >(_componentPackages.ToList());
public Task <IEnumerable <ComponentHostInstanceSettingsWithPublisher> > GetComponentInstanceSettingsAsync(NodeServer node) => Task.FromResult <IEnumerable <ComponentHostInstanceSettingsWithPublisher> >(_componentInstances.ToList());
/// <summary> /// /// </summary> internal NodeConnectionHandler(NodeServer server, MqConnectionHandler connectionHandler) { _server = server; _connectionHandler = connectionHandler; }
public NodeWebApiAccessService(NodeServer clientNode) { ClientNode = clientNode; WebApiClient = RestClientFactory.GetClient(ClientNode.NodeApiUri); WebApiClient.ConfigureWebRequest(r => r.KeepAlive = false); }
public void Start() { this.logger.LogTrace("()"); this.parameters.UserAgent = $"{this.NodeSettings.Agent}:{this.GetVersion()}"; this.parameters.Version = this.NodeSettings.ProtocolVersion; if (this.connectionManagerSettings.Connect.Count == 0) { NodeConnectionParameters cloneParameters = this.parameters.Clone(); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(false, this, this.loggerFactory)); this.DiscoveredNodeGroup = CreateNodeGroup(cloneParameters, this.discoveredNodeRequiredService); this.DiscoveredNodeGroup.CustomGroupSelector = WellKnownGroupSelectors.ByNetwork; // It is the default, but I want to use it. } else { NodeConnectionParameters cloneParameters = this.parameters.Clone(); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(false, this, this.loggerFactory)); cloneParameters.TemplateBehaviors.Remove <AddressManagerBehavior>(); var addrman = new AddressManager(); addrman.Add(this.connectionManagerSettings.Connect.Select(c => new NetworkAddress(c)).ToArray(), IPAddress.Loopback); var addrmanBehavior = new AddressManagerBehavior(addrman) { PeersToDiscover = 10 }; addrmanBehavior.Mode = AddressManagerBehaviorMode.None; cloneParameters.TemplateBehaviors.Add(addrmanBehavior); this.ConnectNodeGroup = CreateNodeGroup(cloneParameters, NodeServices.Nothing); this.ConnectNodeGroup.MaximumNodeConnection = this.connectionManagerSettings.Connect.Count; this.ConnectNodeGroup.CustomGroupSelector = WellKnownGroupSelectors.ByEndpoint; } { NodeConnectionParameters cloneParameters = this.parameters.Clone(); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(false, this, this.loggerFactory)); cloneParameters.TemplateBehaviors.Remove <AddressManagerBehavior>(); var addrman = new AddressManager(); addrman.Add(this.connectionManagerSettings.AddNode.Select(c => new NetworkAddress(c)).ToArray(), IPAddress.Loopback); var addrmanBehavior = new AddressManagerBehavior(addrman) { PeersToDiscover = 10 }; addrmanBehavior.Mode = AddressManagerBehaviorMode.AdvertizeDiscover; cloneParameters.TemplateBehaviors.Add(addrmanBehavior); this.AddNodeNodeGroup = CreateNodeGroup(cloneParameters, NodeServices.Nothing); this.AddNodeNodeGroup.MaximumNodeConnection = this.connectionManagerSettings.AddNode.Count; this.AddNodeNodeGroup.CustomGroupSelector = WellKnownGroupSelectors.ByEndpoint; } // Related the groups to each other to prevent duplicate connections. RelatedNodesGroups relGroups = new RelatedNodesGroups(); relGroups.Register("Discovered", this.DiscoveredNodeGroup); relGroups.Register("Connect", this.ConnectNodeGroup); relGroups.Register("AddNode", this.AddNodeNodeGroup); this.DiscoveredNodeGroup?.Connect(); this.ConnectNodeGroup?.Connect(); this.AddNodeNodeGroup?.Connect(); StringBuilder logs = new StringBuilder(); logs.AppendLine("Node listening on:"); foreach (NodeServerEndpoint listen in this.connectionManagerSettings.Listen) { NodeConnectionParameters cloneParameters = this.parameters.Clone(); var server = new NodeServer(this.Network) { LocalEndpoint = listen.Endpoint, ExternalEndpoint = this.connectionManagerSettings.ExternalEndpoint }; this.Servers.Add(server); cloneParameters.TemplateBehaviors.Add(new ConnectionManagerBehavior(true, this, this.loggerFactory) { Whitelisted = listen.Whitelisted }); server.InboundNodeConnectionParameters = cloneParameters; server.Listen(); logs.Append(listen.Endpoint.Address + ":" + listen.Endpoint.Port); if (listen.Whitelisted) { logs.Append(" (whitelisted)"); } logs.AppendLine(); } this.logger.LogInformation(logs.ToString()); this.logger.LogTrace("(-)"); }
public MiniNode(IndexerTester tester, NodeServer server) { _Generator = new ChainBuilder(tester); _Server = server; server.AllMessages.AddMessageListener(new NewThreadMessageListener <IncomingMessage>(ProcessMessage)); }
protected bool AddressManagerContains(NodeServer nodeServer, IPEndPoint ipEndPoint) { return(AddressManagerContains(AddressManagerBehavior.GetAddrman(nodeServer.InboundNodeConnectionParameters.TemplateBehaviors), ipEndPoint)); }
public static INodeAccessService Get(NodeServer node) => _nodeAccessors.GetOrAdd(node, n => new NodeWebApiAccessService(node));
static void Main(string[] args) { var h = DBFactory.CreateDBHelper(@"Data Source=E:\git\memberManager\db\membermanager.db;Version=3;", DBType.SQLite); var tb = h.GetTableWithSQL("SELECT NAME FROM sqlite_master WHERE type='table'"); #region id generator IIDGenerator iDGenerator = IDGeneratorFactory.Create(GeneratorType.SnowFlak); List <string> idlist = new List <string>(); for (int i = 0; i < 10000; i++) { idlist.Add(iDGenerator.Generate()); } #endregion TestClass tc = new TestClass { tc = new TestClass { a = "hello", b = "word", tc = new TestClass { a = "deep", } }, test = new List <TestClass> { new TestClass { a = "<", } }, }; #region xml testing TestRequest req = new TestRequest { c = new TestClass { a = "a", b = "b", d = "d", dt = DateTime.Now, } }; ISerializable serial = new XmlSerializor(); var xml = serial.Serialize(req); var obj = serial.Deserialize <TestRequest>(xml); Dictionary <string, object> arg = new Dictionary <string, object>(); arg["a"] = "a"; arg["b"] = 3; arg["c"] = req; xml = serial.Serialize(arg); var dicobj = serial.Deserialize <Dictionary <string, object> >(xml); #endregion //string jsonstring = "{\"Buyers\":[{\"ID\":\"395f7ce8de8340eda2dfd22098c81290\",\"Name\":\"爱的色放\",\"CardType\":\"1\",\"IdentityCode\":\"4444444444\",\"Phone\":\"123123123123\",\"Gender\":\"1\",\"Marrage\":\"1\",\"Address\":\"啊都是法师打发而且额外人\",\"OrignalName\":\"\",\"OrignalIdentityCode\":\"\",\"BankCode\":\"\",\"BankType\":\"1\",\"WorkUnit\":\"\",\"Quotient\":\"222\"},{\"ID\":\"\",\"Name\":\"阿萨法 \",\"CardType\":\"1\",\"IdentityCode\":\"986799283948723984\",\"Phone\":\"123123\",\"Gender\":\"2\",\"Marrage\":\"1\",\"Address\":\"三个地方集团研究研究\",\"OrignalName\":\"\",\"OrignalIdentityCode\":\"\",\"BankCode\":\"\",\"BankType\":\"\",\"WorkUnit\":\"\",\"Quotient\":\"333\"},{\"ID\":\"712feaff6c034244ab3f066268b9fe5a\",\"Name\":\"阿斯顿飞\",\"CardType\":\"1\",\"IdentityCode\":\"12312312312323\",\"Phone\":\"123123123\",\"Gender\":\"1\",\"Marrage\":\"1\",\"Address\":\"嘎达嗦嘎多个地方十多个地方各个\",\"OrignalName\":\"\",\"OrignalIdentityCode\":\"\",\"BankCode\":\"\",\"BankType\":\"1\",\"WorkUnit\":\"\",\"Quotient\":\"222\"}],\"Sellers\":[{\"ID\":\"55b71c225dc841a7b99ead4cecc601c5\",\"Name\":\"aeeboo\",\"CardType\":\"1\",\"IdentityCode\":\"234234235235\",\"Phone\":\"324234234234\",\"Gender\":\"1\",\"Marrage\":\"2\",\"Address\":\"的方式购房合同和投入和\",\"OrignalName\":\"\",\"OrignalIdentityCode\":\"\",\"BankCode\":\"\",\"BankType\":\"2\",\"WorkUnit\":\"\",\"Quotient\":\"111\"},{\"ID\":\"\",\"Name\":\"阿萨德飞44\",\"CardType\":\"1\",\"IdentityCode\":\"237856234\",\"Phone\":\"34234234\",\"Gender\":\"1\",\"Marrage\":\"1\",\"Address\":\"然后统一集团研究与\",\"OrignalName\":\"\",\"OrignalIdentityCode\":\"\",\"BankCode\":\"\",\"BankType\":\"\",\"WorkUnit\":\"\",\"Quotient\":\"123\"}],\"Assets\":[{\"ID\":\"\",\"Code\":\"44444444\",\"Usage\":\"1\",\"Position\":\"2\",\"Address\":\"景田西路八个道路\",\"Area\":\"123\",\"RegPrice\":\"44232\"},{\"ID\":\"\",\"Code\":\"1412412132\",\"Usage\":\"1\",\"Position\":\"1\",\"Address\":\"水电费个人个人高\",\"Area\":\"234324\",\"RegPrice\":\"123123\"}],\"Project\":{\"Source\":\"1\",\"AgentName\":\"213213\",\"CertificateData\":\"2015-08-05\",\"AgentContact\":\"\",\"Rebater\":\"\",\"RebateAccount\":\"\",\"OtherRebateInfo\":\"\",\"OrignalMortgageBank\":\"1\",\"OrignalMortgageBranch\":\"阿斯顿发顺丰\",\"OrignalFundCenter\":\"1\",\"OrignalFundBranch\":\"\",\"SupplyCardCopy\":\"\",\"OrignalCreditPI\":\"123123\",\"OrignalCreditCommerceMoney\":\"123\",\"OrignalCreditFundMoney\":\"123\",\"AssetRansomCustomerManager\":\"124142\",\"AssetRansomContactPhone\":\"24124\",\"NewCreditBank\":\"1\",\"NewCreditBranch\":\"2r323\",\"ShortTermAssetRansomBank\":\"1\",\"ShortTermAssetRansomBranch\":\"\",\"GuaranteeMoney\":\"123\",\"GuaranteeMonth\":\"1231\",\"BuyerCreditCommerceMoney\":\"213\",\"BuyerCreditFundMoney\":\"2\",\"LoanMoney\":\"123123\",\"DealMoney\":\"123123\",\"EarnestMoney\":\"123123\",\"SupervisionMoney\":\"123123\",\"SupervisionBank\":\"12123\",\"AssetRansomMoney\":\"122323\",\"CustomerPredepositMoney\":\"323232\",\"CreditReceiverName\":\"23123\",\"CreditReceiverBank\":\"2323\",\"CreditReceiverAccount\":\"2323\",\"TrusteeshipAccount\":\"\",\"AssetRansomPredictMoney\":\"2323\",\"AssetRansomer\":\"232323\",\"AssetRansomType\":\"1\",\"PredictDays\":\"2323\",\"ChargeType\":\"1\",\"CheckNumbersAndLimit\":\"123123\",\"Stagnationer\":\"\"},\"token\":\"0cbbd08b6b694428a30afe52098e5f7a\"}"; //var json = JsonHelper.Deserialize<AddProjectServiceForm>(jsonstring); #region domain //AppDomain.CurrentDomain.AssemblyLoad += CurrentDomain_AssemblyLoad; //AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve1; //AppDomainSetup info = new AppDomainSetup(); //info.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory + "Modules"; //AppDomain domain = AppDomain.CreateDomain("mydomain", null, info); //Console.WriteLine(domain.BaseDirectory); //var allass = domain.GetAssemblies(); //var ass = domain.Load(new AssemblyName("Controller")); //allass = domain.GetAssemblies(); //var type = ass.GetType("SOAFramework.Library.HttpServer"); //var instance = Activator.CreateInstance(type, null); //var start = type.GetMethod("Start"); //start.Invoke(instance, new object[] { new string[] { "http://10.1.50.195:8094/c" } }); //domain.AssemblyLoad += Domain_AssemblyLoad; #endregion #region http server Console.WriteLine("begin"); NodeServer nodeserver = new NodeServer("http://10.1.50.195:8094/"); nodeserver.Start(); Console.ReadLine(); //nodeserver.Close(); HttpServer server = new HttpServer(new string[] { "http://10.1.50.195:8094/a" }); server.Executing += new HttpExecutingHandler((a, b) => { StreamReader reder = new StreamReader(b.Request.InputStream, System.Text.Encoding.UTF8); string post = reder.ReadToEnd(); Console.WriteLine("key:" + post); return(""); }); server.Start(); //HttpServer server2 = new HttpServer(new string[] { "http://10.1.50.195:8094/b" }); //server2.Start(); Console.ReadLine(); string[] prefix = new string[] { "http://*****:*****@"http://localhost/Service/Execute/SOAFramework.Service.Server.DefaultService/DiscoverService", data); testresult = ZipHelper.UnZip(testresult); List <ServiceInfo> serviceList = JsonHelper.Deserialize <List <ServiceInfo> >(testresult); string path = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + @"\Templates\SDKRequest.cst"; Dictionary <string, object> argsCodeSmith = new Dictionary <string, object>(); argsCodeSmith["RequestNameSpace"] = "a.b.c"; argsCodeSmith["ServiceInfo"] = serviceList[0]; string render = CodeSmithHelper.GenerateString(path, argsCodeSmith); string fileName = AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\') + "\\SOAFramework.Library.CodeSmithConsole.exe "; Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = fileName; p.StartInfo.Arguments = " " + path.Replace(@"\\", @"\" + " ") + " " + JsonHelper.Serialize(argsCodeSmith).Replace("\"", "\\\"") + " "; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.Start(); p.WaitForExit(); return; #endregion #region razor //string strr = File.ReadAllText("Temp.txt"); //Dictionary<string, object> dicargs = new Dictionary<string, object>(); //dicargs["a"] = "22222"; //string r = Razor.Parse(strr, dicargs); #endregion #region json tester //List<TestClass> list = new List<TestClass>(); //for (int i = 0; i < 10; i++) //{ // TestClass c = new TestClass // { // a = "a" + i.ToString(), // b = "b" + i.ToString(), // dic = new Dictionary<string, string>(), // }; // c.dic["dic1"] = "dic1" + i.ToString(); // c.dic["dic2"] = "dic2" + i.ToString(); // c.dic["dic3"] = "dic3" + i.ToString(); // c.test = new List<TestClass>(); // c.test.Add(new TestClass { a = "aa" + i.ToString(), b = "bb" + i.ToString() }); // c.test.Add(new TestClass { a = "cc" + i.ToString(), b = "dd" + i.ToString() }); // list.Add(c); //} //watch.Start(); //string strjson = JsonHelper.Serialize(list, false); //watch.Stop(); //Console.WriteLine("序列化:{0}", watch.ElapsedMilliseconds); //watch.Reset(); //watch.Start(); //List<TestClass> list1 = JsonHelper.Deserialize<List<TestClass>>(strjson); //watch.Stop(); //Console.WriteLine("反序列化:{0}", watch.ElapsedMilliseconds); //TestResponse re = JsonHelper.Deserialize<TestResponse>("{\"IsError\":false,\"Data\":[{\"InterfaceName\":\"SOAFramework.Service.Server.DefaultService.DiscoverService\"}]}"); #endregion #region custom wcf binding //string baseAddress = "Http://localhost/Service"; //ServiceHost host = new WebServiceHost(typeof(SOAService), new Uri(baseAddress)); //host.AddServiceEndpoint(typeof(IService), new BasicHttpBinding(), "soap"); //WebHttpBinding webBinding = new WebHttpBinding(); //webBinding.ContentTypeMapper = new MyRawMapper(); //host.AddServiceEndpoint(typeof(IService), webBinding, "json").Behaviors.Add(new NewtonsoftJsonBehavior()); //Console.WriteLine("Opening the host"); //host.Open(); //ChannelFactory<IService> factory = new ChannelFactory<IService>(new BasicHttpBinding(), new EndpointAddress(baseAddress + "/soap")); //IService proxy = factory.CreateChannel(); //byte[] newdata; //TestClass c1 = new TestClass(); //c1.a = "a"; //List<TestClass> list1 = new List<TestClass>(); //list1.Add(c1); //string strnewdata = JsonHelper.Serialize(list1); //newdata = Encoding.UTF8.GetBytes(strnewdata); //string newtestresult = HttpHelper.Post(@"http://localhost/Service/SOAFramework.Service.Server.DefaultService/DiscoverService", newdata); //Console.WriteLine("Now using the client formatter"); //ChannelFactory<IService> newFactory = new ChannelFactory<IService>(webBinding, new EndpointAddress(baseAddress + "/json")); //newFactory.Endpoint.Behaviors.Add(new NewtonsoftJsonBehavior()); //IService newProxy = newFactory.CreateChannel(); //Console.WriteLine("Press ENTER to close"); //Console.ReadLine(); //host.Close(); //Console.WriteLine("Host closed"); #endregion #region wcf host WebServiceHost newhost = new WebServiceHost(typeof(SOAService)); newhost.Open(); newhost.Ping(); #endregion #region zip tester string zip = "i am a string, to be zipped!"; string zipped = ZipHelper.Zip(zip, System.Text.Encoding.Default); zip = ZipHelper.UnZip(zipped); #endregion #region orm //string abc = Model.Users.Mapping.ColumnsMapping["PK_UserID"].ToString(); //a c = new a(); //c.b = "haha "; //c.t = new a(); //c.t.b = "aaaaaa"; //string str1 = JsonHelper.Serialize(c); //c = JsonHelper.Deserialize<a>(str1); //FTPClient f = new FTPClient(); //f.FtpUrl = "ftp://localhost/"; //f.FileName = "ha.txt"; //f.UserName = "******"; //f.Password = "******"; //f.BufferSize = 10; //f.LocalFilePath = "e:"; //f.Download(); //sw.Stop(); //Console.WriteLine("linq:" + sw.ElapsedTicks); //Model.Users objUser = new Model.Users(); //Hashtable htArgs = new Hashtable(); //htArgs["str"] = "ok"; //WebServiceCaller wsCaller = new WebServiceCaller(); //wsCaller.Action = "PostTest"; //wsCaller.Args = htArgs; //wsCaller.Action = "GetTest"; //wsCaller.WSUrl = @"http://*****:*****@"F:\TestOut.docx"; //List<MethodArg> lstArg = new List<MethodArg>(); //lstArg.Add(new MethodArg("there")); //cr.RequestData.MethodArgs = lstArg.ToArray(); //cr.RequestType = WSDataType.JSON; //string str = cr.GetRequestString(); //cr.ResponseType = WSDataType.JSON; //string strReturn = cr.SendRequest(); //ServerResponse response = cr.GetResponse(); //byte[] bytTemp = response.ResponseData; //Stream sw = File.Open(strFileName, FileMode.OpenOrCreate, FileAccess.Write); //sw.Write(bytTemp, 0, bytTemp.Length); //sw.Close(); //Model.Users u = new Model.Users(); //Model.Customer_AutoIncrease t = new Model.Customer_AutoIncrease(); #endregion #region soa tester //testresult = HttpUtility.Get("http://localhost/Service/GetTest"); argslist.Add(new SOAFramework.Service.SDK.Core.PostArgItem { Key = "url", Value = "http://localhost/" }); //argslist.Add(new PostArgItem { Key = "usage", Value = "1.00" }); strData = JsonHelper.Serialize("http://localhost/"); //strData = "\"" + strData + "\""; data = System.Text.Encoding.UTF8.GetBytes(strData); testresult = HttpHelper.Post(@"http://*****:*****@"http://localhost/Service/Execute/SOAFramework.Service.Server.DefaultService/DiscoverService", data); testresult = ZipHelper.UnZip(testresult); watch.Stop(); Console.WriteLine("发现服务测试耗时{0}", watch.ElapsedMilliseconds); watch.Restart(); argslist.Clear(); strData = JsonHelper.Serialize(argslist); data = System.Text.Encoding.UTF8.GetBytes(strData); testresult = HttpHelper.Post(@"http://localhost/Service/Execute/SOAFramework.Service.Server.DefaultService/BigDataTest", data); watch.Stop(); Console.WriteLine("大数据测试耗时{0}", watch.ElapsedMilliseconds); watch.Restart(); //download test string filename = "预付款类型批量导入.xls"; testresult = HttpHelper.Get(@"http://localhost/Service/Download/" + filename); //testresult = ZipHelper.UnZip(testresult); testresult.ToFile("D:\\" + filename); watch.Stop(); Console.WriteLine("下载测试耗时{0}", watch.ElapsedMilliseconds); watch.Restart(); //uploadtest string uploadFileName = "D:\\预付款类型批量导入.xls"; FileInfo file = new FileInfo(uploadFileName); string fileString = file.FileToString(); data = System.Text.Encoding.UTF8.GetBytes(fileString); testresult = HttpHelper.Post(@"http://localhost/Service/Upload/" + file.Name, data); watch.Stop(); Console.WriteLine("上传测试耗时{0}", watch.ElapsedMilliseconds); watch.Restart(); int count = 10000; //for (int i = 0; i < count; i++) //{ // List<SOAFramework.Service.SDK.Core.PostArgItem> list = new List<SOAFramework.Service.SDK.Core.PostArgItem>(); // list.Add(new SOAFramework.Service.SDK.Core.PostArgItem { Key = "a", Value = JsonHelper.Serialize("hello world") }); // list.Add(new SOAFramework.Service.SDK.Core.PostArgItem { Key = "b", Value = JsonHelper.Serialize(new TestClass { a = "a", b = "b" }) }); // //list.Add(new PostArgItem { Key = "a", Value = "hello world" }); // //list.Add(new PostArgItem { Key = "b", Value = new TestClass { a = "a", b = "b" } }); // strData = JsonHelper.Serialize(list); // data = System.Text.Encoding.UTF8.GetBytes(strData); // //testresult = HttpHelper.Post(@"http://localhost/Service/Execute/SOAFramework.Service.Server.SOAService/Test", data); // testresult = ZipHelper.UnZip(testresult); // PerformanceRequest prequest = new PerformanceRequest(); // prequest.a = "hello world"; // prequest.b = new TestClass { a = "a", b = "b" }; // PerformanceResponse presponse = SDKFactory.Client.Execute(prequest); //} watch.Stop(); Console.WriteLine("{1}次测试耗时{0}", watch.ElapsedMilliseconds, count); #endregion #region sdk testing //TestRequest request = new TestRequest(); //TestResponse reseponse = SDKFactory.Client.Execute(request); #endregion Console.ReadLine(); }
public async Task <bool> Start(string[] args, CancellationTokenSource quiteToken) { _quitToken = quiteToken; if (_quitToken.IsCancellationRequested) { return(false); } var dataPath = "heleusdata"; var genesis = false; var sync = false; var run = false; var init = false; var newChainConfig = false; if (args.Length == 1) { dataPath = args[0]; run = true; } else if (args.Length == 2) { dataPath = args[0]; var cmd = args[1]; if (cmd == "init") { init = true; } else if (cmd == "run") { run = true; } else if (cmd == "sync") { sync = true; } else if (cmd == "chainconfig") { newChainConfig = true; } else if (cmd == "genesis") { genesis = true; } else { Usage(); return(false); } } else { Usage(); return(false); } if ((run || sync) && !File.Exists(Path.Combine(dataPath, $"{nameof(NodeConfig).ToLower()}.txt"))) { Usage(); var dp = new DirectoryInfo(dataPath); Log.Error($"Data path {dp.FullName} not initalized.", this); return(false); } Storage = new Storage(dataPath); if (!Storage.IsWriteable) { Log.Fatal($"Data path {Storage.Root} is not writeable!", this); return(false); } if (genesis) { Storage.DeleteDirectory("cache"); Storage.DeleteDirectory("chains"); } PubSub = Log.PubSub = new PubSub(); Log.Write($"Starting Heleus Node (Version {Program.Version})."); Log.Trace($"PID {System.Diagnostics.Process.GetCurrentProcess().Id}"); Log.Write($"Data path is '{Storage.Root.FullName}'."); var config = Config.Load <NodeConfig>(Storage); Log.AddIgnoreList(config.LogIgnore); Log.LogLevel = config.LogLevel; if (Program.IsDebugging) { Log.LogLevel = LogLevels.Trace; } if (newChainConfig) { var chainConfig = Config.Load <ChainConfig>(Storage, true); //if (chainConfig.Chains.Count == 0) { Log.Write("Chain config generated."); chainConfig.Chains.Add(new ChainConfig.ChainInfo { ChainKeys = new List <ChainConfig.ChainKeyInfo> { new ChainConfig.ChainKeyInfo { ChainKey = string.Empty, ChainKeyPassword = string.Empty, AttachementKey = -1 } } }); Config.Save(chainConfig); } return(false); } if (init) { Log.Write("Config file generated."); return(false); } if (!genesis) { if (config.NetworkPublicKey.IsNullOrEmpty()) { Log.Write("Network key not set. Querying beacon nodes."); var beacons = config.BeaconNodes; foreach (var beacon in beacons) { Log.Write($"Querying beacon node {beacon}."); var client = new NodeClient(new Uri(beacon)); var nodeInfo = (await client.DownloadNodeInfo()).Data; if (nodeInfo != null) { config.NetworkPublicKey = nodeInfo.NetworkKey.HexString; Config.Save(config); Log.Write($"Network key set to {config.NetworkPublicKey}."); break; } } } if (config.NetworkPublicKey.IsNullOrEmpty()) { Log.Write("No valid network key found or set.", this); return(false); } } NodeConfiguration = new NodeConfiguration(config, Config.Load <CoreKeyConfig>(Storage, false), Config.Load <ChainConfig>(Storage, false)); Host = new Host(config); AttachementManager = new AttachementManager(this); ChainManager = new ChainManager(this); if (!await ChainManager.Initalize()) { return(false); } if (genesis) { var result = GenesisBlock.Generate(Storage); var blockData = new BlockData <CoreBlock>(result.Block, result.Signature); await ChainManager.Start(false); await ChainManager.CoreChain.BlockStorage.StoreBlock(blockData); ChainManager.ConsumeBlockData(blockData); Log.Write($"Genesis block and keys generated. Network public key: {result.NetworkPublicKey.HexString}."); var coreKeyConfig = Config.Load <CoreKeyConfig>(Storage); coreKeyConfig.Key = result.NetworkVoteKey.HexString; coreKeyConfig.Password = result.NetworkVotePassword; config.NetworkPublicKey = result.NetworkPublicKey.HexString; Config.Save(config); Config.Save(coreKeyConfig); await ChainManager.Stop(); await ChainManager.Start(true); if (result.ServiceTransactions.Count > 0) { foreach (var serviceTransactions in result.ServiceTransactions) { var chainId = serviceTransactions.Key; var transactions = serviceTransactions.Value; var serviceChain = ChainManager.GetServiceChain(chainId); var maintainChain = ChainManager.GetMaintainChain(chainId); if (serviceChain != null) { var generator = new ServiceBlockGenerator(ChainManager.CoreChain, serviceChain, maintainChain, null); foreach (var transaction in transactions) { generator.ConsumeTransaction(transaction); } var serviceBlock = generator.GenerateBlock(0, 0); var serviceBlockData = new BlockData <ServiceBlock>(serviceBlock, new BlockSignatures(serviceBlock)); await serviceChain.BlockStorage.StoreBlock(serviceBlockData); serviceChain.ConsumeBlockData(serviceBlockData); } } } await ChainManager.Stop(); return(false); } SyncManager = new SyncManager(this); await SyncManager.Start(); //if (!await SyncManager.Start()) // return false; if (sync) { Log.Write("Sync done."); return(false); } AttachementManager.Start(); Kademlia = new Kademlia(Storage, this); TransactionManager = new TransactionManager(this); CouncilManager = new CouncilManager(this); NodeServer = new NodeServer(this, config.MaxIncomingConnections, config.MaxOutgoingConnectoins); ClientServer = new ClientServer(this); if (Host.EnableRemoteServices) { ServiceServer = new ServiceServer(); } await(Host as Host).Start(this); return(true); }