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

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

adding project files

File size: 32.0 KB
Line 
1using System;
2using System.Net;
3using System.Text;
4using Newtonsoft.Json;
5
6
7using CookComputing.XmlRpc;
8
9
10namespace llum
11{
12
13       
14       
15       
16       
17        public interface Client : IXmlRpcProxy
18        {
19                [XmlRpcMethod]
20                string login(string[] user_info, string class_name,string[] user_pass);
21                [XmlRpcMethod]
22                string add_user(string[]user_info,string class_name,string plantille, CookComputing.XmlRpc.XmlRpcStruct user_properties,bool generic);
23                [XmlRpcMethod]
24                string exist_home_or_create(string[]user_info,string class_name, CookComputing.XmlRpc.XmlRpcStruct user_properties);
25                [XmlRpcMethod]
26                bool restore_groups_folders(string[]user_info,string class_name);
27                [XmlRpcMethod]
28                System.Array restore_acls(string[]user_info,string class_name);
29                [XmlRpcMethod]
30                bool restore_acls_via_thread(string[]user_info,string class_name);
31                [XmlRpcMethod]
32                bool is_acl_thread_alive(string[]user_info,string class_name);
33                [XmlRpcMethod]
34                string[] get_students_function_list(string[]user_info,string class_name);
35                [XmlRpcMethod]
36                string[] get_teachers_function_list(string[]user_info,string class_name);
37                [XmlRpcMethod]
38                string[] get_admin_function_list(string[]user_info,string class_name);
39                [XmlRpcMethod]
40                string[] get_others_function_list(string[]user_info,string class_name);
41                [XmlRpcMethod]
42                string change_own_password(string[] user_info, string class_name, string[] user_info2, string new_password);
43                [XmlRpcMethod]
44                System.Array get_student_list(string[] user_info, string class_name);
45                [XmlRpcMethod]
46                System.Array get_user_list(string[] user_info, string class_name,string filter);
47                [XmlRpcMethod]
48                System.Array get_available_groups(string[] user_info, string class_name);
49                [XmlRpcMethod]
50                string add_to_group(string[] user_info, string class_name, string uid, string group_name);
51                [XmlRpcMethod]
52                string remove_from_group(string[] user_info, string class_name, string uid, string group_name);
53                [XmlRpcMethod]
54                string change_student_personal_data(string[] user_info, string class_name, string uid, string name, string surname);
55                [XmlRpcMethod]
56                string change_password(string[] user_info,string class_name,string path, string password,string uid, string cn, string sn, bool auto);
57                [XmlRpcMethod]
58                string change_student_password(string[] user_info,string class_name,string uid, string password);
59                [XmlRpcMethod]
60                string delete_student(string[] user_info,string class_name, string uid, bool delete_data);
61                [XmlRpcMethod]
62                string delete_teacher(string[] user_info,string class_name, string uid, bool delete_data);
63                [XmlRpcMethod]
64                string delete_other(string[] user_info, string class_name, string uid, bool delete_data);
65                [XmlRpcMethod]
66                string add_teacher_to_admins(string[] user_info,string class_name,string uid);
67                [XmlRpcMethod]
68                string change_group_description(string[] user_info,string class_name,string gid, string description);
69                [XmlRpcMethod]
70                string del_teacher_from_admins(string[] user_info, string class_name,string uid);
71                [XmlRpcMethod]
72                string delete_group(string[] user_info,string class_name,string gid);
73                [XmlRpcMethod]
74                System.Array light_get_user_list(string[] user_info,string class_name);
75                [XmlRpcMethod]
76                string add_group(string[] user_info, string class_name,CookComputing.XmlRpc.XmlRpcStruct dic);
77                [XmlRpcMethod]
78                System.Array add_generic_users(string[] user_info,string class_name, string template, string group_cn,int number, string generic_name, int pwd_generation_type, string pwd);
79                [XmlRpcMethod]
80                System.Array get_students_passwords(string[] user_info, string class_name);
81                [XmlRpcMethod]
82                System.Array get_all_passwords(string[] user_info, string class_name);
83                [XmlRpcMethod]
84                System.Array get_teachers_passwords(string[] user_info, string class_name);
85                [XmlRpcMethod]
86                string test_uid(string[] user_info, string class_name, CookComputing.XmlRpc.XmlRpcStruct dic);
87                [XmlRpcMethod]
88                string[] delete_students(string[] user_info, string class_name, bool delete_data);
89                [XmlRpcMethod]
90                string[] delete_teachers(string[] user_info, string class_name, bool delete_data);
91                [XmlRpcMethod]
92                string[] delete_all(string[] user_info, string class_name, bool delete_data);
93                [XmlRpcMethod]
94                string generic_student_to_itaca(string[] user_info,string class_name,string uid, string nia);
95                [XmlRpcMethod]
96                string generic_teacher_to_itaca(string[] user_info,string class_name,string uid, string nif);
97                [XmlRpcMethod]
98                int send_file_to_server(string[] user_info, string class_name, string base64data, string server_file_path );
99                [XmlRpcMethod]
100                string send_xml_to_server(string[] user_info, string class_name, string base64data, string file_name, string passwd);
101                [XmlRpcMethod]
102                string[] gescen_groups(string[] user_info, string class_name);
103                [XmlRpcMethod]
104                string gescen_partial(string[] user_info,string class_name,string[] user_list);
105                [XmlRpcMethod] 
106                CookComputing.XmlRpc.XmlRpcStruct gescen_full(string[] user_info,string class_name);
107                [XmlRpcMethod]
108                string[] empty_students(string[] user_info,string class_name);
109                [XmlRpcMethod]
110                string[] empty_teachers(string[] user_info,string class_name);
111                [XmlRpcMethod]
112                string[] empty_others(string[] user_info,string class_name);
113                [XmlRpcMethod]
114                string[] empty_all(string[] user_info,string class_name);
115                [XmlRpcMethod]
116                int freeze_user(string[] user_info,string class_name,string[] uid);
117                [XmlRpcMethod]
118                int unfreeze_user(string[] user_info,string class_name,string[] uid);
119                [XmlRpcMethod]
120                int freeze_group(string[] user_info,string class_name,string[] cn);
121                [XmlRpcMethod]
122                int unfreeze_group(string[] user_info,string class_name,string[] cn);
123                [XmlRpcMethod]
124                string[] get_frozen_groups(string[] user_info,string class_name);
125                [XmlRpcMethod]
126                string[] get_frozen_users(string[] user_info, string class_name);
127                [XmlRpcMethod]
128                string get_methods();
129                [XmlRpcMethod]
130                string get_variable(string user_info,string class_name,string variable_name);
131                [XmlRpcMethod]
132                System.Array export_llum_info(string[] user_info,string class_name);
133                [XmlRpcMethod]
134                System.Array import_llum_info(string[] user_info,string class_name,CookComputing.XmlRpc.XmlRpcStruct dic);
135                [XmlRpcMethod]
136                bool is_roadmin_available(string[] user_info,string class_name);
137        }       
138       
139
140        public class XmlrpcClient
141        {
142               
143                public Client client;
144
145                public int RANDOM_PASSWORDS=0;
146                public int SAME_PASSWORD=1;
147                public int PASS_EQUALS_USER=2;
148               
149                private string[] get_groups(CookComputing.XmlRpc.XmlRpcStruct item)
150                {
151                        Object[] groups_object=(Object[])item["groups"];
152                        string[] groups=new string[groups_object.Length];
153                        int i=0;
154                        foreach(Object a2 in groups_object)
155                        {
156                                groups[i]=Convert.ToString(a2);
157                               
158                                i++;
159                        }
160                       
161                        return groups;
162                }               
163               
164               
165                public XmlrpcClient ()
166                {
167
168                       
169                        try
170                        {
171                                ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
172                                client=XmlRpcProxyGen.Create<Client>();
173                                client.Url=llum.Core.getCore().server;
174                                //Core.getCore().mw.statusText=Mono.Unix.Catalog.GetString("Conexión al servidor con éxito");
175                        }
176                        catch
177                        {
178                                //Core.getCore().mw.statusText=Mono.Unix.Catalog.GetString("Conexión al servidor fallida");
179                        }                       
180                       
181                }
182               
183                public string get_master_ip()
184                {
185                        try
186                        {
187                                return client.get_variable("","VariablesManager","MASTER_SERVER_IP");
188                        }
189                        catch
190                        {
191                                //Console.WriteLine(e);
192                                return null;   
193                        }
194                       
195                }
196               
197                public System.Collections.Generic.List<string> get_available_groups()
198                {
199                        llum.Core core=llum.Core.getCore();
200                        System.Array groups=client.get_available_groups(core.user_info,"Golem");
201                        System.Collections.Generic.List<string> group_list=new System.Collections.Generic.List<string>();
202                        foreach(CookComputing.XmlRpc.XmlRpcStruct item in groups)
203                                group_list.Add(((string[])item["cn"])[0]);
204               
205                        return group_list;
206                       
207                       
208                }
209               
210                public System.Collections.Generic.List<llum.LdapGroup> get_available_groups_info()
211                {
212                        llum.Core core=llum.Core.getCore();
213                        System.Array groups=client.get_available_groups(core.user_info,"Golem");
214                       
215                        System.Collections.Generic.List<llum.LdapGroup> group_list=new System.Collections.Generic.List<llum.LdapGroup>();
216                       
217                        llum.LdapGroup group_;
218                       
219                        foreach(CookComputing.XmlRpc.XmlRpcStruct item in groups)
220                        {
221                                /*
222                               
223                                        public string gid;
224                                        public string gid_number;
225                                        public string description;
226                                        public System.Collections.Generic.List<string> member_list;
227                                        public string path;                             
228                                */
229
230                                string gid=     ((string[])item["cn"])[0];
231                                string gid_number=((string[])item["gidNumber"])[0];
232                                string description=((string[])item["description"])[0];
233                                System.Collections.Generic.List<string> member_list=new System.Collections.Generic.List<string>();
234                               
235                                if(item.ContainsKey("memberUid"))
236                                        foreach(string str in (string[])item["memberUid"])
237                                                member_list.Add(str);   
238                               
239                                string path=(string)item["path"];
240                                group_=new LdapGroup(gid,gid_number,description,member_list,path);
241                                group_list.Add(group_);
242                               
243                        }
244                       
245                        return group_list;
246                       
247                }
248               
249               
250                public string add_to_group(string user, string group_name)
251                {
252                        llum.Core core=llum.Core.getCore();
253                       
254                        return client.add_to_group(core.user_info,"Golem",user,group_name);
255                }
256
257                public string remove_from_group(string user,string group_name)
258                {
259                        llum.Core core=llum.Core.getCore();
260                       
261                        return client.remove_from_group(core.user_info,"Golem",user,group_name);
262                }
263               
264                public string change_student_personal_data(string user, string name, string surname)
265                {
266                        llum.Core core=llum.Core.getCore();
267                       
268                        return client.change_student_personal_data(core.user_info,"Golem",user,name,surname);
269                }
270               
271                public string change_student_password(string uid, string password)
272                {
273                        llum.Core core=llum.Core.getCore();
274                        return client.change_student_password(core.user_info,"Golem",uid,password);
275                }
276               
277                public string change_password(string path, string password,bool auto)
278                {
279                        llum.Core core=llum.Core.getCore();
280                        return client.change_password(core.user_info,"Golem",path,password,"","","",auto);
281                }
282               
283                public string change_teacher_password(string path, string password,string uid, string cn, string sn, bool auto)
284                {
285                        llum.Core core=llum.Core.getCore();
286                        return client.change_password(core.user_info,"Golem",path,password,uid,cn,sn,auto);
287                }
288               
289                public string delete_student(string uid, bool delete_data)
290                {
291                        llum.Core core=llum.Core.getCore();
292                        string ret="";
293                        try
294                        {
295                                ret=client.delete_student(core.user_info,"Golem",uid, delete_data);
296                        }
297                        catch
298                        {
299                                ret="XMLRPC ERROR";
300                        }
301                        return ret;
302                }
303               
304                public string delete_other(string uid, bool delete_data)
305                {
306                        llum.Core core=llum.Core.getCore();
307                        string ret="";
308                        try
309                        {
310                                ret=client.delete_other(core.user_info,"Golem",uid, delete_data);
311                        }
312                        catch
313                        {
314                                ret="XMLRPC ERROR";
315                        }
316                        return ret;
317                }
318
319                public string delete_teacher(string uid, bool delete_data)
320                {
321                        llum.Core core=llum.Core.getCore();
322                        string ret="";
323                        try
324                        {
325                                ret=client.delete_teacher(core.user_info,"Golem",uid, delete_data);
326                        }
327                        catch
328                        {
329                                ret="XMLRPC ERROR";     
330                        }
331                        return ret;
332                }               
333               
334                public string add_user(string plantille, CookComputing.XmlRpc.XmlRpcStruct user_properties)
335                {
336                        //tring add_user(string[]user_info,string class_name,string plantille,string uid,string name,string surname,string password);                   
337                        llum.Core core=llum.Core.getCore();
338                        string ret="";
339                        try
340                        {
341                                ret=client.add_user(core.user_info,"Golem",plantille,user_properties,false);   
342                        }
343                        catch(Exception e)
344                        {
345                                Console.WriteLine(e);
346                                ret="XMLRPC ERROR";     
347                        }
348                        return ret;
349                       
350                       
351                }
352                public string add_teacher_to_admins(string uid)
353                {
354                        llum.Core core=llum.Core.getCore();
355                        string ret="";
356                        try
357                        {
358                                ret=client.add_teacher_to_admins(core.user_info,"Golem",uid);
359                        }
360                        catch
361                        {
362                                Console.WriteLine(ret);
363                                ret="XMLRPC ERROR";
364                        }
365                       
366                        return ret;
367                }
368               
369                public string del_teacher_from_admins(string uid)
370                {
371                        llum.Core core=llum.Core.getCore();
372                        string ret="";
373                        try
374                        {
375                                ret=client.del_teacher_from_admins(core.user_info,"Golem",uid);
376                        }
377                        catch
378                        {
379                                ret="XMLRPC ERROR";
380                        }
381                        return ret;
382                }
383               
384                public string change_group_description(string gid, string description)
385                {
386                        llum.Core core=llum.Core.getCore();
387                        return client.change_group_description(core.user_info,"Golem",gid,description); 
388                }
389               
390                public System.Collections.Generic.List<LdapUser>get_user_list()
391                {
392                        llum.Core core=llum.Core.getCore();
393
394                        try
395                        {
396                                System.Array array=client.get_user_list(core.user_info,"Golem","*");
397                               
398                                System.Collections.Generic.List<LdapUser> user_list=new System.Collections.Generic.List<LdapUser>();
399                               
400                                foreach(CookComputing.XmlRpc.XmlRpcStruct item in array)
401                                {
402
403                                       
404                                        string user_type="";
405                                        string nia="";
406                                        string dni="";
407                                       
408       
409                                        if(item.ContainsKey("x-lliurex-usertype"))
410                                        {
411                                                user_type=Convert.ToString(item["x-lliurex-usertype"]);
412                                               
413                                        }
414                                       
415                                        if(item.ContainsKey("x-lliurex-nia"))
416                                        {
417                                                nia=Convert.ToString(item["x-lliurex-nia"]);
418                                               
419                                        }
420                                       
421                                        if(item.ContainsKey("x-lliurex-nif"))
422                                        {
423                                                dni=Convert.ToString(item["x-lliurex-nif"]);
424                                               
425                                        }
426                                       
427                               
428                                       
429                                        LdapUser user=new LdapUser(
430                                                                   Convert.ToString(item["path"]),
431                                                                   Convert.ToString(item["uid"]),
432                                                                   Convert.ToString(item["uidNumber"]),
433                                                                   Convert.ToString(item["cn"]),
434                                                                   Convert.ToString(item["sn"]),
435                                                                   get_groups(item),
436                                                                   Convert.ToString(item["profile"]),
437                                                                   user_type,
438                                                                   nia,
439                                                                   dni,
440                                                                   Convert.ToBoolean(item["is_admin"]));
441                                       
442                                       
443                                                                   
444                                         user_list.Add(user);
445                 
446                                       
447                                       
448                                }
449                               
450                               
451                               
452                                user_list.Sort(LdapUser.UserSorter);
453                               
454                                return user_list;
455                        }
456                        catch(Exception e)
457                        {
458                                Console.WriteLine (e);
459                                return null;   
460                        }
461                       
462                }
463               
464                public string delete_group(string gid)
465                {
466                        llum.Core core=llum.Core.getCore();
467                       
468                        string ret="";
469                       
470                        try
471                        {
472                                ret=client.delete_group(core.user_info,"Golem",gid);
473                        }
474                        catch
475                        {
476                                ret="XMLRPC ERROR";
477                        }
478                        return ret;
479                }
480               
481                public System.Collections.Generic.List<LdapUser>  light_get_user_list()
482                {
483                        llum.Core core=llum.Core.getCore();
484                        System.Array array_list=client.light_get_user_list(core.user_info,"Golem");
485                        System.Collections.Generic.List<LdapUser>users=new System.Collections.Generic.List<llum.LdapUser>();
486                       
487                        //LdapUser (string path,string uid, string uidn, string name, string surname, string[] groups,string profile)
488                        //((path,properties_dic["uid"][0],properties_dic["uidNumber"][0],properties_dic["cn"][0],properties_dic["sn"][0],profile))
489                        foreach(string[] array in array_list)
490                        {
491                                LdapUser user=new LdapUser(array[0],array[1],array[2],array[3],array[4],null,array[5],"","","",false);
492                                users.Add(user);
493                        }
494                       
495                        users.Sort();
496                       
497                        return users;                           
498                       
499                }
500
501                public System.Collections.Generic.List<string> add_generic_users(string template, string group_cn, int number, string generic_name, int pwd_generation_type, string pwd)
502                {
503                        llum.Core core=llum.Core.getCore();
504                        System.Array array=client.add_generic_users(core.user_info,"Golem",template,group_cn, number, generic_name, pwd_generation_type, pwd);
505                        System.Collections.Generic.List<string> ret=new System.Collections.Generic.List<string>();
506
507                        foreach(CookComputing.XmlRpc.XmlRpcStruct item in array)
508                        {
509                                        if(item.ContainsKey("ERROR"))
510                                        {
511                                               
512                                                ret.Add((string)item["ERROR"]);
513                                               
514                                        }
515                                        else
516                                                ret.Add((string)item["uid"]);
517                        }
518                       
519                        return ret;
520                       
521                }
522               
523               
524                public string add_group(CookComputing.XmlRpc.XmlRpcStruct dic)
525                {
526                        llum.Core core=llum.Core.getCore();
527                        string ret="";
528                       
529                        try
530                        {
531                                ret=client.add_group(core.user_info,"Golem",dic);
532                        }
533                        catch
534                        {
535                                ret="XMLRPC ERROR";     
536                        }
537                       
538                        return ret;
539                }
540               
541                public System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> get_all_passwords()
542                {
543               
544                        llum.Core core=llum.Core.getCore();
545                       
546                        System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> ret=new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();
547                       
548                        try
549                        {
550                       
551                        System.Array res=client.get_all_passwords(core.user_info,"Golem");
552                       
553                        foreach(CookComputing.XmlRpc.XmlRpcStruct item in res)
554                        {
555                                ret.Add(item); 
556                        }
557                       
558                        return ret;
559                               
560                        }
561                        catch
562                        {
563                                return new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();       
564                        }
565                       
566                }
567               
568                public System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> get_students_passwords()
569                {
570                        //System.Collections.Generic.Dictionary<string,string> ret_dic=new System.Collections.Generic.Dictionary<string, string>();
571                        llum.Core core=llum.Core.getCore();
572                        try
573                        {
574                                System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> ret=new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();
575                               
576                                System.Array res=client.get_students_passwords(core.user_info,"Golem");
577                               
578                                foreach(CookComputing.XmlRpc.XmlRpcStruct item in res)
579                                {
580                                        ret.Add(item);
581                                       
582                                }
583                               
584                                return ret;
585                        }
586                        catch
587                        {
588                                return new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();       
589                        }
590                       
591                }
592               
593                public System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> get_teachers_passwords()
594                {
595                        llum.Core core=llum.Core.getCore();
596                        try
597                        {
598                                System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct> ret=new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();
599                               
600                                System.Array res=client.get_teachers_passwords(core.user_info,"Golem");
601                               
602                                foreach(CookComputing.XmlRpc.XmlRpcStruct item in res)
603                                {
604                                        ret.Add(item);
605                                       
606                                }
607                               
608                                return ret;
609                        }
610                        catch
611                        {
612                                return new System.Collections.Generic.List<CookComputing.XmlRpc.XmlRpcStruct>();       
613                        }
614                }
615               
616                public System.Collections.Generic.List<string> delete_students(bool delete_data)
617                {
618                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
619                        llum.Core core=llum.Core.getCore();
620                        string[] ret_array=client.delete_students(core.user_info,"Golem",delete_data);
621                        foreach(string str in ret_array)
622                        {
623                                ret_list.Add(str);     
624                        }
625                       
626                        return ret_list;
627                       
628                }
629
630                public System.Collections.Generic.List<string> delete_teachers(bool delete_data)
631                {
632                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
633                        llum.Core core=llum.Core.getCore();
634                        string[] ret_array=client.delete_teachers(core.user_info,"Golem",delete_data);
635                        foreach(string str in ret_array)
636                        {
637                                ret_list.Add(str);     
638                        }
639                       
640                        return ret_list;
641                       
642                }               
643               
644                public System.Collections.Generic.List<string> delete_all(bool delete_data)
645                {
646                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
647                        llum.Core core=llum.Core.getCore();
648                        string[] ret_array=client.delete_all(core.user_info,"Golem",delete_data);
649                        foreach(string str in ret_array)
650                        {
651                                ret_list.Add(str);     
652                        }
653                       
654                        return ret_list;
655                       
656                }
657               
658                public string generic_student_to_itaca(string uid,string nia)
659                {
660                        llum.Core core=llum.Core.getCore();
661                       
662                        string ret="";
663                        try
664                        {
665                                ret=client.generic_student_to_itaca(core.user_info,"Golem",uid,nia);
666                        }
667                        catch
668                        {
669                                ret="XMLRPC ERROR";     
670                        }
671                       
672                        return ret;
673                }
674               
675                public string generic_teacher_to_itaca(string uid,string nif)
676                {
677                        llum.Core core=llum.Core.getCore();
678                       
679                        string ret="";
680                        try
681                        {
682                                ret=client.generic_teacher_to_itaca(core.user_info,"Golem",uid,nif);
683                        }
684                        catch
685                        {
686                                ret="XMLRPC ERROR";
687                        }
688                       
689                        return ret;
690                }
691               
692                public bool send_file_to_server(string local_path, string remote_path)
693                {
694                        llum.Core core=llum.Core.getCore();
695                       
696                        if(System.IO.File.Exists(local_path))
697                        {
698                                string data64=Convert.ToBase64String(System.IO.File.ReadAllBytes(local_path));
699                                int ret=client.send_file_to_server(core.user_info,"FileOperations",data64,remote_path);
700                                if (ret==1)
701                                {
702                                        data64=null;
703                                        return true;
704                                }
705                                else
706                                {
707                                        data64=null;
708                                        return false;
709                                }
710                        }
711                        else 
712                                return false;
713                        //Convert.ToBase64String(Encoding.UTF8.GetBytes(new string(nameEntry.Text.ToCharArray()))),Convert.ToBase64String(Encoding.UTF8.GetBytes(new string(surnameEntry.Text.ToCharArray()))));
714
715                       
716                }
717               
718                public string send_xml_to_server(string local_file_path,string passwd)
719                {
720                        llum.Core core=llum.Core.getCore();
721                       
722                        if(System.IO.File.Exists(local_file_path))
723                        {
724                                string data64=Convert.ToBase64String(System.IO.File.ReadAllBytes(local_file_path));
725                                string[] list=local_file_path.Split('/');
726                                string file_name=list[list.Length-1];
727                                try
728                                {
729                                        string ret=client.send_xml_to_server(core.user_info,"Golem",data64,file_name,passwd);
730                                        data64=null;
731                                        switch(ret)
732                                        {
733                                                case "true":
734                                                       
735                                                        return "true";
736                                               
737                                               
738                                                case "false:xml_error":
739                                               
740                                                        return Mono.Unix.Catalog.GetString("The XML file generated by Gescen/Itaca contains errors. Importation failed");
741                                               
742                                                case "false:send_error":
743                                               
744                                                        return Mono.Unix.Catalog.GetString("The XML file could not be sent to the server.");
745                                               
746                                                case "false:xml_encrypted":
747                                               
748                                                        return "false:encrypted:" + Mono.Unix.Catalog.GetString ("XML is encrypted. You need to enter a password to decrypt the file.");
749                                               
750                                                case "false:invalid_xml":
751                                               
752                                                        return Mono.Unix.Catalog.GetString("It's not a valid XML file.");
753                                               
754                                                case "false:xml_bad_password":
755                                               
756                                                        return Mono.Unix.Catalog.GetString ("Invalid ITACA password");
757                                               
758                                                default:
759                                               
760                                                        return Mono.Unix.Catalog.GetString("Unknown error");
761                                               
762                                        }
763                                       
764
765                                }
766                                catch(Exception e)
767                                {
768                                        Console.WriteLine (e);
769                                        return Mono.Unix.Catalog.GetString("XML parsing error.");       
770                                }
771                               
772                        }
773                        else 
774                                return Mono.Unix.Catalog.GetString("The XML file doesn't exist");
775                               
776                }
777               
778                public System.Collections.Generic.List<string> gescen_groups()
779                {
780                        llum.Core core=llum.Core.getCore();
781                        System.Collections.Generic.List<string> list=new System.Collections.Generic.List<string>();
782                       
783                        try
784                       
785                        {
786                                string[] ret=client.gescen_groups(core.user_info,"Golem");
787                               
788                                foreach(string str in ret)
789                                {
790                                        list.Add(str); 
791                                }
792                               
793                                return list;
794                        }
795                        catch
796                        {
797                                return null;   
798                        }
799                               
800                       
801                }
802               
803                public bool gescen_partial(string[] user_list)
804                {
805                        llum.Core core=llum.Core.getCore();
806                        try
807                        {
808                       
809                               
810                                string ret=client.gescen_partial(core.user_info,"Golem",user_list);     
811                               
812                                if (ret=="true")
813                                        return true;
814                                else
815                                        return false;
816                        }
817                        catch(Exception e)
818                        {
819                                Console.WriteLine(e);
820                                return false;   
821                        }
822                       
823                }
824               
825                public System.Collections.Generic.List<LdapUser> gescen_full()
826                {
827                        llum.Core core=llum.Core.getCore();     
828                        try
829                        {
830                                CookComputing.XmlRpc.XmlRpcStruct ret=client.gescen_full(core.user_info,"Golem");
831                                System.Collections.Generic.List<LdapUser> ret_list=new System.Collections.Generic.List<LdapUser>();
832                                       
833                                foreach(string str in ret.Keys)
834                                {
835                               
836                                        string path="";
837                                        string uid=(string)((CookComputing.XmlRpc.XmlRpcStruct)ret[str])["uid"];
838                                        string uidn=(string)((CookComputing.XmlRpc.XmlRpcStruct)ret[str])["uidNumber"];
839                                        string name=(string)((CookComputing.XmlRpc.XmlRpcStruct)ret[str])["cn"];
840                                        string surname=(string)((CookComputing.XmlRpc.XmlRpcStruct)ret[str])["sn"];
841                                        string[] groups=null;
842                                        string profile=(string)((CookComputing.XmlRpc.XmlRpcStruct)ret[str])["profile"];
843                                        string user_type="";
844                                        string nia="";
845                                        string dni="";
846                                       
847                                       
848                                        LdapUser user=new LdapUser(path,uid,uidn,name,surname,groups,profile,user_type,nia,dni,false);
849                                        user.ok_to_delete=true;
850                                        ret_list.Add(user);
851                                       
852                                       
853                                }
854                                return ret_list;
855                        }
856                        catch(Exception e)
857                        {
858                                Console.WriteLine(e);
859                                return null;
860                        }
861                       
862                }
863
864                public System.Collections.Generic.List<string> empty_students()
865                {
866                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
867                        llum.Core core=llum.Core.getCore();
868                        string[] ret_array=client.empty_students(core.user_info,"Golem");
869                        foreach(string str in ret_array)
870                        {
871                                ret_list.Add(str);     
872                        }
873                       
874                        return ret_list;
875                       
876                }               
877               
878                public System.Collections.Generic.List<string> empty_teachers()
879                {
880                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
881                        llum.Core core=llum.Core.getCore();
882                        string[] ret_array=client.empty_teachers(core.user_info,"Golem");
883                        foreach(string str in ret_array)
884                        {
885                                ret_list.Add(str);     
886                        }
887                       
888                        return ret_list;
889                       
890                }
891               
892                public System.Collections.Generic.List<string> empty_others()
893                {
894                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
895                        llum.Core core=llum.Core.getCore();
896                        string[] ret_array=client.empty_others(core.user_info,"Golem");
897                        foreach(string str in ret_array)
898                        {
899                                ret_list.Add(str);     
900                        }
901                       
902                        return ret_list;
903                       
904                }
905
906                public System.Collections.Generic.List<string> empty_all()
907                {
908                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
909                        llum.Core core=llum.Core.getCore();
910                        string[] ret_array=client.empty_all(core.user_info,"Golem");
911                        foreach(string str in ret_array)
912                        {
913                                ret_list.Add(str);     
914                        }
915                       
916                        return ret_list;
917                       
918                }
919               
920                public System.Collections.Generic.List<string> get_frozen_groups()
921                {
922                        System.Collections.Generic.List<string> ret=new System.Collections.Generic.List<string>();
923                        llum.Core core=llum.Core.getCore();
924                       
925                        try
926                        {
927                                string[] ret_strings=client.get_frozen_groups(core.user_info,"Golem");
928                                foreach(string str in ret_strings)
929                                        ret.Add(str);
930                                return ret;
931                        }
932                        catch
933                        {
934                                Console.WriteLine("get_frozen_groups not ready");
935                                //Console.WriteLine(e);
936                                return ret;     
937                        }
938                       
939                }
940               
941                public System.Collections.Generic.List<string> get_frozen_users()
942                {
943                        System.Collections.Generic.List<string> ret=new System.Collections.Generic.List<string>();
944                        try
945                        {
946                                string[] ret_strings=client.get_frozen_users(llum.Core.getCore().user_info,"Golem");
947                                foreach(string str in ret_strings)
948                                        ret.Add(str);
949                                return ret;
950                               
951                        }
952                        catch(Exception e)
953                        {
954                                Console.WriteLine("get_frozen_users");
955                                Console.WriteLine(e);
956                                return ret;
957                        }
958                }
959               
960                public bool freeze_user(string uid)
961                {
962                        llum.Core core=llum.Core.getCore();
963                        try
964                        {
965                                string[] param=new string[1];
966                                param[0]=uid;
967                               
968                                client.freeze_user(core.user_info,"Golem",param);
969                                return true;
970                        }
971                        catch
972                        {
973                                return false;
974                        }
975                }
976               
977                public bool regenerate_net_files()
978                {
979                        try
980                        {
981                               
982                                llum.Core core=llum.Core.getCore();     
983                                 
984                                foreach(LdapUser user in this.light_get_user_list())
985                                {
986                                        CookComputing.XmlRpc.XmlRpcStruct user_properties=new CookComputing.XmlRpc.XmlRpcStruct();
987                                        user_properties["profile"]=user.main_group;
988                                        user_properties["uid"]=user.uid;
989                                        user_properties["uidNumber"]=user.uidn;
990                                        try{
991                                                this.client.exist_home_or_create(core.user_info,"Golem",user_properties);
992                                        }
993                                        catch
994                                        {
995                                               
996                                        }
997                                       
998                                }                               
999                               
1000                                try
1001                                {
1002                                        this.client.restore_groups_folders(core.user_info,"Golem");
1003                                }
1004                                catch
1005                                {
1006                                       
1007                                }
1008                               
1009                                return true;
1010                        }
1011                        catch
1012                        {
1013                                //Console.WriteLine(e);
1014                                return false;
1015                        }
1016                       
1017                }
1018               
1019                public string restore_acls()
1020                {
1021                       
1022                        try
1023                        {
1024                                llum.Core core=llum.Core.getCore();     
1025                                System.Array ret=client.restore_acls(core.user_info,"NetFoldersManager");
1026
1027                                if((bool)ret.GetValue(0))
1028                                {
1029                                        return null;
1030                                }
1031                                else
1032                                {
1033                                        return (string)ret.GetValue(1); 
1034                                }
1035                        }
1036                        catch(Exception e)
1037                        {
1038                               
1039                                        return e.ToString();
1040                                       
1041                        }
1042                }
1043               
1044                public bool restore_acls_via_thread()
1045                {
1046                        try
1047                        {
1048                                llum.Core core=llum.Core.getCore();
1049                                bool ret=client.restore_acls_via_thread(core.user_info,"NetFoldersManager");
1050                                                               
1051                                return ret;
1052                        }
1053                        catch(Exception e)
1054                        {
1055                                Console.WriteLine(e);
1056                                return false;
1057                        }
1058                       
1059                }
1060               
1061                public int is_acl_thread_alive()
1062                {
1063                        try
1064                        {
1065                                llum.Core core=llum.Core.getCore();
1066                                bool ret=client.is_acl_thread_alive(core.user_info,"NetFoldersManager");
1067                                if(ret)
1068                                        return 0;
1069                                else
1070                                        return -1;
1071                        }
1072                        catch(Exception e)
1073                        {
1074                                Console.WriteLine (e);
1075                                return -2;     
1076                        }
1077                       
1078                       
1079                }
1080               
1081               
1082                public bool unfreeze_user(string uid)
1083                {
1084                        llum.Core core=llum.Core.getCore();
1085                        try
1086                        {
1087                                string[] param=new string[1];
1088                                param[0]=uid;
1089                                client.unfreeze_user(core.user_info,"Golem",param);
1090                                return true;
1091                        }
1092                        catch
1093                        {
1094                                return false;
1095                        }
1096                }
1097
1098                public bool freeze_group(string cn)
1099                {
1100                        llum.Core core=llum.Core.getCore();
1101                        try
1102                        {
1103                                string[] param=new string[1];
1104                                param[0]=cn;
1105                                client.freeze_group(core.user_info,"Golem",param);
1106                                return true;
1107                        }
1108                        catch(Exception e)
1109                        {
1110                                Console.WriteLine(e);
1111                                return false;
1112                               
1113                        }
1114                }               
1115               
1116
1117                public bool unfreeze_group(string cn)
1118                {
1119                        llum.Core core=llum.Core.getCore();
1120                        try
1121                        {
1122                                string[] param=new string[1];
1123                                param[0]=cn;
1124                                client.unfreeze_group(core.user_info,"Golem",param);
1125                                return true;
1126                        }
1127                        catch
1128                        {
1129                                return false;
1130                        }
1131                }
1132               
1133                public string get_methods()
1134                {
1135                       
1136                        try
1137                        {
1138                                return client.get_methods();
1139                        }
1140                        catch(Exception e)
1141                        {
1142                                Console.WriteLine(e);
1143                                return "";     
1144                        }
1145                }
1146
1147                public bool export_llum_info(string file_path)
1148                {
1149                        try
1150                        {
1151                                llum.Core core=llum.Core.getCore();
1152                                System.Array ret=client.export_llum_info(core.user_info,"Golem");
1153
1154                                if((bool)ret.GetValue(0))
1155                                {
1156                                        CookComputing.XmlRpc.XmlRpcStruct s=(CookComputing.XmlRpc.XmlRpcStruct)ret.GetValue(1);
1157                                        string data=JsonConvert.SerializeObject(s,Newtonsoft.Json.Formatting.Indented);
1158                                        System.IO.File.WriteAllText(file_path,data,Encoding.UTF8);
1159
1160                                        return(true);
1161                                }
1162                                else
1163                                        return(false);
1164                        }
1165                        catch(Exception e)
1166                        {
1167                                Console.WriteLine(e);
1168                                return(false);
1169                        }
1170                }
1171
1172                public bool is_roadmin_available()
1173                {
1174                        try
1175                        {
1176                                return client.is_roadmin_available(llum.Core.getCore().user_info,"Golem");
1177                        }
1178                        catch
1179                        {
1180                                return false;
1181                        }
1182                }
1183
1184                public bool import_llum_info(string file_path)
1185                {
1186                        try{
1187                                System.IO.StreamReader file = System.IO.File.OpenText(file_path);
1188                                string data= file.ReadToEnd();
1189                                System.Collections.Generic.Dictionary<string,object> ss=JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string,object>>(data);
1190                                CookComputing.XmlRpc.XmlRpcStruct dic=new XmlRpcStruct();
1191                                XmlRpcStruct users=new XmlRpcStruct();
1192                                XmlRpcStruct groups=new XmlRpcStruct();
1193
1194                                string tmp;
1195                                tmp=JsonConvert.SerializeObject(ss["users"]);
1196                                System.Collections.Generic.Dictionary<string,object> tmp2=JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string,object>>(tmp);
1197
1198                                foreach( string x in tmp2.Keys)
1199                                {
1200                                        System.Collections.Generic.Dictionary<string,object> tmp3=JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string,object>>(JsonConvert.SerializeObject(tmp2[x]));
1201                                        XmlRpcStruct user=new XmlRpcStruct();
1202                                        user["cn"]=(string)tmp3["cn"];
1203                                        user["sn"]=(string)(tmp3["sn"]);
1204                                        user["is_admin"]=(bool)(tmp3["is_admin"]);
1205                                        user["profile"]=(string)(tmp3["profile"]);
1206                                        user["userPassword"]=(string)(tmp3["userPassword"]);
1207                                        user["sambaLMPassword"]=(string)(tmp3["sambaLMPassword"]);
1208                                        user["sambaNTPassword"]=(string)(tmp3["sambaNTPassword"]);
1209                                        user["groups"]=JsonConvert.DeserializeObject<string[]>(JsonConvert.SerializeObject(tmp3["groups"]));
1210                                        users[x]=user;
1211                                }
1212                                       
1213                                tmp=JsonConvert.SerializeObject(ss["groups"]);
1214                                tmp2=JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string,object>>(tmp);
1215
1216                                foreach( string x in tmp2.Keys)
1217                                {
1218                                        System.Collections.Generic.Dictionary<string,object> tmp3=JsonConvert.DeserializeObject<System.Collections.Generic.Dictionary<string,object>>(JsonConvert.SerializeObject(tmp2[x]));
1219                                        XmlRpcStruct grp=new XmlRpcStruct();
1220                                        grp["description"]=(string)tmp3["description"];
1221                                        grp["members"]=JsonConvert.DeserializeObject<string[]>(JsonConvert.SerializeObject(tmp3["members"]));
1222                                        groups[x]=grp;
1223                                }
1224
1225                                dic["users"]=users;
1226                                dic["groups"]=groups;
1227                                client.import_llum_info(llum.Core.getCore().user_info,"Golem",dic);
1228
1229                                return(true);
1230                        }
1231                        catch(Exception e){
1232                                Console.WriteLine(e);
1233                                return(false);
1234                        }
1235                }
1236
1237               
1238        }
1239}
Note: See TracBrowser for help on using the repository browser.