Advertisement
parabola949

Untitled

May 20th, 2011
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.45 KB | None | 0 0
  1. /* Clinical ID Switcher
  2.  * Justin Mangum
  3.  * 05/19/2011
  4.  *
  5.  * Tasks to be done:
  6.  * Design UI
  7.  *
  8.  *
  9.  * Functions to be written:
  10.  * SQL Query - resultSet querySCCM(Query);
  11.  * Collection ADQuery(Group);
  12.  *
  13.  * Connection Strings:
  14.  * Data Source=FTWSCCMSQL01\INSTANCE1;Initial Catalog=SMS_TH1;Integrated Security=True
  15.  *
  16.  *
  17.  * Test Accounts Info:
  18.  * User accounts:
  19.  * JCPSite01 - 04 wired 01 - 03
  20.  * JCPSite01 - 04 wireless 01 - 03
  21.  *
  22.  * Groups:
  23.  * Wired Test Site 1-4
  24.  * Wireless Test Site 1-4
  25.  *
  26.  */
  27. using System;
  28. using System.Collections;
  29. using System.ComponentModel;
  30. using System.Data;
  31. using System.Drawing;
  32. using System.Text;
  33. using System.Windows.Forms;
  34. using System.DirectoryServices;
  35. using System.DirectoryServices.AccountManagement;
  36.  
  37.  
  38. namespace Clinical_ID_Switcher
  39. {
  40.     public partial class frmMain : Form
  41.     {
  42.         String[, ,] _SCCMInfo;
  43.         String[, ,] _ADInfo;
  44.         String[, ,] _Final;
  45.         ArrayList listBoxes;
  46.         String[] _sites;
  47.         String[] _groups;
  48.        
  49.         public frmMain()
  50.         {
  51.             //var SCCMInfo;
  52.             InitializeComponent();
  53.             _SCCMInfo = new String[4, 2, 2000];
  54.             _ADInfo = new String[4, 2, 2000];
  55.             _Final = new String[4, 2, 2000];
  56.             _sites = new String[4];
  57.             _sites[0] = "1";
  58.             _sites[1] = "2";
  59.             _sites[2] = "3";
  60.             _sites[3] = "4";
  61.             _groups = new String[2];
  62.             _groups[0] = "Wired";
  63.             _groups[1] = "Wireless";
  64.             getDataFromSCCM();
  65.             getDataFromAD();
  66.             DoCompare();
  67.             foreach (string site in _sites)
  68.             {
  69.                 lstSites.Items.Add(site.ToString());
  70.             }
  71.            
  72.            
  73.         }
  74.  
  75.         public void DoCompare()
  76.         {
  77.             int x = 0, y = 0, z = 0, i = 0;
  78.             string temp = "";
  79.             bool end = false;
  80.             // Start with comparing SCCM to AD
  81.             foreach (string site in _sites)
  82.             {
  83.                 y = 0;
  84.                 foreach (string group in _groups)
  85.                 {
  86.                     z = 0;
  87.                     i = 0;
  88.                     end = false;
  89.                     do
  90.                     {
  91.                         if (_SCCMInfo[x, y, z] != null)
  92.                         {
  93.                             temp = _SCCMInfo[x, y, z];
  94.                             for (i = 0; i < 2000; i++)
  95.                             {
  96.                                 if (_ADInfo[x, y, i] != null)
  97.                                 {
  98.                                     if (temp == _ADInfo[x, y, i])
  99.                                     {
  100.                                         //found
  101.                                         i = 2000;
  102.                                         _Final[x, y, z] = temp;
  103.                                        
  104.                                     }
  105.  
  106.                                 }
  107.                                 else
  108.                                 {
  109.                                     i = 2000;
  110.                                     //not found
  111.                                     _Final[x, y, z] = "+" + temp;
  112.                                 }
  113.  
  114.                             }
  115.  
  116.                         }
  117.                         else
  118.                             end = true;
  119.                        
  120.                         z++;
  121.                     } while (!end);
  122.                     y++;
  123.                 }
  124.                 x++;
  125.             }
  126.  
  127.             // Now reverse the comparison, to find what is being removed:
  128.             x = 0;
  129.             y = 0;
  130.             z = 0;
  131.             i = 0;
  132.             temp = "";
  133.             end = false;
  134.            
  135.             foreach (string site in _sites)
  136.             {
  137.                 y = 0;
  138.                 foreach (string group in _groups)
  139.                 {
  140.                     z = 0;
  141.                     i = 0;
  142.                     int z2 = 0;
  143.                     while (_Final[x, y, z2] != null)
  144.                     {
  145.                         z2++;
  146.                     }
  147.                    
  148.                     end = false;
  149.                     do
  150.                     {
  151.                         if (_ADInfo[x, y, z] != null)
  152.                         {
  153.                             temp = _ADInfo[x, y, z];
  154.                             for (i = 0; i < 2000; i++)
  155.                             {
  156.                                 if (_SCCMInfo[x, y, i] != null)
  157.                                 {
  158.                                     if (temp == _SCCMInfo[x, y, i])
  159.                                     {
  160.                                         //found
  161.                                         i = 2000;
  162.                                         for (int f = 0; f < 2000; f++)
  163.                                         {
  164.                                             if (_Final[x, y, f] == temp)
  165.                                             {
  166.                                                 //already been found, don't add
  167.                                                 f = 1999;
  168.                                             }
  169.                                             if (_Final[x, y, f] == null && f != 1999)
  170.                                             {
  171.                                                 //not added previously, add now
  172.                                                 _Final[x, y, z2] = temp;
  173.                                                 f = 2000;
  174.                                             }
  175.                                         }
  176.                                     }
  177.  
  178.                                 }
  179.                                 else
  180.                                 {
  181.                                     i = 2000;
  182.                                     //not found
  183.                                     _Final[x, y, z2] = "-" + temp;
  184.                                 }
  185.  
  186.                             }
  187.  
  188.                         }
  189.                         else
  190.                             end = true;
  191.  
  192.                         z++;
  193.                         z2++;
  194.                     } while (!end);
  195.                     y++;
  196.                 }
  197.                 x++;
  198.             }
  199.         }
  200.  
  201.         public void newListBox(string name)
  202.         {
  203.             listBoxes.Add(new ListBox());
  204.             ((ListBox)listBoxes[listBoxes.Count]).Name = name;
  205.  
  206.         }
  207.  
  208.         public void getDataFromSCCM()
  209.         {
  210.             //_SCCMInfo = null;
  211.             _SCCMInfo[0, 0, 0] = "JCPSite01Wired01";
  212.             _SCCMInfo[0, 0, 1] = "JCPSite01Wired02";
  213.             _SCCMInfo[0, 0, 2] = "JCPSite01Wired03";
  214.             _SCCMInfo[1, 0, 0] = "JCPSite02Wired01";
  215.             _SCCMInfo[1, 0, 1] = "JCPSite02Wired02";
  216.             _SCCMInfo[1, 0, 2] = "JCPSite02Wired03";
  217.             _SCCMInfo[2, 0, 0] = "JCPSite03Wired01";
  218.             _SCCMInfo[2, 0, 1] = "JCPSite03Wired02";
  219.             _SCCMInfo[2, 0, 2] = "JCPSite03Wired03";
  220.             _SCCMInfo[3, 0, 0] = "JCPSite04Wired01";
  221.             _SCCMInfo[3, 0, 1] = "JCPSite04Wired02";
  222.             _SCCMInfo[3, 0, 2] = "JCPSite04Wired03";
  223.             _SCCMInfo[0, 1, 0] = "JCPSite01Wireless01";
  224.             _SCCMInfo[0, 1, 1] = "JCPSite01Wireless02";
  225.             _SCCMInfo[0, 1, 2] = "JCPSite01Wireless03";
  226.             _SCCMInfo[1, 1, 0] = "JCPSite02Wireless01";
  227.             _SCCMInfo[1, 1, 1] = "JCPSite02Wireless02";
  228.             _SCCMInfo[1, 1, 2] = "JCPSite02Wireless03";
  229.             _SCCMInfo[2, 1, 0] = "JCPSite03Wireless01";
  230.             _SCCMInfo[2, 1, 1] = "JCPSite03Wireless02";
  231.             _SCCMInfo[2, 1, 2] = "JCPSite03Wireless03";
  232.             _SCCMInfo[3, 1, 0] = "JCPSite04Wireless01";
  233.             _SCCMInfo[3, 1, 1] = "JCPSite04Wireless02";
  234.             _SCCMInfo[3, 1, 2] = "JCPSite04Wireless03";
  235.         }
  236.  
  237.         public void getDataFromAD()
  238.         {
  239.             //_ADInfo = null;
  240.             int x = 0, y = 0, z = 0;
  241.             foreach (string site in _sites)
  242.             {
  243.                 y = 0;
  244.                 foreach (string group in _groups)
  245.                 {
  246.                     z = 0;
  247.                     ArrayList members = GetUsersInGroup(group + " Test Site " + site);
  248.                     foreach (string member in members)
  249.                     {
  250.                         _ADInfo[x, y, z] = member;
  251.                         z++;
  252.                     }
  253.                     y++;
  254.                 }
  255.                 x++;
  256.             }
  257.         }
  258.  
  259.         private void createTextBox(ArrayList list, String name)
  260.         {
  261.             int i = list.Count;
  262.             list.Add( new TextBox() );
  263.             ((TextBox)list[i]).Name = name;
  264.             ((TextBox)list[i]).Text = String.Empty;
  265.         }
  266.  
  267.         public void AddToGroup(string userDn, string groupDn)
  268.         {
  269.             try
  270.             {
  271.                 DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn);
  272.                 dirEntry.Properties["member"].Add(userDn);
  273.                 dirEntry.CommitChanges();
  274.                 dirEntry.Close();
  275.             }
  276.             catch (System.DirectoryServices.DirectoryServicesCOMException e)
  277.             {
  278.                 MessageBox.Show(e.Message);
  279.             }
  280.         }
  281.  
  282.         public void RemoveFromGroup(string userDn, string groupDn)
  283.         {
  284.             try
  285.             {
  286.                 DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn);
  287.                 dirEntry.Properties["member"].Remove(userDn);
  288.                 dirEntry.CommitChanges();
  289.                 dirEntry.Close();
  290.             }
  291.             catch (System.DirectoryServices.DirectoryServicesCOMException e)
  292.             {
  293.                 MessageBox.Show(e.Message);
  294.             }
  295.         }
  296.  
  297.         public ArrayList GetUsersInGroup(string myGroup)
  298.         {
  299.             ArrayList memberList = new ArrayList();
  300.             var myDomain = new PrincipalContext(ContextType.Domain, "txhealth.org", "OU=THR Users,DC=txhealth,DC=org");
  301.             var group = GroupPrincipal.FindByIdentity(myDomain, myGroup);
  302.             if (group != null)
  303.             {
  304.                 var members = group.GetMembers();
  305.                 foreach (var member in members)
  306.                 {
  307.                     memberList.Add(member.ToString());
  308.                 }
  309.             }
  310.             else
  311.             {
  312.                 MessageBox.Show(@"Could not find group " + myGroup + ". Try again.", @"Error");
  313.                 return null;
  314.             }
  315.             return memberList;
  316.         }
  317.  
  318.         private void lstSites_SelectedIndexChanged(object sender, EventArgs e)
  319.         {
  320.             lstGroups.Items.Clear();
  321.             lstUsers.Items.Clear();
  322.             foreach (string group in _groups)
  323.             {
  324.                 lstGroups.Items.Add(group);
  325.             }
  326.         }
  327.  
  328.         private void lstGroups_SelectedIndexChanged(object sender, EventArgs e)
  329.         {
  330.             if (lstSites.FocusedItem == null)
  331.                 return;
  332.             if (lstGroups.FocusedItem == null)
  333.                 return;
  334.             lstUsers.Items.Clear();
  335.             //string group = lstGroups.SelectedItem.ToString();
  336.             //ArrayList members = GetUsersInGroup(group + " Test Site " + lstSites.SelectedItem.ToString());
  337.             //if (members != null)
  338.             //{
  339.             //    foreach (string user in members)
  340.             //    {
  341.             //        lstUsers.Items.Add(user);
  342.             //    }
  343.             //}
  344.             int x =0;
  345.  
  346.             while (_Final[lstSites.FocusedItem.Index, lstGroups.FocusedItem.Index, x] != null)
  347.             {
  348.                 x++;
  349.             }
  350.             for (int i = 0; i < x; i++)
  351.             {
  352.                 string temp = _Final[lstSites.FocusedItem.Index, lstGroups.FocusedItem.Index, i];
  353.                 if (temp.Contains("+"))
  354.                 {
  355.                     lstUsers.Items.Add(temp.Substring(1));
  356.                     lstUsers.Items[i].BackColor = Color.Green;
  357.                 }
  358.                 else if (temp.Contains("-"))
  359.                 {
  360.                     lstUsers.Items.Add(temp.Substring(1));
  361.                     lstUsers.Items[i].BackColor = Color.Red;
  362.                 }
  363.                 else
  364.                     lstUsers.Items.Add(temp);
  365.             }
  366.         }
  367.  
  368.         private void btnCancel_Click(object sender, EventArgs e)
  369.         {
  370.             this.Close();
  371.         }
  372.  
  373.         private void btnCleanup_Click(object sender, EventArgs e)
  374.         {
  375.             /// DO NOTHING RIGHT NOW
  376.         }
  377.     }
  378. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement