예제 #1
0
        public void FillWeb()
        {
            DataView dv     = Comm.GetAllWebInfo().DefaultView;
            string   filter = " Id<>0 ";

            if (AppPoolId.Text != "全部")
            {
                filter += " and AppPoolId = '" + AppPoolId.Text + "'";
            }

            if (txtWeb.Text.Trim() != "")
            {
                filter += " and Web like '%" + txtWeb.Text.Trim() + "%'";
            }

            if (ServerAutoStart.SelectedValue.ToString() != "-1")
            {
                filter += " and ServerAutoStart = " + ServerAutoStart.SelectedValue;
            }


            dv.RowFilter             = filter;
            dataGridView1.DataSource = dv;


            lblOK.Text      = "总共:" + dataGridView1.Rows.Count + "条";
            lblOK.ForeColor = Color.Red;
            dgvWeb          = dataGridView1;
        }
예제 #2
0
        private void frmLogAnalyzer_Load(object sender, EventArgs e)
        {
            cbxWeb.DataSource    = Comm.GetAllWebInfo();
            cbxWeb.DisplayMember = "Web";
            cbxWeb.ValueMember   = "Id";
            dtp1.Value           = dtp1.Value.AddDays(-1);
            dtp2.Value           = dtp2.Value.AddDays(-1);

            dataGridView1.Columns.Add("OptTime", "时间");
            dataGridView1.Columns.Add("Web", "站点");
            dataGridView1.Columns.Add("All", "总流量");
            dataGridView1.Columns.Add("Down", "下行");
            dataGridView1.Columns.Add("Up", "上行");
            dataGridView1.Columns.Add("Pic", "图片文件");
            dataGridView1.Columns.Add("ASP", "动态文件");
            dataGridView1.Columns.Add("HTML", "静态文件");
            dataGridView1.Columns.Add("RAR", "压缩软件");
            dataGridView1.Columns.Add("Music", "音频文件");
            dataGridView1.Columns.Add("Movie", "视频文件");
            dataGridView1.Columns.Add("500", "500错误");
            dataGridView1.Columns.Add("Remark", "备注");
            foreach (DataGridViewColumn item in dataGridView1.Columns)
            {
                if ("OptTime,Web,Remark".Contains(item.Name))
                {
                    continue;
                }
                item.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            }
        }
예제 #3
0
 private void btnInFromIIS_Click(object sender, EventArgs e)
 {
     foreach (DataRowView item in Comm.GetAllWebInfo().DefaultView)
     {
         dataGridView1.Rows.Add(item["Web"].ToString());
     }
     MessageBox.Show("OK");
 }
예제 #4
0
        private void btnHe_Click(object sender, EventArgs e)
        {
            if (chkListBox_S.CheckedItems.Count == 0 || chkListBox_D.CheckedItems.Count == 0)
            {
                return;
            }
            StringBuilder sb = new StringBuilder();

            foreach (var item in chkListBox_S.CheckedItems)
            {
                sb.AppendFormat(",'{0}'", item);
            }

            DataView dv = Comm.GetAllWebInfo().DefaultView;

            dv.RowFilter = string.Format(" AppPoolId in({0})", sb.ToString().Substring(1));

            IISConfig.Metabase metabase = new IISConfig.Metabase();
            metabase.OpenLocalMachine();

            IISConfig.Record record = new IISConfig.Record();
            record.DataType   = IISConfig.Record.DataTypes.String;
            record.UserType   = IISConfig.Record.UserTypes.Server;
            record.Identifier = 9101;
            record.ChangeAttribute(IISConfig.Record.AttributeList.Inherit, true);

            Double p = dv.Count / chkListBox_D.CheckedItems.Count;

            for (int i = 0; i < dv.Count; i++)
            {
                int NumberPer = int.Parse(Math.Floor(i / p).ToString());

                if (NumberPer == chkListBox_D.CheckedItems.Count)
                {
                    NumberPer = chkListBox_D.CheckedItems.Count - 1;
                }
                record.Data = chkListBox_D.CheckedItems[NumberPer];
                metabase.GetKeyFromPath("/LM/W3SVC/" + dv[i]["Id"] + "/root").SetRecord(record);
            }
            metabase.Close();
            MessageBox.Show("OK");
        }
예제 #5
0
        private void 分析应用程序池对应的网站ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dgvProcess.Rows.Count == 0)
            {
                return;
            }
            string   Intro = dgvProcess["Intro", dgvProcess.CurrentCell.RowIndex].Value.ToString();
            DataView dv    = Comm.GetAllWebInfo().DefaultView;

            dv.RowFilter = " AppPoolId = '" + Intro + "'";
            if (dv.Count > 1)
            {
                MessageBox.Show("此应用程序池有多个站点,\n\n请先折分应用程序池,\n\n保证要分析的网站只在一个应用程序池里");
            }
            frmLogTimelyView frm = new frmLogTimelyView();

            frm.Id  = dv[0]["Id"].ToString();
            frm.Web = dv[0]["Web"].ToString();
            frm.ShowDialog();
        }
예제 #6
0
        private void frmLogTimelyView_Load(object sender, EventArgs e)
        {
            cbxWeb.DisplayMember = "Web";
            cbxWeb.ValueMember   = "Id";
            cbxWeb.DataSource    = Comm.GetAllWebInfo();

            if (!string.IsNullOrEmpty(Web))
            {
                cbxWeb.Text = Web;
            }

            //dataGridView1.Columns.Add("OptTime", "时间");
            //dataGridView1.Columns.Add("Web", "站点");
            //dataGridView1.Columns.Add("time-taken", "执行时间");
            //dataGridView1.Columns.Add("Remark", "备注");

            dtNow.Columns.Add("时间", typeof(DateTime));
            dtNow.Columns.Add("网址");
            dtNow.Columns.Add("耗时(ms)", typeof(Int32));
            dtNow.Columns.Add("备注");
        }
예제 #7
0
        private void btnBackUp_Click(object sender, EventArgs e)
        {
            if (!File.Exists(Comm.MetaBasePath()))
            {
                MessageBox.Show("配置文件不存在,没法备份,请确认您已经安装IIS");
                return;
            }

            string BackUpPath = txtBackUp.Text;

            if (!Path.IsPathRooted(BackUpPath))
            {
                BackUpPath = Path.Combine(Application.StartupPath, BackUpPath);
            }

            if (Directory.Exists(BackUpPath))
            {
                Directory.Delete(BackUpPath, true);
            }
            Directory.CreateDirectory(BackUpPath);

            try
            {
                File.Copy(Comm.MetaBasePath(), Path.Combine(BackUpPath, "MetaBase.xml"), true);

                if (chkHistory.Checked)
                {
                    DirectoryCopy(Environment.SystemDirectory + @"\inetsrv\History", Path.Combine(BackUpPath, "History"), "Metabase*.xml");
                }

                if (chkMetaBack.Checked)
                {
                    DirectoryCopy(Environment.SystemDirectory + @"\inetsrv\MetaBack", Path.Combine(BackUpPath, "MetaBack"), null);
                }

                if (chkACL.Checked)
                {
                    Dictionary <string, string> dict = new Dictionary <string, string>();
                    DataTable dt = Comm.GetAllWebInfo();
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        string _path = dt.Rows[i]["Path"].ToString();
                        if (!dict.ContainsKey(_path))
                        {
                            dict.Add(_path, "," + string.Join(",", NTFS.ACL.List(_path).ToArray()) + ",");
                        }
                    }

                    DataSet ds = new DataSet();

                    DataTable dtNew = new DataTable("CrazyIIS.ACL");
                    dtNew.Columns.Add("Path");
                    dtNew.Columns.Add("ACL");

                    foreach (var item in dict)
                    {
                        dtNew.Rows.Add(item.Key, item.Value);
                    }
                    ds.Tables.Add(dtNew);
                    ds.WriteXml(BackUpPath + "\\ACL.xml");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }



            MessageBox.Show("备份成功");
        }
예제 #8
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            Stopwatch sp = new Stopwatch();

            sp.Start();

            //路径,用户名,密码
            WinNT.NetUser User   = new WinNT.NetUser();
            DataTable     dtUser = Comm.GetAllWebInfo();

            dtUser.Columns["AppPoolId"].ColumnName      = "U";
            dtUser.Columns["ServerBindings"].ColumnName = "P";
            Dictionary <string, string> AllUsers = new Dictionary <string, string>();

            for (int i = 0; i < dtUser.Rows.Count; i++)
            {
                string AnonymousUserName = txtUserNamePre.Text.Trim() + Regex.Replace(dtUser.Rows[i]["Web"].ToString(), @"\.|-", "_");
                string AnonymousUserPass = "";
                if (AnonymousUserName.Length > 20)
                {
                    AnonymousUserName = AnonymousUserName.Substring(0, 20);
                }
                if (AllUsers.ContainsKey(AnonymousUserName))
                {
                    AnonymousUserPass = AllUsers[AnonymousUserName];
                }
                else
                {
                    AnonymousUserPass = Comm.Random(Convert.ToInt32(txtPasswordNumber.Value));
                    AllUsers.Add(AnonymousUserName, AnonymousUserPass);
                }
                dtUser.Rows[i]["U"] = AnonymousUserName;
                dtUser.Rows[i]["P"] = AnonymousUserPass;
            }

            #region  除所有要删除的用户
            {
                backgroundWorker1.ReportProgress(25, "将要删除用户" + sp.ElapsedMilliseconds.ToString());
                List <String> _NowUsers = WinNT.User.List();
                foreach (string item in AllUsers.Keys)
                {
                    if (_NowUsers.Contains(item))
                    {
                        backgroundWorker1.ReportProgress(25, "正在删除用户:" + item);
                        User.UserDelete(item);
                    }
                }
                _NowUsers = null;
                backgroundWorker1.ReportProgress(28, "删除用户完成" + sp.ElapsedMilliseconds.ToString());
            }
            #endregion

            #region 创建所有要创建的用户
            {
                backgroundWorker1.ReportProgress(25, "将要创建用户" + sp.ElapsedMilliseconds.ToString());
                foreach (KeyValuePair <string, string> item in AllUsers)
                {
                    backgroundWorker1.ReportProgress(50, "正在创建匿名用户:" + item.Key);
                    User.UserAdd(item.Key, item.Value, null);
                }

                backgroundWorker1.ReportProgress(50, "创建匿名用户OK" + sp.ElapsedMilliseconds.ToString());
            }
            #endregion

            #region 匿名用户给网站
            {
                backgroundWorker1.ReportProgress(50, "将要 给网站添加匿名用户" + sp.ElapsedMilliseconds.ToString());

                IISConfig.Metabase metabase = new IISConfig.Metabase();
                metabase.OpenLocalMachine();

                IISConfig.IKey key = metabase.GetKeyFromPath("/LM/W3SVC");

                IISConfig.Record recordU = key.GetRecord(6020);
                IISConfig.Record recordP = key.GetRecord(6021);


                for (int i = 0; i < dtUser.Rows.Count; i++)
                {
                    key = metabase.GetKeyFromPath("/LM/W3SVC/" + dtUser.Rows[i]["Id"].ToString() + "/root");
                    //用户名存在时,设置密码
                    recordU.Data = dtUser.Rows[i]["U"].ToString();
                    recordP.Data = dtUser.Rows[i]["P"].ToString();
                    key.SetRecord(recordU);
                    key.SetRecord(recordP);
                }

                backgroundWorker1.ReportProgress(50, "给网站添加匿名用户完成" + sp.ElapsedMilliseconds.ToString());
            }
            #endregion

            #region 取网站路径及对应的用户名,如果路径存在,则加权限
            {
                backgroundWorker1.ReportProgress(50, "将要给目录加权限" + sp.ElapsedMilliseconds.ToString());

                for (int i = 0; i < dtUser.Rows.Count; i++)
                {
                    string NowPath = dtUser.Rows[i]["Path"].ToString();
                    if (Directory.Exists(NowPath))
                    {
                        backgroundWorker1.ReportProgress(50, "正在给目录 “" + NowPath + "” 加权限" + sp.ElapsedMilliseconds.ToString());
                        NTFS.ACL.Add(NowPath, dtUser.Rows[i]["U"].ToString(), NTFS.ACL.Roles.FullControl);
                        NTFS.ACL.DelErr(NowPath);
                    }
                }
                backgroundWorker1.ReportProgress(50, "给目录加权限完成" + sp.ElapsedMilliseconds.ToString());
            }
            #endregion

            sp.Stop();
            backgroundWorker1.ReportProgress(100, "操作完成 共用时:" + sp.ElapsedMilliseconds / 1000 + "s");
        }