Exemplo n.º 1
0
        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);
             * }*/
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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());
        }