Beispiel #1
0
        protected virtual void OnCancelButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            core.search_group_wid = new SearchGroupWidget();
            core.mw.setCurrentWidget(core.search_group_wid);
        }
Beispiel #2
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            if (password1Entry.Text != "")
            {
                llum.Core core = llum.Core.getCore();
                string    out_response;
                CookComputing.XmlRpc.XmlRpcStruct new_ret = llum.Core.getCore().xmlrpc.client.change_own_password(core.user_info, "Golem", core.user_info, password1Entry.Text);
                if (Convert.ToInt32(new_ret["status"]) == 0)
                {
                    out_response = (string)new_ret["return"];
                }
                else
                {
                    out_response = (string)new_ret["msg"];
                }

                if (out_response == "true")
                {
                    msgLabel.Text     = Mono.Unix.Catalog.GetString("Password changed successfully");
                    core.user_info[1] = password1Entry.Text;
                }
                else
                {
                    msgLabel.Text = Mono.Unix.Catalog.GetString("Could not change password.") + "\n Error: " + out_response;
                }
            }
        }
Beispiel #3
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();
            System.Collections.Generic.List <string> ret = new System.Collections.Generic.List <string>();
            string result;
            bool   error = false;

            foreach (LdapUser user in to_demote_list)
            {
                result = core.xmlrpc.del_teacher_from_admins(user.uid);
                ret.Add(user.uid + ":" + result + "\n");
                if (!result.Contains("true"))
                {
                    error = true;
                }
            }

            if (error)
            {
                string txt = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Some errors where found when executing the demoting operation:") + "\n";
                foreach (string str in ret)
                {
                    txt += str;
                }


                txt += "</span>";
            }
            else
            {
                msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Users were succesfully demoted") + "</b>";
            }

            acceptButton.Sensitive = false;
        }
Beispiel #4
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core     = llum.Core.getCore();
            string    ret      = "";
            string    user_uid = "";

            foreach (LdapUser user in to_promote_list)
            {
                ret = core.xmlrpc.add_teacher_to_admins(user.uid);
                Console.WriteLine(ret);
                user_uid = user.uid;
                if (ret != "true")
                {
                    break;
                }
            }

            if (ret != "true")
            {
                msgLabel.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error when promoting") + " " + user_uid + ":\n" + ret + "</span>";
            }
            else
            {
                msgLabel.Text = Mono.Unix.Catalog.GetString("Users successfully promoted to admins");
            }

            acceptButton.Sensitive = false;
        }
Beispiel #5
0
        protected virtual void OnDemoteButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreePath[] path_array = userTreeview.Selection.GetSelectedRows();

            selected_user_list = new System.Collections.Generic.List <llum.LdapUser>();

            foreach (Gtk.TreePath path in path_array)
            {
                Gtk.TreeIter iter;
                store.GetIter(out iter, path);

                string uid = (string)store.GetValue(iter, 0);

                foreach (llum.LdapUser u in user_list)
                {
                    if (u.uid == uid)
                    {
                        selected_user_list.Add(u);
                    }
                }
            }

            llum.Core core = llum.Core.getCore();

            core.demote_users_wid = new DemoteUserWidget(selected_user_list, "users");
            core.mw.setCurrentWidget(core.demote_users_wid);
        }
Beispiel #6
0
        protected virtual void OnEditButtonClicked(object sender, System.EventArgs e)
        {
            //userTreeview.Selection.GetSelected(out iter);

            Gtk.TreePath[] path_array = userTreeview.Selection.GetSelectedRows();

            if (path_array.Length == 1)
            {
                Gtk.TreeIter iter;
                store.GetIter(out iter, path_array[0]);
                //Console.WriteLine(store.GetValue(iter,0));
                LdapUser return_user = null;
                foreach (LdapUser user in user_list)
                {
                    if (user.uid == (string)store.GetValue(iter, 0))
                    {
                        return_user = user;
                        break;
                    }
                }

                llum.Core core = llum.Core.getCore();

                core.edit_user_wid = new EditUser(return_user);
                core.mw.setCurrentWidget(core.edit_user_wid);
            }
        }
Beispiel #7
0
        protected virtual void OnDeleteButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            core.delete_users_wid = new DeleteUserWidget(to_delete, "users");
            core.mw.setCurrentWidget(core.delete_users_wid);
        }
Beispiel #8
0
        protected virtual void OnCancelDeleteButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            core.search_user = new SearchUser(false);
            core.mw.setCurrentWidget(core.search_user);
        }
Beispiel #9
0
        protected virtual void OnCancelButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();
            switch (back_to)
            {
            case "users":



                core.search_user = new SearchUser(false);

                core.mw.setCurrentWidget(core.search_user);

                break;

            case "groups":



                core.search_group_wid = new SearchGroupWidget();

                core.mw.setCurrentWidget(core.search_group_wid);

                break;
            }
        }
Beispiel #10
0
        protected virtual void OnDeleteGroupsButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreePath[] path_array = userTreeview.Selection.GetSelectedRows();
            System.Collections.Generic.List <LdapGroup> return_group_list = new System.Collections.Generic.List <llum.LdapGroup>();


            foreach (Gtk.TreePath path in path_array)
            {
                Gtk.TreeIter iter;
                store.GetIter(out iter, path);
                string gid = (string)store.GetValue(iter, 0);

                foreach (LdapGroup grp in group_list)
                {
                    if (grp.gid == gid)
                    {
                        return_group_list.Add(grp);
                        break;
                    }
                }
            }



            llum.Core core = llum.Core.getCore();
            core.delete_groups_wid = new DeleteGroupsWidget(return_group_list);

            core.mw.setCurrentWidget(core.delete_groups_wid);
        }
Beispiel #11
0
        protected virtual void OnSearchEntryChanged(object sender, System.EventArgs e)
        {
            store.Clear();


            llum.Core core = llum.Core.getCore();

            group_list = core.xmlrpc.get_available_groups_info();
            string filter;

            if (searchEntry.Text.Contains("*"))
            {
                filter = searchEntry.Text.ToLower().Replace("*", "");
            }
            else
            {
                filter = searchEntry.Text.ToLower();
            }


            foreach (llum.LdapGroup grp in group_list)
            {
                //if((searchEntry.Text.ToLower().Contains(grp.description.ToLower())) || (searchEntry.Text.ToLower().Contains(grp.gid.ToLower())))
                if (grp.description.ToLower().Contains(filter) || grp.gid.Contains(filter))
                {
                    store.AppendValues(grp.gid, grp.description);
                }
            }
        }
Beispiel #12
0
        protected virtual void OnApplyPasswordButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();
            llum.Core.getCore().progress_window = new ProgressWindow(Mono.Unix.Catalog.GetString("Changing User passwords..."));
            llum.Core.getCore().progress_window.ShowAll();
            llum.Core.getCore().progress_window.ShowNow();

            System.Collections.Generic.List <string> ret = new System.Collections.Generic.List <string>();


            System.Threading.Thread thread = null;


            System.Threading.ThreadStart progressTStart = delegate
            {
                System.Collections.Generic.List <LdapUser> user_list = core.xmlrpc.light_get_user_list();
                bool error = false;
                foreach (LdapUser user in user_list)
                {
                    if (opened_group.member_list.Contains(user.uid))
                    {
                        string result = core.xmlrpc.change_password(user.path, passwordEntry.Text, false);
                        ret.Add(user.uid + ":" + result + "\n");
                        if (!result.Contains("true"))
                        {
                            error = true;
                        }
                    }
                }

                string txt = "";
                Gtk.Application.Invoke(delegate {
                    if (!error)
                    {
                        msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Passwords were successfully changed") + "</b>";
                    }
                    else
                    {
                        txt = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Some errors were found when changing passwords:") + "\n";



                        foreach (string str in ret)
                        {
                            txt += str;
                        }

                        txt += "</span>";

                        msgLabel.Markup = txt;
                    }

                    core.progress_window.Hide();
                });
            };

            thread = new System.Threading.Thread(progressTStart);
            thread.Start();
        }
Beispiel #13
0
        protected virtual void OnDeleteUsersButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();
            System.Collections.Generic.List <LdapUser> delete_user_list = new System.Collections.Generic.List <LdapUser>();
            System.Collections.Generic.List <LdapUser> user_list        = core.xmlrpc.get_user_list();



            Gtk.TreePath[] path_array = userTreeview.Selection.GetSelectedRows();


            System.Collections.Generic.List <string> grp_user_list = new System.Collections.Generic.List <string>();

            foreach (Gtk.TreePath path in path_array)
            {
                Gtk.TreeIter iter;
                store.GetIter(out iter, path);

                string gid = (string)store.GetValue(iter, 0);

                foreach (LdapGroup grp in group_list)
                {
                    if (grp.gid == gid)
                    {
                        foreach (string str in grp.member_list)
                        {
                            if (!grp_user_list.Contains(str))
                            {
                                grp_user_list.Add(str);
                            }
                        }

                        break;
                    }
                }
            }

            foreach (string str in grp_user_list)
            {
                foreach (LdapUser user in user_list)
                {
                    if (user.uid == str)
                    {
                        if (user.main_group == "students" || user.main_group == "teachers")
                        {
                            user.ok_to_delete = true;
                        }
                        delete_user_list.Add(user);
                        break;
                    }
                }
            }

            core.delete_users_wid = new DeleteUserWidget(delete_user_list, "groups");
            core.mw.setCurrentWidget(core.delete_users_wid);
        }
Beispiel #14
0
        protected virtual void OnDeleteUsersButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreePath[] path_array = userTreeview.Selection.GetSelectedRows();

            selected_user_list = new System.Collections.Generic.List <llum.LdapUser>();

            foreach (Gtk.TreePath path in path_array)
            {
                Gtk.TreeIter iter;
                store.GetIter(out iter, path);

                string uid = (string)store.GetValue(iter, 0);

                foreach (llum.LdapUser u in user_list)
                {
                    if (u.uid == uid)
                    {
                        switch (u.main_group)
                        {
                        case "students":
                            u.ok_to_delete = true;

                            break;

                        case "teachers":
                            if (llum.Core.getCore().user_group == "admin" || llum.Core.getCore().user_group == "promoted-teacher")
                            {
                                u.ok_to_delete = true;
                            }
                            else
                            {
                                u.ok_to_delete = false;
                            }
                            break;

                        case "admin":
                            u.ok_to_delete = false;
                            break;

                        case "others":
                            u.ok_to_delete = true;
                            break;
                        }
                        selected_user_list.Add(u);
                    }
                }
            }

            llum.Core core = llum.Core.getCore();

            core.delete_users_wid = new DeleteUserWidget(selected_user_list, "users");
            core.mw.setCurrentWidget(core.delete_users_wid);
        }
Beispiel #15
0
        protected virtual void OnRemoveGroupButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreePath[] path_array = belongTreeview.Selection.GetSelectedRows();
            System.Collections.Generic.List <string> ret_list = new System.Collections.Generic.List <string>();

            llum.Core core        = llum.Core.getCore();
            bool      error_found = false;

            if (path_array.Length > 0)
            {
                foreach (Gtk.TreePath path in path_array)
                {
                    Gtk.TreeIter iter = new Gtk.TreeIter();
                    belong_store.GetIter(out iter, path);

                    string ret = core.xmlrpc.remove_from_group(user.uid, Convert.ToString(belong_store.GetValue(iter, 0)));
                    ret_list.Add(Convert.ToString(belong_store.GetValue(iter, 0)) + ": " + ret + "\n");

                    if (ret == "true")
                    {
                        //available_store.AppendValues(belong_store.GetValue(iter,0));
                        user.groups.Remove(Convert.ToString(belong_store.GetValue(iter, 0)));
                        //belong_store.Remove(ref iter);
                    }
                    else
                    {
                        error_found = true;
                    }
                }

                if (!error_found)
                {
                    msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Group modification successful") + "</b>";
                }
                else
                {
                    string msg = "<span foreground='red'> Error:\n";
                    foreach (string str in ret_list)
                    {
                        msg += str;
                    }

                    msg += "</span>";

                    msgLabel.Markup = msg;
                }

                populateTrees();
            }
        }
Beispiel #16
0
        protected virtual void OnApplyDescriptionButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            string ret = core.xmlrpc.change_group_description(opened_group.gid, descriptionEntry.Text);

            if (ret == "true")
            {
                msgLabel.Text            = Mono.Unix.Catalog.GetString("Description changed succesfully");
                opened_group.description = descriptionEntry.Text;
            }
            else
            {
                msgLabel.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error changing group description") + ":\n" + ret + "</span>";
            }
        }
Beispiel #17
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            CookComputing.XmlRpc.XmlRpcStruct properties = new CookComputing.XmlRpc.XmlRpcStruct();
            properties["cn"]                  = nameEntry.Text;
            properties["description"]         = descriptionEntry.Text;
            properties["x-lliurex-grouptype"] = "generic";

            string ret = core.xmlrpc.add_group(properties);

            if (ret == "true")
            {
                msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Group successfully added") + "</b>";
            }
            else
            {
                msgLabel.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("An error was found when adding group:") + "\n" + ret + "</span>";
            }
        }
Beispiel #18
0
        protected void OnButton1Clicked(object sender, EventArgs e)
        {
            try{
                if (!user_available)
                {
                }


                if (pwd_entry.Text == pwd_entry2.Text)
                {
                    llum.Core core = llum.Core.getCore();
                    core.xmlrpc.change_password(dn_entry.Text, pwd_entry.Text, false);
                    msg_label.Markup = "<b>" + Mono.Unix.Catalog.GetString("Password changed successfully") + "</b>";
                }
                else
                {
                    msg_label.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Passwords do not match") + "</span>";
                }
            }
            catch {
            }
        }
Beispiel #19
0
        protected virtual void OnPromoteButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreePath[] path_array = userTreeview.Selection.GetSelectedRows();

            System.Collections.Generic.List <LdapUser> user_list     = llum.Core.getCore().xmlrpc.get_user_list();
            System.Collections.Generic.List <LdapUser> ret_user_list = new System.Collections.Generic.List <LdapUser>();

            foreach (Gtk.TreePath path in path_array)
            {
                Gtk.TreeIter iter;
                store.GetIter(out iter, path);
                string gid = (string)store.GetValue(iter, 0);
                foreach (LdapGroup grp in group_list)
                {
                    if (grp.gid == gid)
                    {
                        foreach (string user in grp.member_list)
                        {
                            foreach (LdapUser luser in user_list)
                            {
                                if (luser.uid == user)
                                {
                                    ret_user_list.Add(luser);
                                    break;
                                }
                            }
                        }
                        break;
                    }
                }
            }

            llum.Core core = llum.Core.getCore();

            core.promote_users_wid = new PromoteUserWidget(ret_user_list, "groups");
            core.mw.setCurrentWidget(core.promote_users_wid);
        }
Beispiel #20
0
        protected virtual void OnNameEntryChanged(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            nameEntry.Text = core.strip_special_chars(nameEntry.Text);
            bool result = false;

            if (nameEntry.Text.Length > 0)
            {
                int    test;
                string last_char = "" + nameEntry.Text[nameEntry.Text.Length - 1];
                result = int.TryParse(last_char, out test);
            }
            if (nameEntry.Text.Length > 0)
            {
                if (result)
                {
                    acceptButton.Sensitive = false;
                    msgLabel.Markup        = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Groups cannot end with a numerical character") + "</span>";
                }
                else
                {
                    msgLabel.Text          = "";
                    acceptButton.Sensitive = true;
                }
            }

            if (nameEntry.Text.Length > 0 && descriptionEntry.Text.Length > 0 && !result)
            {
                acceptButton.Sensitive = true;
            }
            else
            {
                acceptButton.Sensitive = false;
            }
        }
Beispiel #21
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            System.Threading.Thread thread = null;
            string msg = "";

            if (deleteUsersCheckbutton.Active)
            {
                msg = Mono.Unix.Catalog.GetString("Deleting groups and users...");
            }
            else
            {
                msg = Mono.Unix.Catalog.GetString("Deleting groups only...");
            }


            llum.Core.getCore().progress_window = new ProgressWindow(msg);
            llum.Core.getCore().progress_window.ShowAll();
            llum.Core.getCore().progress_window.ShowNow();

            System.Threading.ThreadStart progressTStart = delegate
            {
                llum.Core core = llum.Core.getCore();
                System.Collections.Generic.List <string> ret = new System.Collections.Generic.List <string>();
                bool error = false;
                // DELETE GROUPS
                foreach (LdapGroup grp in group_list)
                {
                    string ret_str = core.xmlrpc.delete_group(grp.gid);
                    ret.Add(grp.gid + ":" + ret_str + "\n");
                    if (!ret_str.Contains("true"))
                    {
                        error = true;
                    }
                }


                // DELETE USERS

                if (deleteUsersCheckbutton.Active)
                {
                    Console.WriteLine("[DeleteGroupsWidget] Deleting users...");
                    bool delete_data = this.delete_checkbutton.Active;
                    foreach (LdapUser user in user_list)
                    {
                        string ret_str = "";
                        switch (user.main_group)
                        {
                        case "students":
                            ret_str = core.xmlrpc.delete_student(user.uid, delete_data);
                            break;

                        case "teachers":
                            ret_str = core.xmlrpc.delete_teacher(user.uid, delete_data);
                            break;

                        case "others":
                            ret_str = core.xmlrpc.delete_other(user.uid, delete_data);
                            break;

                        default:
                            break;
                        }

                        ret.Add(user.uid + ":" + ret_str + "\n");
                        if (!ret_str.Contains("true"))
                        {
                            error = true;
                        }
                    }
                }
                else
                {
                    Console.WriteLine("[DeleteGroupsWidget] Users won't be removed");
                }



                Gtk.Application.Invoke(delegate {
                    string msg_label = "";

                    if (error)
                    {
                        msg_label = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Errors were found when deleting groups:") + "\n";
                        foreach (string str in ret)
                        {
                            msg_label += str;
                        }
                        msg_label += "</span>";
                    }
                    else
                    {
                        msg_label = "<b>" + Mono.Unix.Catalog.GetString("Group Deletion successful") + "</b>";
                    }

                    msgLabel.Markup        = msg_label;
                    acceptButton.Sensitive = false;
                    Core.getCore().progress_window.Hide();
                });
            };

            thread = new System.Threading.Thread(progressTStart);
            thread.Start();
        }
Beispiel #22
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            System.Threading.Thread thread = null;
            string msg2 = "";

            msg2 = Mono.Unix.Catalog.GetString("Creating generic users...");

            llum.Core.getCore().progress_window = new ProgressWindow(msg2);
            llum.Core.getCore().progress_window.ShowAll();
            llum.Core.getCore().progress_window.ShowNow();

            System.Threading.ThreadStart progressTStart = delegate
            {
                //ACTIONS

                llum.Core core = llum.Core.getCore();

                Gtk.TreeIter iter;
                templateCombobox.GetActiveIter(out iter);
                string template = (string)store.GetValue(iter, 1);



                int    number       = (int)numberSpinbutton.Value;
                string group_cn     = groupCombobox.ActiveText;
                string generic_name = genericNameEntry.Text;
                string password     = "";
                int    option       = core.xmlrpc.RANDOM_PASSWORDS;
                if (sameAsUserRadiobutton.Active)
                {
                    option = core.xmlrpc.PASS_EQUALS_USER;
                }
                if (setPasswordRadiobutton.Active)
                {
                    option   = core.xmlrpc.SAME_PASSWORD;
                    password = passwordEntry.Text;
                }
                if (randomPasswordradiobutton.Active)
                {
                    option = core.xmlrpc.RANDOM_PASSWORDS;
                }

                System.Collections.Generic.List <string> ret = core.xmlrpc.add_generic_users(template, group_cn, number, generic_name, option, password);

                Gtk.Application.Invoke(delegate {
                    string msg = "\n<b>" + Mono.Unix.Catalog.GetString("The following users were created:") + "\n";

                    foreach (string str in ret)
                    {
                        msg += "[*] " + str + "\n";
                    }

                    msg += "</b>";

                    msgLabel.Markup = msg;

                    Core.getCore().progress_window.Hide();
                });
            };

            thread = new System.Threading.Thread(progressTStart);
            thread.Start();
        }
Beispiel #23
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            System.Threading.Thread thread = null;
            bool error = false;

            llum.Core.getCore().progress_window = new ProgressWindow(Mono.Unix.Catalog.GetString("Deleting users..."));
            llum.Core.getCore().progress_window.ShowAll();
            llum.Core.getCore().progress_window.ShowNow();


            bool delete_data = this.delete_checkbutton.Active;

            //thread2=new System.Threading.Thread(tstart);
            //thread2.Start();

            System.Threading.ThreadStart progressTStart = delegate
            {
                foreach (llum.LdapUser user in to_delete_user_list)
                {
                    //Console.WriteLine("Deleting " + user.uid);
                    llum.Core core = llum.Core.getCore();


                    string ret = "";

                    switch (user.main_group)
                    {
                    case "students":

                        ret = core.xmlrpc.delete_student(user.uid, delete_data);

                        break;

                    case "teachers":

                        ret = core.xmlrpc.delete_teacher(user.uid, delete_data);

                        break;
                    }

                    if (ret != "true")
                    {
                        Gtk.Application.Invoke(delegate {
                            msgLabel.Markup = "<span foreground='red'> Error: " + ret + "</span>";
                            error           = true;
                        });
                        break;
                    }
                }
                if (!error)
                {
                    Gtk.Application.Invoke(delegate {
                        msgLabel.Markup        = "<b>" + Mono.Unix.Catalog.GetString("Deletion successful") + "</b>";
                        acceptButton.Sensitive = false;
                        cancelButton.Label     = Mono.Unix.Catalog.GetString("Go back");
                    });
                }

                Core.getCore().progress_window.Hide();
                //thread2.Abort();
            };

            thread = new System.Threading.Thread(progressTStart);
            thread.Start();
        }
Beispiel #24
0
        protected virtual void OnDoitButtonClicked(object sender, System.EventArgs e)
        {
            System.Threading.Thread thread = null;
            string msg2 = "";

            msg2 = Mono.Unix.Catalog.GetString("Cleaning /home directories...");

            llum.Core.getCore().progress_window = new ProgressWindow(msg2);
            llum.Core.getCore().progress_window.ShowAll();
            llum.Core.getCore().progress_window.ShowNow();

            System.Threading.ThreadStart progressTStart = delegate
            {
                //ACTIONS

                llum.Core core = llum.Core.getCore();

                System.Collections.Generic.List <string> ret = new System.Collections.Generic.List <string>();

                switch (optionCombobox.Active)
                {
                case 0:
                    //ret=core.xmlrpc.delete_students();
                    ret = core.xmlrpc.empty_students();
                    break;

                case 1:
                    //ret=core.xmlrpc.delete_teachers();
                    ret = core.xmlrpc.empty_teachers();
                    break;

                case 2:
                    //ret=core.xmlrpc.delete_all();
                    ret = core.xmlrpc.empty_others();
                    break;

                case 3:
                    ret = core.xmlrpc.empty_all();
                    break;
                }



                Gtk.Application.Invoke(delegate {
                    bool ok = true;

                    foreach (string str in ret)
                    {
                        Console.WriteLine(str);
                        if (!str.Contains(":true"))
                        {
                            ok = false;
                        }
                    }

                    string msg = "";

                    if (ok)
                    {
                        msg = "<b>" + Mono.Unix.Catalog.GetString("Deletion successful") + "</b>";
                    }
                    else
                    {
                        msg = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error when deleting homes") + ":\n";
                        foreach (string str in ret)
                        {
                            msg += str + "\n";
                        }
                        msg += "</span>";
                    }

                    msgLabel.Markup = msg;

                    llum.Core.getCore().progress_window.Hide();
                });
            };

            thread = new System.Threading.Thread(progressTStart);
            thread.Start();
        }
Beispiel #25
0
        protected virtual void OnAcceptButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreeIter iter;
            templateCombobox.GetActiveIter(out iter);
            llum.Core core = llum.Core.getCore();
            string    ret  = "";

            CookComputing.XmlRpc.XmlRpcStruct user_properties = new CookComputing.XmlRpc.XmlRpcStruct();

            user_properties["uid"]          = uidEntry.Text;
            user_properties["cn"]           = nameEntry.Text;
            user_properties["sn"]           = surnameEntry.Text;
            user_properties["userPassword"] = passwordEntry.Text;


            switch ((int)store.GetValue(iter, 1))
            {
            case 0:
                //Students

                if (niaEntry.Text != "")
                {
                    user_properties["x-lliurex-usertype"] = "itaca";
                    user_properties["x-lliurex-nia"]      = niaEntry.Text;
                }
                else
                {
                    user_properties["x-lliurex-usertype"] = "generic";
                }

                ret = core.xmlrpc.add_user("Students", user_properties);

                if (ret.Contains("true:"))
                {
                    msgLabel.Text          = Mono.Unix.Catalog.GetString("User created successfully");
                    acceptButton.Sensitive = false;
                }
                else
                {
                    msgLabel.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Error creating user: "******"</span>";
                }
                break;

            case 1:
                //Teachers



                if (dniEntry.Text != "")
                {
                    user_properties["x-lliurex-usertype"] = "itaca";
                    user_properties["x-lliurex-nif"]      = dniEntry.Text;
                }
                else
                {
                    user_properties["x-lliurex-usertype"] = "generic";
                }

                ret = core.xmlrpc.add_user("Teachers", user_properties);
                if (ret.Contains("true:"))
                {
                    msgLabel.Markup        = "<b>" + Mono.Unix.Catalog.GetString("User created successfully") + "</b>";
                    acceptButton.Sensitive = false;
                }
                else
                {
                    msgLabel.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Error creating user: "******"</span>";
                }

                break;

            case 2:
                //Other
                if (dniEntry.Text != "")
                {
                    user_properties["x-lliurex-nif"] = dniEntry.Text;
                }

                user_properties["x-lliurex-usertype"] = "generic";

                ret = core.xmlrpc.add_user("Others", user_properties);
                if (ret.Contains("true:"))
                {
                    msgLabel.Text          = Mono.Unix.Catalog.GetString("User created successfully");
                    acceptButton.Sensitive = false;
                }
                else
                {
                    msgLabel.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("Error creating user: "******"</span>";
                }

                break;


            default:

                break;
            }

            if (ret.Contains("true:"))
            {
                Gtk.TreeIter iter2;
                groupCombobox.GetActiveIter(out iter2);

                switch ((int)groups_store.GetValue(iter2, 1))
                {
                case 1:
                    try
                    {
                        Console.WriteLine("5");
                        core.xmlrpc.add_to_group((string)user_properties["uid"], (string)groups_store.GetValue(iter2, 0));
                    }
                    catch
                    {
                    }

                    break;

                default:
                    break;
                }
            }
        }
Beispiel #26
0
        protected virtual void OnAddUserButtonClicked(object sender, System.EventArgs e)
        {
            Gtk.TreeIter iter;

            Gtk.TreePath[] path_array = otherUsersTreeview.Selection.GetSelectedRows();

            llum.Core core = llum.Core.getCore();

            System.Collections.Generic.List <string> ret_list  = new System.Collections.Generic.List <string>();
            System.Collections.Generic.List <string> user_list = new System.Collections.Generic.List <string>();

            foreach (Gtk.TreePath path in path_array)
            {
                available_users_store.GetIter(out iter, path);
                bool ok = true;

                foreach (LdapGroup grp in group_list)
                {
                    if ((string)available_users_store.GetValue(iter, 0) == grp.gid)
                    {
                        ok = false;
                    }
                }
                if (ok)
                {
                    if (!opened_group.member_list.Contains((string)available_users_store.GetValue(iter, 0)))
                    {
                        //LDAP OPERATION HERE

                        string return_str = core.xmlrpc.add_to_group((string)available_users_store.GetValue(iter, 0), opened_group.gid);
                        ret_list.Add(return_str);

                        user_list.Add((string)available_users_store.GetValue(iter, 0));

                        /////////////////////
                        if (return_str == "true")
                        {
                            opened_group.member_list.Add((string)available_users_store.GetValue(iter, 0));
                        }
                    }
                }
            }
            populate_others_treeview();
            populate_users_treeview();

            string err         = "";
            bool   error_found = false;
            int    count       = 0;

            foreach (string str in ret_list)
            {
                if (!str.Contains("true"))
                {
                    error_found = true;


                    int    count2 = 0;
                    string user   = "";
                    foreach (string str2 in user_list)
                    {
                        if (count2 == count)
                        {
                            user = str2;
                            break;
                        }
                        count2++;
                    }
                    err += user + ": " + str + "\n";
                }
                count++;
            }

            if (!error_found)
            {
                msgLabel.Markup = "<b>" + Mono.Unix.Catalog.GetString("Users were added to this group successfully") + "</b>";
            }
            else
            {
                string msg = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("The following errors were returned: ") + err + "</span>";

                msgLabel.Markup = msg;
            }
        }
Beispiel #27
0
        public EditGroupWidget(LdapGroup grp)
        {
            this.Build();

            applyPasswordButton.Sensitive = false;
            opened_group = grp;

            llum.Core core = llum.Core.getCore();
            gidLabel.Text         = grp.gid;
            gidNumberLabel.Text   = grp.gid_number;
            descriptionEntry.Text = grp.description;



            group_list = core.xmlrpc.get_available_groups_info();

            System.Collections.Generic.List <LdapUser> all_list = core.xmlrpc.light_get_user_list();

            System.Collections.Generic.List <string> usr_name = new System.Collections.Generic.List <string>();
            foreach (LdapUser u in all_list)
            {
                usr_name.Add(u.uid);
            }


            LdapGroup all_grp = new LdapGroup("[[ALL]]", "1", "1", usr_name, "");

            group_list.Insert(0, all_grp);
            combo_store = new Gtk.ListStore(typeof(string), typeof(string));



            combo_store.AppendValues(Mono.Unix.Catalog.GetString("All"), "%All%");



            foreach (LdapGroup tmp_grp in group_list)
            {
                if (tmp_grp.gid_number != grp.gid_number)
                {
                    combo_store.AppendValues(tmp_grp.gid, tmp_grp.gid_number);
                }
            }



            Gtk.TreeViewColumn users_in_group_column = new Gtk.TreeViewColumn();
            users_in_group_column.Title = Mono.Unix.Catalog.GetString("Users in this group");
            Gtk.CellRendererText users_in_group_cell = new Gtk.CellRendererText();
            users_in_group_column.PackStart(users_in_group_cell, true);
            users_in_group_column.AddAttribute(users_in_group_cell, "text", 0);
            usersInGroupTreeview.AppendColumn(users_in_group_column);
            users_in_group_store       = new Gtk.TreeStore(typeof(string));
            usersInGroupTreeview.Model = users_in_group_store;



            usersInGroupTreeview.Selection.Mode = Gtk.SelectionMode.Multiple;


            populate_users_treeview();

            Gtk.TreeViewColumn available_users_column = new Gtk.TreeViewColumn();
            available_users_column.Title = Mono.Unix.Catalog.GetString("Available users");
            Gtk.CellRendererText available_users_cell = new Gtk.CellRendererText();
            available_users_column.PackStart(available_users_cell, true);
            available_users_column.AddAttribute(available_users_cell, "text", 0);
            otherUsersTreeview.AppendColumn(available_users_column);

            available_users_store    = new Gtk.TreeStore(typeof(string));
            otherUsersTreeview.Model = available_users_store;



            otherUsersTreeview.Selection.Mode = Gtk.SelectionMode.Multiple;

            populate_others_treeview();
        }
Beispiel #28
0
        public EditUser(LdapUser user)
        {
            this.Build();



            this.user = user;

            if ((llum.Core.getCore().user_group != "admin") && (llum.Core.getCore().user_group != "promoted-teacher"))
            {
                //expander1.Sensitive=false;
                nameEntry.Sensitive         = false;
                surnameEntry.Sensitive      = false;
                undoButton.Sensitive        = false;
                applyButton.Sensitive       = false;
                addGroupButton.Sensitive    = false;
                removeGroupButton.Sensitive = false;
            }

            if (this.user.main_group == "admin")
            {
                expander1.Sensitive = false;
            }


            uidLabel.Text    = user.uid;
            uidNumLabel.Text = user.uidn;
            groupLabel.Text  = user.main_group;

            nameEntry.Text    = user.name;
            surnameEntry.Text = user.surname;
            //changePasswordButton.Sensitive=false;


            niaEntry.Text = user.nia;
            dniEntry.Text = user.dni;

            llum.Core core = llum.Core.getCore();

            switch (user.main_group)
            {
            case "students":
                dniEntry.Sensitive = false;

                if (niaEntry.Text != "" && (core.user_group != "admin" || core.user_group != "promoted-teacher"))
                {
                    niaButton.Hide();
                    niaEntry.Sensitive = false;
                }

                break;

            case "teachers":
                niaEntry.Sensitive = false;
                if (dniEntry.Text != "" && (core.user_group != "admin" || core.user_group != "promoted-teacher"))
                {
                    niaButton.Hide();
                    dniEntry.Sensitive = false;
                }

                break;

            default:
                niaButton.Sensitive = false;
                niaEntry.Sensitive  = false;
                dniEntry.Sensitive  = false;
                niaButton.Hide();
                break;
            }


            belongTreeview.Selection.Mode = Gtk.SelectionMode.Multiple;
            belong_store = new Gtk.TreeStore(typeof(string));
            Gtk.TreeViewColumn belong_column = new Gtk.TreeViewColumn();
            belong_column.Title = Mono.Unix.Catalog.GetString("Belongs to");
            Gtk.CellRendererText cell = new Gtk.CellRendererText();
            belong_column.PackStart(cell, true);
            belong_column.AddAttribute(cell, "text", 0);
            belongTreeview.AppendColumn(belong_column);
            //Console.WriteLine(user.groups.Length);

            belongTreeview.Model = belong_store;
            belongTreeview.ShowAll();

            availableTreeview.Selection.Mode = Gtk.SelectionMode.Multiple;
            available_store = new Gtk.TreeStore(typeof(string));
            Gtk.TreeViewColumn available_column = new Gtk.TreeViewColumn();
            available_column.Title = Mono.Unix.Catalog.GetString("Available groups");
            Gtk.CellRendererText available_cell = new Gtk.CellRendererText();
            available_column.PackStart(available_cell, true);
            available_column.AddAttribute(available_cell, "text", 0);
            availableTreeview.AppendColumn(available_column);
            availableTreeview.Model = available_store;
            availableTreeview.ShowAll();

            //llum.Core core=llum.Core.get


            populateTrees();
        }
Beispiel #29
0
        protected void OnFixAclsButtonClicked(object sender, System.EventArgs e)
        {
            string msg2 = Mono.Unix.Catalog.GetString("Fixing /net ACLs...");

            llum.Core core = llum.Core.getCore();
            core.xmlrpc.restore_acls_via_thread();

            core.progress_window = new ProgressWindow(msg2);
            core.progress_window.ShowAll();
            core.progress_window.ShowNow();

            int status;

            System.Threading.ThreadStart progressTStart = delegate
            {
                status = core.xmlrpc.is_acl_thread_alive();

                while (status == 0)
                {
                    Thread.Sleep(10000);
                    status = core.xmlrpc.is_acl_thread_alive();
                }


                Gtk.Application.Invoke(delegate {
                    if (status == 1)
                    {
                        msg_label.Markup = "<b>" + Mono.Unix.Catalog.GetString("ACLs restored") + "</b>";
                    }
                    else
                    {
                        msg_label.Markup = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("ACLs restoration failed") + "</span>";
                    }

                    llum.Core.getCore().progress_window.Hide();
                });
            };



            /*
             *
             * llum.Core.getCore().progress_window=new ProgressWindow(msg2);
             * llum.Core.getCore().progress_window.ShowAll();
             * llum.Core.getCore().progress_window.ShowNow();
             *
             *
             *
             *
             * System.Threading.ThreadStart progressTStart = delegate
             * {
             *      bool ok=true;
             *      try
             *      {
             *              //llum.Core.getCore().xmlrpc.regenerate_net_files();
             *
             *              llum.Core.getCore().xmlrpc.restore_acls();
             *
             *
             *      }
             *      catch(Exception acl_ex)
             *      {
             *              ok=false;
             *              Console.WriteLine(acl_ex);
             *      }
             *
             *      Gtk.Application.Invoke(delegate{
             *
             *
             *              if(ok)
             *                      msg_label.Markup="<b>"+Mono.Unix.Catalog.GetString("ACLs restored")+"</b>";
             *              else
             *                      msg_label.Markup="<span foreground='red'>" + Mono.Unix.Catalog.GetString("ACLs restoration failed") + "</span>";
             *
             *              llum.Core.getCore().progress_window.Hide();
             *
             *              });
             *
             *
             *
             * };
             *
             */



            System.Threading.Thread thread;
            thread = new System.Threading.Thread(progressTStart);
            thread.Start();
        }
Beispiel #30
0
        protected virtual void OnConnectButtonClicked(object sender, System.EventArgs e)
        {
            llum.Core core = llum.Core.getCore();

            string[] user_info = { userEntry.Text, passwordEntry.Text };


            try
            {
                string ret;
                CookComputing.XmlRpc.XmlRpcStruct new_ret = core.xmlrpc.client.login(user_info, "Golem", user_info);
                if (Convert.ToInt32(new_ret["status"]) == 0)
                {
                    ret = Convert.ToString(new_ret["return"]);
                }
                else
                {
                    ret = "false";
                }

                if (ret.Contains("true"))
                {
                    core.mw.statusText = Mono.Unix.Catalog.GetString("Connected to LDAP as: ") + userEntry.Text;
                    //core.function_list=core.xmlrpc.client.get_students_function_list(user_info,"Golem");
                    //Console.WriteLine(core.xmlrpc.client.get_students_function_list(user_info,"Golem"));
                    string[] tmp = ret.Split(' ');                   // tmp[1] contains group type [ students, teachers, admin, others ]
                    CookComputing.XmlRpc.XmlRpcStruct function_response;
                    core.user_info = user_info;
                    switch (tmp[1])
                    {
                    case "admin":
                        //function_response=core.xmlrpc.client.get_admin_function_list(user_info,"Golem");
                        //Console.WriteLine(function_response["return"]);
                        //foreach(string str in (string[])function_response["return"])
                        //	Console.WriteLine(str);

                        //core.function_list=()function_response["return"];
                        core.set_function_list("admin");
                        core.user_group = "admin";
                        break;

                    case "promoted-teacher":
                        //core.function_list=core.xmlrpc.client.get_teachers_function_list(user_info,"Golem");
                        core.set_function_list("admin");
                        core.user_group = "promoted-teacher";
                        break;

                    case "students":
                        //function_response=core.xmlrpc.client.get_students_function_list(user_info,"Golem");
                        //core.function_list=function_response["return"];
                        core.set_function_list("students");
                        core.user_group = "students";
                        break;

                    case "teachers":
                        //core.function_list=core.xmlrpc.client.get_teachers_function_list(user_info,"Golem");
                        core.set_function_list("teachers");
                        core.user_group = "teachers";
                        break;

                    case "others":
                        //core.function_list=core.xmlrpc.client.get_others_function_list(user_info,"Golem");
                        core.set_function_list("others");
                        core.user_group = "others";
                        break;

                    default:

                        break;
                    }

                    /*
                     * Console.WriteLine("[LoginWidget] Available functions:");
                     * foreach(string str in core.function_list)
                     * {
                     *      Console.WriteLine("\t*Function " + str);
                     * }
                     * Console.WriteLine();
                     */
                }
                else
                {
                    core.mw.statusText = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("User and/or password are incorrect.") + "\n" + "RET: " + ret + "</span>";
                }
            }
            catch (Exception excp)
            {
                Console.WriteLine(core.server);
                Console.WriteLine(excp);
                core.mw.statusText = "<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error trying to connect to the n4d(XMLRPC) server") + "</span>";
            }
        }