source: llum/trunk/fuentes/llum/PasswordListWidget.cs @ 376

Last change on this file since 376 was 376, checked in by hectorgh, 4 years ago

adding project files

File size: 5.5 KB
Line 
1
2using System;
3using System.Text;
4
5namespace llum
6{
7
8
9        [System.ComponentModel.ToolboxItem(true)]
10        public partial class PasswordListWidget : Gtk.Bin
11        {
12
13               
14                private static Random random = new Random((int)DateTime.Now.Ticks);//thanks to McAden
15                private string RandomString(int size)
16            {
17                StringBuilder builder = new StringBuilder();
18                char ch;
19                for (int i = 0; i < size; i++)
20                {
21                    ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));                 
22                    builder.Append(ch);
23                }
24       
25                return builder.ToString();
26            }           
27               
28               
29                public Gtk.Image image;
30                public Gtk.Label label;
31                public int search_mode;
32                private System.Collections.Generic.List<LdapUser> user_list;
33                public PasswordListWidget ()
34                {
35                        this.Build ();
36                        image=new Gtk.Image();
37                        image.SetFromIconName("gtk-dialog-authentication",Gtk.IconSize.Dnd);
38                        image.Show();
39                        label=new Gtk.Label(Mono.Unix.Catalog.GetString("Get password list"));
40                        label.Show();
41                        search_mode = 0;
42                       
43
44                        System.Threading.ThreadStart tstart=delegate{
45                       
46                                user_list=llum.Core.getCore().xmlrpc.get_user_list();
47                               
48                        };
49                       
50                        System.Threading.Thread thread=new System.Threading.Thread(tstart);                     
51                        thread.Start();
52                       
53                       
54                        System.Collections.Generic.List<string> groups=llum.Core.getCore().xmlrpc.get_available_groups();
55                       
56                        groupsCombobox.AppendText(Mono.Unix.Catalog.GetString("All"));
57                       
58                        foreach(string group_name in groups)
59                        {
60                                        groupsCombobox.AppendText(group_name);
61                        }
62                       
63                        groupsCombobox.Active=0;
64                       
65                        if(llum.Core.getCore().user_group=="teachers")
66                        {
67                                teachersRadiobutton.Sensitive=false;
68                                allRadiobutton.Sensitive=false;
69                        }
70                       
71                       
72                }
73               
74                public void OnMenuButtonClicked(object sender, System.EventArgs e)
75                {
76                       
77                        llum.Core.getCore().pass_list_wid=new PasswordListWidget();
78                       
79                        llum.Core.getCore().mw.setCurrentWidget(llum.Core.getCore().pass_list_wid);
80                }               
81               
82                protected virtual void OnGenerateButtonClicked (object sender, System.EventArgs e)
83                {
84                        llum.Core core=llum.Core.getCore();
85                        //System.Collections.Generic.Dictionary<string,string>dic=new System.Collections.Generic.Dictionary<string, string>();
86                       
87                        System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> list=new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();
88                       
89                        if(studentsRadiobutton.Active)
90                        {
91                                list=core.xmlrpc.get_students_passwords();
92                                search_mode = 0;
93                        }
94                        if(teachersRadiobutton.Active)
95                        {
96                                list=core.xmlrpc.get_teachers_passwords();
97                                //groupsCombobox.Active=0;
98                                search_mode = 1;
99                        }
100                        if(allRadiobutton.Active)
101                        {
102                                list=core.xmlrpc.get_all_passwords();
103                                //groupsCombobox.Active=0;
104                                search_mode = 2;
105                        }
106                       
107                        /*
108                        foreach(string str in dic.Keys)
109                        {
110                                if(!dic[str].Contains("{SSHA}"))
111                                        Console.WriteLine(str + ":" + dic[str]);
112                               
113                        }
114                        */
115                       
116                        string close_html="</div>\n" +
117                                "</body>\n" +
118                                "</html>\n";
119                       
120                        System.IO.StreamReader stream=new System.IO.StreamReader(core.html_skel);
121                        string final_html=stream.ReadToEnd();
122                        stream.Close();
123                       
124                        final_html=final_html.Replace("%%NAME%%",Mono.Unix.Catalog.GetString("Name"));
125                        final_html=final_html.Replace("%%USER%%",Mono.Unix.Catalog.GetString("User"));
126                        final_html=final_html.Replace("%%PASSWORD%%",Mono.Unix.Catalog.GetString("Password"));
127                        final_html=final_html.Replace("%%PRINT%%",Mono.Unix.Catalog.GetString("Print"));
128                       
129                       
130                        bool impar=false;
131                       
132
133                       
134                       
135                       
136                        foreach(CookComputing.XmlRpc.XmlRpcStruct dic in list)
137                        {
138                                bool ok=false;
139                                if (user_list != null)
140                                        if (search_mode == 0) {
141                                                foreach (LdapUser user in user_list) {
142                                                        if ((string)dic ["uid"] == user.uid) {
143                                                                if (groupsCombobox.Active == 0) {
144                                                                        ok = true;
145                                                                        break;
146                                                                } else {
147                                                                        ok = user.groups.Contains (groupsCombobox.ActiveText);
148                                                                        break;
149                                                                }
150                                                        }
151                                                }
152                                        } else {
153                                                ok = true;
154                                        }
155
156                                else
157                                        ok=true;
158                               
159                                if(ok)
160                                {
161                                        if(!impar)
162                                        {
163       
164                                                final_html+="\n<div class='row'><div class='left'>\n";
165                                                final_html+=dic["sn"]+", " + dic["cn"];
166                                                final_html+="\n</div><div class='middle'>\n";
167                                                final_html+=dic["uid"];
168                                                final_html+="\n</div><div class='right'>\n";
169                                                final_html+=dic["passwd"];
170                                                final_html+="\n</div></div>\n";
171                                               
172                                                                       
173                                                impar=true;
174                                        }
175                                        else
176                                        {
177                                                final_html+="\n<div class='row impar'><div class='left'>\n";
178                                                final_html+=dic["sn"]+", " + dic["cn"];
179                                                final_html+="\n</div><div class='middle'>\n";
180                                                final_html+=dic["uid"];
181                                                final_html+="\n</div><div class='right'>\n";
182                                                final_html+=dic["passwd"];
183                                                final_html+="\n</div></div>\n";                 
184                                                impar=false;
185                                        }
186                                }
187                        }
188                       
189                        final_html+=close_html;
190                       
191                        string file_name="/tmp/." + RandomString(10);
192                       
193                        while(System.IO.File.Exists(file_name))
194                                file_name="/tmp/." + RandomString(10);
195                       
196                        System.IO.StreamWriter sw=new System.IO.StreamWriter(file_name);
197                        sw.Write(final_html);
198                        sw.Close();
199                       
200                       
201                       
202                       
203                        Mono.Unix.Native.Syscall.chmod(file_name,Mono.Unix.Native.FilePermissions.S_IRWXU);
204                       
205                        System.Threading.ThreadStart start=delegate{
206                       
207                        System.Diagnostics.Process p = new System.Diagnostics.Process();
208                        p.StartInfo.UseShellExecute = false;
209                        p.StartInfo.RedirectStandardOutput = true ;
210                        p.StartInfo.RedirectStandardError = true;
211                        p.StartInfo.FileName = "/usr/share/llum/llum-browser";
212                        p.StartInfo.Arguments=file_name;
213                        p.Start();     
214                                               
215                               
216
217                        };
218                       
219                        System.Threading.Thread thread=new System.Threading.Thread(start);
220                       
221                        thread.Start();
222                       
223                       
224                }
225               
226               
227        }
228}
Note: See TracBrowser for help on using the repository browser.