Example #1
0
        /// <summary>
        /// Tries to get, set, or restore an option given its PHP name and value.
        /// </summary>
        /// <param name="name">The option name.</param>
        /// <param name="value">The option new value if applicable.</param>
        /// <param name="action">The action to be taken.</param>
        /// <param name="error"><B>true</B>, on failure.</param>
        /// <returns>The option old value.</returns>
        /// <exception cref="PhpException">The option not supported (Warning).</exception>
        /// <exception cref="PhpException">The option is read only but action demands write access (Warning).</exception>
        internal static object TryGetSetRestore(string name, object value, IniAction action, out bool error)
        {
            Debug.Assert(name != null);
            error = true;

            IniOptions.OptionDefinition option = GetOption(name);

            // option not found:
            if (option == null)
            {
                PhpException.Throw(PhpError.Warning, LibResources.GetString("unknown_option", name));
                return(null);
            }

            // the option is known but not supported:
            if ((option.Flags & IniFlags.Supported) == 0)
            {
                PhpException.Throw(PhpError.Warning, LibResources.GetString("option_not_supported", name));
                return(null);
            }

            // the option is global thus cannot be changed:
            if ((option.Flags & IniFlags.Local) == 0 && action != IniAction.Get)
            {
                PhpException.Throw(PhpError.Warning, LibResources.GetString("option_readonly", name));
                return(null);
            }

            error = false;
            return(option.Gsr(Configuration.Local, name, value, action));
        }
Example #2
0
 static void AssertGet(string option, IniAction action)
 {
     if (action != IniAction.Get)
     {
         PhpException.ArgumentValueNotSupported(option, action);
     }
 }
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            PDOSQLServerLocalConfig local = (PDOSQLServerLocalConfig)config.GetLibraryConfig(PDOSQLServerLibraryDescriptor.Singleton);
            PDOSQLServerLocalConfig @default = DefaultLocal;
            PDOSQLServerGlobalConfig global = Global;

            //switch (option)
            //{
            //    // local:

            //    // global:

            //}

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return null;
        }
Example #4
0
        /// <summary>
        /// Tries to get, set, or restore an option given its PHP name and value.
        /// </summary>
        /// <param name="name">The option name.</param>
        /// <param name="value">The option new value if applicable.</param>
        /// <param name="action">The action to be taken.</param>
        /// <param name="error"><B>true</B>, on failure.</param>
        /// <returns>The option old value.</returns>
        /// <exception cref="PhpException">The option not supported (Warning).</exception>
        /// <exception cref="PhpException">The option is read only but action demands write access (Warning).</exception>
        internal static object TryGetSetRestore(string name, object value, IniAction action, out bool error)
        {
            Debug.Assert(name != null);
            error = true;

            IniOptions.OptionDefinition option = GetOption(name);

            // option not found:
            if (option == null)
            {
                // check for options in native extensions:
                string result = null;
                switch (action)
                {
                case IniAction.Get: error = !Externals.IniGet(name, out result); break;

                case IniAction.Set: error = !Externals.IniSet(name, Convert.ObjectToString(value), out result); break;

                case IniAction.Restore: error = !Externals.IniRestore(name); break;
                }
                if (error)
                {
                    PhpException.Throw(PhpError.Warning, LibResources.GetString("unknown_option", name));
                }
                return(result);
            }

            // the option is known but not supported:
            if ((option.Flags & IniFlags.Supported) == 0)
            {
                PhpException.Throw(PhpError.Warning, LibResources.GetString("option_not_supported", name));
                return(null);
            }

            // the option is global thus cannot be changed:
            if ((option.Flags & IniFlags.Local) == 0 && action != IniAction.Get)
            {
                PhpException.Throw(PhpError.Warning, LibResources.GetString("option_readonly", name));
                return(null);
            }

            error = false;
            return(option.Gsr(Configuration.Local, name, value, action));
        }
Example #5
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            SQLiteLocalConfig local = (SQLiteLocalConfig)config.GetLibraryConfig(SQLiteLibraryDescriptor.Singleton);
            SQLiteLocalConfig @default = DefaultLocal;
            SQLiteGlobalConfig global = Global;

            switch (option)
            {
                // local:

                // global:
                case "sqlite.assoc_case":
                    Debug.Assert(action == IniAction.Get);
                    return PhpIni.GSR(ref global.AssocCase, 0, value, action);
            }

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return null;
        }
Example #6
0
		/// <summary>
		/// Gets, sets or restores boolean option.
		/// </summary>
		public static object GSR(ref bool option, bool defaultValue, object value, IniAction action)
		{
			object result = option;
			switch (action)
			{
				case IniAction.Set: option = OptionValueToBoolean(value); break;
				case IniAction.Restore: option = defaultValue; break;
			}
			return result;
		}
Example #7
0
        internal PhpValue Gsr(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "session.serialize_handler":
                return((PhpValue)GetSet(ref SerializeHandler, "php", value, action));

            case "session.name":
                return((PhpValue)GetSet(ref SessionName, DefaultSessionName, value, action));

            case "session.cookie_lifetime":
                return((PhpValue)GetSet(ref CookieLifetime, 0, value, action));

            case "session.cookie_path":
                return((PhpValue)GetSet(ref CookiePath, "/", value, action));

            case "session.cookie_domain":
                return((PhpValue)GetSet(ref CookieDomain, "", value, action));

            case "session.cookie_secure":
                return((PhpValue)GetSet(ref CookieSecure, false, value, action));

            case "session.cookie_httponly":
                return((PhpValue)GetSet(ref CookieHttpOnly, false, value, action));

            default:
                throw new ArgumentOutOfRangeException(nameof(option));
            }
        }
Example #8
0
        /// <summary>
        /// Gets or sets a value of a legacy configuration option.
        /// </summary>
        static PhpValue GetSet(IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            var local = config.Get <MsSqlConfiguration>();

            switch (option)
            {
            // local:

            case "mssql.connect_timeout":
                return((PhpValue)StandardPhpOptions.GetSet(ref local.ConnectTimeout, 5, value, action));

            case "mssql.timeout":
                return((PhpValue)StandardPhpOptions.GetSet(ref local.Timeout, 60, value, action));

            case "mssql.batchsize":
                return((PhpValue)StandardPhpOptions.GetSet(ref local.BatchSize, 0, value, action));

            // global:

            case "mssql.max_links":
                Debug.Assert(action == IniAction.Get);
                return((PhpValue)StandardPhpOptions.GetSet(ref local.MaxConnections, 0, PhpValue.Null, action));

            case "mssql.secure_connection":
                Debug.Assert(action == IniAction.Get);
                return((PhpValue)StandardPhpOptions.GetSet(ref local.NTAuthentication, false, PhpValue.Null, action));
            }

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return(PhpValue.Null);
        }
Example #9
0
        /// <summary>
        /// Gets or sets option.
        /// </summary>
        public static IPhpCallable GetSet(ref IPhpCallable option, IPhpCallable defaultValue, PhpValue newValue, IniAction action)
        {
            var oldValue = option;

            if (action == IniAction.Set)
            {
                option = newValue.AsCallable(default(RuntimeTypeHandle));
            }

            return(oldValue);
        }
Example #10
0
		/// <summary>
		/// Tries to get, set, or restore an option given its PHP name and value.
		/// </summary>
		/// <param name="name">The option name.</param>
		/// <param name="value">The option new value if applicable.</param>
		/// <param name="action">The action to be taken.</param>
		/// <param name="error"><B>true</B>, on failure.</param>
		/// <returns>The option old value.</returns>
		/// <exception cref="PhpException">The option not supported (Warning).</exception>
		/// <exception cref="PhpException">The option is read only but action demands write access (Warning).</exception>
		internal static object TryGetSetRestore(string name, object value, IniAction action, out bool error)
		{
			Debug.Assert(name != null);
			error = true;

			IniOptions.OptionDefinition option = GetOption(name);

			// option not found:
			if (option == null)
			{
				PhpException.Throw(PhpError.Warning, LibResources.GetString("unknown_option", name));
				return null;
			}

			// the option is known but not supported:
			if ((option.Flags & IniFlags.Supported) == 0)
			{
				PhpException.Throw(PhpError.Warning, LibResources.GetString("option_not_supported", name));
				return null;
			}

			// the option is global thus cannot be changed:
			if ((option.Flags & IniFlags.Local) == 0 && action != IniAction.Get)
			{
				PhpException.Throw(PhpError.Warning, LibResources.GetString("option_readonly", name));
				return null;
			}

			error = false;
			return option.Gsr(Configuration.Local, name, value, action);
		}
Example #11
0
		internal static object GetSetRestoreCoreOption(LocalConfiguration local, string option, object value, IniAction action)
		{
			LocalConfiguration @default = Configuration.DefaultLocal;
			GlobalConfiguration global = Configuration.Global;
			ApplicationConfiguration app = Configuration.Application;

			switch (option)
			{
				#region <paths>

				case "extension_dir": Debug.Assert(action == IniAction.Get); return app.Paths.Libraries;

				#endregion

				#region <compiler>

				case "short_open_tag": Debug.Assert(action == IniAction.Get); return app.Compiler.ShortOpenTags;
				case "asp_tags": Debug.Assert(action == IniAction.Get); return app.Compiler.AspTags;

				#endregion

				#region <error-control>

				case "html_errors": return GSR(ref local.ErrorControl.HtmlMessages, @default.ErrorControl.HtmlMessages, value, action);
				case "display_errors": return GSR(ref local.ErrorControl.DisplayErrors, @default.ErrorControl.DisplayErrors, value, action);
				case "error_append_string": return GSR(ref local.ErrorControl.ErrorAppendString, @default.ErrorControl.ErrorAppendString, value, action);
				case "error_prepend_string": return GSR(ref local.ErrorControl.ErrorPrependString, @default.ErrorControl.ErrorPrependString, value, action);
				case "log_errors": return GSR(ref local.ErrorControl.EnableLogging, @default.ErrorControl.EnableLogging, value, action);
				case "error_log": return GsrErrorLog(local, @default, value, action);
				case "error_reporting":
					switch (action)
					{
						case IniAction.Get: return ErrorReporting();
						case IniAction.Set: return ErrorReporting(Convert.ObjectToInteger(value));
						case IniAction.Restore: return ErrorReporting((int)@default.ErrorControl.ReportErrors);
					}
					break;

				#endregion

				#region <output-control>

				case "implicit_flush":
					Debug.Assert(action == IniAction.Get);
					return @default.OutputControl.ImplicitFlush;

				case "output_handler":
					Debug.Assert(action == IniAction.Get);
					IPhpConvertible handler = @default.OutputControl.OutputHandler;
					return (handler != null) ? handler.ToString() : null;

				case "output_buffering":
					Debug.Assert(action == IniAction.Get);
					return @default.OutputControl.OutputBuffering;

				#endregion

				#region <request-control>

				case "max_execution_time":
					{
						object result = GSR(ref local.RequestControl.ExecutionTimeout, @default.RequestControl.ExecutionTimeout, value, action);

						// applies the timeout:
						if (action != IniAction.Get)
							ScriptContext.CurrentContext.ApplyExecutionTimeout(local.RequestControl.ExecutionTimeout);

						return result;
					}

				case "ignore_user_abort":
					{
						object result = GSR(ref local.RequestControl.IgnoreUserAbort, @default.RequestControl.IgnoreUserAbort, value, action);

						// enables/disables disconnection tracking:
						if (action != IniAction.Get)
							RequestContext.CurrentContext.TrackClientDisconnection = !local.RequestControl.IgnoreUserAbort;

						return result;
					}

				#endregion

				#region <file-system>

				case "allow_url_fopen": return GSR(ref local.FileSystem.AllowUrlFopen, @default.FileSystem.AllowUrlFopen, value, action);
				case "user_agent": return GSR(ref local.FileSystem.UserAgent, @default.FileSystem.UserAgent, value, action);
				case "from": return GSR(ref local.FileSystem.AnonymousFtpPassword, @default.FileSystem.AnonymousFtpPassword, value, action);
				case "default_socket_timeout": return GSR(ref local.FileSystem.DefaultSocketTimeout, @default.FileSystem.DefaultSocketTimeout, value, action);
				case "include_path": return GSR(ref local.FileSystem.IncludePaths, @default.FileSystem.IncludePaths, value, action);

				#endregion

				#region <variables>

                case "zend.ze1_compatibility_mode": Debug.Assert(action != IniAction.Set || OptionValueToBoolean(value) == false); return false;// GSR(ref local.Variables.ZendEngineV1Compatible, @default.Variables.ZendEngineV1Compatible, value, action);
				case "magic_quotes_runtime": return GSR(ref local.Variables.QuoteRuntimeVariables, @default.Variables.QuoteRuntimeVariables, value, action);
                case "magic_quotes_sybase": Debug.Assert(action == IniAction.Get || OptionValueToBoolean(value) == local.Variables.QuoteInDbManner); return local.Variables.QuoteInDbManner; //GSR(ref local.Variables.QuoteInDbManner, @default.Variables.QuoteInDbManner, value, action);
                case "magic_quotes_gpc": Debug.Assert(action == IniAction.Get || OptionValueToBoolean(value) == global.GlobalVariables.QuoteGpcVariables); return global.GlobalVariables.QuoteGpcVariables;
				case "register_argc_argv": Debug.Assert(action == IniAction.Get); return global.GlobalVariables.RegisterArgcArgv;
				case "register_globals": Debug.Assert(action == IniAction.Get); return global.GlobalVariables.RegisterGlobals;
				case "register_long_arrays": Debug.Assert(action == IniAction.Get); return global.GlobalVariables.RegisterLongArrays;
				case "variables_order": return GsrVariablesOrder(local, @default, value, action);

				case "unserialize_callback_func":
					return GSR(ref local.Variables.DeserializationCallback, @default.Variables.DeserializationCallback, value, action);

                case "always_populate_raw_post_data":
                    switch (action)
                    {
                        case IniAction.Restore: local.Variables.AlwaysPopulateRawPostData = false; break;
                        case IniAction.Set: local.Variables.AlwaysPopulateRawPostData = Convert.ObjectToBoolean(value); break;
                    }
                    return local.Variables.AlwaysPopulateRawPostData;

				#endregion

				#region <posted-files>

				case "file_uploads": Debug.Assert(action == IniAction.Get); return global.PostedFiles.Accept;
				case "upload_tmp_dir": Debug.Assert(action == IniAction.Get); return global.PostedFiles.TempPath;

				case "post_max_size":
				case "upload_max_filesize":
					{
						Debug.Assert(action == IniAction.Get);

						HttpContext context;
						if (!Web.EnsureHttpContext(out context)) return null;

						HttpRuntimeSection http_runtime_section = (HttpRuntimeSection)context.GetSection("system.web/httpRuntime");
						return (http_runtime_section != null) ? http_runtime_section.MaxRequestLength * 1024 : 0;// values in config are in kB, PHP's in B
					}

                #endregion

				#region <assert>

				case "assert.active": return GSR(ref local.Assertion.Active, @default.Assertion.Active, value, action);
				case "assert.bail": return GSR(ref local.Assertion.Terminate, @default.Assertion.Terminate, value, action);
				case "assert.quiet_eval": return GSR(ref local.Assertion.Quiet, @default.Assertion.Quiet, value, action);
				case "assert.warning": return GSR(ref local.Assertion.ReportWarning, @default.Assertion.ReportWarning, value, action);
				case "assert.callback": return GSR(ref local.Assertion.Callback, @default.Assertion.Callback, value, action);

				#endregion

				#region <safe-mode>

				case "safe_mode": Debug.Assert(action == IniAction.Get); return global.SafeMode.Enabled;
				case "open_basedir": Debug.Assert(action == IniAction.Get); return global.SafeMode.GetAllowedPathPrefixesJoin();
				case "safe_mode_exec_dir": Debug.Assert(action == IniAction.Get); return global.SafeMode.ExecutionDirectory;

				#endregion

				#region <session>

				case "session.save_handler": return PhpSession.GsrHandler(local, @default, value, action);
				case "session.auto_start": Debug.Assert(action == IniAction.Get); return local.Session.AutoStart;
				case "session.name": Debug.Assert(action == IniAction.Get); return PhpSession.Name();

				#endregion

				#region others

				case "default_charset": return GsrDefaultCharset(value, action);
				case "default_mimetype": return GsrDefaultMimetype(value, action);
                case "memory_limit": return GsrMemoryLimit(value, action);
                case "disable_functions": return GsrDisableFunctions(value, action);

				#endregion
			}

			Debug.Fail("Option '" + option + "' is supported but not implemented.");
			return null;
		}
Example #12
0
 /// <summary>
 /// Gets, sets or restores "disable_functions" option.
 /// </summary>
 private static object GsrDisableFunctions(object value, IniAction action)
 {
     object result = "";
     switch (action)
     {
         case IniAction.Set:
         case IniAction.Restore:
             PhpException.ArgumentValueNotSupported("disable_functions", action);
             break;
     }
     return result;
 }
Example #13
0
		/// <summary>
		/// GSR routine for "session.serialize_handler" configuration option.
		/// </summary>
		internal static object GsrSerializer(LibraryConfiguration/*!*/ local, LibraryConfiguration/*!*/ @default, object value, IniAction action)
		{
			string result = local.Session.Serializer.Name;

			switch (action)
			{
				case IniAction.Set:
					{
						string name = Core.Convert.ObjectToString(value);
						Serializer serializer = Serializers.GetSerializer(name);

						if (serializer == null)
						{
							PhpException.Throw(PhpError.Warning, LibResources.GetString("unknown_serializer", name));
						}
						else
						{
							local.Session.Serializer = serializer;
						}
						break;
					}

				case IniAction.Restore:
					local.Session.Serializer = @default.Session.Serializer;
					break;
			}

			return result;
		}
Example #14
0
		/// <summary>
		/// GSR routine used for configuration.
		/// </summary>
		internal static object GsrCookieDomain(object value, IniAction action)
		{
			RequestContext context;
			HttpCookie cookie;
			if (!GetCookie(out cookie, out context)) return DefaultCookieDomain;

			string result = cookie.Domain;
			switch (action)
			{
				case IniAction.Set:
					cookie.Domain = Core.Convert.ObjectToString(value);
					break;

				case IniAction.Restore:
					cookie.Domain = DefaultCookieDomain;
					break;
			}
			return result;
		}
Example #15
0
		/// <summary>
		/// GSR routine used for configuration.
		/// </summary>
		internal static object GsrCookieSecure(object value, IniAction action)
		{
			RequestContext context;
			HttpCookie cookie;
			if (!GetCookie(out cookie, out context)) return DefaultCookieSecure;

			bool result = cookie.Secure;
			switch (action)
			{
				case IniAction.Set:
					cookie.Secure = PhpIni.OptionValueToBoolean(value);
					break;

				case IniAction.Restore:
					cookie.Secure = DefaultCookieSecure;
					break;
			}
			return result;
		}
Example #16
0
		/// <summary>
		/// GSR routine used for configuration.
		/// </summary>
		internal static object GsrCookieLifetime(object value, IniAction action)
		{
			RequestContext context;
			HttpCookie cookie;
			if (!GetCookie(out cookie, out context)) return DefaultCookieLifetime;

			int result = context.SessionCookieLifetime;
			switch (action)
			{
				case IniAction.Set:
					context.SessionCookieLifetime = Core.Convert.ObjectToInteger(value);
					break;

				case IniAction.Restore:
					context.SessionCookieLifetime = DefaultCookieLifetime;
					break;
			}
			return result;
		}
Example #17
0
		/// <summary>
		/// GSR routine used for configuration.
		/// </summary>
		internal static object GsrCacheLimiter(object value, IniAction action)
		{
			switch (action)
			{
				case IniAction.Get: return CacheLimiter();
				case IniAction.Set: return CacheLimiter(Core.Convert.ObjectToString(value));
				case IniAction.Restore: CacheLimiter(PhpSession.DefaultCacheLimiter); return null;
			}
			return null;
		}
Example #18
0
		/// <summary>
		/// GSR routine used for configuration.
		/// </summary>
		internal static object GsrCacheExpire(object value, IniAction action)
		{
			switch (action)
			{
				case IniAction.Get: return CacheExpire();
				case IniAction.Set: return CacheExpire(Core.Convert.ObjectToInteger(value));
				case IniAction.Restore: CacheExpire(PhpSession.DefaultCacheExpire); return null;
			}
			return null;
		}
Example #19
0
		/// <summary>
		/// Gets, sets or restores string option.
		/// </summary>
		public static object GSR(ref string option, string defaultValue, object value, IniAction action)
		{
			object result = option;
			switch (action)
			{
				case IniAction.Set: option = Convert.ObjectToString(value); break;
				case IniAction.Restore: option = defaultValue; break;
			}
			return result;
		}
Example #20
0
		/// <summary>
		/// Gets, sets or restores "default_mimetype" option.
		/// </summary>
		private static object GsrDefaultMimetype(object value, IniAction action)
		{
			HttpContext context;

			if (!Web.EnsureHttpContext(out context)) return null;

			object result = context.Response.ContentType;
			switch (action)
			{
				case IniAction.Set: context.Response.ContentType = Convert.ObjectToString(value); break;
				case IniAction.Restore: context.Response.ContentType = DefaultMimetype; break;
			}
			return result;
		}
Example #21
0
		/// <summary>
		/// Gets, sets or restores "session.save_handler" option.
		/// </summary>
		internal static object GsrHandler(LocalConfiguration local, LocalConfiguration @default, object value, IniAction action)
		{
			string result = local.Session.Handler.Name;

			switch (action)
			{
				case IniAction.Set:
					{
						string name = Core.Convert.ObjectToString(value);
						SessionHandler handler = SessionHandlers.GetHandler(name);

						if (handler == null)
						{
							PhpException.Throw(PhpError.Warning,
							  PhpException.ToErrorMessage(CoreResources.GetString("unknown_session_handler", name)));
						}
						else
						{
							local.Session.Handler = handler;
						}

						break;
					}
				case IniAction.Restore:
					local.Session.Handler = @default.Session.Handler;
					break;
			}

			return result;
		}
Example #22
0
		/// <summary>
		/// Gets, sets or restores "error_log" option.
		/// </summary>
		private static object GsrErrorLog(LocalConfiguration local, LocalConfiguration @default, object value, IniAction action)
		{
			if (action == IniAction.Restore)
			{
				local.ErrorControl.LogFile = @default.ErrorControl.LogFile;
				local.ErrorControl.SysLog = @default.ErrorControl.SysLog;
				return null;
			}

			string result = (local.ErrorControl.SysLog) ? ErrorLogSysLog : local.ErrorControl.LogFile;

			if (action == IniAction.Set)
			{
				string svalue = Convert.ObjectToString(value);
				local.ErrorControl.SysLog = (string.Compare(svalue, ErrorLogSysLog, StringComparison.InvariantCultureIgnoreCase) == 0);
				local.ErrorControl.LogFile = (local.ErrorControl.SysLog) ? svalue : null;
			}
			return result;
		}
Example #23
0
            public static PhpValue Gsr(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
            {
                var sessionconfig = config.GetSessionConfiguration();

                if (sessionconfig == null)
                {
                    return(false);
                }

                switch (option)
                {
                case "session.auto_start":
                    if (action != IniAction.Get)
                    {
                        PhpException.ArgumentValueNotSupported(option, action);
                    }
                    return(sessionconfig.AutoStart);

                case "session.save_handler":
                    if (action != IniAction.Get)
                    {
                        PhpException.ArgumentValueNotSupported(option, action);
                    }
                    var handler = ctx.HttpPhpContext?.SessionHandler;
                    return(handler != null ? handler.HandlerName : PhpValue.False);

                case "session.serialize_handler":
                    return(GetSet(ref sessionconfig.SerializeHandler, "php", value, action));

                case "session.name":
                    return(GetSet(ref sessionconfig.SessionName, DefaultSessionName, value, action));

                case "session.cookie_lifetime":
                    return(GetSet(ref sessionconfig.CookieLifetime, 0, value, action));

                case "session.cookie_path":
                    return(GetSet(ref sessionconfig.CookiePath, "/", value, action));

                case "session.cookie_domain":
                    return(GetSet(ref sessionconfig.CookieDomain, "", value, action));

                case "session.cookie_secure":
                    return(GetSet(ref sessionconfig.CookieSecure, false, value, action));

                case "session.cookie_httponly":
                    return(GetSet(ref sessionconfig.CookieHttpOnly, false, value, action));

                default:
                    throw new ArgumentOutOfRangeException(nameof(option));
                }
            }
Example #24
0
            /// <summary>
            /// Gets or sets a value of a legacy configuration option.
            /// </summary>
            private static PhpValue GetSet(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
            {
                var local = config.Get <Config>();

                if (local == null)
                {
                    return(PhpValue.False);
                }

                return(option switch
                {
                    "highlight.comment" => StandardPhpOptions.GetSet(ref local.comment, null, value, action),
                    "highlight.default" => StandardPhpOptions.GetSet(ref local.@default, null, value, action),
                    "highlight.keyword" => StandardPhpOptions.GetSet(ref local.keyword, null, value, action),
                    "highlight.string" => StandardPhpOptions.GetSet(ref local.@string, null, value, action),
                    "highlight.html" => StandardPhpOptions.GetSet(ref local.html, null, value, action),

                    _ => throw new ArgumentOutOfRangeException(nameof(option)),
                });
Example #25
0
        static PhpValue GsrSession(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            if (action != IniAction.Get)
            {
                PhpException.Throw(PhpError.Warning, "Modifying session options is not supported.");
            }

            switch (option.ToLowerInvariant())
            {
            case "session.serialize_handler":
                return((PhpValue)"php");

            default:
                throw new ArgumentOutOfRangeException(nameof(option));
            }
        }
Example #26
0
        /// <summary>
        /// Gets or sets option.
        /// </summary>
        public static double GetSet(ref double option, int defaultValue, PhpValue newValue, IniAction action)
        {
            var oldValue = option;

            if (action == IniAction.Set)
            {
                option = (int)newValue.ToDouble();
            }

            return(oldValue);
        }
Example #27
0
    public void Ini()
    {
        var ini = new IniAction();

        ini.Ini();
    }
Example #28
0
		/// <summary>
		/// Gets, sets, or restores a value of a legacy configuration option.
		/// </summary>
		private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
		{
            ZlibLocalConfig local = (ZlibLocalConfig)config.GetLibraryConfig(ZlibLibraryDescriptor.Singleton);
            ZlibLocalConfig @default = DefaultLocal;
            ZlibGlobalConfig global = Global;

			switch (option)
			{
                //// local:

                //case "mssql.connect_timeout":
                //return PhpIni.GSR(ref local.ConnectTimeout, @default.ConnectTimeout, value, action);

                //case "mssql.timeout":
                //return PhpIni.GSR(ref local.Timeout, @default.Timeout, value, action);

                //case "mssql.batchsize":
                //return PhpIni.GSR(ref local.BatchSize, @default.BatchSize, value, action);

                // global:  

                case "zlib.output_compression":
                Debug.Assert(action == IniAction.Get, "Setting zlib.output_compression is not currently implemented.");
                return false;

                case "zlib.output_compression_level":
                Debug.Assert(action == IniAction.Get, "Setting zlib.output_compression_level is not currently implemented.");
                return -1;

                case "zlib.output_handler":
                Debug.Assert(action == IniAction.Get, "Setting zlib.output_handler is not currently implemented.");
                return "";
			}

			Debug.Fail("Option '" + option + "' is not currently supported.");
			return null;
		}
Example #29
0
            /// <summary>
            /// Gets or sets a value of a legacy configuration option.
            /// </summary>
            private static PhpValue GetSet(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
            {
                var local = config.Get <IconvConfig>();

                if (local == null)
                {
                    return(PhpValue.Null);
                }

                switch (option)
                {
                case "iconv.input_encoding":
                    return((PhpValue)StandardPhpOptions.GetSet(ref local.InputEncoding, "ISO-8859-1", value, action));

                case "iconv.internal_encoding":
                    return((PhpValue)StandardPhpOptions.GetSet(ref local.InternalEncoding, "ISO-8859-1", value, action));

                case "iconv.output_encoding":
                    return((PhpValue)StandardPhpOptions.GetSet(ref local.OutputEncoding, "ISO-8859-1", value, action));
                }

                Debug.Fail("Option '" + option + "' is not currently supported.");
                return(PhpValue.Null);
            }
Example #30
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            SQLiteLocalConfig  local    = (SQLiteLocalConfig)config.GetLibraryConfig(SQLiteLibraryDescriptor.Singleton);
            SQLiteLocalConfig  @default = DefaultLocal;
            SQLiteGlobalConfig global   = Global;

            switch (option)
            {
            // local:

            // global:
            case "sqlite.assoc_case":
                Debug.Assert(action == IniAction.Get);
                return(PhpIni.GSR(ref global.AssocCase, 0, value, action));
            }

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return(null);
        }
Example #31
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            ZipLocalConfig  local    = (ZipLocalConfig)config.GetLibraryConfig(ZipLibraryDescriptor.Singleton);
            ZipLocalConfig  @default = DefaultLocal;
            ZipGlobalConfig global   = Global;

            //switch (option)
            //{
            //    // local:

            //    // global:

            //}

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return(null);
        }
Example #32
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            GdLocalConfig local = (GdLocalConfig)config.GetLibraryConfig(GdLibraryDescriptor.Singleton);
            GdLocalConfig @default = DefaultLocal;
            GdGlobalConfig global = Global;

            //switch (option)
            //{
            //// local:

            //case "mssql.connect_timeout":
            //return PhpIni.GSR(ref local.ConnectTimeout, @default.ConnectTimeout, value, action);

            //case "mssql.timeout":
            //return PhpIni.GSR(ref local.Timeout, @default.Timeout, value, action);

            //case "mssql.batchsize":
            //return PhpIni.GSR(ref local.BatchSize, @default.BatchSize, value, action);

            //// global:  

            //case "mssql.max_links":
            //Debug.Assert(action == IniAction.Get);
            //return PhpIni.GSR(ref global.MaxConnections, 0, null, action);

            //case "mssql.secure_connection":
            //Debug.Assert(action == IniAction.Get);
            //return PhpIni.GSR(ref global.NTAuthentication, false, null, action);
            //}

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return null;
        }
Example #33
0
		/// <summary>
		/// Tries to get, set, or restore an option given its PHP name and value.
		/// </summary>
		/// <param name="name">The option name.</param>
		/// <param name="value">The option new value if applicable.</param>
		/// <param name="action">The action to be taken.</param>
		/// <param name="error"><B>true</B>, on failure.</param>
		/// <returns>The option old value.</returns>
		/// <exception cref="PhpException">The option not supported (Warning).</exception>
		/// <exception cref="PhpException">The option is read only but action demands write access (Warning).</exception>
		internal static object TryGetSetRestore(string name, object value, IniAction action, out bool error)
		{
			Debug.Assert(name != null);
			error = true;

			IniOptions.OptionDefinition option = GetOption(name);

			// option not found:
			if (option == null)
			{
				// check for options in native extensions:
				string result = null;
				switch (action)
				{
					case IniAction.Get: error = !Externals.IniGet(name, out result); break;
					case IniAction.Set: error = !Externals.IniSet(name, Convert.ObjectToString(value), out result); break;
					case IniAction.Restore: error = !Externals.IniRestore(name); break;
				}
				if (error) PhpException.Throw(PhpError.Warning, LibResources.GetString("unknown_option", name));
				return result;
			}

			// the option is known but not supported:
			if ((option.Flags & IniFlags.Supported) == 0)
			{
				PhpException.Throw(PhpError.Warning, LibResources.GetString("option_not_supported", name));
				return null;
			}

			// the option is global thus cannot be changed:
			if ((option.Flags & IniFlags.Local) == 0 && action != IniAction.Get)
			{
				PhpException.Throw(PhpError.Warning, LibResources.GetString("option_readonly", name));
				return null;
			}

			error = false;
			return option.Gsr(Configuration.Local, name, value, action);
		}
Example #34
0
		/// <summary>
		/// Gets, sets or restores integer option.
		/// </summary>
		public static object GSR(ref int option, int defaultValue, object value, IniAction action)
		{
			object result = option;
			switch (action)
			{
				case IniAction.Set: option = Convert.ObjectToInteger(value); break;
				case IniAction.Restore: option = defaultValue; break;
			}
			return result;
		}
Example #35
0
            /// <summary>
            /// Gets or sets a value of a legacy configuration option.
            /// </summary>
            private static PhpValue GetSet(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
            {
                var local = config.Get <MbConfig>();

                if (local == null)
                {
                    return(PhpValue.Null);
                }

                switch (option)
                {
                //mbstring.language   "neutral"   PHP_INI_ALL Available since PHP 4.3.0.PHP_INI_PERDIR in PHP <= 5.2.6
                //mbstring.detect_order NULL    PHP_INI_ALL Available since PHP 4.0.6.
                //mbstring.http_input "pass"  PHP_INI_ALL Available since PHP 4.0.6.Deprecated in PHP 5.6.0.
                //mbstring.http_output    "pass"  PHP_INI_ALL Available since PHP 4.0.6.Deprecated in PHP 5.6.0.
                //mbstring.script_encoding    NULL PHP_INI_ALL Available since PHP 4.3.0.Removed in PHP 5.4.0.Use zend.script_encoding instead.
                //mbstring.substitute_character NULL    PHP_INI_ALL Available since PHP 4.0.6.

                case "mbstring.func_overload":
                    // "0" PHP_INI_SYSTEM PHP_INI_PERDIR from PHP 4.3 to 5.2.6, otherwise PHP_INI_SYSTEM. Available since PHP 4.2.0.Deprecated in PHP 7.2.0.
                    return((PhpValue)0);

                //mbstring.encoding_translation   "0" PHP_INI_PERDIR Available since PHP 4.3.0.
                //mbstring.strict_detection   "0" PHP_INI_ALL Available since PHP 5.1.2.
                //mbstring.internal_encoding  NULL PHP_INI_ALL Available since PHP 4.0.6.Deprecated in PHP 5.6.0.

                default:
                    break;
                }

                Debug.Fail("Option '" + option + "' is not currently supported.");
                return(PhpValue.Null);
            }
Example #36
0
		/// <summary>
		/// Gets, sets or restores callback option.
		/// </summary>
		public static object GSR(ref PhpCallback option, PhpCallback defaultValue, object value, IniAction action)
		{
			object result = option;
			switch (action)
			{
				case IniAction.Set: option = Convert.ObjectToCallback(value); break;
				case IniAction.Restore: option = defaultValue; break;
			}
			return result;
		}
Example #37
0
        internal PhpValue Gsr(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "session.serialize_handler":
                return((PhpValue)GetSet(ref SerializeHandler, "php", value, action));

            case "session.name":
                return((PhpValue)GetSet(ref SessionName, DefaultSessionName, value, action));

            default:
                throw new ArgumentOutOfRangeException(nameof(option));
            }
        }
Example #38
0
 /// <summary>
 /// Gets, sets or restores "memory_limit" option.
 /// </summary>
 private static object GsrMemoryLimit(object value, IniAction action)
 {
     object result = -1;
     switch (action)
     {
         case IniAction.Set:
         case IniAction.Restore:
             PhpException.ArgumentValueNotSupported("memory_limit", action);
             break;
     }
     return result;
 }
Example #39
0
        static PhpValue GsrCore(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "precision":
                // TODO: this can be set in .NET <see cref="Core.Convert.ToString(double, Context)"/> by specifying "G{precision}", consider performance
                AssertGet(option, action);
                return((PhpValue)15);       // default Double precision in .NET

            case "register_globals":
                AssertGet(option, action);
                return(PhpValue.False);     // always Off

            case "allow_url_fopen":
                return((PhpValue)GetSet(ref config.Core.AllowUrlFopen, true, value, action));

            case "include_path":
                return((PhpValue)GetSet(ref config.Core.IncludePaths, ".", value, action));

            case "allow_url_include":
                AssertGet(option, action);
                return(PhpValue.False);

            case "disable_functions":
            case "disable_classes":
                AssertGet(option, action);
                return((PhpValue)string.Empty);

            case "memory_limit":
                AssertGet(option, action);
                return((PhpValue)(-1));    // no memory limit

            case "post_max_size":
            case "upload_max_filesize":
                AssertGet(option, action);
                return(ctx.HttpPhpContext != null ? ctx.HttpPhpContext.MaxRequestSize : (8_000_000 /*cli mode, just return something*/));

            case "docref_root":
                return((PhpValue)GetSet(ref config.Core.docref_root, "", value, action));

            case "docref_ext":
                return((PhpValue)GetSet(ref config.Core.docref_ext, "", value, action));

            case "open_basedir":
                Debug.Assert(action == IniAction.Get);
                return((PhpValue)string.Empty);

            default:
                throw new ArgumentException();
            }
        }
Example #40
0
		/// <summary>
		/// Gets, sets or restores "variables_order" option.
		/// </summary>
		private static object GsrVariablesOrder(LocalConfiguration local, LocalConfiguration @default, object value, IniAction action)
		{
			object result = local.Variables.RegisteringOrder;
			switch (action)
			{
				case IniAction.Set:
					string svalue = Convert.ObjectToString(value);

					if (!LocalConfiguration.VariablesSection.ValidateRegisteringOrder(svalue))
						PhpException.Throw(PhpError.Warning, CoreResources.GetString("invalid_registering_order"));
					else
						local.Variables.RegisteringOrder = svalue;
					break;

				case IniAction.Restore:
					local.Variables.RegisteringOrder = @default.Variables.RegisteringOrder;
					break;
			}
			return result;
		}
Example #41
0
        static PhpValue GsrMail(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "smtp":
                return((PhpValue)GetSet(ref config.Core.SmtpServer, null, value, action));

            case "smtp_port":
                return((PhpValue)GetSet(ref config.Core.SmtpPort, 25, value, action));

            case "sendmail_from":
                return((PhpValue)GetSet(ref config.Core.DefaultFromHeader, null, value, action));

            case "mail.add_x_header":
                return((PhpValue)GetSet(ref config.Core.AddXHeader, false, value, action));

            case "mail.force_extra_parameters":
                return((PhpValue)GetSet(ref config.Core.ForceExtraMailParameters, null, value, action));

            default:
                throw new ArgumentOutOfRangeException(nameof(option));
            }
        }
Example #42
0
		/// <summary>
		/// Implementation of <see cref="AssertOptions(AssertOption)"/> and <see cref="AssertOptions(AssertOption,object)"/>.
		/// </summary>
		/// <remarks>Only gets/sets. No restore.</remarks>
		private static object AssertOptions(AssertOption option, object value, IniAction action)
		{
			LocalConfiguration config = Configuration.Local;

			switch (option)
			{
				case AssertOption.Active:
					return GSR(ref config.Assertion.Active, false, value, action);

				case AssertOption.Callback:
					return GSR(ref config.Assertion.Callback, null, value, action);

				case AssertOption.Quiet:
					return GSR(ref config.Assertion.Quiet, false, value, action);

				case AssertOption.Terminate:
					return GSR(ref config.Assertion.Terminate, false, value, action);

				case AssertOption.ReportWarning:
					return GSR(ref config.Assertion.ReportWarning, false, value, action);

				default:
					PhpException.InvalidArgument("option");
					return false;
			}
		}
Example #43
0
 public static bool IsSet(this IniAction action) => action == IniAction.Set;
Example #44
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            MsSqlLocalConfig  local    = (MsSqlLocalConfig)config.GetLibraryConfig(MsSqlLibraryDescriptor.Singleton);
            MsSqlLocalConfig  @default = DefaultLocal;
            MsSqlGlobalConfig global   = Global;

            switch (option)
            {
            // local:

            case "mssql.connect_timeout":
                return(PhpIni.GSR(ref local.ConnectTimeout, @default.ConnectTimeout, value, action));

            case "mssql.timeout":
                return(PhpIni.GSR(ref local.Timeout, @default.Timeout, value, action));

            case "mssql.batchsize":
                return(PhpIni.GSR(ref local.BatchSize, @default.BatchSize, value, action));

            // global:

            case "mssql.max_links":
                Debug.Assert(action == IniAction.Get);
                return(PhpIni.GSR(ref global.MaxConnections, 0, null, action));

            case "mssql.secure_connection":
                Debug.Assert(action == IniAction.Get);
                return(PhpIni.GSR(ref global.NTAuthentication, false, null, action));
            }

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return(null);
        }
Example #45
0
        /// <summary>
        /// Gets or sets option.
        /// </summary>
        public static bool GetSet(ref bool option, bool defaultValue, PhpValue newValue, IniAction action)
        {
            var oldValue = option;

            if (action == IniAction.Set)
            {
                option = newValue.ToBoolean();
            }

            return(oldValue);
        }
Example #46
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            ZlibLocalConfig  local    = (ZlibLocalConfig)config.GetLibraryConfig(ZlibLibraryDescriptor.Singleton);
            ZlibLocalConfig  @default = DefaultLocal;
            ZlibGlobalConfig global   = Global;

            switch (option)
            {
            //// local:

            //case "mssql.connect_timeout":
            //return PhpIni.GSR(ref local.ConnectTimeout, @default.ConnectTimeout, value, action);

            //case "mssql.timeout":
            //return PhpIni.GSR(ref local.Timeout, @default.Timeout, value, action);

            //case "mssql.batchsize":
            //return PhpIni.GSR(ref local.BatchSize, @default.BatchSize, value, action);

            // global:

            case "zlib.output_compression":
                Debug.Assert(action == IniAction.Get, "Setting zlib.output_compression is not currently implemented.");
                return(false);

            case "zlib.output_compression_level":
                Debug.Assert(action == IniAction.Get, "Setting zlib.output_compression_level is not currently implemented.");
                return(-1);

            case "zlib.output_handler":
                Debug.Assert(action == IniAction.Get, "Setting zlib.output_handler is not currently implemented.");
                return("");
            }

            Debug.Fail("Option '" + option + "' is not currently supported.");
            return(null);
        }
Example #47
0
        /// <summary>
        /// Gets, sets, or restores a value of a legacy configuration option.
        /// </summary>
        private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
        {
            MySqlLocalConfig local = (MySqlLocalConfig)config.GetLibraryConfig(MySqlLibraryDescriptor.Singleton);
            MySqlLocalConfig @default = DefaultLocal;
            MySqlGlobalConfig global = Global;

            switch (option)
            {
                // local:

                case "mysql.connect_timeout": return PhpIni.GSR(ref local.ConnectTimeout, @default.ConnectTimeout, value, action);
                case "mysql.default_port": return PhpIni.GSR(ref local.Port, @default.Port, value, action);
                case "mysql.default_host": return PhpIni.GSR(ref local.Server, @default.Server, value, action);
                case "mysql.default_user": return PhpIni.GSR(ref local.User, @default.User, value, action);
                case "mysql.default_password": return PhpIni.GSR(ref local.Password, @default.Password, value, action);
                case "mysql.default_command_timeout": return PhpIni.GSR(ref local.DefaultCommandTimeout, @default.DefaultCommandTimeout, value, action);
                case "mysql.connection_string": return PhpIni.GSR(ref local.ConnectionString, null, value, action);

                // global:

                case "mysql.max_links":
                    Debug.Assert(action == IniAction.Get);
                    return PhpIni.GSR(ref global.MaxConnections, -1, null, action);
                case "mysql.max_pool_size":
                    return PhpIni.GSR(ref global.MaxPoolSize, 100, value, action);
            }

            Debug.Fail("Option '" + option + "' is supported but not implemented.");
            return null;
        }
Example #48
0
 static PhpValue GsrSession(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
 {
     return(config.Get <SessionConfiguration>().Gsr(ctx, config, option, value, action));
 }
Example #49
0
        static PhpValue GsrCore(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "include_path":
                return((PhpValue)GetSet(ref config.Core.IncludePaths, ".", value, action));

            case "post_max_size":
            case "upload_max_filesize":
                Debug.Assert(action == IniAction.Get);
                return((PhpValue)ctx.HttpPhpContext.MaxRequestSize);

            default:
                throw new ArgumentException();
            }
        }
Example #50
0
        /// <summary>
        /// Tries to get or set an option given its PHP name and value.
        /// </summary>
        /// <param name="ctx">Runtime context.</param>
        /// <param name="config">Configuration to be read or set.</param>
        /// <param name="name">The option name.</param>
        /// <param name="value">The option new value if applicable.</param>
        /// <param name="action">The action to be taken.</param>
        /// <param name="error"><B>true</B>, on failure.</param>
        /// <returns>The option old value.</returns>
        /// <exception cref="PhpException">The option not supported (Warning).</exception>
        /// <exception cref="PhpException">The option is read only but action demands write access (Warning).</exception>
        internal static PhpValue TryGetSet(Context ctx, IPhpConfigurationService config, string name, PhpValue value, IniAction action, out bool error)
        {
            Debug.Assert(name != null);
            error = true;

            var def = GetOption(name);

            // option not found:
            if (def.Gsr == null)
            {
                PhpException.Throw(PhpError.Warning, string.Format(Resources.LibResources.unknown_option, name));
                return(PhpValue.Null);
            }

            // the option is known but not supported:
            if ((def.Flags & IniFlags.Supported) == 0)
            {
                PhpException.Throw(PhpError.Warning, string.Format(Resources.LibResources.option_not_supported, name));
                return(PhpValue.Null);
            }

            // the option is global thus cannot be changed:
            if ((def.Flags & IniFlags.Local) == 0 && action != IniAction.Get)
            {
                PhpException.Throw(PhpError.Warning, string.Format(Resources.LibResources.option_readonly, name));
                return(PhpValue.Null);
            }

            error = false;
            return(def.Gsr(ctx, config, name, value, action));
        }
Example #51
0
        /// <summary>
		/// Gets, sets, or restores a value of a legacy configuration option.
		/// </summary>
		private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
		{
			LibraryConfiguration local = (LibraryConfiguration)config.GetLibraryConfig(LibraryDescriptor.Singleton);
			LibraryConfiguration @default = DefaultLocal;

			switch (option)
			{
				case "sendmail_from": return PhpIni.GSR(ref local.Mailer.DefaultFromHeader, @default.Mailer.DefaultFromHeader, value, action);
				case "SMTP": return PhpIni.GSR(ref local.Mailer.SmtpServer, @default.Mailer.SmtpServer, value, action);
				case "smtp_port": return PhpIni.GSR(ref local.Mailer.SmtpPort, @default.Mailer.SmtpPort, value, action);
                case "mail.add_x_header": return PhpIni.GSR(ref local.Mailer.AddXHeader, @default.Mailer.AddXHeader, value, action);

				case "highlight.bg": return PhpIni.GSR(ref local.Highlighting.Background, @default.Highlighting.Background, value, action);
				case "highlight.comment": return PhpIni.GSR(ref local.Highlighting.Comment, @default.Highlighting.Comment, value, action);
				case "highlight.default": return PhpIni.GSR(ref local.Highlighting.Default, @default.Highlighting.Default, value, action);
				case "highlight.html": return PhpIni.GSR(ref local.Highlighting.Html, @default.Highlighting.Html, value, action);
				case "highlight.keyword": return PhpIni.GSR(ref local.Highlighting.Keyword, @default.Highlighting.Keyword, value, action);
				case "highlight.string": return PhpIni.GSR(ref local.Highlighting.String, @default.Highlighting.String, value, action);

				case "session.serialize_handler": return PhpSession.GsrSerializer(local, @default, value, action);
				case "session.cache_expire": return PhpSession.GsrCacheExpire(value, action);
				case "session.cache_limiter": return PhpSession.GsrCacheLimiter(value, action);
				case "session.save_path": return PhpIni.GSR(ref local.Session.SavePath, @default.Session.SavePath, value, action);
				case "session.gc_maxlifetime": return PhpIni.GSR(ref local.Session.GcMaxLifetime, @default.Session.GcMaxLifetime, value, action);
				case "session.gc_probability": return PhpIni.GSR(ref local.Session.GcProbability, @default.Session.GcProbability, value, action);
				case "session.gc_divisor": return PhpIni.GSR(ref local.Session.GcDivisor, @default.Session.GcDivisor, value, action);

				case "session.cookie_lifetime": return PhpSession.GsrCookieLifetime(value, action);
				case "session.cookie_path": return PhpSession.GsrCookiePath(value, action);
				case "session.cookie_domain": return PhpSession.GsrCookieDomain(value, action);
				case "session.cookie_secure": return PhpSession.GsrCookieSecure(value, action);

				case "date.default_latitude": return PhpIni.GSR(ref local.Date.Latitude, @default.Date.Latitude, value, action);
				case "date.default_longitude": return PhpIni.GSR(ref local.Date.Longitude, @default.Date.Longitude, value, action);
				case "date.sunrise_zenith": return PhpIni.GSR(ref local.Date.SunriseZenith, @default.Date.SunriseZenith, value, action);
				case "date.sunset_zenith": return PhpIni.GSR(ref local.Date.SunsetZenith, @default.Date.SunsetZenith, value, action);
				case "date.timezone": return PhpTimeZone.GsrTimeZone(local, @default, value, action);
			}

			Debug.Fail("Option '" + option + "' is supported but not implemented.");
			return null;
		}
Example #52
0
        /// <summary>
        /// Gets or sets option.
        /// </summary>
        public static int GetSet(ref int option, int defaultValue, PhpValue newValue, IniAction action)
        {
            var oldValue = option;

            if (action == IniAction.Set)
            {
                option = (int)newValue.ToLong();
            }

            return(oldValue);
        }
Example #53
0
        static PhpValue GsrCore(IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "include_path":
                return((PhpValue)GetSet(ref config.Core.IncludePaths, ".", value, action));

            default:
                throw new ArgumentException();
            }
        }
Example #54
0
        /// <summary>
        /// Gets or sets option.
        /// </summary>
        public static string GetSet(ref string option, string defaultValue, PhpValue newValue, IniAction action)
        {
            var oldValue = option;

            if (action == IniAction.Set)
            {
                option = newValue.AsString();
            }

            return(oldValue);
        }
Example #55
0
            /// <summary>
            /// Gets, sets, or restores a value of a legacy configuration option.
            /// </summary>
            private static PhpValue GetSet(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
            {
                switch (option)
                {
                case "zlib.output_compression":
                    Debug.Assert(action == IniAction.Get, "Setting zlib.output_compression is not currently implemented.");
                    return(PhpValue.False);

                case "zlib.output_compression_level":
                    Debug.Assert(action == IniAction.Get, "Setting zlib.output_compression_level is not currently implemented.");
                    return(PhpValue.Create(-1));

                case "zlib.output_handler":
                    Debug.Assert(action == IniAction.Get, "Setting zlib.output_handler is not currently implemented.");
                    return(PhpValue.Create(""));
                }

                Debug.Fail("Option '" + option + "' is not currently supported.");
                return(PhpValue.Null);
            }
Example #56
0
        static PhpValue GsrCore(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action)
        {
            switch (option.ToLowerInvariant())
            {
            case "precision":
                // TODO: this can be set in .NET <see cref="Core.Convert.ToString(double, Context)"/> by specifying "G{precision}", consider performance
                return((PhpValue)15);       // default Double precision in .NET

            case "allow_url_fopen":
                return((PhpValue)GetSet(ref config.Core.AllowUrlFopen, true, value, action));

            case "include_path":
                return((PhpValue)GetSet(ref config.Core.IncludePaths, ".", value, action));

            case "post_max_size":
            case "upload_max_filesize":
                Debug.Assert(action == IniAction.Get);
                return((PhpValue)ctx.HttpPhpContext.MaxRequestSize);

            case "docref_root":
                return((PhpValue)GetSet(ref config.Core.docref_root, "", value, action));

            case "docref_ext":
                return((PhpValue)GetSet(ref config.Core.docref_ext, "", value, action));

            case "open_basedir":
                Debug.Assert(action == IniAction.Get);
                return((PhpValue)string.Empty);

            default:
                throw new ArgumentException();
            }
        }
Example #57
0
		/// <summary>
		/// Gets, sets, or restores a value of a legacy configuration option.
		/// </summary>
		private static object GetSetRestore(LocalConfiguration config, string option, object value, IniAction action)
		{
            IconvLocalConfig local = (IconvLocalConfig)config.GetLibraryConfig(IconvLibraryDescriptor.Singleton);
            IconvLocalConfig @default = DefaultLocal;
            IconvGlobalConfig global = Global;

            //[iconv]
            //;iconv.input_encoding = ISO-8859-1
            //;iconv.internal_encoding = ISO-8859-1
            //;iconv.output_encoding = ISO-8859-1

			switch (option)
			{
                //// local:

                case "iconv.input_encoding":
                    return PhpIni.GSR(ref local.InputEncoding, @default.InputEncoding, value, action);

                case "iconv.internal_encoding":
                    return PhpIni.GSR(ref local.InternalEncoding, @default.InternalEncoding, value, action);

                case "iconv.output_encoding":
                    return PhpIni.GSR(ref local.OutputEncoding, @default.OutputEncoding, value, action);

            }

			Debug.Fail("Option '" + option + "' is supported but not implemented.");
			return null;
		}