diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 145 |
1 files changed, 28 insertions, 117 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 4bf6712..6465db2 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -102,7 +102,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
102 | availableMethods["admin_restart"] = XmlRpcRestartMethod; | 102 | availableMethods["admin_restart"] = XmlRpcRestartMethod; |
103 | availableMethods["admin_load_heightmap"] = XmlRpcLoadHeightmapMethod; | 103 | availableMethods["admin_load_heightmap"] = XmlRpcLoadHeightmapMethod; |
104 | availableMethods["admin_create_user"] = XmlRpcCreateUserMethod; | 104 | availableMethods["admin_create_user"] = XmlRpcCreateUserMethod; |
105 | availableMethods["admin_create_user_email"] = XmlRpcCreateUserMethodEmail; | 105 | availableMethods["admin_create_user_email"] = XmlRpcCreateUserMethod; |
106 | availableMethods["admin_exists_user"] = XmlRpcUserExistsMethod; | 106 | availableMethods["admin_exists_user"] = XmlRpcUserExistsMethod; |
107 | availableMethods["admin_update_user"] = XmlRpcUpdateUserAccountMethod; | 107 | availableMethods["admin_update_user"] = XmlRpcUpdateUserAccountMethod; |
108 | availableMethods["admin_load_xml"] = XmlRpcLoadXMLMethod; | 108 | availableMethods["admin_load_xml"] = XmlRpcLoadXMLMethod; |
@@ -692,6 +692,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
692 | /// <description>avatar's last name</description></item> | 692 | /// <description>avatar's last name</description></item> |
693 | /// <item><term>user_password</term> | 693 | /// <item><term>user_password</term> |
694 | /// <description>avatar's password</description></item> | 694 | /// <description>avatar's password</description></item> |
695 | /// <item><term>user_email</term> | ||
696 | /// <description>email of the avatar's owner (optional)</description></item> | ||
695 | /// <item><term>start_region_x</term> | 697 | /// <item><term>start_region_x</term> |
696 | /// <description>avatar's start region coordinates, X value</description></item> | 698 | /// <description>avatar's start region coordinates, X value</description></item> |
697 | /// <item><term>start_region_y</term> | 699 | /// <item><term>start_region_y</term> |
@@ -739,121 +741,21 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
739 | string firstname = (string) requestData["user_firstname"]; | 741 | string firstname = (string) requestData["user_firstname"]; |
740 | string lastname = (string) requestData["user_lastname"]; | 742 | string lastname = (string) requestData["user_lastname"]; |
741 | string passwd = (string) requestData["user_password"]; | 743 | string passwd = (string) requestData["user_password"]; |
742 | string email = ""; //Empty string for email | ||
743 | uint regX = Convert.ToUInt32((Int32) requestData["start_region_x"]); | 744 | uint regX = Convert.ToUInt32((Int32) requestData["start_region_x"]); |
744 | uint regY = Convert.ToUInt32((Int32) requestData["start_region_y"]); | 745 | uint regY = Convert.ToUInt32((Int32) requestData["start_region_y"]); |
745 | 746 | ||
746 | UserProfileData userProfile = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); | 747 | string email = ""; // empty string for email |
747 | if (null != userProfile) | 748 | if (requestData.Contains("user_email")) |
748 | throw new Exception(String.Format("avatar {0} {1} already exists", firstname, lastname)); | 749 | email = (string)requestData["user_email"]; |
749 | |||
750 | UUID userID = m_app.CommunicationsManager.UserAdminService.AddUser(firstname, lastname, | ||
751 | passwd, email, regX, regY); | ||
752 | |||
753 | if (userID == UUID.Zero) | ||
754 | throw new Exception(String.Format("failed to create new user {0} {1}", | ||
755 | firstname, lastname)); | ||
756 | |||
757 | responseData["success"] = "true"; | ||
758 | responseData["avatar_uuid"] = userID.ToString(); | ||
759 | |||
760 | response.Value = responseData; | ||
761 | 750 | ||
762 | m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, userID); | 751 | UserProfileData userProfile = |
763 | } | ||
764 | catch (Exception e) | ||
765 | { | ||
766 | m_log.ErrorFormat("[RADMIN] CreateUser: failed: {0}", e.Message); | ||
767 | m_log.DebugFormat("[RADMIN] CreateUser: failed: {0}", e.ToString()); | ||
768 | |||
769 | responseData["success"] = "false"; | ||
770 | responseData["avatar_uuid"] = UUID.Zero.ToString(); | ||
771 | responseData["error"] = e.Message; | ||
772 | |||
773 | response.Value = responseData; | ||
774 | } | ||
775 | return response; | ||
776 | } | ||
777 | } | ||
778 | |||
779 | /// <summary> | ||
780 | /// Create a new user account. | ||
781 | /// <summary> | ||
782 | /// <param name="request">incoming XML RPC request</param> | ||
783 | /// <remarks> | ||
784 | /// XmlRpcCreateUserMethod takes the following XMLRPC | ||
785 | /// parameters | ||
786 | /// <list type="table"> | ||
787 | /// <listheader><term>parameter name</term><description>description</description></listheader> | ||
788 | /// <item><term>password</term> | ||
789 | /// <description>admin password as set in OpenSim.ini</description></item> | ||
790 | /// <item><term>user_firstname</term> | ||
791 | /// <description>avatar's first name</description></item> | ||
792 | /// <item><term>user_lastname</term> | ||
793 | /// <description>avatar's last name</description></item> | ||
794 | /// <item><term>user_password</term> | ||
795 | /// <description>avatar's password</description></item> | ||
796 | /// <item><term>start_region_x</term> | ||
797 | /// <description>avatar's start region coordinates, X value</description></item> | ||
798 | /// <item><term>start_region_y</term> | ||
799 | /// <description>avatar's start region coordinates, Y value</description></item> | ||
800 | /// <item><term>user_email</term> | ||
801 | /// <description>email of avatar</description></item> | ||
802 | /// </list> | ||
803 | /// | ||
804 | /// XmlRpcCreateUserMethod returns | ||
805 | /// <list type="table"> | ||
806 | /// <listheader><term>name</term><description>description</description></listheader> | ||
807 | /// <item><term>success</term> | ||
808 | /// <description>true or false</description></item> | ||
809 | /// <item><term>error</term> | ||
810 | /// <description>error message if success is false</description></item> | ||
811 | /// <item><term>avatar_uuid</term> | ||
812 | /// <description>UUID of the newly created avatar | ||
813 | /// account; UUID.Zero if failed. | ||
814 | /// </description></item> | ||
815 | /// </list> | ||
816 | /// </remarks> | ||
817 | public XmlRpcResponse XmlRpcCreateUserMethodEmail(XmlRpcRequest request) | ||
818 | { | ||
819 | m_log.Info("[RADMIN]: CreateUser: new request"); | ||
820 | XmlRpcResponse response = new XmlRpcResponse(); | ||
821 | Hashtable responseData = new Hashtable(); | ||
822 | |||
823 | lock (this) | ||
824 | { | ||
825 | try | ||
826 | { | ||
827 | Hashtable requestData = (Hashtable) request.Params[0]; | ||
828 | |||
829 | // check completeness | ||
830 | checkStringParameters(request, new string[] | ||
831 | { | ||
832 | "password", "user_firstname", | ||
833 | "user_lastname", "user_password", "user_email" | ||
834 | }); | ||
835 | checkIntegerParams(request, new string[] {"start_region_x", "start_region_y"}); | ||
836 | |||
837 | // check password | ||
838 | if (!String.IsNullOrEmpty(requiredPassword) && | ||
839 | (string) requestData["password"] != requiredPassword) throw new Exception("wrong password"); | ||
840 | |||
841 | // do the job | ||
842 | string firstname = (string) requestData["user_firstname"]; | ||
843 | string lastname = (string) requestData["user_lastname"]; | ||
844 | string passwd = (string) requestData["user_password"]; | ||
845 | string email = (string) requestData["user_email"]; | ||
846 | uint regX = Convert.ToUInt32((Int32) requestData["start_region_x"]); | ||
847 | uint regY = Convert.ToUInt32((Int32) requestData["start_region_y"]); | ||
848 | |||
849 | UserProfileData userProfile = | ||
850 | m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); | 752 | m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); |
851 | if (null != userProfile) | 753 | if (null != userProfile) |
852 | throw new Exception(String.Format("avatar {0} {1} already exists", firstname, lastname)); | 754 | throw new Exception(String.Format("avatar {0} {1} already exists", firstname, lastname)); |
853 | 755 | ||
854 | UUID userID | 756 | UUID userID = |
855 | = m_app.CommunicationsManager.UserAdminService.AddUser( | 757 | m_app.CommunicationsManager.UserAdminService.AddUser(firstname, lastname, |
856 | firstname, lastname, passwd, email, regX, regY); | 758 | passwd, email, regX, regY); |
857 | 759 | ||
858 | if (userID == UUID.Zero) | 760 | if (userID == UUID.Zero) |
859 | throw new Exception(String.Format("failed to create new user {0} {1}", | 761 | throw new Exception(String.Format("failed to create new user {0} {1}", |
@@ -954,12 +856,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
954 | } | 856 | } |
955 | 857 | ||
956 | /// <summary> | 858 | /// <summary> |
957 | /// Update the password of a user account. | 859 | /// Update a user account. |
958 | /// <summary> | 860 | /// <summary> |
959 | /// <param name="request">incoming XML RPC request</param> | 861 | /// <param name="request">incoming XML RPC request</param> |
960 | /// <remarks> | 862 | /// <remarks> |
961 | /// XmlRpcUpdateUserAccountMethod takes the following XMLRPC | 863 | /// XmlRpcUpdateUserAccountMethod takes the following XMLRPC |
962 | /// parameters | 864 | /// parameters (changeable ones are optional) |
963 | /// <list type="table"> | 865 | /// <list type="table"> |
964 | /// <listheader><term>parameter name</term><description>description</description></listheader> | 866 | /// <listheader><term>parameter name</term><description>description</description></listheader> |
965 | /// <item><term>password</term> | 867 | /// <item><term>password</term> |
@@ -976,6 +878,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
976 | /// <item><term>start_region_y</term> | 878 | /// <item><term>start_region_y</term> |
977 | /// <description>avatar's start region coordinates, Y | 879 | /// <description>avatar's start region coordinates, Y |
978 | /// value (changeable)</description></item> | 880 | /// value (changeable)</description></item> |
881 | /// <item><term>about_real_world</term> | ||
882 | /// <description>"about" text of avatar owner (changeable)</description></item> | ||
883 | /// <item><term>about_virtual_world</term> | ||
884 | /// <description>"about" text of avatar (changeable)</description></item> | ||
979 | /// </list> | 885 | /// </list> |
980 | /// | 886 | /// |
981 | /// XmlRpcCreateUserMethod returns | 887 | /// XmlRpcCreateUserMethod returns |
@@ -1000,11 +906,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1000 | Hashtable requestData = (Hashtable) request.Params[0]; | 906 | Hashtable requestData = (Hashtable) request.Params[0]; |
1001 | 907 | ||
1002 | // check completeness | 908 | // check completeness |
1003 | checkStringParameters(request, new string[] | 909 | checkStringParameters(request, new string[] { |
1004 | { | 910 | "password", "user_firstname", |
1005 | "password", "user_firstname", | 911 | "user_lastname"}); |
1006 | "user_lastname" | ||
1007 | }); | ||
1008 | 912 | ||
1009 | // check password | 913 | // check password |
1010 | if (!String.IsNullOrEmpty(requiredPassword) && | 914 | if (!String.IsNullOrEmpty(requiredPassword) && |
@@ -1014,7 +918,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1014 | string firstname = (string) requestData["user_firstname"]; | 918 | string firstname = (string) requestData["user_firstname"]; |
1015 | string lastname = (string) requestData["user_lastname"]; | 919 | string lastname = (string) requestData["user_lastname"]; |
1016 | 920 | ||
1017 | |||
1018 | string passwd = String.Empty; | 921 | string passwd = String.Empty; |
1019 | uint? regX = null; | 922 | uint? regX = null; |
1020 | uint? regY = null; | 923 | uint? regY = null; |
@@ -1024,7 +927,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1024 | uint? usaX = null; | 927 | uint? usaX = null; |
1025 | uint? usaY = null; | 928 | uint? usaY = null; |
1026 | uint? usaZ = null; | 929 | uint? usaZ = null; |
1027 | 930 | string aboutFirstLive = String.Empty; | |
931 | string aboutAvatar = String.Empty; | ||
1028 | 932 | ||
1029 | if (requestData.ContainsKey("user_password")) passwd = (string) requestData["user_password"]; | 933 | if (requestData.ContainsKey("user_password")) passwd = (string) requestData["user_password"]; |
1030 | if (requestData.ContainsKey("start_region_x")) | 934 | if (requestData.ContainsKey("start_region_x")) |
@@ -1045,6 +949,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1045 | usaY = Convert.ToUInt32((Int32) requestData["start_standat_y"]); | 949 | usaY = Convert.ToUInt32((Int32) requestData["start_standat_y"]); |
1046 | if (requestData.ContainsKey("start_standat_z")) | 950 | if (requestData.ContainsKey("start_standat_z")) |
1047 | usaZ = Convert.ToUInt32((Int32) requestData["start_standat_z"]); | 951 | usaZ = Convert.ToUInt32((Int32) requestData["start_standat_z"]); |
952 | if (requestData.ContainsKey("about_real_world")) | ||
953 | aboutFirstLive = (string)requestData["about_real_world"]; | ||
954 | if (requestData.ContainsKey("about_virtual_world")) | ||
955 | aboutAvatar = (string)requestData["about_virtual_world"]; | ||
1048 | 956 | ||
1049 | UserProfileData userProfile = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); | 957 | UserProfileData userProfile = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname); |
1050 | 958 | ||
@@ -1068,6 +976,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1068 | if (null != ulaY) userProfile.HomeLookAtY = (uint) ulaY; | 976 | if (null != ulaY) userProfile.HomeLookAtY = (uint) ulaY; |
1069 | if (null != ulaZ) userProfile.HomeLookAtZ = (uint) ulaZ; | 977 | if (null != ulaZ) userProfile.HomeLookAtZ = (uint) ulaZ; |
1070 | 978 | ||
979 | if (String.Empty != aboutFirstLive) userProfile.FirstLifeAboutText = aboutFirstLive; | ||
980 | if (String.Empty != aboutAvatar) userProfile.AboutText = aboutAvatar; | ||
981 | |||
1071 | if (!m_app.CommunicationsManager.UserService.UpdateUserProfile(userProfile)) | 982 | if (!m_app.CommunicationsManager.UserService.UpdateUserProfile(userProfile)) |
1072 | throw new Exception("did not manage to update user profile"); | 983 | throw new Exception("did not manage to update user profile"); |
1073 | 984 | ||