├── .gitattributes ├── .gitignore ├── Makefile ├── NgxStatMgr ├── py │ ├── Main.py │ ├── __init__.py │ ├── filter.py │ ├── ngx_stat_dao.py │ ├── ngx_stat_query.py │ ├── settings.py │ └── stat_db_clean.py ├── static │ ├── NginxStatMgr.png │ ├── __init__.py │ ├── contextMenu │ │ ├── css │ │ │ └── ContextMenu.css │ │ ├── images │ │ │ ├── cut.png │ │ │ ├── door.png │ │ │ ├── page_white_copy.png │ │ │ ├── page_white_delete.png │ │ │ ├── page_white_edit.png │ │ │ └── page_white_paste.png │ │ └── jquery.contextMenu.js │ ├── css │ │ └── main.css │ ├── dwz │ │ ├── chart │ │ │ ├── g.bar.js │ │ │ ├── g.dot.js │ │ │ ├── g.line.js │ │ │ ├── g.pie.js │ │ │ ├── g.raphael.js │ │ │ ├── raphael-min.js │ │ │ ├── raphael.js │ │ │ └── test │ │ │ │ ├── barchart.html │ │ │ │ ├── hbarchart.html │ │ │ │ ├── linechart.html │ │ │ │ └── piechart.html │ │ ├── demo │ │ │ ├── combox │ │ │ │ ├── area_all.html │ │ │ │ ├── area_bj.html │ │ │ │ ├── area_sh.html │ │ │ │ ├── city_all.html │ │ │ │ ├── city_bj.html │ │ │ │ └── city_sh.html │ │ │ ├── common │ │ │ │ ├── ajaxDone.html │ │ │ │ ├── ajaxDone.json │ │ │ │ ├── ajaxTimeout.html │ │ │ │ └── dwz-team.xls │ │ │ ├── database │ │ │ │ ├── db_attachmentBrightBack.html │ │ │ │ ├── db_attachmentLookup.html │ │ │ │ ├── db_lookupSuggest.html │ │ │ │ ├── db_select.html │ │ │ │ ├── db_widget.html │ │ │ │ ├── dwzOrgLookup.html │ │ │ │ ├── dwzOrgLookup2.html │ │ │ │ ├── treeBringBack.html │ │ │ │ └── treeLookup.html │ │ │ ├── pagination │ │ │ │ ├── ajaxDone1.html │ │ │ │ ├── ajaxDone2.html │ │ │ │ ├── ajaxDone3.html │ │ │ │ ├── dialog1.html │ │ │ │ ├── dialog2.html │ │ │ │ ├── layout1.html │ │ │ │ ├── layout2.html │ │ │ │ ├── list1.html │ │ │ │ ├── list2.html │ │ │ │ └── list3.html │ │ │ └── sortDrag │ │ │ │ ├── 1.html │ │ │ │ └── 2.html │ │ ├── doc │ │ │ └── dwz-user-guide.chm │ │ ├── dwz.frag.xml │ │ ├── js │ │ │ ├── additional-methods.js │ │ │ ├── dwz.accordion.js │ │ │ ├── dwz.ajax.js │ │ │ ├── dwz.alertMsg.js │ │ │ ├── dwz.barDrag.js │ │ │ ├── dwz.checkbox.js │ │ │ ├── dwz.combox.js │ │ │ ├── dwz.contextmenu.js │ │ │ ├── dwz.core.js │ │ │ ├── dwz.cssTable.js │ │ │ ├── dwz.database.js │ │ │ ├── dwz.datepicker.js │ │ │ ├── dwz.dialog.js │ │ │ ├── dwz.dialogDrag.js │ │ │ ├── dwz.drag.js │ │ │ ├── dwz.effects.js │ │ │ ├── dwz.history.js │ │ │ ├── dwz.navTab.js │ │ │ ├── dwz.pagination.js │ │ │ ├── dwz.panel.js │ │ │ ├── dwz.print.js │ │ │ ├── dwz.regional.zh.js │ │ │ ├── dwz.resize.js │ │ │ ├── dwz.scrollCenter.js │ │ │ ├── dwz.sortDrag.js │ │ │ ├── dwz.stable.js │ │ │ ├── dwz.switchEnv.js │ │ │ ├── dwz.tab.js │ │ │ ├── dwz.taskBar.js │ │ │ ├── dwz.theme.js │ │ │ ├── dwz.tree.js │ │ │ ├── dwz.ui.js │ │ │ ├── dwz.util.date.js │ │ │ ├── dwz.util.number.js │ │ │ ├── dwz.validate.method.js │ │ │ ├── jquery-1.7.2.js │ │ │ ├── jquery-1.7.2.min.js │ │ │ ├── jquery.bgiframe.js │ │ │ ├── jquery.cookie.js │ │ │ ├── jquery.easing.1.3.js │ │ │ ├── jquery.validate.js │ │ │ ├── jquery.validate.min.js │ │ │ └── speedup.js │ │ ├── themes │ │ │ ├── azure │ │ │ │ ├── images │ │ │ │ │ ├── accordion │ │ │ │ │ │ └── accordion.png │ │ │ │ │ ├── account_info_bg.png │ │ │ │ │ ├── alert │ │ │ │ │ │ ├── alertpanel.png │ │ │ │ │ │ └── alertpanel_icon.png │ │ │ │ │ ├── button │ │ │ │ │ │ ├── button_s.png │ │ │ │ │ │ ├── imgX.gif │ │ │ │ │ │ ├── imgX.png │ │ │ │ │ │ └── tack-effects.png │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── dialogpanel.png │ │ │ │ │ │ └── dialogpanel_icon.png │ │ │ │ │ ├── form │ │ │ │ │ │ ├── input_bg.png │ │ │ │ │ │ └── input_bt.png │ │ │ │ │ ├── grid │ │ │ │ │ │ ├── grid.png │ │ │ │ │ │ ├── resizeCol.png │ │ │ │ │ │ └── tableth.png │ │ │ │ │ ├── header_bg.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── layout │ │ │ │ │ │ ├── taskbar.png │ │ │ │ │ │ ├── taskbar_control.png │ │ │ │ │ │ ├── taskbar_icon.png │ │ │ │ │ │ └── toggleSidebar.png │ │ │ │ │ ├── listLine.png │ │ │ │ │ ├── menu │ │ │ │ │ │ └── menu.png │ │ │ │ │ ├── order_down.gif │ │ │ │ │ ├── order_up.gif │ │ │ │ │ ├── pageHeader_bg.png │ │ │ │ │ ├── panel │ │ │ │ │ │ ├── panel.png │ │ │ │ │ │ └── panel_icon.png │ │ │ │ │ ├── preview.png │ │ │ │ │ ├── progressBar │ │ │ │ │ │ ├── progressBar_l.gif │ │ │ │ │ │ ├── progressBar_m.gif │ │ │ │ │ │ └── progressBar_s.gif │ │ │ │ │ ├── search-bg.gif │ │ │ │ │ ├── search-bt.gif │ │ │ │ │ ├── shadow │ │ │ │ │ │ ├── shadow_c_c.png │ │ │ │ │ │ ├── shadow_c_l.png │ │ │ │ │ │ ├── shadow_c_r.png │ │ │ │ │ │ ├── shadow_f_c.png │ │ │ │ │ │ ├── shadow_f_l.png │ │ │ │ │ │ ├── shadow_f_r.png │ │ │ │ │ │ ├── shadow_h_c.png │ │ │ │ │ │ ├── shadow_h_l.png │ │ │ │ │ │ └── shadow_h_r.png │ │ │ │ │ ├── tabs │ │ │ │ │ │ ├── tabscontrol.png │ │ │ │ │ │ ├── tabspage.png │ │ │ │ │ │ ├── tabspage_icon.png │ │ │ │ │ │ └── tabspanel.png │ │ │ │ │ └── tree │ │ │ │ │ │ ├── check.png │ │ │ │ │ │ ├── folder.png │ │ │ │ │ │ └── tree.png │ │ │ │ └── style.css │ │ │ ├── css │ │ │ │ ├── core.css │ │ │ │ ├── ieHack.css │ │ │ │ ├── login.css │ │ │ │ └── print.css │ │ │ ├── default │ │ │ │ ├── images │ │ │ │ │ ├── accordion │ │ │ │ │ │ └── accordion.png │ │ │ │ │ ├── account_info_bg.png │ │ │ │ │ ├── alert │ │ │ │ │ │ ├── alertpanel.png │ │ │ │ │ │ └── alertpanel_icon.png │ │ │ │ │ ├── button │ │ │ │ │ │ ├── button_s.png │ │ │ │ │ │ └── imgX.gif │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── dialogpanel.png │ │ │ │ │ │ └── dialogpanel_icon.png │ │ │ │ │ ├── form │ │ │ │ │ │ ├── input_bg.png │ │ │ │ │ │ └── input_bt.png │ │ │ │ │ ├── grid │ │ │ │ │ │ ├── grid.png │ │ │ │ │ │ ├── resizeCol.png │ │ │ │ │ │ └── tableth.png │ │ │ │ │ ├── header_bg.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── layout │ │ │ │ │ │ ├── taskbar.png │ │ │ │ │ │ ├── taskbar_control.png │ │ │ │ │ │ ├── taskbar_icon.png │ │ │ │ │ │ └── toggleSidebar.png │ │ │ │ │ ├── listLine.png │ │ │ │ │ ├── login_banner.jpg │ │ │ │ │ ├── login_bg.png │ │ │ │ │ ├── login_content_bg.png │ │ │ │ │ ├── login_header_bg.png │ │ │ │ │ ├── login_list.png │ │ │ │ │ ├── login_logo.gif │ │ │ │ │ ├── login_sub.png │ │ │ │ │ ├── login_title.png │ │ │ │ │ ├── logo.png │ │ │ │ │ ├── menu │ │ │ │ │ │ └── menu.png │ │ │ │ │ ├── order_down.gif │ │ │ │ │ ├── order_up.gif │ │ │ │ │ ├── pageHeader_bg.png │ │ │ │ │ ├── panel │ │ │ │ │ │ ├── panel.png │ │ │ │ │ │ └── panel_icon.png │ │ │ │ │ ├── progressBar │ │ │ │ │ │ ├── progressBar_l.gif │ │ │ │ │ │ ├── progressBar_m.gif │ │ │ │ │ │ └── progressBar_s.gif │ │ │ │ │ ├── search-bg.gif │ │ │ │ │ ├── search-bt.gif │ │ │ │ │ ├── shadow │ │ │ │ │ │ ├── shadow_c_c.png │ │ │ │ │ │ ├── shadow_c_l.png │ │ │ │ │ │ ├── shadow_c_r.png │ │ │ │ │ │ ├── shadow_f_c.png │ │ │ │ │ │ ├── shadow_f_l.png │ │ │ │ │ │ ├── shadow_f_r.png │ │ │ │ │ │ ├── shadow_h_c.png │ │ │ │ │ │ ├── shadow_h_l.png │ │ │ │ │ │ └── shadow_h_r.png │ │ │ │ │ ├── tabs │ │ │ │ │ │ ├── tabscontrol.png │ │ │ │ │ │ ├── tabspage.png │ │ │ │ │ │ ├── tabspage_icon.png │ │ │ │ │ │ └── tabspanel.png │ │ │ │ │ ├── themeButton.png │ │ │ │ │ └── tree │ │ │ │ │ │ ├── check.png │ │ │ │ │ │ ├── folder.png │ │ │ │ │ │ └── tree.png │ │ │ │ └── style.css │ │ │ ├── green │ │ │ │ ├── images │ │ │ │ │ ├── accordion │ │ │ │ │ │ └── accordion.png │ │ │ │ │ ├── account_info_bg.png │ │ │ │ │ ├── alert │ │ │ │ │ │ ├── alertpanel.png │ │ │ │ │ │ └── alertpanel_icon.png │ │ │ │ │ ├── button │ │ │ │ │ │ └── button_s.png │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── dialogpanel.png │ │ │ │ │ │ └── dialogpanel_icon.png │ │ │ │ │ ├── form │ │ │ │ │ │ ├── input_bg.png │ │ │ │ │ │ └── input_bt.png │ │ │ │ │ ├── grid │ │ │ │ │ │ ├── grid.png │ │ │ │ │ │ ├── resizeCol.png │ │ │ │ │ │ └── tableth.png │ │ │ │ │ ├── header_bg.png │ │ │ │ │ ├── layout │ │ │ │ │ │ └── toggleSidebar.png │ │ │ │ │ ├── listLine.png │ │ │ │ │ ├── pageHeader_bg.png │ │ │ │ │ ├── panel │ │ │ │ │ │ ├── panel.png │ │ │ │ │ │ └── panel_icon.png │ │ │ │ │ ├── tabs │ │ │ │ │ │ ├── tabscontrol.png │ │ │ │ │ │ ├── tabspage.png │ │ │ │ │ │ ├── tabspage_icon.png │ │ │ │ │ │ └── tabspanel.png │ │ │ │ │ └── tree │ │ │ │ │ │ └── tree.png │ │ │ │ └── style.css │ │ │ ├── purple │ │ │ │ ├── images │ │ │ │ │ ├── accordion │ │ │ │ │ │ └── accordion.png │ │ │ │ │ ├── account_info_bg.png │ │ │ │ │ ├── alert │ │ │ │ │ │ ├── alertpanel.png │ │ │ │ │ │ └── alertpanel_icon.png │ │ │ │ │ ├── button │ │ │ │ │ │ └── button_s.png │ │ │ │ │ ├── dialog │ │ │ │ │ │ ├── dialogpanel.png │ │ │ │ │ │ └── dialogpanel_icon.png │ │ │ │ │ ├── form │ │ │ │ │ │ ├── input_bg.png │ │ │ │ │ │ └── input_bt.png │ │ │ │ │ ├── grid │ │ │ │ │ │ ├── grid.png │ │ │ │ │ │ ├── resizeCol.png │ │ │ │ │ │ └── tableth.png │ │ │ │ │ ├── header_bg.png │ │ │ │ │ ├── layout │ │ │ │ │ │ ├── taskbar.png │ │ │ │ │ │ ├── taskbar_control.png │ │ │ │ │ │ ├── taskbar_icon.png │ │ │ │ │ │ └── toggleSidebar.png │ │ │ │ │ ├── login_bg.png │ │ │ │ │ ├── login_content_bg.png │ │ │ │ │ ├── login_header_bg.png │ │ │ │ │ ├── login_list.png │ │ │ │ │ ├── menu │ │ │ │ │ │ └── menu.png │ │ │ │ │ ├── pageHeader_bg.png │ │ │ │ │ ├── panel │ │ │ │ │ │ ├── panel.png │ │ │ │ │ │ └── panel_icon.png │ │ │ │ │ ├── progressBar │ │ │ │ │ │ ├── progressBar_l.gif │ │ │ │ │ │ ├── progressBar_m.gif │ │ │ │ │ │ └── progressBar_s.gif │ │ │ │ │ ├── shadow │ │ │ │ │ │ ├── shadow_c_c.png │ │ │ │ │ │ ├── shadow_c_l.png │ │ │ │ │ │ ├── shadow_c_r.png │ │ │ │ │ │ ├── shadow_f_c.png │ │ │ │ │ │ ├── shadow_f_l.png │ │ │ │ │ │ ├── shadow_f_r.png │ │ │ │ │ │ ├── shadow_h_c.png │ │ │ │ │ │ ├── shadow_h_l.png │ │ │ │ │ │ └── shadow_h_r.png │ │ │ │ │ ├── tabs │ │ │ │ │ │ ├── tabscontrol.png │ │ │ │ │ │ ├── tabspage.png │ │ │ │ │ │ ├── tabspage_icon.png │ │ │ │ │ │ └── tabspanel.png │ │ │ │ │ └── tree │ │ │ │ │ │ ├── check.png │ │ │ │ │ │ ├── folder.png │ │ │ │ │ │ └── tree.png │ │ │ │ └── style.css │ │ │ └── silver │ │ │ │ ├── images │ │ │ │ ├── accordion │ │ │ │ │ └── accordion.png │ │ │ │ ├── account_info_bg.png │ │ │ │ ├── alert │ │ │ │ │ ├── alertpanel.png │ │ │ │ │ └── alertpanel_icon.png │ │ │ │ ├── button │ │ │ │ │ └── button_s.png │ │ │ │ ├── dialog │ │ │ │ │ ├── dialogpanel.png │ │ │ │ │ └── dialogpanel_icon.png │ │ │ │ ├── form │ │ │ │ │ ├── input_bg.png │ │ │ │ │ └── input_bt.png │ │ │ │ ├── grid │ │ │ │ │ ├── grid.png │ │ │ │ │ ├── resizeCol.png │ │ │ │ │ └── tableth.png │ │ │ │ ├── header_bg.png │ │ │ │ ├── layout │ │ │ │ │ ├── taskbar.png │ │ │ │ │ ├── taskbar_control.png │ │ │ │ │ ├── taskbar_icon.png │ │ │ │ │ └── toggleSidebar.png │ │ │ │ ├── listLine.png │ │ │ │ ├── menu │ │ │ │ │ └── menu.png │ │ │ │ ├── pageHeader_bg.png │ │ │ │ ├── panel │ │ │ │ │ ├── panel.png │ │ │ │ │ └── panel_icon.png │ │ │ │ ├── progressBar │ │ │ │ │ ├── progressBar_l.gif │ │ │ │ │ ├── progressBar_m.gif │ │ │ │ │ └── progressBar_s.gif │ │ │ │ ├── shadow │ │ │ │ │ ├── shadow_c_c.png │ │ │ │ │ ├── shadow_c_l.png │ │ │ │ │ ├── shadow_c_r.png │ │ │ │ │ ├── shadow_f_c.png │ │ │ │ │ ├── shadow_f_l.png │ │ │ │ │ ├── shadow_f_r.png │ │ │ │ │ ├── shadow_h_c.png │ │ │ │ │ ├── shadow_h_l.png │ │ │ │ │ └── shadow_h_r.png │ │ │ │ ├── tabs │ │ │ │ │ ├── tabscontrol.png │ │ │ │ │ ├── tabspage.png │ │ │ │ │ ├── tabspage_icon.png │ │ │ │ │ └── tabspanel.png │ │ │ │ └── tree │ │ │ │ │ ├── check.png │ │ │ │ │ ├── folder.png │ │ │ │ │ └── tree.png │ │ │ │ └── style.css │ │ ├── uploadify │ │ │ ├── cancel.png │ │ │ ├── css │ │ │ │ └── uploadify.css │ │ │ └── scripts │ │ │ │ ├── expressInstall.swf │ │ │ │ ├── jquery.uploadify.v2.1.0.js │ │ │ │ ├── swfobject.js │ │ │ │ └── uploadify.swf │ │ └── xheditor │ │ │ ├── xheditor-1.1.14-en.min.js │ │ │ ├── xheditor-1.1.14-zh-cn.min.js │ │ │ ├── xheditor-1.1.14-zh-tw.min.js │ │ │ ├── xheditor_emot │ │ │ ├── default │ │ │ │ ├── angry.gif │ │ │ │ ├── awkward.gif │ │ │ │ ├── bye.gif │ │ │ │ ├── config.txt │ │ │ │ ├── crazy.gif │ │ │ │ ├── cry.gif │ │ │ │ ├── curse.gif │ │ │ │ ├── cute.gif │ │ │ │ ├── despise.gif │ │ │ │ ├── doubt.gif │ │ │ │ ├── envy.gif │ │ │ │ ├── fastcry.gif │ │ │ │ ├── knock.gif │ │ │ │ ├── laugh.gif │ │ │ │ ├── mad.gif │ │ │ │ ├── ohmy.gif │ │ │ │ ├── panic.gif │ │ │ │ ├── proud.gif │ │ │ │ ├── quiet.gif │ │ │ │ ├── sad.gif │ │ │ │ ├── shutup.gif │ │ │ │ ├── shy.gif │ │ │ │ ├── sleep.gif │ │ │ │ ├── smile.gif │ │ │ │ ├── struggle.gif │ │ │ │ ├── titter.gif │ │ │ │ ├── tongue.gif │ │ │ │ ├── wail.gif │ │ │ │ └── wronged.gif │ │ │ ├── ipb │ │ │ │ ├── alien.gif │ │ │ │ ├── angel.gif │ │ │ │ ├── angry.gif │ │ │ │ ├── bandit.gif │ │ │ │ ├── biglaugh.gif │ │ │ │ ├── blink.gif │ │ │ │ ├── blush.gif │ │ │ │ ├── config.txt │ │ │ │ ├── cool.gif │ │ │ │ ├── cry.gif │ │ │ │ ├── depres.gif │ │ │ │ ├── devil.gif │ │ │ │ ├── glare.gif │ │ │ │ ├── heart.gif │ │ │ │ ├── joyful.gif │ │ │ │ ├── kiss.gif │ │ │ │ ├── laugh.gif │ │ │ │ ├── magician.gif │ │ │ │ ├── ninja.gif │ │ │ │ ├── pinch.gif │ │ │ │ ├── police.gif │ │ │ │ ├── sad.gif │ │ │ │ ├── sick.gif │ │ │ │ ├── sideways.gif │ │ │ │ ├── sleep.gif │ │ │ │ ├── smile.gif │ │ │ │ ├── surprised.gif │ │ │ │ ├── tongue.gif │ │ │ │ ├── unsure.gif │ │ │ │ ├── w00t.gif │ │ │ │ ├── whistling.gif │ │ │ │ ├── wondering.gif │ │ │ │ └── wub.gif │ │ │ ├── msn │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 8.gif │ │ │ │ └── 9.gif │ │ │ └── pidgin │ │ │ │ ├── angry.gif │ │ │ │ ├── bad.gif │ │ │ │ ├── blush.gif │ │ │ │ ├── brokenheart.gif │ │ │ │ ├── bye.gif │ │ │ │ ├── coffee.gif │ │ │ │ ├── config.txt │ │ │ │ ├── cool.gif │ │ │ │ ├── cry.gif │ │ │ │ ├── curse.gif │ │ │ │ ├── cute.gif │ │ │ │ ├── devil.gif │ │ │ │ ├── envy.gif │ │ │ │ ├── gift.gif │ │ │ │ ├── good.gif │ │ │ │ ├── kiss.gif │ │ │ │ ├── laugh.gif │ │ │ │ ├── love.gif │ │ │ │ ├── music.gif │ │ │ │ ├── question.gif │ │ │ │ ├── rose.gif │ │ │ │ ├── sad.gif │ │ │ │ ├── shocked.gif │ │ │ │ ├── shout.gif │ │ │ │ ├── sick.gif │ │ │ │ ├── sleepy.gif │ │ │ │ ├── smile.gif │ │ │ │ ├── soccer.gif │ │ │ │ ├── sweat.gif │ │ │ │ ├── tired.gif │ │ │ │ ├── tongue.gif │ │ │ │ ├── victory.gif │ │ │ │ └── wink.gif │ │ │ ├── xheditor_plugins │ │ │ ├── multiupload │ │ │ │ ├── img │ │ │ │ │ ├── add.gif │ │ │ │ │ ├── bg1.gif │ │ │ │ │ ├── bg2.gif │ │ │ │ │ ├── btnbg.gif │ │ │ │ │ ├── btnbgr.gif │ │ │ │ │ ├── clear.gif │ │ │ │ │ ├── progressbg.gif │ │ │ │ │ └── start.gif │ │ │ │ ├── multiupload.css │ │ │ │ ├── multiupload.html │ │ │ │ ├── multiupload.js │ │ │ │ └── swfupload │ │ │ │ │ ├── swfupload.js │ │ │ │ │ └── swfupload.swf │ │ │ └── ubb.min.js │ │ │ └── xheditor_skin │ │ │ ├── blank.gif │ │ │ ├── default │ │ │ ├── iframe.css │ │ │ ├── img │ │ │ │ ├── anchor.gif │ │ │ │ ├── close.gif │ │ │ │ ├── flash.gif │ │ │ │ ├── icons.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── progress.gif │ │ │ │ ├── progressbg.gif │ │ │ │ ├── tag-address.gif │ │ │ │ ├── tag-div.gif │ │ │ │ ├── tag-h1.gif │ │ │ │ ├── tag-h2.gif │ │ │ │ ├── tag-h3.gif │ │ │ │ ├── tag-h4.gif │ │ │ │ ├── tag-h5.gif │ │ │ │ ├── tag-h6.gif │ │ │ │ ├── tag-p.gif │ │ │ │ ├── tag-pre.gif │ │ │ │ ├── waiting.gif │ │ │ │ ├── wmp.gif │ │ │ │ └── wordimg.gif │ │ │ └── ui.css │ │ │ ├── nostyle │ │ │ ├── iframe.css │ │ │ ├── img │ │ │ │ ├── anchor.gif │ │ │ │ ├── close.gif │ │ │ │ ├── flash.gif │ │ │ │ ├── icons.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── progress.gif │ │ │ │ ├── progressbg.gif │ │ │ │ ├── tag-address.gif │ │ │ │ ├── tag-div.gif │ │ │ │ ├── tag-h1.gif │ │ │ │ ├── tag-h2.gif │ │ │ │ ├── tag-h3.gif │ │ │ │ ├── tag-h4.gif │ │ │ │ ├── tag-h5.gif │ │ │ │ ├── tag-h6.gif │ │ │ │ ├── tag-p.gif │ │ │ │ ├── tag-pre.gif │ │ │ │ ├── waiting.gif │ │ │ │ ├── wmp.gif │ │ │ │ └── wordimg.gif │ │ │ └── ui.css │ │ │ ├── o2007blue │ │ │ ├── iframe.css │ │ │ ├── img │ │ │ │ ├── anchor.gif │ │ │ │ ├── buttonbg.gif │ │ │ │ ├── close.gif │ │ │ │ ├── flash.gif │ │ │ │ ├── icons.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── progress.gif │ │ │ │ ├── progressbg.gif │ │ │ │ ├── tag-address.gif │ │ │ │ ├── tag-div.gif │ │ │ │ ├── tag-h1.gif │ │ │ │ ├── tag-h2.gif │ │ │ │ ├── tag-h3.gif │ │ │ │ ├── tag-h4.gif │ │ │ │ ├── tag-h5.gif │ │ │ │ ├── tag-h6.gif │ │ │ │ ├── tag-p.gif │ │ │ │ ├── tag-pre.gif │ │ │ │ ├── waiting.gif │ │ │ │ ├── wmp.gif │ │ │ │ └── wordimg.gif │ │ │ └── ui.css │ │ │ ├── o2007silver │ │ │ ├── iframe.css │ │ │ ├── img │ │ │ │ ├── anchor.gif │ │ │ │ ├── buttonbg.gif │ │ │ │ ├── close.gif │ │ │ │ ├── flash.gif │ │ │ │ ├── icons.gif │ │ │ │ ├── loading.gif │ │ │ │ ├── progress.gif │ │ │ │ ├── progressbg.gif │ │ │ │ ├── tag-address.gif │ │ │ │ ├── tag-div.gif │ │ │ │ ├── tag-h1.gif │ │ │ │ ├── tag-h2.gif │ │ │ │ ├── tag-h3.gif │ │ │ │ ├── tag-h4.gif │ │ │ │ ├── tag-h5.gif │ │ │ │ ├── tag-h6.gif │ │ │ │ ├── tag-p.gif │ │ │ │ ├── tag-pre.gif │ │ │ │ ├── waiting.gif │ │ │ │ ├── wmp.gif │ │ │ │ └── wordimg.gif │ │ │ └── ui.css │ │ │ └── vista │ │ │ ├── iframe.css │ │ │ ├── img │ │ │ ├── anchor.gif │ │ │ ├── buttonbg.gif │ │ │ ├── close.gif │ │ │ ├── flash.gif │ │ │ ├── icons.gif │ │ │ ├── loading.gif │ │ │ ├── progress.gif │ │ │ ├── progressbg.gif │ │ │ ├── tag-address.gif │ │ │ ├── tag-div.gif │ │ │ ├── tag-h1.gif │ │ │ ├── tag-h2.gif │ │ │ ├── tag-h3.gif │ │ │ ├── tag-h4.gif │ │ │ ├── tag-h5.gif │ │ │ ├── tag-h6.gif │ │ │ ├── tag-p.gif │ │ │ ├── tag-pre.gif │ │ │ ├── titlebg.gif │ │ │ ├── waiting.gif │ │ │ ├── wmp.gif │ │ │ └── wordimg.gif │ │ │ └── ui.css │ ├── highcharts │ │ ├── highcharts.js │ │ └── modules │ │ │ └── exporting.js │ └── js │ │ └── nrights.js └── templates │ ├── dwz_base.html │ └── query.html ├── README.md ├── conf └── nginx.conf ├── config ├── json_bson.h ├── libs ├── json-c.tar.gz └── mongo-c-driver-0.98.0.tar.gz ├── mongo_op_cache.cpp ├── mongo_op_cache.h ├── ngx_http_req_stat_module.c ├── ngx_http_req_stat_module.h └── ngx_http_req_stat_var.c /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 3 | 4 | LDFLAGS= `pkg-config --libs libmongoc-1.0` 5 | CFLAGS=`pkg-config --cflags libmongoc-1.0` -DMONGO_HAVE_STDINT 6 | 7 | all: json_merge 8 | 9 | mongo_test: mongo_test.c mongo_c_pool.h ../BaseLib/ConnPool.h ../BaseLib/ConnPool.c 10 | gcc -std=c99 -g $^ -o $@ $(CFLAGS) $(LDFLAGS) 11 | 12 | 13 | json_merge: mongo_op_cache.cpp 14 | g++ -g $^ -o $@ $(CFLAGS) $(LDFLAGS) -DCACHE_TEST 15 | 16 | clean: 17 | rm -f mongo_test json_merge 18 | 19 | -------------------------------------------------------------------------------- /NgxStatMgr/py/__init__.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | import hashlib, urllib2, simplejson as json 3 | 4 | from flask import request 5 | from functools import wraps 6 | 7 | import settings 8 | 9 | # **args navTabId="",rel="",forwardUrl="",callbackType="closeCurrent" 10 | def ConsDwzRsp(status, msg, **args): 11 | rsp = { 12 | "statusCode":status, 13 | "message": msg, 14 | "callbackType":args.get('callbackType', ''), 15 | "navTabId":args.get('navTabId',''), 16 | "rel":args.get('rel',''), 17 | "forwardUrl":args.get('forwardUrl', '')} 18 | 19 | return json.dumps(rsp) -------------------------------------------------------------------------------- /NgxStatMgr/py/settings.py: -------------------------------------------------------------------------------- 1 | # coding=utf8 2 | 3 | DEBUG = True 4 | 5 | SERVER_HOST = '0.0.0.0' 6 | SERVER_PORT = 83 7 | 8 | URL_PREFIX='/ngxstatmgr' 9 | 10 | LOG_PATH='/tmp' 11 | LOG_FILE='mgr_simple.log' 12 | 13 | servers = { 14 | u'nginx': '127.0.0.1:27017', 15 | } 16 | -------------------------------------------------------------------------------- /NgxStatMgr/py/stat_db_clean.py: -------------------------------------------------------------------------------- 1 | from NgxStatMgrSimple.py.ngx_stat_dao import (mongo_get_lt_10_totals,mongo_clr_lt_10_totals) 2 | from NgxStatMgrSimple.py import settings 3 | import sys 4 | 5 | 6 | if __name__ == '__main__': 7 | if len(sys.argv) < 2: 8 | print "Usage: python %s func" % sys.argv[0] 9 | print "python %s show --- show all 'count' < 10 records!" % sys.argv[0] 10 | print "python %s clean --- clean all 'count' < 10 records!" % sys.argv[0] 11 | 12 | sys.exit(1) 13 | 14 | func = sys.argv[1] 15 | if func == 'show': 16 | mongo_get_lt_10_totals(settings.servers) 17 | elif func == 'clean': 18 | mongo_clr_lt_10_totals(settings.servers) 19 | else: 20 | print "func [%s] invalid!" % func -------------------------------------------------------------------------------- /NgxStatMgr/static/NginxStatMgr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/NginxStatMgr.png -------------------------------------------------------------------------------- /NgxStatMgr/static/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/__init__.py -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/css/ContextMenu.css: -------------------------------------------------------------------------------- 1 | /* Generic context menu styles */ 2 | .contextMenu { 3 | position: absolute; 4 | width: 120px; 5 | z-index: 99999; 6 | border: solid 1px #CCC; 7 | background: #EEE; 8 | padding: 0px; 9 | margin: 0px; 10 | font-family: Verdana, Arial, Helvetica, sans-serif; 11 | font-size: 13px; 12 | display: none; 13 | cursor:default; 14 | } 15 | 16 | .contextMenu LI { 17 | list-style: none; 18 | padding: 0px; 19 | margin: 0px; 20 | } 21 | 22 | .contextMenu A { 23 | color: #333; 24 | text-decoration: none; 25 | display: block; 26 | line-height: 20px; 27 | height: 20px; 28 | background-position: 6px center; 29 | background-repeat: no-repeat; 30 | outline: none; 31 | padding: 1px 5px; 32 | padding-left: 28px; 33 | border: 1px #EEE solid; 34 | } 35 | 36 | .contextMenu LI:hover A { 37 | background-color: #D2E6FF; 38 | color: black; 39 | border: 1px #84ACDD solid; 40 | opacity: 0.8; 41 | filter: alpha(opacity = 80); 42 | } 43 | 44 | .contextMenu LI.disabled A { 45 | color: #AAA; 46 | cursor: default; 47 | } 48 | 49 | .contextMenu LI.disabled :hover A { 50 | color: #FFF; 51 | background-color: transparent; 52 | } 53 | 54 | .contextMenu LI.separator { 55 | border-top: solid 1px #CCC; 56 | } 57 | 58 | /* 59 | Adding Icons 60 | 61 | You can add icons to the context menu by adding 62 | classes to the respective LI element(s) 63 | */ 64 | .contextMenu LI.edit A { 65 | background-image: url(../images/page_white_edit.png); 66 | } 67 | 68 | .contextMenu LI.cut A { 69 | background-image: url(../images/cut.png); 70 | } 71 | 72 | .contextMenu LI.copy A { 73 | background-image: url(../images/page_white_copy.png); 74 | } 75 | 76 | .contextMenu LI.paste A { 77 | background-image: url(../images/page_white_paste.png); 78 | } 79 | 80 | .contextMenu LI.delete A { 81 | background-image: url(../images/page_white_delete.png); 82 | } 83 | 84 | .contextMenu LI.quit A { 85 | background-image: url(../images/door.png); 86 | } -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/images/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/contextMenu/images/cut.png -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/images/door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/contextMenu/images/door.png -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/images/page_white_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/contextMenu/images/page_white_copy.png -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/images/page_white_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/contextMenu/images/page_white_delete.png -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/images/page_white_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/contextMenu/images/page_white_edit.png -------------------------------------------------------------------------------- /NgxStatMgr/static/contextMenu/images/page_white_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/contextMenu/images/page_white_paste.png -------------------------------------------------------------------------------- /NgxStatMgr/static/css/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/css/main.css -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/chart/test/barchart.html: -------------------------------------------------------------------------------- 1 | 2 | 40 | 41 |
-------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/chart/test/hbarchart.html: -------------------------------------------------------------------------------- 1 | 2 | 40 | 41 | -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/chart/test/linechart.html: -------------------------------------------------------------------------------- 1 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/chart/test/piechart.html: -------------------------------------------------------------------------------- 1 | 2 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/combox/area_all.html: -------------------------------------------------------------------------------- 1 | [ 2 | ["", "请选择城市"] 3 | ] -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/combox/area_bj.html: -------------------------------------------------------------------------------- 1 | [ 2 | ["东城", "东城"], 3 | ["西城", "西城"], 4 | ["崇文", "崇文"], 5 | ["宣武", "宣武"], 6 | ["朝阳", "朝阳"], 7 | ["丰台", "丰台"], 8 | ["石景山", "石景山"], 9 | ["海淀", "海淀"], 10 | ["门头沟", "门头沟"], 11 | ["房山", "房山"], 12 | ["通州", "通州"], 13 | ["顺义", "顺义"], 14 | ["昌平", "昌平"], 15 | ["大兴", "大兴"], 16 | ["平谷", "平谷"], 17 | ["怀柔", "怀柔"], 18 | ["密云", "密云"], 19 | ["延庆", "延庆"] 20 | ] -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/combox/area_sh.html: -------------------------------------------------------------------------------- 1 | [ 2 | ["崇明", "崇明"], 3 | ["黄浦", "黄浦"], 4 | ["卢湾", "卢湾"], 5 | ["徐汇", "徐汇"], 6 | ["长宁", "长宁"], 7 | ["静安", "静安"], 8 | ["普陀", "普陀"], 9 | ["闸北", "闸北"], 10 | ["虹口", "虹口"], 11 | ["杨浦", "杨浦"], 12 | ["闵行", "闵行"], 13 | ["宝山", "宝山"], 14 | ["嘉定", "嘉定"], 15 | ["浦东", "浦东"], 16 | ["金山", "金山"], 17 | ["松江", "松江"], 18 | ["青浦", "青浦"], 19 | ["南汇", "南汇"], 20 | ["奉贤", "奉贤"], 21 | ["朱家角", "朱家角"] 22 | ] -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/combox/city_all.html: -------------------------------------------------------------------------------- 1 | [ 2 | ["all", "请选择省份"] 3 | ] -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/combox/city_bj.html: -------------------------------------------------------------------------------- 1 | [ 2 | ["all", "所有城市"], 3 | ["bj", "北京市"] 4 | ] -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/combox/city_sh.html: -------------------------------------------------------------------------------- 1 | [ 2 | ["all", "所有城市"], 3 | ["sh", "上海市"] 4 | ] -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/common/ajaxDone.html: -------------------------------------------------------------------------------- 1 | { 2 | "statusCode":"200", 3 | "message":"\u64cd\u4f5c\u6210\u529f", 4 | "navTabId":"", 5 | "rel":"", 6 | "callbackType":"", 7 | "forwardUrl":"", 8 | "confirmMsg":"" 9 | } 10 | -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/common/ajaxDone.json: -------------------------------------------------------------------------------- 1 | { 2 | "statusCode":"200", 3 | "message":"\u64cd\u4f5c\u6210\u529f", 4 | "navTabId":"", 5 | "rel":"", 6 | "callbackType":"", 7 | "forwardUrl":"", 8 | "confirmMsg":"" 9 | } 10 | -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/common/ajaxTimeout.html: -------------------------------------------------------------------------------- 1 | { 2 | "statusCode":"301", 3 | "message":"\u4f1a\u8bdd\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002", 4 | "navTabId":"", 5 | "callbackType":"", 6 | "forwardUrl":"" 7 | } 8 | -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/common/dwz-team.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jie123108/ngx_req_stat/446bc35c86acca8cb7c377e7e413bb83ec246ae5/NgxStatMgr/static/dwz/demo/common/dwz-team.xls -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/database/db_attachmentBrightBack.html: -------------------------------------------------------------------------------- 1 | { 2 | "id":"1000", 3 | "fileName":"测试文件.txt", 4 | "attachmentPath":"/upload/测试文件.txt", 5 | "attachmentSize":"1024" 6 | } -------------------------------------------------------------------------------- /NgxStatMgr/static/dwz/demo/database/db_attachmentLookup.html: -------------------------------------------------------------------------------- 1 | 2 |