1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-08-28 16:22:18 +00:00

[Patchwork] Fix Network Config

Network config should now work in a stable mannor, the previous person did not port over the imports and thats why this broke in the first place, possibly required import did not exist for fabric at the time?
This commit is contained in:
Merith-TK 2021-03-27 14:44:47 -07:00
parent 46bc42d5a7
commit 2c3573719b
2 changed files with 124 additions and 113 deletions

View File

@ -29,6 +29,8 @@ dependencies {
modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}" modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}"
compile 'com.electronwill.night-config:json:3.6.0'
modImplementation "me.shedaniel.cloth:config-2:${cloth_config_version}" modImplementation "me.shedaniel.cloth:config-2:${cloth_config_version}"
modImplementation "io.github.prospector:modmenu:${modmenu_version}" modImplementation "io.github.prospector:modmenu:${modmenu_version}"

View File

@ -6,120 +6,129 @@
package dan200.computercraft.core.apis.http.options; package dan200.computercraft.core.apis.http.options;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.core.InMemoryCommentedFormat;
import com.electronwill.nightconfig.core.UnmodifiableConfig;
import dan200.computercraft.ComputerCraft;
import javax.annotation.Nullable;
import java.util.Locale;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
public class AddressRuleConfig { public class AddressRuleConfig {
// TODO haha config is gone, do fix
// TODO FIGURE OUT WHY THE HELL THE PREVIOUS GUY HAD TO COMMENT THIS OUT public static UnmodifiableConfig makeRule( String host, Action action )
{
CommentedConfig config = InMemoryCommentedFormat.defaultInstance().createConfig( ConcurrentHashMap::new );
config.add( "host", host );
config.add( "action", action.name().toLowerCase( Locale.ROOT ) );
// public static UnmodifiableConfig makeRule( String host, Action action ) if( host.equals( "*" ) && action == Action.ALLOW )
// { {
// CommentedConfig config = InMemoryCommentedFormat.defaultInstance().createConfig( ConcurrentHashMap::new ); config.setComment( "timeout", "The period of time (in milliseconds) to wait before a HTTP request times out. Set to 0 for unlimited." );
// config.add( "host", host ); config.add( "timeout", AddressRule.TIMEOUT );
// config.add( "action", action.name().toLowerCase( Locale.ROOT ) );
// config.setComment( "max_download", "The maximum size (in bytes) that a computer can download in a single request. Note that responses may receive more data than allowed, but this data will not be returned to the client." );
// if( host.equals( "*" ) && action == Action.ALLOW ) config.set( "max_download", AddressRule.MAX_DOWNLOAD );
// {
// config.setComment( "timeout", "The period of time (in milliseconds) to wait before a HTTP request times out. Set to 0 for unlimited." ); config.setComment( "max_upload", "The maximum size (in bytes) that a computer can upload in a single request. This includes headers and POST text." );
// config.add( "timeout", AddressRule.TIMEOUT ); config.set( "max_upload", AddressRule.MAX_UPLOAD );
//
// config.setComment( "max_download", "The maximum size (in bytes) that a computer can download in a single request. Note that responses config.setComment( "max_websocket_message", "The maximum size (in bytes) that a computer can send or receive in one websocket packet." );
// may receive more data than allowed, but this data will not be returned to the client." ); config.set( "max_websocket_message", AddressRule.WEBSOCKET_MESSAGE );
// config.set( "max_download", AddressRule.MAX_DOWNLOAD ); }
//
// config.setComment( "max_upload", "The maximum size (in bytes) that a computer can upload in a single request. This includes headers and return config;
// POST text." ); }
// config.set( "max_upload", AddressRule.MAX_UPLOAD );
// public static boolean checkRule( UnmodifiableConfig builder )
// config.setComment( "max_websocket_message", "The maximum size (in bytes) that a computer can send or receive in one websocket packet." ); {
// config.set( "max_websocket_message", AddressRule.WEBSOCKET_MESSAGE ); String hostObj = get( builder, "host", String.class ).orElse( null );
// } Integer port = get( builder, "port", Number.class ).map( Number::intValue ).orElse( null );
// return hostObj != null && checkEnum( builder, "action", Action.class )
// return config; && check( builder, "port", Number.class )
// } && check( builder, "timeout", Number.class )
// && check( builder, "max_upload", Number.class )
// public static boolean checkRule( UnmodifiableConfig builder ) && check( builder, "max_download", Number.class )
// { && check( builder, "websocket_message", Number.class )
// String hostObj = get( builder, "host", String.class ).orElse( null ); && AddressRule.parse( hostObj, port, PartialOptions.DEFAULT ) != null;
// return hostObj != null && checkEnum( builder, "action", Action.class ) }
// && check( builder, "port", Number.class )
// && check( builder, "timeout", Number.class ) @Nullable
// && check( builder, "max_upload", Number.class ) public static AddressRule parseRule( UnmodifiableConfig builder )
// && check( builder, "max_download", Number.class ) {
// && check( builder, "websocket_message", Number.class ) String hostObj = get( builder, "host", String.class ).orElse( null );
// && AddressRule.parse( hostObj, port, PartialOptions.DEFAULT ) != null; Integer port = get( builder, "port", Number.class ).map( Number::intValue ).orElse( null );
// } if( hostObj == null ) return null;
//
// @Nullable Action action = getEnum( builder, "action", Action.class ).orElse( null );
// public static AddressRule parseRule( UnmodifiableConfig builder ) Integer timeout = get( builder, "timeout", Number.class ).map( Number::intValue ).orElse( null );
// { Long maxUpload = get( builder, "max_upload", Number.class ).map( Number::longValue ).orElse( null );
// String hostObj = get( builder, "host", String.class ).orElse( null ); Long maxDownload = get( builder, "max_download", Number.class ).map( Number::longValue ).orElse( null );
// Integer port = get( builder, "port", Number.class ).map( Number::intValue ).orElse( null ); Integer websocketMessage = get( builder, "websocket_message", Number.class ).map( Number::intValue ).orElse( null );
// if( hostObj == null ) return null;
// PartialOptions options = new PartialOptions(
// Action action = getEnum( builder, "action", Action.class ).orElse( null ); action,
// Integer timeout = get( builder, "timeout", Number.class ).map( Number::intValue ).orElse( null ); maxUpload,
// Long maxUpload = get( builder, "max_upload", Number.class ).map( Number::longValue ).orElse( null ); maxDownload,
// Long maxDownload = get( builder, "max_download", Number.class ).map( Number::longValue ).orElse( null ); timeout,
// Integer websocketMessage = get( builder, "websocket_message", Number.class ).map( Number::intValue ).orElse( null ); websocketMessage
// );
// PartialOptions options = new PartialOptions(
// action, return AddressRule.parse( hostObj, port, options );
// maxUpload, }
// maxDownload,
// timeout, private static <T> boolean check( UnmodifiableConfig config, String field, Class<T> klass )
// websocketMessage {
// ); Object value = config.get( field );
// if( value == null || klass.isInstance( value ) ) return true;
// return AddressRule.parse( hostObj, port, options );
// } ComputerCraft.log.warn( "HTTP rule's {} is not a {}.", field, klass.getSimpleName() );
// return false;
// private static <T> boolean check( UnmodifiableConfig config, String field, Class<T> klass ) }
// {
// Object value = config.get( field ); private static <T extends Enum<T>> boolean checkEnum( UnmodifiableConfig config, String field, Class<T> klass )
// if( value == null || klass.isInstance( value ) ) return true; {
// Object value = config.get( field );
// ComputerCraft.log.warn( "HTTP rule's {} is not a {}.", field, klass.getSimpleName() ); if( value == null ) return true;
// return false;
// } if( !(value instanceof String) )
// {
// private static <T extends Enum<T>> boolean checkEnum( UnmodifiableConfig config, String field, Class<T> klass ) ComputerCraft.log.warn( "HTTP rule's {} is not a string", field );
// { return false;
// Object value = config.get( field ); }
// if( value == null ) return true;
// if( parseEnum( klass, (String) value ) == null )
// if( !(value instanceof String) ) {
// { ComputerCraft.log.warn( "HTTP rule's {} is not a known option", field );
// ComputerCraft.log.warn( "HTTP rule's {} is not a string", field ); return false;
// return false; }
// }
// return true;
// if( parseEnum( klass, (String) value ) == null ) }
// {
// ComputerCraft.log.warn( "HTTP rule's {} is not a known option", field ); private static <T> Optional<T> get( UnmodifiableConfig config, String field, Class<T> klass )
// return false; {
// } Object value = config.get( field );
// return klass.isInstance( value ) ? Optional.of( klass.cast( value ) ) : Optional.empty();
// return true; }
// }
// private static <T extends Enum<T>> Optional<T> getEnum( UnmodifiableConfig config, String field, Class<T> klass )
// private static <T> Optional<T> get( UnmodifiableConfig config, String field, Class<T> klass ) {
// { return get( config, field, String.class ).map( x -> parseEnum( klass, x ) );
// Object value = config.get( field ); }
// return klass.isInstance( value ) ? Optional.of( klass.cast( value ) ) : Optional.empty();
// } @Nullable
// private static <T extends Enum<T>> T parseEnum( Class<T> klass, String x )
// private static <T extends Enum<T>> Optional<T> getEnum( UnmodifiableConfig config, String field, Class<T> klass ) {
// { for( T value : klass.getEnumConstants() )
// return get( config, field, String.class ).map( x -> parseEnum( klass, x ) ); {
// } if( value.name().equalsIgnoreCase( x ) ) return value;
// }
// @Nullable return null;
// private static <T extends Enum<T>> T parseEnum( Class<T> klass, String x ) }
// {
// for( T value : klass.getEnumConstants() )
// {
// if( value.name().equalsIgnoreCase( x ) ) return value;
// }
// return null;
// }
} }