Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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());
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
    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);
            }
        }
    }
Exemplo n.º 7
0
 /// <summary>Returns an enumerator that iterates through the resources in this response.</summary>
 public scg::IEnumerator <AuthorizedCertificate> GetEnumerator() => Certificates.GetEnumerator();
Exemplo n.º 8
0
        public void ShowCertificates(object sender, RoutedEventArgs e)
        {
            Certificates certificates = new Certificates();

            certificates.Show();
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        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;
            }
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
            }
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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));
            }
        }
Exemplo n.º 16
0
        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));
                    }
                }
            }
        }
Exemplo n.º 17
0
        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.");
                    }
                }
            }
        }
Exemplo n.º 18
0
        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);
            }
        }
Exemplo n.º 19
0
        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);
                }
            }
        }
Exemplo n.º 20
0
 private bool CanDelete()
 {
     return(Certificates.Any(_ => _.IsSelected));
 }
Exemplo n.º 21
0
 public override string ToString()
 {
     return(string.Join("\r\n", Certificates.Select(c => c.ToString()).ToArray()));
 }
Exemplo n.º 22
0
 public static IQueryable <ICertificate> GetCertificatesOfEmployee(IEmployee employee)
 {
     return(Certificates.GetAll(x => Equals(x.Owner, employee)));
 }
Exemplo n.º 23
0
        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));
                        }
                    }
                }
            }
        }
Exemplo n.º 24
0
        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()));
            }
        }
Exemplo n.º 26
0
        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);
        }
Exemplo n.º 27
0
        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();
            }
        }
Exemplo n.º 28
0
        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>";
                    }
                }
            }
        }
Exemplo n.º 29
0
        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));
 }
Exemplo n.º 31
0
 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;
 }