private void server_OnListGroups(IPEndPoint client, ref List <string> groups) { Log2(this, PluginLogType.Information, 0, 0, "Listagem de grupos solicitada", client.ToString()); APIAccessToken accessToken = GetToken(config, 0, 0); if (accessToken == null) { return; } var loginRequest = new { jsonrpc = "1.0", method = "role.list", parameters = new String[0], auth = accessToken.Authorization, id = 1 }; JavaScriptSerializer _ser = new JavaScriptSerializer(); String jData = _ser.Serialize(loginRequest); APIRoleListResult ret = JSON.JsonWebRequest <APIRoleListResult>(urlAPI, jData, "application/json", null, "POST"); if (ret == null) { return; } else if (ret.error != null) { return; } else if (ret.result == null || ret.result.Count == 0) { return; } foreach (APIRoleData role in ret.result) { if (!groups.Contains(role.name)) { groups.Add(role.name); } } /* * foreach (String grp in ldapAuth.ListaGrupos()) * { * groups.Add(grp); * }*/ }
private void server_OnListUsers(IPEndPoint client, ref List <string> users) { Log2(this, PluginLogType.Information, 0, 0, "Listagem de usuários solicitada", client.ToString()); APIAccessToken accessToken = GetToken(config, 0, 0); if (accessToken == null) { return; } var loginRequest = new { jsonrpc = "1.0", method = "user.list", parameters = new { page_size = Int32.MaxValue }, auth = accessToken.Authorization, id = 1 }; JavaScriptSerializer _ser = new JavaScriptSerializer(); String jData = _ser.Serialize(loginRequest); APISearchResult ret = JSON.JsonWebRequest <APISearchResult>(urlAPI, jData, "application/json", null, "POST"); if (ret == null) { return; } else if (ret.error != null) { return; } else if (ret.result == null || ret.result.Count == 0) { return; } foreach (APIUserData user in ret.result) { users.Add(user.login); } }
public void LoadFromFile() { System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(this.GetType()); String tokenFile = Path.GetFullPath(asm.Location) + ".apiToken"; if (!File.Exists(tokenFile)) { return; } String jData = File.ReadAllText(tokenFile, Encoding.UTF8); APIAccessToken item = JSON.Deserialize <APIAccessToken>(jData); this.access_token = item.access_token; this.create_time = item.create_time; this.expires_in = item.expires_in; }
private APIAccessToken GetToken(Dictionary <String, Object> config, Int64 entityId, Int64 identityId) { APIAccessToken accessToken = new APIAccessToken(); accessToken.LoadFromFile(); //Verifica em cache se o token ainda e válido if (!accessToken.IsValid) { accessToken = new APIAccessToken(); try { //Efetua o login var loginRequest = new { jsonrpc = "1.0", method = "user.login", parameters = new { user = config["username"].ToString(), password = config["password"].ToString(), userData = false //Define se deseja ou não retornar os principais dados do usuário }, id = 1 }; JavaScriptSerializer _ser = new JavaScriptSerializer(); String jData = _ser.Serialize(loginRequest); APIAuthResult ret = JSON.JsonWebRequest <APIAuthResult>(urlAPI, jData, "application/json", null, "POST"); if (ret == null) { accessToken.error = "Empty return"; Log(this, PluginLogType.Error, "Error on get API Auth 1.0 Token: " + accessToken.error); Log2(this, PluginLogType.Error, entityId, identityId, "Error on get API Auth 1.0 Token: " + accessToken.error, ""); return(accessToken); } else if (ret.error != null) { accessToken.error = ret.error.data + (ret.error.debug != null ? ret.error.debug : ""); Log(this, PluginLogType.Error, "Error on get API Auth 1.0 Token: " + accessToken.error); Log2(this, PluginLogType.Error, entityId, identityId, "Error on get API Auth 1.0 Token: " + accessToken.error, ""); return(accessToken); } else if (!String.IsNullOrWhiteSpace(ret.result.sessionid)) { accessToken.access_token = ret.result.sessionid; accessToken.expires_in = ret.result.expires; accessToken.create_time = ret.result.create_time; accessToken.SaveToFile(); } } catch (Exception ex) { Log(this, PluginLogType.Error, "Error on get API Auth 1.0 Token: " + ex.Message); Log2(this, PluginLogType.Error, entityId, identityId, "Error on get API Auth 1.0 Token: " + ex.Message, ""); return(null); } } return(accessToken); }
private void server_OnUserValidate(IPEndPoint client, string username, string password, ref AuthUserResult result) { result.Username = username; result.Result = AuthResult.NoUser; Int64 entityId = 0; APIAccessToken accessToken = GetToken(config, 0, 0); if (accessToken != null) { var loginRequest = new { jsonrpc = "1.0", method = "user.auth", parameters = new { user = username, md5_password = MD5Checksum(password) }, auth = accessToken.Authorization, id = 1 }; JavaScriptSerializer _ser = new JavaScriptSerializer(); String jData = _ser.Serialize(loginRequest); APIUserAuthResult ret = JSON.JsonWebRequest <APIUserAuthResult>(urlAPI, jData, "application/json", null, "POST"); if (ret == null) { //Nda } else if (ret.error != null) { if (ret.error.data.ToLower().IndexOf("not found") != -1) { result.Result = AuthResult.NoUser; } else if (ret.error.data.ToLower().IndexOf("locked") != -1) { result.Result = AuthResult.NoUser; } else if (ret.error.data.ToLower().IndexOf("incorrect") != -1) { result.Result = AuthResult.BadPassword; } } else if (ret.result == null) { //Nda } else if (ret.result.userid != 0) { entityId = ret.result.userid; result.Username = ret.result.login; result.Result = AuthResult.OK; List <String> grp = new List <String>(); if (ret.result.roles != null) { foreach (APIRoleData r in ret.result.roles) { if (!grp.Contains(r.name)) { grp.Add(r.name); } } } result.Groups = grp.ToArray(); } } Log2(this, PluginLogType.Information, entityId, 0, "Autenticação solicitada para " + username + " (" + result.Result.ToString() + ")", client.ToString()); }