public void Open(OpenFlags flags) { if (String.IsNullOrEmpty(_name)) { throw new CryptographicException(Locale.GetText("Invalid store name (null or empty).")); } /* keep existing Mono installations (pre 2.0) compatible with new stuff */ string name; switch (_name) { case "Root": name = "Trust"; break; default: name = _name; break; } bool create = ((flags & OpenFlags.OpenExistingOnly) != OpenFlags.OpenExistingOnly); store = Factory.Open(name, create); if (store == null) { throw new CryptographicException(Locale.GetText("Store {0} doesn't exists.", _name)); } _flags = flags; foreach (MX.X509Certificate x in store.Certificates) { var cert2 = new X509Certificate2(x.RawData); cert2.PrivateKey = x.RSA; Certificates.Add(cert2); } }
private async Task Load() { IsBusy = true; var certificates = await _certificateStore.GetIdentityCertificates(); Certificates.Clear(); foreach (var certificate in certificates) { var record = new CertificateViewModel { IsSelected = false, Name = certificate.Name, CreateDateTime = certificate.CreateDateTime }; Certificates.Add(record); if (certificate.IsSelected) { ActiveCertificate = record; } } ((Command)DeleteCertificateCommand).ChangeCanExecute(); IsBusy = false; }
public void AddRange(X509Certificate2Collection certificates) { if (certificates == null) { throw new ArgumentNullException("certificates"); } if (certificates.Count == 0) { return; } if (!IsOpen) { throw new CryptographicException(Locale.GetText("Store isn't opened.")); } if (IsReadOnly) { throw new CryptographicException(Locale.GetText("Store is read-only.")); } foreach (X509Certificate2 certificate in certificates) { if (!Exists(certificate)) { try { store.Import(new MX.X509Certificate(certificate.RawData)); } finally { Certificates.Add(certificate); } } } }
void ParseKeySets() { var fi = new FileInfo(FilePath); long contentLength = fi.Length; using (var ms = new MemoryStream((int)contentLength)) { using (var fs = fi.OpenRead()) { fs.CopyTo(ms); } ms.Position = 0; Certificates = certificatePemParser.ReadCertificates(ms).Cast <X509Certificate>(); ms.Position = 0; PrivateKey = privateKeyParser.ReadPrivateKey(ms); } var cert1 = Certificates.ElementAt(0); string alias = "bridgePro1"; var pkcs12Store = Pkcs12Store = new Pkcs12Store(); var certEntry = new X509CertificateEntry(cert1); pkcs12Store.SetCertificateEntry(alias, certEntry); var certKey = PrivateKey; pkcs12Store.SetKeyEntry(alias, new AsymmetricKeyEntry(certKey), new[] { certEntry }); using (MemoryStream pfxStream = new MemoryStream()) { pkcs12Store.Save(pfxStream, null, new SecureRandom()); pfxStream.Seek(0, SeekOrigin.Begin); KeyedCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(pfxStream.ToArray()); } }
public Certificates SearchCertificateDAL(string voucherNumber) { string strcon = "integrated security=true;data source=DESKTOP-07HGAQG\\GIRISH;initial catalog=sqlpractice"; SqlConnection conn = new SqlConnection(strcon); conn.Open(); SqlCommand cmdSearch = new SqlCommand("prcCertificationSearch", conn); cmdSearch.CommandType = CommandType.StoredProcedure; cmdSearch.Parameters.AddWithValue("@VourcherNumber", voucherNumber); SqlDataReader dr = cmdSearch.ExecuteReader(); Certificates certificates = null; if (dr.Read()) { certificates = new Certificates(); certificates.ParticipantName = dr["ParticipantName"].ToString(); certificates.Technology = dr["Technology"].ToString(); certificates.CertificationCode = dr["CertificationCode"].ToString(); certificates.CertificaionName = dr["CertificaionName"].ToString(); certificates.CertificationDate = Convert.ToDateTime(dr["CertificationDate"]); } return(certificates); }
public void WillRejectJsIndexDeploymentAsValidUserIfItIsRestrictedToAdminsOnly() { var certificates = Certificates.SetupServerAuthentication(customSettings: new Dictionary <string, string> { { RavenConfiguration.GetKey(x => x.Indexing.RequireAdminToDeployJavaScriptIndexes), "true" } }); var dbName = GetDatabaseName(); var adminCert = Certificates.RegisterClientCertificate(certificates.ServerCertificate.Value, certificates.ClientCertificate1.Value, new Dictionary <string, DatabaseAccess>(), SecurityClearance.ClusterAdmin); var userCert = Certificates.RegisterClientCertificate(certificates.ServerCertificate.Value, certificates.ClientCertificate2.Value, new Dictionary <string, DatabaseAccess> { [dbName] = DatabaseAccess.ReadWrite }, SecurityClearance.ValidUser); using (var store = GetDocumentStore(new Options { AdminCertificate = adminCert, ClientCertificate = userCert, ModifyDatabaseName = s => dbName, })) { var index = new UsersByName(); Assert.Throws <AuthorizationException>(() => store.ExecuteIndex(index)); using (var storeWithAdminCert = new DocumentStore { Urls = store.Urls, Certificate = adminCert, Database = store.Database }.Initialize()) { storeWithAdminCert.ExecuteIndex(index); } } }
/// <summary>Returns an enumerator that iterates through the resources in this response.</summary> public scg::IEnumerator <AuthorizedCertificate> GetEnumerator() => Certificates.GetEnumerator();
public void ShowCertificates(object sender, RoutedEventArgs e) { Certificates certificates = new Certificates(); certificates.Show(); }
public void ConfigureServices(IServiceCollection services) { //Setup the HttpClientFactory that will inject a typed HttpClient called BankIDClient services.AddHttpClient <BankIDClient>(client => { client.BaseAddress = new Uri("https://appapi2.test.bankid.com/rp/v5/"); client.DefaultRequestHeaders.Add("Accept", "application/json"); }) .ConfigurePrimaryHttpMessageHandler(h => { var handler = new HttpClientHandler(); //Set the client certificate to use against BankID. This is TESTso we will download the certificate on-the-fly. In real-world this would use Certificate Store. handler.ClientCertificates.Add(Certificates.DownloadBankIDTestCertificate().Result); //BankID test servers certificate are typically not in the trusted root store if you are on Azure. This will bypass. Do NOT use in production! handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return(true); }; return(handler); }); services.AddAuthentication(options => { options.DefaultScheme = "ServerCookie"; }) .AddCookie("ServerCookie", options => { options.Cookie.Name = CookieAuthenticationDefaults.CookiePrefix + "ServerCookie"; options.ExpireTimeSpan = TimeSpan.FromMinutes(5); //Choose Signin page with wither classic BankID with manual entry of the civicid (personnummer) //or the new BankID QR-code method that is considered more secure // options.LoginPath = new PathString("/signin"); options.LoginPath = new PathString("/signinqr"); options.LogoutPath = new PathString("/signout"); }) .AddBankIDAuthentication(options => { //The BankID is firewall-friendly but that means that polling of the Collect method is required. //Something like a 2-3 seconds interval seems like a good compromise options.CollectIntervalInMilliseconds = 2000; //BankID has a maximum timeout of 30 seconds doing a Collect. Here we can set a lower value if we want to. options.CollectTimeoutInMilliseconds = 30000; }) .AddOAuthValidation() .AddOpenIdConnectServer(options => { options.ProviderType = typeof(AuthorizationProvider); // Enable the authorization, logout, token and userinfo endpoints. options.AuthorizationEndpointPath = "/connect/authorize"; options.LogoutEndpointPath = "/connect/logout"; options.TokenEndpointPath = "/connect/token"; options.UserinfoEndpointPath = "/connect/userinfo"; options.ConfigurationEndpointPath = "/.well-known/openid-configuration"; // Note: see AuthorizationController.cs for more // information concerning ApplicationCanDisplayErrors. options.ApplicationCanDisplayErrors = true; options.AllowInsecureHttp = true; // Note: to override the default access token format and use JWT, assign AccessTokenHandler: // options.AccessTokenHandler = new JwtSecurityTokenHandler { InboundClaimTypeMap = new Dictionary <string, string>(), OutboundClaimTypeMap = new Dictionary <string, string>() }; // // Note: when using JWT as the access token format, you have to register a signing key. // // You can register a new ephemeral key, that is discarded when the application shuts down. // Tokens signed using this key are automatically invalidated and thus this method // should only be used during development: // options.SigningCredentials.AddEphemeralKey(); // // On production, using a X.509 certificate stored in the machine store is recommended. // You can generate a self-signed certificate using Pluralsight's self-cert utility: // https://s3.amazonaws.com/pluralsight-free/keith-brown/samples/SelfCert.zip // // options.SigningCredentials.AddCertificate("7D2A741FE34CC2C7369237A5F2078988E17A6A75"); // // Alternatively, you can also store the certificate as an embedded .pfx resource // directly in this assembly or in a file published alongside this project: // // options.SigningCredentials.AddCertificate( // assembly: typeof(Startup).GetTypeInfo().Assembly, // resource: "Mvc.Server.Certificate.pfx", // password: "******"); }); services.AddScoped <AuthorizationProvider>(); services.AddMvc(); services.AddDistributedMemoryCache(); }
private void frmCompilePackage_Load(object sender, EventArgs e) { lstCert.Items.Clear(); lstExtSign.Items.Clear(); string LastCert = ""; foreach (string s in Certificates.GetCertificates(StoreLocation.CurrentUser)) { if (Settings.Default.LastCertificate == s) { LastCert = s; } lstCert.Items.Add(s); } if (LastCert != "") { lstCert.Text = LastCert; } string LastExtCert = ""; foreach (string s in SmartCards.GetCSPProviders()) { if (Settings.Default.LastExtCertificate == s) { LastExtCert = s; } lstExtSign.Items.Add(s); } if (LastExtCert != "") { lstExtSign.Text = LastExtCert; } radCertSign.Checked = true; txtOutputFilename.Text = Package.Outputfile; lblStatus.Text = ""; cmdStop.Enabled = false; if (lstCert.Text == "") { if (lstCert.Items.Count > 0) { lstCert.SelectedIndex = 1; } } if (lstExtSign.Text == "") { if (lstExtSign.Items.Count > 0) { lstExtSign.SelectedIndex = 1; } } switch (Settings.Default.LastSelectedCertificateType) { case "EXT": radExtSign.Checked = true; break; case "INT": radCertSign.Checked = true; break; } }
private async Task HandleUploadCertificateCommand() { var expectedFormat = ZXing.BarcodeFormat.QR_CODE; var opts = new ZXing.Mobile.MobileBarcodeScanningOptions { PossibleFormats = new List <ZXing.BarcodeFormat> { expectedFormat } }; var scanPage = new ZXingScannerPage(opts); scanPage.OnScanResult += (result) => { scanPage.IsScanning = false; Device.BeginInvokeOnMainThread(async() => { var value = result?.Text ?? string.Empty; if (string.IsNullOrWhiteSpace(value)) { return; } var splitted = value.Split('$'); if (splitted.Count() != 3) { return; } var url = splitted.First(); var password = splitted[1]; var name = splitted[2]; using (var httpClient = new HttpClient()) { var request = new HttpRequestMessage { RequestUri = new Uri(url), Method = HttpMethod.Get }; var httpResult = await httpClient.SendAsync(request); var json = await httpResult.Content.ReadAsStringAsync(); var base64 = JsonConvert.DeserializeObject <JObject>(json)["file"].ToString(); await _certificateStore.Add(new MedikitCertificate { CreateDateTime = DateTime.UtcNow, IsSelected = false, Name = name, Password = password, Payload = base64, Type = MedikitCertificateTypes.IDENTITY }); Certificates.Add(new CertificateViewModel { IsSelected = false, Name = name }); await _navigation.PopAsync(); _alertService.DisplayAlert(AppResources.Success, AppResources.CertificateAdded, AppResources.Ok); } }); }; scanPage.Title = AppResources.ScanCertificate; await _navigation.PushAsync(scanPage); }
public void SetCertificates() { try { Certificates.Clear(); var localStore = new X509Store(StoreLocation.CurrentUser); var machineStore = new X509Store(StoreLocation.LocalMachine); localStore.Open(OpenFlags.ReadOnly); if (localStore.Certificates.Count > 0) { foreach (var certificate in localStore.Certificates) { var cert = new Certificate(); if (IsSigningCert(certificate)) { if (string.IsNullOrEmpty(certificate.FriendlyName)) { cert.FriendlyName = certificate.SubjectName.Name; } else { cert.FriendlyName = certificate.FriendlyName; } cert.IssuerName = certificate.IssuerName.Name; cert.ThumbPrint = certificate.Thumbprint; Certificates.Add(cert); } } } machineStore.Open(OpenFlags.ReadOnly); if (machineStore.Certificates.Count > 0) { foreach (var certificate in machineStore.Certificates) { var cert = new Certificate(); if (IsSigningCert(certificate)) { if (String.IsNullOrEmpty(certificate.FriendlyName)) { cert.FriendlyName = certificate.SubjectName.Name; } else { cert.FriendlyName = certificate.FriendlyName; } cert.IssuerName = certificate.IssuerName.Name; cert.ThumbPrint = certificate.Thumbprint; Certificates.Add(cert); } } } localStore.Close(); machineStore.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public async Task CanCompactEncryptedDb() { var certificates = Certificates.SetupServerAuthentication(); var dbName = GetDatabaseName(); var adminCert = Certificates.RegisterClientCertificate(certificates, new Dictionary <string, DatabaseAccess>(), SecurityClearance.ClusterAdmin); var buffer = new byte[32]; using (var rand = RandomNumberGenerator.Create()) { rand.GetBytes(buffer); } var base64Key = Convert.ToBase64String(buffer); // sometimes when using `dotnet xunit` we get platform not supported from ProtectedData try { #pragma warning disable CA1416 // Validate platform compatibility ProtectedData.Protect(Encoding.UTF8.GetBytes("Is supported?"), null, DataProtectionScope.CurrentUser); #pragma warning restore CA1416 // Validate platform compatibility } catch (PlatformNotSupportedException) { // so we fall back to a file Server.ServerStore.Configuration.Security.MasterKeyPath = GetTempFileName(); } Server.ServerStore.PutSecretKey(base64Key, dbName, true); var path = NewDataPath(); using (var store = GetDocumentStore(new Options { AdminCertificate = adminCert, ClientCertificate = adminCert, ModifyDatabaseName = s => dbName, ModifyDatabaseRecord = record => record.Encrypted = true, Path = path })) { store.Maintenance.Send(new CreateSampleDataOperation(operateOnTypes: DatabaseSmugglerOptions.DefaultOperateOnTypes)); for (int i = 0; i < 3; i++) { await store.Operations.Send(new PatchByQueryOperation(new IndexQuery { Query = @"FROM Orders UPDATE { put(""orders/"", this); } " })).WaitForCompletionAsync(TimeSpan.FromSeconds(300)); } Indexes.WaitForIndexing(store); var deleteOperation = store.Operations.Send(new DeleteByQueryOperation(new IndexQuery() { Query = "FROM orders" })); await deleteOperation.WaitForCompletionAsync(TimeSpan.FromSeconds(60)); var oldSize = StorageCompactionTestsSlow.GetDirSize(new DirectoryInfo(path)); var compactOperation = store.Maintenance.Server.Send(new CompactDatabaseOperation(new CompactSettings { DatabaseName = store.Database, Documents = true, Indexes = new[] { "Orders/ByCompany", "Orders/Totals" } })); await compactOperation.WaitForCompletionAsync(TimeSpan.FromSeconds(60)); var newSize = StorageCompactionTestsSlow.GetDirSize(new DirectoryInfo(path)); Assert.True(oldSize > newSize); } }
protected virtual void Page_Load(object sender, EventArgs e) { if (this.userid > 0) { if (CheckUserPopedoms("X") || CheckUserPopedoms("6-5-2")) { string tSQL = ""; OrderID = HTTPRequest.GetInt("orderid", 0); ordertype = HTTPRequest.GetInt("ordertype", 0); Act = HTTPRequest.GetString("Act"); if (!ispost) { //对账时使用 if (Act == "s") { //int sObjectType = HTTPRequest.GetInt("sObjectType", -1); //int sObjectID = HTTPRequest.GetInt("sObjectID", -1); //if (sObjectType > -1 && sObjectID > -1) //{ // tSQL = "cObject=0 and toObject=" + sObjectType + " and toObjectID=" + sObjectID + " and cState=0"; // cCode = Utils.ChkSQL(HTTPRequest.GetServerString("cCode")); // if (cCode.Trim() != "") // { // tSQL += " and cCode like '%" + cCode + "%'"; // } // cType = HTTPRequest.GetInt("cType", -1); // if (cType > -1) // { // tSQL += " and cType=" + cType; // } // dList = Certificates.GetCertificateInfoList(tSQL+" order by cDateTime desc").Tables[0]; //} //else { // dList = Certificates.GetCertificateInfoList(" cObject=0 and cState=0 order by cDateTime desc").Tables[0]; //} tSQL = " cObject=0 and cState=0 "; cNumber = HTTPRequest.GetString("cNumber"); if (Utils.StrToInt(cNumber, 0) > 0) { tSQL += " and cNumber = " + cNumber + ""; } cType = HTTPRequest.GetInt("cType", -1); if (cType > -1) { tSQL += " and cType=" + cType; } cDateTimeB = Utils.ChkSQL(HTTPRequest.GetString("cDateTimeB")); if (cDateTimeB.Trim() != "" && Utils.IsDateString(cDateTimeB.Trim())) { tSQL += " and cDateTime>='" + cDateTimeB.Trim() + " 00:00:00 '"; } cDateTimeE = Utils.ChkSQL(HTTPRequest.GetString("cDateTimeE")); if (cDateTimeE.Trim() != "" && Utils.IsDateString(cDateTimeE.Trim())) { tSQL += " and cDateTime<='" + cDateTimeE.Trim() + " 23:59:59 '"; } dList = Certificates.GetCertificateInfoList(tSQL + " order by cDateTime desc").Tables[0]; } else { dList = Certificates.GetCertificateInfoList(" cObject=1 and cObjectID=" + OrderID + " and cState=0 order by cDateTime desc").Tables[0]; } } else { string CertificateIDStr = HTTPRequest.GetString("CertificateIDStr");//凭证系统编号集合,逗号分割 string tMsg = ""; string format = ""; //json操作部分,返回json if (Act == "Finish")//凭证随附操作完成 { format = "json"; if (CheckUserPopedoms("X") || CheckUserPopedoms("3-1-1-10")) { try { OrderInfo oi = Orders.GetOrderInfoModel(OrderID); if (oi != null) { if (oi.oState != 1) { if (oi.oSteps == 2) { oi.oSteps = 3; Orders.UpdateOrderInfo(oi); tbProductsInfo.UpdateProductsStorageByOrderID(OrderID);//更新当前在途库存情况 OrderWorkingLogInfo owl = new OrderWorkingLogInfo(); decimal _sumMoney = 0; if (CertificateIDStr.Trim() != "") { string[] CertificateIDStrArray = Utils.SplitString(CertificateIDStr, ","); if (CertificateIDStrArray.Length > 0) { CertificateInfo _ci = new CertificateInfo(); try { foreach (string _tStr in CertificateIDStrArray) { if (_tStr.Trim() != "") { _ci = Certificates.GetCertificateInfoModel(Convert.ToInt32(_tStr)); if (_ci != null) { _sumMoney += _ci.cMoney; tMsg += "凭证号:" + _ci.cCode + ",单位:" + _ci.toObjectName + ",金额:" + _ci.cMoney + ";"; } } } } finally { _ci = null; } } } owl.OrderID = oi.OrderID; owl.UserID = this.userid; owl.oType = 9; owl.oMsg = (tMsg.Trim() != "") ? "随附凭证,合计金额:" + _sumMoney.ToString() + ",凭证摘要:" + tMsg + " ,完成财务操作." : "没有任何凭证随附."; owl.pAppendTime = DateTime.Now; Orders.AddOrderWorkingLogInfo(owl); owl.OrderID = oi.OrderID; owl.UserID = this.userid; owl.oType = 3; owl.oMsg = "系统自动发货处理,等待收货."; owl.pAppendTime = DateTime.Now; Orders.AddOrderWorkingLogInfo(owl); AddMsgLine("发货 操作成功!"); } else { AddErrLine("单据非 已审核 待 发货 状态,无法进行 发货 操作!请重试!"); } } else { AddErrLine("此单已作废!"); } } else { AddErrLine("参数错误,该单据不存在!请重试!"); } } catch { AddErrLine("发货 操作失败!请重试!"); } } else { AddErrLine("权限不足!"); } } if (format == "json") { Response.ClearContent(); Response.Buffer = true; Response.ExpiresAbsolute = System.DateTime.Now.AddYears(-1); Response.Expires = 0; Response.Charset = "utf-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); Response.ContentType = "application/json"; string Json_Str = "{\"results\": {\"msg\":\"" + this.msgbox_text + "\",\"state\":\"" + (!IsErr()).ToString() + "\"}}"; Response.Write(Json_Str); Response.End(); } } } else { AddErrLine("权限不足!"); AddScript("window.setTimeout('window.parent.HidBox();',1000);"); } } else { AddErrLine("请先登录!"); SetBackLink("login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer())); SetMetaRefresh(1, "login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer())); } }
public async Task MakeSureDeletionsRevisionsDontReplicate() { var certificates = Certificates.SetupServerAuthentication(); var adminCert = Certificates.RegisterClientCertificate(certificates.ServerCertificate.Value, certificates .ClientCertificate1.Value, new Dictionary <string, DatabaseAccess>(), SecurityClearance.ClusterAdmin); var hubDatabase = GetDatabaseName("HUB"); var sinkDatabase = GetDatabaseName("SINK"); using var hubStore = GetDocumentStore(new RavenTestBase.Options { AdminCertificate = adminCert, ClientCertificate = adminCert, ModifyDatabaseName = x => hubDatabase }); using var sinkStore = GetDocumentStore(new RavenTestBase.Options { AdminCertificate = adminCert, ClientCertificate = adminCert, ModifyDatabaseName = x => sinkDatabase }); //setup expiration await SetupExpiration(sinkStore); var pullCert = new X509Certificate2(File.ReadAllBytes(certificates.ClientCertificate2Path), (string)null, X509KeyStorageFlags.Exportable); await hubStore.Maintenance.SendAsync(new PutPullReplicationAsHubOperation(new PullReplicationDefinition { Name = "pullRepHub", Mode = PullReplicationMode.SinkToHub | PullReplicationMode.HubToSink, PreventDeletionsMode = PreventDeletionsMode.PreventSinkToHubDeletions })); await hubStore.Maintenance.SendAsync(new RegisterReplicationHubAccessOperation("pullRepHub", new ReplicationHubAccess { Name = "hubAccess", CertificateBase64 = Convert.ToBase64String(pullCert.Export(X509ContentType.Cert)) })); await sinkStore.Maintenance.SendAsync(new PutConnectionStringOperation <RavenConnectionString>(new RavenConnectionString { Database = hubStore.Database, Name = hubStore.Database + "ConStr", TopologyDiscoveryUrls = hubStore.Urls })); await sinkStore.Maintenance.SendAsync(new UpdatePullReplicationAsSinkOperation(new PullReplicationAsSink { ConnectionStringName = hubStore.Database + "ConStr", Mode = PullReplicationMode.SinkToHub | PullReplicationMode.HubToSink, CertificateWithPrivateKey = Convert.ToBase64String(pullCert.Export(X509ContentType.Pfx)), HubName = "pullRepHub" })); //enable revisions await RevisionsHelper.SetupRevisions(Server.ServerStore, sinkStore.Database, r => r.Collections["Users"].PurgeOnDelete = false); //create doc in sink using (var s = sinkStore.OpenAsyncSession()) { dynamic user1 = new User { Source = "Sink" }; await s.StoreAsync(user1, "users/insink/1"); s.Advanced.GetMetadataFor(user1)[Constants.Documents.Metadata.Expires] = DateTime.UtcNow.AddMinutes(10); await s.SaveChangesAsync(); } //create revision using (var s = sinkStore.OpenAsyncSession()) { var user1 = await s.LoadAsync <User>("users/insink/1"); user1.Source = "SinkAfterChange"; await s.SaveChangesAsync(); } //create doc in hub using (var s = hubStore.OpenAsyncSession()) { await s.StoreAsync(new { Source = "Hub" }, "users/inhub/1"); await s.SaveChangesAsync(); } Assert.True(WaitForDocument(sinkStore, "users/inhub/1")); //make sure hub got both docs and expires gets deleted using (var h = hubStore.OpenAsyncSession()) { //check hub got both docs var doc1 = await h.LoadAsync <dynamic>("users/insink/1"); Assert.NotNull(doc1); //check expired does not exist in users/insink/1 IMetadataDictionary metadata = h.Advanced.GetMetadataFor(doc1); Assert.False(metadata?.ContainsKey(Constants.Documents.Metadata.Expires)); } //delete doc from sink using (var s = sinkStore.OpenAsyncSession()) { s.Delete("users/insink/1"); await s.SaveChangesAsync(); } EnsureReplicating(hubStore, sinkStore); EnsureReplicating(sinkStore, hubStore); //make sure doc is deleted from sink Assert.True(WaitForDocumentDeletion(sinkStore, "users/insink/1")); //make sure doc not deleted from hub and still doesn't contain expires using (var h = hubStore.OpenAsyncSession()) { //check hub got doc var doc1 = await h.LoadAsync <dynamic>("users/insink/1"); Assert.NotNull(doc1); //check expires does not exist in users/insink/1 IMetadataDictionary metadata = h.Advanced.GetMetadataFor(doc1); Assert.False(metadata?.ContainsKey(Constants.Documents.Metadata.Expires)); } }
public async Task Server_store_write_should_throw_concurrency_exception_if_relevant() { using (GetDocumentStore()) { var certificate = new X509Certificate2(Certificates.GenerateAndSaveSelfSignedCertificate().ServerCertificatePath, (string)null, X509KeyStorageFlags.MachineKeySet); TransactionOperationContext context; using (Server.ServerStore.ContextPool.AllocateOperationContext(out context)) using (context.OpenWriteTransaction()) { using (Server.ServerStore.ContextPool.AllocateOperationContext(out context)) { await Server.ServerStore.PutValueInClusterAsync(new PutCertificateCommand("foo/bar", new CertificateDefinition { Certificate = Convert.ToBase64String(certificate.Export(X509ContentType.Cert)), Permissions = null, SecurityClearance = SecurityClearance.ClusterAdmin, Thumbprint = certificate.Thumbprint, PublicKeyPinningHash = certificate.GetPublicKeyPinningHash(), NotAfter = certificate.NotAfter }, string.Empty)); } } using (Server.ServerStore.ContextPool.AllocateOperationContext(out context)) { using (Server.ServerStore.ContextPool.AllocateOperationContext(out context)) { await Server.ServerStore.PutValueInClusterAsync(new PutCertificateCommand("foo/bar", new CertificateDefinition { Certificate = Convert.ToBase64String(certificate.Export(X509ContentType.Cert)), Permissions = null, SecurityClearance = SecurityClearance.ClusterAdmin, Thumbprint = certificate.Thumbprint, PublicKeyPinningHash = certificate.GetPublicKeyPinningHash(), NotAfter = certificate.NotAfter }, string.Empty)); } } using (Server.ServerStore.ContextPool.AllocateOperationContext(out context)) { var foo = new DynamicJsonValue { ["Foo"] = "Bar3" }; using (var blittableObj = context.ReadObject(foo, "read test stuff")) { //TODO: Restore this. ////this shouldn't throw, since expected etag == null //Server.ServerStore.PutValueInClusterAsync(context, "foo/bar", blittableObj).Wait(); //var lastEtag = Server.ServerStore.ReadLastEtag(context); ////this shouldn't throw, since expected etag == existing etag //Server.ServerStore.Write(context, "foo/bar", blittableObj, lastEtag); ////this should throw because existing etag doesn't match with existing etag //Assert.Throws<global::Voron.Exceptions.ConcurrencyException>( // () => Server.ServerStore.Write(context, "foo/bar", blittableObj, 1)); ////this should throw because it has expected etag, but there is no existing value //Assert.Throws<global::Voron.Exceptions.ConcurrencyException>( // () => Server.ServerStore.Write(context, "foo/bar2", blittableObj, 1)); } } } }
public async Task CanRestartEncryptedDbWithIndexes() { var certificates = Certificates.SetupServerAuthentication(); var dbName = GetDatabaseName(); var adminCert = Certificates.RegisterClientCertificate(certificates, new Dictionary <string, DatabaseAccess>(), SecurityClearance.ClusterAdmin); var buffer = new byte[32]; using (var rand = RandomNumberGenerator.Create()) { rand.GetBytes(buffer); } var base64Key = Convert.ToBase64String(buffer); // sometimes when using `dotnet xunit` we get platform not supported from ProtectedData try { #pragma warning disable CA1416 // Validate platform compatibility ProtectedData.Protect(Encoding.UTF8.GetBytes("Is supported?"), null, DataProtectionScope.CurrentUser); #pragma warning restore CA1416 // Validate platform compatibility } catch (PlatformNotSupportedException) { // so we fall back to a file Server.ServerStore.Configuration.Security.MasterKeyPath = GetTempFileName(); } Server.ServerStore.PutSecretKey(base64Key, dbName, true); using (var store = GetDocumentStore(new Options { AdminCertificate = adminCert, ClientCertificate = adminCert, ModifyDatabaseName = s => dbName, ModifyDatabaseRecord = record => record.Encrypted = true, Path = NewDataPath() })) { store.Maintenance.Send(new CreateSampleDataOperation(operateOnTypes: DatabaseSmugglerOptions.DefaultOperateOnTypes)); using (var commands = store.Commands()) { // create auto map index var command = new QueryCommand(commands.Session, new IndexQuery { Query = "FROM Orders WHERE Lines.Count > 2", WaitForNonStaleResults = true }); commands.RequestExecutor.Execute(command, commands.Context); // create auto map reduce index command = new QueryCommand(commands.Session, new IndexQuery { Query = "FROM Orders GROUP BY Company WHERE count() > 5 SELECT count() as TotalCount", WaitForNonStaleResults = true }); commands.RequestExecutor.Execute(command, commands.Context); var indexDefinitions = store.Maintenance.Send(new GetIndexesOperation(0, 10)); Assert.Equal(9, indexDefinitions.Length); // 6 sample data indexes + 2 new dynamic indexes Indexes.WaitForIndexing(store); // perform a query per index foreach (var indexDef in indexDefinitions) { QueryResult queryResult = store.Commands().Query(new IndexQuery { Query = $"FROM INDEX '{indexDef.Name}'" }); Assert.True(queryResult.Results.Length > 0, $"queryResult.Results.Length > 0 for '{indexDef.Name}' index."); } // restart database Server.ServerStore.DatabasesLandlord.UnloadDirectly(store.Database); await Server.ServerStore.DatabasesLandlord.TryGetOrCreateResourceStore(store.Database); // perform a query per index foreach (var indexDef in indexDefinitions) { QueryResult queryResult = store.Commands().Query(new IndexQuery { Query = $"FROM INDEX '{indexDef.Name}'" }); Assert.True(queryResult.Results.Length > 0, $"queryResult.Results.Length > 0 for '{indexDef.Name}' index."); } } } }
private async Task GetCertificates(CertificatesFilter filters, bool forceCloud = false) { try { using (var dlg = this.Dialogs.Loading("Progress (No Cancel)")) { Certificates.Clear(); var buildingUsers = await _buildingService.GetBuildingUsers(BuildingId, false); var cnUsers = buildingUsers.Where(x => x.UserPrivileges.Contains("CN")).ToList(); var downloadedCertsResult = await _certificatesService.GetAllDownloadedCertificates(BuildingId); if (!downloadedCertsResult.Success) { Dialogs.Toast(downloadedCertsResult.Message); return; } var downloadedCertificates = downloadedCertsResult.ResultObject as List <Certificate>; if (downloadedCertificates != null) { DownloadedCertificates = downloadedCertificates; var certsResult = await _certificatesService.GetAllCertificates(filters, BuildingId, forceCloud); if (!certsResult.Success) { Dialogs.Toast(certsResult.Message); return; } var certsAndNumber = certsResult.ResultObject as Tuple <IEnumerable <CertificateRow>, int, int>; if (certsAndNumber == null) { return; } Dialogs.Toast("Results; " + certsAndNumber.Item3 + " records returned out of " + certsAndNumber.Item2 + " found."); var certificates = certsAndNumber.Item1; if (certificates != null && certificates.Any()) { foreach (var certificate in certificates) { var selectableCertificate = new CertificateRowSelect() { Certificate = certificate, IsSelected = false }; //if (downloadedCertificates.Any(x => x.CertId == certificate.CertId)) // selectableCertificate.IsSelected = true; Certificates.Add(selectableCertificate); } } foreach (var cert in Certificates) { cert.Certificate.Contractor = cnUsers?.FirstOrDefault(x => x.UserId == cert.Certificate.ConUserId)?.UserFullname; } } } } catch (ServiceAuthenticationException e) { var result = await TryToLogin(); if (!result) { await NavigationService.NavigateToAsync <LoginViewModel>(); } else { await GetCertificates(filters, forceCloud); } } catch (Exception e) { await ShowErrorAlert(e.Message); } }
public async Task CanHandleCorsHeaders() { var clusterSize = 3; var databaseName = GetDatabaseName(); var(_, leader, certificates) = await CreateRaftClusterWithSsl(clusterSize, false); X509Certificate2 adminCertificate = Certificates.RegisterClientCertificate(certificates, new Dictionary <string, DatabaseAccess>(), SecurityClearance.ClusterAdmin, server: leader); var members = leader.ServerStore.GetClusterTopology().Members.Values.ToList(); var nonLeaderUrl = members.First(x => x != leader.WebUrl); var leaderUrl = leader.WebUrl; var externalUrl = "http://example.com"; foreach (var certToUse in new List <X509Certificate2> { null, adminCertificate }) { // endpoint with public Cors access - it should respond { // empty origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/setup/alive", response => { Assert.True(response.IsSuccessStatusCode); Assert.False(response.Headers.Contains("Access-Control-Allow-Origin")); }, certificate : certToUse); // leader as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/setup/alive", response => { Assert.True(response.IsSuccessStatusCode); Assert.True(response.Headers.Contains("Access-Control-Allow-Origin")); Assert.Equal(leaderUrl, response.Headers.GetValues("Access-Control-Allow-Origin").FirstOrDefault()); }, leaderUrl, certToUse); // member as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/setup/alive", response => { Assert.True(response.IsSuccessStatusCode); Assert.True(response.Headers.Contains("Access-Control-Allow-Origin")); Assert.Equal(nonLeaderUrl, response.Headers.GetValues("Access-Control-Allow-Origin").FirstOrDefault()); }, nonLeaderUrl, certToUse); // random as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/setup/alive", response => { Assert.True(response.IsSuccessStatusCode); Assert.True(response.Headers.Contains("Access-Control-Allow-Origin")); Assert.Equal(externalUrl, response.Headers.GetValues("Access-Control-Allow-Origin").FirstOrDefault()); }, externalUrl, certToUse); } { // endpoint with cluster wide CORS policy // empty origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/cluster/demote", response => { Assert.True(response.IsSuccessStatusCode); Assert.False(response.Headers.Contains("Access-Control-Allow-Origin")); }, certificate : certToUse); // leader as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/cluster/demote", response => { Assert.True(response.IsSuccessStatusCode); Assert.True(response.Headers.Contains("Access-Control-Allow-Origin")); Assert.Equal(leaderUrl, response.Headers.GetValues("Access-Control-Allow-Origin").FirstOrDefault()); }, leaderUrl, certToUse); // member as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/cluster/demote", response => { Assert.True(response.IsSuccessStatusCode); Assert.True(response.Headers.Contains("Access-Control-Allow-Origin")); Assert.Equal(nonLeaderUrl, response.Headers.GetValues("Access-Control-Allow-Origin").FirstOrDefault()); }, nonLeaderUrl, certToUse); // random as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/cluster/demote", response => { Assert.True(response.IsSuccessStatusCode); Assert.False(response.Headers.Contains("Access-Control-Allow-Origin")); }, externalUrl, certToUse); } { // endpoint with out CORS policy // empty origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/databases", response => { Assert.False(response.IsSuccessStatusCode); }, certificate : certToUse); // leader as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/databases", response => { Assert.False(response.IsSuccessStatusCode); }, leaderUrl, certToUse); // member as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/databases", response => { Assert.False(response.IsSuccessStatusCode); }, nonLeaderUrl, certToUse); // random as origin await ExecuteRequest(HttpMethod.Options, leaderUrl + "/admin/databases", response => { Assert.False(response.IsSuccessStatusCode); }, externalUrl, certToUse); } } }
private bool CanDelete() { return(Certificates.Any(_ => _.IsSelected)); }
public override string ToString() { return(string.Join("\r\n", Certificates.Select(c => c.ToString()).ToArray())); }
public static IQueryable <ICertificate> GetCertificatesOfEmployee(IEmployee employee) { return(Certificates.GetAll(x => Equals(x.Owner, employee))); }
public async Task CriteriaScriptWithTransformation(bool useSsl) { string dbName = GetDatabaseName(); X509Certificate2 clientCertificate = null; X509Certificate2 adminCertificate = null; if (useSsl) { var certificates = Certificates.SetupServerAuthentication(); adminCertificate = Certificates.RegisterClientCertificate(certificates.ServerCertificate.Value, certificates.ClientCertificate1.Value, new Dictionary <string, DatabaseAccess>(), SecurityClearance.ClusterAdmin); clientCertificate = Certificates.RegisterClientCertificate(certificates.ServerCertificate.Value, certificates.ClientCertificate2.Value, new Dictionary <string, DatabaseAccess> { [dbName] = DatabaseAccess.ReadWrite, }); } using (var store = GetDocumentStore(new Options { AdminCertificate = adminCertificate, ClientCertificate = clientCertificate, ModifyDatabaseName = s => dbName })) { using (var subscriptionManager = new DocumentSubscriptions(store)) { await CreateDocuments(store, 1); var lastChangeVector = (await store.Maintenance.SendAsync(new GetStatisticsOperation())).DatabaseChangeVector; await CreateDocuments(store, 6); var subscriptionCreationParams = new SubscriptionCreationOptions() { Query = @" declare function project(d) { var namSuffix = parseInt(d.Name.replace('ThingNo', '')); if (namSuffix <= 2){ return false; } else if (namSuffix == 3){ return null; } else if (namSuffix == 4){ return d; } return {Name: 'foo', OtherDoc:load('things/6-A')} } from Things as d select project(d) ", ChangeVector = lastChangeVector }; var subsId = subscriptionManager.Create(subscriptionCreationParams); using (var subscription = subscriptionManager.GetSubscriptionWorker <Thing>(new SubscriptionWorkerOptions(subsId) { TimeToWaitBeforeConnectionRetry = TimeSpan.FromSeconds(5) })) { using (store.GetRequestExecutor().ContextPool.AllocateOperationContext(out JsonOperationContext context)) { var list = new BlockingCollection <Thing>(); GC.KeepAlive(subscription.Run(x => { foreach (var item in x.Items) { list.Add(item.Result); } })); Thing thing; Assert.True(list.TryTake(out thing, _reasonableWaitTime)); Assert.Equal("ThingNo4", thing.Name); Assert.True(list.TryTake(out thing, _reasonableWaitTime)); Assert.Equal("foo", thing.Name); Assert.Equal("ThingNo4", thing.OtherDoc.Name); Assert.False(list.TryTake(out thing, 50)); } } } } }
static int Main(string[] args) { if (args.Length < 1) { Help(); return(1); } switch (args[0].ToLower()) { case "-?": case "/?": case "/h": case "-h": case "?": Help(); return(1); case "listcerts": { Console.WriteLine("Available certificates:"); foreach (string s in Certificates.GetCertificates(StoreLocation.CurrentUser)) { Console.WriteLine(" " + s); } Console.WriteLine("Available CSPs:"); foreach (string s in SmartCards.GetCSPProviders()) { Console.WriteLine(" " + s); } return(0); } case "compile": { if (args.Length < 4) { Console.WriteLine("Insufficient argurments."); return(1); } string filename = args[1]; CertMethod certmeth = CertMethod.UNKNOWN; switch (args[2].ToLower()) { case "cert": certmeth = CertMethod.CERT; break; case "csp": certmeth = CertMethod.CSP; break; } if (certmeth == CertMethod.UNKNOWN) { Console.WriteLine("Unknown certificate method."); return(1); } string certname = args[3]; PKGCompilerArgs pkgcompiler = new PKGCompilerArgs(); pkgcompiler.UseExtSign = certmeth == CertMethod.CSP ? true : false; pkgcompiler.SignCert = certname; pkgcompiler.SignExtCert = certname; pkgcompiler.SignLocation = StoreLocation.CurrentUser; pkgcompiler.PIN = null; string ErrorText; PackageCompiler PackageCompiler = new PackageCompiler(); PackageCompiler.OnStatusUpdate += PackageCompiler_OnStatusUpdate; bool res = PackageCompiler.CompilePackage(filename, pkgcompiler, out ErrorText); if (res == false) { Console.WriteLine("\n" + ErrorText + "\n\nFAILED!\n"); return(5); } Console.WriteLine("Success"); return(0); } default: { Console.WriteLine("Unsupported command"); break; } } return(1); }
protected virtual void Page_Load(object sender, EventArgs e) { pagesize = 20; PageBarHTML = ""; if (this.userid > 0) { if (CheckUserPopedoms("X") || CheckUserPopedoms("6-1")) { if (HTTPRequest.GetString("page").Trim() != "" && Utils.IsInt(HTTPRequest.GetString("page").Trim())) { pageindex = int.Parse(HTTPRequest.GetString("page").Trim()); } else { pageindex = 1; } string tSQL = " tbCertificateDataInfo.CertificateID in (select CertificateID from tbCertificateInfo where cState=0) "; Act = HTTPRequest.GetString("Act"); S_key = HTTPRequest.GetString("S_key"); ShowType = HTTPRequest.GetInt("ShowType", 0); cObjectName = HTTPRequest.GetString("cObjectName"); cObjectType = HTTPRequest.GetInt("cObjectType", -1); cObjectID = HTTPRequest.GetInt("cObjectID", -1); cObjectIsRoot = HTTPRequest.GetInt("cObjectIsRoot", -1); FeesSubject = HTTPRequest.GetString("FeesSubject"); FeesSubjectID = HTTPRequest.GetInt("FeesSubjectID", -1); StaffID = HTTPRequest.GetInt("StaffID", -1); StaffName = HTTPRequest.GetString("StaffName"); TimeB = HTTPRequest.GetString("TimeB"); TimeE = HTTPRequest.GetString("TimeE"); cSteps = HTTPRequest.GetInt("cSteps", -1); #region 单位 if (cObjectID > 0) { string cObjectIDStr = ""; if (cObjectIsRoot == 1)//非叶节点 { switch (cObjectType) { case 0: //客户 cObjectIDStr = DataClass.GetCustomersClassChildStr(cObjectID); if (cObjectIDStr.Trim() != "") { cObjectIDStr = "select StoresID from tbStoresInfo where CustomersClassID in(" + cObjectIDStr + "," + cObjectID + ")"; } break; case 1: //供应商 cObjectIDStr = DataClass.GetSupplierClassChildStr(cObjectID); if (cObjectIDStr.Trim() != "") { cObjectIDStr = "select SupplierID from tbSupplierInfo where SupplierClassID in(" + cObjectIDStr + "," + cObjectID + ")"; } break; case 2: //人员 cObjectIDStr = DataClass.GetDepartmentsClassChildStr(cObjectID); if (cObjectIDStr.Trim() != "") { cObjectIDStr = "select StaffID from tbStaffInfo where DepartmentsClassID in(" + cObjectIDStr + "," + cObjectID + ")"; } break; } } else { cObjectIDStr = cObjectID.ToString(); } tSQL += " and tbCertificateDataInfo.toObject=" + cObjectType + " and tbCertificateDataInfo.toObjectID in(" + cObjectIDStr + ")"; } #endregion #region 科目 if (FeesSubjectID > 0) { string FeesSubjectIDStr = DataClass.GetFeesSubjectClassChildStr(FeesSubjectID); if (FeesSubjectIDStr.Trim() != "") { tSQL += " and tbCertificateDataInfo.FeesSubjectID in(" + FeesSubjectIDStr + "," + FeesSubjectID + ")"; } else { tSQL += " and tbCertificateDataInfo.FeesSubjectID in(" + FeesSubjectID + ")"; } } #endregion #region 经办人 if (StaffID > 0) { tSQL += " and tbCertificateDataInfo.CertificateID in (select CertificateID from tbCertificateInfo where StaffID=" + StaffID + ") "; } #endregion #region 时间 if (TimeB.Trim() != "" && Utils.IsDateString(TimeB.Trim())) { tSQL += " and tbCertificateDataInfo.CertificateID in (select CertificateID from tbCertificateInfo where cDateTime>='" + Convert.ToDateTime(TimeB.Trim()).ToShortDateString() + " 00:00:00 ') "; } if (TimeE.Trim() != "" && Utils.IsDateString(TimeE.Trim())) { tSQL += " and tbCertificateDataInfo.CertificateID in (select CertificateID from tbCertificateInfo where cDateTime<='" + Convert.ToDateTime(TimeE.Trim()).ToShortDateString() + " 23:59:59 ') "; } #endregion if (cSteps > -1) { tSQL += " and tbCertificateDataInfo.CertificateID in (select CertificateID from tbCertificateInfo where cSteps=" + cSteps + ")"; } if (!IsErr()) { if (Act.IndexOf("Export") > -1)//导出 { tSQL = Utils.ReplaceString(tSQL, "tbCertificateDataInfo.", "cd.", false); DataSet _exDs = Certificates.GetCertificateDataInfoListB(tSQL + " order by cd.CertificateDataID desc"); _exDs.Tables[0].Columns[0].ColumnName = "凭证编号"; _exDs.Tables[0].Columns[1].ColumnName = "凭证类型"; _exDs.Tables[0].Columns[2].ColumnName = "发生时间"; _exDs.Tables[0].Columns[3].ColumnName = "摘要"; _exDs.Tables[0].Columns[4].ColumnName = "金额"; _exDs.Tables[0].Columns[5].ColumnName = "科目"; _exDs.Tables[0].Columns[6].ColumnName = "单位类型"; _exDs.Tables[0].Columns[7].ColumnName = "单位"; _exDs.Tables[0].Columns[8].ColumnName = "经办人"; _exDs.Tables[0].Columns[9].ColumnName = "说明"; _exDs.Tables[0].Columns[10].ColumnName = "创建时间"; CreateExcel(_exDs.Tables[0], "Data_" + DateTime.Now.ToShortDateString() + ".xls"); } else { decimal[] SumMoney = Certificates.GetCertificateDataSumMoney(tSQL); SumMoneyA = SumMoney[0]; SumMoneyB = SumMoney[1]; dList = Certificates.GetCertificateDataInfoList(pagesize, pageindex, tSQL, out pagetotal, 1, "*"); PageBarHTML = Utils.TenPage(pageindex, pagetotal, 0, "&Act=" + Act + "&S_key=" + S_key + "&ShowType=" + ShowType + "&cObjectName=" + cObjectName + "&cObjectType=" + cObjectType + "&cObjectID=" + cObjectID + "&cObjectIsRoot=" + cObjectIsRoot + "&FeesSubject=" + FeesSubject + "&FeesSubjectID=" + FeesSubjectID + "&StaffName=" + StaffName + "&StaffID=" + StaffID + "&TimeB=" + TimeB + "&TimeE=" + TimeE + "&cSteps=" + cSteps); } } } else { AddErrLine("权限不足!"); } } else { AddErrLine("请先登录!"); SetBackLink("login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer())); SetMetaRefresh(1, "login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer())); } }
static bool SaveApplySettings(SQLLib sql, ServerSettings newsettings) { if (Certificates.CertificateExists(newsettings.UseCertificate, System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine) == false) { return(false); } if (newsettings.EMailPort < 1 || newsettings.EMailPort > 65535) { return(false); } if (newsettings.KeepEventLogDays < 0) { return(false); } if (newsettings.KeepNonPresentDisks < 0) { return(false); } if (newsettings.KeepReports < 0) { return(false); } if (newsettings.KeepChatLogs < 0) { return(false); } if (newsettings.KeepBitlockerRK < 0) { return(false); } if (string.IsNullOrWhiteSpace(newsettings.AdministratorName) == true) { newsettings.AdministratorName = "Administrator"; } if (string.IsNullOrWhiteSpace(newsettings.AdminIPAddresses) == true) { newsettings.AdminIPAddresses = ""; } else { foreach (string s in newsettings.AdminIPAddresses.Split(',')) { if (s.Contains("/") == false) { return(false); } IPNetwork ip; if (IPNetwork.TryParse(s, out ip) == false) { return(false); } } } Settings.UseCertificate = newsettings.UseCertificate; Settings.KeepEventLogDays = newsettings.KeepEventLogDays; Settings.KeepBitlockerRK = newsettings.KeepBitlockerRK; Settings.KeepChatLogs = newsettings.KeepChatLogs; Settings.KeepNonPresentDisks = newsettings.KeepNonPresentDisks; Settings.EMailAdminTo = newsettings.EMailAdminTo; Settings.EMailFrom = newsettings.EMailFrom; Settings.EMailFromFriendly = newsettings.EMailFromFriendly; Settings.EMailPort = newsettings.EMailPort; Settings.EMailServer = newsettings.EMailServer; Settings.EMailUsername = newsettings.EMailUsername; Settings.EMailPassword = newsettings.EMailPassword; Settings.EMailUseSSL = newsettings.EMailUseSSL; Settings.EMailAdminScheduling = newsettings.EMailAdminScheduling; Settings.EMailClientScheduling = newsettings.EMailClientScheduling; Settings.EMailAdminIsHTML = newsettings.EMailAdminIsHTML; Settings.EMailClientIsHTML = newsettings.EMailClientIsHTML; Settings.EMailAdminText = newsettings.EMailAdminText; Settings.EMailClientText = newsettings.EMailClientText; Settings.EMailAdminSubject = newsettings.EMailAdminSubject; Settings.EMailClientSubject = newsettings.EMailClientSubject; Settings.AdminIPAddresses = newsettings.AdminIPAddresses; Settings.AdministratorName = newsettings.AdministratorName; Settings.KeepReports = newsettings.KeepReports; Settings.MessageDisclaimer = newsettings.MessageDisclaimer; PutString(sql, "UseCertificate", Settings.UseCertificate); PutInt64(sql, "KeepEventLogDays", Settings.KeepEventLogDays); PutInt64(sql, "KeepNonPresentDisks", Settings.KeepNonPresentDisks); PutInt64(sql, "KeepBitlockerRK", Settings.KeepBitlockerRK); PutInt64(sql, "KeepReports", Settings.KeepReports); PutInt64(sql, "KeepChatLogs", Settings.KeepChatLogs); PutString(sql, "EMailAdminTo", Settings.EMailAdminTo); PutString(sql, "EMailFrom", Settings.EMailFrom); PutString(sql, "EMailFromFriendly", Settings.EMailFromFriendly); PutInt(sql, "EMailPort", Settings.EMailPort); PutString(sql, "EMailServer", Settings.EMailServer); PutString(sql, "EMailUsername", Settings.EMailUsername); PutString(sql, "EMailPassword", Settings.EMailPassword); PutBool(sql, "EMailUseSSL", Settings.EMailUseSSL); PutBool(sql, "EMailAdminIsHTML", Settings.EMailAdminIsHTML); PutBool(sql, "EMailClientIsHTML", Settings.EMailClientIsHTML); PutString(sql, "EMailAdminText", Settings.EMailAdminText); PutString(sql, "EMailClientText", Settings.EMailClientText); PutString(sql, "EMailAdminSubject", Settings.EMailAdminSubject); PutString(sql, "EMailClientSubject", Settings.EMailClientSubject); PutString(sql, "AdminIPAddresses", Settings.AdminIPAddresses); PutString(sql, "AdminstratorName", Settings.AdministratorName); PutString(sql, "MessageDisclaimer", Settings.MessageDisclaimer); PutString(sql, "EMailAdminSched", JsonConvert.SerializeObject(Settings.EMailAdminScheduling)); PutString(sql, "EMailClientSched", JsonConvert.SerializeObject(Settings.EMailClientScheduling)); return(true); }
public string Order_QRCode_URL = ""; //外部查看连接 protected virtual void Page_Load(object sender, EventArgs e) { if (this.userid > 0) { ordertype = HTTPRequest.GetInt("ordertype", 0); orderid = HTTPRequest.GetInt("orderid", 0); Act = Utils.ChkSQL(HTTPRequest.GetString("Act")).Trim(); format = HTTPRequest.GetString("format"); IsFirst = (HTTPRequest.GetString("IsFirst").Trim() != "") ? Convert.ToBoolean(HTTPRequest.GetString("IsFirst").Trim()) : false;; if (ordertype > 0 && Act != "") { #region 权限判断 switch (ordertype) { case 1: //采购入库=1 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-1-1") || CheckUserPopedoms("3-3-4-1-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-1-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-1-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 采购入库单 列表!"); } break; case 2: //采购退货=2 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-2-1") || CheckUserPopedoms("3-3-4-2-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-2-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-2-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 采购退货单 列表!"); } break; case 3: //销售发货=3 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-3-1") || CheckUserPopedoms("3-3-4-3-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-3-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-3-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 销售发货单 列表!"); } break; case 4: //销售退货=4 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-4-1") || CheckUserPopedoms("3-3-4-4-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-4-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-4-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 销售退货单 列表!"); } break; case 5: //赠品=5 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-5-1") || CheckUserPopedoms("3-3-4-5-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-5-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-5-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 赠品单 列表!"); } break; case 6: //样品=6 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-6-1") || CheckUserPopedoms("3-3-4-6-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-6-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-6-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 样品单 列表!"); } break; case 7: //代购=7 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-7-1") || CheckUserPopedoms("3-3-4-7-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-7-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-7-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 代购单 列表!"); } break; case 8: //库存调整=8 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1") || CheckUserPopedoms("3-3-4-8-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 库存调整单 列表!"); } break; case 9: //库存调拨=9 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1") || CheckUserPopedoms("3-3-4-8-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 库存调拨单 列表!"); } break; case 10: //坏货=10 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1") || CheckUserPopedoms("3-3-4-8-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 坏货单 列表!"); } break; case 11: //换货=11 if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1") || CheckUserPopedoms("3-3-4-8-2")) { switch (Act) { case "8": case "v": if (ispost) { if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-2")) { oi = Orders.GetOrderInfoModel(this.orderid); if (oi != null) { if (oi.oSteps == 2 || oi.oSteps == 3) { } else { AddErrLine("无法 添加 记录,单据状态限制!"); } } else { AddErrLine("参数错误!"); } } else { AddErrLine("权限不足,无法 操作 列表!"); } } if (CheckUserPopedoms("X") || CheckUserPopedoms("3-3-4-8-1")) { OrderWorkingType = 8; } else { AddErrLine("权限不足,无法 查看 列表!"); } break; } } else { AddErrLine("权限不足,无法浏览 换货单 列表!"); } break; case 12: //修正数据 if (CheckUserPopedoms("X") || CheckUserPopedoms("7-2-1-5-7-1")) { IsEditData = true; } else { AddErrLine("权限不足,无法进行数据调整操作!"); } break; } #endregion } else { AddErrLine("参数错误,请返回!"); } if (!IsErr()) { oOrderDateTime = (HTTPRequest.GetString("oOrderDateTime").Trim() != "") ? Convert.ToDateTime(Utils.ChkSQL(HTTPRequest.GetString("oOrderDateTime"))) : DateTime.Now; string _OrderListDataJson = HTTPRequest.GetString("OrderListDataJson"); OrderWorkingLogMsg = Utils.ChkSQL(HTTPRequest.GetString("OrderWorkingLogMsg")); string _splRemake = Utils.ChkSQL(HTTPRequest.GetString("splRemake")); // oi = new OrderInfo(); switch (Act) { #region 查看,修改 case "v": case "e": oi = Orders.GetOrderInfoModel(orderid); if (!ispost) { if (oi != null) { //CertificateList = Certificates.GetCertificateInfoList(" cObject=1 and cObjectID=" + oi.OrderID + " and cState=0 order by cDateTime desc").Tables[0]; PrepayMoney = Certificates.GetPrepayMoneyByOrderID(oi.OrderID); oOrderDateTime = oi.oOrderDateTime; //是否为网购订单 _ms = M_Utils.GetM_SendGoodsInfoModelByOrderID(oi.OrderID); if (_ms != null) { IsMOrder = true; } //未审核,可修改 if (oi.oSteps == 1) { this.ShowEdit = true; ShowTree = true; IsVerify = true; } else { if (oi.oType != 11) //非换货单可修改 { if (oi.oPrepay == 1) { //是否已完成预付操作 IsPrepayOK = Certificates.CheckCertificateByOrderID(oi.OrderID); } else { IsPrepayOK = true; } //已审核已发货 if (oi.oSteps == 3) { this.ShowEdit = true; } else if (oi.oSteps >= 4) { //已经收货,已验收,已对账 IsNOFull = Orders.CheckOrderIsFull(oi.OrderID); } } else { IsPrepayOK = true; this.ShowEdit = false; } } OrderListDataJsonStr = ""; //{"OrderListJson":[{"OrderListID":0,"OrderID":0,"StorageID":0,"ProductsID":0,"oQuantity":0,"oPrice":0,"oMoney":0,"StoresSupplierID":0,"IsPromotions":0,"oWorkType":0,"oAppendTime":"\/Date(1289206775426+0800)\/","OrderFieldValueInfo":[{"OrderFieldValueID":0,"OrderFieldID":0,"OrderListID":0,"oFieldValue":null,"IsVerify":0,"oAppendTime":"\/Date(1289206775426+0800)\/"}]}]} string OrderFieldValueStr = ""; string tSteps = ""; string tSteps_b = ""; Order_QRCode_URL = "" + config.Sysurl + "/o-" + oi.OrderID + ".aspx?rc=" + Utils.UrlEncode(DES.Encode(oi.LastPrintDateTime.ToString() + "|" + oi.oOrderNum, config.Passwordkey)).Trim(); if (IsFirst) //输出原始单据 { tSteps = " oWorkType=0"; tSteps_b = " IsVerify=0"; } else { tSteps = ((oi.oSteps == 1) ? " oWorkType=0" : " oWorkType<>0").ToString(); tSteps_b = ((oi.oSteps == 1) ? " IsVerify=0" : " IsVerify<>0").ToString(); } //取已收发列表 DataTable Storage_Order = tbStorageProductLogInfo.GetStorageProductLogListINOrderList(oi.OrderID).Tables[0]; if (Storage_Order != null) { foreach (DataRow dr_Storage_Order in Storage_Order.Rows) { StorageOrderList += "{\"OrderListID\":" + dr_Storage_Order["OrderListID"].ToString() + "," + "\"StorageID\":" + dr_Storage_Order["StorageID"].ToString() + "," + "\"ProductsID\":" + dr_Storage_Order["ProductsID"].ToString() + "," + "\"pQuantity\":" + dr_Storage_Order["pQuantity"].ToString() + "},"; } if (StorageOrderList != "") { StorageOrderListJsonStr = "{\"StorageOrderList\":[" + Utils.ReSQLSetTxt(StorageOrderList) + "]}"; } } //取单据列表 DataTable OrderListData = Orders.GetOrderListInfoList(" OrderID=" + oi.OrderID + " and " + tSteps + " order by OrderListID asc").Tables[0]; if (OrderListData != null) { foreach (DataRow dr_OrderListData in OrderListData.Rows) { OrderFieldValueStr = ""; DataTable OrderFieldValueData = Orders.GetOrderFieldValueInfoList(" OrderListID=" + dr_OrderListData["OrderListID"].ToString() + "and " + tSteps_b).Tables[0]; foreach (DataRow dr_OrderFieldValueData in OrderFieldValueData.Rows) { OrderFieldValueStr += "{\"OrderFieldValueID\":" + dr_OrderFieldValueData["OrderFieldValueID"].ToString() + ",\"OrderFieldID\":" + dr_OrderFieldValueData["OrderFieldID"].ToString() + ",\"OrderListID\":" + dr_OrderFieldValueData["OrderListID"].ToString() + ",\"oFieldValue\":\"" + dr_OrderFieldValueData["oFieldValue"].ToString() + "\",\"IsVerify\":" + dr_OrderFieldValueData["IsVerify"].ToString() + ",\"oAppendTime\":\"" + dr_OrderFieldValueData["oAppendTime"].ToString() + "\"},"; } if (OrderFieldValueStr != "") { OrderFieldValueStr = ",\"OrderFieldValueInfo\":[" + Utils.ReSQLSetTxt(OrderFieldValueStr) + "]"; } OrderListDataJsonStr += "{\"OrderListID\":" + dr_OrderListData["OrderListID"].ToString() + "," + "\"OrderID\":" + dr_OrderListData["OrderID"].ToString() + "," + "\"StorageID\":" + dr_OrderListData["StorageID"].ToString() + "," + "\"StorageName\":\"" + dr_OrderListData["StorageName"].ToString() + "\"," + "\"ProductsID\":" + dr_OrderListData["ProductsID"].ToString() + "," + "\"ProductsName\":\"" + Utils.ReplaceString(Utils.ReplaceString(dr_OrderListData["ProductsName"].ToString(), "'", "\\'", false), "\"", "\\\"", false) + "\"," + "\"oQuantity\":" + dr_OrderListData["oQuantity"].ToString() + "," + "\"oPrice\":" + dr_OrderListData["oPrice"].ToString() + "," + "\"oMoney\":" + dr_OrderListData["oMoney"].ToString() + "," + "\"StoresSupplierID\":" + dr_OrderListData["StoresSupplierID"].ToString() + "," + "\"IsPromotions\":" + dr_OrderListData["IsPromotions"].ToString() + "," + "\"oWorkType\":" + dr_OrderListData["oWorkType"].ToString() + "," + "\"IsGifts\":" + dr_OrderListData["IsGifts"].ToString() + "," + "\"oAppendTime\":\"" + dr_OrderListData["oAppendTime"].ToString() + "\"," + "\"PriceClassID\":\"" + dr_OrderListData["PriceClassID"].ToString() + "\" " + OrderFieldValueStr + "},"; } if (OrderListDataJsonStr.Trim() != "") { OrderListDataJsonStr = "{\"OrderListJson\":[" + Utils.ReSQLSetTxt(OrderListDataJsonStr) + "]}"; } } } else { AddErrLine("参数错误,单据列表不存在!"); } } break; #endregion } if (ispost) { if (!IsEditData) { //非作废单据 if (oi.oState != 1) { if (oi.oSteps == 2 || oi.oSteps == 3) { } } else { AddErrLine("此单已作废,无法修改!"); AddScript("window.setTimeout('history.back(1);',2000);"); } } else { oi = new OrderInfo(); } if (!IsErr()) { //增加发货记录 spl.StorageID = 0; //暂留无用 spl.StaffID = this.userid; spl.OrderID = oi.OrderID; spl.splRemake = _splRemake; spl.splAppendTime = DateTime.Now; //Response.Write (_OrderListDataJson); // Response.End (); spl.StorageOrderListDataJson = (StorageOrderListDataJson)JavaScriptConvert.DeserializeObject(_OrderListDataJson, typeof(StorageOrderListDataJson)); int StorageProductLogDataID = tbStorageProductLogInfo.AddStorageProductLogInfo(spl); if (StorageProductLogDataID > 0) { AddMsgLine("保存成功!"); //更新当前在途库存情况 if (oi.oSteps == 2) { oi.oSteps = 3; Orders.UpdateOrderInfo(oi); tbProductsInfo.UpdateProductsStorageByOrderID(orderid); OrderWorkingLogInfo owl = new OrderWorkingLogInfo(); owl.OrderID = oi.OrderID; owl.UserID = this.userid; owl.oType = 3; owl.oMsg = OrderWorkingLogMsg; owl.pAppendTime = DateTime.Now; Orders.AddOrderWorkingLogInfo(owl); try { #region 发送邮件给收货人员 //oi = Orders.GetOrderInfoModel(OrderID); switch (oi.oType) { case 1: //采购入库 UsersUtils.SendUserMailByPopedom("3-1-1-4", "采购入库单 等待收货处理,单号:" + oi.oOrderNum, "采购入库单 等待收货处理,单号:" + oi.oOrderNum); break; case 2: //采购退货 UsersUtils.SendUserMailByPopedom("3-1-2-4", "采购退货单 等待收货处理,单号:" + oi.oOrderNum, "采购退货单 等待收货处理,单号:" + oi.oOrderNum); break; case 3: //销售发货 UsersUtils.SendUserMailByPopedom("3-2-1-4", "销售发货单 等待收货处理,单号:" + oi.oOrderNum, "销售发货单 等待收货处理,单号:" + oi.oOrderNum); break; case 4: //销售退货 UsersUtils.SendUserMailByPopedom("3-2-2-4", "销售退货单 等待收货处理,单号:" + oi.oOrderNum, "销售退货单 等待收货处理,单号:" + oi.oOrderNum); break; case 5: //赠品 UsersUtils.SendUserMailByPopedom("3-2-3-4", "赠品单 等待收货处理,单号:" + oi.oOrderNum, "赠品单 等待收货处理,单号:" + oi.oOrderNum); break; case 6: //样品 UsersUtils.SendUserMailByPopedom("3-2-4-4", "样品单 等待收货处理,单号:" + oi.oOrderNum, "样品单 等待收货处理,单号:" + oi.oOrderNum); break; case 7: //代购 UsersUtils.SendUserMailByPopedom("3-2-5-4", "代购单 等待收货处理,单号:" + oi.oOrderNum, "代购单 等待收货处理,单号:" + oi.oOrderNum); break; case 11: //换货 UsersUtils.SendUserMailByPopedom("3-2-6-4", "换货单 等待收货处理,单号:" + oi.oOrderNum, "换货单 等待收货处理,单号:" + oi.oOrderNum); break; case 10: //坏货 UsersUtils.SendUserMailByPopedom("3-3-3-4", "坏货单 等待收货处理,单号:" + oi.oOrderNum, "坏货单 等待收货处理,单号:" + oi.oOrderNum); break; case 8: //库存调整 UsersUtils.SendUserMailByPopedom("3-3-1-4", "库存调整单 等待收货处理,单号:" + oi.oOrderNum, "库存调整单 等待收货处理,单号:" + oi.oOrderNum); break; case 9: //库存调拨 UsersUtils.SendUserMailByPopedom("3-3-2-4", "库存调拨单 等待收货处理,单号:" + oi.oOrderNum, "库存调拨单 等待收货处理,单号:" + oi.oOrderNum); break; } #endregion switch (oi.oType) { case 3: case 4: case 5: case 6: #region 发邮件给业务员 if (oi.StaffID != 0) { tbStaffInfo.SendMailToStaff(oi.StaffID, tbStoresInfo.GetStoresInfoModel(oi.StoresSupplierID).sName + "," + GetOrderType(oi.oType.ToString()) + "单:" + oi.oOrderNum + "已发货.", "客户:" + tbStoresInfo.GetStoresInfoModel(oi.StoresSupplierID).sName + ",的" + GetOrderType(oi.oType.ToString()) + "单,单号:" + oi.oOrderNum + "已发货等待收货,请注意跟踪.<br>单据处理情况:" + config.Sysurl + "/o-" + oi.OrderID + ".aspx?rc=" + Utils.UrlEncode(DES.Encode(oi.LastPrintDateTime.ToString() + "|" + oi.oOrderNum, config.Passwordkey)).Trim()); } #endregion #region 给客户发邮件 tbStoresInfo.SendMailToStores(oi.StoresSupplierID, GetOrderType(oi.oType.ToString()) + "单 已发货,单号:" + oi.oOrderNum, GetOrderType(oi.oType.ToString()) + "单 已发货,单号:" + oi.oOrderNum); #endregion break; } } catch (Exception ex) { AddErrLine(ex.Message); } } } } } } } else { AddErrLine("请先登录!"); SetBackLink("login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer())); SetMetaRefresh(1, "login.aspx?referer=" + Utils.UrlEncode(Utils.GetUrlReferrer())); } if (format == "json") { Response.ClearContent(); Response.Buffer = true; Response.ExpiresAbsolute = System.DateTime.Now.AddYears(-1); Response.Expires = 0; Response.Charset = "utf-8"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); Response.ContentType = "application/json"; string Json_Str = "{\"results\": {\"msg\":\"" + this.msgbox_text + "\",\"state\":\"" + (!IsErr()).ToString() + "\"}" + MS_Json + "}"; Response.Write(Json_Str); Response.End(); } }
void UpdateStatus() { if (Cert.UUCerFile == null) { Cert.UUCerFile = ""; } if (Cert.UUSignFile == null) { Cert.UUSignFile = ""; } if (Cert.UUCerFile.Trim() == "") { lblInstCert.Text = "not set"; lblVulpesSig.Text = "not set"; cmdSave.Enabled = false; } else { try { cmdSave.Enabled = true; string S = Certificates.GetCN(Convert.FromBase64String(Cert.UUCerFile)); if (S == null) { lblInstCert.Text = "<ERROR>"; lblVulpesSig.Text = "<N/A>"; cmdSave.Enabled = false; } else { lblInstCert.Text = S; } } catch { lblInstCert.Text = "<ERROR>"; lblVulpesSig.Text = "<N/A>"; cmdSave.Enabled = false; } if (cmdSave.Enabled == true) { try { if (Cert.UUSignFile.Trim() == "") { lblVulpesSig.Text = "not set"; } else { bool sig = Certificates.Verify(Convert.FromBase64String(Cert.UUCerFile), Convert.FromBase64String(Cert.UUSignFile), InternalCertificate.Main); if (sig == false) { lblVulpesSig.Text = "Signature failed"; } else { lblVulpesSig.Text = "Signature OK"; } } } catch { lblVulpesSig.Text = "<ERROR>"; } } } }
public async Task CertificateAndMasterKeyExecTest() { string script; IDictionary <string, string> customSettings = new ConcurrentDictionary <string, string>(); var keyPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var buffer = new byte[256 / 8]; using (var cryptoRandom = RandomNumberGenerator.Create()) { cryptoRandom.GetBytes(buffer); } File.WriteAllBytes(keyPath, buffer); var certificates = Certificates.GenerateAndSaveSelfSignedCertificate(); if (PlatformDetails.RunningOnPosix) { var scriptPath = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), ".sh")); var keyArgs = CommandLineArgumentEscaper.EscapeAndConcatenate(new List <string> { scriptPath, keyPath }); var certArgs = CommandLineArgumentEscaper.EscapeAndConcatenate(new List <string> { scriptPath, certificates.ServerCertificatePath }); customSettings[RavenConfiguration.GetKey(x => x.Security.MasterKeyExec)] = "bash"; customSettings[RavenConfiguration.GetKey(x => x.Security.MasterKeyExecArguments)] = $"{keyArgs}"; customSettings[RavenConfiguration.GetKey(x => x.Security.CertificateLoadExec)] = "bash"; customSettings[RavenConfiguration.GetKey(x => x.Security.CertificateLoadExecArguments)] = $"{certArgs}"; customSettings[RavenConfiguration.GetKey(x => x.Core.ServerUrls)] = "https://" + Environment.MachineName + ":0"; script = "#!/bin/bash\ncat \"$1\""; File.WriteAllText(scriptPath, script); Process.Start("chmod", $"700 {scriptPath}"); } else { var scriptPath = Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), ".ps1")); var keyArgs = CommandLineArgumentEscaper.EscapeAndConcatenate(new List <string> { "-NoProfile", scriptPath, keyPath }); var certArgs = CommandLineArgumentEscaper.EscapeAndConcatenate(new List <string> { "-NoProfile", scriptPath, certificates.ServerCertificatePath }); customSettings[RavenConfiguration.GetKey(x => x.Security.MasterKeyExec)] = "powershell"; customSettings[RavenConfiguration.GetKey(x => x.Security.MasterKeyExecArguments)] = $"{keyArgs}"; customSettings[RavenConfiguration.GetKey(x => x.Security.CertificateLoadExec)] = "powershell"; customSettings[RavenConfiguration.GetKey(x => x.Security.CertificateRenewExec)] = "powershell"; customSettings[RavenConfiguration.GetKey(x => x.Security.CertificateChangeExec)] = "powershell"; customSettings[RavenConfiguration.GetKey(x => x.Security.CertificateLoadExecArguments)] = $"{certArgs}"; customSettings[RavenConfiguration.GetKey(x => x.Core.ServerUrls)] = "https://" + Environment.MachineName + ":0"; script = @"param([string]$userArg) try { $bytes = Get-Content -path $userArg -encoding Byte $stdout = [System.Console]::OpenStandardOutput() $stdout.Write($bytes, 0, $bytes.Length) } catch { Write-Error $_.Exception exit 1 } exit 0"; File.WriteAllText(scriptPath, script); } UseNewLocalServer(customSettings: customSettings, runInMemory: false); // The master key loading is lazy, let's put a database secret key to invoke it. var dbName = GetDatabaseName(); var databaseKey = new byte[32]; using (var rand = RandomNumberGenerator.Create()) { rand.GetBytes(databaseKey); } var base64Key = Convert.ToBase64String(databaseKey); // sometimes when using `dotnet xunit` we get platform not supported from ProtectedData try { #pragma warning disable CA1416 // Validate platform compatibility ProtectedData.Protect(Encoding.UTF8.GetBytes("Is supported?"), null, DataProtectionScope.CurrentUser); #pragma warning restore CA1416 // Validate platform compatibility } catch (PlatformNotSupportedException) { return; } await Server.ServerStore.EnsureNotPassiveAsync(); Server.ServerStore.PutSecretKey(base64Key, dbName, true); X509Certificate2 serverCertificate; try { serverCertificate = new X509Certificate2(certificates.ServerCertificatePath, (string)null, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet); } catch (CryptographicException e) { throw new CryptographicException($"Failed to load the test certificate from {certificates}.", e); } using (var store = GetDocumentStore(new Options { AdminCertificate = serverCertificate, ClientCertificate = serverCertificate, ModifyDatabaseName = s => dbName, ModifyDatabaseRecord = record => record.Encrypted = true, Path = NewDataPath() })) { } var secrets = Server.ServerStore.Secrets; var serverMasterKey = (Lazy <byte[]>) typeof(SecretProtection).GetField("_serverMasterKey", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(secrets); Assert.True(serverMasterKey.Value.SequenceEqual(buffer)); Assert.True(Server.Certificate.Certificate.Equals(serverCertificate)); }
/// <summary> /// Import the specified certificate and its associated private key. /// </summary> /// <param name="certificate">The certificate and key, in PKCS12 format.</param> /// <param name="passphrase">The passphrase that protects the private key.</param> public void Import(byte[] certificate, string passphrase) { Certificates.Add(new X509Certificate2(certificate, passphrase)); }
public IActionResult GetCertificates() { IActionResult result = null; string rootUrl = Request.GetRootUrl(); Certificates response = new Certificates(); response.AddLink("add", string.Concat(rootUrl, "/identities/certificates"), null); result = Request.GetObjectResult(response); return result; }