Using system; Using system. Data; Using system. directoryservices; Using system. collections; Namespace aspcn. Management { /// <Summary> /// Summary of iismanager. /// </Summary> Public class iismanager { // Define Private string _ server, _ website; Private virtualdirectories _ virdirs; Protected system. directoryservices. directoryentry rootfolder; Private bool _ batchflag; Public iismanager () { // By default, localhost is used to access the local machine. _ Server = "localhost "; _ Website = "1 "; _ Batchflag = false; } Public iismanager (string strserver) { _ Server = strserver; _ Website = "1 "; _ Batchflag = false; } /// <Summary> /// Define public attributes /// </Summary>
// Server attribute defines the name of the access machine, which can be IP address and computing name Public String Server { Get {return _ server ;} Set {_ Server = value ;} } // Defines the website attribute as a number. For convenience, use string // Generally, the first host is 1, the second host is 2, and so on. Public String website { Get {return _ website ;} Set {_ website = value ;} } // Virtual directory name Public virtualdirectories virdirs { Get {return _ virdirs ;} Set {_ virdirs = value ;} } /// <Summary> /// Define public methods /// </Summary>
// Connect to the server Public void connect () { Connecttoserver (); } // For convenience of overloading Public void connect (string strserver) { _ Server = strserver; Connecttoserver (); } // For convenience of overloading Public void connect (string strserver, string strwebsite) { _ Server = strserver; _ Website = strwebsite; Connecttoserver (); } // Determine whether the virtual directory is saved Public bool exists (string strvirdir) { Return _ virdirs. Contains (strvirdir ); } // Add a virtual directory Public void create (virtualdirectory newdir) { String strpath = "IIS: //" + _ SERVER + "/w3svc/" + _ website + "/root/" + newdir. Name; If (! _ Virdirs. Contains (newdir. Name) | _ batchflag) { Try { // Add it to the children set of the root user Directoryentry newvirdir = rootfolder. Children. Add (newdir. Name, "iiswebvirtualdir "); Newvirdir. Invoke ("appcreate", true ); Newvirdir. commitchanges (); Rootfolder. commitchanges (); // Then update the data Updatedirinfo (newvirdir, newdir ); } Catch (exception ee) { Throw new exception (EE. tostring ()); } } Else { Throw new exception ("this virtual directory is already exist ."); } } // Obtain a virtual directory Public virtualdirectory getvirdir (string strvirdir) { Virtualdirectory TMP = NULL; If (_ virdirs. Contains (strvirdir )) { TMP = _ virdirs. Find (strvirdir ); (Virtualdirectory) _ virdirs [strvirdir]). Flag = 2; } Else { Throw new exception ("this virtual directory is not exists "); } Return TMP; }
// Update a virtual directory Public void Update (virtualdirectory DIR) { // Determine whether the virtual directory to be changed exists If (_ virdirs. Contains (dir. Name )) { Directoryentry ode = rootfolder. Children. Find (dir. Name, "iiswebvirtualdir "); Updatedirinfo (ODE, DIR ); } Else { Throw new exception ("this virtual directory is not exists ."); } }
// Delete a virtual directory Public void Delete (string strvirdir) { If (_ virdirs. Contains (strvirdir )) { Object [] paras = new object [2]; Paras [0] = "iiswebvirtualdir"; // indicates that a virtual directory is operated. Paras [1] = strvirdir; Rootfolder. Invoke ("delete", paras ); Rootfolder. commitchanges (); } Else { Throw new exception ("can't delete" + strvirdir + ", because it isn' t exists ."); } } // Batch update Public void updatebatch () { Batchupdate (_ virdirs ); } // Reload one :-) Public void updatebatch (virtualdirectories VDS) { Batchupdate (VDS ); }
/// <Summary> /// Private Method /// </Summary>
// Connect to the server Private void connecttoserver () { String strpath = "IIS: //" + _ SERVER + "/w3svc/" + _ website + "/root "; Try { This. rootfolder = new directoryentry (strpath ); _ Virdirs = getvirdirs (this. rootfolder. Children ); } Catch (exception E) { Throw new exception ("can't connect to the server [" + _ SERVER + "]...", e ); } } // Execute batch update Private void batchupdate (virtualdirectories VDS) { _ Batchflag = true; Foreach (Object item in VDS. values) { Virtualdirectory Vd = (virtualdirectory) item; Switch (VD. Flag) { Case 0: Break; Case 1: Create (VD ); Break; Case 2: Update (VD ); Break; } } _ Batchflag = false; } // Update Dongdong Private void updatedirinfo (directoryentry de, virtualdirectory Vd) { De. properties ["anonymoususername"] [0] = VD. anonymoususername; De. properties ["anonymoususerpass"] [0] = VD. anonymoususerpass; De. properties ["accessread"] [0] = VD. accessread; De. properties ["accessexecute"] [0] = VD. accessexecute; De. properties ["accesswrite"] [0] = VD. accesswrite; De. properties ["authbasic"] [0] = VD. authbasic; De. properties ["authntlm"] [0] = VD. authntlm; De. properties ["contentindexed"] [0] = VD. contentindexed; De. properties ["enabledefaultdoc"] [0] = VD. enabledefaultdoc; De. properties ["enabledirbrowsing"] [0] = VD. enabledirbrowsing; De. properties ["accessssl"] [0] = VD. accessssl; De. properties ["accessscript"] [0] = VD. accessscript; De. properties ["defaultdoc"] [0] = VD. defaultdoc; De. properties ["path"] [0] = VD. path; De. commitchanges (); }
// Obtain the virtual directory set Private virtualdirectories getvirdirs (directoryentries des) { Virtualdirectories tmpdirs = new virtualdirectories (); Foreach (directoryentry de in des) { If (De. schemaclassname = "iiswebvirtualdir ") { Virtualdirectory Vd = new virtualdirectory (); VD. Name = de. Name; VD. accessread = (bool) De. properties ["accessread"] [0]; VD. accessexecute = (bool) De. properties ["accessexecute"] [0]; VD. accesswrite = (bool) De. properties ["accesswrite"] [0]; VD. anonymoususername = (string) De. properties ["anonymoususername"] [0]; VD. anonymoususerpass = (string) De. properties ["anonymoususername"] [0]; VD. authbasic = (bool) De. properties ["authbasic"] [0]; VD. authntlm = (bool) De. properties ["authntlm"] [0]; VD. contentindexed = (bool) De. properties ["contentindexed"] [0]; VD. enabledefaultdoc = (bool) De. properties ["enabledefaultdoc"] [0]; VD. enabledirbrowsing = (bool) De. properties ["enabledirbrowsing"] [0]; VD. accessssl = (bool) De. properties ["accessssl"] [0]; VD. accessscript = (bool) De. properties ["accessscript"] [0]; VD. Path = (string) De. properties ["path"] [0]; VD. Flag = 0; VD. defaultdoc = (string) De. properties ["defaultdoc"] [0]; Tmpdirs. Add (VD. Name, Vd ); } } Return tmpdirs; }
} /// <Summary> /// Virtualdirectory class /// </Summary> Public class virtualdirectory { Private bool _ read, _ execute, _ script, _ SSL, _ write, _ authbasic, _ authntlm, _ indexed, _ endirbrow, _ endefadoc Doc; Private string _ ausername, _ auserpass, _ name, _ path; Private int _ flag; Private string _ defaultdoc; /// <Summary> /// Constructor /// </Summary> Public virtualdirectory () { Setvalue (); } Public virtualdirectory (string strvirdirname) { _ Name = strvirdirname; Setvalue (); } Private void setvalue () { _ READ = true; _ execute = false; _ script = false; _ SSL = false; _ write = false; _ authbasic = false; _ authntlm = false; _ Indexed = false; _ endirbrow = false; _ endefadoc Doc = false; _ Flag = 1; _ Defaultdoc = "default.htm,default.aspx,default.asp,index.htm "; _ Path = "C :\\"; _ Ausername = ""; _ auserpass = ""; _ name = ""; } /// <Summary> /// Define attributes. iisvirtualdir has too many attributes. /// I only did some important work. Other people need to add their own products. /// </Summary>
Public int flag { Get {return _ flag ;} Set {_ flag = value ;} } Public bool accessread { Get {return _ read ;} Set {_ READ = value ;} } Public bool accesswrite { Get {return _ write ;} Set {_ write = value ;} } Public bool accessexecute { Get {return _ execute ;} Set {_ execute = value ;} } Public bool accessssl { Get {return _ SSL ;} Set {_ SSL = value ;} } Public bool accessscript { Get {return _ script ;} Set {_ script = value ;} } Public bool authbasic { Get {return _ authbasic ;} Set {_ authbasic = value ;} } Public bool authntlm { Get {return _ authntlm ;} Set {_ authntlm = value ;} } Public bool contentindexed { Get {return _ indexed ;} Set {_ indexed = value ;} } Public bool enabledirbrowsing { Get {return _ endirbrow ;} Set {_ endirbrow = value ;} } Public bool enabledefaultdoc { Get {return _ endefadoc Doc ;} Set {_ endefadoc Doc = value ;} } Public string name { Get {return _ name ;} Set {_ name = value ;} } Public String path { Get {return _ path ;} Set {_ Path = value ;} } Public String defaultdoc { Get {return _ defadoc Doc ;} Set {_ defadoc Doc = value ;} } Public String anonymoususername { Get {return _ ausername ;} Set {_ ausername = value ;} } Public String anonymoususerpass { Get {return _ auserpass ;} Set {_ auserpass = value ;} } } /// <Summary> /// Set virtualdirectories /// </Summary>
Public class virtualdirectories: system. Collections. hashtable { Public virtualdirectories () { } // Add a new method Public virtualdirectory find (string strname) { Return (virtualdirectory) This [strname]; } } } |