示例#1
0
文件: CaModule.cs 项目: diycp/Antd
        public CaModule()
        {
            Get["/ca"] = x => {
                var caIsActive = CaConfiguration.IsActive();
                var model      = new PageCaModel {
                    CaIsActive = caIsActive,
                    CaOptions  = CaConfiguration.Get() ?? new CaConfigurationModel()
                };
                return(JsonConvert.SerializeObject(model));
            };

            Post["/ca/set"] = x => {
                CaConfiguration.Set();
                return(HttpStatusCode.OK);
            };

            Post["/ca/enable"] = x => {
                CaConfiguration.Enable();
                return(HttpStatusCode.OK);
            };

            Post["/ca/disable"] = x => {
                CaConfiguration.Disable();
                return(HttpStatusCode.OK);
            };

            Post["/ca/options"] = x => {
                string keyPassout                 = Request.Form.KeyPassout;
                string rootCountryName            = Request.Form.RootCountryName;
                string rootStateOrProvinceName    = Request.Form.RootStateOrProvinceName;
                string rootLocalityName           = Request.Form.RootLocalityName;
                string rootOrganizationName       = Request.Form.RootOrganizationName;
                string rootOrganizationalUnitName = Request.Form.RootOrganizationalUnitName;
                string rootCommonName             = Request.Form.RootCommonName;
                string rootEmailAddress           = Request.Form.RootEmailAddress;
                var    model = new CaConfigurationModel {
                    KeyPassout                 = keyPassout,
                    RootCountryName            = rootCountryName,
                    RootStateOrProvinceName    = rootStateOrProvinceName,
                    RootLocalityName           = rootLocalityName,
                    RootOrganizationName       = rootOrganizationName,
                    RootOrganizationalUnitName = rootOrganizationalUnitName,
                    RootCommonName             = rootCommonName,
                    RootEmailAddress           = rootEmailAddress,
                };
                CaConfiguration.Save(model);
                return(HttpStatusCode.OK);
            };

            Get["/ca/crl"] = x => {
                var crl = $"{Parameter.AntdCfg}/ca/intermediate/crl/intermediate.crl.pem";
                if (!File.Exists(crl))
                {
                    return(HttpStatusCode.ExpectationFailed);
                }
                var          file     = new FileStream(crl, FileMode.Open);
                const string fileName = "intermediate.crl.pem";
                var          response = new StreamResponse(() => file, MimeTypes.GetMimeType(fileName));
                return(response.AsAttachment(fileName));
            };

            Post["/ca/certificate/user"] = x => {
                string name       = Request.Form.Name;
                string passphrase = Request.Form.Passphrase;
                string email      = Request.Form.Email;
                string c          = Request.Form.CountryName;
                string st         = Request.Form.StateOrProvinceName;
                string l          = Request.Form.LocalityName;
                string o          = Request.Form.OrganizationName;
                string ou         = Request.Form.OrganizationalUnitName;
                CaConfiguration.CreateUserCertificate(name, passphrase, email, c, st, l, o, ou);
                return(HttpStatusCode.OK);
            };

            Post["/ca/certificate/server"] = x => {
                string name       = Request.Form.Name;
                string passphrase = Request.Form.Passphrase;
                string email      = Request.Form.Email;
                string c          = Request.Form.CountryName;
                string st         = Request.Form.StateOrProvinceName;
                string l          = Request.Form.LocalityName;
                string o          = Request.Form.OrganizationName;
                string ou         = Request.Form.OrganizationalUnitName;
                CaConfiguration.CreateServerCertificate(name, passphrase, email, c, st, l, o, ou);
                return(HttpStatusCode.OK);
            };

            Post["/ca/certificate/dc"] = x => {
                string name       = Request.Form.Name;
                string passphrase = Request.Form.Passphrase;
                string dcGuid     = Request.Form.Guid;
                string dcDns      = Request.Form.Dns;
                string email      = Request.Form.Email;
                string c          = Request.Form.CountryName;
                string st         = Request.Form.StateOrProvinceName;
                string l          = Request.Form.LocalityName;
                string o          = Request.Form.OrganizationName;
                string ou         = Request.Form.OrganizationalUnitName;
                CaConfiguration.CreateDomainControllerCertificate(name, passphrase, dcGuid, dcDns, email, c, st, l, o, ou);
                return(HttpStatusCode.OK);
            };

            Post["/ca/certificate/sc"] = x => {
                string name       = Request.Form.Name;
                string passphrase = Request.Form.Passphrase;
                string upn        = Request.Form.Upn;
                string email      = Request.Form.Email;
                string c          = Request.Form.CountryName;
                string st         = Request.Form.StateOrProvinceName;
                string l          = Request.Form.LocalityName;
                string o          = Request.Form.OrganizationName;
                string ou         = Request.Form.OrganizationalUnitName;
                CaConfiguration.CreateSmartCardCertificate(name, passphrase, upn, email, c, st, l, o, ou);
                return(HttpStatusCode.OK);
            };
        }