public static Task <ContentViewModel> Reload(string viewState) { using (var content = StorageServer.Load <Content, ContentViewModel>(viewState, out ViewModel)) { return(content.ViewModelTask <Content, ContentViewModel>()); } }
public static Task <CalculatorViewModel> Load(Storage sessionStorage) { using (var calculator = StorageServer.Load <Calculator, CalculatorViewModel>(null, out CalculatorViewModel, sessionStorage)) { return(calculator.ViewModelTask <Calculator, CalculatorViewModel>()); } }
public async System.Threading.Tasks.Task RunAsync() { Console.WriteLine("CHECK STORAGE"); if (await context.StorageServers.CountAsync() == 0) { var newStorage = new StorageServer { ServerLoad = "50", Name = "default", Comments = "default", IP = "default", Path = "default", Size = "default", Url = "default" }; await context.StorageServers.AddAsync(newStorage); await context.SaveChangesAsync(); } Console.WriteLine("END CHECK STORAGE"); // await PullHomePageSliderFormTheSourceAsync(); // RunProgramForSlideShow(); //await RunProgramForSeriesAsync(); //await RunProgramForMoviesAsync(); await RunProgramForSeriesEpisodeAsync(); }
public void LoadLocalData() { if (this.InvokeRequired) { LoadDelegate ld = new LoadDelegate(LoadLocalData); this.Invoke(ld); } else { CustomerServer.GetCustomerAndRegion(ref _ht_Sender, ref _ht_Receiv, ref _ht_Region); FrmParent.ParentForm._AllRegion = RegionServer.GetAllRegion(); _storage_Scan = StorageServer.GetAllStorageScan(); _UCSenderInfo = new UCCustomerInfo(true); _UCRecevInfo = new UCCustomerInfo(false); _UCSenderInfo.Parent = this; _UCRecevInfo.Parent = this; _UCSenderInfo.Dock = DockStyle.None; _UCRecevInfo.Dock = DockStyle.None; _UCSenderInfo.Visible = false; _UCRecevInfo.Visible = false; _UCSenderInfo.Load(); _UCRecevInfo.Load(); } }
private void InitStorageList() { Cursor.Current = Cursors.WaitCursor; try { cboStorage.Items.Clear(); cboStorage.DisplayMember = "remark"; cboStorage.ValueMember = "storageName"; List <ColdStorage> list = StorageServer.GetStorageList(null); foreach (ColdStorage item in list) { item.remark = string.Format("{0} [{1}] {2}", item.storageName, item.storageType == 1 ? "冷库" : "车载", item.driver); int index = cboStorage.Items.Add(item); if (item.storageName.Replace("[默认]", "") == Common._StorageName) { cboStorage.SelectedIndex = index; } } } catch (Exception ex) { MessageBox.Show(ex.Message, "加载失败", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1); } finally { Cursor.Current = Cursors.Default; } }
/// <summary> /// 更新冷藏载体信息 /// </summary> /// <param name="result">冷藏载体信息</param> private static void UpdateStorages(ResultModelOfArrayOfModel_ColdStoraged4FqxSXX result) { if (result.Code != 0) { throw new Exception(result.Message); } try { string valueStr = GetStoragesStr(result.Data); int count = StorageServer.UpdateStorages(valueStr); string info = "更新成功:{0}新增{1}条"; string addInfo = string.Empty; if (count != result.Data.Count()) { addInfo = "删除" + (count - result.Data.Count()).ToString() + "条后"; } RegistSyncEvent(string.Format(info, addInfo, result.Data.Count().ToString())); if (result.Data.Where(l => l.StorageNamek__BackingField == Common._StorageName + "[默认]").Count() == 0 && !string.IsNullOrEmpty(Common._StorageName)) { RegistSyncEvent("更新的[冷藏载体]中不包含当前设置的冷藏载体[" + Common._StorageName + "],同步完成后请回到主页设置冷藏载体!"); Common._StorageName = string.Empty; //DictionaryServer.SetPDAInfo(Enum_DicKey.storageName, ""); } } catch (Exception ex) { throw new Exception("更新冷藏载体信息失败:" + ex.Message); } }
public static object HeaderDoc(View <CalculatorViewModel> viewCalculator, Var <string> page, string idParent) => V(viewCalculator.V.SessionStorage).Map(thisStorage => { return(new Template.Header.Main() .IdStorageLink(Id(idParent, StorageLink)) .Storage(V(viewCalculator.V.VSessionStorage)) .StorageLink(async(el, ev) => { // WebSharper compiler doesn't accept switch() here if (page.Value == IndexDoc.Single) { // Single calculator -> Switch to the triptych page page.Set(IndexDoc.Triptych); } else if (page.Value == IndexDoc.Triptych) { // Change storage globally await StorageServer.SetStorage(thisStorage); // Switch back to the single calculator page page.Set(IndexDoc.Single); } else { throw new Exception(string.Format( // JS: no NotImplementedException "Page {0}", page.Value)); } }) .Doc()); });
public static Task <CalculatorViewModel> Div(string viewState) { using (var calculator = StorageServer.Load <Calculator, CalculatorViewModel>(viewState, out CalculatorViewModel)) { calculator.Fsm.Div(calculator.Stack); return(calculator.ViewModelTask <Calculator, CalculatorViewModel>()); } }
public static Task <CalculatorViewModel> Enter(string viewState, string value) { using (var calculator = StorageServer.Load <Calculator, CalculatorViewModel>(viewState, out CalculatorViewModel)) { calculator.Fsm.Enter(value); return(calculator.ViewModelTask <Calculator, CalculatorViewModel>()); } }
public static Task <ContentViewModel> Add(string viewState, string item) { using (var content = StorageServer.Load <Content, ContentViewModel>(viewState, out ViewModel)) { content.Add(item); return(content.ViewModelTask <Content, ContentViewModel>()); } }
public static gStorageServer Convert(this StorageServer server) { if (server == null) { return(null); } return(new gStorageServer() { Address = server.Address, Id = server.Id.ToString() }); }
public async Task <StorageServerResult> Handle(UpdateStorageServerCommand request, CancellationToken cancellationToken) { StorageServerResult Result = new StorageServerResult(); // Check guid is valid if (!Guid.TryParse(request.Id, out Guid serverId)) { Result.ErrorContent = new ErrorContent("Invalid server Id.", ErrorOrigin.Client); return(Result); } // Get the server from db StorageServer server = await _unitOfWork.StorageServer.FirstOrDefaultAsync(s => s.Id == serverId); if (server == null) { Result.ErrorContent = new ErrorContent("The server with the provided id was not found.", ErrorOrigin.Client); return(Result); } // update the server server.Address = request.StorageInfo.Address; server.State = request.StorageInfo.State; // Update upload options config var writeUploadOptsResult = await _uploadOptsClientProxy.WriteUploadOptions(request.UploadOpts, request.StorageInfo.Address); if (writeUploadOptsResult.State != OperationState.Success) { Result.ErrorContent = new ErrorContent($"Error occured while writing {nameof(UploadOptions)} to server {request.StorageInfo.Address}", ErrorOrigin.Server); return(Result); } // Update hardware config var writeHardwareOptsResult = await _hardwareOptsProxy.WriteHardwareOptions(request.HardwareOpts, request.StorageInfo.Address); if (writeHardwareOptsResult.State != OperationState.Success) { Result.ErrorContent = new ErrorContent($"Error occured while writing {nameof(HardwareCheckOptions)} to server {request.StorageInfo.Address}", ErrorOrigin.Server); return(Result); } // everything ok, update the server Result = await _unitOfWork.CompleteAsync(Result); if (Result.State != OperationState.Success) { Result.ErrorContent = new ErrorContent("An error occured while saving the record to the database. " + Result.ErrorContent.Message, ErrorOrigin.Server); return(Result); } Result.Server = server; return(Result); }
/// <summary> /// 加载载体信息 /// </summary> private void LoadStorageInfo() { try { List <ColdStorage> list = StorageServer.GetStorageList(Common._StorageName); if (list.Count() == 0) { throw new Exception("本地数据不存在该冷藏载体!"); } _StorageInfo = list[0]; } catch (Exception ex) { throw new Exception("加载冷藏载体信息失败:" + ex.Message); } }
public async Task <StorageServerResult> Handle(AddStorageServerCommand request, CancellationToken cancellationToken) { StorageServerResult Result = new StorageServerResult(); StorageServer server = await _unitOfWork.StorageServer.FirstOrDefaultAsync(s => s.Address == request.StorageInfo.Address); if (server != null) { Result.ErrorContent = new ErrorContent("A server with the same address already exists.", ErrorOrigin.Client); return(Result); } // Add the server to db StorageServer newServer = new StorageServer() { Address = request.StorageInfo.Address, State = request.StorageInfo.State }; _unitOfWork.StorageServer.Add(newServer); // Update upload options config var writeUploadOptsResult = await _uploadOptsClientProxy.WriteUploadOptions(request.UploadOpts, request.StorageInfo.Address); if (writeUploadOptsResult.State != OperationState.Success) { Result.ErrorContent = new ErrorContent($"Error occured while writing {nameof(UploadOptions)} to server {request.StorageInfo.Address}", ErrorOrigin.Server); return(Result); } // Update hardware config var writeHardwareOptsResult = await _hardwareOptsProxy.WriteHardwareOptions(request.HardwareOpts, request.StorageInfo.Address); if (writeHardwareOptsResult.State != OperationState.Success) { Result.ErrorContent = new ErrorContent($"Error occured while writing {nameof(HardwareCheckOptions)} to server {request.StorageInfo.Address}", ErrorOrigin.Server); return(Result); } // everything ok, save the new server to db Result = await _unitOfWork.CompleteAsync(Result); if (Result.State != OperationState.Success) { Result.ErrorContent = new ErrorContent("An error occured while saving the record to the database. " + Result.ErrorContent.Message, ErrorOrigin.Server); return(Result); } Result.Server = newServer; return(Result); }
public UCMain() { InitializeComponent(); Common.ValueChangeEvent += new Common.ValueChangeDelegate(Common_ValueChangeEvent); AddControlEvent(); btnNumber.Text = _numberTitle; btnDestination.Text = _destinationTitle; btnStorage.Text = _storageTitle; Thread th = new Thread(InitPDALocalInfo); th.IsBackground = true; th.Start(); List <ColdStorage> list = StorageServer.GetStorageList(Common._StorageName); if (list.Count() > 0) { btnNodeScan.Enabled = list[0].storageType == 2; } }
public async Task <StorageServerResult> Handle(DeleteStorageServerCommand request, CancellationToken cancellationToken) { StorageServerResult Result = new StorageServerResult(); if (!Guid.TryParse(request.ServerId, out Guid serverId)) { Result.ErrorContent = new ErrorContent("The provided id is not valid.", ErrorOrigin.Client); return(Result); } // Get the server from db StorageServer server = await _unitOfWork.StorageServer.FirstOrDefaultAsync(s => s.Id == serverId); if (server == null) { Result.ErrorContent = new ErrorContent("The server with the provided id was not found.", ErrorOrigin.Client); return(Result); } // remove from collection _unitOfWork.StorageServer.Remove(server); // remove files IEnumerable <FileItem> files = await _unitOfWork.Files.FindAsync(s => s.StorageServerId == serverId); if (files.Any()) { _unitOfWork.Files.RemoveRange(files); } // everything ok, update the server Result = await _unitOfWork.CompleteAsync(Result); if (Result.State != OperationState.Success) { Result.ErrorContent = new ErrorContent("An error occured while saving the record to the database. " + Result.ErrorContent.Message, ErrorOrigin.Server); return(Result); } Result.Server = server; return(Result); }
public StorageClient1 GetStorageClient(string groupName = "group1") { TrackerServer ts = _trackerClient.getTrackerServer(); if (ts == null) { throw new Exception("getConnection return null"); } else { StorageServer ss = _trackerClient.getStoreStorage(ts, groupName); if (ss == null) { throw new Exception("getStoreStorage return null"); } else { StorageClient1 sc1 = new StorageClient1(ts, ss); return(sc1); } } }
private static void UpdateStorageScan(ResultModelOfArrayOfModel_ColdStoraged4FqxSXX result) { if (result.Code != 0) { throw new Exception(result.Message); } try { string valueStr = GetStorageScanStr(result.Data); int count = StorageServer.UpdateStorageScan(valueStr); string info = "更新成功:{0}新增{1}条"; string addInfo = string.Empty; if (count != result.Data.Count()) { addInfo = "删除" + (count - result.Data.Count()).ToString() + "条后"; } RegistSyncEvent(string.Format(info, addInfo, result.Data.Count().ToString())); } catch (Exception ex) { throw new Exception("更新冷藏载体[扫描]信息失败:" + ex.Message); } }
public static void ConfigAppCloud(IApplicationBuilder app, Cloud cloud) { var rpcServer = new StorageServer(); app.UseRpcServer(cloud, rpcServer, "/rpc"); }
/// <summary> /// The Dispose() extension method is called implicitly before the /// ViewModel is returned and saves the M object either to the returned /// ViewState or implicitly on the server. /// </summary> /// <typeparam name="M"></typeparam> public static void Save <M>(this IStored <M> inst) where M : class, IStored <M>, new() { inst.ViewModel.ViewState = StorageServer.Save <M>(inst.ViewModel); }
private static void Main() { ConsoleLogger.Log("[boot step] starting antd"); var startTime = DateTime.Now; ConsoleLogger.Log("[boot step] core procedures"); #region [ os Rw ] Bash.Execute("mount -o remount,rw /", false); Bash.Execute("mount -o remount,rw /mnt/cdrom", false); #endregion #region [ Remove Limits ] const string limitsFile = "/etc/security/limits.conf"; if (File.Exists(limitsFile)) { if (!File.ReadAllText(limitsFile).Contains("root - nofile 1024000")) { FileWithAcl.AppendAllLines(limitsFile, new[] { "root - nofile 1024000" }, "644", "root", "wheel"); } } Bash.Execute("ulimit -n 1024000", false); #endregion #region [ Overlay Watcher ] if (Directory.Exists(Parameter.Overlay)) { new OverlayWatcher().StartWatching(); ConsoleLogger.Log("overlay watcher ready"); } #endregion #region [ Working Directories ] Directory.CreateDirectory(Parameter.AntdCfg); Directory.CreateDirectory(Parameter.AntdCfgServices); Directory.CreateDirectory(Parameter.AntdCfgNetwork); Network2Configuration.CreateWorkingDirectories(); Directory.CreateDirectory(Parameter.AntdCfgParameters); Directory.CreateDirectory(Parameter.AntdCfgCluster); Directory.CreateDirectory($"{Parameter.AntdCfgServices}/acls"); Directory.CreateDirectory($"{Parameter.AntdCfgServices}/acls/template"); Directory.CreateDirectory(Parameter.RepoConfig); Directory.CreateDirectory(Parameter.RepoDirs); Directory.CreateDirectory(Parameter.AnthillaUnits); Directory.CreateDirectory(Parameter.TimerUnits); Directory.CreateDirectory(Parameter.AntdCfgVfs); Directory.CreateDirectory(Parameter.AntdCfgRssdp); ConsoleLogger.Log("working directories created"); MountManagement.WorkingDirectories(); ConsoleLogger.Log("working directories mounted"); #endregion #region [ Mounts ] if (MountHelper.IsAlreadyMounted("/mnt/cdrom/Kernel/active-firmware", "/lib64/firmware") == false) { Bash.Execute("mount /mnt/cdrom/Kernel/active-firmware /lib64/firmware", false); } var kernelRelease = Bash.Execute("uname -r").Trim(); var linkedRelease = Bash.Execute("file /mnt/cdrom/Kernel/active-modules").Trim(); if (MountHelper.IsAlreadyMounted("/mnt/cdrom/Kernel/active-modules") == false && linkedRelease.Contains(kernelRelease)) { var moduleDir = $"/lib64/modules/{kernelRelease}/"; DirectoryWithAcl.CreateDirectory(moduleDir); Bash.Execute($"mount /mnt/cdrom/Kernel/active-modules {moduleDir}", false); } Bash.Execute("systemctl restart systemd-modules-load.service", false); MountManagement.AllDirectories(); ConsoleLogger.Log("mounts ready"); #endregion #region [ Check Units Location ] var anthillaUnits = Directory.EnumerateFiles(Parameter.AnthillaUnits, "*.*", SearchOption.TopDirectoryOnly); if (!anthillaUnits.Any()) { var antdUnits = Directory.EnumerateFiles(Parameter.AntdUnits, "*.*", SearchOption.TopDirectoryOnly); foreach (var unit in antdUnits) { var trueUnit = unit.Replace(Parameter.AntdUnits, Parameter.AnthillaUnits); if (!File.Exists(trueUnit)) { File.Copy(unit, trueUnit); } File.Delete(unit); Bash.Execute($"ln -s {trueUnit} {unit}"); } var appsUnits = Directory.EnumerateFiles(Parameter.AppsUnits, "*.*", SearchOption.TopDirectoryOnly); foreach (var unit in appsUnits) { var trueUnit = unit.Replace(Parameter.AntdUnits, Parameter.AnthillaUnits); if (!File.Exists(trueUnit)) { File.Copy(unit, trueUnit); } File.Delete(unit); Bash.Execute($"ln -s {trueUnit} {unit}"); } var applicativeUnits = Directory.EnumerateFiles(Parameter.ApplicativeUnits, "*.*", SearchOption.TopDirectoryOnly); foreach (var unit in applicativeUnits) { var trueUnit = unit.Replace(Parameter.AntdUnits, Parameter.AnthillaUnits); if (!File.Exists(trueUnit)) { File.Copy(unit, trueUnit); } File.Delete(unit); Bash.Execute($"ln -s {trueUnit} {unit}"); } } anthillaUnits = Directory.EnumerateFiles(Parameter.AnthillaUnits, "*.*", SearchOption.TopDirectoryOnly).ToList(); if (!anthillaUnits.Any()) { foreach (var unit in anthillaUnits) { Bash.Execute($"chown root:wheel {unit}"); Bash.Execute($"chmod 644 {unit}"); } } ConsoleLogger.Log("[check] units integrity"); #endregion #region [ Application Keys ] var ak = new AsymmetricKeys(Parameter.AntdCfgKeys, KeyName); var pub = ak.PublicKey; #endregion #region [ Secret ] if (!File.Exists(Parameter.AntdCfgSecret)) { FileWithAcl.WriteAllText(Parameter.AntdCfgSecret, Secret.Gen(), "644", "root", "wheel"); } if (string.IsNullOrEmpty(File.ReadAllText(Parameter.AntdCfgSecret))) { FileWithAcl.WriteAllText(Parameter.AntdCfgSecret, Secret.Gen(), "644", "root", "wheel"); } #endregion #region [ License Management ] var appconfig = new AppConfiguration().Get(); ConsoleLogger.Log($"[cloud] {appconfig.CloudAddress}"); try { var machineIds = Machine.MachineIds.Get; ConsoleLogger.Log($"[machineid] {machineIds.PartNumber}"); ConsoleLogger.Log($"[machineid] {machineIds.SerialNumber}"); ConsoleLogger.Log($"[machineid] {machineIds.MachineUid}"); var licenseManagement = new LicenseManagement(); licenseManagement.Download("Antd", machineIds, pub); var licenseStatus = licenseManagement.Check("Antd", machineIds, pub); ConsoleLogger.Log(licenseStatus == null ? "[license] license results null" : $"[license] {licenseStatus.Status} - {licenseStatus.Message}"); } catch (Exception ex) { ConsoleLogger.Warn(ex.Message); } #endregion #region [ JournalD ] if (JournaldConfiguration.IsActive()) { JournaldConfiguration.Set(); } #endregion #region [ Import Existing Configuration ] Network2Configuration.SetWorkingDirectories(); #region import host2model var tmpHost = HostConfiguration.Host; var varsFile = Host2Configuration.FilePath; var vars = new Host2Model { HostName = tmpHost.HostName.StoredValues.FirstOrDefault().Value, HostChassis = tmpHost.HostChassis.StoredValues.FirstOrDefault().Value, HostDeployment = tmpHost.HostDeployment.StoredValues.FirstOrDefault().Value, HostLocation = tmpHost.HostLocation.StoredValues.FirstOrDefault().Value, InternalDomainPrimary = tmpHost.InternalDomain, ExternalDomainPrimary = tmpHost.ExternalDomain, InternalHostIpPrimary = "", ExternalHostIpPrimary = "", Timezone = tmpHost.Timezone.StoredValues.FirstOrDefault().Value, NtpdateServer = tmpHost.NtpdateServer.StoredValues.FirstOrDefault().Value, MachineUid = Machine.MachineIds.Get.MachineUid, Cloud = Parameter.Cloud }; if (File.Exists(HostConfiguration.FilePath)) { if (!File.Exists(varsFile)) { ConsoleLogger.Log("[data import] host configuration"); Host2Configuration.Export(vars); } else { if (string.IsNullOrEmpty(File.ReadAllText(varsFile))) { ConsoleLogger.Log("[data import] host configuration"); Host2Configuration.Export(vars); } } } #endregion #region import network2model var tmpNet = NetworkConfiguration.Get(); var tmpHost2 = Host2Configuration.Host; var niflist = new List <NetworkInterface>(); foreach (var cif in tmpNet.Interfaces) { ConsoleLogger.Log($"[data import] network configuration for '{cif.Interface}'"); var broadcast = ""; try { broadcast = Cidr.CalcNetwork(cif.StaticAddress, cif.StaticRange).Broadcast.ToString(); } catch (Exception ex) { ConsoleLogger.Error($"[data import] {ex.Message}"); } var hostname = $"{vars.HostName}{NetworkInterfaceType.Internal}.{vars.InternalDomainPrimary}"; var subnet = tmpHost2.InternalNetPrimaryBits; var index = Network2Configuration.InterfaceConfigurationList.Count(_ => _.Type == NetworkInterfaceType.Internal); var networkConfiguration = new NetworkInterfaceConfiguration { Id = cif.Interface + cif.Guid.Substring(0, 8), Adapter = cif.Type, Alias = "import " + cif.Interface, Ip = cif.StaticAddress, Subnet = subnet, Mode = cif.Mode, ChildrenIf = cif.InterfaceList, Broadcast = broadcast, Type = NetworkInterfaceType.Internal, Hostname = hostname, Index = index, Description = "import " + cif.Interface, RoleVerb = NetworkRoleVerb.iif }; var tryget = Network2Configuration.InterfaceConfigurationList.FirstOrDefault(_ => _.Id == networkConfiguration.Id); if (tryget == null) { Network2Configuration.AddInterfaceConfiguration(networkConfiguration); } var ifConfig = new NetworkInterface { Device = cif.Interface, Configuration = networkConfiguration.Id, AdditionalConfigurations = new List <string>(), GatewayConfiguration = "" }; var tryget2 = Network2Configuration.Conf.Interfaces.FirstOrDefault(_ => _.Device == cif.Interface); if (tryget2 == null) { niflist.Add(ifConfig); } } if (niflist.Any()) { Network2Configuration.SaveInterfaceSetting(niflist); } if (!Network2Configuration.GatewayConfigurationList.Any()) { var defaultGatewayConfiguration = new NetworkGatewayConfiguration { Id = Random.ShortGuid(), IsDefault = true, GatewayAddress = vars.InternalHostIpPrimary, Description = "DFGW" }; Network2Configuration.AddGatewayConfiguration(defaultGatewayConfiguration); } #endregion #region import parameters if (!File.Exists($"{Parameter.AntdCfgParameters}/endcommands.conf")) { var tmpsetup = SetupConfiguration.Get(); HostParametersConfiguration.SetEndCommandsList(tmpsetup); } if (!File.Exists($"{Parameter.AntdCfgParameters}/modprobes.conf")) { var ddd = EnumerableExtensions.Merge(tmpHost.Modprobes.Select(_ => _.StoredValues.Select(___ => ___.Value))); HostParametersConfiguration.SetModprobesList(ddd.ToList()); } if (!File.Exists($"{Parameter.AntdCfgParameters}/rmmod.conf")) { var ddd = tmpHost.RemoveModules.StoredValues.FirstOrDefault().Value.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); HostParametersConfiguration.SetRmmodList(ddd.ToList()); } if (!File.Exists($"{Parameter.AntdCfgParameters}/modulesblacklist.conf")) { var ddd = tmpHost.ModulesBlacklist; HostParametersConfiguration.SetModulesBlacklistList(ddd.ToList()); } if (!File.Exists($"{Parameter.AntdCfgParameters}/osparameters.conf")) { var list = new List <string> { "/proc/sys/fs/file-max 1024000", "/proc/sys/net/bridge/bridge-nf-call-arptables 0", "/proc/sys/net/bridge/bridge-nf-call-ip6tables 0", "/proc/sys/net/bridge/bridge-nf-call-iptables 0", "/proc/sys/net/bridge/bridge-nf-filter-pppoe-tagged 0", "/proc/sys/net/bridge/bridge-nf-filter-vlan-tagged 0", "/proc/sys/net/core/netdev_max_backlog 300000", "/proc/sys/net/core/optmem_max 40960", "/proc/sys/net/core/rmem_max 268435456", "/proc/sys/net/core/somaxconn 65536", "/proc/sys/net/core/wmem_max 268435456", "/proc/sys/net/ipv4/conf/all/accept_local 1", "/proc/sys/net/ipv4/conf/all/accept_redirects 1", "/proc/sys/net/ipv4/conf/all/accept_source_route 1", "/proc/sys/net/ipv4/conf/all/rp_filter 0", "/proc/sys/net/ipv4/conf/all/forwarding 1", "/proc/sys/net/ipv4/conf/default/rp_filter 0", "/proc/sys/net/ipv4/ip_forward 1", "/proc/sys/net/ipv4/ip_local_port_range 1024 65000", "/proc/sys/net/ipv4/ip_no_pmtu_disc 1", "/proc/sys/net/ipv4/tcp_congestion_control htcp", "/proc/sys/net/ipv4/tcp_fin_timeout 40", "/proc/sys/net/ipv4/tcp_max_syn_backlog 3240000", "/proc/sys/net/ipv4/tcp_max_tw_buckets 1440000", "/proc/sys/net/ipv4/tcp_moderate_rcvbuf 1", "/proc/sys/net/ipv4/tcp_mtu_probing 1", "/proc/sys/net/ipv4/tcp_rmem 4096 87380 134217728", "/proc/sys/net/ipv4/tcp_slow_start_after_idle 1", "/proc/sys/net/ipv4/tcp_tw_recycle 0", "/proc/sys/net/ipv4/tcp_tw_reuse 1", "/proc/sys/net/ipv4/tcp_window_scaling 1", "/proc/sys/net/ipv4/tcp_wmem 4096 65536 134217728", "/proc/sys/net/ipv6/conf/br0/disable_ipv6 1", "/proc/sys/net/ipv6/conf/eth0/disable_ipv6 1", "/proc/sys/net/ipv6/conf/wlan0/disable_ipv6 1", "/proc/sys/vm/swappiness 0" }; HostParametersConfiguration.SetOsParametersList(list); ConsoleLogger.Log("[data import] parameters"); } #endregion #endregion #region [ Adjustments ] new Do().ParametersChangesPre(); ConsoleLogger.Log("modules, services and os parameters ready"); #endregion ConsoleLogger.Log("[boot step] procedures"); #region [ Users ] var manageMaster = new ManageMaster(); manageMaster.Setup(); UserConfiguration.Import(); UserConfiguration.Set(); ConsoleLogger.Log("users config ready"); #endregion #region [ Host Configuration & Name Service ] new Do().HostChanges(); ConsoleLogger.Log("host configured"); ConsoleLogger.Log("name service ready"); #endregion #region [ Network ] new Do().NetworkChanges(); if (File.Exists("/cfg/antd/services/network.conf")) { File.Delete("/cfg/antd/services/network.conf"); } if (File.Exists("/cfg/antd/services/network.conf.bck")) { File.Delete("/cfg/antd/services/network.conf.bck"); } ConsoleLogger.Log("network ready"); #endregion #region [ Firewall ] if (FirewallConfiguration.IsActive()) { FirewallConfiguration.Set(); } #endregion #region [ Dhcpd ] DhcpdConfiguration.TryImport(); if (DhcpdConfiguration.IsActive()) { DhcpdConfiguration.Set(); } #endregion #region [ Bind ] BindConfiguration.TryImport(); BindConfiguration.DownloadRootServerHits(); if (BindConfiguration.IsActive()) { BindConfiguration.Set(); } #endregion ConsoleLogger.Log("[boot step] post procedures"); #region [ Apply Setup Configuration ] new Do().ParametersChangesPost(); ConsoleLogger.Log("machine configured (apply setup.conf)"); #endregion #region [ Nginx ] NginxConfiguration.TryImport(); if (NginxConfiguration.IsActive()) { NginxConfiguration.Set(); } #endregion #region [ Ssh ] if (SshdConfiguration.IsActive()) { SshdConfiguration.Set(); } DirectoryWithAcl.CreateDirectory(Parameter.RootSsh, "755", "root", "wheel"); DirectoryWithAcl.CreateDirectory(Parameter.RootSshMntCdrom, "755", "root", "wheel"); if (!MountHelper.IsAlreadyMounted(Parameter.RootSsh)) { MountManagement.Dir(Parameter.RootSsh); } var rk = new RootKeys(); if (rk.Exists == false) { rk.Create(); } var authorizedKeysConfiguration = new AuthorizedKeysConfiguration(); var storedKeys = authorizedKeysConfiguration.Get().Keys; foreach (var storedKey in storedKeys) { var home = storedKey.User == "root" ? "/root/.ssh" : $"/home/{storedKey.User}/.ssh"; var authorizedKeysPath = $"{home}/authorized_keys"; if (!File.Exists(authorizedKeysPath)) { File.Create(authorizedKeysPath); } FileWithAcl.AppendAllLines(authorizedKeysPath, new List <string> { $"{storedKey.KeyValue} {storedKey.RemoteUser}" }, "644", "root", "wheel"); Bash.Execute($"chmod 600 {authorizedKeysPath}"); Bash.Execute($"chown {storedKey.User}:{storedKey.User} {authorizedKeysPath}"); } ConsoleLogger.Log("ssh ready"); #endregion #region [ Service Discovery ] try { ServiceDiscovery.Rssdp.PublishThisDevice(); ConsoleLogger.Log("[rssdp] published device"); } catch (Exception ex) { ConsoleLogger.Log($"[rssdp] {ex.Message}"); } #endregion #region [ AntdUI ] UiService.Setup(); ConsoleLogger.Log("antduisetup"); #endregion ConsoleLogger.Log("[boot step] managed procedures"); #region [ Samba ] if (SambaConfiguration.IsActive()) { SambaConfiguration.Set(); } #endregion #region [ Syslog ] if (SyslogNgConfiguration.IsActive()) { SyslogNgConfiguration.Set(); } #endregion #region [ Storage - Zfs ] foreach (var pool in Zpool.ImportList().ToList()) { if (string.IsNullOrEmpty(pool)) { continue; } ConsoleLogger.Log($"pool {pool} imported"); Zpool.Import(pool); } ConsoleLogger.Log("storage ready"); #endregion #region [ Scheduler ] Timers.MoveExistingTimers(); Timers.Setup(); Timers.Import(); Timers.Export(); foreach (var zp in Zpool.List()) { Timers.Create(zp.Name.ToLower() + "snap", "hourly", $"/sbin/zfs snap -r {zp.Name}@${{TTDATE}}"); } Timers.StartAll(); new SnapshotCleanup().Start(new TimeSpan(2, 00, 00)); new SyncTime().Start(new TimeSpan(0, 42, 00)); new RemoveUnusedModules().Start(new TimeSpan(2, 15, 00)); JobManager jobManager = new JobManager(); jobManager.ExecuteAllJobs(); ConsoleLogger.Log("scheduled events ready"); #endregion #region [ Acl ] if (AclConfiguration.IsActive()) { AclConfiguration.Set(); AclConfiguration.ScriptSetup(); } #endregion #region [ C A ] if (CaConfiguration.IsActive()) { CaConfiguration.Set(); } #endregion #region [ Host Init ] var app = new AppConfiguration().Get(); var port = app.AntdPort; var uri = $"http://localhost:{app.AntdPort}/"; var host = new NancyHost(new Uri(uri)); host.Start(); ConsoleLogger.Log("host ready"); StaticConfiguration.DisableErrorTraces = false; ConsoleLogger.Log($"http port: {port}"); ConsoleLogger.Log("[boot step] antd is running"); #endregion ConsoleLogger.Log("[boot step] working procedures"); #region [ Apps ] AppTarget.Setup(); var apps = AppsConfiguration.Get().Apps; foreach (var mapp in apps) { var units = mapp.UnitLauncher; foreach (var unit in units) { if (Systemctl.IsActive(unit) == false) { Systemctl.Restart(unit); } } } //AppTarget.StartAll(); ConsoleLogger.Log("apps ready"); #endregion #region [ Sync / Gluster ] if (GlusterConfiguration.IsActive()) { GlusterConfiguration.Launch(); } if (RsyncConfiguration.IsActive()) { RsyncConfiguration.Set(); } #endregion #region [ Storage Server ] VfsConfiguration.SetDefaults(); new Thread(() => { try { var srv = new StorageServer(VfsConfiguration.GetSystemConfiguration()); srv.Start(); } catch (Exception ex) { ConsoleLogger.Error(ex.Message); } }).Start(); #endregion #region [ Tor ] if (TorConfiguration.IsActive()) { TorConfiguration.Start(); } #endregion #region [ Cluster ] VfsWatcher = new VfsWatcher(); ClusterConfiguration.Prepare(); new Do().ClusterChanges(); ConsoleLogger.Log("[cluster] active"); #endregion #region [ Directory Watchers ] DirectoryWatcherCluster.Start(); DirectoryWatcherRsync.Start(); #endregion #region [ Check Application File Acls ] var files = Directory.EnumerateFiles(Parameter.RepoApps, "*.squashfs.xz", SearchOption.AllDirectories); foreach (var file in files) { Bash.Execute($"chmod 644 {file}"); Bash.Execute($"chown root:wheel {file}"); } ConsoleLogger.Log("[check] app-file acl"); #endregion #region [ Check System Components ] MachineInfo.CheckSystemComponents(); ConsoleLogger.Log("[check] system components health"); #endregion #region [ Test ] #if DEBUG Test(); #endif #endregion ConsoleLogger.Log($"loaded in: {DateTime.Now - startTime}"); KeepAlive(); ConsoleLogger.Log("antd is closing"); host.Stop(); Console.WriteLine("host shutdown"); }
public static void Run(string[] args) { if (args.Length < 2) { Console.WriteLine("Error: Must have 2 parameters, one is config filename, " + "the other is the local filename to upload"); return; } string conf_filename = args[0]; string local_filename = args[1]; try { ClientGlobal.init(conf_filename); long startTime; ServerInfo[] servers; TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClientEx client = new StorageClientEx(trackerServer, storageServer); byte[] file_buff; NameValuePair[] meta_list; string group_name; string appender_file_id; string file_ext_name; int errno; meta_list = new NameValuePair[4]; meta_list[0] = new NameValuePair("width", "800"); meta_list[1] = new NameValuePair("heigth", "600"); meta_list[2] = new NameValuePair("bgcolor", "#FFFFFF"); meta_list[3] = new NameValuePair("author", "Mike"); file_buff = Encoding.GetEncoding(ClientGlobal.g_charset).GetBytes("this is a test"); Console.WriteLine("file length: " + file_buff.Length); group_name = null; StorageServer[] storageServers = tracker.getStoreStorages(trackerServer, group_name); if (storageServers == null) { Console.WriteLine("get store storage servers fail, error code: " + tracker.ErrorCode); } else { Console.WriteLine("store storage servers count: " + storageServers.Length); for (int k = 0; k < storageServers.Length; k++) { Console.WriteLine((k + 1) + ". " + storageServers[k].InetSockAddr.Address + ":" + storageServers[k].InetSockAddr.Port); } Console.WriteLine(""); } Stopwatch sw = new Stopwatch(); sw.Start(); appender_file_id = client.upload_appender_file1(file_buff, "txt", meta_list); sw.Stop(); Console.WriteLine("upload_appender_file1 time used: " + sw.ElapsedMilliseconds + " ms"); /* * group_name = ""; * appender_file_id = client.upload_appender_file1(group_name, file_buff, "txt", meta_list); */ if (appender_file_id == null) { Console.WriteLine("upload file fail, error code: " + client.ErrorCode); return; } else { Console.WriteLine(client.get_file_info1(appender_file_id)); servers = tracker.getFetchStorages1(trackerServer, appender_file_id); if (servers == null) { Console.WriteLine("get storage servers fail, error code: " + tracker.ErrorCode); } else { Console.WriteLine("storage servers count: " + servers.Length); for (int k = 0; k < servers.Length; k++) { Console.WriteLine((k + 1) + ". " + servers[k].Ip_Addr + ":" + servers[k].Port); } Console.WriteLine(""); } meta_list = new NameValuePair[4]; meta_list[0] = new NameValuePair("width", "1024"); meta_list[1] = new NameValuePair("heigth", "768"); meta_list[2] = new NameValuePair("bgcolor", "#000000"); meta_list[3] = new NameValuePair("title", "Untitle"); sw.Restart(); errno = client.set_metadata1(appender_file_id, meta_list, ProtoCommon.STORAGE_SET_METADATA_FLAG_MERGE); sw.Stop(); Console.WriteLine("set_metadata time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine("set_metadata success"); } else { Console.WriteLine("set_metadata fail, error no: " + errno); } meta_list = client.get_metadata1(appender_file_id); if (meta_list != null) { for (int i = 0; i < meta_list.Length; i++) { Console.WriteLine(meta_list[i]._Name + " " + meta_list[i]._Value); } } sw.Restart(); file_buff = client.download_file1(appender_file_id); sw.Stop(); Console.WriteLine("download_file time used: " + sw.ElapsedMilliseconds + " ms"); if (file_buff != null) { Console.WriteLine("file length:" + file_buff.Length); Console.WriteLine(Encoding.GetEncoding(ClientGlobal.g_charset).GetString(file_buff)); } file_buff = Encoding.GetEncoding(ClientGlobal.g_charset).GetBytes("this is a slave buff"); file_ext_name = "txt"; sw.Restart(); errno = client.append_file1(appender_file_id, file_buff); sw.Stop(); Console.WriteLine("append_file time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine(client.get_file_info1(appender_file_id)); } else { Console.WriteLine("append file fail, error no: " + errno); } sw.Restart(); errno = client.delete_file1(appender_file_id); sw.Stop(); Console.WriteLine("delete_file time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine("Delete file success"); } else { Console.WriteLine("Delete file fail, error no: " + errno); } } appender_file_id = client.upload_appender_file1(local_filename, null, meta_list); if (appender_file_id != null) { int ts; string token; string file_url; IPEndPoint inetSockAddr; inetSockAddr = trackerServer.InetSockAddr; file_url = "http://" + inetSockAddr.Address; if (ClientGlobal.g_tracker_http_port != 80) { file_url += ":" + ClientGlobal.g_tracker_http_port; } file_url += "/" + appender_file_id; if (ClientGlobal.g_anti_steal_token) { ts = (int)ProtoCommon.DateTimeToUnixTimestamp(DateTime.Now); token = ProtoCommon.getToken(appender_file_id, ts, ClientGlobal.g_secret_key); file_url += "?token=" + token + "&ts=" + ts; } Console.WriteLine(client.get_file_info1(appender_file_id)); Console.WriteLine("file url: " + file_url); errno = client.download_file1(appender_file_id, 0, 0, "c:\\" + appender_file_id.Replace("/", "_")); if (errno == 0) { Console.WriteLine("Download file success"); } else { Console.WriteLine("Download file fail, error no: " + errno); } errno = client.download_file1(appender_file_id, 0, 0, new DownloadFileWriter("c:\\" + appender_file_id.Replace("/", "-"))); if (errno == 0) { Console.WriteLine("Download file success"); } else { Console.WriteLine("Download file fail, error no: " + errno); } file_ext_name = null; sw.Restart(); errno = client.append_file1(appender_file_id, local_filename); sw.Stop(); Console.WriteLine("append_file time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine(client.get_file_info1(appender_file_id)); } else { Console.WriteLine("append file fail, error no: " + errno); } } System.IO.FileInfo f; f = new System.IO.FileInfo(local_filename); file_ext_name = Path.GetExtension(local_filename).Trim('.'); appender_file_id = client.upload_appender_file1(null, f.Length, new UploadLocalFileSender(local_filename), file_ext_name, meta_list); if (appender_file_id != null) { Console.WriteLine(client.get_file_info1(appender_file_id)); sw.Restart(); errno = client.append_file1(appender_file_id, f.Length, new UploadLocalFileSender(local_filename)); sw.Stop(); Console.WriteLine("append_file time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine(client.get_file_info1(appender_file_id)); } else { Console.WriteLine("append file fail, error no: " + errno); } sw.Restart(); errno = client.modify_file1(appender_file_id, 0, f.Length, new UploadLocalFileSender(local_filename)); sw.Stop(); Console.WriteLine("modify_file time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine(client.get_file_info1(appender_file_id)); } else { Console.WriteLine("modify file fail, error no: " + errno); } sw.Restart(); errno = client.truncate_file1(appender_file_id, 0); sw.Stop(); Console.WriteLine("truncate_file time used: " + sw.ElapsedMilliseconds + " ms"); if (errno == 0) { Console.WriteLine(client.get_file_info1(appender_file_id)); } else { Console.WriteLine("truncate file fail, error no: " + errno); } } else { Console.WriteLine("Upload file fail, error no: " + errno); } storageServer = tracker.getFetchStorage1(trackerServer, appender_file_id); if (storageServer == null) { Console.WriteLine("getFetchStorage fail, errno code: " + tracker.ErrorCode); return; } /* for test only */ Console.WriteLine("active test to storage server: " + ProtoCommon.activeTest(storageServer.getSocket())); storageServer.close(); /* for test only */ Console.WriteLine("active test to tracker server: " + ProtoCommon.activeTest(trackerServer.getSocket())); trackerServer.close(); } catch (Exception ex) { } }
/// <summary> /// Subpage: The content is built up on the server side, session /// persistence is handled either on the client (ViewState) or on the /// server (Session/Database). /// </summary> /// <returns></returns> public static WebSharper.UI.Doc WithStorageDoc() { var storage = Var.Create(asplib.Model.Storage.ViewState); var contentList = new ListModel <string, string>(s => s); var contentTextBox = Var.Create(""); // Setup the reactive ViewState storage. var viewState = Var.Create(""); return(WebSharper.UI.Doc.ConcatMixed( input(viewState, attr.type("hidden")) , new Template.Withstorage() .ContentTextBox(contentTextBox) .Back((el, ev) => { IndexDoc().RunById("page"); }) // <input ws-var="Storage" value="${ViewState}" type="radio" /> ViewState // in the template yields: // Using ws-var on a <input type="radio"> node is not supported yet, thus programmatic. // Auto-generates the name: <input name="uinref4" type="radio">, manual ids for test.SelectID(). .StorageRadio( label( radio(storage, asplib.Model.Storage.ViewState, attr.id("storageViewState")), "ViewState" ), label( radio(storage, asplib.Model.Storage.Session, attr.id("storageSession")), "Session" ), label( radio(storage, asplib.Model.Storage.Database, attr.id("storageDatabase")), "Database" ) ) .ListContainer( contentList.View.DocSeqCached((string x) => new Template.Withstatic.ListItem().Item(x).Doc() ) ) .ChangeStorage(async(el, ev) => { // Set the static storage override globally for the // instance, as the concept of SessionStorage makes little // sense when it's required to carry it's value along with // the single stored Storage object itself. await StorageServer.SetStorage(storage.Value); // Reload the object from the other storage. var newContent = await StorageRemoting.Reload(viewState.Value); // Write back the changed model object state // to the reactive variable. viewState.Value = newContent.ViewState; // Update the view according to the model. contentList.Set(newContent.Content); }) .Submit(async(el, ev) => { // Retrieve the old stateful object, perform the transition // on it with all new input data passed as method arguments // in one single step, and immediately save the object in // its new state, thus making it effectively immutable from // here on. var newContent = await StorageRemoting.Add(viewState.Value, contentTextBox.Value); // Write back the changed model object state // to the reactive variable. viewState.Value = newContent.ViewState; // Update the view according to the model. contentList.Set(newContent.Content); // Clear entirely on the client side. contentTextBox.Set(""); }) .Doc() )); }