示例#1
0
            public void CallPlugins()
            {
                var ec = new ExtensionControl(this.EcbPointer);

// ReSharper disable RedundantNameQualifier -> this is indeed necessary!
                foreach (var plugin in NpsPlugin.plugins)
// ReSharper restore RedundantNameQualifier
                {
                    try
                    {
                        Logger.DebugFormat("Calling plugin {0} with pointer {1}", plugin.GetType().FullName, this.EcbPointer);
                        var before = ec.ResponseType;
                        plugin.RadiusExtensionProcess(ec);
                        Logger.InfoFormat("Called plugin {0}, response was {1} and is now {2}.", plugin.GetType().FullName, before, ec.ResponseType);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error("Plugin failed", ex);
                        try
                        {
                            switch (ec.RequestType)
                            {
                            case RadiusCode.AccessRequest:
                                ec.ResponseType = RadiusCode.AccessReject;
                                break;

                            case RadiusCode.AccountingRequest:
                                ec.ResponseType = RadiusCode.Discard;
                                break;
                            }
                        }
                        catch (Exception inner)
                        {
                            Logger.Error("Setting response type after plugin failure failed", inner);
                            this.HadError = true;
                        }
                    }
                }
            }
示例#2
0
            public void CallPlugins()
            {
                var ec = new ExtensionControl(this.EcbPointer);
// ReSharper disable RedundantNameQualifier -> this is indeed necessary!
                foreach (var plugin in NpsPlugin.plugins)
// ReSharper restore RedundantNameQualifier
                {
                    try
                    {
                        Logger.DebugFormat("Calling plugin {0} with pointer {1}", plugin.GetType().FullName, this.EcbPointer);
                        var before = ec.ResponseType;
                        plugin.RadiusExtensionProcess(ec);
                        Logger.InfoFormat("Called plugin {0}, response was {1} and is now {2}.", plugin.GetType().FullName, before, ec.ResponseType);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error("Plugin failed", ex);
                        try
                        {
                            switch (ec.RequestType)
                            {
                                case RadiusCode.AccessRequest:
                                    ec.ResponseType = RadiusCode.AccessReject;
                                    break;
                                case RadiusCode.AccountingRequest:
                                    ec.ResponseType = RadiusCode.Discard;
                                    break;
                            }
                        }
                        catch (Exception inner)
                        {
                            Logger.Error("Setting response type after plugin failure failed", inner);
                            this.HadError = true;
                        }
                    }
                }
            }