/// <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); }
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)); } }
/// <summary> /// Gets, sets, or restores a value of a legacy configuration option. /// </summary> static PhpValue GetSet(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action) { var local = config.Get <MySqlConfiguration>(); switch (option) { // local: case "mysql.connect_timeout": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.ConnectTimeout, 0, value, action)); case "mysql.default_port": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.Port, 3306, value, action)); case "mysql.default_host": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.Server, null, value, action)); case "mysql.default_user": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.User, "root", value, action)); case "mysql.default_password": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.Password, "", value, action)); case "mysql.default_command_timeout": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.DefaultCommandTimeout, -1, value, action)); case "mysql.connection_string": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.ConnectionString, null, value, action)); // global: case "mysql.max_links": Debug.Assert(action == IniAction.Get); return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.MaxConnections, -1, value, action)); case "mysql.max_pool_size": return((PhpValue)Pchp.Library.StandardPhpOptions.GetSet(ref local.MaxPoolSize, 100, value, action)); } Debug.Fail("Option '" + option + "' is supported but not implemented."); return(PhpValue.Null); }
/// <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)); }
/// <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); }
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(); } }
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(); } }
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(); } }
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)); } }
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)); } }
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)); } }
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(); } }
/// <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)), });
/// <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); }
/// <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.False); } switch (option) { case "iconv.input_encoding": return(StandardPhpOptions.GetSet(ref local.InputEncoding, "ISO-8859-1", value, action)); case "iconv.internal_encoding": return(StandardPhpOptions.GetSet(ref local.InternalEncoding, "ISO-8859-1", value, action)); case "iconv.output_encoding": return(StandardPhpOptions.GetSet(ref local.OutputEncoding, "ISO-8859-1", value, action)); } return(PhpValue.False); }
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)); } }
static PhpValue GetSetOption(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action) { var local = config.Get <BCMathConfig>(); if (local == null) { return(PhpValue.Null); } if (string.Equals(option, BCMathOptions.Scale)) { var oldvalue = local.Scale; if (action == IniAction.Set) { local.Scale = Math.Max(0, (int)value); } return(oldvalue); } else { Debug.Fail("Option '" + option + "' is not currently supported."); return(PhpValue.Null); } }
/// <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); }
static PhpValue GsrCore(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action) { switch (option) { case "precision": // CONSIDER: this can be set in our Context.InvariantNumberFormatInfo ? AssertGet(option, action); return(15); // default Double precision in .NET case "register_globals": AssertGet(option, action); return(PhpValue.False); // always Off case "allow_url_fopen": return(GetSet(ref config.Core.AllowUrlFopen, true, value, action)); case "include_path": return(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(string.Empty); case "file_uploads": AssertGet(option, action); return(PhpValue.True); //case "max_file_uploads": // return 20; case "memory_limit": AssertGet(option, action); return(-1); // no memory limit case "post_max_size": case "upload_max_filesize": AssertGet(option, action); return(ctx.HttpPhpContext != null ? ctx.HttpPhpContext.MaxRequestSize : (16_000_000 /*cli mode, just return something*/)); case "docref_root": return(GetSet(ref config.Core.docref_root, "", value, action)); case "docref_ext": return(GetSet(ref config.Core.docref_ext, "", value, action)); case "open_basedir": AssertGet(option, action); return(string.Empty); case "max_execution_time": if (action == IniAction.Set) { var oldvalue = config.Core.ExecutionTimeout; ctx.ApplyExecutionTimeout(config.Core.ExecutionTimeout = Math.Max(0, value.ToInt())); return(oldvalue); } else { return(config.Core.ExecutionTimeout); } default: throw new ArgumentException(); } }
static PhpValue GsrSession(Context ctx, IPhpConfigurationService config, string option, PhpValue value, IniAction action) { return(config.Get <SessionConfiguration>().Gsr(ctx, config, option, value, action)); }
static SessionConfiguration GetSessionConfiguration(this IPhpConfigurationService config) { return((SessionConfiguration)config.Get <IPhpSessionConfiguration>()); }
public PhpOptions(IPhpConfigurationService globalconfiguration = null) { _globalconfiguration = globalconfiguration ?? Context.DefaultPhpConfigurationService.Instance; }