Where to find Server Address And Organization Name in plugin?

If you would create client application which use OrganizationServiceProxy answer to question is easy:

var proxy = service as OrganizationServiceProxy;
var scheme = proxy.EndpointSwitch.PrimaryEndpoint.Scheme;
var serverAddress = proxy.EndpointSwitch.PrimaryEndpoint.Host;
var organizationName = proxy.EndpointSwitch.PrimaryEndpoint.Segments.Length < 2
	? UndefinedValue
	: proxy.EndpointSwitch.PrimaryEndpoint.Segments[1].Replace("/", string.Empty);

If you use LocalPluginContext organization name is available:

localContext.PluginExecutionContext.OrganizationName

But, what with other parameters, ex. servername ?
The best way is to use HttpContext:

        /// <summary>
        /// Gets the server information.
        /// </summary>
        /// <returns>Server info object.</returns>
        public static ServerInfo GetServerInfo()
        {
            var webContext = HttpContext.Current;

            if (webContext != null)
            {
                var request = webContext.Request;
                var absolutePath = request.Url.AbsolutePath.Split('/');

                return new ServerInfo
                {
                    MachineName = webContext.Server.MachineName,
                    HostName = request.Url.Host,
                    HostAddress = request.UserHostAddress,
                    UserAgent = request.UserAgent,
                    OrganizationName = absolutePath.Length > 1 ? absolutePath[1] : "Unknown",
                    FormAddress = request.Url.AbsoluteUri
                };
            }

            return new ServerInfo();
        }

Have an own opinion?